环境
系统: Windows10 1903
TeX 3.14159265 (TeX Live 2019/W32TeX)
学习过程一
控制序列
控制序列: 是以\开头, 以第一个空格或非字母的字符结束的一串文字, 控制序列后面的{}代表这个控制序列的必要参数, 这个控制序列的作用为调用名为article的文档类.
1 | % TeX对控制序列的大小写是敏感的 |
注释
注释以%
开头. 若要输出%
字符本身, 则需要在%
之前加上反斜杠\
进行转义(escape).
1 | % 导言区 |
导言区
导言区是对整篇文档进行设置的区域, 在导言区出现的控制序列, 一般都会影响到整篇文档的格式.
1 | \documentclass{article} |
环境
begin~end
两个控制序列之间的内容称为环境, 这里的控制序列的第一个必要参数
总是一致的, 被称为环境名, 只有在document环境中的内容, 才会被正常输出到文档中去或是作为控制序列对文档产生影响, 在\end{document}之后插入任何内容都是无效的.
1 | \begin{document} |
宏包
就是一系列控制序列的合集.
1 | % 调用宏包 |
中英文混排问题
CJK
宏包不支持亚洲文字, 而XeTeX
原生支持Unicode, 并且可以方便的调用系统字体. 除了中文支持, 中文的版式处理和标点也是一定的问题, 在这里因为CTeX
宏集的原因得以解决, 它能适配于多种编译方式, 该宏集本质是LaTeX宏的集合, 包好若干文档类.cls
文件, 宏包.sty
文件, 而CTeX
套装则是一个过时的TeX系统.
1 | % 以UTF-8编码保存, 使用XeLaTex编译 |
组织文章
1 | \documentclass[UTF8]{ctexart} |
章节和段落
在文档类article
/ctexart
中, 可以使用以下的控制序列来调整行文组织结构. 如果想在两句话之间换行, 那么应该直接在这两句话之间插入一个空行
.
1 | % 一级章节 |
在report
/ctexrep
中:
1 | \chapter{} |
在文档类book
/ctexbook
中:
1 | \part{} |
目录
在文档中, 在其\maketitle
的下面插入控制序列\tableofcontents
, 保存并用XeLaTeX
编译两次
.
数学公式
使用AMS-LaTeX
提供的数学功能, 需要在导言区加载amsmath
宏包.
1 | \usepackage{amsmath} |
其中, 数学模式有两种: 行内模式(inline)和行间模式(display). 前者在正文的行文中, 插入数学公式; 后者独立排列单独成行, 并自动居中.
1 | % 在行文中, 使用$...$可以插入行内公式, 使用\[...\]可以插入行间公式 |
- 上下标
1 | \documentclass{article} |
公式标点使用规范:
行内公式的标点应该放在数学模式的限定符之外, 行间公式则应该放在数学模式限定符之内.
- 根式与分式
根式用\sqrt{}
, 分式用\frac{}{}
, 其中第一个参数为分子, 第二个参数为分母.
1 | \documentclass{article} |
在行间公式和行内公式中,分式的输出效果是有差异的. 要强制行内模式的分式显示为行间模式的大小, 可以使用\dfrac
, 反之可以使用\tfrac
.
在行内写分式, 使用xfrac
宏包提供的\sfrac
命令
排版繁分式, 使用\cfrac
命令
- 运算符
有些运算符可以直接在数学模式下直接输入; 有些则需要控制序列生成:
1 | \[ \pm\; \times \; \div\; \cdot\; \cap\; \cup\; |
连加、连乘、极限、积分等大型运算符分别用 \sum
, \prod
, \lim
, \int
生成. 它们的上下标在行内公式中被压缩, 以适应行高. 可以使用\limits
和\nolimits
来强制显式的指定是否要压缩这些上下标
1 | % \quad表示一个空格 |
多重积分可以使用 \iint
, \iiint
, \iiiint
, \idotsint
等命令输入:
1 | % \iint表示二重积分, 以此类推; \idotsint表示多重积分的省略 |
- 定界符(括号等)
各种括号用()
,[]
,\{\}
,\langle\rangle
等命令表示. 其中花括号通常用来输入命令和环境的参数, 所以在数学公式中前面要加\
. 因为LaTeX中|
和||
的应用过于随意, amsmath宏包推荐用\lvert\rvert
和\lVert\rVert
取而代之.
调整定界符的大小, amsmath 宏包推荐使用 \big
, \Big
, \bigg
, \Bigg
等一系列命令放在上述括号前面调整大小.
1 | % \Biggl表示一级左向元素, \Biggr表示一级右向元素, \bigg表示二级大小, \Big表示三级大小, \big表示四级大小 |
- 省略号
省略号用\dots
, \cdots
, \vdots
, \ddots
等命令表示.
1 | % \dots用来表示有下标的序列, \cdots则与\dots的纵向位置不同, \vdots表示纵向的省略号, \ddots表示斜向45的省略号 |
- 矩阵
amsmath
的pmatrix
, bmatrix
, Bmatrix
, vmatrix
, Vmatrix
等环境可以在矩阵两边加上各种分隔符.
1 | % {pmatrix}表示圆括号矩形, {bmatrix}表示方括号矩形, {Bmatrix}表示花括号矩形, {vmatrix}表示单竖线矩形, {Vmatrix}表示双竖线矩形 |
使用{smallmatrix}
环境, 可以生成行内公式的小矩阵:
1 | $ ( \begin{smallmatrix} a&b\\c&d \end{smallmatrix} ) $. |
- 多行公式
手动换行, 手动组合.
长公式
1 | % 不对齐 |
公式组
1 | % 都带有编号 |
注意, 不要使用eqnarray
环境.
分段函数
1 | % 分段函数可以使用cases环境来实现, 它必须包含在数学环境之内 |
- 辅助工具
Mathpix
通过将截屏中的公式转换成LaTeX数学公式的代码
允许用户用鼠标在输入区绘制单个数学符号的样式, 系统会根据样式返回对应的LaTeX代码和所需的宏包.
插入图片和表格
- 图片
最好用的是graphicx
宏包提供的\includegraphics
命令. 如果在你的TeX的源文件同目录下, 有a.jpg
的图片.
1 | \documentclass{article} |
如果图片很大, 超过了输出文件的纸张大小, 可以使用includegraphics
控制序列的可选参数来控制.
1 | % 图片的宽度会被缩放至页面宽度的百分之八十,图片的总高度会按比例缩放 |
- 表格
tabular
环境提供了最简单的表格功能. 它用 \hline
命令表示横线,在列格式中用 |
表示竖线; 用 &
来分列,用 \\
来换行; 每列可以采用居左、居中、居右等横向对齐方式, 分别用 l
、c
、r
来表示.
1 | \begin{tabular}{|l|c|r|} |
- 浮动体
调整插图和表格的位置. figure
和table
环境可以自动完成这样的任务, 这种自动调整位置的环境称作浮动体(float).
1 | % htbp选项用来指定插图的理想位置,这几个字母分别代表here, top, bottom, float page. |
版面设置
- 页边距
使用geometry
宏包. 将纸张的长度设置为 20cm、宽度设置为 15cm、左边距 1cm、右边距 2cm、上边距 3cm、下边距 4cm,可以在导言区加上这样几行:
1 | \usepackage{geometry} |
- 页眉页脚
使用fancyhdr
宏包. 在页眉左边写上我的名字,中间写上今天的日期,右边写上我的电话;页脚的正中写上页码;页眉和正文之间有一道宽为 0.4pt 的横线分割,可以在导言区加上如下几行:
1 | \usepackage{fancyhdr} |
- 首行缩进
自然段前空两格汉字宽度.CTeX宏集已经处理好了首行缩进的问题.
- 行间距
通过setspace
宏包提供的命令来调整间距:
1 | \usepackage{setspace} |
baseline意义
TeX中的每个字符都放在一个box里. 由几个box的base连接起来的基准线称为baseline.
两行之间的baseline的 称为行距(linespace).
为统一对不同字号的内容进行行距的调整, 引入了因子的概念. 其储存在\[email protected]
宏中, 在article
文档类中默认为1, 在ctexart
中默认是1.3, 修改行距, 都是修改这个因子.
需要将因子存储在一个外部宏(没有@
的宏)之中, 其是\baselinestretch
.
1 | % \baselineskip 两条baseline之间的linespace距离 |
根据上述公式, 在article
中默认行距是字号的1.2倍, 而在ctexart
中默认行距是字号的1.56倍.
1 | % \setspace 单倍, 一倍半, 双倍则是指行距相对于字号的倍数. |
修改行距
\[email protected]
的值会一直作用到文档末尾或者被新的值覆盖,\[email protected]
的情况类似每一段段内的行距, 由最后被设置的
\[email protected]
和\@linespread
决定
修改行距, 即修改因子, 可以直接修改\baselinestretch
的值(\renewcommand
), 或者使用\linespread{}\selectfont
来修改, 推荐使用:
1 | \linespread{<factor>}\selectfont |
setspace
宏包提供的\setstretch
命令似乎做的更多一些: 会同时修改数学公式, 浮动体等的间距, 使之与正文间距适应.
1 | \setstretch{<factor>} |
\linespread
和\fontsize{}{}
这类命令, 必须在其后添加\selectfont
才会生效, \setstretch
大致相当于\linespread\selectfont
, 使用之后直接生效.
- 段间距
通过\parskip
的值来调整段间距.
1 | % 在原有的基础上, 增加段间距0.4em, 如果需要减小, 只需要将值改为负数. |
要点
-
TeX - pdfTeX - XeTeX - LuaTeX 都是排版引擎,按照先进程度递增(LuaTeX 尚未完善).
-
LaTeX 是一种格式,基于 TeX 格式定义了很多更方便使用的控制命令。上述四个引擎都有对应的程序将 LaTeX 格式解释成引擎能处理的内容.
-
CTeX, MiKTeX, TeX Live 都是 TeX 的发行,他们是许许多多东西的集合 .