使用 XeLatex 将多个 md 文件合并到一个 tex 文件中

使用 XeLatex 将多个 md 文件合并到一个 tex 文件中

在我的论文期间,我在 git 存储库中有多个 md(markdown)文件。所有这些 md 文件都是我想要生成的最终书籍 pdf 的章节。我想使用 XeLatex,所以我正在考虑将所有 md 文件转换为 tex 文件(使用 pandoc),然后将它们包含在将导出 pdf 的最终 book.tex 文件中。(另一种方法是将 10 个 md 文件的内容硬复制粘贴到 Latex 书籍模板中,但我认为还有一种更通用的方法)。我编写了一个 Makefile 以便将 md 文件转换为 tex,如下所示:

pandoc file1.md -f markdown -t latex -s -o file1.tex
pandoc file2.md -f markdown -t latex -s -o file2.tex
…. 
pandoc file10.md -f markdown -t latex -s -o file10.tex

我运行 Makefile,结果得到了 10 个 tex 文件。之后,我尝试将它们包含在最终的 book.tex 文件中

\documentclass{scrbook}
\begin{document}
\include{file1}
\include{file2}
\include{file10}
\end{document}

每个 tex 文件(由 pandoc 生成)都有自己的文档类,因此我在编译过程中收到错误(Latex 错误:file1 只能用于序言)。我尝试将第一个文件的文本硬复制粘贴到另一个没有文档类的 tex 文件中,并且工作正常,没有错误。有没有办法在不复制粘贴每个子文件内容的情况下获取最终的 tex 文件?我相信我需要在我的 Makefile 中添加一些内容,以便只给出一个 tex 文件作为结果。

感谢您的关注。期待您的回复。

答案1

删除-s(standalone) 选项。默认情况下,LaTeX 输出不是完整的文档,而只是文档环境的内容,可供包含。

或者,您也可以完成文档(即使用-s),并将其包含在主文档中,而无需手动修改。这里有几个选项。查看软件包standalonedocmuteimport以及combine此站点中有关这些软件包的问题。

答案2

Pandoc 允许一次传递多个输入文件;它将连接这些文件,将它们视为一个大文件:

pandoc -s -f markdown -t latex file1.md file2.md file3.md -o combined.tex

--pdf-engine=xelatex请注意,您也可以通过传递(或者,对于 pandoc v1.x, )直接通过 pandoc 生成输出 PDF。Pandoc--latex-engine=xelatex将为您调用 XeLaTeX。

pandoc -s -f markdown --pdf-engine=xelatex file1.md file2.md \
       -M documentclass=scrbook -o result.pdf

有多个选项可以修改 pandoc 生成的 LaTeX 输出,例如设置classoptions元值,或通过参数传递 LaTeX 文件以逐字包含在标题中--include-in-header

相关内容