LaTeX入门:选择、安装和基础概念。
在使用LaTeX之前:
LaTeX是什么?
LaTeX是一个建立在TeX上的宏集,Leslie Lamport在Plain TeX上构建了它。
最初的TeX是高德纳教授(Donald E. Knuth)研发的,它是一门标记语言,以高效精确稳定著称,广泛地被应用于科研排版领域。值得注意的是,它的大多数发行版并不支持所见即所得,它是一门需要编译两次甚至更多次才能正确输出的标记语言。
MS Word用户需要它么?
这要取决于你的需求,如果你在本科期间或是准备发表你的论文,无疑,你是需要LaTeX的。而在更专业的商业报告和书籍排版领域,LaTeX的占比比你想象的要高得多。但是在日常的文书工作中,你既不需要它,它也不需要你,PDF文件并没有docx那末灵活。
我要如何获得它?
在这里,我们不考虑付费的发行版,也不考虑并非LaTeX的其他版本TeX,仅考虑对于新手来说最为稳妥的TeX Live(轻量级的MiK TeX当然也很好,然而用户太少了)。
对于Windows&Mac&Unix/Linux用户:https://tug.org/texlive/
在了解LaTeX之后:
tlmgr(TeX Live的包管理机制)在win上是个大笨蛋,所以在下载iso文件后选择全部安装,不要漏下每一个包,当然你可以选择不安装TeXWork的默认前端。(这些包为你编译后的各种效果提供了支持,事实上,只要你的自创的包够多,你也可以拥有自己的TeX发行版)
例外地,win上还有ProTeXt可以选择,它是MiKTeX的另一个实现。
在Mac上:
你们有更合适的MacTeX。
在Linux上:
打开你的terminal,在你的yum/pacman/apt仓库里找找这三个包: texlive texlive-langchinese texstudio,然后安装它们。如果出了问题,在仓库上的问题可以查找各自的wiki,如果在这之后还有问题请查阅万能的archwiki。但永远记住,你的手册比单独问题的单独解决方法更权威,TUG才是最万能的。
如果你觉得TeXWork很丑:
是的,它确实很丑,所幸tex是平台无关的纯文本文件,因而你可以使用不同的前端去编辑同一份文件。例如vim、emacs和vscode、sublime。
如果你想试试新版的TeX Live:
LaTeX的引擎已经有三十多年没有大的改动了,因而发行版们更新的除了前端就是各种包,养成习惯后并没有更新的必要。如果是需要更新后的某些特性,我这一律建议你卸了重装,即使对于Unix用户可以使用脚本升级,但是那玩意实在落后时代三十年了,真的不咋好使,不如换个Linux。
当你真的需要所见即所得:
TeXmacs很不错,不过我觉得也会有人喜欢vim+spacevim或者nvim+lunarvim,写起来真舒服啊。
当你接触LaTeX时:
怎麼用LaTeX是个既然已经提出来便不再有意义的东西,因而我们不提及命令们的使用,而是着重于如何形容你所遇到的常见的问题。
而对于一些基础的概念,在这里提出,以便于你形容你的问题。
首先,LaTeX文件的格式:
源文件的格式通常是tex,它是纯文本的,对于所有平台都可以正常地查看以及编译。
源文件通常分为两部分,即导言区与正文区。
下图是一份标准的tex文档的样貌:

