使用 enumitem 进行枚举时数学分隔符错误

使用 enumitem 进行枚举时数学分隔符错误

请考虑以下代码:

\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”。)

相关内容