未定义的控制序列:标题中新定义的数学

未定义的控制序列:标题中新定义的数学

当我使用此代码编译文档时:

\documentclass[final,3p,times]{elsarticle}

\usepackage{amsmath, amssymb, amsfonts, amsfonts, amsthm,latexsym}


\usepackage{enumerate}

\usepackage{mathtools} \usepackage[normalem]{ulem} \usepackage{scalerel}

\newcommand{\Ro}{\mathrel{\overset{0}{\sim}}}

\title{test}

\date{March 2020}


\usepackage{graphicx}

\begin{document}

\maketitle \section{test.\ $\Ro$}


\end{document}

我得到编译器无法理解我定义的命令。请检查命令拼写是否正确。如果命令是包的一部分,请确保您已使用 将该包包含在序言中\usepackage{...}

它在 overleaf.com 和我的电脑上不起作用,但是在我的装有 Ubuntu 的笔记本电脑上它没有产生任何错误。

谁能告诉我如何避免或解决这个问题?


更新:

amssymb我尝试采纳改变加载方式和amsmath加载顺序的建议;它起作用了。

\documentclass[3p,times]{elsarticle}
\usepackage{amssymb,amsthm,amsmath}
\newcommand{\Ro}{\mathrel{\overset{0}{\sim}}}
\begin{document}
    \section{test.\ $\Ro$}

    \begin{proof}
        asfaag
    \end{proof}
\end{document}

但是,如果我添加所有包,问题又会出现。

\documentclass[3p,times]{elsarticle}
\usepackage{amssymb,amsthm,amsmath}
\usepackage{algorithmic,algorithm}
\renewcommand{\algorithmiccomment}[1]{\hfill$\rhd∗$\textit{#1}}
\usepackage{graphics}
\usepackage{enumerate}
\usepackage{color}
\usepackage{mathtools}
\usepackage[normalem]{ulem}
\usepackage{scalerel}

\newcommand{\Ro}{\mathrel{\overset{0}{\sim}}}
\begin{document}
    \section{test.\ $\Ro$}

    \begin{proof}
        asfaag
    \end{proof}
\end{document}

答案1

这是相当奇怪的交互scalerel。我可以用一个更简单的例子重现这种行为:

\documentclass{article}
\usepackage{amsmath}
\usepackage{scalerel}

\newcommand{\Ro}{\mathrel{\overset{0}{\sim}}}

\begin{document}

\section{test.\ $\Ro$}

\end{document}

scalerel删除后,问题便消失。

解决方案:使用

\DeclareRobustCommand{\Ro}{\overset{0}{\sim}}

(我删除了它,\mathrel因为它没有必要,因为它\sim是一个关系符号并且\overset能够正确猜出它)。

答案2

非常感谢您制作了完整的 MWE(最小工作示例)。我立即能够在 MacTeX2020 的预发布版本上重现该错误。具体来说,我收到了以下消息序列:

! Undefined control sequence.
\@tempa ->\catcode `\<
                      12\relax \catcode `\>12\relax \catcode `\=12\relax 
l.22 \section{test.\ $\Ro$}

? r
OK, entering \nonstopmode...
! Undefined control sequence.
\@tempa ->\catcode `\<
                      12\relax \catcode `\>12\relax \catcode `\=12\relax 
l.22 \section{test.\ $\Ro$}

The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

我不知道为什么以下解决方案有效,但这里是:加载amssymb,不在之后,amsmath包裹。

将代码精简到最基本的必需品,即

\documentclass[3p,times]{elsarticle}
\usepackage{amssymb,amsmath}
\newcommand{\Ro}{\mathrel{\overset{0}{\sim}}}
\begin{document}
\section{test.\ $\Ro$}
\end{document}

我明白了

在此处输入图片描述

没有任何错误或警告消息。不同之处在于 是amssymb在 之前加载的,而不是 之后加载的amsmath

相关内容