首页 > 技术文章 > TeX教程

Forgenvueory 2017-08-25 02:16 原文

转自 【抢工作向】一个更适合玩物理的同学的论坛TeX教程

1. 基础知识

如何在你的帖子里插入一个\(\TeX\)环境来写公式呢?答案其实很简单,对于不同的要求,我们有两种方法。

第一种只需要在\(\backslash(\)和\(\backslash)\)中间插入你想要的公式即可,它适合你在一个句子内插入公式,如:
“勾股定理表示为\(\backslash(\text{a^2+b^2=c^2}\backslash)\)”的效果就是“勾股定理表示为\(a^2+b^2=c^2\)”。

另一种情况是用双美元符号,在两个双美元符号,如\(\$\$\),中间键入你需要的公式。这种环境下,公式是被单独提出来的,自动在下一行居中显示。如:
“勾股定理表示为\(\$\$\text{a^2+b^2=c^2}\$\$\)”的效果就是“勾股定理表示为$a^2+b^2=c^2$”。

其次,需要提及的是,在\(\TeX\)语言中,有很多符号是有特殊意义的,因此你不能直接在使用到\(TeX\)的部分里运用,否则会造成你不想看到的后果。这些符号中常用的如下:
# \$ % ^ & _ { } ~ \
如必须在使用到\(TeX\)的部分里运用,可以分别通过
\# \\$ \% \^{} \& \_ \{ \} \~{} \backslash
得到。当然在论坛上,我还是建议这些字符能在非\(\TeX\)命令下使用就在非\(\TeX\)命令下使用,比如“一瓶可乐\$2.25”就是一个你没必要在\(\TeX\)命令下表示的东西。
        
其中\是\(\TeX\)中调用命令的符号,如\sin表示\(\sin\),\sqrt{b}表示\(\sqrt{b}\)等等,在\后加入特定的字母字符或特殊字符组成命令。命令后以紧连空格,数字或非字母字符来表示结束命令,比如:表示\(\langle a|\)时,我们需要的命令为\langle a|而非\langlea。强烈建议养成一个习惯就是,总在命令后面留一个空格,不管后面是不是直接连着数字。公式命令中插入空格不会导致在公式中插入空格

{}成对出现,在\(\TeX\)公式中常常用来保护一些表达,或将命令环境的影响范围覆盖到整个{}括到的范围内,如下面会提到的指数的例子。

 

2. 常用的符号命令

