152. LaTeX

基础

认识 Latex

命令与环境

构成

反斜杠加上命令名称,再加上花括号内的参数

1
\documentclass{ctexart}

保留字符

符号 说明
# 自定义命令时,用于标明参数序号。
$ 数学环境命令符。
% 注释符,其后的该行命令都会视为注释。如果在行末添加这个命令,可以防止 LaTeX 在行末插入一些奇怪的空白符。
^ 数学环境中的上标命令符。
& 表格环境中的跳列符。
_ 数学环境中的下标命令符。
{与} 用于标记命令的必选参数,或者标记某一部分命令使其成为一个整体。
\ 用于开始 LaTeX 命令。

导言区

1
2
3
4
\documentclass[option]{doc-class}
\begin{document}
...
\end{document}

在语句 \begin{document} 之前的内容称为 == 导言区 ==,导言区即模板定义

doc-class

doc-class (文档类) 类别
article 科学期刊、演示文稿、短报告、邀请函
proc 基于 article 的会议论文集
report 多章节的长报告、博士论文、短篇书
book 书籍
slides 幻灯片,使用了大号 Scans Serif 字体

此外还有 beamer 宏包定义的 beamer 文档类,其常用于创建幻灯片。

options (可选项)

options 取值
字体 默认 10 pt, 可选 11 pt 和 12 pt
页面方向 默认 portrait (竖向), 可选 landscape (横向)
纸张尺寸 默认 letterpaper , 可选 a4paper 、b5paper 等
分栏 默认 onecolumn , 可选 twocolumn
双面打印 有 oneside/twoside 两个选项,用于排版奇偶页,article/report 默认单面
章节分页 有 openright/openany 两个选项,决定在奇数页或任意页开启新页。注意,article 是没有 chapter (章) 命令的,默认任意页
公式对齐 默认居中;可改为左对齐 fleqn ; 默认编号居右,可改为左对齐 leqno
草稿选项 默认 final , 可改为 draft , 使行溢出的部分显示为黑块

宏包

导言区最常见的是宏包的加载工作,命令形如:

1
\usepackage{package}

宏包是指一系列已经制作好的功能 “模块”,在你需要使用一些非原生 LaTeX 功能时,只需调用这些宏包就可以了

学习宏包

按 Win+R 组合键调出运行对话框,输入 texdoc 加上宏包名称即可打开宏包 pdf 帮助文档,例如:texdoc xeCJK

文件输出

pdf

后缀 说明
.sty 宏包文件。
.cls 文档类文件。
.aux 用于存储交叉引用信息的文件,因此,在更新交叉引用 (公式编号、大纲级别) 后,需要编译两次才能正常显示。
.log 日志,记录上次编译的信息。
.toc 目录文件。
.lof 图形目录。
.lot 表格目录。
.idx 如果文档中包含索引,该文件用于存储索引信息。
.ind 索引记录文件。
.ilg 索引日志文件。
.bib 参考文献数据文件。
.bbl 生成的参考文献记录。
.bst 模板。
.blg 日志。
.out hyperref 宏包生成的 pdf 书签记录。

异常处理

删除文件夹下除了 tex 以外的文件再编译

注意

在某些独占程序打开了以上的文件时 (比如用 Acrobat 打开了 pdf 文件), 编译也可能出现错误。请在编译时确保关闭这些独占程序。

标点与强调

英文符号 |、<、>、+、= 一般用于数学环境

  • 在文本中使用,请在它们两侧加上 $
  • 大于小于号:你应该使用 \textgreater\textless 命令

