Markdown 标记为docx,包括复杂模板
我已经使用Pandoc将我的构建自动化,将降价文件转换为DOCX文件。我甚至使用了一个参考文档作为最终文档的样式。我使用的命令是:Markdown 标记为docx,包括复杂模板,markdown,docx,pandoc,Markdown,Docx,Pandoc,我已经使用Pandoc将我的构建自动化,将降价文件转换为DOCX文件。我甚至使用了一个参考文档作为最终文档的样式。我使用的命令是: pandoc -f markdown -t docx --data-dir=docs/rendering/ mydoc.md -o mydoc.docx Pandoc从docs/rendering中提取reference.docx,Pandoc以与参考文档相同的样式呈现mydoc.docx 然而,reference.docx包含的不仅仅是样式。它包含公司标志、序言
pandoc -f markdown -t docx --data-dir=docs/rendering/ mydoc.md -o mydoc.docx
Pandoc从docs/rendering
中提取reference.docx
,Pandoc以与参考文档相同的样式呈现mydoc.docx
然而,reference.docx
包含的不仅仅是样式。它包含公司标志、序言等
如何将降价内容与
reference.docx
的样式和内容自动合并。我的解决方案需要在Linux上运行。理想情况下,PanDoc很快就会扩展此功能
我不知道有什么工具可以直接完成这项工作,但您可能会在代码中将reference.docx
和您的PanDoc生成的mydoc.docx
合并起来
docx格式是(大部分)XML文件的ZIP存档。最重要的是word/document.xml
。如果您使用XML工具从一个文件中获取(大部分)document.XML,并将其插入到另一个文件中,您将获得更接近您需要的内容
我可以在Ruby中拼凑一个例子,如果有插图的话。理想情况下,你可以使用自定义的docx模板,但pandoc还不支持。
reference.docx
文件只允许在新创建的docx文件中嵌入自定义样式
幸运的是,您可以使用odt而不是docx来近似此值。您可以相当轻松地修改,以包含自定义徽标、前言和其他内容。将自定义模板与reference.odt
文件结合使用,以获取所有样式和自定义内容
一旦文件采用odt格式,就可以使用任意数量的命令行工具将odt转换为docx。例如,在Linux上,您可以运行
libreoffice --invisible --convert-to docx test.odt
或在OS X上:
/Applications/LibreOffice.app/Contents/MacOS/soffice.bin --invisible --convert-to docx test.odt
更新
使用用户Christian Long建议的管道版本:
pandoc -t latex mydoc.md | pandoc -f latex --data-dir=docs/rendering/ -o mydoc.docx
我知道这已经晚了,但我假设人们在最初的问题提出三年后仍然在寻找解决方案——我知道我是 我的解决方案是使用LaTeX作为markdown和docx之间的中介(实际上,我是从组织模式转换过来的,但有相同的区别)。因此,在您的情况下,我认为一个线性解决方案是:
pandoc -f markdown -t latex -o mydoc.tex mydoc.md && \
pandoc -f latex -t docx --data-dir=docs/rendering/ -o mydoc.docx mydoc.tex
这可能会让你更接近你的目标。当然,潘多克有大约一百个可以处理的论点,也许有办法让它变得更漂亮。自从你第一次发布你的问题以来,它也得到了不少更新。UPDATE:此功能不完整
我在一些复杂的模板上使用了它,发现它很好地映射了字体、公司徽标等。但是在.docx->.docx中,我必须手动将标题样式应用于章节/章节分隔符。字体是正确的,但剖面不正确。我下一步试试.md->.docx
此功能现在在Pandoc中可用,如下所述: 从上面的链接:
pandoc input --reference-docx=my-reference.docx -o out.docx
其中my reference.docx
(注意:不是.dotx
)可以是:
- 当前文件夹或
- 由--data dir或定义的文件夹
- 数据目录的系统默认文件夹为
- 类UNIX系统上的$HOME/.pandoc
- C:\Documents And Settings\USERNAME\Application Data\pandoc在Windows XP上不应再使用
- Windows Vista或更高版本上的C:\Users\USERNAME\AppData\Roaming\pandoc
.tex
文件,将LaTeX格式的数据从一个pandoc传输到另一个pandocpandoc-t latex mydoc.md | pandoc-f latex--data dir=docs/rendering/-o mydoc.docx
这行代码似乎不完整,无法回答上述问题。