未定义控制序列。\短标题

未定义控制序列。\短标题

Undefined control sequence. <argument> \shorttitle我收到了以下代码的错误:

\author{MyName}
\title{ThisPaper}
\date{01 Jan 2015}
\documentclass[12pt]{amsart}

\begin{document}
\maketitle
Text
\end{document}

Is there something wrong with my packages?
Text
\end{document}

答案1

\author等等。 \documentclass-不是前。

\documentclass[12pt]{amsart}
\author{MyName}
\title{ThisPaper}
\date{01 Jan 2015}

\begin{document}
\maketitle

Is there something wrong with my packages?
Text
\end{document}

这样,你就可以得到这些宏的类定义,并且\shorttitle在你定义时会自动定义\title。如果你使用\title amsart的定义不活跃,\shorttitle不会被定义。

\title这是from的定义amsart.cls

\renewcommand*{\title}[2][]{\gdef\shorttitle{#1}\gdef\@title{#2}}

注意 而\renewcommand不是\newcommand。该类\title用自己的定义替换标准 LaTeX。重新定义的版本需要 2 个参数,而不是 1 个。但第一个是可选的。此外,第一个参数用于定义\shorttitle

\gdef\shorttitle{#1}

这意味着如果你说

\title{Title}

然后Title将用于标题并将\shorttitle被定义为无,因为可选参数的默认值[]\renewcommand上面一行。

但如果你说\title \documentclass,你会得到标准的 LaTeX 定义:

\def\title#1{\gdef\@title{#1}}

因此,在这种情况下,标题将被正确设置为Title但从\shorttitle未定义。这是一个问题,因为在重新定义它\maketitle之后使用并且它期望可用。因此,您会收到错误。amsart.cls\shorttitle

一般情况下,如果有的话,应该放在 之前,但很少\documentclass。除非您确定它应该放在类加载之前,否则请假设它属于序言部分(前后代码\documentclass\begin{document}或文档部分(前后代码\begin{document}\end{document}

答案2

\author等是 LaTeX 核心命令,但不应在之前使用\documentclass

\title\shorttitle在标准类中定义amsart.cls但不在标准类中。

在它之前使用它\documentclass永远不会应用原始“核心”amsart.cls的定义,因此永远不会被定义——并使用\title\shorttitle\maketitle\shorttitle

\documentclass[12pt]{amsart}

\author{MyName}
\title{ThisPaper}
\date{01 Jan 2015}

\begin{document}
\maketitle

Is there something wrong with my packages? -- No, but \verb+\title+ etc. should be used after the \verb+\documentclass+ 
Text
\end{document}

在此处输入图片描述

以下是代码amsart.cls

\def\maketitle{\par
  \@topnum\z@ % this prevents figures from falling at the top of page 1
  \@setcopyright
  \thispagestyle{firstpage}% this sets first page specifications
  \uppercasenonmath\shorttitle
  \ifx\@empty\shortauthors \let\shortauthors\shorttitle
  \else \andify\shortauthors
  \fi
  \@maketitle@hook
  \begingroup
  \@maketitle
  \toks@\@xp{\shortauthors}\@temptokena\@xp{\shorttitle}%
  \toks4{\def\\{ \ignorespaces}}% defend against questionable usage
  \edef\@tempa{%
    \@nx\markboth{\the\toks4
      \@nx\MakeUppercase{\the\toks@}}{\the\@temptokena}}%
  \@tempa
  \endgroup
  \c@footnote\z@
  \@cleartopmattertags
}

相关内容