![由于 \section 中有几个 raiseboxes,导致“TeX 容量超出”?](https://linux22.com/image/232688/%E7%94%B1%E4%BA%8E%20%5Csection%20%E4%B8%AD%E6%9C%89%E5%87%A0%E4%B8%AA%20raiseboxes%EF%BC%8C%E5%AF%BC%E8%87%B4%E2%80%9CTeX%20%E5%AE%B9%E9%87%8F%E8%B6%85%E5%87%BA%E2%80%9D%EF%BC%9F.png)
在一个包中,我定义了以下命令:
\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
。