我对 LaTeX 的了解仅限于制作简单文档和修改文档布局的简单特征。现在,我正在为一种文档创建一个类,以便不必在每个文档中复制大量前言,但我不知道如何实现我想要的功能。首先,该类继承自该类article
,使用 otf 字体,因此我使用 XeLaTeX 进行编译,并使用 fancyhdr 包。
我想指定文件fancyhdr
内的标题,.cls
因为它们都具有相同的样式,所以我想在文件中包含.cls
以下行:
\lhead[<even output>]{<odd output>}
\chead[<even output>]{<odd output>}
\rhead[<even output>]{<odd output>}
但是,里面的内容必须是文件中指定的参数.tex
,例如文档的标题、作者的姓名或其他内容。我该如何将这类参数传递给文件.cls
。如果能给出一个通用的解决方案(为了学习 LaTeX,除了能够做我想做的事情),我也会非常感激。
非常感谢。
编辑:
从文章类文件中可以看出,article.cls
上述参数可以通过 等方式调用\@author
。Christian\@title
的以下回答回答了我在评论中提出的问题,并展示了如何在类文件中创建可以从文件中定义的不同参数.tex
。
答案1
班上
\ProvidesClass{mysuperclass}
\LoadClass{article}
\RequirePackage{xkeyval}%
\def\docauthorname{A. U. Thor}%
\def\docname{\jobname.tex}%
\def\docdate{\today}%
\define@key{mysuperclass.cls}{docdate}[\today]{%
\def\docdate{#1}%
}
\define@key{mysuperclass.cls}{author}[A. U. Thor]{%
\def\docauthorname{#1}%
}
\define@key{mysuperclass.cls}{docname}[]{%
\def\docname{#1}%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ExecuteOptionsX{author,docdate}
\ProcessOptionsX%
\RequirePackage{fancyhdr}
\AtBeginDocument{%
\lhead[\docauthorname]{\docauthorname}%
\chead[\docdate]{\docdate}%
\rhead[]{\docname}%
\pagestyle{fancy}%
}
\endinput
类驱动程序文件:
\documentclass[docdate=1/1/2016,author=Me,docname=yelostfile]{mysuperclass}
\usepackage{blindtext}
\begin{document}
\blindtext[15]
\end{document}