我正在为LaTeX编写一个文档类,我希望它是通用的。在这个文档类中,我重新定义\maketitle
命令以显示自定义标题页面,在这里我想显示一些信息,如标题,作者等,还有一些其他信息。以下是我显示标题的方式:
{\LARGE{\bf \@title}}\\
我想创建一个与\title
或\author
类似的新命令,我该怎么做?
答案 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}}\\
}