这里写到的都是不用我做说明就可以直接用的符号,按照平时写的惯例来写就足够了。
(1) 符号
\(\begin{array}{|c|c|c|c|c| }
\hline
\text{符号} & \text{命令} & \text{示例} & \text{示例指令}& \text{备注}\\
\hline
+ & + & a+b & a+b \\
\hline
- & - & a-b & a-b \\
\hline
\times & \text{\times} & a\times b &\text{a\times b} \\
\hline
\cdot & \text{\cdot} & x\cdot y & \text{x\cdot\y} \\
\hline
\div & \text{\div} & a\div b & \text{a\div b} \\
\hline
= & \text{=} & a= b & \text{a=b} \\
\hline
: & \text{:} & a:b & \text{a: b} \\
\hline
< & \text{<} & a< b & \text{a< b} \\
\hline
> & \text{>} & a>b & \text{a> b} \\
\hline
\neq & \text{\neq} & a\neq b & \text{a\neq b} \\
\hline
\leq & \text{\leq} & a\leq b & \text{a\leq b} & \text{是小写L而非I} \\
\hline
\geq & \text{\geq} & a\geq b & \text{a\geq b} \\
\hline
\ll & \text{\ll} & a\ll b & \text{a\ll b} & \text{是小写L而非I} \\
\hline
\gg & \text{\gg} & a\gg b & \text{a\gg b} \\
\hline
\simeq & \text{\simeq} & a\simeq b & \text{a\simeq b} \\
\hline
\approx & \text{\approx} & a\approx b & \text{a\approx b} \\
\hline
\cong & \text{\cong} & A\cong B & \text{A\cong B} \\
\hline
\emptyset & \text{\emptyset} & A=\emptyset & \text{A=\emptyset} & \text{这是空集,而非希腊字母}\Phi \\
\hline
\in\text{或}\ni & \text{\in或\ni} & a\in A;A\ni a & \text{a\in A;A\ni a} \\
\hline
\notin & \text{\notin} & a\notin A & \text{a\notin A} \\
\hline
\subset\text{或}\supset & \text{\subset或\supset} & A\subset B;B\supset A & \text{A\subset B;B\supset A} \\
\hline
\subseteq\text{或}\supseteq & \text{\subseteq或\supseteq} & A\subseteq B;B\supseteq A & \text{A\subseteq B;B\supseteq A} \\
\hline
\cap & \text{\cap} & A\cap B & \text{A\cap B} & \text{大符号}\bigcap\text{会在后面进行说明}\\
\hline
\cup & \text{\cup} & A\cup B & \text{A\cup B} & \text{大符号}\bigcup\text{会在后面进行说明}\\
\hline
\forall & \text{\forall} & \forall x\in A & \text{\forall x\in A} \\
\hline
\exists & \text{\exists} & \exists x\in A & \text{\exists x\in A} \\
\hline
\neg & \text{\neg} & \neg P & \text{\neg P} \\
\hline
\wedge & \text{\wedge} & P\wedge Q & \text{P\wedge Q} & \text{大符号}\bigwedge\text{会在后面进行说明}\\
\hline
\vee & \text{\vee} & P\vee Q & \text{P\vee Q} & \text{大符号}\bigvee\text{会在后面进行说明}\\
\hline
\oplus & \text{\oplus} & A\oplus B & \text{A\oplus B} & \text{大符号}\bigoplus\text{会在后面进行说明}\\
\hline
\otimes & \text{\otimes} & A\otimes B & \text{A\otimes B} & \text{大符号}\bigotimes\text{会在后面进行说明}\\
\hline
\circ & \text{\circ} & f\circ g & \text{f\circ g} \\
\hline
\prime & \text{\prime} & f^{\prime}(x) & \text{f^{\prime}(x)} \\
\hline
\angle & \text{\angle} & \angle A & \text{\angle A} \\
\hline
\parallel & \text{\parallel} & l\parallel k & \text{l\parallel k} \\
\hline
\perp & \text{\perp} & l\perp k & \text{l\perp k} \\
\hline
| & \text{|} & 3|6 & \text{3|6} \\
\hline
\langle & \text{\langle} & \langle\psi| & \text{\langle\psi|} \\
\hline
\rangle & \text{\rangle} & |\psi\rangle & \text{|\psi\rangle} \\
\hline
\propto & \text{\propto} & F\propto a & \text{F\propto a} \\
\hline
\dagger & \text{\dagger} & A^{\dagger} & \text{A^{\dagger}} \\
\hline
\hbar& \text{\hbar} \\
\hline
\partial & \text{\partial} & \partial f & \text{\partial f} \\
\hline
\infty & \text{\infty} \\
\hline
\nabla & \text{\nabla} & \nabla\boldsymbol{E} & \text{\nabla\boldsymbol{E}} & \text{这是哈密顿算子而非倒三角} \\
\hline
\end{array}\)
(2) 希腊字母
\(\begin{array}{|c|c|c|c|c|c|c|c|}
\hline
\text{命令} & \text{字母} & \text{命令} & \text{字母} & \text{命令} & \text{字母} & \text{命令} & \text{字母} \\
\hline
\text{\alpha} & \alpha & \text{\beta} & \beta & \text{\gamma} & \gamma & \text{delta} & \delta \\
\hline
\text{\epsilon} & \epsilon & \text{\varepsilon} & \varepsilon & \text{\zeta} & \zeta & \text{eta} & \eta \\
\hline
\text{\theta} & \theta & \text{\vartheta} & \vartheta & \text{\iota} & \iota & \text{kappa} & \kappa \\
\hline
\text{\lambda} & \lambda & \text{\mu} & \mu& \text{\nu} & \nu & \text{xi} & \xi \\
\hline
\text{\pi} & \pi & \text{\varpi} & \varpi & \text{\rho} & \rho & \text{varrho} & \varrho \\
\hline
\text{\sigma} & \sigma & \text{\varsigma} & \varsigma & \text{\tau} & \tau & \text{upsilon} & \upsilon \\
\hline
\text{\phi} & \phi & \text{\varphi} & \varphi & \text{\chi} & \chi & \text{psi} & \psi \\
\hline
\text{\omega} & \omega & \text{\Gamma} & \Gamma & \text{\Delta} & \Delta & \text{Theta} & \Theta \\
\hline
\text{\Lambda} & \Lambda & \text{\Xi} & \Xi & \text{\Pi} & \Pi & \text{Sigma} & \Sigma \\
\hline
\text{\Upsilon} & \Upsilon & \text{\Phi} & \Phi & \text{\Psi} & \Psi & \text{Omega} & \Omega \\
\hline
\end{array}\)
(3) 箭头
\(\begin{array}{|c|c|c|c|c|c|}
\hline
\text{命令} & \text{符号} & \text{命令} & \text{符号} & \text{命令} & \text{符号} \\
\hline
\text{\leftarrow} & \leftarrow & \text{rightarrow} & \rightarrow & \text{\leftrightarrow} & \leftrightarrow \\
\hline
\text{\Leftarrow} & \Leftarrow & \text{\Rightarrow} & \Rightarrow & \text{\Leftrightarrow} & \Leftrightarrow \\
\hline
\text{\mapsto} & \mapsto & \text{rightleftharpoons} & \leftrightharpoons \\
\hline
\end{array}\)

 

