0%

一份不太简短的LaTeX简介

我脑子不好使,有些代码不写一遍实在是记不住。
本文简述了$\LaTeX$的发展历史和使用方法,确切的说是使用方法,对历史我没有了解过,其实是我的$\LaTeX$速查笔记。
如果你想从这里面学习$\LaTeX$的操作,也不是不可以,涵盖了所有的基本操作~
后来有人提到:能不能整理Lshort这里面的MWE,我想想,把我之前学习时写过的代码整理一下是可以的,虽然不太全面,也欢迎大家补充或者有更好的方案。
但本文并不正规,你甚至能在里面发现几个错别字。

前言

收获与分享:

代码要多写

  • 代码这种东西,纸上得来终觉浅,学习 $\LaTeX$ 需要强大的耐心。只要你不是神仙,就多写代码,多犯错误。
  • 新手一定不要直接套模板,第一报错不会改,第二不能按自己想要的要求改。先读文档,先读文档,读正规文档,磨刀不误砍柴工。
  • 一定要读正规文档,谨慎考虑其他教育机构等(我看过里面的代码,已经过时)。
  • 本文只是入门,$\LaTeX$博大精深,本文大概有 $\LaTeX$ 3%的内容,但是写论文足够。(应付建模,写科技论文等)
  • 遇到问题不要百度,不要看CSDN的任何东西,这是自暴自弃的体现。这玩意发展很快,而且用这玩意的基本都是老师或者学生,他们学的很可能是几百年前的旧东西,不一定适用现在的情况。
  • 遇到问题请用正规搜索引擎如bing而不是百度,并使用英文搜索,可以减少99%的麻烦。

关于 $\LaTeX$ 的文档有很多,其中有些内容过时地很快。所以有必要告诉大家,哪些文档应该看,那些文档不应该看。索性,这个问题,考虑到大家的英文水平,这里给出相对较好(我认为最好的)的中文教程:
https://mirrors.tuna.tsinghua.edu.cn/CTAN/info/lshort/chinese/lshort-zh-cn.pdf 。我这种笨人的学习方法是:里面所有代码看三遍敲一遍,如果你够聪明,那么你会看得比我多,写的也比我多。

更为详细的宏包手册:Comprehensive $\TeX$ Archive Network(CTAN), www.ctan.org

不要无脑提问,多问多学、不懂就问这是中学时代落伍的想法。我们不排斥任何新手,但一上来就提很无脑的问题都很反感,什么是无脑的问题呢?就是能通过阅读教程很快就能解决的问题。

不会就问只会影响自己的探索能力和浪费别人的时间,手里有电脑能上网,学校图书馆有书,自己先去探索,别人的时间就不是时间了?学的是解决问题的能力,而不是解决某个具体问题。遇到问题如何解决,比在别人的教导下会解决一个问题要来的实在。首先一定要阅读一份合适的文档,这样你能解决掉70%的问题。剩下的30%不常见的问题可以通过谷歌解决。

提问的智慧:提问题时,不要一味的说代码错了,你说一千遍代码还是错了。如果控制变量法解决不了问题。那么你要提供报错信息,提供你原来的代码(居然还有智障怕自己的论文被别人看而不提供代码,可能你的垃圾论文我也不想看,我也不会给这种自以为是的人改代码),提供MWE,说明操作系统,说明使用的发行版。正确提问,虚心请教,交流技术。不要拍照,又不是只有你有手机,请截图,拍照看不清。

更新

第二次读Lshort了,也有了新的收获。第一次读时观其大概,些许内容选择了跳过,为了赶deadline只求快速上手能用,重点放在了如何实现想要的排版。第二次读,更加关注其中的细节。

之前有人在群里说道能不能提供每个章节的MWE,正好,我可以试试。因为第一次学习时里面的代码我都敲过一次,这次来整理一下。(暂时先放到博客,不准备放到github)


前期了解

$\LaTeX$ 是一个文档准备系统,是一种格式,排版引擎为 $\TeX$ ,跨平台,稳定,支持多语言排版。

$\LaTeX$ 中的命令以反斜线开头(回车键上方),大小写敏感。命令可以接受一些参数,可选参数在方括号[]中,必须参数在花括号内{}。

$\LaTeX$ 中的环境在\begin{name}\end{name}之中包裹,部分环境可以嵌套使用。有些命令会产生全局作用,比如\centering。若要限制作用范围,可以将命令限制在一对花括号内,不会影响下文。如{\centering test \par}

下载

现在使用的 TeX 的排版引擎点我下载发布于1982年,稳定、跨平台、几乎没有BUG。 $\LaTeX$ 依赖的 $\TeX$ 排版引擎和其他软件完全开源免费,而且各种跨平台。WinEdt违背了开源的观念,所以更多的推荐使用Latex Studio。点我下载。当然,如果你是个写代码的高手,自然会使用其他的编辑器,如sublime,vscode。我就没必要多此一举的给这些软件的安装包了,毕竟你是写代码的高手。

代码结构

1
2
3
4
5
\documentclass[options]{...} % 指定文档类别
\usepackage{} % 导言区,调用宏包和全局设置
\begin{document} % 开始写文档
hello world
\end{document}

文档类别由documentclass指定,包括article(科技论文、报告、说明文档),report(长篇论文,比如硕博论文),book(书籍),ctexart(支持中文的article的派生类),beamer(PPT)等,规定了生成文档的性质。

options可以全局规定包括字号(默认10pt)、公式与编号对齐方式(fleqnleqno)、双栏排版、纸张类型、横纵排版、草稿模式等排版元素。常用:

1
\documentclass[11pt,a4paper]{ctexart}

\usepackage{} 中调用的宏包用于扩展和增强 $\LaTeX$ 。宏包内定义了环境和命令,查阅方式为命令行内:texdoc yourfilename

文件结构

$\LaTeX$ 在编译中除了生成最终的pdf文件外,还会在同目录下生成辅助文件和日志,如log是日志记录文件,aux是记录交叉引用,bbl记录参考文献,一些特殊的功能如交叉引用需要编译生成辅助文件,再次编译读入辅助文件得到正确的结果,如:编译两次才能生成目录。

所以,没必要删除辅助性文件。当一份正确的代码无法编译过去时,可以尝试删除其中的aux文件。(一个简单的经验,不一定通用)

组织多个文件

脑补在写代码的过程中会将代码分为多个文件, $\LaTeX$ 也不例外。如在写毕业论文时,可以分为多个文件。使用inlcude{filename}来插入。但是include会另起一页,不如使用\input将文件里的内容插入。具体如下(两者在相同目录):

MWE.tex

1
2
3
4
5
6
7
8
\documentclass{ctexart}
\begin{document}

hello world

\input{MWE1.tex}

\end{document}

MWE1.tex

1
2
3
\section{test}

hello \LaTeX

效果如下:

命令、引擎、格式

通俗理解:引擎是编译器,将源程序翻译为二进制,CPU执行二进制机器代码输出最后的pdf文件。格式是定义命令的代码集合,命令是实际调用编译和格式的总和,调用引擎,分析格式,最终编译代码生成文档。中文排版推荐xelatex命令(结合了 XeTeX 引擎和 $\LaTeX$ 格式),支持系统预装字体(ttf)和支持UTF8编码。


排版中文

警告:此处开始会有图片,图片的源代码在图片的下方,两者结合观看效果更加。

CCT、CJK退出历史舞台,如果不是被老师强迫,就不要再用了。
建议源代码的编码方式为UTF8(一到四个字节的可变长编码,支持各国语言,也就支持中文),xelatex命令原生支持UTF8编码,本文内容均使用UTF8编码,xelatex命令编译。

xeCJK宏包完善了排版中文的细节,可以简单的配置中文字体,支持简单命令配置中文字体。以下的代码只是设置中文而不是汉化:

1
2
3
4
5
6
\documentclass{article}
\usepackage{xeCJK}
\setCJKmainfont{SimSun}
\begin{document}
中文
\end{document}

ctex宏包和文档类是对xeCJK的进一步封装,ctex文档类中包括ctexart(封装了标准文档类article),符合中文的排版习惯,如英文的排版习惯中,章节第一段不缩进,不符合中文的排版习惯。UTF-8编码下xelatex配合xeCJK或者ctex宏包的方式成为目前主流的中文排版方式。
于是上面代码何以简化为:

1
2
3
4
5
\documentclass{article}
\usepackage{ctex} % 进一步封装xeCJK
\begin{document}
中文
\end{document}

也许感觉上述代码多此一举,但它确实有用。比如在使用国外大学写的beamer(一种ppt模板)时,发现无法显示中文,\usepackage{ctex}就是一个在国外的文档类中显示中文的很好的方法。(我只是测试过能用,好不好的就不了解)。也可以简化为(并不等价,只是都能显示中文)

1
2
3
4
\documentclass{ctexart} % 彻底的汉化,包括文字
\begin{document}
中文
\end{document}

  • 多个空格为一个空格,一行开头的空格忽略不计,一个回车视为一个空格,多个回车视为分段。
  • \par命令也为分段,{}表示不要忽略后面的一个空格。
  • %表示注释,Ctrl+T多行注释,Ctrl+U取消多行注释。(仅限texstudio编辑器,matlab也是这个快捷键)
  • 特殊字符用反斜杠\\转义反斜杠为:`\textbackslash’。
1
2
3
4
5
6
\documentclass{ctexart}
\begin{document}
中文\par %此处分段
测试
\TeX{} users % 取消花括号也会取消空格
\end{document}

连字处理,引号,破折号,省略号,波浪号,文字强调,间距。talk is cheap,show me your code。看下效果,这个图片里的内容是“文档”,代码提供参考。

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
\documentclass{ctexart}
\usepackage{ulem}
\begin{document}
中文\par % 分段
测试 % 段落开始的空格无用
\TeX{} users

连字处理,看两个f之间的距离:different \quad dif{}f{}erent

引号:``单引号为`英文'双引号的左引号为键盘ESC下面那个"

连字符:X-input,范围:13--67, 破折号:孔夫子搬家---全是输 % 注意个数不一样

省略号:1,2,3, \dots ,4,5,6 \ldots % 两者相同