一般而言,一份正常的文档的导言区还会包括各种包引用命令,自定义的复合命令、重命名命令,还有一些声明性质的命令(它们定义这些文档的基础样貌,前面的各种命令在这些声明的基础上才有显示的空间)。
但是纯粹的.tex无法做到许多事,它并不方便,一些发行版创立了更方便的格式来组成一份LaTeX文档(这通常是一个目录)。你可以这样粗略地认为,源文件在初次编译后会根据定义引用你所提到的引述、媒体资源,还有外部链接,它们共同地在不同文件的组织下形成一份文档——二次编译的必要性就在于初次编译并没有将引用的资源编纂进文档,而是在源文件的指导下先将这些不同文件编译了出来。
在这里,指出几种文件的作用:
.tex文件用于描述文档内容。
.bib是以bibligraphy方式导入参考文献时,描述参考文献的文档,它由.bbl编译。
.sty是包文件,在引言区使用\usepackage导入,平时不需要注意。
.cls是类文件,通过文档最前面的\documentclass命令导入,你可以将其理解为一个LaTeX使用的“CSS库的引用”。
以及,box,字宽,字高,字号,行距以及块。
LISP是一门古老的,在Unix宇宙诞生之前就已经存在的,高级语言。它提出了一个七十年后的今天还被人们所使用的概念:宏(macro)。
它的具体定义,由于LISP语言的宏的概念在计算机世界的扩展已经失去了一个具体的意义。你可以这样认为:如果一个东西,它可以执行一个相对比较复杂的任务,它就是一坨函数。如果这坨函数被定义成一个宏,那么你就可以在文件中用简单几个关键词引用它来完成一个任务。
而LaTeX是一门标记语言,它的包(package)概念就类似于宏,简单的TeX命令语句被包装起来定义成一个包。你又可以在引言区定义这些包所定义的命令来组成新的命令,在这个过程中,LaTeX更多地是作为一种shell而非标记语言来工作。
shell的输出,对于terminal来说是文件的变化和不知所谓的字符串,对于一份tex文档,就是box——人们将文档的一个相对独立的部分定义为一个box。一个公式的左右两边分别可以是两个box,一个段落也可以是box,一个章节甚至是一系列互有关联的书的某一本也是box。
对于tex,box是一个非常合适的模型,每一个box都有与其对应的源文件段落,对于命令的冲突,显现在box上就是badbox(坏箱)。也就是虽然可以输出但并不美观的box,tex认为你输入的命令与美观且正确的命令不同。
而字号(高)与字宽,LaTeX采用point与ciceros定义,人们多用英美制。pt,磅数,点数;cc,西塞罗。一般来说,pt确定,cc也随之确定,当我们指多少多少字号时,通常也指代了它的高度。
严正地指明,pt是字号单位,使用在摄影和排版以及设计领域,它是一个字号的大小单位,而非什么长度单位!尽管它可以这样使用,但它不是!
对于ex与em,它们分别是当前字体下x的高度(四分之三pt)和M的宽度,px则是四分之三pt的高度。
在这里附一张对照表,图源见水印:

还有一个来自cnblog的表格(@心态与习惯)

重要地,还有一些换算规则,在这指明:
1点=0.376毫米=1.07英美点=0.0148英尺=0.1776英寸,1pt=1/72英尺=0.3527 毫米。
行距上,一般采用你所定义的字号高度和浮动的额外间距之和,常用五号字体+12pt。
至于块的概念,我这里笼统地认为是图像以及表格和特殊段落的一个统称,它们也使用字号来衡量几何尺寸——尽量不要对这些东西使用自定义命令和嵌套!
尤其应该注意的是,直接在命令行内编译tex时,不指明输出将会输出dvi文件。

当你在引言区定义一个命令:
它八成不会不听话,事实上是你的脑子不听话,tex永远是对的——它的错误很容易就可以发现,一般而言是出现在引言区。
当你觉得花哨的命令很多而且不知道怎么用:
我有一份速查表。
当你只是想要个炫酷的样式:
vscode的md预览可以自定义css样式,LaTeX.css+md=pdf预览。
关于TeXmacs和lyx:
我不喜欢gnu丑到爆炸的原生风格,但我喜欢emacs的顺滑体验,我永远推荐你用emacs作为tex编辑器。至于lyx,很好用,而且预览很舒服,但是不那么自由——至少对于大多数人,emacs比它自由多了。听说有个汉语TeXmacs叫做墨干,我并不怎莫看好,主要是因为它长得就不太优雅。
全文参考:
https://github.com/wklchris/Note-by-LaTeX
http://github.com/z-bingo/Resume-Chinese-English-LaTeX
https://blog.csdn.net/robert_chen1988/article/details/52739825
https://www.zhihu.com/question/62943097
https://github.com/vincentdoerig/latex-css