то, что я ищу...
Мне нужна пара команд, \disableAllButCounters
которые \enableAll
выполняли бы следующее:
Все, что находится между
\disableAllButCounters
и\enableAll
будет проигнорировано, за исключением команд, таких как\setcounter{counterA}{k}
, так что единственное общее между\disableAllButCounters \manyCommands \enableAll
и
%\disableAllButCounters \manyCommands %\enableAll
будет, если после обоих значений счетчиков будет одно и то же. В частности, все, что находится между этими командами, не даст никакого вывода (ни
aux
).Я ищу решение для латекса и решение для люатекса.
Если он существует, эти команды могли бы обеспечить решениеэтот вопрос.
но почему!?
По сути, я хотел бы создать несколько выходов из одного файла 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}
}