我正在向期刊投稿一篇论文。在编辑提供的 .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
无论如何都应该使用。