我尝试在章节标题中使用 mathsf 字体,但无法编译。以下是 MWE:
\documentclass{amsart}
\usepackage{verbatim, rotating, stmaryrd, bbm, pict2e, ytableau, mathrsfs, amssymb, mathtools}
\newcommand{\Dsg}[1]{{\mathsf{D}^b_\mathsf{sg}(#1)}}
\newcommand{\APC}[1]{{\underline{\mathsf{APC}}(#1)}}
\begin{document}
\tableofcontents
\section{$\APC{S} \simeq \Dsg{S}$}
hi
\end{document}
它在没有目录标签的情况下工作,但是当我编译它时我收到一个错误:
Latex Error: ./temp.toc:1 \mathsf allowed only in math mode.
./temp.toc 文件仅包含一行:
\contentsline {section}{\tocsection {}{1}{${\relax $\@@underline {\hbox {\mathsf {APC}}}\mathsurround \z@ $\relax (S)} \simeq {\mathsf {D}^b_\mathsf {sg}(S)}$}}{1}
我不知道如何解析它来找出问题所在。为什么我不能在章节标题的数学模式下使用 \mathsf?
答案1
将评论收集成答案:
问题不在于\mathsf
但是\underline
。后者是一个脆弱的命令,并且这些命令经常在移动诸如章节标题之类的参数时造成问题。
以下是两个可行的定义:
\newcommand{\APC}[1]{{\protect\underline{\mathsf{APC}}(#1)}}
或者\DeclareRobustCommand{\APC}[1]{{\underline{\mathsf{APC}}(#1)}}
当将节标题写入.toc
文件时,可扩展宏会得到扩展。有时这会破坏某些东西,例如本例。\protect
防止不必要的扩展。定义\APS
为强健命令(某种程度上)可防止其在此类上下文中扩展,因此\underline
甚至不会扩展。有关此内容的更多详细信息,例如,可在脆弱命令和坚固命令之间有什么区别?