在乳胶模板中动态包含 pandoc 转换的 texfiles

在乳胶模板中动态包含 pandoc 转换的 texfiles

我目前正在运行以下命令来填充我的乳胶模板。

pandoc -s --top-level-division=chapter --template=template.tex metadata.md content/*.md -o frommarkdown.tex

经过 latex 处理的 *.md 文件的内容通过变量填充模板$body$。然而,这是逐字发生的,$body$变量被替换为从 md 文件生成的 tex 代码。这生成了一个巨大的 latex 文件,其中我的所有论文章节都连接在一个大文件中。

我的理想情况是,我可以将\include全部动态生成的 tex 文件保存在我的文档中,这样我就可以保留一个干净的乳胶文档,这在调试或修改更大的项目(例如论文)时非常有用。

我理想情况下希望有这样的东西:

$for(include-chapters)$ \include($include-chapters$) $endfor$

我的想法是,通过两步解决方案实现此目的,首先为每个 *.md 文件生成独立的 tex 文件(不使用模板)。然后,我想将这些生成的 tex 文件动态包含到我的主要 tex“模板”中。

这可以通过 pandoc 实现吗?或者我需要为此编写自定义 shell 脚本?

答案1

我不明白您到底想做什么,但您可以修改模板并使其包含 tex 文件。

  1. 获取乳胶模板并保存至template.texpandoc -D latex > template.tex

  2. 打开模板文件并添加以下代码片段$body$

    $for(include-chapters)$
      \include{$include-chapters$}
    $endfor$
    
  3. 现在您可以将想要包含的文件添加到metadata.md

    ---
    include-chapters:
    - content/chapter1
    - content/chapter2
    ---
    
  4. 跑步pandoc

    pandoc -s -S --top-level-division=chapter \
           --template=template.tex \
           metadata.md -o frommarkdown.tex
    

这些步骤将导致:

 \begin{document}

   \include{content/chapter1}
   \include{content/chapter2}

 \end{document}

但我还是不建议这么做。有很多非常强大的工具,可以做得更多更好,例如make

相关内容