LaTeX 介绍和使用

最近在整理自己的收藏夹和知识集合,总感觉很多文档放本地或者印象笔记、有道笔记不是很好,遇到问题本能总是先 Google,不曾想过有时候自己已经花大量时间整理了,并且可能会出现在本地多个文档中整理了同一知识点,或者在不同笔记里都有记录相关问题,导致相关信息杂乱。因此,我规划从现在起将自己收藏的东西整理出来,全部放博客中,便于查找和统一更新。今天先更新 LaTeX 整理记录。

简介

1 . 七十年代末,Donald E. Knuth(高德纳) 在看到其多卷巨著 “The Art of Computer Programming” 第二卷的校样时,对由计算机排版的校样的低质量感到无法忍受。因此决定自己来开发一个高质量的计算机排版系统,这样就有了 TeX

2 . TeX 的第一版于 1978 年面世,TeX 的源程序是用 Pascal 写成的,原因是 Knuth 希望 TeX 尽可能方便地移植到其它的操作系统中去。当时 Pascal 是最适合于这一要求的编程语言。这也使得 TeX 现在已经在几乎所有的计算机系统中得到实现。

3 . TeX 的另一个重要的特征就是它的输出是与 设备无关 的。TeX 的输出文件称为 DVI 文件,即是 “Device Independent” 。一旦 TeX 处理了你的文件,你所得到的 DVI 文件就可以被送到任何输出设备如打印机,屏幕等并且总会得到相同的结果,而这与这些输出设备的限制没有任何关系。这说明 DVI 文件中所有的元素,从页面设置到文本中字符的位置都被固定,不能更改。

4 . TeX 现在已经被它的开发者 Knuth 所 “冰封”(frozen),基本不再开发了。但新的变种版本不断出现,

  • LaTeX: 1984 年,由 Lamport 开发, 适合论文书籍, 对 TeX 推广贡献巨大,由于其标准的格式控制,latex 逐渐成为主流的 TeX 文档排版命令。LaTeX 时代开启。
  • PDFTeX : 1997 年,由 H.T. Thanh 开发,完全兼容标准的 TeX ,但能够给出 PDF 输出。它也可以输出标准的 DVI 。
  • XeTeX : 2005年,Jonathan Kew 在 e-TeX 基础上添加 Unicode 支持,并且连接 Mac OS X 的各种技术。XeTeX 在2005/6年陆续发布了它的 Windows 和 Linux 版本,最终集成在 TeXLive 2007 当中,标志着它被广泛地认可。在 XeTeX 中,使用多国语言,变得非常轻松。
  • LuaTeX : 2007年,是 Aleph 与 PDFTeX 项目的继任者,主要由 Taco Hoekwater 开发,是 Lua 脚本语言和 TeX 的结合。

5 . LaTex 发型版本

  • TeXLive : 【官方】是由国际 TeX 用户组织 TUG 开发的 TeX 系统,支持不同的操作系统平台。其 Windows 版本又称 fpTeX , Unix/Linux 版本即著名的 teTeX, Mac 版本为 MacTeX。ISO 镜像下载地址:点我
  • MiKTeX : 原来是 Windows 系统平台上的一个发行版本,之后也扩展支持到 Linux 和 MacOS 了。其本身集成了一个编辑器 TeXworks
  • CTex : 这个很多人谈论到中文 LaTeX 的时候会提到,但是 CTeX 发行版是民间为早期 LaTeX 不支持中文而基于 MiKTeX 开发的支持中文版本。其本身就是 MiKTeX。但现在 Unicode 支持的 XeTeX 和其他 TeX 已经趋于成熟,因此,现在不推荐再用 CTeX 版本了
  • CTeX 宏集 : 这里要提一下 CTeX 宏集,这个宏集与 CTeX 发行版本/套装 是完全不一样的东西,CTeX 宏集是 Chinese Support TeX,是为支持中文的 TeX 库,这个是在用到中文时必须要用的库,因此,千万不要混淆这两者。现今所说的 CTeX 一般都是指这个 CTeX 宏集。

发行版本

