如何从样式文件中获取作者姓名和标题并将其放置在页眉内?

如何从样式文件中获取作者姓名和标题并将其放置在页眉内?

我正在尝试制作一个样式文件,其中所有前言命令都在样式文件中设置,除了需要在 .tex 文件中定义标题和作者姓名。样式文件将标题和作者姓名放入标题中。我使用的是答案中概述的方法这里,对于使用的情况fancyhdr。通过将以下几行放入我的序言中,这确实有效:

\title{My Title} 
\author{My Name}
\makeatletter
\let\Title\@title
\newcommand\Author{My Name}
\makeatother

这使我可以将以下内容放入我的样式文件中mystyle.sty

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead{}
\fancyhead[LE,LO]{\vspace{1pt}\textcolor{gray}{\Title }}
\fancyhead[RE,RO]{\vspace{1pt}{\Author}}

这样我就可以将标题和作者姓名放入页眉中。

功能很好,并给出了所需的结果,但我想将\makeatletter\let\Title\@title\newcommand\Author{My Name}和行\makeatother从 .tex 文件移动到 .sty 文件中。这可能吗?如果可以,该怎么做?(不需要完全依赖“fancyhdr”)

答案1

.sty文件中,不需要使用\makeatletter和,\makeatother因为@已经是一个字母。

如果你试图移动

\let\Title\@title

等放入.sty文件中,它无法保存标题,因为\title尚未设置。

相反,你可以使用 patch\maketitle来保存作者和标题,所以你必须写

\RequirePackage{etoolbox}
\pretocmd\maketitle{%
  \let\Title\@title%
  \let\Author\@author%
}{}

相关内容