西文很少用波浪号:1\~{}2,\quad $1\sim 2$ 。更多符号由特定宏包支持。

have a \emph{emphasize in latex \emph{environment}} % 注意字体的变化

\uline{下划线推荐使用ulem宏包的\textbackslash uline命令。}

\LaTeX 的空格和断行是自动调整的,尽可能使行距一致,单词间距匀称。在合适位置断页,尽量在两个单词之间断行。
加波浪号\~{}会产生不会产生断行的微小空格Fig.~2a 。\\[6pt] % 强行调换行的间距,

\textbackslash \textbackslash *[6pt] 带有星号表示断行处禁止分页。换行时,\textbackslash newline 只能用于文本段落,
\textbackslash \textbackslash 可以用于表格、公式等环境的分段。{\textbackslash newpage}表示断页,或者另起一栏。

\textbackslash -指定英文断词位置,当然断词的前提是一行站不下了。muyu0223@outl\-ook.com

\end{document}

LaTeX大杀器——数学公式

依赖宏包:amsmath,由美国数学学会American Mathematical Society提供,支持常见的\notag, eqref操作,主要内容:行内公式、行间公式、编号、特殊符号、多行公式、矩阵、定理。内容太多,分批来吧。

行内公式、行间公式、编号、引用


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
\documentclass[fleqn]{ctexart}
\usepackage{amsmath}
\begin{document}
进入数学模式,行内公式:$a+b=c$,与文字混排。

行间公式:$$a^2+b^2=c^2$$

编号与引用:
\begin{equation}
\lim_{n \to \infty}\sum_{k=1}^{n}\frac{1}{k^2}=\frac{\pi ^2}{6}
\label{eq1}
\end{equation}

根据\eqref{eq1},我们blablabla\ref{eq1},两种引用方式的区别。

\begin{equation}
\int_{0}^{\frac{\pi}{2}} f''(x)\mathrm{d}x=1\tag{3}
\end{equation}

\begin{equation}
\int_{0}^{\frac{\pi}{2}} f''(x)\mathrm{d}x=1\notag
\end{equation}

不设置tag默认顺序编号,也可以用\textbackslash notag 取消编号的显示。
设置了的话可以改变公式的编号。微分的$\mathrm{d}$是正体,不是这个$d$

三种不同的行间公式实现方式 equation* ,displaymath 和 \textbackslash [ \textbackslash ]
\begin{equation*}
f(x) + b
\end{equation*}
\[
f(x) + b
\]
\begin{displaymath}
f(x) + b
\end{displaymath}
继续:$\frac{3}{4}$, $\displaystyle{\frac{3}{4}}$ \quad $\sqrt[n]{x^2+y^2}$,\quad $\sum_{1}^{n}$
求和的这个在行内公式和行间公式不一样,看\eqref{eq1}。
当然强行更改也可以:$\sum\limits_{1}^{n}$。向量:$\vec{a}_1$$\vec{a_1}$

不推荐使用四个\$符号输入行间公式,因为无法指定fleqn选项设置左对齐,不信看上文。

\end{document}

行间公式不能用两个斜杠换行,多行公式应该用特殊的环境。

数学符号

  • 间距调整
  • 数学模式插入文字
  • 常用数学符号,定界符,箭头,巨算符等

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
\documentclass{ctexart}
\usepackage{amsmath}
\begin{document}

数学模式中几种调节间距的方式, 无法使用单纯的空格产生距离。

$$ax+b\quad ax+b$$
$$ax+b\qquad ax+b$$
$$ax+b\, ax+b$$
$$ax+b\: ax+b$$
$$ax+b\; ax+b$$
$$ax+b\! ax+b$$

两种省略号:$a_1, a_2, a_3, \dots, a_n, \ldots$, $a_1+a_2+a_3+\cdots+a_n$, 前两种用于数学或者文本均可。

$f(x)=x^3 \Longrightarrow f'(x)=3x^2 \Longrightarrow f''(x)=6x \Longrightarrow f'(x)=\frac{\mathrm{d}y}{\mathrm{d}x} $.
$x^2 \geq 0 \text{ when } x=2$ 数学环境中插入文字,与文字环境中插入数学公式是两种不同的东西,切不可滥用。如$\text{假设
曲线上一点}x$,就是不合理的行为。

分数的不同表现形式:

行内:3/8, $\frac{3}{8}$, $\dfrac{3}{8}$, $\tfrac{3}{8}$ $\displaystyle{\frac{3}{8}}$

行间

$$3/8 \quad \frac{3}{8} \quad \dfrac{3}{8} \quad \tfrac{3}{8}$$

公式符号的叠加$g(x)\stackrel{*}{\approx}4x^3+3$, 当然还有好多$\Delta, \div, \times, \mp, \pm, \Im$ 用到的时候查阅相关
资料即可。

\end{document}

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
\documentclass{ctexart}
\usepackage{amsmath}
\usepackage{amssymb}
\DeclareMathOperator{\argh}{argh}
\begin{document}

也可以支持不同的小于号,后者需要amssymb宏包的支持。$\leq \quad \leqslant$

也可以使用DeclareMathOPerator自定义命令$\argh abc$ (amsmath宏包支持).
巨算符的大小和形状在行内和行间是有区别的,但也可以强行更改。

