在 LaTeX 中交换变量(与 TikZ 一起使用)

在 LaTeX 中交换变量(与 TikZ 一起使用)

我想在 LaTeX 中定义几个变量,然后交换它们的值,像这样(但它不起作用):

\newcommand{\signS}{$+$}
\newcommand{\signT}{$-$}
\newcommand{\signU}{}
\signS
\renewcommand{\signU}{\signS}
\renewcommand{\signS}{\signT}
\renewcommand{\signT}{\signU}
\signS

我究竟做错了什么?

编辑

正如以下答案所建议的,使用\let可以解决问题。但是,我想\foreach在 TikZ 中的循环内使用它,但它似乎不起作用:

\begin{tikzpicture}
    \foreach \i in {1, 2, 3, 4} {
        \signS
        \let\signU\signS
        \let\signS\signT
        \let\signT\signU
    }
\end{tikzpicture}

有任何想法吗?

答案1

尝试使用\let而不是\renewcommand

\documentclass{article}
%
\newcommand{\signS}{$+$}%
\newcommand{\signT}{$-$}%
\newcommand{\signU}{}%
%
\begin{document}
    old \textbackslash signS: \signS

    \let\signU\signS
    \let\signS\signT
    \let\signT\signU
    new \textbackslash signS: \signS
\end{document}

在此处输入图片描述

答案2

最简单的方法可能是用 等替换\renewcommand{\signU}{\signS}\let\signU\signS然后\signU赋予 的当前含义\signS

你的方法不行,因为\renewcommand在定义的时候没有扩展定义文本,而是在使用命令的时候才扩展。

相关内容