我正在尝试将 subpreambles 选项与独立包一起使用。我的主要文件是:
\documentclass[subpreambles]{standalone}
\usepackage{standalone}
\newtoks{\MyToken}
\MyToken={MainFile}
\begin{document}
Before Input: MyToken = \the\MyToken \par
\input{MySubfile.tex} \par
After Input: MyToken = \the\MyToken
\end{document}
MySubfile.tex 内容为:
\documentclass{standalone}
\usepackage{standalone}
\ifdefined\MyToken% prevent redfintion.
\else%
\newtoks{\MyToken}%
\fi%
\MyToken={Subfile}
\begin{document}
In sub file: MyToken = \the\MyToken
\end{document}
输出结果如下:
输入之前:MyToken = Subfile
在子文件中:MyToken = Subfile
输入之后:MyToken = Subfile
但我想要的是这个:
输入前:MyToken = MainFile
在子文件中:MyToken = Subfile
输入后:MyToken = MainFile
我尝试在输入周围使用 \begingroup \endgroup,但没有成功。我不想在独立文件和主文件中使用不同的标记,因为当前的主文件最终也会成为子文件。我不会被 \newtoks 所困扰,任何可以用来实现这一点的方法都可以。
我也可以接受最后一行打印
输入:MyToken = Subfile
这可能吗?
答案1
选项subpreamble
standalone
包裹(你出于某种原因在类上设置了它,这同样有效,因为类忽略了未知选项并将所有选项传递给所有包)将子前言(即子文件的前言)复制到主文件的前言中。前言被写入辅助文件并在将来的运行中再次读入在序言中,当然不是在读取子文件时。
因此,\MyToken={Subfile}
在主序言中执行,而不是在中执行\input
。您必须将其移到\begin{document}
子文件中的后面才能使其按您希望的方式工作。