我正在寻找什么……

我正在寻找什么……

我正在寻找什么……

我正在寻找几个命令, \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}
}

相关内容