很不好意思晚更新了几天。最近事情较多,打赏太少,夜里没有太大的动力写文章。加上目前在airbnb找的地方晚上没有一个可靠的桌子,写文章的难度进一步加大。今天我们继续来说说公式该怎么想。LaTeX来书写公式,总体上还是有一点点难度的,尤其是很复杂的公式。但是考虑到word里写公式也是很麻烦,还经常卡死,所以写公式对于各种编辑器都是很难的事情了。话说回来,用Word写公司的难度随着你的使用并不会降低,但是LaTeX一但你掌握了,就特别快了。另外还是得再说一遍,本教程的大部分的讲解仅适用于我提供的模板。请看到新的文章就去Github上下载我最新上传的模板。在写课程的同时,我也在不断升级模板的。

公式应该是科研和学习中最重要的表达形式之一了,从我们学数学的第一天起,就和公式结下了不解之缘。一个好的公式,不仅要正确,还要看起来形式很美。这里的形式包括公式推导的形式和公式的表现形式。LaTeX作为全世界最流行的学术写作工具,在公式的表现上是一流的,初步掌握之后,就能写出教科书般漂亮的公式了。但是,看完这篇文章,并不能保证大家能够很快就学会怎么写公式。看完还是需要多加练习,即便是我也记不住很多特殊符号的命名。但我看到一个公式一点都不虚,我知道一定能写出来,而且不复杂。大家看完这一讲,如果能够不虚,我觉得就起到效果了。

公式的一般语法

插入语法

在LaTeX中,允许大家在文中插入三种形式的公式,但我们一般只用两种,所以我只讲两种:

1.  在行文中插入公式(inline mode)
其语法是:

质能方程的公式是$E=mc^2$。

显示的效果为:
质能方程的公式是\(E=mc^2\)。

2.  将公式单独显示并编号(displayed mode)
其语法是:

欧拉公式为:
\begin{equation}\label{equ:equation1}
e^{ix}=\cos x+i\sin x
\end{equation}

显示的效果为:
欧拉公式为:
\[
e^{ix}=\cos x+i\sin x
\]

要注意的是,在实际的LaTeX环境下,公式的右侧会有编号,由于我在网页中无法完全模拟LaTeX环境,所以编号显示不出来。

这两种基本语法形式属于TeX语法,事实上LaTeX有自己的语法,但我觉得不如TeX语法简洁,使用中是兼容TeX语法的,所以只要掌握一种就好了。只有TeX和LaTeX的关系,感兴趣的同学请自己搜索。

交叉引用

和图片的交叉引用一样,使用

\ref{equ:xxx}

在行文中引用即可。在任何情况下使用交叉引用都要记得带标签的类别,也就是equ, fig之类的。

语法规则

从上面简单的例子中,可以看出,在公式中,可以使用数字、运算符号等元素,但由于数学中很多特殊的元素是无法直接输入的,所以必须通过命令来表示。和其他的LaTeX命令一样,用来表示数学符号的命令由“\”开始,如果带有参数,会以大括号的形式设置参数。例如:

\symbol{参数1}{参数2}...

除此之外,上下标因为非常常用,就可以通过“^”和“_”符号来进行标识。下一节我们会将常见的公式公式形式展现给大家。

公式的各种形式

数字与符号

在公式输入中,数字和英文字母是直接从键盘输入即可,对于希腊字母和其他,需要通过公式命令才可以输入,请看后文中的希腊字母表(电阻单位欧姆就是大写的Omega)。

运算符中\(+,-,=,<,>,[,],(,),!\)可以直接输入,标准的乘除号本身键盘上也没有,分别为 \times和\div。

上下标

上下标是公式中很常用的表示形式,在LaTeX表现形式很简单。上标使用 “^”,也就是美式键盘的主键区数字键-6上面的符号,下标就是下划线“_”。使用方法如下:

A^{bc}_{de}

效果是:\(A^{bc}_{de}\),这里需要注意的是,如果上标只有一个字符的时候,是可以不加大括号的,不过建议大家不要省略,以免在后面修改公式的时候出错。上下标不仅仅可以是符号,也可以是各种复杂的表达式。

对于一些特殊的运算符,下标的位置可能是在运算符下面的,例如求极限:

\lim_{x \to \infty} \exp(-x) = 0

其显示效果是:
\[\lim_{x \to \infty} \exp(-x) = 0\]

分数

分数的命令是:

\frac{分子}{分母}

分数的命令很好记,就是英文fraction的缩写。分子分母可以是任何形式的表达式,当然也可以是分数的嵌套。例如:

z=\frac{\frac{1}{a}+\frac{1}{b}}{\frac{e}{f}-g}

显示效果为:\[z=\frac{\frac{1}{a}+\frac{1}{b}}{\frac{e}{f}-g}\]

还有另外一种斜着表示的分数,显示效果为\(^a/_b\),适用于inline模式,其语法为:

^a/_b

根号

根号的基本语法有点特殊,可以带有两个参数,但是开方次数是在中括号里的:

\sqrt[n]{m}

举一个一元二次方程求根公式的例子:

x=\frac{-b\pm \sqrt[2]{b^2-4ac}}{2a}

效果是:
\[x=\frac{-b\pm \sqrt[2]{b^2-4ac}}{2a}\]

累加和积分

累加和积分的命令是 \sum 和 \int, 两种符合的上下标分别用 “^” 和 “_” 来定义。例如:

\sum_{n=1}^{10}\frac{1}{n}
\int_{x=1}^{10}\frac{1}{x}\,mathrm{d}x

其效果是:
\[\sum_{n=1}^{10}\frac{1}{n}\]
\[\int_{x=1}^{10}\frac{1}{x}\,\mathrm{d}x\]

在inline模式的时候,累加和积分限制之类的信息会被放在符号右侧以节省空间。

另外还有多种类似于累加的运算符,用法是很类似的,下面将所有的类似运算符都列出:

\(\sum\)
\sum
\(\prod\)
\prod
\(\coprod\)
\coprod
\(\bigoplus\)
\bigoplus
\(\bigotimes\)
\bigotimes
\(\bigodot\)
\bigodot
\(\bigcup\)
\bigcup
\(\bigcap\)
\bigcap
\(\biguplus\)
\biguplus
\(\bigsqcup\)
\bigsqcup
\(\bigvee\)
\bigvee
\(\bigwedge\)
\bigwedge
\(\int\)
\int
\(\oint\)
\oint
\(\iint\)
\iint
\(\iiint\)
\iiint
\(\iiiint\)
\iiiint
\(\idotsint\)
\idotsint

有时候在累加或者二重积分的时候,会在运算符号下面加入不止一行的限制条件:
\[\sum_{\substack{
i>0 \\
j>0
}}
P(i,j)\]
其语法形式是:

\sum_{\substack{
   i>0 \\
   j>0
  }} 
 P(i,j)

各种括号

各种括号的用法为:

( x ),[ x ],\{ x \},| x |,\| x \|,\langle x \rangle,
\lfloor x \rfloor, \lceil x \rceil, \ulcorner x \urcorner

其显示效果为:
\[( x ),[ x ],\{ x \},| x |,\| x \|,\langle x \rangle, \lfloor x \rfloor, \lceil x \rceil, \ulcorner x \urcorner
\]

有时候,括号里会有很高的公式,例如分数,这时候需要把括号也同样变高:

z=\left( \frac{1-x}{1+y^2} \right)

效果为:
\[z=\left( \frac{1-x}{1+y^2} \right)\]

矩阵

矩阵是工程数学中最常用的表达形式,在LaTex中支持几乎所有的矩阵形式,矩阵的最简单形式是:

 \begin{matrix}
  a & b & c \\
  d & e & f \\
  g & h & i
 \end{matrix}

效果是:
\[
\begin{matrix}
a & b & c \\
d & e & f \\
g & h & i
\end{matrix}
\]

在插入矩阵的时候,每一列之间用 & 符号隔开,每一行用 \\ 来换行即可。

但是我们使用矩阵的时候往往是在两边使用括号、中括号、大括号或者竖线来表达不同的含义的,在这里我们并不需要使用上一小节中讲的使用括号的方法插入括号,而是直接修改 \begin{}里的环境名称即可,支持的环境有:

pmatrix: (), 括号

bmatrix: [], 中括号

Bmatrix: {}, 大括号

vmatrix: | |, 竖线

Vmatrix: || ||, 双竖线。

请大家多多尝试这些环境。

有些时候,我们会使用点点点来省略重复或者有规律的项,这时候可以使用类似的语法:

A_{m,n} = 
 \begin{bmatrix}
  a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\
  a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\
  \vdots  & \vdots  & \ddots & \vdots  \\
  a_{m,1} & a_{m,2} & \cdots & a_{m,n} 
 \end{pmatrix}

\[
A_{m,n} =
\begin{bmatrix}
a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\
a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{m,1} & a_{m,2} & \cdots & a_{m,n}
\end{bmatrix}
\]

所有的点的表示形式如下:

\(\dots\)
\dots
\(\ldots\)
\ldots
\(\cdots\)
\cdots
\(\vdots\)
\vdots
\(\ddots\)
\ddots

重音符号

重音符号在公式中常有不同的含义,有的用来指示向量,有的在文章中定义了具体的操作,常见的重音符号有:

\(a’\)
a’
\(a”\)
a”
\(\hat{a}\)
\hat{a}
\(\bar{a}\)
\bar{a}
\(\grave{a}\)
\grave{a}
\(\acute{a}\)
\acute{a}
\(\dot{a}\)
\dot{a}
\(\ddot{a}\)
\ddot{a}
\(\not{a}\)
\not{a}
\(\mathring{a}\)
\mathring{a}
\(\overrightarrow{AB}\)
\overrightarrow{AB}
\(\overleftarrow{AB}\)
\overleftarrow{AB}
\(\overline{aaa}\)
\overline{aaa}
\(\check{a}\)
\check{a}
\(\breve{a}\)
\breve{a}
\(\vec{a}\)
\vec{a}
\(\dddot{a}\)
\dddot{a}
\(\ddddot{a}\)
\ddddot{a}
\(\widehat{AAA}\)
\widehat{AAA}
\(\widetilde{AAA}\)
\widetilde{AAA}
\(\stackrel\frown{AAA}\)
\stackrel\frown{AAA}
\(\tilde{a}\)
\tilde{a}
\(\underline{a}\)
\underline{a}

