I find that I much prefer \varphi
to \phi
and generally would rather use the \varphi
than the \phi
. But it's three more characters to type \varphi
instead of \phi
, which is most troublesome. So I would like to swap the two commands. I tried a couple of things on my own, but one resulted in an infinite loop in compilation and the other led to \varphi
taking over all of the \phi
commands I made. What would be the correct way to do this?
3 Answers
Try the following:
$\phi\varphi$
\let\temp\phi
\let\phi\varphi
\let\varphi\temp
$\phi\varphi$
-
2Okay, so my issue before is that I was using \renewcommand instead of \let. Could you elaborate on the differences between the two commands? Commented Apr 1, 2012 at 18:49
-
9
\let\a\b
makes \a have the definition that\b
has so\let\a\a
is a no-op\newcommand\a{\b}
makes a expand to \b so\newcommand\a{\a}
makes a expand to itself and loop forever Commented Apr 1, 2012 at 18:57 -
5@DavidCarlisle Okay so it's essentially hard linking versus symbolic linking. Which is what I suspected the issue was. Thanks. Commented Apr 1, 2012 at 19:04
The usual way to exchange two values is to use a temporary command name to store one of them while swapping, but if, for no particular reason, you want to avoid the extra command name then:
\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}
-
-
15
-
I see, you are using the input stream as temporary storage. Commented Jun 26, 2012 at 23:55
For non-complex macros, using an interim macro to swap definitions is sufficient. However, if the macros (say, funcA
and funcB
) takes optional arguments, you need to use a different approach via letltxmacro
's macro \LetLtxMacro{<new macro>}{<old macro>}
:
\usepackage{letltxmacro}% http://ctan.org/pkg/letltxmacro
%...
\LetLtxMacro{\temp}{\funcA}
\LetLtxMacro{\funcA}{\funcB}
\LetLtxMacro{\funcB}{\temp}
-
2+1 for giving an answer with less
\expandafter
s but more use than mine. Commented Apr 1, 2012 at 20:36
\let\phi\varphi
\let\oldphi\phi \let\phi\varphi \let\varphi\oldphi
\let\phi\varphi
, as the two symbols very rarely are used together in the same document (a polite way to say: "never use both in the same document").\phi
and\varphi
.