美元符号在edef产量tex容量超过

美元符号在edef产量tex容量超过

我想要我的两美元:

\documentclass{minimal}
\begin{document}
\edef\twodollars{\$2}
\end{document}

然而我得到的只是:

! TeX capacity exceeded, sorry [input stack size=5000].
\font@name ->
             \OT1/cmr/m/n/10 
l.3 \edef\twodollars{\$
                       2}

是否可以使用\edef包含美元符号的值?

答案1

使用

\documentclass{minimal}
\begin{document}
\edef\twodollars{\string$2} \twodollars
\end{document}

\string将类别代码更改为$12其他)。

答案2

正确的做法是

\makeatletter
\protected@edef\twodollars{\$2}
\makeatother

\$定义如下。\DeclareRobustCommand另一种方法是

\usepackage{etoolbox}
\robustify\$
\edef\twodollars{\$2}

相关内容