如果编译了子文档,则编译主文档

如果编译了子文档,则编译主文档

我有一个主要的乳胶文档,以及其中包含的许多其他文件\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 文件的文件夹中的空文件,一次在子文件夹中开始编译...

相关内容