3 一些常用运算

(1) 指数和开根
指数是最简单的上标运用命令,其命令为a^b,效果为\(a^b\),当指数很长时我们便需要在指数部分用{}来保护指令,如a^{b+c+d}效果为\(a^{b+c+d}\),而加入我们不加{}保护指令,\(\TeX\)就会自动的在环境作用于下一个字符后取消环境,如a^b+c+d的效果为\(a^b+c+d\)
开根同样是一个常用的命令。比如开平方的指令\sqrt{},{}用来表示\sqrt作用的环境。如果开根的里面是数字,我们便可以直接写\sqrt 2,但如果里面是字母开头或者是很长的项,这里就不可以删掉{},即便你只想表示\(\sqrt{a}\)。
如果不是开平方而是开n次方呢?其命令是\sqrt{}[],这里{}里是开根里面的项而[]中你要开的次数,比如\sqrt[100]{x}就表示\(\sqrt[100]{x}\)
(2) 积分与多重积分
平时我们所用的积分符号为\int,效果为\(\int\)。很明显这比我们所期望的大小要小很多,这是因为\(\TeX\)会主动将这个符号缩成一行的高度。想要让它看起来自然,就需要在前面加一个\displaystyle指令来使得积分符号变成它应有的样子(这一节的下面写到的所有命令示例我都会删掉\displaystyle,要记得在使用的时候加上),如\displaystyle\int。我们可以用上下指标命令【_和^】来标记上下限或积分范围,如: \int_a^b为\(\displaystyle\int_a^b\), \int_{x=2}^{x=4}为\(\displaystyle\int_{x=2}^{x=4}\), \int_L为\(\displaystyle\int_L\)等。

