2010-05-14 502 views
14

我正在为LaTeX编写一个文档类,我希望它是通用的。在这个文档类中,我重新定义了\maketitle命令来显示一个自定义标题页,在这里我想显示一些信息,如标题,作者等,但也包括其他一些信息。下面是我如何显示标题:如何在LaTeX中创建像 title这样的命令?

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

我想创建一个新的命令,该命令的工作方式类似于\title\author,我该怎么办呢?

回答

14

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

\def\title#1{\gdef\@title{#1}} 
\def\@title{\@[email protected]{No \noexpand\title given}\@ehc} 

这些都是低层次的TeX命令。 \title是一个重新定义\@title以扩展到\title的参数的命令。在更现代的LaTeX命令自己的定义可能是这样的:

\newcommand\foo[1]{\renewcommand\@foo{#1}} 
\newcommand\@foo{\@[email protected]{No \noexpand\foo given}\@ehc} 

这是更好地使用\PackageError\ClassError显示错误消息。或者,如果你想\foo是可选的,默认情况下是空的:

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

如果这不是一个包里面,你必须把它因为@迹象\makeatletter\makeatother之间。

7

以下是我在thesis.cls类中使用的示例命令。它定义了一个新命令\university,其作为\title\author命令,默认值等于“no university”。如果我在序言中没有使用\university命令,则会使用默认值。

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

然后,在\maketitle命令,你可以有这样的: