在我的论文期间,我在 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
),并将其包含在主文档中,而无需手动修改。这里有几个选项。查看软件包standalone
、docmute
和import
以及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
。