Bedingte Abhängigkeit von Zählern

Bedingte Abhängigkeit von Zählern

Betrachten Sie zwei Zähler Aund Bund der Anfangswert von Bist derselbe wie von A.

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

Beachten Sie die Befehle setAund 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}

Bildbeschreibung hier eingeben

1. Variante

Angenommen, wir möchten auch ändern, Bwenn 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}

Bildbeschreibung hier eingeben

Wenn wir Bzuerst ändern und später ändern A, geht das Vorherige \theBverloren 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}

Bildbeschreibung hier eingeben

Gewünschte Ausgabe

Ich möchte Babhängig machen vonA dann und nur dann, wennder Befehl\setB wurde nicht verwendetüberallim Code.

Mit anderen Worten würde der folgende Code erzeugen

Bildbeschreibung hier eingeben

\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}

Bildbeschreibung hier eingeben

Antwort2

Hier ist eine Option: Lassen Sie die Darstellung von Bprint \theAuntil \setBverwendet werden.

Bildbeschreibung hier eingeben

\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 Banstelle von verwenden \theB, da Letzteres möglicherweise nicht numerisch ist.

verwandte Informationen