我目前正在尝试使用 latexmk 编译我的论文。我在 Windows 10 计算机上运行 WSL(Ubuntu 18.04)。我的文件结构如下:
+-- build/
+-- src/
| +-- 01_intro.tex
| +-- 02_dynamics.tex
| +--- ....... (several of these *.tex files)
| +-- references.bib
| +-- aiaa.bst
| +-- thesis.cls
+-- main.tex
我正在奔跑latexmk -output-directory="build" -pdf main.tex
它开始编译,然后在编译过程中似乎抛出一个错误,内容如下:
No file main.toc.
[4]
No file main.lof.
[5]
No file main.lot.
[6] [7]
! I can't write on file `src/01_intro.aux'.
\@include ...\immediate \openout \@partaux #1.aux
\immediate \write \@partau...
l.74 \include{\chapterPath/01_intro}
(Press Enter to retry, or Control-D to exit; default file extension is `.tex')
Please type another output file name:
奇怪的是,如果我直接输入Ctrl-D
,它似乎就完成了编译。目录中的所有文件build/
(或者build/src/
它们对应的 .tex 文件在 中src/
)。最终的 PDF 看起来是正确的,但也很难确定编译是否完美运行,因为这只是目前的一个模板(我目前正在设置我的论文)。如果我修改任何章节并重新编译,只要我不删除 中的任何文件,就不会出现.aux
问题build/
。
有谁知道我做错了什么,以及为什么我会收到这个提示?
答案1
如果您检查 latexmk 的输出,在 pdflatex 第一次中止运行之后,您应该会看到来自 latexmk 的一条消息:
Latexmk: Directory 'build/src' created
Error in *LaTeX, but needed subdirectories in output directory
were missing and successfully created, so try again.
问题是,build/src/
在第一次运行 pdflatex 之前,该目录并不存在,而 pdflatex 本身不会创建该目录。因此它会给出错误。如果您build/src
在启动 latexmk 之前创建了该目录,则不会出现错误。
但是 latexmk 被编程为检测这种情况(从 pdflatex 的日志文件中)并纠正它。之后一切都正常,正如您所发现的。