我有一个数学表达式,似乎无法在标题中使用。以下是我想要编译的内容:
\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$}}}}