考虑两个计数器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
,它们就会有所不同。
第一届
\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
因为后者可能不是数字。