在一个包中,我定义了以下命令:
\newcommand\fkm{
\ensuremath{\mathrm{
\raisebox{-0.1ex}{\rotatebox{22}{f}}\!
\raisebox{0.2ex}{\rotatebox{-15} {k}}\!
m\!^{*}
}}
}
它的工作方式与我在文本中预期的一样,但如果我说\section{\fkm}
我得到一个错误说
!TeX 容量超出,抱歉 [输入堆栈大小=5000]。
为什么此功能在部分内不起作用?我该怎么做才能使其正常工作?
答案1
的参数\section
可用于目录。在此过程中,此参数内的命令可能会被扩展并写入 toc 文件以供以后使用。为了防止扩展,您可以使用以下命令\protect
:
\section{\protect\fkm}
或者,使用\DeclareRobustCommand
来定义命令,使其在这样的移动参数中工作。您也可以考虑使用\section
toc 条目的可选参数。请参阅:脆弱和强大的命令。
其他具有此类移动参数的命令有\chapter
、\subsection
等和\caption
。
答案2
这不是我尝试时得到的错误。但是,解决方案是使用\DeclareRobustCommand
而不是\newcommand
。