首先,我意识到 TeX.SE 上有很多关于这个主题的问题。我读了很多,但还是无法弄清楚如何设置我当前的配置。我对大多数使用的术语非常陌生,当我尝试将其从其他问题的设置翻译到我的设置时,这会导致问题。特别是,一个看起来很有希望的问题说它不适用于\input
我使用的。
我的设置(我觉得)非常简单。我有以下项目。
main.tex
preamble_main.tex
preamble_aux.tex
我main.tex
使用以下命令进行编译:
pdflatex.exe -synctex=1 -interaction=nonstopmode "main".tex
。
main.tex
包含\input{premable_main.tex}
和preamble_main.tex
包含\input{preamble_aux.tex}
。我使用以下命令预编译被动前言:
pdflatex -ini -jobname="main" "&pdflatex" mylatexformat.ltx main.tex
。
这将创建一个名为 的文件main.fmt
。这意味着main.tex
启动如下:
%&main
\documentclass{CLASS}
\input{preamble_main.tex}
\endofdump
...
如果我改变preamble_main.tex
(或preamble_aux.tex
将其改为\input
)preamble_main.tex
,那么这不会对的编译产生影响,main.tex
除非我重新编译前言。
我想要一个make
执行以下操作的 -type 文件。
main.fmt
检查(.fmt
,非.tex
或)的日期.pdf
,preamble_main.tex
以及preamble_aux.tex
。- 如果 s 或
preamble
s 的更改比 的更改更近.fmt
,则运行pdflatex -ini -jobname="main" "&pdflatex" mylatexformat.ltx main.tex
。 - (无论先前的“如果”是否成立,)运行
pdflatex.exe -synctex=1 -interaction=nonstopmode "main".tex
。
看起来make
文件或latexmk
适合这个类型的问题。然而,他们处理的事情似乎略有不同。
如能提供建议或解决方案,我们将不胜感激。
我并不担心设置参考书目。我自己可以轻松处理。也许将来我会尝试改进它来处理这个问题,但现在我只想要基础知识。先学会走路,再学会跑步!
答案1
买者自负
鉴于您熟悉latexmk
和make
,我不确定建议另一条路线是否真的是明智的建议。事实上,在这种情况下建议另一种工具几乎就像把你扔到一辆行驶的公共汽车前面(由一只古怪的鸭子驾驶)。:)
为了辩护,我把责任归咎于其中一位开发人员(谁将保持匿名)鼓励我写下这个答案。:)
这听起来像是名为的工具可能有所帮助的特定场景之一arara
。我是参与此工具的开发人员之一,并且绝对偏爱它。请注意arara
和latexmk
并不完全具有可比性,因为它们各自在编译/自动化范围的不同方面发挥作用。
让我们用一些内部条件来解决这个问题main.tex
:
% This directive tackles your format rebuild
% arara: pdflatex: { options: ['-ini', '-jobname=main',
% arara: --> '&pdflatex', 'mylatexformat.ltx' ] } if
% arara: --> a = changed(toFile('preamble_main.tex'));
% arara: --> b = changed(toFile('preamble_aux.tex'));
% arara: --> a || b
% Now, a proper compilation
% arara: pdflatex: { synctex: yes,
% arara: --> interaction: nonstopmode }
...
好了!:)