; (7(; / /$7(; 中文排版之胡言乱语
作者:lyanry
Email: lyanry@gmail.com
§1 ; (7(;文稿基本格式 · 1 ·
§1 ; (7(;文稿基本格式
文稿(即用于排版的源文件)包含两部分内容:一部分是正文,也就是需要排版输出的
内容;另一部分是排版控制命令,用于控制版面式样、字体、字形等格式。 7(;文稿通常
以 WH[为文件扩展名。
排版控制命令是以反斜线“ \”开头的字串。有一些排版控制命令带有一些参数,由参
数来修改其默认行为。排版控制命令的参数有些属于可省略的,有些属于不可省略的。在排
版控制命令中,可省略的参数(若不提供这些参数, /$7(;采用默认参数)置于方括号中,不
可省略的参数(必须要提供的参数)置于花括号中。具体格式可
示如下:
\命令名[可省略的参数]{不可省略的参数}
; (7(; / /$7(;的纯西文的文稿基本格式如下:
\documentclass[11pt,a4paper]{article}
\begin{document}
Hello World!
\end{document}
上面的文稿中,排版控制命令 \GRFXPHQWFODVV的可忽略参数告诉 /$7(;系统,用
户使用的是 $�纸( D�SDSHU ),正文字体为 ��SW,接近中文五号字;不可忽略参数告
诉 /$7(;,用户要撰写一篇论文,这样 /$7(;系统便会为用户准备好论文排版的默认环
境。除了论文类别, /$7(;还提供了书籍( ERRN )、书信( OHWWHU )、
( UHSRUW )等。
排版控制命令 \EHJLQ^GRFXPHQW`与 \HQG^GRFXPHQW`表示文稿内容的起始与终止。
在 \GRFXPHQWFODVV与 \EHJLQ^GRFXPHQW`之间的区域称为导言区,可在此区域内放置
一些可影响文档整体排版样式的控制命令。
; (7(; / /$7(;的中文文稿与西文文稿没什么区别,仅仅是文稿内容中使用的是中文,
如下:
\documentclass[11pt,a4paper]{article}
\begin{document}
世界,你好!
\end{document}
§2 ; (7(;中文文档处理 · 2 ·
§2 ; (7(;中文文档处理
对; (7(; / /$7(;可使用 [HODWH[命令处理生成 SGI文档:
$ xelatex filename.tex
现在,假定上一节中组为示例所列举的中文 ; (7(; / /$7(;文稿的文件名为 H[DP�
SOH�WH[,使用 [HODWH[命令处理该文稿可以生成 H[DPSOH�SGI文档,但是使用 SGI阅读
器打开 H[DPSOH�SGI,就会发现这是一个空白文档,而没有如我们所预期的那样会在文档
中显示出“世界,你好!”这是因为 ; (7(; / /$7(;并没有为中文文稿指定默认字体,这需
要我们自行设定。这也意味着一个很重要的问题: ; (7(;项目解决了 7(;国际化的问题,
而我们要解决 ; (7(;本地化问题。但是目前,国内对 ; (7(;很了解的人太少了,还未有人
提出通用的 ; (7(;中文解决
,因此要使用 ; (7(;排出符合中文习惯的文章,就需要熟
悉一些; (7(; / /$7(;宏包与排版控制命令。
宏包 IRQWVSHF可与; (7(; //$7(;配合使用可实现在; (7(; //$7(;文稿中使用系统自
带字体的功能。在 ; (7(; / /$7(;文稿中的导言区,使用 \XVHSDFNDJH指令可加载指定宏
包。加载 IRQWVSHF宏包后,使用其提供的 \VHWPDLQIRQW命令可设定文稿正文中的中文字
体。对上一节中的中文; (7(; / /$7(;文稿 H[DPSOH�WH[修改如下:
\documentclass[11pt,a4paper]{article}
\usepackage{fontspec}
\setmainfont{Adobe Song Std}
\begin{document}
世界,你好!
\end{document}
字体设置命令 \VHWPDLQIRQW将$GREH 6RQJ 6WG指定为文档正文默认字体。 $GREH
6RQJ 6WG是$GREH发布$GREH 5HDGHU ���时附带的一款中文宋体,另外还有一款中文
黑体 $GREH +HL7L 6WG,它们都是免费字体,可以自由使用。如果你没有装这两款字体,
可以使用 IF�OLVW命令查看系统已安装的字体名录,如下:
$ fc-list :lang=zh-cn
文鼎PL简报宋,AR PL SungtiL GB:style=Regular
文鼎PL中楷Uni,AR PL ZenKai Uni:style=Medium
... ...
将 IF�OLVW输出结果中的字体名填到 \VHWPDLQIRQW命令中,即可使得 ; (7(; / /$7(;在
系统字体目录下找到相应字体并将其嵌入到所生成的 SGI文档中。虽然可以将:LQGRZV中
文字体挪到 /LQX[下使用,但是现在许多自由抑或免费的中文字体已经可以满足中文排版
需要了,因此,我们应当尽量不要再去那些私权字体。
§2 ; (7(;中文文档处理 · 3 ·
现在,使用 [HODWH[对修改后的 H[DPSOH�WH[进行处理,可以生成以中文五号宋体显
示“世界,你好!”的单页 SGI文档。
下面,继续进行中文字体的设置,对 H[DPSOH�WH[修改如下:
\documentclass[11pt,a4paper]{article}
\usepackage{fontspec}
\setmainfont[BoldFont=Adobe Heiti Std]{Adobe Song Std}
\setsansfont[BoldFont=Adobe Heiti Std]{AR PL KaitiM GB}
\setmonofont{Bitstream Vera Sans Mono}
\begin{document}
世界,你好!
\end{document}
在解释修改后的 H[DPSOH�WH[所发生的变化之前,我们应当了解一下有关字体的一些
常识。
西方国家的字母体系可分为两大字族( )RQW )DPLO\ ): 6HULI与 6DQV 6HULI。除此
之外,还有一种打印机字体虽然也是 6DQV 6HULI,但由于它是等距字,所以又独立出一
个 7\SHZULWHU字族。
6HULI,中文常译为“衬线”, 6DQV 6HULI则译为“无衬线”。衬线字体是源于古代
在一些岩石或金属上刻字时,雕刻刀在笔画的起落处要有入刀与退刀的讲究,不然会损伤刻
刀。无衬线字体,是相对于衬线字体而言的。对于西文的衬线字体与无衬线字体的直观意象
可见:
1 N
中文的字族可分为:隶、楷、行、宋、仿宋、黑、幼圆等,要与西文字族相对应(计算
机是西方文明的产物,汗),那么宋、仿宋都可以看作是衬线字体,而楷体、黑体、幼圆可
以看作是非衬线字体。
一旦理解了这些字体常识,对于 H[DPSOH�WH[中新增加的那几条设置中文字体的控制
命令应该明白个三五分。譬如, \VHWVDQVIRQW指令是设定无衬线中文字体的,我们在 H[�
DPSOH�WH[中使用该指令将无衬线字体设置为楷体$5 3/ .DLWL0 *%。 \VHWPDLQIRQW是
设置衬线字体的,因为 ; (7(;将衬线字体视为文档默认字体族,而 ; (7(;之所以如此,
是因为在实践有一个结论:衬线字体作为文章的正文字体可使读者长时间阅读文章视觉
不疲倦。非衬线字体在文章中适合作为标题出现,因为它较衬线字体更为醒目,但如果用
无衬线字体作为文章的正文字体,长时间阅读,很容易出现视觉疲劳。 IRQWVSHF宏包还
提供了一个与 \VHWPDLQIRQW等价的命令 \VHWURPDQIRQW,这完全是出于历史的缘故,
因为 5RPDQ字体在西方一向被认识是文章正文字体的正统,最有名的是 7LPHV 1HZ
5RPDQ。
§2 ; (7(;中文文档处理 · 4 ·
下面讲一下 \VHWPDLQIRQW与 \VHWVDQVIRQW指令中的可省略参数 %ROG)RQW的用法,
这个参数是用来指定衬线与非衬线字体在粗体( EROG )状态下所使用的字体,这是因为字体
可以在常态下经“加粗”后所得到的实际上是另一种字体。对于任意一款计算机字体而言,
它不是一个你想怎么变就可以怎么变的东西,如果一款字体在
的时候就不是粗体,那
么是不可能把它变成粗体的,只有用一种设计好的粗体去替换。虽然有一些办法可以让一
些字体经过微量平移并叠合后可以得到类似“粗体”的效果,但那是“穷人的粗体”,显示
效果很差的。所以,我们不应该把你正在用的这个“宋体”变成“粗”宋体,而必须去找专
门的粗宋体来用。如果找不到粗宋体,那就用黑体来代替,本文的排版就是这么做的,采
用$GREH +HLWL 6WG来作为衬线与非衬线的粗体。
字体设置完成后,就要考虑中文断行的问题。还是那句话, ; (7(;只致力于解决国际
化问题,并不考虑本地化,如果说考虑了,那也只是默认考虑了西文本地化。西文的断行问
题是根据单词之间的空格来决定一行文本中在哪个单词的尾部断开产生新行的,对中文而
言,这种方法就不适用了,因为中文不是以空格来划分单词的。但不要以为 ; (7(;不能很
好的处理中文断行,在 ; (7(;内部已有人为中文断行写了一些规则,我们可以直接使用它
们,可在; (7(; / /$7(;的导言区中添加以下指令:
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt
上述指令中,\XeTeXlinebreaklocale指定使用中文断行规则,XeTeXlinebreakskip可以
让; (7(;处理中文断行时多一点点自适应调整的空间。
2ND\� 事实上,讲到这里, ; (7(; / /$7(; 的用法基本已讲述完毕,剩下内容就
是 7(; / /$7(;的使用了,它们的许多教程都基本适用 ; (7(; / /$7(;,只是有关 &-.那
部分不适用。
§3 论文版式 · 5 ·
§3 论文版式
一篇论文应该包括两个层次的含义:内容与表现,前者是指文章作者用来表达自己思想
的文字、图片、表格、公式及整个文章的章节段落结构等,后者则是指论文页面大小、边
距、各种字体、字号等。一篇排版良好的论文应当是内容与表现分离的。本节主要介绍如何
使用; (7(; / /$7(;定义论文的表现。
§3.1 准备纸张
首先准备纸张,在\GRFXPHQWFODVV的可省略参数中,$�纸用D�SDSHU表示,$�纸
用 D�SDSHU,其他型号用纸的表示类推便是。如果在 \GRFXPHQWFODVV指令中未指定纸张
型号,则; (7(; / /$7(;默认用纸是美国信纸(14× 8.5in)。
纸张准备好了,然后就是设置基本字体尺寸。一般而言,中文小四号字用像素点为单
位表示为 ��SW,中文五号字表示为 ��SW。基本字体尺寸的设定非常重要,譬如行距、段
落缩进、页芯等参数, ; (7(; / /$7(;会基于基本字体尺寸给出相应的默认值。基本字体
尺寸也是在 \GRFXPHQWFODVV指令中作为其可省略参数进行设定的,如果未设定该参数,
则; (7(; / /$7(;会以 ��SW为默认值。
现在,若要在一张$�纸上以 ��SW为基本字体尺寸写一篇论文, \GRFXPHQWFODVV指
令可写为:
\documentclass[a4paper,11pt]{article}
; (7(; //$7(;默认是纵向模式排版,要改为横向排版,可添加 \GRFXPHQWFODVV命令
的可省略参数 ODQGVFDSH:
\documentclass[a4paper,11pt,landscape]{article}
\GRFXPHQWFODVV还有一些常用的可省略参数,比如 WLWOHSDJH可以让文章的标题
单独占据一页, QRWLWOHSDJH可使标题与文章正文排在同一页面。又比如 GUDIW可以控
制 ; (7(; / /$7(;在超出页面宽度限制的文本行右端显示一个粗黑条,提醒用户注意,
而 ILQDO的作用恰好相反,无论文本行超出边界多少,也不显示粗黑条,但; (7(; //$7(;在
编译 7(;文档时,会给出警告。
§3.2 设置页面边距
下面谈谈页边距的设置。06 :RUG默认的页面边距为:
• 上边距=下边距= 1in (2.54cm)
• 左边距=右边距= 1.25in (3.17cm)
§3 论文版式 · 6 ·
使用宏包 JHRPHWU\可以进行; (7(; / /$7(;文稿的页面边距设置:
\usepackage[top=1in,bottom=1in,left=1.25in,right=1.25in]{geometry}
实际上这样设置的页面边距极不美观,尤其是左右对称的页边距没有考虑装订的需要,
另外上边距如果加上页眉或就显得过窄。因此,要是真的很注重页面美观的话还是自己去调
整一下,比如我喜欢将页边距设置下面这样:
\usepackage[top=1.2in,bottom=1.2in,left=1.2in,right=1in]{geometry}
将左边距设置的比右边距大一些,主要是考虑装订的需要,但是在实际打印时有单面打
印与双面打印模式,在双面打印时,应该是奇数页面的左边距比右边距大一些,在偶数页则
相反。 ; (7(; / /$7(;考虑到了这一点,在偶数页面中会自动将左、右边距切换。指定文稿
单双页面的参数有 RQHVLGH与 WZRVLGH,它们都是 \GRFXPHQWFODVV的可省略参数,如果
文稿类别是论文,默认是单面打印模式。
如果相对 JHRPHWU\宏包的使用进行更详细的了解,请参考文献[?]
§3.3 章节标题
可使用 WLWOHVHF宏包设置章节标题。在引入 WLWOHVHF宏包时,可以指定一些格式选项,
比如:
\usepackage[center,pagestyles]{titlesec}
其中 FHQWHU可使标题居中,还可设为 UDJJHGOHIW (居左,默认), UDJJHGULJKW (居
右)。 SDJHVW\OHV是申明后面要使用 WLWOHVHF宏包自定义页面样式(在下一节会讲)。
标题由标签+标题内容构成,其格式通常在 ; (7(; / /$7(;文稿的导言区中设置。要设
置论文中的节标题格式,可用 WLWOHIRUPDW指令,用法如下:
\titleformat{command}[shape]{format}{label}{sep}{before}[after]
其中各参数含义如下:
• FRPPDQG是要重新定义的各种标题命令,比如 \VHFWLRQ、 \VXEVHFWLRQ,还有更
多的,在后文中讲书籍排版时再谈;
• VKDSH 是用来设定段落形状的,可选的参数有 KDQJ 、 EORFN 、 GLVSOD\ 等,详
见 WLWOHVHF文档,位于:
$TEXLIVE/$VERSION/texmf-dist/doc/latex/titlesec
• IRUPDW用于定义标题外观,比如使标题居中、字体加粗等;
§3 论文版式 · 7 ·
• ODEHO用于定义定义标题的标签,就是标题内容前面的标号;
• VHS定义标题的标签与标题内容之间的间隔距离;
• EHIRUH用于在标题内容前再加些内容;
• DIWHU用于在标题内容后再加些内容;
本文排版所用节标题分为两级,其格式采用以下命令设置:
\titleformat{\section}{\centering\Large\bfseries}{\S\,\thesection}{1em}{}
\titleformat{\subsection}{\large\bfseries}{\S\,\thesubsection}{1em}{}
其中, VKDSH 、 EHIRUH 、 DIWHU 参数都被省略掉了。 IRUPDW 参数将 VHFWLRQ 格
式设置为居中( \FHQWHULQJ )、字号为 \/DUJH ,字体被加粗显示 \EIVHULHV ;在设
置 VXEVHFWLRQ格式,未采用居中,而是采用默认的居左,另外将标题的字号也降了一
级( \ODUJH)。 ODEHO参数将标题的标签设置为以“§”为前缀+标题序号。 VHS参数设
置标签与标题内容之间以一个字(1em)的宽度为间隔。
§3.4 页眉与页脚
这一节讲怎样使用 WLWOHVHF宏包设置页眉、页脚。下面的命令在 ; (7(; / /$7(;导言区
定义了一个新的页面样式,并使用该样式:
\newpagestyle{main}{
\sethead{\small\S\,\thesection\quad\sectiontitle}{}{$\cdot$~\thepage~$\cdot$}
\setfoot{}{}{}\headrule}
\pagestyle{main}
其中 \VHWKHDG命令设置页眉,用法为:
\sethead[偶数页左页眉][偶数页中页眉][偶数页右页眉]
{奇数页左页眉}{奇数页中页眉}{奇数页右页眉}
单面打印模式只要给出奇数页的设置即可,双面模式则需要将左、右页眉做个调换。上
面给出的例子是单面模式的。 \setfoot指令用法与 \sethead用法相似。
上面的页眉页脚设置示例中,\headrule指令可画页眉线,默认宽度是 0.4pt,如果对该
宽度不满意,可使用下面命令重新设置其宽度:
\setheadrule{宽度值}
上面的页眉设置示例的排版效果即本文档页眉效果。
§3 论文版式 · 8 ·
§3.5 小结
以上讲述了有关论文文稿的纸张准备、页边距设置、章节标题以及页眉页脚设置等内
容,其中有些 ; (7(; / /$7(;命令对于初学者而言,也许暂时不能领会其作用,这没有关
系,可以先建立一个大致意象,待日后对 ; (7(; / /$7(;语法较为熟悉后再回头来看就可以
了。另外,对于论文排版,还有许多排版元素的设置这里没有提到,比如文章标题、摘要与
参考文献等,这些排版元素我将其划分为论文的内容部分,会在后文中的论文与书籍的内容
排版中详细讲述。
由于要赶一份材料,本文档暂时进行到这里,待那份材料完工后再来写。