Pandoc / Latex / Markdown

Pandoc / Latex / Markdown

对于一个项目,我想使用.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

我不确定我是否应该对我的问题发表答案,但真正的答案似乎是它根本不存在。请参阅以下内容:

GitHub
Pandoc 公开问题

Pandoc Google 群组
关于该问题的技术讨论

答案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 代码可以转换所有\newpageLaTeX 片段转换为相应的 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 来了解使用说明。

相关内容