Pandoc:设置导出的 Word docx 的语言

Posted

技术标签:

【中文标题】Pandoc:设置导出的 Word docx 的语言【英文标题】:Pandoc: setting language of exported Word docx 【发布时间】:2016-12-07 21:31:53 【问题描述】:

我使用 Pandoc 从 Markdown 导出 Word docx。

默认情况下,docx 文件中的所有内容似乎都标记为英文。所以我试图覆盖它,例如通过命令行选项 pandoc -s -S images.md -o images.docx -V lang=de 或在标题 YAML 中:

---
subtitle: <%= @report.name %>
toc-title: <%= t('.toc_title') %>
lang: de
---

但似乎没有任何作用,导出的 docx 文件中的所有内容都被语言拼写功能标记为红色,告诉我找不到英文单词。

如何覆盖语言?

更新

我尝试在 docx 文件中指定语言,只需选择所有文本(Cmd+A,我在 OSX 上)并单击左下角的语言按钮。

另外,我尝试使用Tools -&gt; Language

但这些都没有效果。

更新

有趣的是,当导出为 html 时,&lt;html&gt; 属性中的语言设置正确。

【问题讨论】:

我认为您需要使用“--reference-docx”选项,如here 所述。创建一个参考 docx 文件,然后覆盖那里的语言。 我已经试过了。但我不能 100% 确定在 docx 文件中指定语言的位置,我只是选择了所有文本并单击左下角的语言按钮。但也许有完整文档的通用语言选项? 我在 OSX 上的 Word 365 中通过 Tools -&gt; Language 设置了语言。没有解决问题。 reference-docx 只能设置样式和一些属性(边距、页面大小、页眉和页脚),但语言不是其中之一 pandoc.org/MANUAL.html#options-affecting-specific-writers>;一种解决方法是编写一个 doc 宏来执行此操作,然后对文件进行后处理。 同意scoa,目前看来只能做一些后期处理了。也就是说,这是一个已经在github 上讨论过的问题。应该不难修复(毕竟 docx 只是一个包含 xml 文件的 zip),当然说起来容易做起来难。 【参考方案1】:

目前无法设置 pandoc 输出的 doc、docx 或 odt 文档的语言。 pandoc GitHub issue 讨论了这个问题(@Serge Correia 在 cmets 中指出)。

确实,其他格式的本地化通过模板进行,但模板的 doc、docx 和 odt 等效项、参考文件仅设置了几个选定的样式和属性。比如reference-docx:(来自pandoc README)

参考 docx 的内容被忽略,但其样式表和文档属性(包括边距、页面大小、页眉和页脚)在新 docx 中使用。

【讨论】:

感谢您的解释。也许有一种方法可以“破解”Pandoc 可执行文件:我的意思是,Pandoc 在某个地方获取了一个默认的 docx 文件,也许我可以将这个文件破解为特定语言? github issue 讨论了如何做到这一点;也许您可以尝试在自己的 fork 中实现它。目前,我的解决方法是编写一个 openoffice/word 宏来处理本地化(对于法语:更改语言,更改引号,在 !?:; 之前添加牢不可破的空格)。 我也想过这个解决方案。但我没有做到这一点,因为我不是 Visual Basic 宏程序员(另外,我在 Mac 上...... Office 365)。你介意把你的宏版本发给我吗? :) @JoshuaMuheim 这是一个 libreoffice —— 也应该与 openoffice 一起使用——而且它写得很糟糕,但是你去:gist.github.com/scoavoux/2ff93f30ec4dedae1a9d087ddec40d5d 你需要安装 libreoffice python 宏模块 谢谢,我去看看。【参考方案2】:

我刚刚再次检查,使用 Pandoc v 2.9.2.1 似乎可以正确设置语言:

万岁!!谢谢,Pandoc 社区!

虽然知道它是什么时候添加的会很有趣(在https://pandoc.org/changelog.txt 中找不到提及)。

【讨论】:

以上是关于Pandoc:设置导出的 Word docx 的语言的主要内容,如果未能解决你的问题,请参考以下文章

docx4j导出word文档,有表格,如何固定word表格列宽,

docxjs导出word宽度设置无效

导出word文档 通过DocX组件

如何生成,导出到word docx文件?

在 pandoc 中将 .odt 转换为 .docx

markdown转docx用pandoc