定义类似于 \title、\author 和 \date 的选项

定义类似于 \title、\author 和 \date 的选项

我正在基于 创建自己的课程article,我想添加一个参数,subtitle让我的课程用户可以设置类似于和title,例如,authordate

\documentclass{myclass}
\title{My title} % This sets `\@title` to `My title` somehow.
\subtitle{Some subtitle} % I want this to set `\@subtitle` to `Some subtitle`.

\begin{document}
\makebanner % this command uses \@title and \@subtitle under the hood
\end{document}

查看源代码article.cls,该title命令似乎定义如下。

\global\let\@title\@empty
\global\let\title\relax

这对我来说真的没有意义,所以我认为我遗漏了一些东西。此外,添加\global\let\@subtitle\@empty\global\let\subtitle\relax不起作用。正确的做法是什么?怎么article.cls做?

答案1

ltsect.dtxLaTeX内核中做出如下定义:

\DeclareRobustCommand\title[1]{\gdef\@title{#1}}
\DeclareRobustCommand*\author[1]{\gdef\@author{#1}}
\DeclareRobustCommand*\date[1]{\gdef\@date{#1}}
\def\@title{\@latex@error{No \noexpand\title given}\@ehc}
\def\@author{\@latex@warning@no@line{No \noexpand\author given}}
\def\@date{\today}

标准类(如article.cls)不定义这些命令,它们使用现有的定义。您看到的“定义”不是它们的定义,只是重新定义,使它们在\maketitle使用后不可用。

因此,您可以使用的定义是:

\let\@subtitle\@empty % default value
\protected\def\subtitle#1{\gdef\@subtitle{#1}}

\protected\def结果与 类似\DeclareRobustCommand,选择你喜欢的)

相关内容