使用 \newif 自动在主/从系统中编译从属代码

使用 \newif 自动在主/从系统中编译从属代码

对于大文档,我选择使用主/从结构。

我不想像以前那样对comment包中的从属代码的序言进行注释/取消注释\end{document}(以避免从属代码与其主代码合并时发生冲突),而是想为“特殊”的 MWE.tex 制作一组指令,该指令可以自动合并到其他 MWE.tex 或主代码中,但没有义务在每次我想编译从属代码时都使用它,请按照以下示例操作:\input{slave.tex}\input{}%

\makeatletter
\@ifundefined{ifmaster}
    {\expandafter\newif\csname ifmaster\endcsname
    \masterfalse}
    {\mastertrue}
\makeatother

\ifmaster
\begin{comment}
\else
\fi

\documentclass{memoir}

\begin{document}

\ifmaster
\end{comment}
\else
\fi

INPUT TEST 

\ifmaster
\else
\end{document}
\fi

此时,当我将条件放在主代码的序言中时,它工作得很好\mastertrue\newif\ifmaster一切都是“自动的”,我只需使用合并的从属代码或从属代码编译主代码即可生成文档,而不必再玩注释%从属代码的序言。
但是,一旦我想使用 制作两级从属\input{slave_in_slave},如以下示例所示,我就会遇到此错误:

! Emergency stop.
<*> test_inclusion.tex
*** (job aborted, no legal \end found)

我知道是\end{document}谁在扰乱这个过程,这就是我请你帮助我的原因(或者也许有一种更干净的方法来自动化从属代码的编译)。

我精确地确保输入代码test_inclusion_inclusion具有与第一个完全相同的 MWE.tex,并且我希望所有用途只有一个 MWE.tex:

\makeatletter 
\@ifundefined{ifmaster}
    {\expandafter\newif\csname ifmaster\endcsname
    \masterfalse}
    {\mastertrue}
\makeatother

\ifmaster
\begin{comment}
\else
\fi

\documentclass{memoir}

\begin{document} %

\ifmaster
\end{comment}
\else
\fi


INPUT TEST 
 
\input{test_inclusion_inclusion}
    
\ifmaster
\else
\end{document}
\fi

感谢您的帮助 !

相关内容