发行版本就是 LaTeX 多种标准实现类型。主要是分为 TeXLiveMiKTeX,其他版本都是基于这两个主流版本衍生而来的。这两大发行版本都是全平台支持的。MacTeX 实际上就是 TeXLive 的 MacOS 系统上的实现,因此这里归类其为 TeXLive。相关说明如下:

如果需要安装的话,大家看官网实际上都能找到地址的,为方便这里列下不同发行版本的不同平台下载地址:

编辑器

LaTeX 实际上和 Java 语言一样,都是需要先配置环境,然后选择一款自己喜欢的编辑器或 IDE 进行编写“代码”。当然所有文本编辑器都可以编写 LaTeX 或者 Java 等其他语言“代码”。这里的 IDE 指集成了一些语言本地化的功能,比如编译、特殊符号等等。

LaTeX 的发行版中会自带一款编辑器,用 TexLive 的话,MacOS 上会有个叫 TexShop 的编辑器,而 Windows 上则会是一个叫 TexWorker 的编辑器,这些是都可以胜任编写工作的。另外,也有第三的 LaTeX 编辑器,下面我整理出所有编辑器说明,我个人用的也推荐程度也放上了,这是个人喜好,大家根据自己的偏好选择。

我个人推荐前两个,因为第三个收费且不跨平台,之所以写上第三个,主要是因为网络上很多博客或用户都推荐用第三个,这个我使用时也感觉不错,但每次我使用都得到 Windows 上使用,比较麻烦。当然,如果你使用 Windows 且有钱,WinEdt 确实使用体验和功能都是比较好的。

安装

  • Windows / MacOS: 建议安装 TeXLive,根据自己的系统选择对应的安装包。Mac 系统对应 MacTeX
  • MacOS: 安装后会自动将命令加入到环境变量, 并自带 TeXShop 编辑器。

    1
    2
    $ which latex
    /Library/TeX/texbin/latex
  • MacOS: TeXShop 是 MacTeX 自带的编辑器,我个人倾向于再安装一个编辑器 TeXMaker,其内置较多可视化符号,可点击插入,简单便捷。

  • Windows: 推荐 TeXMakerWinEdt , 专门针对 TeX 开发, 提供许多便捷功能, 有助于提高排版效率
  • 编译推荐: 用 pdflatex ( 英文文档 ) 或 xelatex ( 中文文档 ) 编译, 生成相应的 pdf 文件。

使用

基础框架

1 . 基本结构

1
2
3
4
5
6
\documentclass[a4paper]{article} % 指定文档类型
% 导言区: 全局设置, 宏包调用等
\begin{document}
% 正文部分
Hi, this is my first \LaTeX{} file.
\end{document} % 结束
  • LaTeX 源文件:正文 + 命令 + 注解
  • 排版命令(简称:命令):反斜杠 开头的字符串。
  • 注解符号:百分号 %
  • 文档类型\documentclass{...}(论文、书籍、幻灯片、海报)
  • 环境\beigin{...} 开头,\end{...} 结尾。
  • 附:\documentclass[]{} 就是引用模板,默认提供 article 等模板。

2 . 排版命令

  • 方括号中的是可选的 (称为选项), 花括号中的参数是必需

    1
    2
    3
    4
    5
    \command
    \command[option]{arguments}
    % 一些常用命令:
    \documentcalss, \title, \author, \date, \usepackage
    \begin{环境名}, \end{环境名} % 组成一个环境
  • 定义新命令

    1
    2
    3
    4
    \newcommand{新命令}{命令内容}
    \renewcommand{已有命令}{命令内容}
    % 举例
    \newcommand{\eps}{\varepsilon} % $\eps$ → ε
  • 文档类型:\documentclass[选项]{文档类}

    • 位于源文件的最前面, 用于指定文档的整体结构和布局, 必须且只能选一种
      • 常用 文档类: article, book, beamer, ctexart, ctexbook, ctexbeamer
      • 常用 选项:
      • 10pt(缺省值), 11pt, 12pt → 指定基本字体的大小
      • letterpaper(缺省值), a4paper, a5paper, … → 指定纸张的大小
      • 单双面选项: oneside, twoside, openright, openany
      • 数学公式: leqno (公式编号在左边), fleqn (靠左显示行间公式)
    • 导言区: \documentclass 和 \begin{document} 之间的区域
      • 导言区用于放置 全局控制命令, 如: 调用宏包, 设置页面大小, …
      • 放在导言区的命令对整个文档都起作用

