我在找什麼...
我正在尋找幾個命令, \disableAllButCounters
這\enableAll
將執行以下操作:
\disableAllButCounters
和 之間的所有內容\enableAll
都會被忽略,除了這樣的命令\setcounter{counterA}{k}
,因此之間唯一的共同點\disableAllButCounters \manyCommands \enableAll
和
%\disableAllButCounters \manyCommands %\enableAll
兩者之後,計數器的值是相同的。特別是,這些命令之間的任何內容都不會產生任何輸出(也不會
aux
)。我正在尋找 Latex 的解決方案和 luatex 的解決方案。
如果存在,這些命令可以提供解決方案這個問題。
但為什麼!
基本上,我想從一個乳膠檔案中產生多個輸出:一個輸出為從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}
}