首页 > 解决方案 > 将样式 ID/名称从 HTML 转移到 .docx?

问题描述

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

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

我想:

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

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

  3. 运行html->docx转换,期望pandoc生成一个带有“myStyle”的段落元素(而不是BodyText,我相信它默认设置),所以最终结果看起来像这样(为简洁起见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>
    

一些证据 styleId可以传递,但我并不真正理解它,也无法找到任何关于它的文档。

关于Lua 中过滤的文档指出您可以attrs在操作 a 时访问pandoc.div,但它没有说明 pandoc 是否会以任何有意义的方式解释任何属性。

标签: luadocxpandoc

解决方案


最后,找到了我需要的东西——自定义样式。它是有限的,但比我之前到达的要好,当然也比什么都没有要好得多:)

我会在这里留下一个分步指南,以防有人偶然发现类似的问题。

首先,生成一个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

最后,享受结果:

在此处输入图像描述


推荐阅读