0%

LaTeX笔记

LaTeX是基于TeX的文档排版系统。TeX是当初Knuth教授为了写作TAOCP而开发的个人排版软件,而LaTeX是Lamport博士为了编写自己的书籍而设计的。LaTeX实际上就是用TeX语言编写的一套宏代码,拥有比原来TeX格式(plain TeX)更为规范的命令和一整套预定义的格式,隐藏了不少排版上的细节。

搭建LaTeX环境

TeX/LaTex并不是单独的程序,而是复杂的软件包,里面包含了排版的专业引擎、编译脚本、格式转换工具、管理界面、支持工具、字体及数以千计的宏包和文档。一个TeX发行版就是把所有这些部件集合起来打包发布的软件。现在最为流行的发行版为CTeX套装和TeX Live。前者是Windows下面的软件,后者适用于各种操作系统。这里以TeX Live为例。

TeX Live是由TUG(TeX User Group)发布的一个发行版。

参考资料

安装前准备

下载TeX Live镜像

本机环境为64位Ubuntu 16.04,下载发型版为Tex Live 2016。

删除旧版

1
$ sudo apt-get purge tex-common

安装Perk-TK模块

install-tl是一个perl脚本,要在专家GUI模式安装,需要加入XFT支持的Perl-TK模块

1
$ sudo apt-get install perl-tk

安装主程序

挂载ios镜像文件

1
2
$ sudo mount -o loop path_to.iso /mnt
$ cd /mnt

启动安装程序

在加入了XFT支持的Perl-TK模块后,可以用以下方法启动GUI专家模式进行安装:

1
$ sudo ./install-tl -gui

  • 选择安装方案。初级用户推荐直接选择 scheme-full 全部安装。如果磁盘空间有限也可以选择small或者median模式。高级用户可以选择scheme-custom进一步定制。这里我选择了scheme-custom,并且在“进一步定制”里去掉了自己不会用到的一些语言包和ConTeXt相关组件。
  • 由于这里是安装到系统里,因此portable setup选择了否,安装路径为默认。
  • 选项里面选择默认为A4纸张大小,其它一些选项基本都选了是。其中要注意的是创建符号链接会在 /usr/local/bin里面创建指向可执行程序的软链接,从而可以直接使用latex,pdflatex等命令,此外还可以使用man latex等命令查看帮助。
  • 建议在最后的get package updates一项选否,等安装好了之后手动安装更新。

配置环境变量

配置.bashrc文件,在文件最后加上

1
2
3
4
export TEX_HOME=/usr/local/texlive/2016
export PATH=$PATH:$TEX_HOME/bin/x86_64-linux
export INFOPATH=$INFOPATH:$TEX_HOME/texmf-dist/doc/info
export MANPATH=$MANPATH:$TEX_HOME/texmf-dist/doc/man

进入home目录下输入命令使得修改的环境变量生效

1
houmin@cosmos:~$ source .bashrc

测试安装是否成功

1
2
3
4
5
6
7
8
9
10
houmin@cosmos:~$ tex --version
TeX 3.14159265 (TeX Live 2016)
kpathsea version 6.2.2
Copyright 2016 D.E. Knuth.
There is NO warranty. Redistribution of this software is
covered by the terms of both the TeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the TeX source.
Primary author of TeX: D.E. Knuth.

安装完成

1
2
$ cd /
$ sudo umount /mnt

配置字体

XeTeX 和 LuaTeX 可以直接使用系统字体。然而 texlive 自带的字体并不在系统的字体目录里面。为了让系统可以使用texlive所带的字体,需要进行如下配置。

  • 将texlive的字体配置文件复制到系统内
    1
    sudo cp /usr/local/texlive/2016/texmf-var/fonts/conf/texlive-fontconfig.conf /etc/fonts/conf.d/09-texlive.conf
  • 刷新系统字体缓存
    1
    sudo fc-cache -fsv

更新源配置

配置合适的CTAN源可以加快宏包更新的网速,以中科大的源为例:

1
sudo tlmgr option repository http://mirrors.ustc.edu.cn/CTAN/systems/texlive/tlnet

