携带样式 IDs/names 从 HTML 到 .docx?

Carrying style IDs/names from HTML to .docx?

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

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

我愿意:

  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->docx 转换期望 pandoc 生成一个带有“myStyle”的段落元素(而不是 BodyText,我相信它由 default 设置),因此最终结果如下所示(为简洁起见,结果 output.docxword/document.xml 的内容被删减):

    <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 evidence styleId can be passed around,但我不是很了解它,也找不到任何相关文档。

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

终于找到了我需要的东西 – 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

最后,享受结果: