naive blog
LaTeX入门(五)——段落
相信大家一定发现了,从开始到现在,我们在LaTeX中的输入一直没有出现过多个段落。那么LaTeX中如何实现分段呢?并不是很简单地
This is a line.
This is a new line
这样排版出来的结果,依然是
要分段,我们需要使用
\par
命令,即
This is a line.\par
This is a new line.
甚至我们在
\par
之后,源码里都不用换行,
This is a line.\par This is a new line.
也能实现相应的分段。
此外,我们也可以添加两个换行符来实现换行,即
This is a line.
This is a new line.
和分段对应,另一种操作叫断行。用命令
\\
实现。下面,我们来看一下这两种操作的不同:
我们在正文中输入一段话(因为知乎的代码框里不会自动换行,所以我就不用代码框了):
Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal. \par
Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived and so dedicated, can long endure. We are met on a great battle-field of that war. We have come to dedicate a portion of that field, as a final resting place for those who here gave their lives that that nation might live. It is altogether fitting and proper that we should do this.
在article文档类下排版出来的效果是
那么如果我们用断行
\\
来实现的话,即输入为:
Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal. \\
Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived and so dedicated, can long endure. We are met on a great battle-field of that war. We have come to dedicate a portion of that field, as a final resting place for those who here gave their lives that that nation might live. It is altogether fitting and proper that we should do this.
那么输出会是
首先我们先说明一点,在article文档类中,会对每个段落的段首进行缩进。那么在第一种情况,也就是
\par
的情况下,"Four"段和"Now"段都进行了缩进,也就说明LaTeX将源码中这两个段落看作了两个段。但是,在第二种情况,也就是
\\
的情况下,"Now"段并没有缩进。这说明,LaTeX并没有将"Now"段看作独立的一段,"Now"引导的一段话和"Four"段被LaTeX看作了一段话。
从语言逻辑上讲,一段就是一段,实际上只需要分段来分隔每一段。但由于承载文字的工具的限制,纸的宽度是一定的,一段话如果超过了纸的宽度,就要换行。但是,换行产生的下一行句子和上一行仍然属于同一段。在多数时候,LaTeX自动帮我们做了换行的工作。但是,有时候我们出于各种各样的原因,想在一行的某个单词后强制换行,这时就应该用
\\
命令。
那么,LaTeX的段落有哪些性质呢?
首先,我们要讲的,也是最复杂的,就是行距。
基线
在讲行距之前,我们先讲一下基线的概念。
维基百科中如下说道:
字体排印学中, 基线 (英语: Baseline )指的是多数字母排列的基准线。如右图所示,大多字母都沿着红色基线排列,唯有“p”向下延伸超过基线,超过的部分称为降部。
配图如下:
维基百科中又说,
东亚字体没有基线,每个字符坐落在一个方形盒子中,既无升部也无降部。当它与具有低基线的字体混合使用时,东亚字符应当被调整,使其字符底部在低基线字体的基线和降部高度之间。
相信大家看了这些话和配图以后,对基线应该有了一个大致的了解。
字号
介绍完基线之后,我们可以真正地了解字号了。前一篇文章,仅仅是简单地介绍了一下如何设置字号,那么字号究竟代表什么意思呢?pt和em究竟是什么呢?
在现代排版学中,pt是字号的单位,中文译为磅。在Word中,1pt为1/72英寸。而在LaTeX中,1pt为1/72.27英寸。而磅与中文字号的转化关系为:
初号42pt, 小初36pt, 一号26pt, 小一24pt, 二号22pt, 小二18pt, 三号16pt, 小三15pt, 四号14pt, 小四12pt, 五号10.5pt, 小五9pt
当前的字号指的是"typically a bit larger than the distance from the tallest ascender to the lowest descender", 从之前基线的图中可以看出,就是比从descender一直到ascender的距离略大。
当前的字体大小被记作单位em, 也就是说,如果当前字号为12pt, 那当前1em=12pt.
那么,行距是什么呢?
行距
维基百科如是说道:
在字体排印学, 行距 (Leading)指代字体连续行的基线间的距离。
在Word中,我们谈论的单倍行距,双倍行距也源于此。对于每一个字号,有一个基准行距,它等于单倍行距。在旧时用打字机的时候,如何增加行距呢?人们选择的方法只有空一行这样。所以,在Word中有双倍行距,这时的行距就等于两倍的基准行距。
在LaTeX中的行距机制,又是怎么样呢?
我们上一篇文章中讲到,
\fontsize{fontSize}{baseLineSkip}\selectfont
可以同时更改字体大小及行距。事实上,这里的行距是Word中的基准行距。它并不是真正的两个基线之间的距离。它存储在LaTeX的宏
\f@baselineskip
中。LaTeX中还有一个宏,是
\baselinestretch
, 我们可以通过命令
\linespread{lineSpread}\selectfont
来改变它,其中lineSpread填我们想要变成的值。而LaTeX中真正的行距,也就是两个基线之间的距离,是
\baselinestretch
乘以
\f@baselineskip
的值,它储存在
\baselineskip
中。
如果我们什么都不设置,对于不同的文档类,默认字体大小不同,但默认的
\f@baselineskip
的值为默认字号的1.2倍,
\baselinestretch
在不同的文档类中也不同,article文档类中为1,ctexart文档类为1.3
因此,在我们改变行距时,如果想把行距调整成精确的值,一般用
\fontsize{fontSize}{baseLineSkip}\selectfont
来实现;如果想成比例地调整行距,比如单倍行距,双倍行距,则使用
\linespread{lineSpread}\selectfont
来实现。 比如说,双倍行距就是
\linespread{2}\selectfont
此外,我们也可以用一个名叫
setspace
的宏包。也就是说,在导言区使用
\usepackage{setspace}
.然后使用
\setstretch{lineSpread}
来设置linespread(不用加
\selectfont
). 这个命令的好处在于会同时修改数学公式、浮动体等的间距,使之与正文间距适应。
空行
那么,我们如何在LaTeX中插入多个空行呢?一直用
\par\par\par
是会疯狂报错的。。。正确做法是:
\vspace*{n\baselineskip}
其中n为想空的行数。
段间距
在不同的段之间,也可以设置段间距(默认为0)。通过
\setlength{\parskip}{parSkip}
来实现。比如说,我想设置段间距为2em, 则使用
\setlength{\parskip}{2em}
即可。这样,在不同两段之间的距离,为段间距+
\baselineskip
的距离。
这里值得注意的是,由于
\\
是断行不是分段,所以由
\\
引起的下一行与本行之间的距离,只有
\baselineskip
, 而不加上
\parskip
缩进
在article及ctexart中,都默认给每一段的段首进行了缩进(在下一篇文章中我们会看到,article中的每一个章节后的首段不会缩进)。我们可以通过
\setlength{\parindent}{parIndent}
来控制缩进距离,比如说,我想控制段首缩进2em,则应写
\setlength{\parindent}{2em}
. 这个命令会使该命令之后的所有段的缩进都变成这个值。如果要取消全部段落的段首缩进,则可以写
\setlength{\parindent}{0em}
.
如果要单独取消某一行的段首缩进,则在该行的段首写
\noindent
即可。