今天这一讲可以满足大家基本的公式书写需求了,请大家不断的尝试,否则还是无法熟练的掌握LaTeX中公式的书写的。这一讲确实有一些枯燥,不要尝试记住所有的命令,只要明白规则,然后知道可以在我这里查到就可以了。下一讲我会将所有常用的符合命令全部列给大家。


参考文献:

https://en.wikibooks.org/wiki/LaTeX/Mathematics 这个网站讲的也非常好,就是太多了,我把有用的拿出来给大家讲讲。

另外感谢MathJax提供了HTML的LaTeX公式插件。

公式这一讲虽然比较枯燥,但是我写起来真是特别麻烦,而且专门去弄了插件来在网页上显示公式。请大家多多支持,扫码支持或者通过支付宝13584435676。比特币钱包是1NBzPagXqFHrwzxT4haGnX7S9FuwTkvX39.


作者:程飞。未经作者允许请勿转载其他网站,可以转载朋友圈。2,744 次浏览

很不好意思晚更新了几天。最近事情较多,打赏太少,夜里没有太大的动力写文章。加上目前在airbnb找的地方晚上没有一个可靠的桌子,写文章的难度进一步加大。今天我们继续来说说公式该怎么想。LaTeX来书写公式,总体上还是有一点点难度的,尤其是很复杂的公式。但是考虑到word里写公式也是很麻烦,还经常卡死,所以写公式对于各种编辑器都是很难的事情了。话说回来,用Word写公司的难度随着你的使用并不会降低,但是LaTeX一但你掌握了,就特别快了。另外还是得再说一遍,本教程的大部分的讲解仅适用于我提供的模板。请看到新的文章就去Github上下载我最新上传的模板。在写课程的同时,我也在不断升级模板的。

公式应该是科研和学习中最重要的表达形式之一了,从我们学数学的第一天起,就和公式结下了不解之缘。一个好的公式,不仅要正确,还要看起来形式很美。这里的形式包括公式推导的形式和公式的表现形式。LaTeX作为全世界最流行的学术写作工具,在公式的表现上是一流的,初步掌握之后,就能写出教科书般漂亮的公式了。但是,看完这篇文章,并不能保证大家能够很快就学会怎么写公式。看完还是需要多加练习,即便是我也记不住很多特殊符号的命名。但我看到一个公式一点都不虚,我知道一定能写出来,而且不复杂。大家看完这一讲,如果能够不虚,我觉得就起到效果了。

公式的一般语法

插入语法

在LaTeX中,允许大家在文中插入三种形式的公式,但我们一般只用两种,所以我只讲两种:

1.  在行文中插入公式(inline mode)
其语法是:

质能方程的公式是$E=mc^2$。

显示的效果为:
质能方程的公式是\(E=mc^2\)。

2.  将公式单独显示并编号(displayed mode)
其语法是:

欧拉公式为:
\begin{equation}\label{equ:equation1}
e^{ix}=\cos x+i\sin x
\end{equation}

显示的效果为:
欧拉公式为:
\[
e^{ix}=\cos x+i\sin x
\]

要注意的是,在实际的LaTeX环境下,公式的右侧会有编号,由于我在网页中无法完全模拟LaTeX环境,所以编号显示不出来。

这两种基本语法形式属于TeX语法,事实上LaTeX有自己的语法,但我觉得不如TeX语法简洁,使用中是兼容TeX语法的,所以只要掌握一种就好了。只有TeX和LaTeX的关系,感兴趣的同学请自己搜索。

交叉引用

和图片的交叉引用一样,使用

\ref{equ:xxx}

在行文中引用即可。在任何情况下使用交叉引用都要记得带标签的类别,也就是equ, fig之类的。

语法规则

从上面简单的例子中,可以看出,在公式中,可以使用数字、运算符号等元素,但由于数学中很多特殊的元素是无法直接输入的,所以必须通过命令来表示。和其他的LaTeX命令一样,用来表示数学符号的命令由“\”开始,如果带有参数,会以大括号的形式设置参数。例如:

\symbol{参数1}{参数2}...

除此之外,上下标因为非常常用,就可以通过“^”和“_”符号来进行标识。下一节我们会将常见的公式公式形式展现给大家。

公式的各种形式

数字与符号

在公式输入中,数字和英文字母是直接从键盘输入即可,对于希腊字母和其他,需要通过公式命令才可以输入,请看后文中的希腊字母表(电阻单位欧姆就是大写的Omega)。

运算符中\(+,-,=,<,>,[,],(,),!\)可以直接输入,标准的乘除号本身键盘上也没有,分别为 \times和\div。

上下标

上下标是公式中很常用的表示形式,在LaTeX表现形式很简单。上标使用 “^”,也就是美式键盘的主键区数字键-6上面的符号,下标就是下划线“_”。使用方法如下:

A^{bc}_{de}

效果是:\(A^{bc}_{de}\),这里需要注意的是,如果上标只有一个字符的时候,是可以不加大括号的,不过建议大家不要省略,以免在后面修改公式的时候出错。上下标不仅仅可以是符号,也可以是各种复杂的表达式。

对于一些特殊的运算符,下标的位置可能是在运算符下面的,例如求极限:

\lim_{x \to \infty} \exp(-x) = 0

其显示效果是:
\[\lim_{x \to \infty} \exp(-x) = 0\]

分数

分数的命令是:

\frac{分子}{分母}

分数的命令很好记,就是英文fraction的缩写。分子分母可以是任何形式的表达式,当然也可以是分数的嵌套。例如:

z=\frac{\frac{1}{a}+\frac{1}{b}}{\frac{e}{f}-g}

显示效果为:\[z=\frac{\frac{1}{a}+\frac{1}{b}}{\frac{e}{f}-g}\]

还有另外一种斜着表示的分数,显示效果为\(^a/_b\),适用于inline模式,其语法为:

^a/_b

根号

根号的基本语法有点特殊,可以带有两个参数,但是开方次数是在中括号里的:

\sqrt[n]{m}

举一个一元二次方程求根公式的例子:

x=\frac{-b\pm \sqrt[2]{b^2-4ac}}{2a}

效果是:
\[x=\frac{-b\pm \sqrt[2]{b^2-4ac}}{2a}\]

累加和积分

累加和积分的命令是 \sum 和 \int, 两种符合的上下标分别用 “^” 和 “_” 来定义。例如:

\sum_{n=1}^{10}\frac{1}{n}
\int_{x=1}^{10}\frac{1}{x}\,mathrm{d}x

其效果是:
\[\sum_{n=1}^{10}\frac{1}{n}\]
\[\int_{x=1}^{10}\frac{1}{x}\,\mathrm{d}x\]

在inline模式的时候,累加和积分限制之类的信息会被放在符号右侧以节省空间。

另外还有多种类似于累加的运算符,用法是很类似的,下面将所有的类似运算符都列出:

\(\sum\)
\sum
\(\prod\)
\prod
\(\coprod\)
\coprod
\(\bigoplus\)
\bigoplus
\(\bigotimes\)
\bigotimes
\(\bigodot\)
\bigodot
\(\bigcup\)
\bigcup
\(\bigcap\)
\bigcap
\(\biguplus\)
\biguplus
\(\bigsqcup\)
\bigsqcup
\(\bigvee\)
\bigvee
\(\bigwedge\)
\bigwedge
\(\int\)
\int
\(\oint\)
\oint
\(\iint\)
\iint
\(\iiint\)
\iiint
\(\iiiint\)
\iiiint
\(\idotsint\)
\idotsint

有时候在累加或者二重积分的时候,会在运算符号下面加入不止一行的限制条件:
\[\sum_{\substack{
i>0 \\
j>0
}}
P(i,j)\]
其语法形式是:

\sum_{\substack{
   i>0 \\
   j>0
  }} 
 P(i,j)

各种括号

各种括号的用法为:

( x ),[ x ],\{ x \},| x |,\| x \|,\langle x \rangle,
\lfloor x \rfloor, \lceil x \rceil, \ulcorner x \urcorner

其显示效果为:
\[( x ),[ x ],\{ x \},| x |,\| x \|,\langle x \rangle, \lfloor x \rfloor, \lceil x \rceil, \ulcorner x \urcorner
\]

有时候,括号里会有很高的公式,例如分数,这时候需要把括号也同样变高:

z=\left( \frac{1-x}{1+y^2} \right)

效果为:
\[z=\left( \frac{1-x}{1+y^2} \right)\]

矩阵

矩阵是工程数学中最常用的表达形式,在LaTex中支持几乎所有的矩阵形式,矩阵的最简单形式是:

 \begin{matrix}
  a & b & c \\
  d & e & f \\
  g & h & i
 \end{matrix}

效果是:
\[
\begin{matrix}
a & b & c \\
d & e & f \\
g & h & i
\end{matrix}
\]

在插入矩阵的时候,每一列之间用 & 符号隔开,每一行用 \\ 来换行即可。

但是我们使用矩阵的时候往往是在两边使用括号、中括号、大括号或者竖线来表达不同的含义的,在这里我们并不需要使用上一小节中讲的使用括号的方法插入括号,而是直接修改 \begin{}里的环境名称即可,支持的环境有:

pmatrix: (), 括号

bmatrix: [], 中括号

Bmatrix: {}, 大括号

vmatrix: | |, 竖线

Vmatrix: || ||, 双竖线。

请大家多多尝试这些环境。

有些时候,我们会使用点点点来省略重复或者有规律的项,这时候可以使用类似的语法:

A_{m,n} = 
 \begin{bmatrix}
  a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\
  a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\
  \vdots  & \vdots  & \ddots & \vdots  \\
  a_{m,1} & a_{m,2} & \cdots & a_{m,n} 
 \end{pmatrix}

\[
A_{m,n} =
\begin{bmatrix}
a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\
a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{m,1} & a_{m,2} & \cdots & a_{m,n}
\end{bmatrix}
\]

所有的点的表示形式如下:

\(\dots\)
\dots
\(\ldots\)
\ldots
\(\cdots\)
\cdots
\(\vdots\)
\vdots
\(\ddots\)
\ddots

重音符号

重音符号在公式中常有不同的含义,有的用来指示向量,有的在文章中定义了具体的操作,常见的重音符号有:

