我有一个主要的乳胶文档,以及其中包含的许多其他文件\input{...}
,例如按章节。
通常,我只处理一个子文件,我现在的想法是,如果我开始编译子文件,我想编译主文档。
简短示例:主文档
\documentclass{minimal}
\begin{document}
\input{subfile}
\end{document}
子文件
\usepackage{automatic_mainfile_compilation}
some text...
因此,我想象以下内容(伪代码)位于automatic_mainfile_compilation.sty中
if code == NOT inserted vie \input
\write18{pdflatex main_document}
stop compilation with return value of line before
end
rest of subdocument
停止依赖于被调用的编译过程应该不是问题,但是我在编译过程中能否以某种方式识别我是否在“输入”文件中并跳过某些wirte18{pdflatex...}
命令?
答案1
以下代码现在对我来说很好:
\def\myjobb{main} % name of main tex file
\edef\myjob{\meaning\myjobb}
\edef\tmpjob{\jobname}
\edef\tmpjob{\meaning\tmpjob}
\ifx\myjob\tmpjob
\else
\immediate\write18{cd .. && pdflatex --shell-escape \myjobb} % go up one folder, as file is in subfolder for subfiles...
\immediate\write18{ pidof mupdf-x11 | xargs kill -s SIGHUP} % reload pdf
\stop
\fi
或者更简单:当子文件位于子文件夹中时,可以通过\input{somefile}
两次存在轻松区分不同的情况,一次作为主 tex 文件的文件夹中的空文件,一次在子文件夹中开始编译...