3 . 中文排版

  • CTEX 宏集中提供了三个中文文档类: texart, ctexbook, ctexbeamer
  • xelatex 编译! 用 xelatex 编译! 用 xelatex 编译!

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    \documentclass[12pt,a4paper]{ctexart} 
    \usepackage{amsmath} % AMS 数学公式 宏包
    \usepackage{amssymb} % AMS 数学符号 宏包
    \usepackage{amsfonts} % AMS 数学字体 宏包
    \usepackage{graphicx} % 插图 宏包
    \usepackage{xcolor} % 彩色 宏包
    \begin{document}
    欧拉公式是
    $$ e^{ix} = \cos(x) + i\sin(x).$$
    \end{document}

常用包和命令

1 . 代码和注释:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
% 页面布局:页面宽度, 页面高度, 页眉高度, 页脚高度,各种边距等等
% \usepackage[a4paper,scale=0.8,hcentering,bindingoffset=8mm]{geometry} % A4纸大小,缩放80%,设置奇数页右边留空多一点
\usepackage{geometry} % 页面布局 宏包
% 定制页眉页脚: \pagestyle, \thispagestyle
\usepackage{francyhdr} % 页眉页脚高级定制 宏包
%
\usepackage{amsmath} % AMS 数学公式 宏包
\usepackage{amssymb} % AMS 数学符号 宏包
\usepackage{amsfonts} % AMS 数学字体 宏包
\usepackage{amsthm, bm} % 数学
%
\usepackage{algorithm} % 算法
\usepackage{algpseudocode} % 伪代码
\usepackage{listings} % 各种语言的代码块
%
\usepackage{graphicx} % 插图 宏包
\usepackage{subfigure} % 使用子图像或者子表格 宏包
\usepackage{subcaption} % 图片描述
%
\usepackage{courier} % 字体
\usepackage{fontspec} % 字体
%
\usepackage{titlesec} % 章节定制 宏包
\usepackage{titletoc} % 目录定制 宏包
\usepackage{cite} % 引用 宏包
\usepackage{natbib} % 参考文件定制 宏包
\usepackage{longtable, diagbox, colortbl, booktabs} % 表格定制 宏包
%
\usepackage{list} % 无序列表定制 宏包
\usepackage{enumitem} % 有序列表定制 宏包
%
\usepackage[选项列表]{hyperref} % 超链接 宏包
\usepackage{xcolor} % 彩色 宏包
%
% ====================== 常用命令 =================
%%%%%%%%%% 标题部分: 标题, 作者, 日期, 脚注等命令 %%%%%%%%%%
\title{标题} % 标题
\author{作者} % 作者
\date{日期} % 日期
% \date{} % 留空则不输出日期,不填则自动加上默认日期,所以要不显示日期需要这句命令
\thanks{...} % 脚注,这个必须放在上面命令的{}内
\maketitle % 必不可少,生成标题命令,以上命令只是声明,这句才可生成
%%%%%%%%%%%%% 摘要 %%%%%%%%%%%%
\begin{abstract} % 开始,book 类型没有摘要
%... ...
\end{abstract} % 结束
%%%%%%%%%%%%% 目录 %%%%%%%%%%%%%
\tableofcontents % 生成目录
% \setcounter{tocdepth}{层次号} % 设置目录中生成的章节层次
%%%%%%%%%%% 章节命令 %%%%%%%%%%%
\part % 篇
\chapter % 章 : article 中没有 chapter,在 book 中有
\section, \subsection, \subsubsection % 节
\paragraph, \subparagraph % 段落
%%%%%%%%%% 参考文献 %%%%%%%%%%%
\begin{thebibliography}{编号样本}
\bibitem[编号]{标签} 文献条目
\bibitem[编号]{标签} 文献条目
\end{thebibliography}
%%%%%%%%%% 表格命令 %%%%%%%%%%%
\begin{tabular}[竖向位置]{列格式}
%first line \\
%last line \\
\end{tabular}
%%%%%%%%%% 编号命令 %%%%%%%%%%
% 无序编号
\begin{itemize}
\item[标签] 条目内容
\end{itemize}
% 有序编号
\begin{enumerate}
\item[标签] 条目内容
\end{enumerate}
%%%%%%%% 脚注 %%%%%%%%%
\footnote{脚注文本} % 自动编号脚注,紧接在需要标注的文字之后
\footnote[标记]{脚注文本} % 手工指定脚注标记

