本文目錄:
- 題外話
- 長度單位
- 水平間距
- 正文段落
- 縮進
- 段間距
- 對齊方式
- 首字下沉效果
- 心形段落效果
- 后記
題外話
最近做了個小手術,昨晚一回到家就趕緊拿起了劉教授的書,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的發展盡一份力了!