如果我们要写多重积分,仅仅把\int指令排成一排的效果不是很好,每个积分号间的距离大得可怜。这里有两种缩进方法:
第一种是用空格指令\!来对积分号间进行缩进,\!的数量决定了你的缩进距离,举例如下:
\int\!\!\!\int\!\!\!int的效果为\(\displaystyle\int\!\!\!\int\!\!\!\int\)
于是你发现它确实缩进了很大的空间。这里只需要在第一个\int前加\displaystyle就可以使得整个积分变成正常大小。但是这种方法太麻烦,打\!打到手癌。于是我们便有一种更高明的做法,直接运用\(\TeX\)里提供的命令\iiint,这里的i的数量决定了积分号的数量,如:
\iint为\(\displaystyle\iint\),而\iiiint为\(\displaystyle\iiiint\)
这就使得输入的东西更少了。这种做法的坏处在于,\(\TeX\)自带的重积分符号最多可表示到4重积分,到了第五个就会显示没有这个指令。因此按照使用情况,可以自行调整缩进方法。事实上我估计也没几个人会用到那么多的积分号,即使到了很高维的积分我们也有更好的表达方式来表示。
(3) 求和
求和的命令为\sum,同样地需要\displaystyle来调节它的大小。求和的上下指标同样由上下指标命令得到,这里便不会自动把指标像积分那样放在符号的右边。例如:\sum_{i=0}^{\infty}得到的就是\(\displaystyle\sum_{i=0}^{\infty}\)。
当我们不用\displaystyle调节求和指令的时候,求和符号的上下标就会自动跑到右边去,如:\(\sum_a^b\)
(4) 上表中提及的大符号的使用
我们之前有提到会在后面讲解大符号的运用。实际上,大符号的运用和求和的运用是几乎相同的,模仿就好。以下在上表基础上新加两个符号:
\(\begin{array}{|c|c|}
\hline
\text{命令} & \text{符号} \\
\hline
\text{\prod} & \prod \\
\hline
\text{\coprod} & \coprod \\
\hline
\end{array}\)
(5) 极限运算和三角函数/双曲函数
我们一般写极限和三角函数/双曲函数都是直接写sin,lim,或者cosh等,但在\(\TeX\)里早就包含了这些函数的命令。即\sin,\lim,\cosh。
极限的运算比较特殊,它有两种表现形式。一种是直接用下标,这个时候下标是显示在lim的右下角的,即\lim_{x\rightarrow 0}x=0为\(\lim_{x\rightarrow 0}x=0\)。而另一种是用极限命令,即\lim\limits_{a\to b}a=b的形式,如\lim\limits_{x\to 0}x=0即\(\lim\limits_{x\to 0}x=0\)。
对于三角函数和双曲函数,运用就比较简单,如\sin(2x+2)即\(\sin(2x+2)\)。如果表示的是sin的n次方,那么就是\sin^n(2x+2)即\(\sin^n(2x+2)\)。
以下是一些常用的\(\TeX\)自带函数命令(除去三角函数,反三角函数和双曲函数外):
\(\begin{array}{|c|c|c|c|c|c|}
\hline
\text{命令} & \text{函数} & \text{命令} & \text{函数} & \text{命令} & \text{函数}\\
\hline
\text{\arg} & \arg & \text{\sup} & \sup & \text{\exp} & \exp \\
\hline
\text{\Re} & \Re & \text{\Im} & \Im & \text{\gcd} & \gcd \\
\hline
\text{\deg} & \deg & \text{\det} & \det & \text{\hom} & \hom \\
\hline
\text{\dim} & \dim & \text{\inf} & \inf & \text{\ker} & \ker \\
\hline
\text{\lg} & \lg & \text{\lim} & \lim & \text{\liminf} & \liminf \\
\hline
\text{\limsup} & \limsup & \text{\ln} & \ln & \text{\log} & \log \\
\hline
\text{\max} & \max & \text{\min} & \min & \text{\Pr} & \Pr \\
\hline
\end{array}\)

4. 排列,矩阵和方程组


