我正在尝试学习如何编写类文件。我知道这不会很容易,但我决心要学习这项技能。我所做的是选择一个简单的文档来创建,即个人信头。我需要做的是在顶部放一个“头”。因此,我用 LaTeX 创建了它,并寻找一种方法将其添加到信件类中,以便任何人都可以使用它(这自然是创建信头类的目的)。因此,要在“头”中添加的内容,例如姓名、职位、办公地址、家庭地址等,都是在编写信件时添加的。因此,我创建了一个命令 \makehead,该命令有望在纸张顶部创建两个小页面,并以相同的方式添加我在使用 LaTeX 创建的示例中添加的所有详细信息。然后我尝试使用这个类文件构建一封信,但失败并出现错误:@undeclaredcolor 的参数有一个额外的 }。 \par 后跟来自 tex 文件的一行。 cls 文件相当简单,如下所示:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mylh}[2020/06/26 Class file for my letterhead]
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{letter}}
\ProcessOptions\relax
\LoadClass{letter}[2014/09/29 v1.4h Standard LaTeX document class]
\RequirePackage{color}
\RequirePackage{fontspec}
\RequirePackage{polyglossia,xltxtra}
\definecolor{brown}{rgb}{0.7,0.2,0.2}
\newcommand{\makehead}[5]{%
\begin{minipage}{9cm}
\textsf{#1,\\ #2, \\ \\ #3, \\ }
\end{minipage}
\hfill\begin{minipage}{5.7cm}
\vspace*{40pt}\raggedleft{\huge\textsf{\textbf{\color[red}\MakeUpperCase #4}}\\
\vspace*{-8pt}\textcolor{black}{\small{\textsf{#5}}}
\end{minipage}}
我想知道我的方法本身是否正确,语法是否正确。我无法理解为什么在定义了颜色时错误会显示未声明的颜色,以及为什么它会抱怨多余的右括号。
根据 David Carlisle 的建议,我正在使用此类附加一个示例 tex 文件:
\documentclass{mylh}
\usepackage{fontspec}
\usepackage{polyglossia,xltxtra}
\setmainfont{FreeSerif}
\setsansfont{FreeSans}
\begin{document}
\makehead{{blah}{address1\\ address2,\\ address3}{Address1,\\ Address2,\\ Address3}{My Name}{all. my. degrees.}}
\begin{letter}
\end{letter}
当我编译它时,我得到错误:参数失控?{{blah}{address1\ address2,\ address3}{Address1,\ Address2,\ Addr\ETC。!段落在 \text@command 完成之前结束。 \par 并且没有文档。我希望这有助于识别错误。我已经纠正了 Sigur 之前指出的左括号错误。
再次感谢您。\end{document}
提前感谢您提供的任何解决方案的线索。