引号

  • 左单引号是重音符 `
  • 右单引号是常用的引号符
  • 左双引号就是连续两个重音符
  • 英文下的引号嵌套需要借助 \thinspace 命令分隔

省略号

英文的省略号使用 \ldots 这个命令

强调:粗与斜

\emph{text}

  • 中文:强调文本
  • 细纹:斜体

下划线与删除线

  • LaTeX 原生提供的 \underline 命令简直烂得可以
  • == 建议 == 你使用 ulem 宏包下的 uline 命令,它还支持换行文本
命令 说明
\uline{} 下划线
\uuline{} 双下划线
\dashuline{} 虚下划线
\dotuline{} 点下划线
\uwave{} 波浪线
\sout{} 删除线
\xout{} 斜删除线

注意

ulem 宏包重定义了 \emph 命令:

  • 强调命令会对内容加下划线

  • 嵌套使用两次强调命令则会对内容加双下划线

通过宏包的 normalem 选项可以取消这个更改:\usepackage[normalem]{ulem}

其他

  • 角度符号或者温度符号
  • 欧元符号可能需要用到 textcomp 宏包支持的 \texteuro 命令
  • 千位分隔位
    • 不想它在中间断行,就在外侧再加上一个 \mbox 命令
  • 注音符号
  • 音标:
    • tipa 宏包
    • numprint 宏包
    • siunitx 宏包
  • hologo 宏包可以输出许多 TEX 家族标志

格式控制

符号说明

符号 说明
pt point, 磅。
pc pica,1 pc = 12 pt, 四号字。
in inch, 英寸,1 in = 72.27 pt。
bp bigpoint, 大点,1 bp = in。
cm centimeter, 厘米,1 cm = in。
mm millimeter, 毫米,1 mm = cm。
sp scaled point,TEX 的基本长度单位,1 sp = pt。
em 当前字号下,大写字母 M 的宽度。
ex 当前字号下,小写字母 x 的高度。

长度宏

说明
\textwidth 页面上文字的总宽度,即叶宽减去两侧边距
\linewidth 当前行允许的行宽

可变长度

  • 5 pt plus 3 pt minus 2 pt:表示一个能收缩到 3 pt 也能伸长到 8 pt 的长度
  • 直接使用倍数:1.5\parindent

特殊空格

\hspace\vspace

空格与换行

  • 多个空格、换行会被视为一个
  • 禁止 LaTeX 在某个空格处的换行,将空格用 ˜ 命令替代即可,比如: Fig.˜ 8

换行

  • 会自动换行
  • 分段:两个回车 (用于正文换行)
  • 空白段落(空白行)
    • 两个回车 + \mbox{} + 两个回车
    • \par: 生成一个带缩进的新段
  • 强制换行: \\
    • 缺点:下一行段首缩进会消失

段落间距离

  • 默认: 0pt plus 1pt
  • 控制命令 \parskip\setlength{\parskip}{0pt plus 1pt}
  • 首字下沉:lettrine 宏包

分页

  • \newpage 命令开始新的一页
  • \clearpage 命令清空浮动体队列,并开始新的一页
  • \cleardoublepage 命令清空浮动体队列,并在偶数页开始新的一页
  • 连续新开两页:在 \newpage 中间加上一个空的箱子 (\mbox{}),\newpage\mbox{}\newpage

缩进、对齐与行距

缩进

  • 宏包:借助 indentfirst 宏包
  • 设置距离:使用 \setlength\parindent{2em} 这样的命令来设置缩进距离
  • 段首强制取消缩进:在段首使用 \noindent 命令

英文的每节第一段的段首 == 允许没有缩进 ==

对齐

默认使用两端对齐的排版方式

设置

可以使用 flushleft 、flushright 、center 这三种环境来构造居左、居中、居右三种效果。

特殊的 \centering 命令常常用在环境内部 (或者一对花括号内部), 以实现居中的效果。

尽量用 center 环境代替这个老旧的命令。类似地还有 \raggedleft 实现居右,\raggedright 实现居左

字体与颜色

中西文 “斜体”

中文

汉字没有加斜体

汉字字体里面也不一定有加粗体的设计

英文

  • 加斜是指某种字族的 Italy 字系
  • 斜体,是指 Slant 字族

使用

  • 行文中表强调时使用的是前者;
  • 在 MS Word 等软件中看到的倾斜字母 I , 也代表前者。

原生字体命令

字族

命令 描述
\rmfamily 把字体设置为 Roman 罗马字族
\sffamily 把字体设置为 Sans Serif 无衬线字族
\ttfamily 把字体设置为 Typewritter 等宽字族

字系

命令 描述
\bfseries 粗体 BoldSeries 字系属性
\mdseries 中粗体 MiddleSerie 字系属性

字形

命令 描述
\upshape 竖直字形
\slshape 斜体字形
\itshape 强调体字形
\scshape 小号大写字形

临时改变字体

临时改变字体,使用 \textrm\textbf 这类命令

注意

  • 字族、字系、字形三种命令是互相独立的,可以任意组合使用

  • 这种复合字体的效果有时候无法达到 (因为没有对应的设计)

    LaTeX 会针对这种情况给出警告,但仍可以编译,只是效果达不到预期。

自定义命令

在文中多次使用某种字体变换,可以将其自定义成一个命令

字号

默认的 “标准” 字号

  • 在 documentclass 的选项中设置的 12 pt (如果你设置了的话)

相对字号命令

ctex 宏包

ctex 宏包的 \zihao 命令的参数 08 以及 -0-8 表示初号到八号、小初号到小八号

日常使用的小四号为 12 pt, 五号为 10.5 pt

设置特殊的字号

1
\fontsize{font-size}{line-height}{\selectfont <text>}
  • font-size: 填数字,单位 pt
  • line-height: 填 \baselineskip,表示行与行之间的基线间距 (即行距), 默认是 1.2 倍文字高。

默认字体

全文的默认字体使用 \rmfamily 族的字体

通过重定义的方式更改它,使 \rmfamily\textrm 命令都指向新的字体,甚至把默认字体改为 sf/tt 字族

1
2
3
4
5
6
\renewcommand{\rmdefault}{font-name}
% 默认字体改为sf字族,也可以用 \ttdefault
\renewcommand{\familydefault}{\sfdefault}
\renewcommand{\sfdefault}{font-name}
% 如果你排版 CJK文档,还需要更改CJK的默认字体
\renewcommand{\CJKfamilydefault}{\CJKsfdefault}

西文字体

预包含西文字体

使用

引言区定义

1
2
3
\newcommand{\myfont}[2]{{\fontfamily{#1}\selectfont #2}}
% 可更改默认字体,同理可改 sfdefault
\renewcommand{\rmdefault}{ptm}

正文中

1
Let's change font to \myfont{ppl}{Palatino}!

本地安装字体

使用 fontspec 宏包

一般使用 fontspec 宏包来选择本地安装 的字体。注意,该宏包可能会明显增加编译时间

1
2
3
\usepackage{fontspec}
\newfontfamily{\lucida}{Lucida Calligraphy}
\lucida{This is Lucida Calligraphy}

该宏包的 \setmathrm/sf/tt\setboldmathrm 命令可以更改数学环境中调用的字体。

简单加载 txtfont 宏包

将西文字体设置为 Roman 体,同时设置好数学字体。

简单字体宏包还有 cmbright , 以及提供 Palatino 字体的 pxfonts , 前者提供的 CM Bright 与 TeX 默认字体 Computer Modern 协调得不错

中文支持与 CJK 字体

ctex 宏包

直接定义了新的中文文档类 ctexart 、ctexrep 与 ctexbook , 以及 ctexbeamer 幻灯文档类。

xeCJK 宏包

在使用 时,如果你使用 ctex 文档类,它会在底层调用 xeCJK 宏包,所以你无须再显式地加载它。当然你也可以使用原生文档类,然后逐一汉化参数内容。

示例

在引言区

1
2
3
\usepackege[slantfont,boldfont]{xeCJK}
\xeCJKsetup{CJKMath=true}
\setCJKmainfont[BoldFont=SimHei]{Simsun}

颜色

使用 xcolor 宏包

1
2
\usepackage{xcolor}
\definecolor{keywordcolor}{RGB}{34,34,250}

指定颜色的 text

1
{\color{color-name}{text}}

调色

1
2
3
4
5
6
% 70%红色
{\textcolor{red!70}}
% 50蓝,20黑,30白
{\textcolor{blue!50!black!20!white!30!}{50蓝,20黑,30白}}
% 黄色互补色
{\textcolor{-yellow}{黄色互补色}}

引用与注释

标签与引用

没看懂

脚注、边注和尾注

没看懂

摘要

没看懂

参考文献

natbib 宏包

正式排版:封面、大纲与目录

封面

封面的内容在导言区进行定义,== 一般写在所有宏包、自定义命令之后 ==

命令如下:

1
2
3
\title{Learning Latex}
\author{Qeuroal
\date{text}

使用封面

document 环境内的第一行写上 \maketitle , 这样就能产生一个简易的封面。

1
2
3
4
5
\begin{document}
\maketitle


\end{document}

标题页的脚注用 \thanks 命令完成。

注意

  • \title 和 \author == 是必须定义的 ==
  • date
    • \date 如果省略:会自动以编译当天的日期为准,格式形如: January 1, 1970。
    • 不想显示日期,可以写 \date {}

大纲与章节

命令 大纲级别
\part 部分,这个大纲不会打断 chapter 的编号。
\chapter 章,article 的文档类不包含本大纲级别。
\section 节。
\subsection 次节,默认 report/book 文档类中本级别及以下的大纲不进行编号,也不纳入目录。
\subsubsection 小节,默认 article 文档类中本级别及以下的大纲不进行编号,也不纳入目录。
\paragraph 段,极少使用。
\subparagraph 次段,极少使用。

计数器与列表

计数器

LaTeX 中的自动编号都借助内部的计数器来完成,计数器包括下面几种:

  • 章节 :part、chapter、section、subsection、subsubsection、paragraph 与 subparagraph。
  • 编号列表 :enumi、enumii、enumiii 与 enumiv。
  • 公式和图表 :equation、figure 与 table。
  • 其他 :page、footnote 与 mpfootnote

  • mpfootnote 命令用于实现 minipage 环境的脚注

使用

通过 \the 接上计数器名称来调用计数器,比如 \thechapter

如果只是输出计数器的数值,可以指定数值的形式,如阿拉伯数字、大小写英文字母,或大小写罗马数字。

常用的命令:

  • \arabic{counter-name}
  • \Alph
  • \alph
  • \Roman
  • \roman
  • % ctex 文档类还支持 \chinese

图、表格

没看懂

页面设置

借助 geometry 宏包