之后可以利用tlmgr进行网络更新。CTAN 上的包更新很频繁,所以即便是最新版的texlive2016,其中也有大量的宏包需要更新(可能包括tlmgr程序本身)。
1
sudo tlmgr update --self --all

dummy package 安装

texlive2016安装之后需要“告诉”系统texlive相关软件包都安装好了。这样在系统安装依赖于tex的软件(比如R)时就不必重新下载软件仓库中的旧版 texlive 相关软件。也不会造成不同版本 tex 命令的冲突。dummy package 就是解决这样的软件依赖问题的“虚包”。

测试LaTeX

这个时候,在testTeX文件夹下编写hello.tex

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
% hello.tex
\documentclass{beamer}%声明文档类型
\usetheme{default}%使用默认主题
\begin{document}

\begin{frame}{A sample slide}

A displayed formula:

\[
\int_{-\infty}^\infty e^{-x^2} \, dx = \sqrt{\pi}
\]

An itemized list:

\begin{itemize}
\item itemized item 1
\item itemized item 2
\item itemized item 3
\end{itemize}

\begin{theorem}
In a right triangle, the square of hypotenuse equals
the sum of squares of two other sides.
\end{theorem}

\end{frame}

\end{document}

编译即可生成beamer格式的slide

1
houmin@cosmos:~/testTeX$ xelatex hello.tex

LaTeX-Sample-Slide

这个时候测试中文是否可行

1
2
3
4
\documentclass[UTF8]{ctexart}
\begin{document}
我爱中国!
\end{document}

编译可以看到输出

LaTeX-Chinese

不过编译的时候会出现warning

1
2
3
4
5
6
7
8
9
10
11
*************************************************
* fontspec warning: "script-not-exist"
*
* Font 'FandolSong-Regular' does not contain script 'CJK'.
*************************************************
)) (/usr/local/texlive/2016/texmf-dist/tex/latex/ctex/config/ctex.cfg)
No file hello.aux.
(/usr/local/texlive/2016/texmf-dist/tex/latex/tipa/t3cmr.fd)
ABD: EverySelectfont initializing macros [1] (./hello.aux) )
Output written on hello.pdf (1 page).
Transcript written on hello.log.

其实貌似这个时候的中文字体已经好了?
编写test.tex

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{gkai}
这是一个楷体中文测试,处理简体字。
\end{CJK}
\begin{CJK}{UTF8}{gbsn}
这是一个宋体中文测试,处理简体字。
\end{CJK}
\begin{CJK}{UTF8}{bkai}
這是一個big5編碼的楷體中文測試,處理繁體文字。
\end{CJK}
\begin{CJK}{UTF8}{bsmi}
這是一個个big5編碼的明體中文測試,處理繁體文字。
\end{CJK}
\end{document}

使用命令pdflatex,不知道为什么用xelatex不行
1
$ pdflatex test.tex

生成pdf文件
LaTeX-Chinese-Sample

编辑器

Atom编辑器

参考

组织文本

参考

作者、标题、日期

保存并用XeLaTeX编译以下文档

1
2
3
4
5
6
7
8
9
\documentclass[UTF8]{ctexart}
\title{你好,world!}
\author{Houmin}
\date{\today}

\begin{document}
\maketitle
你好,world!
\end{document}

导言区添加了有关作者、标题、日期,而在document环境中,多了一个控制命令maketitle。这个命令能够将导言区中定义的标题、作者和日期按照预定的格式显示出来。

章节和段落

保存并用XeLaTeX编译以下文档

数学公式

字体

  • \textrm{},可以在公式中插入正常文本(也可以直接在公式输入文本,但是会出现忽略空格分行等问题)
  • \mathrm{},正常字体
  • \mathit{},斜体
  • \mathbf{},粗体符号boldfont
  • \mathbb{},空心粗体blackboard
  • \mathnormal{},正常字体

插入公式

  • 在段落内插入公式:置于之间
  • 在独立数学公式:置于\[\]之间
  • 需要对行间公式进行编号,则
    1
    2
    3
    \begin{equation}
    ...
    \end{equation}

常用数学公式命令

