我正在尝试弄清楚如何递归输入 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"
}
],