我该如何解释这个.cls 代码?

我该如何解释这个.cls 代码?

我正在向期刊投稿一篇论文。在编辑提供的 .cls 文件中,出现了以下代码:

\gdef\@author{\mbox{}}
\def\author{\@ifnextchar [{\@authortwo}{\@authorone}}
\def\@authortwo[#1]#2{\gdef\@author{\uppercase{#2}}\gdef\@shortauthor{#1}}
\def\@authorone#1{\gdef\@author{#1}
\begingroup\gdef\@shortauthor{#1}\endgroup}
\def\shortauthor#1{\gdef\@shortauthor{#1}}
\gdef\@shortauthor{}

我很确定它提供了有关如何插入论文作者的信息。假设他们的名字是 John Haide Well 和 Maxwell John Baide。我应该如何在我的 .tex 文件中写入这个?

答案1

逐行评论

\gdef\@author{\mbox{}}

初始化\@author为一个空框

\def\author{\@ifnextchar [{\@authortwo}{\@authorone}}

定义\author(用户级命令)\@authortwo如果后跟则执行[\@authorone否则执行。

\def\@authortwo[#1]#2{\gdef\@author{\uppercase{#2}}\gdef\@shortauthor{#1}}

定义\@authortwo为吸收形式的输入\author[x]{y}(我们知道[在那里;将括号分隔的参数存储到\@shortauthor并将正常参数存储到\@author但被包围\uppercase(这里是编程错误)。

\def\@authorone#1{\gdef\@author{#1}
\begingroup\gdef\@shortauthor{#1}\endgroup}

定义\@authorone将其参数存储在 中,\@author并将其存储在 中\@shortauthor。为什么后一个命令在组内执行只有代码作者才能解释。此外,为什么只有一种情况下作者姓名是大写的,这是一个大谜团。

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

用于存储短作者姓名的用户级命令\@shortauthor;变量初始化为空。

示例 1

\author{Abigail Uthor}

我们最终得到\@author\@shortauthor都包含Abigail Uthor

示例 2

\author[A. Uthor]{Abigail Uthor}

我们最终\@author包含\uppercase{Abigail Uthor}\@shortauthor包含A. Uthor

示例 3

\author{Abigail Uthor}
\shortauthor{A. Uthor}

与示例 2 类似,但没有\uppercase

示例 4

\shortauthor{A. Uthor}
\author{Abigail Uthor}

\@shortauthor就像在示例 1 中一样,因为by的重新定义\shortauthor被以下代码覆盖:\author

为什么是\uppercase编程错误?

显然,使用可选参数时的不同行为是错误的。但是,\@author用过的,而不是在存储时。\MakeUppercase无论如何都应该使用。

相关内容