行内:$\int_0^1 \quad \sum_{i=1}^n \quad \int\limits_0^1 \quad \sum\limits_{i=1}^n$

行间:$$\int_0^1 \quad \sum_{i=1}^n \quad \int\nolimits_0^1 \quad \sum\nolimits_{i=1}^n$$

公式下标上的表达式: $\displaystyle{\sum_{\substack{i\to 0 \\ j \to \infty}}P(i,j)=Q(n)}$。此外,subarray环境支持
左对齐和居中对齐,但不支持右对齐。

$$\sum_{\begin{subarray}{l}
i\to 0 \\ j \to \infty
\end{subarray}}
P(i,j)=Q(n)$$

$$\sum_{\begin{subarray}{c}
i\to 0 \\ j \to \infty
\end{subarray}}
P(i,j)=Q(n)$$

各种箭头:$\vec{x} \quad \vec{AB} \quad \overrightarrow{AB} \quad 0.\overline{3} \quad
c\xrightarrow[1+1]{2+2+2+2+2+2+2}d$

overbrace 和 underbrace 命令生成上/下括号,自带上/下标的公式

$$\underbrace{\overbrace{(1+2+3+4)}^{10} \cdot \overbrace{(5+6+7+8)}^{26}}_\text{value}=260$$

\end{document}

定界符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
\documentclass{ctexart}
\usepackage{amsmath}

\begin{document}

几种常见的定界符 () [] \{\} $\langle \rangle$

left和right是成对出现的定界符,大小根据公式的大小而变化。$\left( ax+b \right) \left( \frac{1}{9x-c} \right)$

如果一方并不需要输入定界符,如左侧不需要,则需要写成left. $\left. \frac{\partial y}{\partial x}\right|_{x=2}$

而用left和right分节符包裹的公式快不允许断行,所以不能在跨行公式内使用。如果执意要使用,需要使用\textbackslash big 等
不必成对出现的定界符。(只有在输入左右括号的时候才需要输入 r l 表示左右的方位关键字)。

