【问题标题】:Carrying style IDs/names from HTML to .docx?将样式 ID/名称从 HTML 转移到 .docx?
【发布时间】:2023-11-30 01:24:01
【问题描述】:

是否有可能以某种方式告诉pandoc 将样式名称从原始 HTML 转移到 .docx?

我知道为了调整实际样式,我应该使用由pandoc 生成的reference.docx 文件。但是,reference.docx 仅限于它所具有的样式:标题、正文、块文本等。

我想:

  1. 在输入的 HTML 中指定“myStyle”样式(通过“class”属性,通过任何其他 HTML 属性,甚至通过用 Lua 编写的过滤器代码),

    <html>
      <body>
        <p>Hello</p>
        <p class="myStyle">World!</p>
      </body>
    </html>
    
  2. 使用 Word 将自定义“myStyle”添加到 reference.docx

  3. 运行html-&gt;docx 转换并期望pandoc 生成带有“myStyle”的段落元素(而不是BodyText,我相信它由default 设置),所以最终结果看起来像这样(内容为简洁起见,word/document.xml 内部的 output.docx 被删减):

    <w:p>
      <w:pPr>
        <w:pStyle w:val="BodyText" />
      </w:pPr>
      <w:r>
        <w:txml:space="preserve">Hello</w:t>
      </w:r>
    </w:p>
    <w:p>
      <w:pPr>
        <w:pStyle w:val="myStyle" />
      </w:pPr>
      <w:r>
        <w:txml:space="preserve">World!</w:t>
      </w:r>
    </w:p>
    

some evidencestyleId 可以是 passed around,但我不太了解它,也找不到任何相关文档。

filtering in Lua 上的文档声明您可以在操作 pandoc.div 时访问 attrs,但它没有说明 pandoc 是否会以任何有意义的方式解释任何属性。

【问题讨论】:

    标签: lua docx pandoc


    【解决方案1】:

    终于找到了我需要的东西——Custom styles。它是有限的,但比我之前到达的要好,当然也比什么都没有好:)

    我将在此处留下分步指南,以防有人偶然发现类似问题。

    首先,生成一个reference.docx 文件,如下所示:

    pandoc --print-default-data-file reference.docx > styles.docx
    

    然后在 MS Word 中打开文件(我使用的是 macOS 版本)你会看到:

    单击右侧的“新建样式...”按钮,然后创建您喜欢的样式。就我而言,我将文本样式更改为粗体,蓝色:

    由于我正在从 HTML 转换为 DOCX,这是我的input.html

    <html>
      <body>
        <div>Page 1</div>
        <div custom-style="eugene-is-testing">Page 2</div>
        <div>Page 3</div>
      </body>
    </html>
    

    运行:

    pandoc --standalone --reference-doc styles.docx --output output.docx input.html
    

    最后,享受结果:

    【讨论】: