携带样式 IDs/names 从 HTML 到 .docx?
Carrying style IDs/names from HTML to .docx?
是否有可能以某种方式告诉 pandoc
将样式名称从原始 HTML 转移到 .docx?
我知道为了调整实际样式,我应该使用 pandoc
生成的 reference.docx
文件。但是,reference.docx
仅限于它必须具有的样式:标题、body 文本、块文本等。
我愿意:
在输入 HTML 中指定“myStyle”样式(通过“class”属性,通过任何其他 HTML 属性,甚至通过过滤器代码写在 Lua),
<html>
<body>
<p>Hello</p>
<p class="myStyle">World!</p>
</body>
</html>
使用 Word 添加自定义“myStyle”到 reference.docx
,
运行 一个 html->docx
转换期望 pandoc
生成一个带有“myStyle”的段落元素(而不是 BodyText
,我相信它由 default 设置),因此最终结果如下所示(为简洁起见,结果 output.docx
中 word/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
最后,享受结果:
是否有可能以某种方式告诉 pandoc
将样式名称从原始 HTML 转移到 .docx?
我知道为了调整实际样式,我应该使用 pandoc
生成的 reference.docx
文件。但是,reference.docx
仅限于它必须具有的样式:标题、body 文本、块文本等。
我愿意:
在输入 HTML 中指定“myStyle”样式(通过“class”属性,通过任何其他 HTML 属性,甚至通过过滤器代码写在 Lua),
<html> <body> <p>Hello</p> <p class="myStyle">World!</p> </body> </html>
使用 Word 添加自定义“myStyle”到
reference.docx
,运行 一个
html->docx
转换期望pandoc
生成一个带有“myStyle”的段落元素(而不是BodyText
,我相信它由 default 设置),因此最终结果如下所示(为简洁起见,结果output.docx
中word/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
最后,享受结果: