本文目录:
- 题外话
- 长度单位
- 水平间距
- 正文段落
- 缩进
- 段间距
- 对齐方式
- 首字下沉效果
- 心形段落效果
- 后记
题外话
最近做了个小手术,昨晚一回到家就赶紧拿起了刘教授的书,LaTeX的学习进度耽搁了不少,罪过罪过。另,身体是革命的本钱,好好锻炼身体才是王道。
长度单位
作为一个排版软件,必定要精益求精,因此对长度的精确控制不可或缺。刘教授的书中,介绍了很多可用的长度单位,我感觉很乱也很杂,不知道是否要全部掌握,也不知全部掌握的意义何在,此处留个疑问。
TeX中可用的长度单位如下表。
单位名称 | 大小 |
---|---|
pt | point点,欧美传统排版单位 ,亦称磅 |
pc | pica,1 pc = 12 pt, 相当于四号字大小 |
dd | didot point,欧洲大陆使用,1157 dd = 1238 pt |
cc | cicero,欧洲大陆使用,1 cc = 12 dd |
in | inch,英寸,1 in = 72.27pt |
bp | big point,1 in = 72 bp |
cm | 厘米,1 in = 2.54 cm |
mm | 毫米 |
sp | scaled point, 最小的长度单位,1 pt = 65536 sp |
em | 与字号有关,相当于M的宽度,亦等于\quad的长度 |
ex | 与字号和字体有关,相当于x的高度 |
水平间距
命令\hspace{距离}
可以产生指定的水平间距,它可以产生随内容可伸缩的距离,即橡皮长度。橡皮长度的存在是为了分行时行末的对齐。我对此的理解是,因为LaTeX是一个非常优秀的自动排版软件,有些细节不需要我们过度关注,只要我们设置为橡皮长度,允许它可伸缩,它就会自动调节文字和标点等之间的距离以使得每一行等长并获得最佳的视觉效果。
橡皮长度的语法是<普通长度>plus<可伸长长度>minus<可缩短长度>
。比如,可写成如下形式:
\hspace{2em plus 1em minus 0.25em}
这样,水平间距的变化范围就是1.75em-3em,具体为多少LaTeX决定。一个特殊又实用的橡皮长度是\fill
,它可以从零开始无限延伸。这样的设定看似无用,实则好处多多,比如可以把几个内容均匀排在一行之中,如下图。
可以这样理解,每个
\fill
都是等阶的无穷大,两个在同一行时便会产生等分的效果。\hfill
是\hspace{\fill}
的缩写。而命令\stretch{倍数}
能改变\fill
的阶数,比如\stretch{2}
就相当于两倍的\fill
:和
\hfill
功能类似的,还有\hrulefill
和\dotfill
,只不过它们两个分别是用横线和点填充,很明显,这两个功能将挺好用。正文段落
缩进
-
中文:对于中文文档类,如ctexart,缩进的规则是每段缩进,并自动设置段落缩进为两个汉字宽。如果要临时禁用缩进,可以在段前使用
\noindent
命令。
-
西文:对于西文文档类,如article,每个章节的第一段是不缩进的。看清楚了,是每个章节(section)的第一段不缩进,其他段落还是缩进的。
段间距
段间距由\parskip
控制,其默认值是橡皮长度0pt plus 1pt
。在中文排版中常常使用:
\setlength\parskip{0pt}
把段间距定义为固定长度,禁止段落间距离伸长。
对齐方式
LaTeX提供了三个环境来排版不同对齐方式的文字,flushright
环境左对齐,flushleft
环境右对齐和center
环境居中。
首字下沉效果
经常在一些期刊中看到这样的效果,这次终于知道是怎样搞出来的了。使用lettrine
宏包,语法如下:
心形段落效果
shapepar
宏包提供了一些预定义的形状,可以方便地排出一些有趣地效果,比如下面这个心形图:
或者说,五角形:
还有其他很多形状,具体见这里。
后记
有个疑问,为什么排版西文时速度很快,使用ctexart排版中文速度非常慢,慢了不止一点两点。Knuth对算法玩得转,他开发的软件效率肯定好,ctex宏包是后人开发的,难道是因为代码效率问题吗?如果真是这样,那就太好了,那我也有机会为LaTeX的发展尽一份力了!