考慮兩個計數器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}}
微量元素
\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
,它們就會不同。
第一屆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
這裡有一個選項:讓print \theA
Until的表示法\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}
setB
而不是,\theB
因為後者可能不是數字。