如何在 maketitle 之后使用@author、@date 和 @title?

如何在 maketitle 之后使用@author、@date 和 @title?

我想在使用 的文档中使用 fancyhdr 时包含作者、日期和标题的值\maketitle。在 Google 上搜索后,我发现@date等可以访问文档前言中设置的日期等值。它工作正常,假如 \maketitle未使用。这是一个最小的工作示例:

\documentclass{article}

\title{Things about Stuff}
\author{Someone}
\date{Somewhen}

\begin{document}

%\maketitle  %Toggle comment and:

Now you see them, now you don't.

\makeatletter
\@date
\@author
\@title
\makeatother

\end{document}

那么,1)为什么使用会\maketitle导致后续调用@date等时没有任何结果,2)如何\date在使用之后访问等的值\maketitle

答案1

\documentclass{article}

\makeatletter
\title{Things about Stuff}\let\Title\@title
\author{Someone}          \let\Author\@author
\date{Somewhen}           \let\Date\@date
\makeatother

\begin{document}

\maketitle 

Now you see them
\Date
\Author
\Title

\end{document}

答案2

即使在调用之后,仍可使用titling提供 的包。\thedate\theauthor\thetitle\maketitle

它就像添加包一样简单,而不是调用\@date你 call \thedate(这也避免了要求\makeatletterand \makeatother)。

\documentclass{article}

\usepackage{titling}

\title{Things about Stuff}
\author{Someone}
\date{Somewhen}

\begin{document}

\maketitle

Now you still see them.

\thedate
\theauthor
\thetitle

\end{document}

答案3

在我发布这个问题之前检查了这个网站,我看到了这个先前的问题答案是“使用标题包”。这似乎有效。但我还想出了

\newcommand{\setdocdata}{
\title{Things about Stuff}
\author{Someone} 
\date{Somewhen}
}
\setdocdata{}

在我的序言中,然后使用

\maketitle\setdocdata

它也有效,并且可能会吸引那些喜欢使用尽可能少的包的人。

(我还是想知道为什么,出于对小狗的爱,\maketitle被编码为空白日期等值。)

相关内容