排列,或称数阵,是一个语言环境,它以begin{array}开头以 end{array}结尾(实际上前面有\开头,但是由于它是构造环境会在帖子里直接作用,所以这里以及下面的都省略掉\)。它是在数学环境下进行的。实际上,上文的表都是由这个环境构造的。在\(\TeX\)中有专门的表格环境,但在论坛上貌似没有被支持。因此,排列就成了一个制表的好的方案。在此只讲最简单的列表方法,想要美化的(比如用加粗线段之类的)请自行翻看相关教程。
首先明确排列的格式:
begin{array}}{|l|c|r|}
\hline
AAAA & AA & AAAAAA \\
\hline
BB & BBBBBBB & B \\
\hline
end{array}
这段的效果就是
\(\begin{array}{|l|c|r|}
\hline
AAAA & AA & AAAAAA \\
\hline
BB & BBBBBBB & B \\
\hline
\end{array}\)
这里的begin{array}\}与end{array}})限制了排列环境的作用范围。begin{array}后的{}中给出了排列的整体设置,其中l为居左,c为居中,r为居右,分别限制了左列,中列,和右列的对齐方案。而“l|c”中,l与c之间的“|”表示在两列之间用竖线进行划分,在这个设置中,哪里有|,下面的表格中哪里就有|。\hline命令是在两行之间画一个线,贯穿整个排列的覆盖区域。
每行之间的元素要用&来隔开,而每行的最后要用\\,也就是\(\TeX\)中常用的换行指令进行换行。\hline后不应该加\\换行。由于array环境建立在数学环境中,因此假如在其中要用英文文字,需要引用\text{}指令来在数学环境中输入文字。如:
begin{array}{|c|c|c|c|}
\hline
We like physics & \text{我们喜欢物理} & \text{We like physics} & 我们喜欢物理\\
\hline
end{array}
的效果为:
\(\begin{array}{|c|c|c|c|}
\hline
We like physics & \text{我们喜欢物理} & \text{We like physics} & 我们喜欢物理\\
\hline
\end{array}\)
数学环境下英文文字自动按照公式处理。而之前说过公式命令下插入空格不会在公式中插入空格,因此第一列中的英文完全是按照公式来进行处理的。而明显的是,公式处理环境不会主动处理中文。

矩阵中我们常用到三个点的省略号来表示一些省略,有横有竖还有斜,这些都可以通过命令实现:
\(\begin{array}{|c|c|c|c|}
\hline
符号 & 命令 & 符号 & 命令 \\
\hline
\cdots & \text{\cdots} & \ddots & \text{\ddots} \\
\hline
\vdots & \text{\vdots} & \dots & \text{\dots} \\
\hline
\end{array}\)
\cdots和\dots的区别在于一个的点是位于行中间的,一个是位于行下方的。

