如何在LaTeX中创建像\ title这样的命令?

时间:2010-05-14 12:08:30

标签: latex

我正在为LaTeX编写一个文档类,我希望它是通用的。在这个文档类中,我重新定义\maketitle命令以显示自定义标题页面,在这里我想显示一些信息,如标题,作者等,还有一些其他信息。以下是我显示标题的方式:

{\LARGE{\bf \@title}}\\

我想创建一个与\title\author类似的新命令,我该怎么做?

2 个答案:

答案 0 :(得分:19)

如果您查看latex.ltx,可以看到\title定义如下:

\def\title#1{\gdef\@title{#1}}
\def\@title{\@latex@error{No \noexpand\title given}\@ehc}

这些是低级TeX命令。 \title是一个命令,它重新定义\@title以扩展为\title的参数。在更现代的LaTeX命令中,您自己的定义可能如下所示:

\newcommand\foo[1]{\renewcommand\@foo{#1}}
\newcommand\@foo{\@latex@error{No \noexpand\foo given}\@ehc}

最好使用\PackageError\ClassError来显示错误消息。或者,如果您希望\foo是可选的,默认情况下为空:

\newcommand\foo[1]{\renewcommand\@foo{#1}}
\newcommand\@foo{}

如果这不在包内,则由于\makeatletter符号,您必须将其置于\makeatother@之间。

答案 1 :(得分:7)

以下是我在thesis.cls课程中使用的示例命令。它定义了一个新命令\university,用作\title\author命令,默认值等于“no university”。如果我在前导中不使用\university命令,则将使用默认值。

\def\@university{no university}
\newcommand{\university}[1]{
  \def\@university{#1}
}

然后,在\maketitle命令中,您可以使用以下内容:

\newcommand{\maketitle}{
  {\LARGE{\bf \@title}}\\
  {\small{\@university}}\\
}