Considere dois contadores A
e B
o valor inicial de B
é igual a de A
.
\newcounter{A}
\newcounter{B}
\setcounter{A}{1}
\setcounter{B}{\theA}
Considere os comandos setA
e setB
altere-os.
\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}
1ª variante
Suponhamos que também queremos mudar B
quando mudamos A
. Então poderíamos definir
\newcommand{\setA}[1]{\setcounter{A}{#1}\setcounter{B}{\theA}}
Mas neste caso, se mudarmos B
depois de termos mudado, A
eles serão diferentes.
1º 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}
Se mudarmos B
primeiro e depois se mudarmos A
, os anteriores \theB
serão perdidos e claro que serão iguais.
\begin{document}
\setB{5}
A=\theA
B=\theB
\medskip
\setA{3}
A=\theA
B=\theB
\medskip
A=\theA
B=\theB
\end{document}
Saída desejada
Eu gostaria de tornar B
dependente deA
se e apenas seo comando \setB
não foi usadoem qualquer lugarno código.
Em outras palavras, o código abaixo produziria
\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}
Responder1
Algo assim?
\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}
Responder2
Aqui está uma opção: Deixe a representação de B
print \theA
Until \setB
ser usada.
\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}
Observe que usamos \value{A}
to set B
em vez de, \theB
pois o último pode não ser numérico.