由于 \section 中有几个 raiseboxes,导致“TeX 容量超出”?

由于 \section 中有几个 raiseboxes,导致“TeX 容量超出”?

在一个包中,我定义了以下命令:

\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来定义命令,使其在这样的移动参数中工作。您也可以考虑使用\sectiontoc 条目的可选参数。请参阅:脆弱和强大的命令

其他具有此类移动参数的命令有\chapter\subsection等和\caption

答案2

这不是我尝试时得到的错误。但是,解决方案是使用\DeclareRobustCommand而不是\newcommand

相关内容