我需要使用\ae
等式中的命令作为变量,以便将其放在数学环境中,尽管我被迫使用\textit{\ae}
。
有没有办法只\ae
在数学环境中写入并获取所写结果\textit{\ae}
?
感谢您的时间。
答案1
保存 的定义\ae
并重新使用名称。必须使用\LetLtxMacro
来避免无限循环。
\documentclass{article}
\usepackage{amsmath,letltxmacro}
\makeatletter
% \serra@ae is the same as \ae
\LetLtxMacro\serra@ae\ae
\let\ae\relax % remove the definition for \ae
\DeclareRobustCommand{\ae}{%
\TextOrMath{\serra@ae}{\text{\normalfont\itshape\serra@ae}}%
}
\makeatother
\begin{document}
Here is \ae{} in text mode.
Here is $\ae$ in math mode. Also in subscripts: $X_{\ae}$
\end{document}
不过我更愿意
\newcommand{\mae}{\text{\normalfont\itshape\ae}}
\mae
并在数学模式下使用。
答案2
我不建议这样做,因为我认为更好的做法是使用\textit{\ae}
或定义另一个宏,例如
\newcommand*\mae{\textit{ae}}
但下面使用 进行了重新定义,将宏定义为后面的扩展内容。使用 禁止\edef
扩展其中的所有内容,但使用 扩展一次的除外。\edef
\noexpand
\ae
\unexpanded\expandafter{\ae}
\documentclass[]{article}
\edef\ae
{%
\relax\noexpand\ifmmode
\noexpand\textit{\unexpanded\expandafter{\ae}}%
\noexpand\else
\unexpanded\expandafter{\ae}%
\noexpand\fi
}
\begin{document}
\begin{equation}
\ae = \textit{\ae}
\end{equation}
\end{document}