카운터의 조건부 의존성

카운터의 조건부 의존성

두 개의 카운터를 고려 A하고 B의 초기 값은 B와 같습니다 A.

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

명령을 고려 setA하고 setB변경하십시오.

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

여기에 이미지 설명을 입력하세요

첫 번째 변종

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

B옵션은 다음과 같습니다. 인쇄 표시를 사용 \theA하도록 합니다.\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

관련 정보