在排版领域,LaTeX 凭借强大功能和高度定制性备受专业人士青睐。用户随着使用的深入,挖掘 LaTeX 潜力、打造个性化排版效果,宏开发是关键技能。今天,就带大家研读《LaTeX 宏包开发入门》,探索 LaTeX 宏包开发的奥秘,这是一个未完成的文档,也是我们工作室约稿首发,希望以后把这个完整手册发布掉。
LaTeX 是基于 TeX 排版程序的成功格式,追求内容与格式分离。它扩展性超强,宏包和文档类架构完善。在 TeX Live 2015 中,TeX/laTeX 目录下有超 2000 个子目录,4000 多个宏包文件,600 多个文档类文件 ,还有大量辅助文件。众多字体描述文件为用户提供丰富字体选择。但以往相关书籍多面向使用者,对开发者支持不足,本文档正好填补这一空白。
\newcommand\foo [2]{ Test #1 and #2.}
能定义带参数命令,\foo{A}{B}
就会输出“Test A and B.”。带可选参数的命令也不在话下,如\newcommand\baz [2][ TeXt]{Test #1 and #2.}
,使用时\baz{B}
默认第一个参数为“TeXt” 。它还会检查命令是否已定义,防止冲突。\renewcommand\foo [4]{ Test #1 and #2 and #3 and #4.}
可改变命令参数个数、默认值等。不过使用时要确保命令已存在,不然会报错。LaTeX 用\begin{...}
和\end{...}
定义环境,\newenvironment
用于新环境定义。比如\newenvironment{foo }[3][ TeXt]{<begin >}{<end >}
,<begin >
和<end >
分别是环境开头和结尾执行的代码。定义环境的命令会检查环境定义情况,确保正确使用。
宏包和文档类开头声明很重要。\ProvidesPackage{dummypkg }[2016/01/01 v0.1 dummy package]
声明宏包,\ProvidesClass{dummycls }[2016/01/01 v0.1 dummy class]
声明文档类。声明信息要准确,否则会引发警告。
\DeclareOption
定义选项,\DeclareOption*
处理未定义选项。比如在宏包中可以定义\DeclareOption{one}{\def\option{Option 1}}
,根据不同选项执行相应操作。\PassOptionsToPackage
和\PassOptionsToClass
可将选项传递给其他宏包或文档类。\ProcessOptions
必不可少,它能按规则处理选项。有带星号和不带星号两个版本,处理策略不同,使用时要根据实际情况选择。\ExecuteOptions
可直接执行某些选项,相当于设置缺省选项。\RequirePackageWithOptions
和\LoadClassWithOptions
能按当前选项调用,方便又实用。\define@key
定义键的处理方式,\setkeys
传递键值对。LaTeX 的计数器是个强大工具。用\newcounter
定义,\setcounter
设置值,\addtocounter
增加数值 。计数器间可关联,上级步进能使下级归零。还能通过重定义\thefoo
定制计数器显示格式。
\chardef
和\mathchardef
可定义数值常数。\newcount
分配寄存器编号。赋值和计算操作丰富,有加、减、乘、除等运算,但要注意数值范围,避免越界报错。\number
、\romannumeral
和\the
等命令可输出数值,输出形式多样,满足不同需求。\newlength
定义长度变量,\setlength
设置值,\addtolength
调整长度。\mag
命令可全局缩放长度。\dimendef
和\newdimen
定义命令,计算方式也相似。\skipdef
和\newskip
定义,计算规则特殊,在排版中作用重大。\baselineskip
控制,行间隙计算涉及多个参数。\lineskiplimit
和\lineskip
在特定情况发挥作用,还有一些特殊命令可调整行间隙。\parskip
、行间公式间距、图表浮动体间距等,它们与字号相关,对排版美观很重要。水平距离和缩进控制也有很多门道。像\leftskip
、\rightskip
等命令可调整段落水平间距,不同环境和元素的水平距离设置各有特点。
合理的断行和断页控制能让文档排版更美观、逻辑更清晰。虽然文档未详细介绍,但这也是排版控制的重要方面。
LaTeX3 致力于实现用户界面、设计、编程三层分离。它修改了字符的 catcode,规范了变量和宏命令格式。变量记号和宏命令格式都有严格规范,宏定义方式多样,条件判断更方便,变量类型丰富,键值对功能强大,还能更高效地处理宏包和文档类选项。
通过这份文档,我们系统学习了 LaTeX 宏包开发知识。从命令和环境定义,到宏包架构、变量使用和排版控制,再到 LaTeX3 的新特性,内容丰富实用。希望大家能将所学运用到实际开发中,创造出更个性化、更专业的排版效果。如果在学习或实践中有任何问题,欢迎在评论区留言,我们一起探讨进步!
PDF下载:myclsguide.pdf