含有一个参数的命令定义方法已在《 一种LaTeX类文件 (cls) 与主文件 (tex)的参数传递方法》详细讨论了。但在有些情况下,我们需要将一些意义相关的参数揉和在一起,用一个命令统一来处理,而不是分别对每个参数都定义一个命令。这就像我们日常生活会将一些类型相同的书籍归类在同一个文件夹下面一样。这样做不仅方便了cls设计者的维护工作,也方便了cls的使用者,减轻了他们的心理负担。
1 代码举例
比如,我们要定义一个命令\major
,它要接收三个参数,分别为专业名称这几个字的长度 (majorlen)、中文专业名称 (major)、英文专业名称 (majoreng)。当然,本文的方法不仅仅适用于3个参数,对所有含有
≥2
个参数的命令,都适用。在cls中的代码如下:
%-----学科专业 (比如,计算机软件与理论)名称,含英文
\newcommand{\@majorlen}{8em}
\newcommand{\@major}{}
\newcommand{\@majoreng}{}
\newcommand{\major}[3][8em]{
\renewcommand{\@majorlen}{#1}
\renewcommand{\@major}{#2}
\renewcommand{\@majoreng}{#3}
}
那么如何在cls文件中提取自己需要的参数信息呢?在《 一种LaTeX类文件 (cls) 与主文件 (tex)的参数传递方法》中已经做了详细的讲解。在此重复一下,比如,我们要使用英文专业名称,在cls中的代码可以为:
\begin{tabular}{ll}
Title: & \@titleeng\\
Major: & \@majoreng\\
Name: & \@authoreng\\
Supervisor: & \@advisortitleeng\,\, \@advisornameeng
\end{tabular}
2 命令\major
在主文件tex中的使用举例
为了验证在cls中定义的命令\major
能否达到想要的效果,在tex文件中使用该命令的例子如下:
\begin{document}
...
\major[12em]{计算机软件与理论}{Computer Software and Theory}
...
\end{document}
运行结果为:
达到了我们预期的效果。