对于一个项目,我想使用.md
文件并将它们转换为.docx
文件。我还想\latex\
在文件中包含一些命令.md
。我只是不想弄乱我目前使用的系统,因为它运行良好。这是矛盾的,但希望可以做到。
这是我的 pandoc 设置:
pandoc --reference-doc=pandoc/reference.docx frontmatter1.md fm2.md fm3.md fm4.md f5.md ch1.md ch2.md ch3.md bib.md endmatter.md em.md -o article.docx
我知道 latex 更适合我上面尝试做的事情,但使用它.docx
是一个艰苦的过程。reference.docx 解决方案对我来说很有效。我只需突出显示部分并选择样式即可。
最后,我的问题。我可以在文件末尾插入\latex\
诸如这样的命令吗?到目前为止,我还没有成功。\newpage
.md
.md
下面是我想要使用 latex / pandoc / word 处理的文件示例:
# heading
Some text here.
## subheading
More text here.
\newpage
答案1
答案2
您可以在 markdown 中完美地包含 LaTeX 命令以导出pandoc
到 LaTeX 文档,然后可以将 LaTeX 文档转换为 docx 并一些这些命令将在 .docx 文件中产生所需的效果,如\emph{text}
,而其他命令将被忽略,如\newpage
。
也就是说,您无法在 .md → .docx 转换中导出 LaTeX 命令,因为所有 latex 代码都将被忽略,但您可以尽可能在 .md → . tex. → .docx 过程中执行此操作,例如:
$ pandoc -s test.md -o test.tex
$ pandoc borra.tex -o borra.docx
答案3
正如 @hearsay 所说,没有内置方法可以做到这一点。但是,使用几行 Lua 代码可以转换所有\newpage
LaTeX 片段转换为相应的 OpenXML 结构:
-- write to file: docx-pagebreaks.lua
function RawBlock (blk)
if FORMAT == 'docx' and blk.format == 'latex' and blk.text == '\\newpage' then
return pandoc.RawBlock(
'openxml',
'<w:p><w:r><w:br w:type="page"/></w:r></w:p>'
)
end
end
运行
pandoc --reference-doc=pandoc/reference.docx \
--lua-filter=docx-pagebreaks.lua
frontmatter1.md fm*.md ch*.md bib.md endmatter.md em.md \
-o article.docx
还有一个现成的 Lua 过滤器可用于此目的:https://github.com/pandoc-ext/pagebreak
请参阅该 repo 中的 README 来了解使用说明。