递归添加 markdown 文件

递归添加 markdown 文件

我正在尝试弄清楚如何递归输入 markdown 文件。我正在使用 markdown 包,它确实允许使用 输入文件/markdownInput。这暂时可行,但在我写作的过程中,我经常切换章节的顺序(创造性思维 :P)。如果发生这种情况,我必须重命名文件并修复 thesis.tex 中的 markdownInput。

现在我正在使用 pdflatex 编译器,因为它是我大学文档类的“默认”编译器。据我所知,如果我使用 LuaLatex 编译器,我可以用 Lua 编写自己的函数来执行此操作。我确实尝试过切换到 lualatex 编译器,但它会抛出很多错误消息。因此,我尽量不去更改它。

有没有办法用 pdflatex 来做到这一点?

我的论文结构如下

/chapter01/00_index.md
/chapter01/01_research_objective.md
/chapter01/02_research method.md
/chapter02/00_index.md
/chapter02/01_theory_of_world_domination.md
thesis.tex

如果有一个递归函数可以递归地将所有文件添加到文档中,那就太好了。这样我只需要维护文件夹和文件的顺序。

答案1

感谢 David Carlisle :)

我创建了toc.sh在 latexmk 之前执行的脚本。由于我使用的是 VSCode 的 Latex-Workshop 扩展,所以我必须在脚本中添加时间检查,否则 latexmk 会处于循环中。

论文.tex:

\begin{document}
\input{toc.tex}
\end{document}
...

toc.sh:

# Create only toc.tex if it's older than 3 seconds
if test `find "toc.tex" -mmin +0.05`
then
    find . -name \*.md | sed -e "s/.*/\\\\markdownInput{\\0}/" | sort > toc.tex
fi

设置.json:

"latex-workshop.latex.recipes": [
    {
      "name": "Generate TOC from files & latexmk",
      "tools": [
        "toc",
        "latexmk"
      ]
    }
  ],
"latex-workshop.latex.tools": [
    {
      "args": [
        "--shell-escape",
        "-interaction=nonstopmode",
        "-file-line-error",
        "-pdf",
        "%DOC%"
      ],
      "command": "latexmk",
      "name": "latexmk"
    },
    {
      "command": "./toc.sh",
      "name": "toc"
    }
  ],

相关内容