我正在尝试制作一个样式文件,其中所有前言命令都在样式文件中设置,除了需要在 .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%
}{}