在 caption 中使用 \makemathbox 时出现“\@caption 的参数有多余的 }”错误

在 caption 中使用 \makemathbox 时出现“\@caption 的参数有多余的 }”错误

我有一个数学表达式,似乎无法在标题中使用。以下是我想要编译的内容:

\documentclass{article}

\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{MnSymbol}

\begin{document}
\begin{figure}
\caption{$\mathrel{\xleftarrow{\mathmakebox[0.55em]{}}\hspace*{-0.4em}\smallsquare}$}
\end{figure}
\end{document}

如果我将数学运算从标题中移出,它就可以很好地编译。

(该示例略少于最小示例;我认为展示表达式的作用会很有用。我可以使用以下命令重现该问题:

\documentclass{article}

\usepackage{mathtools}

\begin{document}
\begin{figure}
\caption{$\mathmakebox[0.55em]{}$}
\end{figure}
\end{document}

但它不产生任何输出。)

答案1

该错误消息证明移动参数中的命令很脆弱;在这种情况下\mathmakebox;当在标题中时,\protect在其前面使用。

更好的是,为复杂的构造定义一个新命令:

\DeclareRobustCommand\leftarrowbox{%
  \mathrel{\xleftarrow{\mathmakebox[0.55em]{}}\hspace*{-0.4em}\smallsquare}%
}

并在您的文档类型中\leftarrowbox

我希望你不MnSymbol只是为了得到而加载\smallsquare。请参阅从不同字体导入单个符号解决方法。使用标准字体,你可以

\DeclareRobustCommand{\leftarrowbox}{%
  \leftarrow\mathrel{\mkern-2.5mu\xsmallsquare}
}
\newcommand{\xsmallsquare}{{\vcenter{\hbox{$\scriptscriptstyle\square$}}}}

相关内容