\(a’\)
a’
\(a”\)
a”
\(\hat{a}\)
\hat{a}
\(\bar{a}\)
\bar{a}
\(\grave{a}\)
\grave{a}
\(\acute{a}\)
\acute{a}
\(\dot{a}\)
\dot{a}
\(\ddot{a}\)
\ddot{a}
\(\not{a}\)
\not{a}
\(\mathring{a}\)
\mathring{a}
\(\overrightarrow{AB}\)
\overrightarrow{AB}
\(\overleftarrow{AB}\)
\overleftarrow{AB}
\(\overline{aaa}\)
\overline{aaa}
\(\check{a}\)
\check{a}
\(\breve{a}\)
\breve{a}
\(\vec{a}\)
\vec{a}
\(\dddot{a}\)
\dddot{a}
\(\ddddot{a}\)
\ddddot{a}
\(\widehat{AAA}\)
\widehat{AAA}
\(\widetilde{AAA}\)
\widetilde{AAA}
\(\stackrel\frown{AAA}\)
\stackrel\frown{AAA}
\(\tilde{a}\)
\tilde{a}
\(\underline{a}\)
\underline{a}

今天这一讲可以满足大家基本的公式书写需求了,请大家不断的尝试,否则还是无法熟练的掌握LaTeX中公式的书写的。这一讲确实有一些枯燥,不要尝试记住所有的命令,只要明白规则,然后知道可以在我这里查到就可以了。下一讲我会将所有常用的符合命令全部列给大家。


参考文献:

https://en.wikibooks.org/wiki/LaTeX/Mathematics 这个网站讲的也非常好,就是太多了,我把有用的拿出来给大家讲讲。

另外感谢MathJax提供了HTML的LaTeX公式插件。

公式这一讲虽然比较枯燥,但是我写起来真是特别麻烦,而且专门去弄了插件来在网页上显示公式。请大家多多支持,扫码支持或者通过支付宝13584435676。比特币钱包是1NBzPagXqFHrwzxT4haGnX7S9FuwTkvX39.


作者:程飞。未经作者允许请勿转载其他网站,可以转载朋友圈。2,816 次浏览

终于发现了Mac下最爽的办法了

用过CTeX的人一定会被WinEdt编辑器+SumatraPDF浏览器的“无缝连接”印象深刻,在WinEdt里编辑好,编译后,SumatraPDF就会自动更新,在阅读器里双击,就会自动定位到WinEdt里的相应文字的那行,非常方便文章修改,这是一个极好的功能,可惜的是WinEdt实在是很难调整字体和主题,长时间写作非常累。并且,SumatraPDF虽然也是我很喜欢的一款轻量级阅读器,但是只支持Windows系统。

后来我主要还是在Mac电脑上写文章,转战了Sublime,却一直对WinEdt和Sumatra这个无缝连接念念不忘。Mac自带的预览app其实是很优秀的,是可以自动更新修改后的PDF,但需要用鼠标点一下。我之前也一直都忍了。直到最近有同学发信息给我说觉得不能动态更新让新手觉得很难,我一下子又想起来Windows下的无缝连接了。感觉Mac下一定会实现的。

说实话,如果是我自己用根本没动力去探索,而事实上Sublime下的LaTeXTools插件早就给出了解决方案,只是被我忽略了。但是,我也看了很多网上用LaTeX+Sublime的教程,确实也没有提到无缝连接的事情。

言归正传,无缝连接的关键点在于PDF阅读器和编辑器的配合,我们需要一个可以动态刷新并且支持从PDF阅读器调用Sublime的接口来定位到*.tex文件的某一行。我其实并不知道该怎么描述这项功能,在谷歌搜索也没有得到很好的结果。然而在一次无意中执行LaTeXTools的System Check功能时,我突然发现Mac下对应的PDF阅读器应该是“Skim”。就赶忙下载了“Skim”。一试果然对!就因为这功能我真想再多读一年PhD再多写几篇Paper。

下面我们来具体介绍怎么配置。首先,确认自己使用的是苹果电脑并且没有换成Windoes系统。目前我的系统版本是10.13.1。然后,请下载“Skim” PDF阅读器,其官方下载网页是 http://skim-app.sourceforge.net,打开看起来确实是有点山寨,但是不要紧,确实很好用。下载不了的同学请通过我提供的百度云盘下载:http://pan.baidu.com/s/1pKHF28V。安装完请至少运行一次,因为MacOS的安全机制会阻止程序的运行,系统偏好设置的安全性与隐私中运行“Skim”的运行。总体上“Skim”的性能和Mac自带的预览工具很接近了,渲染很流畅,而且比预览工具功能强大。

运行了Skim之后,请点击系统任务栏上的Skim->选项…

Skim选项

选择同步选项卡,勾选“检查文件变化”,将PDF-TeX同步支持选择为Sublime Text。Skim的配置工作就完成了。

下面需要解决Sublime如何在命令行里执行的问题了,Sublime官方给出了解决方案:https://www.sublimetext.com/docs/3/osx_command_line.html。但是实际使用中会发现并没有办法在Terminal里直接输入subl就运行sublime。我实际使用的指令是:

sudo ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" /usr/local/bin/subl

(页面可能不够宽,复制到的地址是 /usr/local/bin/subl)
就可以在Terminal里直接输入 subl 打开Sublime了。

最后一步,去Sublime里,使用 P事儿快捷键 shift+command+p,输入命令 check system,查找到的第一个应该就和LaTeXTools有关,执行之。稍等之后,在弹出的结果的最后一部分如果看到了
Viewer Status Location
------ ------ --------
skim available /Applications/Skim.app

就说明成功了。

下面请自由的编译几个TeX文件试试,看会不会自动打开Skim进行预览,然后在PDF里按住 shift+command 然后鼠标点击相应的文本位置,会自动回到Sublime里的相应位置去。虽然不是100%准,但是段落定位肯定是对的。

这项功能在Windows下的CTeX已经集成了很久了,但是是WinEdt编辑器下才行。用Sublime必然也是可以的。

继续求打赏,我这还在因斯布鲁克浪呢,还在夜里更文章。支付宝13584435676,不给比特币钱包了,也没人给我打比特币。


作者: 程飞, 未经作者允许请勿转载|3,878 次浏览

果然我的更新速度是跟不上大家的需求的。这一讲我们简单的说一下如何用Matlab来绘制曲线图,以及怎么导出PDF图并插入到LaTeX中去。另外,我根据某老师放在ICE上的极简LaTeX模板,结合我的模板,制作了一个轻量级的支持我定义的命令的新模板:去Github上下载。事实上我为这个专栏做了一个专门的页面:LaTeX写作专栏,每一期的内容和资料都会在上面呈现。

曲线图的绘制(Matlab版本)

曲线图是最常用的用来对比效果、展示性能的手段。我们可以使用很多种软件来绘制如下这种曲线图:

但是Matlab是我的最爱,Matlab是一个特别强大的工具,可以拿它来做太多事情了。用来画图绝对是大材小用了。但是大家以后几乎必然会学到Matlab,并且西浦为所有学生都购买了Matlab的正版(如何安装请咨询MITS Office),所以我们干脆直接点就来让大家尝试Matlab了。如果你的电脑没有Matlab,没关系,可以在任何一个EEE的机房来使用,Matlab肯定是必装软件。请大家一定要安装正版使用,安装完成之后,打开Matlab会出现如下画面(可能颜色和我不一样):

Matlab启动后的画面(全屏)

这个界面的最左侧是文件管理器,中间是一个命令窗口,用来直接执行一些命令,或者查看脚本(script)的输出结果等到,右边的Workspace主要是用来显示当前的变量等信息。我们今天不是主讲Matlab,所以细节先不讲,主要是迅速教大家怎么用Matlab绘制二维的曲线图。以后有时间我们慢慢来说Matlab和绘图,包括三维图等等(又挖了一个坑)

第一步,新建一个script文件,可以命名为 draw.m:

新建脚本

然后双击打开draw.m文件,你会得到一个空白的编辑窗口:

编辑窗口

下面用几十行代码让大家速成一下Matlab:

% 一个最简单的Matlab教程
% 百分号开始的是注释, 两个百分号是分段

%% 基本语法

% 无论是在script里还是在命令窗里,都可以执行所有的matlab命令和函数
% 不需要include之类的东西

% clear 是清除所有保存的变量和数据
% Matlab 事实上是个lab,你可以在里面不停的实验,程序执行完,数据都在的,
% 你可以不停的尝试
clear;

% clc 是清屏
clc


% 赋值语句就是等于号,和C语言一样
% 后面加分号的意思是结果不输出到命令窗
a = 1;
b = 2

% Matlab 直接支持矩阵型变量,事实上Matlab就是 Matrix Lab的缩写
% []里就是矩阵,可以直接表达1维和2维,更高维度特殊一些,以后再说
m = [1 2 3 4 5];
n = [1 2 3 4 5 
     6 7 8 9 10];

% 这俩矩阵直接能做乘法,是不是比C不知道高到哪里去了
mul = m * n'
% 单引号的意思是矩阵转置,要不那俩矩阵不能相乘,希望你们线性代数学了,不学也没关系

% 如果两个矩阵尺寸完全一致,需要做点乘,就用 .* 就行了,除法,指数(^)一样的道理

% 访问矩阵里某个数值像下面这样就可以了,注意,Matlab里的index从1开始,这个和C不一样
n(1,3)

% 快速生成矩阵的一些办法
% 下面这种方法是生成等间隔的1维矩阵,从0开始,间隔0.1,生成都0.9,一共十个数
t = 0:0.1:0.9;

% 生成一个2行3列全是0的矩阵
z = zeros(2,3);

% 生成一个2行3列全是1的矩阵
o = ones(2,3);

%% 选择结构

if a == b
    c = 1;
elseif b == 2
    c = 2;
else
    c= 3;
end

c

% 选择结构和C的套路完全一样,只是语法变得更简单了,Matlab里不是用大括号来分作用域
% 而是使用end来表示一段作用域的结束

%% 循环结构

% i从1循环到100,中间间隔为1,也可以根据上面的方法改间隔
for i = 1:100
    
end

% 最基本的语法已经讲完了

%% 绘图

% 假设数据是这个,时间轴是 之前定义的 t
data1 = [1 2 1 3 4 6 7 9 11 10];
data2 = [3 4 1 5 7 1 4 8 12 9];
% 二维曲线的绘图命令是 plot
plot(t, data1, 'r+-', 'linewidth',2);
hold on;
plot(t, data2, 'b*-.', 'linewidth',2);
% 第一个参数是 x轴, 第二个参数是 y 轴,
% ’r+-' 代表 红色 节点为+号形状 实线
% 'b*-.' 代表 蓝色 节点为*号形状 点画线
% ’linewidth‘ 显而易见是粗细
% hold on 意思是画下一个曲线是上一个保留