$$\bigl( \Bigl( \biggl( \Biggl( \bigr\} \Big\| \big\| \Big\| $$

\end{document}

长公式与多行公式

折行顺序:等号前 $\to$加减前 $\to$ 乘除前。此外

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
\documentclass{ctexart}
\usepackage{amsmath}
\begin{document}

最简单的是最丑的:
\begin{multline}
a+b+c+d+e+f+g+h+i+k\\
=j+l+m+n+o+p+q\\
=r+s+t
\end{multline}

限定对齐:\textbackslash tag 取消编号。
\begin{align}
Y &= a+b+c+d+e+f+g+h+i+k\\ \notag
&= j+l+m+n+o+p+q\\
&= r+s+t
\end{align}

多组对齐:
\begin{align}
a &= ((x+1)(y-1))^2 & c &= \epsilon\\
b &= \Bigl((x+1)(y-1)\Bigr)^2 & d &\to \theta
\end{align}

胡乱对齐:
\begin{gather}
a\stackrel{*}{\approx}b\mp c\\d=e\pm f\times g\\h\cdot a=3\div 6
\end{gather}

只有一个编号的对齐:
\begin{equation}
\begin{aligned}
Y &= a+b+c+d+e+f+g+h+i+k\\
&= j+l+m+n+o+p+q\\
&= r+s+t
\end{aligned}
\end{equation}

\end{document}

矩阵、分段函数、行列式

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
\documentclass{ctexart}
\usepackage{amsmath}
\begin{document}

特意翻了下线代书,这个叫矩阵:
\[\mathbf{X}=\left(
\begin{array}{cccc}
x_{11} & x_{12} & \cdots & x_{1n}\\
\vdots & \vdots & \ddots & x_{nn}\\
\end{array}
\right)
\]

分段函数:
\[ |x| =
\begin{cases}
-x & \text{if} \,x < 0,\\
x & \text{if} \,x \geq 0. \\
\end{cases} \]

行列式:
\[
\left|\begin{array}{cccc}
1 & 6 & 9 \\
7 & 90 & f(x)\\
9 & \psi(x) & g(x)
\end{array}\right|
\]

另一种矩阵:
\[
\left[\begin{array}{cccc}
1 & 6 & 9 \\
7 & 90 & f(x)\\
9 & \psi(x) & g(x)
\end{array}\right]
\]

\end{document}

重点:数学公式中的排版。也许你用过mathtype这款软件,我在这里准备逼死一下强迫症,在mathtype里面选中数学符号,然后按Ctrl+ $\to$ ,还有Ctrl+shift+>试试,公式位置被移动,大小被改变,刺不刺激。

有一款新的国产软件,叫Axmath,好像是浙江大学研发的,点我下载。2018年暑假购买的,用过一次,说实话,甩mathtype几条街,安装后word提供接口,支持mathtype格式输入和 LaTeX格式输入,能画图,也能画动图,但是个人感觉跟word的交互感不是很好,近期没有折腾过。

说到这里,还是提倡不要搞破解,以为破解是很技术的事,其实破解这种东西一点都不尊重别人的劳动成果,完全是在“偷鸡摸狗”。每个人都不希望自己的劳动成果被别人窃取,如果有一天发现自己努力的成果被别人窃取、贩卖、侮辱,自己是什么心情呢?所以,从自己做起,说好听的叫尊重别人的成果,说难听的叫积点阴德。所以,我是正儿八经的购买的Axmath,没有用所谓的破解。

我也提倡去购买,还有一个事,可以去办理edu邮箱,国外的好多软件很重视对学生的教育,如果你有edu邮箱,好多软件都会有优惠,甚至将近一折的优惠,甚至免费。比如jetbrains公司旗下的软件,python的IDE:pycharm,数据库的IDE:DataGrip等,如果有edu邮箱,这些东西完全免费。

说正事:LaTeX中的公式排版。

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
\documentclass{ctexart}
\usepackage{amsmath}
\usepackage{amssymb}
\newcommand{\diff}{\mathrm{d}} %自定义命令
\begin{document}

花体:$\mathcal{R}$

在花一点:$\mathfrak{R}$,太花的依赖宏包amssymb。

公式尺寸:行间公式\textbackslash textstyle,比如$P=\frac{num}{den}={\displaystyle{\frac{num}{\iint f(x)\diff x}}}$

行间公式大小控制:\textbackslash displaystyle
$$\mathcal{X}=\frac{\sum_{i=1}^{10}(x_i-\bar{x})}{\displaystyle\sum_{i=1}^{12}{(x_i^2-\hat{x})}}$$

公式字体加粗:
$R = \mathbf{R}$

希腊数学符号加粗:
$\boldsymbol{\mu} \, =\, \mu$

调公式间距:
$aa$
$a\,a$
$a\:a$
$a\;a$
$a\ a$
$a\! a$
\end{document}

公式识别

神器推荐:点我是网址。。不认识的字在里面画一下,后台告诉你叫啥,没准后台是是CNN,我瞎猜的,看下效果比如:


LaTeX灵魂——字体设置

字体的倾斜、加粗、大小、行间距、段间距设置等。

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
\documentclass{ctexart}
\usepackage{fouriernc}
\usepackage{fontspec}[no-math]
\begin{document}

这个是fouriernc宏包下,fourier风格的数学字体$\mu$,New Century Schoolbook字体。

normal typeface

\textbf{bold typeface}

\textit{tilted typeface}

\emph{emphasized typeface}

\fontsize{12}{14}\selectfont
Settings to font size and row spacing,\textbackslash fontsize\{\}\{\}
的第一个参数是字体大小,第二个参数是行间距,必须加上\textbackslash selectfont才能立刻生效。

更改字体的宏包要设置选项\textbackslash usepackage\{fontspec\}
[no-math],不然选择的数学字体会被覆盖。

\setmainfont[BoldFont={Arial Bold}]{Arial}
这里是Arial字体。

\setmainfont{Times New Roman}
这里是Times New Roman字体。

\songti 宋体

\heiti 黑体

\fangsong 仿宋

\kaishu 楷书

\end{document}

全文排版:间距。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
\documentclass{ctexart}

\begin{document}

\textbackslash linespread\{\}是改变行距的命令,里面的参数是一个因子,
默认行距是$1.2$倍的字体大小,
\textbackslash linespread\{1.5\} 意味着有$1.8$倍的行间距。
使用的时候要配合\textbackslash selectfont 和\textbackslash par命令。

\linespread{0.8}\selectfont 为了显示行间距,配一段文字,
《简·爱》是2011年焦点电影公司出品的一部美国爱情片,
由凯瑞·福永执导,由迈克尔·法斯宾德、米娅·华希科沃斯卡、杰米·贝尔、朱迪·丹奇等联袂主演。
影片于2011年3月11日在美国上映。影片改编自英国女作家夏洛蒂·勃朗特的同名小说,
讲述一位从小变成孤儿的英国女子在各种磨难中不断追求自由与尊严,
坚持自我,最终获得幸福的故事。\par

\noindent \linespread{1}\selectfont 取消缩进:从小失去父母的简·爱(米娅·华希科沃斯卡饰)寄居在舅妈家,
自幼受尽表兄(克雷格·罗伯兹饰)欺辱和舅妈(莎莉·霍金斯饰)冷眼,稍大些后即被送入管教严格的教会女子学校。
在冷漠、刻板环境中长大的简·爱并没有成为心理扭曲的女孩,而是自立自强,
还积累了不凡的学识修养,成年后她成为桑菲尔德贵族庄园的家庭教师。\par

另外,LaTeX在section,chapter后面默认第一段不缩进,不习惯的话,调用indentfirst宏包。

\end{document}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
\documentclass{ctexart}

\begin{document}


看一下 \LaTeX 的段落间距设置。间距即为长度,\{1ex plus 0.5ex minus 0.2ex\}意思是
段落间的距离在$[1+0.5,1-0.2]$之间变动。
具体变动多少看排版的情况。\par
\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}
水平间距:常用的为\textbackslash quad,\textbackslash qquad。

\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}

竖直间距:\textbackslash vspace,这个命令产生的间距会被断页被吞噬
,而\textbackslash vspace\* 不会。


\TeX 增加12pt的段间距。 \vspace{12pt} \par
\TeX
\end{document}

LaTeX未走之路——tikz绘图

为什么叫未走之路呢?因为这玩意我没用过,而且没有这个需求,为了体现latex的强大,乱入一段有关tikz绘图的东西。

在绘制流程框图时,有许多工具可以采用,最著名的有微软的Viso,而开源的有Graphviz、PGF/TikZ,Graphviz是采用dot语言的一个矢量图生成系统,但是不支持 LaTeX 公式,安装也比较麻烦。PGF是用于生成矢量图的一种语言,而TikZ则是在 TeX 环境下的一个宏包,实现了对PGF的封装,所以我们要使用TikZ,就需要先配置 LaTeX 环境,用TikZ绘制出来的图形效果非常好,原生支持所有 LaTeX 语法,同时能和正文的文字字体保持高度一致,但是学习曲线略微陡峭,适合有排版强迫症的同学。

看下效果,因为我不会TiKz,所以,下面的图不是我画的,所以给出源代码的地址,画图的源代码在这里。你没猜错,这些图都是用程序画的,直接“封装”进了文档,不是插图进来的。


LaTeX颜值——特殊工具和文档元素

页边距设置

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
\documentclass{ctexart}
\usepackage{geometry}

\begin{document}
\newgeometry{left=1.25in,right=1.25in,top=1in,bottom=1in}

页面参数设置使用geometry宏包,我记得geometry这个单词是几何学的意思,
然而不知道为啥这个宏包起了这么个名字。

第一种:\textbackslash geometry\{left=1cm,right=1cm,top=2.5cm,bottom=2.5cm\}

第二种:microsoft word 习惯的页面设定是A4,上下边距1英寸,左右边距1.25英寸。
\textbackslash geometry\{left=1.25in,right=1.25in,top=1in,bottom=1in\}

还有个问题,也是去年遇到的,第一页摘要页是一种页边距,
但是不想影响后面论文的边距,又该怎么操作呢。

设置当前页:

\textbackslash newgeometry\{left=3cm,bottom=1cm\}

新的一页在new一个。
\textbackslash newgeometry\{left=5cm,right=5cm,top=2cm,bottom=2cm\}
有关页边距的测试。

\end{document}

页眉页脚设置

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
\documentclass{ctexart}
\usepackage{fancyhdr}
\pagestyle{fancy}
\begin{document}

页眉页脚为空:
\textbackslash pagestyle\{empty\}

当前页面的页眉页脚为空:
\textbackslash thispagestyle\{empty\}

页眉空,页脚为页码:
\textbackslash pagestyle\{plain\}

页脚空,页眉为章节标题和页码:
\textbackslash pagestyle\{headings\}

自定义页眉:
\textbackslash markboth\{左上角的页眉\}\{右上角的页眉\}
但是,说实话自定义的这个不对,也不是不对,和原有的ctexart中的页眉设置冲突了。
所以,介绍种新技术:fancyhdr宏包。

导言区:
\textbackslash usepackage\{fancyhdr\}
\textbackslash pagestyle\{fancy\}

清空所有页眉页脚:
\textbackslash fancyhf\{\}

左上页眉:
\textbackslash fancyhead[L]\{test1\}

中间页眉:
\textbackslash fancyhead[C]\{test2\}

右上页眉:
\textbackslash fancyhead[R]\{test3\}

页脚为页数:
\textbackslash fancyfoot[C]\{\textbackslash bfseries\textbackslash thepage\}

\end{document}

章节

此处遇到一个坑,在使用{geometry}宏包设置边距和{fancyhdr}宏包设置页眉的时候,一定要先设置页面在设置页眉,否则先设置页眉在设置页面的话,页眉不够长。


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
\documentclass{ctexart}
\usepackage{geometry}
\geometry{left=2.25cm,right=2.25cm}
\usepackage{fancyhdr}
\pagestyle{fancy}

\begin{document}
\fancyhead[L]{test1}
\fancyhead[C]{test2}
\fancyhead[R]{test3}
\fancyfoot[C]{\bfseries\thepage}

\tableofcontents
\newpage

\LaTeX 中编写论文时,肯定要考虑到大标题小标题,在report和book中使用的是\textbackslash chapter,
但是更常用的是\textbackslash section,
所以这里重点介绍\textbackslash section。

\section{简短介绍}

\textbackslash section[目录、页眉页脚显示的内容]\{正文显示的标题\}

\section*{不带编号}
\addcontentsline {toc}{section}{1.1不带编号}
\textbackslash section*\{正文显示的标题\}这样操作的标题没有编号。
而且这样形式的标题不会出现在页眉页脚和目录中,怎么解决呢?
\textbackslash tableofcontents 在命令的当前位置生成目录章节,而且生成的标题为``Contents"。

在使用了\textbackslash section*\{\}的位置,如果想在目录和页眉页脚加入此章节,在标题后面使
\textbackslash addcontentsline\{toc\}\{sect\-ion或chapter\}\{出现于目录的标题\}

\section{有关小标题}
\subsection{小标题}
\subsubsection{小小标题}

\textbackslash subsection\{小标题\}生成小标题

\textbackslash subsubsection\{小小标题\}生成小标题

\end{document}

列表


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
\documentclass{ctexart}
\begin{document}

有序列表:\textbackslash begin \{enumerate\}
无序列表:\textbackslash begin \{itemize\}
如下所示:

\begin{enumerate}
\item 假设我说的都对
\begin{enumerate}
\item 这么说是有参考文献的
\item 但是那个参考文献我找不到了
\item[·] 我好像在说废话
\end{enumerate}
\item 假设别人说的都不对
\begin{itemize}
\item 因为他们不会做
\item 而且还是抄的
\end{itemize}
\item 这么说肯定不行
\end{enumerate}

列表中第一个重点词加粗:\textbackslash begin \{description\}
\begin{description}
\item[blablabla] 和后面的blablabla
\item[test] 和后面的test
\end{description}

\end{document}

对齐方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
\documentclass{ctexart}
\begin{document}

\begin{center}
标题要居中对齐。
\end{center}

来一段无关的文字,体现出了恢复两端对齐。《挪威的森林》是日本作家村上春树于1987年所著的一部长篇爱情小说。
故事讲述主角纠缠在情绪不稳定且患有精神疾病的直子和开朗活泼的小林绿子之间,
展开了自我成长的旅程。\par

一般我很少用居中对齐的环境,居中对齐有两种表达形式:\textbackslash centering ,
这个后面的一句话会居中对齐,但是不产生额外的间距。而\textbackslash begin\{center\}会产生一个间距。
所以提倡在文章居中使用\textbackslash begin\{center\}
在表格、图片中插入居中的标题使用\textbackslash centering 。
\end{document}

LaTeX论文必备——参考文献

之前折腾过有关参考文献的东西,但好像一直不如人意,所以这次又来光顾参考文献了。一点一点来:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
\documentclass{ctexart}
\usepackage{geometry}
\geometry{left=2.25cm,right=2.25cm}
\usepackage{fancyhdr}
\pagestyle{fancy}
\begin{document}

不同文章对参考文献的需求不一样,自己书写参考文献还有点头疼。介绍下 \LaTeX 中的操作。

\textbackslash cite\{citation\}命令在正文引用参考文献,citation是引用的标签。
参考文献由thebibliography环境包裹,每条参考文献由\textbackslash bibitem\{citation\}开头。
而thethebibliography带一个参数,99表示不超过参考文献的编号不超过两位数。
说到这里,来动手实践\cite{c1}:可见,这样的参考文献已经符合美赛的格式要求,
当然这不是重点,以及注意右上角的页眉。

\section{正文}

\begin{thebibliography}{99}
\bibitem[1]{c1} 李洋,方滨兴,郭莉,田志宏. 基于主动学习和TCM-KNN方法的有指导入侵检测技术[J]. 计算机学报. 2007(08)
\end{thebibliography}

\end{document}

有关bibtex做参考文献数据库

bib文件的书写

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
\documentclass{ctexart}
\usepackage{geometry}

\usepackage{hologo}
\usepackage[numbers,sort&compress]{natbib}
\geometry{left=2.25cm,right=2.25cm}
\usepackage{fancyhdr}
\pagestyle{fancy}

\bibliographystyle{plain}

\begin{document}

\section{正文}

{\color{teal}有关使用\hologo{BibTeX}做参考文献数据库的介绍:}

{\color{teal}\hologo{BibTeX}是目前最为流行的参考文献的数据组织格式之一,
数据库以.bib为扩展名,是一个单独的文件,放在与当前tex文件相同目录下。}


{\color{teal}\hologo{BibTeX}数据库对文件的格式要求:\begin{lstlisting}
@article{Alice13,
title = {brief introduction to LaTeX}
author = {LIU JIA WEI},
year = {2018}
journal = {Journal},
volume = {36},
number = {7},
pages = {114-120}
}
\end{lstlisting}
其中,article处有四个选项,article,book,incollection,inbook。
article是科技论文,必须有author,year,journal;book是书籍,必须有author,title,publisher,year;
inbook是书中的一章,在book的基础上必须有chapter项,
incollection是论文集中的一篇,在article的基础上必须有publisher和booktitle;
Alice1是引用时使用的标签。
是不是很麻烦?不是,因为很多时候不用自己写\hologo{BibTeX}的条目,
期刊的网站或者Google Scholar都能导出\hologo{BibTeX}文献的条目\cite{Alice1},
开源软件JabRef支持生成\hologo{BibTeX}文献条目的导出管理等。
不同的文献写法在不用的文献里千差万别,在使用\hologo{BibTeX}时,用style样式来管理写法。
预定义的样式有plain,unsrt,alpha等,如果是给定的期刊,按给定期刊的来,
期刊会给你一个.bst的文件\cite{Alice2},样式就在这个文件里。
在使用\hologo{BibTeX}时,导言区使用\textbackslash bibliographystyle\{style样式\}
而且在列出参考文献的位置使用\textbackslash bibliography\{数据库名\}代替thebibliography。
然后,四遍编译过程,第一遍xelatex编译原文件,
第二遍以Bibtex的形式编译bib文件,第三遍xelatex编译原文件,
第四遍xelatex编译源文件。然后搞定~}


\bibliography{books}
\end{document}

LaTeX图文并茂—-插图与表格

插图为单幅图片,左右子图;表格就是三线表。


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
\documentclass{ctexart}
\usepackage{geometry}
\geometry{left=2.25cm,right=2.25cm}
\usepackage{fancyhdr}
\pagestyle{fancy}
\usepackage{subfig}
\usepackage{graphicx}
\begin{document}

图片里面有个浮动体,那个不太容易操作。
好的论文是不是要图文并茂,好的,再来个图。此时发现图片跑到了文本的上面,为什么会这样呢?
figure是浮动体的环境,因为\LaTeX 排版会把尺度大的东西脱离上下文。
所以,要加上限制浮动体的东西。

\textbackslash figure[placement]中,placement里面有四个参数:htdp,h:当前位置,t:顶部,b:底部,p:单独成页。
加上h他就去他该去的地方了。
\begin {figure}[h]
\centering % 居中显示
\includegraphics[width=10cm,height=6cm]{aaa.png}
\caption{第一个破图} % 标题
\end {figure}

再来看一个并排显示子图的东西。\textbackslash subfig宏包。
其中,每页不超过3个浮动体,底部不超过2个,顶部不超过1个。
一页里面不要放太多图片和表盒,不然调着真挺费劲的。并排的图尽量小点,不然占不下。

\begin{figure}[hb!p]
\begin{minipage}[t]{0.5\linewidth}%设定图片下字的宽度,在此基础尽量满足图片的长宽
\centering
\includegraphics[height=5.5cm,width=8cm]{bbb.png}
\caption*{(a) This is the left picure.}%加*可以去掉默认前缀,作为图片单独的说明
\end{minipage}
\begin{minipage}[t]{0.5\linewidth}%需要几张添加即可,注意设定合适的linewidth
\centering
\includegraphics[height=5.5cm,width=8cm]{ccc.png}
\caption*{(b)This is the right picture.}
\end{minipage}

\caption{This is total name.}%n张图片共享的说明
\end{figure}

\end{document}

表格

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
\documentclass{ctexart}
\usepackage{geometry}
\geometry{left=2.25cm,right=2.25cm}
\usepackage{fancyhdr}
\pagestyle{fancy}
\usepackage{booktabs}
\usepackage{multirow}
\begin{document}

表格的环境tabular一般放在\textbackslash table 浮动体环境中,
直接使用tabular的话会容易和周围的文字混排。\textbackslash\{tabular\}\{参数\}
其中参数用于设置对齐方式和列宽。l:左对齐,c:居中,r:右对齐,p\{6em\},设置列宽。
参数之间使用|能够画竖线, \textbackslash hline用于绘制每行之间的直线。

还是多动手吧:

\begin{table}[h]
\centering
\caption{某些特殊符号}
\begin{tabular}{c|c|c|c|c|c}
\hline
test1 & $\eta$ & $\Omega$ & $\ddagger$ & $\subseteq$ & $\clubsuit$ \\ \hline
test1 & $\eta$ & $\Omega$ & $\ddagger$ & $\subseteq$ & $\clubsuit$ \\ \hline
\end{tabular}
\end{table}

\textbackslash cline\{$i\leftrightarrow j$\}用于绘制$i\leftrightarrow j$之间的线。
动手如下:(注意表1和表格的间距,表2和表格的间距)

\begin{table}[h]
\centering
\caption{cline操作}
\vspace{3pt}
\begin{tabular}{|c|c|c|}
\hline
1 & 2 & 3 \\ \cline{2-3}
4 & 5 & 6 \\ \cline{1-1}
7 & 8 & 9 \\ \hline
\end{tabular}
\end{table}


单元格合并问题:使用\textbackslash muticolumn\{合并的列数\}\{合并后的格式\}\{合并后的标题\}。操作:

\begin{table}[h]
\centering
\vspace{3pt}
\begin{tabular}{cccc}
\hline
\multicolumn{4}{c}{标题}\\ \hline
1 & 2 & 3 & 4 \\ \hline
\end{tabular}
\end{table}

\end{document}

三线表

切记,合并完后加一个 & 符号,用于占位。表示合并完了也要占点位置。

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
\documentclass{ctexart}
\usepackage{geometry}
\geometry{left=2.25cm,right=2.25cm}
\usepackage{fancyhdr}
\pagestyle{fancy}
\usepackage{booktabs}
\usepackage{multirow}
\begin{document}

\textbackslash booktabs宏包支持,科技论文常用的三线表,居中显示配标题:

\begin{table}[h]
\centering
\caption{三线表}
\vspace{3pt}
\begin{tabular}{cccc}
\toprule % 绘制第一条线
\multicolumn{4}{r}{textnumber} \\ \cmidrule{2-4}
& 1 & 2 & 3 \\ \midrule
\multirow{2}{*}{TEST} &
A & B & C \\ &
I & II & III \\ \bottomrule
\end{tabular}
\end{table}

\end{document}

感谢上学期间打赏我的朋友们。赛博乞讨:我,秦始皇,打钱。

欢迎订阅我的文章