Dependencia condicional de contadores.

Dependencia condicional de contadores.

Considere dos contadores Ay Bel valor inicial de Bes el mismo que el de A.

\newcounter{A}
\newcounter{B}
\setcounter{A}{1}
\setcounter{B}{\theA}

Considere los comandos setAy setBcámbielos.

\newcommand{\setA}[1]{\setcounter{A}{#1}}
\newcommand{\setB}[1]{\setcounter{B}{#1}}

MWE

\documentclass{report}

\newcounter{A}
\newcounter{B}
\setcounter{A}{1}
\setcounter{B}{\theA}

\newcommand{\setA}[1]{\setcounter{A}{#1}}
\newcommand{\setB}[1]{\setcounter{B}{#1}}

\begin{document}
A=\theA

B=\theB

\medskip
\setA{3}

A=\theA

B=\theB

\medskip
\setB{5}

A=\theA

B=\theB
\end{document}

ingrese la descripción de la imagen aquí

1ra variante

Supongamos que queremos cambiar también Bcuando cambiamos A. Entonces podríamos definir

\newcommand{\setA}[1]{\setcounter{A}{#1}\setcounter{B}{\theA}}

Pero en este caso, si cambiamos Bdespués de haber cambiado, Aserán diferentes.

1er MWE

\documentclass{report}

\newcounter{A}
\newcounter{B}
\setcounter{A}{1}
\setcounter{B}{\theA}

\newcommand{\setA}[1]{\setcounter{A}{#1}\setcounter{B}{\theA}}
\newcommand{\setB}[1]{\setcounter{B}{#1}}

\begin{document}
A=\theA

B=\theB

\medskip
\setA{3}

A=\theA

B=\theB

\medskip
\setB{5}

A=\theA

B=\theB
\end{document}

ingrese la descripción de la imagen aquí

Si cambiamos Bprimero y después si cambiamos A, lo anterior \theBse perderá y por supuesto serán iguales.

\begin{document}
\setB{5}

A=\theA

B=\theB

\medskip
\setA{3}

A=\theA

B=\theB

\medskip

A=\theA

B=\theB
\end{document}

ingrese la descripción de la imagen aquí

Salida deseada

Me gustaría hacer Bdependiente deA si y solo siEl comando\setB no fue usadoen cualquier lugaren el código.

En otras palabras, el siguiente código produciría

ingrese la descripción de la imagen aquí

\begin{document}
\setB{5}

A=\theA

B=\theB

\medskip
\setA{3}% from here I want to keep \theB because it was used

A=\theA

B=\theB

\medskip

A=\theA

B=\theB
\end{document}

Respuesta1

¿Algo como esto?

\documentclass{report}

\newcounter{A}
\newcounter{B}
\setcounter{A}{1}
\setcounter{B}{\value{A}}


\newif\ifB
\Bfalse


\newcommand{\setA}[1]{\setcounter{A}{#1}\ifB\else\setcounter{B}{#1}\fi}
\newcommand{\setB}[1]{\global\Btrue\setcounter{B}{#1}}

\begin{document}


\setB{5}

A=\theA

B=\theB

\medskip
\setA{3}

A=\theA

B=\theB

\medskip

A=\theA

B=\theB



\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

Aquí hay una opción: dejar que se utilice la representación de Bimpresión \theAhasta que \setBse utilice.

ingrese la descripción de la imagen aquí

\documentclass{article}

\newcounter{A}
\newcounter{B}
\setcounter{A}{1}
\setcounter{B}{\value{A}}
\renewcommand{\theB}{\theA}

\newcommand{\setA}[1]{\setcounter{A}{#1}}
\newcommand{\setB}[1]{\renewcommand{\theB}{\arabic{B}}\setcounter{B}{#1}}

\begin{document}

\setB{5}

A=\theA

B=\theB

\medskip
\setA{3}

A=\theA

B=\theB

\medskip

A=\theA

B=\theB

\end{document}

Tenga en cuenta que utilizamos \value{A}para establecer Ben lugar de \theBporque este último podría no ser numérico.

información relacionada