Betrachten Sie zwei Zähler A
und B
und der Anfangswert von B
ist derselbe wie von A
.
\newcounter{A}
\newcounter{B}
\setcounter{A}{1}
\setcounter{B}{\theA}
Beachten Sie die Befehle setA
und setB
ändern Sie sie.
\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
Angenommen, wir möchten auch ändern, B
wenn wir ändern A
. Wir könnten also definieren
\newcommand{\setA}[1]{\setcounter{A}{#1}\setcounter{B}{\theA}}
Aber in diesem Fall werden die Dinge anders sein, wenn wir sie ändern B
, nachdem wir sie geändert haben .A
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}
Wenn wir B
zuerst ändern und später ändern A
, geht das Vorherige \theB
verloren und sie bleiben natürlich gleich.
\begin{document}
\setB{5}
A=\theA
B=\theB
\medskip
\setA{3}
A=\theA
B=\theB
\medskip
A=\theA
B=\theB
\end{document}
Gewünschte Ausgabe
Ich möchte B
abhängig machen vonA
dann und nur dann, wennder Befehl\setB
wurde nicht verwendetüberallim Code.
Mit anderen Worten würde der folgende Code erzeugen
\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}
Antwort1
Etwas wie das?
\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}
Antwort2
Hier ist eine Option: Lassen Sie die Darstellung von B
print \theA
until \setB
verwendet werden.
\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}
Beachten Sie, dass wir \value{A}
zum Festlegen B
anstelle von verwenden \theB
, da Letzteres möglicherweise nicht numerisch ist.