请考虑以下代码:
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}[label=\arabic*$\star$]
\item ABC
\end{enumerate}
\end{document}
有人知道为什么上面的代码被接受,但使用相应的 LaTeX 语法的代码label=\arabic*\(\star\)
会导致bad math delimiter
错误。人们会认为 LaTeX 数学环境比 TeX 数学更受欢迎。
附言:我遇到过其他答案,他们指出必须正确匹配环境,例如(...)或[...],但在我们的例子中确实如此。
答案1
最可能的原因是
\begin{enumerate}[label=\arabic*\(\star\)]
抛出“错误的数学分隔符”错误,而
\begin{enumerate}[label=\arabic*$\star$]
不是,是因为您使用的是较旧的 LaTeX 格式(具体来说,早于 2015/01/01),其中\(
和\)
是“脆弱”命令(在 LaTeX 术语意义上)。相反,$
一直都是“健壮”的。当脆弱命令在其他命令的参数中使用时,就会出现问题。
我能想到两种解决方法(当然,除了用\(
和\)
替换$
或类似的“强大”方法进入和退出数学模式):
将您的 (pdf/Xe/Lua)LaTeX 格式更新为更近比 2015/01/01 更新。您可以通过查看 .log 文件的第一行或第二行来了解您的系统提供的 LaTeX 格式的版本。
最新版本的 LaTeX 不应产生您遇到的错误消息。也就是说,当我在我的系统上运行您的 MWE(MacTeX2015 预发布版,pdfLaTeX 格式 2015/05/30)时,我没有遇到任何问题。
如果你无法获得最新版本的 LaTeX 格式的 TeX 发行版,则应
fixltx2e
通过以下指令加载软件包\RequirePackage{fixltx2e}
前执行
\documentclass...
。正如包的名称所示,fixltx2e
修复了 LaTeX 格式中已知的各种怪癖。修复的内容包括 — — 您猜对了 — — 使\(
和\)
“健壮”的指令。仔细想想,如果你还在使用 2015/01/01 之前的 LaTeX 版本,那么很可能总是加载此包是个好主意。(比 2015/01/01 更新的 LaTeX 格式版本包含了 提供的修复
fixltx2e
。因此, 的最新版本fixltx2e
不再“做”任何事情;如果加载,它只会报告“2015 年以后的版本不需要 fixltx2e”。)