交替命令

交替命令

是否可以让命令改变其行为?

我的想法是这样的:

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

相关内容