% 还有更多设置请使用help命令来求助
help plot

% 我们再加上x和y轴的文字描述以及标题
xlabel('time')
ylabel('distance')
title('Movement')

% 打开网格,看起来更舒服
grid on;

% 再对两条线进行描述
legend('Machine 1','Machine 2','Location','NorthWest');

% 是不是已经出现了像模像样的图了?

执行这段代码,会出现下面的场面:

执行结果

这个图看起来已经有点意思了,不过还是需要调整的:

选择 File -> Export Setup

输出的设置

设置完毕之后点击 Apply to Figures,然后点击Export,输出PDF格式到我们LaTeX项目的fig文件夹下。然后用pdfcrop来裁减掉白边。就可以插入到LaTeX中了。

在这一讲中,恭喜大家又学会了一个新工具——Matlab,虽然只是速成。请大家记住Matlab的学习方法:遇到任何想法,去google搜出相应的Matlab命令函数,然后在Matlab的command window里 help 这个命令,用官方的解释和例子来学习。你会进步的很快。Matlab还有很多很多东西可以讲,但不是在这里讲。

这次是日更,请大家多多支持,扫码支持或者通过支付宝13584435676。比特币钱包是1NBzPagXqFHrwzxT4haGnX7S9FuwTkvX39.


作者:程飞。未经作者允许请勿转载其他网站,可以转载朋友圈。2,441 次浏览

 

通过之前的5讲,我所知道的至少有三四十人都开始尝试LaTeX来写报告了。这非常好,也让我的努力没有白费。不过还是有一些话想说的,之前看李笑来老撕在得到的专栏中,反复强调要只字不提的阅读。我的写作质量当然比不过李老撕了,但还是希望大家能够稍微不那么浮躁,如果是第一次看到我的教程的同学,请访问:LaTeX写作专栏 从头尽量仔细阅读。我在做完这整个教程之后也会根据大家的反馈进行重新编辑和调整,让质量变得更好。鉴于XJTLU的同学在ICE已经发现了某位老师传了一个很简单的模板,我想说的是,如果使用我的模板的话,一定要从github上整个下载所有的文件的压缩包,才能实现文中我描述的效果。会用git的同学每次套用模板就直接clone就好了。我之后也会针对git写一个教程的。

LaTeX插图进阶讲解

通过上一讲,我相信大家已经知道了如何在LaTeX中插图,以及如何对图片、章节等进行交叉引用了。在插图方面,通过我设计的简化命令可以特别舒服的插图,我博士硕士期间写了5年的文章几乎都是用那个方式插图的。来进行简单的复习:

\figpdf{hahaha}{result1}{12cm} % 对应的, fig文件夹下要有 result1.pdf
\figpng{hahaha}{result2}{12cm} % 对应的, fig文件夹下要有 result2.png
\figany{hahaha}{result3}{jpg}{12cm} % 对应的, fig文件夹下要有 result3.jpg

在同学们实际使用的过程中,常会有几个误解容易造成错误:

  • 并没有使用我的模板而直接使用这几个命令
  • 文件名的大小写问题,以及交叉引用的标签名的大小写,如果在Mac和Linux,文件名大小写错误已经不能识别文件了,而Windows文件名忽略大小写,请大家任何时候都要注意这个问题
  • 文件名里不要有空格,这个在任何时候都是好习惯。空格有_下划线代替

这种插图方式是最普遍使用的,但还是有一些其他形式的图:多幅子图片的情况,也就是一幅图里包括2幅以上的图片,他们分别用(a)(b)(c)…来标识,然后给他们一个统一的标题;在双栏文档中,存在一些大图需要横跨两栏的情况,当然我给出的模板是单栏的,一般的Report和Thesis常用单栏,在学术期刊和会议发表中,常用双栏,双栏比较省纸张。

多幅子图片的插入

在写文章时很常用的一个描述方式是把若干幅格式和尺寸相同的图片按照阵列排列在一起,用于对比性能、体现差异等功能。在单栏文档中,一般一般推荐水平图片个数不要超过3幅,否则会让图片尺寸过小,影响阅读体验。所以我在这里只来讲一下如何插入 2 x 2 。通常插入的图片效果如下:

一个2×2字图片阵列的例子

通常我使用两种方法来实现这种效果,一个是比较正统的使用LaTeX的命令的方法, 另一个是投机取巧的办法。通过上一讲的最后部分,我们知道了正常的LaTeX图片的插入方式,我们在那个基础上使用新的指令进行扩展:

\begin{figure}[htp] %htp用来表示图片的位置
  \centering
  \subfigure[Description 1]{
    \label{fig:subfig:a} % 第1幅图的的标签
    % 第1幅图片的尺寸和地址
    \includegraphics[width=6cm]{fig/sub1.pdf}}
  \hspace{0.5cm} % 图片的水平间隔
  \subfigure[Description 2]{
    \label{fig:subfig:b} % 第2幅图的的标签
    % 第2幅图片的尺寸和地址
    \includegraphics[width=6cm]{fig/sub2.pdf}}
  \\ % 强制换行
  \vspace{0.5cm} % 图片的垂直间隔
  \subfigure[Description 3]{
    \label{fig:subfig:c} % 第3幅图的的标签
    \includegraphics[width=6cm]{fig/sub3.pdf}}
  \hspace{0.5cm} % 图片的水平间隔
  \subfigure[Description 4]{
    \label{fig:subfig:d} % 第4幅图的的标签
    \includegraphics[width=6cm]{fig/sub4.pdf}}
  % 整个图片阵列的标题
  \caption{Four sub firgures located in a $2\times 2$ array}
  \label{fig:subfig} %% 整个图片阵列的表情
\end{figure}

这段代码使用的新命令是 \subfigure,目前没有必要深究里面的细节,先能用会用再说。你可以在网上搜到很多种这种图片阵列的插入方式,会有各种复杂的方式,用各种不同的指令,不推荐大家现在去学,那不是重点。这种常用的方式基本上就够大家目前使用了。值得指出的是,在使用图片阵列的时候,可以用两种方式描述字图片:一种是在\subfigure指令的[]中直接写描述,这样会在图片下方出现 “(a) Description 1”这种风格的描述,但是这样不适合很长的描述;另一种就是在字图片的描述中留空白,然后在整个图片的标题中挨个描述,这样可以用足够的文字来描述了。其实我觉得这种插入方式还是很复杂的,因为我自己还不太会用sublime开发插件,等我学会了我会开发出绝对简单好用的插件的,如果有同学知道好用的插件也请告诉我,分享给大家。

下面说说第二种投机取巧的办法:在作图的时候直接把N张图做到一个图片里去。这个方法也是我常用的一种办法,尤其是在图片并不是矢量图的时候,使用一些简单的工具就能搞定了。

跨双栏的图片

在双栏的学术文章中,经常会用到,其实这个语法也特别简单:

\begin{figure*}
%中间该是什么还是什么
\end{figure*}

学术文章的插图绘制

画图绝对是一个技巧和脑洞并存的技术,首先我们得知道用什么工具来绘图,我常用的有:PowerPoint (没错,就是做幻灯片的那个),Matlab (没错,就是用来做科学计算的那个),Excel,Visio (是不是专业点了),Photoshop,Adobe Illustrator (AI, 可能是最专业的矢量图绘制软件),AutoCAD。不可能每一个都讲,我只讲一下PPT和Matlab绘图,其他的软件有的我也不精通,就像AI,我只会简单的用用。

PPT绘图大法

其实吧,不怕说出来显得low,我90%以上的图都是PowerPoint画出来的,就像下面这张,这张图是矢量图,如果在PDF文档中看就可以放大不失真了。我还有很多图集,等我的博士论文通过了我会分享给大家看,里面有不少我认为画的不错的图。

用PPT画出来的图

适合用PPT绘制的图有如下类型:

  • 系统框图
  • 不是特别复杂的流程图
  • 像素图和矢量图结合的图
  • 其他可以用简单几何图形构建的图

PPT绘图的主要优点有:

  • 软件简单易用
  • 图形的自动对齐功能比较完善,这一点特别重要
  • 绘图功能里包含了几乎所有简单几何图形
  • 带有一些简单有趣的适量插图
  • 可以直接导出已经嵌入过字体的矢量图PDF (字体的事儿咱们改天再唠,我感觉我挖了好多坑了,得慢慢填,我从小练习书法,对字体也算有点研究)

由于实在不容易一步一步的截图,我只能用语言描述一些基本的技巧了,希望大家能够看懂,看不明白的话尽量在文章后面留言,当然发微信给我也可以,但是别人就看不到了,留言我回复的话别人可以看到。为了能够更好的看懂,我希望大家具备基本的PPT技能,比如说调字体、字号、颜色、对齐,调图形框的边框颜色、充填颜色、边框粗细等。

进行绘图的第一步,就是新建一个空白模板的pptx文档,然后只需要一个页面就可以了,页面尺寸不需要调整。然后就可以尽情的作画了。

有一些基本的小技巧想和大家分享:

  • 改变图形尺寸,使用四角的点进行拖动时,安住shift键可以保持比例,这个基本上是Office和很多软件的惯例
  • 改变尺寸时,安住option (Mac)/ alt (WIndows, 好久不用win了,如果错了请大家指出),可以让图以中心对齐的方式进行缩放,这一点在做流程图的时候非常有用
  • 拖动图形或者图片的时候,安住shift可以保证在只在一个维度上运动
  • 拖动图片的时候按control (Mac) / ctrl (Win),可以复制图片
  • 灵活而熟练的同时使用上面两个技巧,可以迅速的画出很多同样的元素,并且很容易对齐,就像我上面给大家看的那个图

首先说一下系统框图,两个比较简单,一般就只用到方形,将系统中的功能模块分别用方形描述出来,然后用直线或者箭头连上就可以,直线一般表示无方向性的连接关系,箭头表示一种方向性的关系。想把框图画好,首先内容要合理的抽象,并不是一定要把所有的东西都写上去,而是根据框图的级别进行合理抽象。然后是各个方块直接一定要摆放合理,尽量的对齐,这样才能比较美观容易阅读。在颜色方面,由于要考虑到多种介质阅读(纸、电脑屏幕、视网膜级屏幕、电纸书屏幕等),不宜使用过多的颜色,黑色的对比度最好,所以优先选择黑色边框和白色或者透明填充,边框的粗细不宜过细,一般在1pt到2pt之间,要根据当时的感觉来选择。使用带箭头的线时,要注意箭头的尺寸不要太小。总之,功能清晰+视觉效果好=优秀的框图。

