カウンターの条件依存性

カウンターの条件依存性

2 つのカウンタAとを考えます。Bの初期値はBと同じですA

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

コマンドを検討しsetAsetB変更します。

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

ムウェ

\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番目のバリエーション

Bを変更したときに も変更したいとしますA。その場合、次のように定義できます。

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

しかし、この場合、私たちBが変わった後に私たちが変わると、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}

ここに画像の説明を入力してください

最初に変更しB、後で変更するとA、以前のもの\theBは失われ、当然それらは等しくなります。

\begin{document}
\setB{5}

A=\theA

B=\theB

\medskip
\setA{3}

A=\theA

B=\theB

\medskip

A=\theA

B=\theB
\end{document}

ここに画像の説明を入力してください

望ましい出力

B私は依存させたいA もし、もし、コマンドは\setB使用されなかったどこでもコード内。

つまり、以下のコードは

ここに画像の説明を入力してください

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

答え1

このようなもの?

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

ここに画像の説明を入力してください

答え2

ここにオプションがあります: Bprint \theAuntilの表現\setBを使用します。

ここに画像の説明を入力してください

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

後者は数値ではない可能性があるため、ではなくを使用して\value{A}設定することに注意してください。B\theB

関連情報