继前两篇入门篇文章LaTeX专栏001|入门篇-谈安装与排版心得和LaTeX 专栏002|入门篇-两种编辑器的配置的推送之后,有大多数同学都开始用上了这款排版软件,这里我不说假话,通过我从2017年开始用起它来排版数学笔记之后,让同学接触与认识到LaTeX
的同学有近四五位数,从中我也帮助过无数的同学正确安装并使用它,我很高兴你们能通过它来排版一篇属于自己的数学notes,或是投稿论文等,当然八一希望有更多的同学们都可以用上它挥洒自如!
今天的内容可能有点多,重点讲解LaTeX
排版入门的基础知识,主要包括行间距与段间距、数学公式、表格、插图、参考文献、页眉页脚、列表、代码块
等,这里分两期讲解,接下来开始我们今天的正文:
行间距与段间距
LaTeX
默认行间距为行高的20%,你要调整行间距是可使用setspace
宏包,它具有的选项onehalfspacing
可将行间距调整为1.5倍行高。宏包parskip
可用于取消段落
的缩进,此宏包中还包括段落间的距离调整功能,这里LaTeX
支持的长度单位有:
in - 英寸(inch)
mm - 毫米(millimeters)
cm - 厘米(centimeters)
pt - points (大约 $1/72$ inch)
em - 接近当前字体的字符 "M"的宽度
ex - 大约为小写字母"x" 的高度
长度是由十进制数和长度单位
表示,并注意到长度是可以为负值,比如 -1.1em
. 注意到数字 0
它本身不是一个长度,你必须表明是0in
或 0pt
等,另外我这里告诉你大概数据,1 in = 2.54cm = 72pt
, em 和 ex
与当前字体尺寸有关
常用长度数据命令 :
\textwidth, \textheight
\parindent, \parskip
\hoffset, \voffset
\baselineskip
长度有时也可以是负值如\setlength{\hoffset}{-1mm}
关于段落间距有关变量:
\baselineskip
:行基线间距\lineskip
:行间距\baselinestretch
:伸展因子\parskip
:部分段间距
renewcommand{\baselinestretch}{1.2}
\linespread
:行间距伸展命令\lineskiplimit
:当两行字之间的距离小于\lineskiplimit
时,行距自动设为\lineskip
![7d74b1c7a39ca7c74682ae79e308bb09.png](https://i-blog.csdnimg.cn/blog_migrate/efb21a63cfb17c9dcfdc3334cf8f65d3.png)
这里一般我推荐的搜索引擎为 Google,是其中段间距等于\lineskip + \parskip
,而LaTeX
中真正的间距,其实也就是两个基线之间的距离等于\lineskip = \baselineskip 乘 \baselinestretch
,假设我们什么都不管,对于不同的文档类,默认字体大小不同,但默认的\baselineskip
的值为默认字号的1.2倍,\baselinestretch
在不同的文档类中也不同,article
文档类中为1,ctexart
文档类为1.3倍
我再具体解释下,意思就是你在
article
文档类中如果不指定伸展因子\baselinestretch
,则行距就是每种字号对应的基本距离;而在ctexart
中,由于是中文文档类,伸展因子\baselinestretch
默认为1.3倍 ,行距为文中字号对应基本距离的1.3倍。
% 改变方式
\fontsize{字号}{基本距离}\selectfont
在不同的段之间,也可以设置段间距(默认为0)。通过\setlength{\parskip}{parSkip}
来实现。比如说,你想设置段间距为2em,
setlength{\parskip}{2em}
在不同两段之间的距离,为\parskip+\baselineskip
的距离。
这里值得注意的是,由于
\\
是断行不是分段,所以由\\
引起的下一行与本行之间的距离,只有\baselineskip, 而不加上\parskip
一般在中文文章中,将\parskip
设置为 0pt
,即行间距和段间距相等。设置伸展因子调整行距比较不靠谱,经常调不对,可直接通过\fontsize
直接调\baselineskip
,使得 \baselinestretch
一直是1.
通过设置伸展因子调整行距不靠谱的原因是默认的
\baselineskip
大于\fontsize
大小
因此如果你伸展因子设置为 1.5,则实际得出的行距要大于 1.5 倍行距,示例如下:
renewcommand{\baselinestretch}{xx}:设置伸展因子。
通过在源文件中输入\showthe\baselineskip
,可以在编译时得到当前的\baselineskip
的值,并显示\baselineskip
的值。
另外我再补充几种分隔方式:
offset: 换行,并且与下一行的行间距为原来行间距+
\newpage
分页命令,\clearpage
和\newpage
类似,均为强制分页,
如果想要首行缩进两个汉字距离,则\setlength{\parindent}{2em}
.
数学公式
LaTeX
境下,最重要的数学宏包是AMS系列的:
提供环境的包
amsmath
:最基本的数学公式包amscd
:绘制交换图amsthm
:制作引理
提供字体的包:
amsfont
:定义了\mathfrak和\mathbb
等数学字体amssymb
:数学符号的包
需要掌握下面最基本的几个环境
equation,equation*
单行单公式multline multline*
多行公式,没有对齐操作,只给一个公式编号gather gather*
多个公式,可添加多个公式编号align align*
多个公式对齐,但只能对齐公式内部的一个部分flalign flalign*
多个公式对齐,可对公式内的多个部分split
分割公式
gathered 和gather
的区别是放在了一个minipage
里,aligned
也是minipage
的问题
行内间、数学字体、符号与函数
- 常用数学宏包:
\usepackage{amsmath,amssymb,amsfonts}
- 在数学模式中输入普通文本:
\mbox{文本} 或 \text{文本}
(用来加载amsmath
宏包) - 在数学模式中插入 空格:
\quad, \qquad, \hspace
,使用\,
等价3/18 \quad
- 数学公式书写:行内
$ ··· $
,行间:\[ ··· \]
,这里需要说明行间分单行与多行之分,一般美赛论文中是需要带编号,LaTeX
可实现自动编号,单行可利用\begin{equation} ··· \end{equation}
环境,多行编号可\begin{align} ··· \end{align}
实现,如果不要编号,在环境名加*
即可实现,若其中某行公式无需编号, 在后面加\notag 或 \nonumber
- 常用数学字体命令:
\mathrm, \mathit, \mathtt, \mathsf, \mathbf, \mathcal,\mathbb
- 数学公式中的函数名最好用正体, 一般通过函数名命令输入,
LaTeX
中的函数命令都是斜杆\
开始自定义新的函数名 (需amsmath
宏包),\DeclareMathOperator{\函数名命令}{函数名}
:注意像这样的命令只能放置在导言区。 - 如果是临时使用未定义的函数名, 也可以直接在公式中使用命令:可利用这样的命令
\operatorname{函数名}
角标、分式、求和、积分、定界符与矩阵
- 角标:上标
ˆ{···}
, 下标_{···}
,若实现导数 → 可以直接使用右单引号'
或\prime
- 分式:
\frac → 普通分式, \tfrac → \textstyle, \dfrac → \displaystyle
。注意到\frac
在行内公式中等价于\tfrac
, 在行间公式中等价于\dfrac
;二项式系数:\binom, \tbinom, \dbinom
;根式:\sqrt{···}或\sqrt[n]{···}
- 求和与积分:求和
\sum
,积分\int
,针对于行内行间公式取不同的尺寸, 上下限位置也可能不同,这里举个例子,行间公式$$ \sum_{i=1}^{n} xˆi $$或\[\]
可以等价于行内公式的$ \displaystyle\sum_{i=1}^{n} xˆi $或\(\)
- 上、下划线:
\overline{...},\underline{...}
; - 上、下大括号:
\overbrace{...},\underbrace{...}
- 堆积:
\stackrel{上位符号}{基位符号}
,大家可能不懂,例下这样等号上有条件def
这里可以考虑使用
extarrows
宏包,使用\xlongequal{条件}
来上下添加文字的长等号 - 定界符:
LaTeX
中常用的定界符( ) [ ] | / \ { } ∥ ⌊ ⌋ ⌈ ⌉ ⟨ ⟩ ↑ ↓ ↕ ⇑ ⇓ ⇕
;定界符可以放大:\big (1.5 倍), \Big (2 倍), \bigg (2.5 倍), \Bigg (3 倍)
- 定界符的自适应放大:
\left, \right
,比如\left(, \right)
产生小括号,中括号为\left[...\right]
,大括号为\left\{...\right\}
,尖括号为\left<...>
, 绝对值为\left|...\right|
, 范数为\left\|...\right\|
此外当我们需要出现单边括号时如,源码为
\left.\frac{x^5}{e^x}\right|_{x=1}
,我们只将不需要的那半边括号用\left.
代替好了. - 矩阵:通用的写法是
\begin{matrix}a & b & c\\d & e & f\end{matrix}
注意这里的
matrix
环境要放在一个行间环境中。以上命令将生成通常当我们使用矩阵时,都需要指定一个定界符。固然,我们可以用matrix
环境外加两侧的自动定界符\left, \right
等实现,但这过于繁琐。
简要的方法是使用一些预定义、自带定界符的环境,包括:
- 带圆括号 的
pmatrix
环境; - 带方括号 的
bmatrix
环境; - 带花括号 的
Bmatrix
环境; - 带绝对值界的
vmatrix
环境与带范数界的Vmatrix
.
只需要将上面的
matrix
替换即可,此外若要在行间改为小矩阵,可使用smallmatrix
环境.
关于数学公式更多详情可查看由去年我翻译的一份简短的 LaTeX 数学指南[1],以及源码可见Short Math Guide for LaTeX 中译本[2]
好了,就介绍到这里,我们下期见,主要把入门篇剩余
表格、插图、参考文献、页眉页脚、列表、代码块
讲解下.有关具体的详细内容你可以看看lshort-zh-cn v6.01[3]
参考资料
[1]一份简短的 LaTeX 数学指南: https://www.latexstudio.net/archives/51735.html
[2]Short Math Guide for LaTeX 中译本: https://github.com/hoganbin/short-math-guide
[3]lshort-zh-cn v6.01: https://github.com/CTeX-org/lshort-zh-cn/releases