文档类
一般情况下文档类的文件扩展名是.cls,当你在你的LaTex文件里写\documentclass{article}
的时候,你就引用了一个类文件article.cls
。LaTeX文档类的基础三大件是article,book和report。这三大类虽然是LaTeX不可动摇之基,但是不支持汉字排版。
构建文档类
所有的类文件在文件的起始部分,都应该包含与下面类似的两行。
\NeedsTeXFormat{LaTeX2e}
\ProvideClass{my_cv}[2020/01/01 My custom CV class]
命令\NeedsTeXFormat
告诉编译器这个宏包是属于LaTeX的哪个版本的。
命令\ProvidesClass
告诉编译器你的宏包一些信息。第一个参数应该与这个类的文件名一致,描述了这个宏包的名称。第二个参数是可选的,这个将出现在日志或者其他地方。这个描述必须以上述格式的日期开始,这个日期应该是这个宏包最近修改的日期。这将在检查是否有新的版本的时候用到。例如,如果你使用\documentclass{my_cv}[2020/06/07]
的时候,由于这个日期比宏包中的日期要晚,于是一个警告会被抛出,表明这个类已经过时了。
在文档类中加载包
\RequirePackge{packagename}
需要注意的是,我们应该使用\RequirePackage
而不是通常的\usepackage
命令,因为这是在一个类文件中。因为在其他宏包使用同样的命令,\RequirePackage可以
确保每个宏包被加载一次。
在文档类中定义新命令
\newcommand{\commandname}[参数个数]{%
命令内容%
}
文档类与包的关系
文档类与宏包的共同点
- 两者都是由LaTeX代码构成的纯文本文件
- 都能够进行宏的定义并对最终生成的pdf文档产生影响
一般情况下,一些宏定义的集合要被写成文档类还是宏包主要取决于这些宏定义是否依赖于某些具体的文档类。
例如说,我需要使用LaTeX撰写自己的毕业论文,我根据学校的要求做好了一个模板(就是一些LaTeX宏的定义的集合),这个模板只有在我撰写毕业论文的时候才用得上,那么它应该被写成文档类。但是如果说我在写模板的时候要完成一项操作:把脚注的编号加上一个圆圈,这项操作的宏代码一旦完成可以不依赖文档类在以后的文档撰写工作中也能用得上,这种宏定义就可以被写成宏包。
一般用户撰写中文文档时,都会使用ctexart的文档类。在很长时间里,有人是用包来做汉字输出的事的,比如CJK包,xeCJK包和LuaTeX-ja。但是如果是期刊投稿,对方已经提供了模板文件,那么显然无法再使用这个文档类来获得中文支持,这个时候可以导入宏包ctex来输入中文字符。两种手段都能够获得中文支持,但是一个利用的是文档类,一个利用的是宏包。
总结一下:类与宏包没有太大的区别,一般模板文件都是类,而与具体类不相关的通用型代码都会被写成宏包。