정의되지 않은 제어 순서: 캡션에 새로 정의된 수학

정의되지 않은 제어 순서: 캡션에 새로 정의된 수학

이 코드로 문서를 컴파일할 때:

\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.

관련 정보