在流程图里,用到的会多一些的元素,注意有方形、菱形、两头是圆形的方形等等。其实也不是很复杂,基本的程序流程图中,方形代表一般过程,例如函数什么的,菱形代表选择,两头是圆形的方形代表程序开始或者结束。还有很多其他规则,参见 FlowChart

矢量图和像素图结合的情况也是很常见的,直接把jpg或者png图片拖入PowerPoint软件,适当的裁剪和修改尺寸,然后配上图形元素,就可以了。

能不能做出好看的图,关键在于有没有耐心和想象力,一开始肯定会很慢,画的多了就快了。绘图真的很重要,在工作中也是一样的,能用简洁明了的图把事情讲清楚是非常重要的工作能力。

在图绘制完成之后,将pptx文档导出成pdf格式,mac和windows上的方法差不多,大家多多尝试肯定没问题的。这个时候,可能会有一个问题,就是图片四周有很多白边,这些白边插到文中会非常影响阅读体验。LaTeX的各个发行版基本上都带了一个工具,叫 pdfcrop,可以专门用来去除白边。在Mac下打开Terminal,在Windows下打开cmd(不会的同学请看第二讲),输入 pdfcrop 验证一下是不是有这个程序,如果显示的不是以任何语言描述的“不存在此程序”之类的话,说明你的发行版里带了这个工具。使用方法很简单,不过需要一些简单的命令行知识:

在Mac下,我们目前需要了解这么几个Terminal的命令 cd, cd.. , ls。cd用来进入一个文件夹,其实就是change director的缩写,cd.. 是退会上一级文件夹,.. 的意思在任何系统中都是指的上一级文件夹,ls是列出当前文件夹里的所有文件夹和文件。首先你需要知道你的pdf文件保存在哪里了,然后用这几个命令找到位置,执行:pdfcrop 文件名.pdf,回车。然后会在当前文件夹下看到一个被加上crop后缀的pdf文件,打开之后,发现已经没有白边了。在Win下,情况类似,cd 和 cd.. 是类似的,标准的cmd没有ls命令,但是win10的powershell有ls命令,在cmd中,用dir命令来显示文件夹里的文件和文件夹。Linux用户,相信我不需要讲。

通过裁剪过的pdf矢量图,就可以按照这两讲的办法插入到文中去了。下一次的内容,我们会快速讲一下Matlab的绘图,Matlab是非常适合数据绘图的,当然Excel也很好,也有很多其他软件。并且教大家一些对付示波器图像的技巧。我很早之前也讲过两期示波器和信号源的使用,这里我讲了如何保持示波器图片,这是一种办法,视频地址是:http://v.youku.com/v_show/id_XMTM4MjA0MjExMg

我每一期尽量保证写到5000字左右,想把教程写好是挺不容易的。请大家多多支持,扫码支持或者通过支付宝13584435676。比特币钱包是1NBzPagXqFHrwzxT4haGnX7S9FuwTkvX39.


作者:程飞。未经作者允许请勿转载其他网站,可以转载朋友圈。3,835 次浏览

在前面的四讲中,我们已经讲过如何安装正确的LaTeX发行版,以及如何安装Sublime编辑器。值得高兴的是,已经有不少同学有了使用LaTeX的意识,开始尝试用LaTeX来写Report了。我的更新速度显然跟不上同学们的需求,很抱歉。有一些同学进行了自己的探索,这很好。但是LaTeX事实上是一个坑很多的工具,这主要是其灵活性和开放性造成的。所以我一开始就想让大家要跟着我的方法来做。网上绝大部分的LaTeX的教程都很难做到通用,然后他们又不声明发行版和编译器种类,就会让大家很疑惑,甚至怀疑LaTeX到底行不行。LaTeX已经收到几乎全球的科研者和专业人士使用,肯定是没问题的。今天主要来讲学术写作中的一些规则,以及图的插入和绘制。我感觉写这部分的挑战还是很大的,希望学术同行大佬们指正。

学术写作的一些规则

在第(4)讲中,我们简单的讲了一下最普通的学术文章的结构。大家要明白,那只是一种通常情况。一篇好的学术文章,归根究底还是要阐述出研究人员的理论和结论的。

但是,学术写作的规则还是有很多的,网上能搜到特别繁多,看完基本上就懵(A+C)/2了。我也算是个合格的researcher,也发表过不少学术论文,我能记住的应该都比较重要而且实用了。

首先要说一个最基本规则,就是行文的顺序。对于单列文章(一页纸只有一栏)来说,行文的顺序是从上到下。对于双列文章(一页纸只有两栏)来说,行文的顺序是从上到下,然后从左栏到右栏。有人说这不是废话嘛。但是注意,这里我用的是“行文”,也就是说这个顺序其实是严格针对文字的,但不是严格针对图片和表格的。在文字排版中,图片和表格可以认为是“固体”,而文字是“液体”,所以,为了版面的美观和高效利用,图片往往会根据实际情况进行浮动。举个例子,一篇文章有Para1, Para2 和 Para3三段,有一张图片要插在 Para1 后面,但是如果在实际的页面中刚好在Para1后面的空间不够插入那张图,那么图片可能会被插在Para3后面。大家放心,事实上LaTeX都会自动处理好这些事情,我写了这么多只是为了让大家理解这并不是LaTeX的Bug。

正是因为图片和表格某种程度上是浮动的,所以才引出了下面的图片插入规则:图片必须给出标题,通常标题放在图片下面,并冠以编号。通常用Fig. X来编号;而表格也要给出标题,通常放在表格上方,并冠以 Table X的编号。编号按照图片的插入顺序递增。并且,在文字中的适当位置要提到插入的图片的编号(Fig. X),并根据需要给出解释或者描述。我研究生时英语课上讲,文字早于图片的出现,不过大量的学术论文,即便是顶级期刊或者会议的文章,也没有严格遵照这一点。其实只要准确的描述了图片编号,又,图片是顺序编号的,读者可以很容易找到图片了。上面说了这么多,其实大家完全不用担心,因为LaTeX会自动处理编号。

问题又来了,在文中我们怎么插入Fig.X呢?难道对于Fig.1就真的输入 Fig.1么?Word用的稍微好点的人都不会这么做的,何况是LaTeX了。这个功能叫交叉引用:对于文中的编号项,如果在文中其他位置被提及,可以通过插入一种标识符的方式,让这个编号可以自动生成和变化。不再受到添加或删除一个项目的影响。Word的方式网上教程很多,其缺点就是步骤繁琐,弄不好就崩了。LaTeX可以通过简单的指令很容易的做到。这一讲的后半部分会着重讲命令,别(第四声)着急。并且,在LaTeX中,可以对chapter,section, subsection, subsubsection, figure, table, equation, code block 等等进行交叉引用。

另一种特殊的引用就是对其他人成果的引用——参考文献 (Reference 参考文献 或者 Bibliography 参考书目)。Reference 一般是指的你直接引用了别人的成果,为了不被算作抄袭,需要加入参考文献来标明出处。而Bibliography除了Reference的功能外,还指的一些书目或者文章,你并没有引用,但是可以给读者一些基础知识、启发或者灵感。不过实际中我觉得没有本质上的区别。参考文献绝对是Word的痛点,即便用EndNote也会非常麻烦。但在LaTeX里处理起来简直太简单了。

今天讲的规则我并没有严格的梳理,后面随着大家的反馈我会进一步的梳理,后面也会不断的补充,最终给出更加严谨的版本。

下面我们进入语法命令部分。

交叉引用

为了引用,必须给被引用项加入标签。加入标签的方式是:在需要被引用的位置插入

\label{ccc:lll}

其中,ccc是类别,lll一般是个缩写或者别名。类别就是用以区分是章节还是图片的,别名就是在同一个类别下区分不同的引用项的。举个例子来说,对于章节来说:

\chapter{Introduction}\label{cpt:intro}

\section{Background}\label{sec:bg}

在需要被引用的地方,我们通过

\ref{ccc:lll}

来进行引用。要注意的是,

\ref{ccc:lll}

并不会帮我们加上Chapter字样,只会加入数字。这些需要我们自己来写。我给出的模板里,所有的章节都加入了标签。请大家仔细看一下,并且修改和尝试。
对于图片和表格,用法也是几乎一样的。但我们还没讲到这里,而且我提供了更加简便的方式,所以不在这里讲了。

LaTeX中的图(Figure)

在开始后面的步骤之前,提醒大家: 1. 跟着我的方法走,包括安装LaTeX和使用Sublime等;2. 我讲的内容只适用于我提供的模板;3. 我没办法为不follow我的人提供解答。我做这些就是为了让大家不要踩我踩过的坑,有人非要踩的话,对个人来说是很好的经历。但我没办法每个人都帮一下,我们也不是为了成为LaTeX的专家。Follow我的人,无论有没有打赏,我都会尽力帮助,大家一起改进这一套方法,才会节约大家的时间。

LaTeX常用的图像格式有:pdf, eps, jpg, png。其实其他也支持一些,但是这四个足够用了。图像格式分成两种:矢量图和像素图。矢量图就是无论你怎么放大,都不会模糊的图,但一般只能用来描述图线、方块、圆形这样的简单图形。而像素图片就是通过描述每一个像素点的色彩来构建图像,自然可以丰富多彩,但是放大很多倍之后就没有足够的细节了,看起来就会模糊。至于是为什么,我以后会写科普来讲述。pdf和eps本质上是混合式,也就是同时支持矢量图和像素图;而jpg和png是像素图。

一般地,在需要描述图线、形状、流程、框图等情况时,我们一定要使用pdf或者eps格式;对于混合型的图,也要用pdf或者eps格式;只有纯照片才会用到jpg和png图片。其中,我更推荐大家使用pdf格式,甚至完全不要去尝试eps。用pdf格式是更主流也更方便的方式。之后会慢慢教大家怎么画出好的图。下面来讲图片插入的语法,我会分为两个层次来讲,首先会讲我自己创造的新的简化版图片插入命令,更简单好用;然后会把这个指令的完全版本拆开给大家看是怎么回事儿,在一些特殊情况还是需要用完全版本。

简化版命令

