lo que estoy buscando...
Estoy buscando un par de comandos \disableAllButCounters
que \enableAll
harían lo siguiente:
Todo lo que esté entre
\disableAllButCounters
y\enableAll
sería ignorado, excepto los comandos tales que\setcounter{counterA}{k}
, de modo que lo único en común entre\disableAllButCounters \manyCommands \enableAll
y
%\disableAllButCounters \manyCommands %\enableAll
Sería que después de ambos, los valores de los contadores son los mismos. En particular, cualquier cosa entre estos comandos no producirá ningún resultado (ni
aux
).Estoy buscando una solución para látex y una solución para luatex.
Si existe, estos comandos podrían proporcionar una solución aesta pregunta.
¿¡pero por qué!?
Básicamente, me gustaría producir varios resultados a partir de un único archivo de látex: un resultado para el contenido de A a B, un resultado para el contenido de B a C, etc. Planeo hacerlo cortando el archivo en varios archivos. Mi pregunta plantea el problema de abordar las referencias.
Si por casualidad se te ocurre una solución mejor, ¡no lo dudes!
Respuesta1
Podrías probar con
\newcommand{\disableAllButCounters}{\setbox0=\vbox\bgroup}
\newcommand{\enableAllButCounters}{\egroup}
Dado que \setcounter
comandos similares actúan globalmente, esto debería ser suficiente; \write
Los comandos se ejecutan sólo cuando el cuadro finalmente encuentra su camino en la lista vertical principal, lo que el cuadro construido no hará.
\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}
Este es el .aux
archivo:
\relax
\@writefile{toc}{\contentsline {section}{\numberline {1}A}{1}}
\@writefile{toc}{\contentsline {section}{\numberline {3}C}{1}}
que no muestra ninguna entrada relacionada con la sección 2.
Tenga cuidado porque los flotadores podrían arruinarlo; si los necesita, se deben tomar algunas contramedidas.
Respuesta2
La siguiente solución soluciona el problema causado por 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}
}