如何交换两个符号的命令?

如何交换两个符号的命令?

我发现我更喜欢\varphi并且\phi通常更愿意使用\varphi而不是。但是它比 需要\phi多输入三个字符,这非常麻烦。所以我想交换这两个命令。我自己尝试了几种方法,但其中一种导致编译时出现无限循环,另一种导致接管我执行的所有命令。正确的做法是什么?\varphi\phi\varphi\phi

答案1

请尝试以下操作:

$\phi\varphi$
\let\temp\phi
\let\phi\varphi
\let\varphi\temp
$\phi\varphi$

答案2

交换两个值的通常方法是使用临时命令名在交换时存储其中一个值,但如果没有特殊原因,您想避免使用额外的命令名,那么:

\documentclass{article}

\begin{document}

$\phi\varphi$


\expandafter\mathchardef\expandafter\varphi\number\expandafter\phi\expandafter\relax
\expandafter\mathchardef\expandafter\phi\number\varphi

$\phi\varphi$


\end{document}

答案3

对于非复杂宏,使用临时宏来交换定义就足够了。但是,如果宏(例如funcAfuncB)采用可选参数,则需要使用不同的方法letltxmacro的宏\LetLtxMacro{<new macro>}{<old macro>}

\usepackage{letltxmacro}% http://ctan.org/pkg/letltxmacro
%...
\LetLtxMacro{\temp}{\funcA}
\LetLtxMacro{\funcA}{\funcB}
\LetLtxMacro{\funcB}{\temp}

相关内容