我正在为LaTeX编写一个文档类,我希望它是通用的。在这个文档类中,我重新定义了\maketitle
命令来显示一个自定义标题页,在这里我想显示一些信息,如标题,作者等,但也包括其他一些信息。下面是我如何显示标题:如何在LaTeX中创建像 title这样的命令?
{\LARGE{\bf \@title}}\\
我想创建一个新的命令,该命令的工作方式类似于\title
或\author
,我该怎么办呢?
我正在为LaTeX编写一个文档类,我希望它是通用的。在这个文档类中,我重新定义了\maketitle
命令来显示一个自定义标题页,在这里我想显示一些信息,如标题,作者等,但也包括其他一些信息。下面是我如何显示标题:如何在LaTeX中创建像 title这样的命令?
{\LARGE{\bf \@title}}\\
我想创建一个新的命令,该命令的工作方式类似于\title
或\author
,我该怎么办呢?
如果你看看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
之间。
以下是我在thesis.cls
类中使用的示例命令。它定义了一个新命令\university
,其作为\title
或\author
命令,默认值等于“no university”。如果我在序言中没有使用\university
命令,则会使用默认值。
\def\@university{no university}
\newcommand{\university}[1]{
\def\@university{#1}
}
然后,在\maketitle
命令,你可以有这样的: