未定義の制御シーケンス: キャプション内の新しい定義済みの数式

未定義の制御シーケンス: キャプション内の新しい定義済みの数式

このコードでドキュメントをコンパイルすると:

\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 を搭載したラップトップではエラーは発生しません。

これを回避または修正する方法を教えていただけますか?


アップデート:

と のロード順序を変更するという提案を試してみましたがamssymbamsmathうまくいきました。

\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

関連情報