因此我们便可以尝试些矩阵。但是矩阵有两个大括号,那么在公式中怎么插入呢?幸好\(\TeX\)中自带调整的命令。这个命令就是\left和\right两个命令。他们跟着(),[],{},\(\langle\rangle\),和|等分界符号就可以让他们变成适合当前格式的大小,比如:
\dfrac{(\dfrac{4\pi}{E-a\sqrt[3]{F}})}{\sqrt2}
的效果为
\(\dfrac{(\dfrac{4\pi}{E-a\sqrt[3]{F}})}{\sqrt2}\)
这里的括号很明显不能括住整个分式,因此我们可以使用这个命令来调整:
\dfrac{\left(\dfrac{4\pi}{E-a\sqrt[3]{F}}\right)}{\sqrt2}
\(\dfrac{\left(\dfrac{4\pi}{E-a\sqrt[3]{F}}\right)}{\sqrt2}\)
值得注意的是,\left和\right必须成对出现,假如只出现\left或\right,则会编译失败。因此我们可以结合两个命令写出矩阵:
\left(begin{array}{cc}
1 & i \\
i & 1
end{array}\right)
效果为
\(\left(\begin{array}{cc}
1 & i \\
i & 1
\end{array}\right)\)
当然不是必须要用\left\right命令调整大小,如果愿意也可以用\big,\Big,\bigg和\Bigg命令自行调整。比如:
\big(\Big(\bigg(\Bigg(效果为\(\big(\Big(\bigg(\Bigg(\)

而对于方程组,这个问题就不一样了,很明显方程组一般只具有左边一个大大的“{”来表示“且”,而没有右边一个“}”进行配对,那么根据上面介绍的,只写一个\left\{就会编译错误(注意,因为“{”是特殊字符所以要用“\{”),所以如何解决呢?答案很简单。我们需要给出一个隐藏的右分隔符,即“\right.”,下面的点是一个英文句号。于是我们便可以有:
y=\left\{begin{array}{cl}
a & x<1 \\
b & x=1 \\
c & x>1
end{array}\right.
效果为:
\( y=\left\{\begin{array}{cl}
a & x<1 \\
b & x=1 \\
c & x>1
\end{array}\right.\)
这里我们用cl对齐而不是cc,因为条件一般不是居中写的。

 

5. 幻影,空格和缩进的使用方法


何谓幻影呢。幻影(phantom)在\(\TeX\)中意味着占位,但你却看不到它,其命令为\phantom{}。{}中所包含字符的长度就是幻影的长度。以一个张量\(T_{\phantom{\mu}\nu}^{\mu}\)举例,无论我按照下面哪种形式来写,结果都是一样的:
T_{\mu}^{\nu},T^{\nu}_{\mu},其效果均为\(T^{\nu}_{\mu}\),装个逼来说就是\(\TeX\)中的上下指标是对易的,因为我交换上下标的前后位置后得到的都是这样一个上下对齐的结果。因此,幻影就成了一个必要的命令:
T_{\phantom{\mu}\nu}^{\mu}效果为\(T_{\phantom{\mu}\nu}^{\mu}\)
这样一来就变成了我想要的写法。因为\phantom中的字符长度就是一个希腊字符在上下标中的长度,因此下标\(\nu\)前留出了一个上标对应的间隙。

前文也说过,公式环境下插入的空格并不会在公式编译后留下,那么如何在必要的时候写一个空格出来呢。这里我们有一个指令\quad,表示插入一个空格,同样的有\qquad,q的数量决定了你插入的空格长度。我们还有更小的空格命令如“\,”,“\:”和“\;”,分别为\(\frac{3}{18}\),\(\frac{4}{18}\),和\(\frac{5}{18}\)倍的\quad命令长度。总体效果如:
A\, B效果为\(A\, B\)
A\: B效果为\(A\: B\)
A\; B效果为\(A\; B\)
A\quad B效果为\(A\quad B\)
A\qquad B效果为\(A\qquad B\)

那么如果我觉得两个字符间距离太大了怎么办呢?那么就用在介绍多重积分符号那里的方法,即用\!进行缩进。\!的数量越多,缩进的距离越多:
A\! B效果为\(A\!B\)
A\!! B效果为\(A\!\!B\)

 

6. 粗体和字符上的标志


很明显的,粗体在公式中也不是不常见。论坛编辑中自带的加粗是没用的,因为它改变的不是\(\TeX\)自身编译出来的加粗。这种情况下,我们需要引入\boldsymbol指令来加粗一个对象。这个对象对于单字符和命令都是可行的,只要他们是在数学环境下。如:
\mu和\boldsymbol{\mu}的对比\(\mu;\boldsymbol{\mu}\)
S和\boldsymbol{S}的对比\(S;\boldsymbol{S}\)

我们还有很多的标记方法,比如在小写字母上标一个^表示基矢,标一个 - 表示平均值,这时我们就有了如下指令:
\(\begin{array}{|c|c|c|c|c|c|}
\hline
符号 & 命令 & 符号 & 命令 & 符号 & 命令 \\
\hline
\hat{a} & \text{\hat{a}} & \check{a} & \text{\check{a}} & \tilde{a} & \text{\tilde{a}} \\
\hline
\acute{a} & \text{\acute{a}} & \grave{a} & \text{\grave{a}} & \dot{a} & \text{\dot{a}} \\
\hline
\ddot{a} & \text{\ddot{a}} & \breve{a} & \text{\breve{a}} & \bar{a} & \text{\bar{a}} \\
\hline
\vec{a} & \text{\vec{a}} & \widehat{A} & \text{\widehat{A}} & \widetilde{A} & \text{\widetilde{A}} \\
\hline
\end{array}\)

有的时候我们需要在符号上加符号,比如\(\stackrel{?}{=}\),这种情况下我们可以应用\stackrel{}{}指令,其中第一个括号内是放在上方的,第二个括号内是放到下方的,如:
\stackrel{?}{=}便可以得到\(\stackrel{?}{=}\)

 

7. 特殊字体


物理中常用到特殊字体,比如拉普拉斯变换\(\mathcal{L}\)。因此我们在此介绍一些字体命令:
\(\begin{array}{|c|c|}
\hline
命令 & 示例 \\
\hline
\text{\mathrm{}} & \mathrm{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\
\hline
\text{\mathit{}} & \mathit{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\
\hline
\text{\mathcal{}} & \mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \\
\hline
\end{array}\)

推荐阅读