我正在寻找什么……
我正在寻找几个命令, \disableAllButCounters
它们\enableAll
可以执行以下操作:
\disableAllButCounters
和 之间的所有内容\enableAll
都将被忽略,但以下命令除外\setcounter{counterA}{k}
,因此之间唯一的共同点是\disableAllButCounters \manyCommands \enableAll
和
%\disableAllButCounters \manyCommands %\enableAll
将是,在两次执行之后,计数器的值相同。具体而言,这些命令之间的任何内容都不会产生任何输出(也不会
aux
)。我正在寻找乳胶解决方案和 luatex 解决方案。
如果存在,这些命令可以提供解决方案这个问题。
但为什么!?
基本上,我想从一个 latex 文件生成多个输出:一个输出内容从 A 到 B,一个输出内容从 B 到 C,等等。我计划通过将文件分割成多个文件来实现。我的问题提出了处理参考文献的问题。
如果您偶然想到了更好的解决方案,请不要犹豫!!
答案1
你可以尝试
\newcommand{\disableAllButCounters}{\setbox0=\vbox\bgroup}
\newcommand{\enableAllButCounters}{\egroup}
由于\setcounter
类似的命令全局起作用,所以应该这样做;\write
只有当框最终在主垂直列表中找到自己的路径时才会执行命令,而构造的框则不会。
\documentclass{article}
\newcommand{\disableAllButCounters}{\setbox0=\vbox\bgroup}
\newcommand{\enableAllButCounters}{\egroup}
\begin{document}
\section{A}
Text
\disableAllButCounters
\section{B}
Text
\enableAllButCounters
\section{C}
Text
\end{document}
这是.aux
文件:
\relax
\@writefile{toc}{\contentsline {section}{\numberline {1}A}{1}}
\@writefile{toc}{\contentsline {section}{\numberline {3}C}{1}}
显示没有与第 2 节相关的条目。
请注意浮子可能会毁坏东西;如果您需要它们,则应采取一些对策。
答案2
以下解决方案解决了由此引起的问题figure
。
\usepackage{letltxmacro}
\newcommand{\disableAllButCounters}{%
% Dealing with the figure environment
\LetLtxMacro{\savedfigure}{\figure}
\renewcommand{\figure}{}
\LetLtxMacro{\savedendfigure}{\endfigure}
\renewcommand{\endfigure}{}
% Disabling everything but counter
\setbox0=\vbox\bgroup
}
\newcommand{\enableAllButCounters}{%
% Reenabling everything but counter
\egroup
% Dealing with the figure environment
\renewenvironment{figure}{\savedfigure}{\savedendfigure}
}