未定義的控制序列:標題中新定義的數學

未定義的控制序列:標題中新定義的數學

當我用這段程式碼編譯文件時:

\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 和我的 PC 上不起作用,但是在我的 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

相關內容