使用前提:所有图片放在 fig 文件夹下。不可以用文件名重名,也就是说不同格式的图片也不可以重名。由于在这一讲的时候,对命令进行了改进,所以请大家务必从github上更新最新的xjtlu.sty文件,如果不会更新就下载下来覆盖掉原来的xjtlu.sty即可。github地址:https://github.com/feimax/latex_template_for_xjtlu_eee

我设计了3个简化版的图片插入命令:

\figpdf{图片标题}{图片文件名}{宽度} %专门用于插入pdf格式的图片

\figpng{图片标题}{图片文件名}{宽度} %专门用于插入png格式的图片

\figany{图片标题}{图片文件名}{图片扩展名}{宽度} %用于插入任何支持格式的图片

前两个指令是更简化的命令,用于专门插入pdf或者png图片。有三个参数,第一个是图片标题,没什么好说的;第二个参数是图片文件名,是不带有扩展的,也就是说 result.pdf 这个文件,只需要写 result就可以了;第三个参数是宽度,因为绝对不推荐修改图片比例,所以只需要规定图片宽度,高度会自动修改,注意,宽度要带单位,一般用cm。对于第三个命令来说,适用于任何支持格式,第三个参数是扩展名,如果是 result.jpg 的话,就要写jpg在里面。分别举例:

\figpdf{hahaha}{result1}{12cm} % 对应的, fig文件夹下要有 result1.pdf

\figpng{hahaha}{result2}{12cm} % 对应的, fig文件夹下要有 result2.png

\figany{hahaha}{result3}{jpg}{12cm} % 对应的, fig文件夹下要有 result3.jpg

插入图片后,重要的就是如何交叉引用。对图片的交叉引用,我依然设计了一个新的命令:
\fig{图片文件名}

在我设计的图像相关的命令中,图片文件名就作为上一节中的交叉引用的别用使用。

用具体的例子来说明:

Cras eu dui quis dolor scelerisque eleifend sit amet a nibh. Suspendisse porttitor sit amet nunc sit amet hendrerit. Fusce tempus purus metus, rhoncus dictum nisl pretium vitae. Suspendisse sodales nunc velit, ac malesuada diam commodo sed. Sed maximus vel risus quis laoreet. Ut ullamcorper ante non faucibus imperdiet. Cras tristique nec ligula id egestas. Duis ut elit id lorem sodales viverra eu ut leo in \Fig{hey}.

\figpdf{Fusce tempus purus metus}{hey}{12cm}

如果不去深入思考,到这里其实已经可以很方便而优雅的插入图片和交叉引用图片了。但是勤于思考的同学肯定不会罢休的。下面我来剖析一下这些命令的细节。

简化版命令的真实面目

我们来看一下LaTeX自带的图片插入命令是什么样的:

\begin{figure}[htp]
\centering
\includegraphics[width=12]{fig/result1.pdf}
\caption{Title}
\label{fig:rst1}
\end{figure}
}

这是一段特别长的命令:[htp]是图片位置浮动的规定,以后再讲;\centering是图片居中,正常情况下我们都要居中图像的;\includegraphics是用来设定图像地址和宽度的;\caption是设置图像标题的;\lable我们之前讲过了,设定标签的。

这么长一段命令我是肯定不会去记住的,所以我使用LaTeX的一个可以创造新命令的命令来新建了一个新的命令,很类似于C语言里的函数。

