如何将标题(或其他参数)传递给类文件

如何将标题(或其他参数)传递给类文件

我对 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}

相关内容