自己的命令不适用于所有 LaTeX 发行版和 LaTeX 文档类

自己的命令不适用于所有 LaTeX 发行版和 LaTeX 文档类

新定义的命令(见下文)在装有 MiKTeX 2.9 的 Windows 和装有 MacTeX 的 Mac 上均可运行。在另一个装有全新安装的 MiKTeX 的 Windows(在 Mac 中运行)上以及在装有 MacTeX 的 Mac OS 上的同一台 Mac 上,该命令均不起作用。

我们使用的文件完全相同。scrartcl 类就用在这里。

命令:

\newcommand{\mysection}[1]{%
    \refstepcounter{section}%
    \sectionmark{#1}%
    \addcontentsline{toc}{section}{\numberline{\thesection}#1}%
}

失败分布上的错误消息(调用命令时):

Argument of \XKV@d@fine@k@y has an extra }.
<inserted text> 
                \par 
l.6 \mysection{Die rationalen Zahlen $\Qe_0^+$}

更新

我通过 MiKTeX 更新管理器更新了所有软件包,现在也出现了错误。我创建了一个 MWE。有趣的是,它适用于类 article,但不适用于 scrartcl:

\documentclass{scrartcl}

\newcommand{\mysection}[1]{%
    \refstepcounter{section}%
    \sectionmark{#1}%
    \addcontentsline{toc}{section}{\numberline{\thesection}#1}%
}

\begin{document}
\tableofcontents
\mysection{test}
\end{document}

错误信息是:

Argument of \reserved@a has an extra }.
<inserted text> 
                \par 
l.11 \mysection{test}

答案1

添加

\listfiles

到您的文档并比较两台机器上列出的软件包版本。更新任何不同步的软件包(xkeyval最有可能给出错误消息)。

您添加的 MWE 显示缺少\protect

\documentclass{scrartcl}

\newcommand{\mysection}[1]{%
    \refstepcounter{section}%
   \sectionmark{#1}%
    \addcontentsline{toc}{section}{\protect\numberline{\thesection}#1}%
}

\begin{document}
\tableofcontents


\mysection{test}
\end{document}

相关内容