项目 表示方法 示例 示例效果
上标 ^ x^2 $x^2$
下标 _ x_2 $x_2$
上划线 \overline \overline{m+n} $\overline{m+n}$
下划线 \underline \underline(m-n) $\underline{m-n}$
向量 \vec \vec{AB} $\vec{AB}$
导数 y’y’’ $y’y’’$
平方根 \sqrt \sqrt{x} $\sqrt{x}$
分数 \frac{}{} \frac{4}{a+b} $\frac{4}{a+b}$
求和 \sum \sum_{i=1}{n}a_i $\sum_{i=1}^{n}a_i$
乘积 \prod \prod_{i=1}(n)a_i $\prod_{i=1}^{n}a_i$
积分 \int \iint \iint_a^b f(x)dx $\iint_a^b f(x)dx$
极限 \lim \lim_{n\to\infty}\frac{1}{n} = 0 $\lim_{n\to\infty}\frac{1}{n} = 0$

常用符号

Greek-Symbols

Relation-Symbols

Binary-Symbols

Variable-Sized-Symbols

Arrow-Symbols

Delimiters

Miscellaneous-Symbols

Non-Text-Symbols

常用函数

Functions

矩阵

不同分隔符

amsmathpmatrix,bmatrix,Bmatrix,vmatrix, Vmatrix可以在矩阵两边加上各种分隔符。

1
2
3
4
5
\[ \begin{pmatrix} a&b\\c&d \end{pmatrix} \quad
\begin{bmatrix} a&b\\c&d \end{bmatrix} \quad
\begin{Bmatrix} a&b\\c&d \end{Bmatrix} \quad
\begin{vmatrix} a&b\\c&d \end{vmatrix} \quad
\begin{Vmatrix} a&b\\c&d \end{Vmatrix} \]

显示效果如下:

行内公式矩阵

使用smallmatrix环境,可以生成行内公式的小矩阵

1
Marry has a little matrix $ ( \begin{smallmatrix} a&b\\c&d \end{smallmatrix} ) $.

效果

Marry has a little matrix $ ( \begin{smallmatrix} a&b\\c&d \end{smallmatrix} ) $.

带点矩阵

1
2
3
4
5
\[  A = \begin{bmatrix}
a_{11} & \dots & a_{1n} \\
& \ddots & \vdots \\
0 & & a_{nn}
\end{bmatrix}_{n\times n} \]

效果

无括号矩阵

1
2
3
\[
\sum_{\substack{0<i<n \\ 0<j<i}} A_{ij}
\]

效果

配对括号

在数学公式中,如果直接使用括号,得到的公式会比较简陋,例如

1
2
3
\[
\lim_x(1+\frac{1}{x})^x = \mathrm{e}
\]

效果

我们可以用\left\right命令来自动调整大小的括号,例如

1
2
3
\[
\lim_x \left (1+\frac{1}{x} \right)^x = \mathrm{e}
\]

效果

多行公式

有的公式特别长,我们需要手动为他们换行;有几个公式是一组,我们需要将他们放在一起;还有些类似分段函数,我们需要给它加上一个左边的花括号。

长公式

不对齐

无须对齐的长公式可以使用 multline 环境

1
2
3
4
\begin{multline}
x = a+b+c+{} \\
d+e+f+g
\end{multline}

效果

如果不需要编号,可以使用 multline* 环境代替

对齐

需要对齐的公式,可以使用 aligned 次环境来实现,它必须包含在数学环境之内。

1
2
3
4
\[\begin{aligned}
x ={}& a+b+c+{} \\
&d+e+f+g
\end{aligned}\]

效果

公式组

无需对齐的公式组可以使用 gather 环境,需要对齐的公式组可以使用 align 环境。他们都带有编号,如果不需要编号可以使用带星花的版本。

1
2
3
4
5
6
7
8
9
\begin{gather}
a = b+c+d \\
x = y+z
\end{gather}

\begin{align}
a &= b+c+d \\
x &= y+z
\end{align}

效果

分段函数

分段函数可以用cases次环境来实现,它必须包含在数学环境之内。

1
2
3
4
5
6
\[
y=\begin{cases}
-x,\quad x\leq 0 \\
x,\quad x>0
\end{cases}
\]

效果

自动化工具

绘制图表

演示文稿