2 . 特殊说明

  • 短标题: 用于显示在目录和页眉中, 缺省与标题相同
  • 带星号的章节命令: 不参与自动编号

    1
    2
    \章节命令[短标题]{标题} 
    \章节命令*{标题}
  • 章节举例

  • 文本对齐方式 (缺省为左对齐)

    • 左对齐: \raggedright 或使用 flushleft 环境
    • 右对齐: \raggedleft 或使用 flushright 环境
    • 文本居中: \centering 或使用 center 环境
  • 字体大小

    • 英文/中文都适用

    • 中文字体: ctex 提供的命令和字号命令如下

      1
      \heiti, \songti, \fangsong, \kaishu, \lishu, \youyuan, \yahei

超链接

1 . \usepackage[选项列表]{hyperref}

  • 在有交叉引用的地方 (如目录, 书签, 参考文献, 公式等) 建立链接
  • 提供对外部文件, 互联网网址, 邮件地址的链接
  • 常用选项 (也可通过 \hypersetup{选项列表} 来设置)
    • bookmarks → 创建书签, 缺省为 true
    • CJKbookmarks → 支持中日韩文字的书签
    • colorlinks → 使用彩色显示链接, 缺省为红色方框
    • linkcolor → 内部普通链接 (如页码) 的颜色, 缺省为 red
    • citecolor → 文献引用链接的颜色, 缺省为 green
    • urlcolor → URL 链接的颜色, 缺省为 magenta
    • breaklinks → 允许在链接中断行, 缺省不允许

2 . 例子:

1
2
3
4
5
6
7
\usepackage{hyperref} 
\hypersetup{CJKbookmarks=true, % 支持中文书签
colorlinks=true, % 使用彩色链接
citecolor=blue, % 引用标记颜色
linkcolor=blue, % 内部普通链接的颜色
urlcolor=blue, % url 链接的颜色
breaklinks=true } % 允许在链接处换行

3 . 创建网页链接: \url\href

1
2
\url{网址}
\href{网址}{文本}
  • \url → 生成 网址 的同时在页面上输出其内容
  • \href → 生成 网址 的同时在页面上输出 文本 的内容

颜色

https://www.jianshu.com/p/d184caa2cf15

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
\documentclass{article}
\usepackage{xeCJK}
\usepackage{mathpazo}
\usepackage{color,xcolor}
% predefined color---black, blue, brown, cyan, darkgray, gray, green, lightgray, lime, magenta, olive, orange, pink, purple, red, teal, violet, white, yellow.

\definecolor{light-gray}{gray}{0.95} % 1.灰度
\definecolor{orange}{rgb}{1,0.5,0} % 2.rgb
\definecolor{orange}{RGB}{255,127,0} % 3.RGB
\definecolor{orange}{HTML}{FF7F00} % 4.HTML
\definecolor{orange}{cmyk}{0,0.5,1,0} % 5.cmyk

\begin{document}
%\pagecolor{yellow} %设置背景色为黄色
\textcolor{green}{绿色} %1.方法一
{\color{orange} 橙色} %2.方法二

\colorbox{red}{\color{black}红底黑字}
\fcolorbox{red}{green}{红框绿背景} %框色+背景色

\color{blue!20}
\color{blue!20!black}
\color{blue!20!black!30!green} %a mixture of (20*0.3) percent blue, ((100-20)*0.3) percent black and (100-30) percent green

{\color[rgb]{1,0,0} This text will appear red-colored} % 直接使用
\textcolor[rgb]{0,1,0}{This text will appear green-colored} % 直接使用

\end{document}

相关资源

参考

苟且一下