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
}