\newcommand{\figpdf}[3]{
\begin{figure}[htp]
\centering
\includegraphics[width={#3}]{fig/#2.pdf}
\caption{{#1}}
\label{fig:#2}
\end{figure}
}

创造新命令的语法不解释了,大概都能看得懂,看不懂也别纠结,我之后会慢慢解释。再来看一下\Fig这个命令:

\newcommand{\Fig}[1]{
Fig. \ref{fig:#1}
}

其实就是很懒省事的把一些每次都重复的部分给省掉了。

这一讲先到这里。在该讲中,我先是介绍了学术写作中的一些不完全规则,然后介绍了在我的模板体系下,该如何方便优雅的插入图片,并且给大家分析了为什么可以那么插图片。请大家一定注意从github上重新下载xjtlu.sty文件,覆盖你的report工程里老文件,然后就能使用最新的命令了。

写教程真不是一件容易的事情,请大家多多支持,扫码支持或者通过支付宝13584435676。比特币钱包是1NBzPagXqFHrwzxT4haGnX7S9FuwTkvX39.


作者:程飞。未经作者允许请勿转载其他网站,可以转载朋友圈。4,649 次浏览

通过前面三讲,已经有同学在Mac电脑上安装成功了。我已经打开了评论,大家遇到任何问题请评论,并留下邮箱。自从加入了打赏二维码(文章末尾处)之后,还真的收到了一些同学以及我妈妈的资金支持。写教程不是为了钱,但我觉得有用的东西应该是值钱的。咱们今天开始进入LaTeX的正题,我会从写Report和Thesis的角度来给大家讲如何用LaTeX的命令。

套路

无论是paper、report、还是thesis,都是套路性很强的学术写作。我自己不是英语写作的高手,但也在读研的时候刷出过很高的report分数,并且读研读博士做助教的时候至少也看过上千篇本科生的各种Report和Assignment ,阅PO无数。所以也想谈谈我的一些不成熟的小建议。

首先讲一个通用的道理,如果大家做的一件事情需要另一个人来评判,是不是要先换位思考评判者是怎么想的呢?设想一下你如果是老师或者助教,会喜欢什么样的Report呢?大家都说这是个看脸的社会,很多女生甚至男生不化妆都不敢出门,但为什么就敢交上去一份乱糟糟的Report还期盼着得高分呢?想象一下,老师和助教不可能单独改你的作业的吧,基本上都是几十份上百份集中起来评分,有利于效率和公平公正。体谅一下,大家都是人,都有感情和情绪,在已经看得眼睛都花了的时候,突然看到一份结构整齐、字体优美、图片清晰、公式漂亮、表格专业、还有专业的参考文献的PDF文档,心情是不是好一些啊!这会让老师们感觉这个学生起码态度很端正。所以我们后面会分别将一下在LaTeX里怎么设置结构、怎么调整字体、怎么绘图和插图、怎么插入参考文献、怎么写公式,表格将放在最后,因为表格是我认为LaTeX里唯一一个比较麻烦的地方,当然也有办法很好的解决。

第二,在内容方面,咱们写的并不是什么文学作品,而是学术作品,所以词法的优美什么的就不是绝对重要的了。当然你如果雅思8分以上,那就尽情的发挥语言优势,我是见过这样的学生的,托福GRE巨高,Report的用词非常专业。如果对自己的英语不是那么的有信心,那就用尽量使用有把握的表达方式把有效的内容表达清楚。一些长难词,自己都是第一次查词典查出来的就别拿出来用了,除非真的是有必要的专业词汇。有效的表达是很考验你对Report内容本身的理解程度的,所以尽量少花时间在文字排版上,多去研学课程内容,这也是我写LaTeX教程的原因,LaTeX一但掌握了就很省时间了。

内容方面也是有套路的,对于Report或者Assignment,你的内容就是让评判者认为你做了并且理解了,然后得到一个合理的分数。用一句绕口令来说,就是你要知道如何让评判者知道你知道了,即便是他知道你知道如何让他知道你知道了。有一些我从学生身上学会的小技巧以及我自己的心得很值得分享一下:

  • 懂得基本的学术写作规则,比如说图片下面要有描述、表格上面要有描述、要有Reference,等等,我们想到就会逐渐介绍到。我研究生的时候学过一年这方面的知识,我还能记住的应该都是有用的。
  • 用下划线、加粗、或者斜体标出你认为最重要的概念或者内容,即便是一两个单词,如果能让评判者瞬间知道你懂了,那就起到效果了。其实这是个双向互利的,你的标识也会节省评判者的评估时间,你让他爽,怎么会有坏处呢?
  • 图的表达能力往往是胜过文字的,对于难以描述的流程、难以描述的结构、难以描述的数据,直接画个图,然后再文字解释一下,效果会更好。还是那句话,让评判者知道你知道。如何画图,用什么工具画图,后面会单独来讲,包括流程图、示意图、功能框图、对比曲线图等等。
  • 用编号列表或者无编号列表把事情描述的有条理。还是那句话,让…知道…
  • 如果有时间的话,约ELC的老师或者其他比你厉害的人,帮你proofreading。这要看你的人品、运气和社交能力了。

最后,想说一些作人方面的想法。虽然根据中华传统美德,师者、传道受业解惑也。老师要表现的德高望重,始终无条件的坚持公平公正公开的对待学生。但这是不是和我们常听的那些空话一个感觉的。任何事情都没有绝对的,我只能讲咱们的老师和助教们是友善的这件事是的很大概率的。他们绝对不会想故意整你的。但是当然会有改错分数的情况,遇到这种情况,其实是给你一个可以让老师或者助教以良好的第一印象认识你的机会,长远看是没有坏处的。首先以很平和的态度,甚至抱着对分数不是很看重,只是很想提高自己的心态来给老师或者助教写邮件,最好能够以当面探讨的方式见一下,平和的说出自己的分数是被弄了。如果是非常显而易见的错误,比如说算错分了,那评判者会立刻想办法帮你更正的。如果是主观内容的评判,这时候一定不要很强硬的要求加分,因为主观评判很难有对错之分,除非有很严重的漏洞,否则绝对不可能给改分。如果你被评判者关注到了,想一下自己是以好的印象被关注的还是坏的印象。心态要平和,平均分是持久战。

总之,想让别人对你友善,自己首先得友善。我不喜欢用道德去评判别人,任何人都可能在极端的条件下做出极端的事情的。所以不要给别人害你的机会,也不要去害别人。

讲了这么多所谓的套路,其实都是一些显而易见的规则和方式。在写Report方面,优美的版面和专业的内容永远是制胜之道,再配合简单的作人法则,怎么可能会得不到高分。

LaTeX的常用语法规则

无参数:\命令

单一参数:\命令{参数1}

多参数:\命令{参数1}{参数2}…

例如:

\reporttitle{How To Rescue Your Report Using \LaTeX{}}
\student{Your NAME}
\module{EEE000 - Report Writing}
\teacher{Dr. Firstname SURNAME}
\ddl{$30^{th}$~/~Sept~/~2017}

上面这些命令是report.tex文件一开始需要你根据实际情况修改的封面信息。这些命令都不是标准的LaTeX命令,是我自创的,更简单好用。(这里目前更新了,新版本我还没写出来)

LaTeX另外一个让我很喜欢的就是注释,注释的部分不会被编译成内容,就像程序一样。这样在写作和修改过程中没有把握的部分可以不必删除,只需要注释就可以。也可以先用注释来给文章设计结构等等。

注释的语法是:% 后面的都是注释,只能单行注释。

因为\和%以及其他一些符合都被命令本身占用了,所以 \ 使用 \backslash 进行转义,就是说 想输入反斜线的时候要用 \backslash代替。%的转义就是 \%。还有一些符号我也记不住,如果编译报错了就去搜一下,一般都很容易解决。

LaTeX的段落规则是,两个回车才是新的一段,也可以用 \\来代表换行。

文章结构

章、节、小节…是我们在写文章时常用的结构方式。在LaTeX中,对于文字结构控制的命令特别简单:

章:\chapter{标题} %Chapter 1 Title

节:\section{标题} % 1.1 Title

小节:\subsection{标题} % 1.1.1 Title

小小节:\subsubsection{标题} % 这个一般就是加粗一下,不带编号

你无需自己对章节进行编号,LaTeX编译器会自动帮你编号,虽然Word也有自动编号功能,但我相信你已经经历过那糟糕的方式了。语法部分请大家到report.tex里尽情的修改和尝试。不要怕改错,弄错了随时去github上下载一个新的来用。

除了语法之外,知道写什么更重要。一般来说,一篇Report的作用就是写一下你到底做了一些什么事情。所以要写的内容也就比较明确了:

  1. 为什么做这件事
  2. 怎么做的
  3. 结果怎么样
  4. 总结一下

第1部分一般就是Introduction的部分,这部分主要是阐述背景、提出问题、回顾别人的成果、提出自己想法、然后总体介绍一下后面的章节。一般Introduction是文章的第一章,如果在做文献回顾的时候内容很多,也可以在第二章单独来写。当然,对于大二大三普遍面对的Lab Report没有这么复杂,例如C/C++一般课程里会有明确的Report结构要求,经常变动,其实第一部分也无外乎是提出问题和分析问题;对于电路实验之类的,可以介绍实验内容、目的、仪器设备等。

第2部分主要是描述方法论(Methodology),主要描述你提出的想法具体是怎么实现的,有哪些重要的理论描述和流程描述。不同的学科方向描述的方法也是很不同的。在课程里,一般也不会提出新的想法,主要是描述怎么解决问题的。比如说C/C++里会要求你写如何设计程序的等等;有一些Lab Report甚至不要写这部分。但是毕业论文中,这一部分是最重要的。

第3部分主要是展现如何做实验的以及实验结果。我们很小的时候就在物理实验中学习过控制变量法,这方法还是有用处的。例如在C/C++中,展现程序测试结果的时候就要充分考虑各种情况,通过控制变量法来体现你的代码在任何情况下都能工作,就像我记得之前有一道Hello World级别的题目是输入姓名显示姓名的,这时候姓名是一个词、两个词、汉字、数字的情况就可以分别测试,对于不允许的情况要给出提示。你知道怎么测试,是最能展现出你已经懂了这个知识点的。在课程的Report中,一定要看清楚要求的展现形式是什么,如果没有要求,就用你认为最好的方式展现。

第4部分要有一个总结(conclusion),一般就是总结过去展现未来。把结果中的闪光点再说一说,并指出一些缺陷,并说一下未来怎么改善这些缺陷。

主要的部分就是这四块,一般在最前面有一个独立出来的摘要(Abstract),这部分一般不加参考文献,因为是独立的,所以在这里声明过的缩写要在正文中第一次提到时再重新声明一次。对于正式的paper或者thesis,要有acknowledgement,长文中要感谢一些帮过你的人,像你的导师、同学、朋友、家人等等,如果你觉得我的文章对你有益也可以提一下。另外要感谢支持你的各级基金项目等。在期刊或者会议paper中篇幅有限,一般主要感谢金主,就是各级基金项目了,主要也是为了被金主承认你的成果。

今天主要是讲了一些写Report的经验和技巧,以及最基本的LaTeX命令的用法。后面更有用的内容很快就会更新。

内容免费,但求支持,原创文章写作确实是很累的,尤其是这种学术技术类的。支付宝13584435676,比特币钱包1NBzPagXqFHrwzxT4haGnX7S9FuwTkvX39。微信打赏:

也非常感谢LaTeX开源软件,Sublime免费软件以及LaTeXTools插件的作者们。今后也会考虑向开源社区捐献资金。


作者:程飞。未经作者允许请勿转载其他网站,可以转载朋友圈。3,993 次浏览

在上一讲中,我们主要介绍了如何选择一个LaTeX的发行版,已经推荐给大家一款强大的文本编辑器——Sublime,如果还没安装的话,那就看完这一讲再动手也不迟。有一些同学反映看完了第2讲还是不会用LaTeX,大家咋就那么着急啊,一口是吃不成我这样的大胖子的。换个角度想问题,如果LaTeX那么简单,那你学会了还有个什么优势。

升级你的武器

上一讲说到,Sublime如果没有Package Control,基本上就是优雅到干不了什么事儿。所以我们一起装了Package Control。Package Control可以理解为Sublime的“APP Store”,利用其搜索、安装和管理Sublime的各种插件,从而实现各种神奇的功能。只是,它的使用方式是半命令式的,当你习惯了就会觉得这种方式很好,既不像图标式的应用繁琐点击,也不像纯命令应用一样有很强的距离感。而且Sublime里根本不用记命令,到目前为止,我们只需要记住一个 command+shift+p (Win系统: ctrl + shift+p, 后面简称为“P事儿快捷键”),有任何P事都用这个就行了。弹出上一张的最后一张图的画面之后,Sublime会根据你输入的自然语言 (英语) 的关键词来给出建议,然后就用上下键选就好了,我们要执行的指令是: Package Control: Install Package。按“P事儿快捷键”,我习惯用install关键词,输入in之后基本上就已经弹出正确的命令了,回车执行即可,然后,根据你们的网速请稍微耐心的等一会儿,然后就弹出一个可以被安装的库的列表。

Sublime Package Install 可以安装的库的列表

Sublime Package Install 可以安装的库的列表

输入 LaTeXTools,然后回车即可,然后左下角会有一个进度条左右动,说明正在安装,安装完成之后,就会弹出下面这个页面:

安装完成LaTeXTools

安装完成LaTeXTools

到此为止,我们的准备工作就做完了。对,你们还是没有看到LaTeX到底有什么神奇的功能,不过没关系,我们趁热打铁回顾一下之前都讲了什么:

  • 适合你的电脑的LaTeX版本的安装
  • Sublime的安装
  • Sublime的Package Control安装
  • Sublime的LaTeX插件:LaTeXTools

除此之外,要记住在Sublime下有什么P事儿都用“P事儿快捷键” command+shift+p,windows和Linux用 ctrl+shift+p。

为什么我非要让大家一起做这么久的准备工作,是因为LaTeX的发行版太多了,能用的编辑器也太多了。咱们只有按照统一的方式,后面才能更好往下讲。当你真的入门之后,就可以自己畅游了。

*附加内容:如何解决Win10下经常出现的 COULD NOT COMPILE! 错误

有不少使用Win10的同学反应了这个错误,该错误主要是由于没有添加正确的环境变量造成的,一般情况下CTEX安装完会自动设置正确的环境变量,但是偶尔也会抽风。

解决方法:在桌面上找 “此电脑”,右击,“属性”,左边找到 “高级系统设置”,下面找到“环境变量(N)…”,进去之后在找到下图红框的“PATH”变量双击。

然后,添加一个 C:\CTEX\MiKTeX\miktex\bin,如果不是安装在C盘的就自己修改相应的位置,如果不知道怎么改,还是老老实实的安装在C盘吧。然后要逐级确定,重启Sublime,之后在做ctrl+shift+p,输入 check system,如果和下图一样,说明就是可以的了

LaTeX新手村

对于一个正常人来说,进入任何一个新的领域,最好不要去了解其背后的理论,学英语我们一开始就学Hello,而不是告诉你语法时态什么的;学编程也是从Hello World开始。所以我们也是先用起来再说。

首先,请到我的github上下载我设计的一个LaTeX模板,地址是:https://github.com/feimax/latex_template_for_xjtlu_eee 。如果不会用git,没关系,就直接点击页面上一个绿色按键:Clone or download,下载zip压缩包。

模板文件夹

模板文件夹

下载完毕解压缩之后,就会出现上面这个文件夹的内容。请用Sublime打开其中的report.tex文件,打开后是这个样子的:

然后,在Tools->Build System里选择Automatic或者直接选择LaTeX。

选择编译系统

选择编译系统(该图仅用于展示菜单,后面的模板内容已经更新过了,参考上面一个图)

这时候,请用快捷键 command+b(win:ctrl+b)来进行编译,如果要求选择编译器,请选择pdflatex,如果不弹出就甭管了,编译的时候,Sublime的最下角会有进度指示,当显示Build completed的时候,就编译完成了。完成之后,如果是win系统,在miktex完全版下会自动弹出pdf语言,而mac系统不带预览器(参考后文的Mac加餐,这个问题已经解决:Mac用户点击访问)。扑面而来的是非常优雅美观的Report封面,带有矢量图校徽。

封面的样子

封面的样子

大家可以在这个模板的基础上进行填充和修改,完成自己的Report。从实用主义的角度来说,我不建议大家过多的去了解如何从头建立一个LaTeX文档,这确实是一件复杂的事情,就好像你只需要会开车就好了,并不需要知道怎么造车。这一点很重要,因为经常有人问我该如何从头开始。

模板文件夹里有两个以tex结尾的文件,分别是report.tex和xjtlu_cover.tex文件。report.tex是正文文件,在里面书写所有的正文内容;另一个文件是封面文件,一般情况下不需要修改。

如果想修改封面内容,请从report.tex文件的\title{}的位置开始修改。\title{里面填写文章的标题},\subtitle{就是副标题了}。\covercontent{}里是封面的具体内容,内部的\coverline{参数1}{参数2}是我设计的一个自定义命令,参数1填写类似于Author, Date之类的名称,第二个参数就是具体的内容了,填写你的名字之类的,很好理解。这里请务必记住不要增加太复杂的标记,否则很容易出问题。

另外需要注意的是report.tex的第一个有效行,\documentclass{}里的一些可以选择的参数。除了字号、统一的字体之外,oneside(单面)选项可以改为twoside,并且要带有openright选项,twoside是很长的像书一样的文章在双面打印时,每一章必须从奇数页开始,改成twoside之后,会发现多了一些空白页面。hardcopy这个选项是为了让logo编程纯黑色的,打印效果更好,如果是电子版提交,请去掉这个选项。另外hardcopy选项也可以改为editing,这样的话生产的pdf将是深色背景浅色文字,在长期书写文章的时候,有利于护眼。

生成的pdf文件会和report.tex的文件名一致,因此也可以修改report这个文件名用来区分不同的任务。如果有新的需要写的Report,建议大家重新从我的git上下载一个新的模板,不要在现有模板下仅仅复制report.tex改个名字,那么容易因为图片冲突等问题,大家也不缺这点硬盘空间。

今天的内容就到这里,终于让大家开始碰到LaTeX了。兴不兴奋?开不开心?

后面我们会接着讲,如何添加章节,如何添加图片,如何添加表格,如何添加交叉引用,如何添加参考文献等等。

支付宝帐户是13584435676,比特币钱包是:1NBzPagXqFHrwzxT4haGnX7S9FuwTkvX39。我就不相信真的就没人给我打赏啊。

或者扫描下面的二维码来打赏支持。


作者: 程飞, 未经作者允许请勿转载|7,822 次浏览

那天,在飞往意大利的飞机上,我望着碧蓝无垠的黑海,收到系里Siyi Wang老师的微信,说我之前写的LaTeX的文章太监了,那我还是继续写写吧。本来想做收费内容的,想了一下自己的名气还不够,还是免费分享给大家凑合看吧。我支付宝账号是13584435676,比特币钱包是 1NBzPagXqFHrwzxT4haGnX7S9FuwTkvX39,文章结尾有微信打赏二维码。有钱的捧个钱场,没钱的帮忙转。

话说 ,自从距离上次写LaTeX的文章已经一年了,这一年我对LaTeX的态度改变了吗?没有!真没有比LaTeX更棒的文字排版软件了。

LaTeX到底是什么?是一个基于TeX的文章排版工具。那TeX又是个啥?我用了5年了,我也不知道TeX是啥,说明根本不重要,就跟你也不知道波音空客是怎么驾驶的,更不知道是怎么造,不也照样坐着满世界的浪嘛。不过值得注意的是,别把LaTeX读成拉泰克斯,虽然没有形成统一的读法,但是读成拉泰克会好一些,而且小写的latex你们可以去搜一下,到底是什么不可描述的东西~~

说到这里,我们还是没有介绍一点点LaTeX的干货,不着急。首先大家要在脑子里始终记着下面几点:1. LaTeX超级牛叉。2. LaTeX用起来一点都不难,注意,我说的是用起来,就像骑自行车并不难,但是你造一个试试。3. LaTeX真的超级牛叉。

默念上面三条三遍,然后我们开始神奇的LaTeX之旅之——安装一个几乎全裸的LaTeX。

LaTeX的安装

LaTeX是一款很神奇的软件,和Linux一样有很多发行版,特别容易让新手望而却步。为了不让大家失去信心,我就直接告诉你们,这一部分弄完你看不到任何想看到的结果,没有PDF,没有好看的字体和排版。大家要耐得住性子,要知道真正有用的东西,往往在最后一刻才迸发出惊人的效果。所见即所得、打怪就升级的世界,是不真实的世界。

说回LaTeX的安装,一个好消息是,无论你用什么系统,都找不到任何借口不装LaTeX。其实LaTeX也有很棒的在线编辑平台,https://www.overleaf.com,但是用在线平台你是不是不想在飞机上写Report啊,说!你是不是不想在飞机上写Report!(硬广:阿联酋航空,空中免费上网20M)喜欢在线平台的大家去自学,我还是喜欢本地环境,ToT老师是overleaf的拥趸,可以请教他,办公室在西浦EE三楼厕所对面。我只说本地环境:

在MacOS下,MacTeX是最好的选择,你看这名字起的,就是专门给Mac的,下载地址是 http://tug.org/mactex/

对于Windows用户,选择很多,我早期是用CTeX的,CTeX是带有中文支持包的,我就用过一次中文,大部分的情况都是写英文的,官网地址是http://www.ctex.org/HomePage,不想进去了解情况的同学请直接点击中科大大站点的完整版下载:CTeX_2.9.2.164_Full.exe,CTeX非常庞大,带一堆东西,完全集成了MikTeX,适合全新手,一定要从官网下载,直接安装那个1.56G左右的完全版本,千万别装Basic版本,容易hold不住,另外,如果没有啥把握千万不要把软件安装在D盘,磁盘分区其实已经是落后的理念了,要把C盘弄得大大的,然后所有软件都放C盘最省事儿。放D盘重装系统不还是一个软件都不能用了。所以如果你不想下载那么庞大的软件,又完全没有写中文的需求,那下载MikTeX就足够了,下载地址是https://miktex.org/download。鉴于一些同学告诉我miktex在国内下载不了,还是不建议用miktex了,如果能下basci版本,安装之后一定要在miktex的菜单下找到maintain(admin)文件夹下的update之类的程序,然后update所有的Package,第一次安装需要update两次,然后再编译才可以。

说到Linux可能用的人比较少,我自己用TeX Live,下载地址是http://tug.org/texlive/,其实也是支持Windows的。

说到这里,你可能已经晕了,没关系,你只需要知道上面三段里,所有带有TeX字样的都是一种LaTeX就行了,你按照自己的系统安上去,就成了。注意,安且只安一个就行了,千万别咣咣猛安,尤其是Windows用户,安装起来毫无罪恶感,后面就麻烦了。安完怎么用?千万别自己随便打开里面的东西找虐,新手都是被这么吓跑的。想知道有没有安装成功,你只需要在自己的系统打开命令行,Mac用户四个手指往里一抓,输入terminal,还没输完就让你打开终端了;Win10用户点击开始菜单,输入cmd回车;Linux用户我应该不用说了,不会打开shell就别用Linux了。如果你的安装是正确的,输入latex,注意是小写,回车,如果弹出来的不是以任何一种人类语言告诉你“没这个程序”,那说明你就安装成功了。然后关了命令行就行了。

命令行执行结果

命令行执行结果

下面进入兵器选择的环节,你说这怎么这么复杂么?不复杂后面能爽吗?干啥不都得先苦后甜么。

兵器的选择

有人要问了,LaTeX不就是我们的将要使用的兵器吗?非也!LaTeX是咱们要学习的武功,这个武功用来打败一个叫瑞泡特的混蛋的,好的武功需要配上趁手的兵器。这也是比较难以理解的一点,因为大家都被微软惯坏了,动不动就给你个Office,动不动就给你个visual studio。我们应该离开微软又micro又soft的怀抱啦。

LaTeX只是一个程序(其实是一系列程序),连个界面都没有的程序,一个纯粹的、脱离了低级趣味的程序。这个程序的功能就是,注意了,就是把你写的一段带有标签的文本,“变”成字体优美格式漂亮的PDF文件(也可以是其他类型的,如HTML)。我再用东北话解释一遍,比如说你想写一个章节,叫Introduction,那就这么写:\嘿老铁下面那嘎达是新(第二声)的一章{Introduction},这里的斜杠和大括号就是一种标签形式,一个东北银开发的LaTeX或许就能理解,这表示要开始一个新的章节,叫Introduction,而且会自动编个号,后面会详细扯该怎么用,这里你只要知道有这么一类标签就行了,当然东北银标签那是开玩笑的,别(第四声)当真。LaTeX把一篇正常的文章里的各个元素都做好了标签,你只要给你写的文章标好标签,LaTeX就能给你整出一篇像模像样的PDF。

但是 but however,用什么写呢?其实,所有的文本编辑器都能写。什么叫纯文本呢?基本上就是你用windows的记事本打开,看到的都是人话的文本,就是纯文本了。一般文本编辑器都是程序员很喜欢的利器,给程序做关键字高亮处理,自动对齐,代码纠错,甚至带有编译功能等等。别害怕,LaTeX比写程序容易多了,但还是有点标签的,像我这种写了十几年程序的人都觉得还是有标签高亮看起来比较舒服。所以我们需要选择一个好用的文本编辑器。

说到选择编辑器,就要说到不同的操作系统了,我自己就是一个跨系统用户,所以肯定只会推荐给你们三个平台都能适用的东西。于是乎,我首推Sublime Text(目前是sublime3),其实其他的像atom,vscode也都不错,但是我就任性,就是喜欢Sublime,至于vim和EMACS的传说,就当成是个传说就好了,没必要非看起来像个专家,这个时代没什么比简单和酷更重要的事儿了。有人会指责我说winedt才是写LaTeX的利器,你一听着名字就知道是windows平台的,而且winedt是收费软件,不能推荐大家用盗版。Sublime是免费软件,如果你和我一样穷,那就对弹出的购买对话框忽略就行了,那个真不是非让你买,就是个情怀。

说到这你基本上还是不知道LaTeX是怎么回事对吧?你就说信不信飞哥吧,信就接着看怎么捣鼓。

Sublime的下载地址是:http://www.sublimetext.com,应该三大平台的安装方法的特别简单。很快就能安装好。

Sublime简洁优雅的界面

Sublime简洁优雅的界面

刚安装好的Sublime,优雅的几乎干不了啥事儿。我们第一步需要给她配上一个超级管家——Package Control,有了这个管家,就很容易安装其他有用的插件了。安装方法非常简单,先到 https://packagecontrol.io/installation 里复制那一大段看不懂是啥但是一看肯定是它的代码(sublime3专用的),然后回到Sublime界面下,按control(win键盘按ctrl)+ ~键,~就是正常键盘的esc下面那个键,调出命令行功能。然后不由分说直接粘贴并且自信的按回车键。然后就会在上图左下角Line1那里,看到一个东西在动,安装成功后,重新打开Sublime,怎么才能知道Package Control安装好了呢?用command(win键盘是ctrl)+shift+p来调出出命令输入面板,然后输入install,如果看到下图,说明Package Control安装成功了!

Sublime Package Control

Sublime Package Control

到这里,你已经安装成功了LaTeX和Sublime了。相信我,Sublime是很棒的文本编辑器,LaTeX是很牛的文字排版软件。

我们下一次来讲如何把Sublime和LaTeX联合使用,并且给出我设计的通用Report模板。

最后给出微信支持二维码,请各位打赏:

微信打开的话直接长按扫码。


作者: 程飞, 未经作者允许请勿转载 | 6,357 次浏览