我想在使用 的文档中使用 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
(这也避免了要求\makeatletter
and \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
被编码为空白日期等值。)