是否可以让命令改变其行为?
我的想法是这样的:
\documentclass{article}
\def \current {c}
\def \abc {
\ifx\current{a}
\def\current{b}
\else
\ifx\current{b}
\def\current{c}
\else
\def\current{a}
\fi
\fi
\current
}
\begin{document}
\abc \abc \abc
\end{document}
我期望输出 abc,但是我得到的却是:
我猜想里面的逻辑只有在\abc
定义时才会运行,这就是为什么它总是停留在 a 处。我怎样才能编写具有所需行为的内容?
答案1
\ifx\current{
\current
与之比较的结果不是{
你想要的,
\documentclass{article}
\def\currenta{a\let\abc\currentb}
\def\currentb{b\let\abc\currentc}
\def\currentc{c\let\abc\currenta}
\let\abc\currenta
\begin{document}
\abc \abc \abc
\end{document}
对于更新后的案例,请\color
注意扩张一个名字,所以不能有分配,和 tikz 循环组每次迭代,所以你需要一个全局分配
\documentclass{article}
\usepackage{tikz}
\definecolor{myBlue}{RGB}{0,114,206}
\definecolor{myYellow}{RGB}{255,199,44}
\definecolor{myBrown}{RGB}{154,51,36}
\def\currentblue{\color{myBlue}\global\let\currentcol\currentyellow}
\def\currentyellow{\color{myYellow}\global\let\currentcol\currentbrown}
\def\currentbrown{\color{myBrown}\global\let\currentcol\currentblue}
\global\let\currentcol\currentblue
\begin{document}
\tikz{
\foreach \i in {1,...,10} {
\node at (\i,\i) {\currentcol \i};
}}
\end{document}