天天动画片 > 八卦谈 > LaTeX入门:选择、安装和基础概念。

LaTeX入门:选择、安装和基础概念。

八卦谈 佚名 2024-04-12 04:23:34

在使用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文档的样貌:

开头的documentclass至begin之前一段内的内容是导言区,它定义了后面的正文区的各种命令所呈现的样貌。

一般而言,一份正常的文档的导言区还会包括各种包引用命令,自定义的复合命令、重命名命令,还有一些声明性质的命令(它们定义这些文档的基础样貌,前面的各种命令在这些声明的基础上才有显示的空间)。

但是纯粹的.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的高度。

在这里附一张对照表,图源见水印:

一些汉语排版有独特的规则,一个字宽是0.8倍英文字宽。

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

人类讨厌迪多字号。

重要地,还有一些换算规则,在这指明:

1点=0.376毫米=1.07英美点=0.0148英尺=0.1776英寸,1pt=1/72英尺=0.3527 毫米。

行距上,一般采用你所定义的字号高度和浮动的额外间距之和,常用五号字体+12pt。

至于块的概念,我这里笼统地认为是图像以及表格和特殊段落的一个统称,它们也使用字号来衡量几何尺寸——尽量不要对这些东西使用自定义命令和嵌套!

尤其应该注意的是,直接在命令行内编译tex时,不指明输出将会输出dvi文件。

还有一些实用意义的东西…

在你编写文档时,经常会遇到的一些离谱的问题:

当你在引言区定义一个命令——

在编译之后,你的问题不但在于排查问题在那里,也要考虑问题为什么会出现在那里,LaTeX太稳定了以至于甚至出现了自己排查自己的情景:它的问题是可复现的,你的问题通常不会在两次编译后出现在不同的box内。

它的错误很容易就可以发现,一般而言是出现在引言区。

当你觉得花哨的命令很多而且不知道怎么用——

说实话,LaTeX的命令只要你不使用抽象的tex基础命令,只要会英语就能知道命令所描述的东西。前提是你没有疏忽到忘了引用包以及确定你的文档的体裁。

当你真的真的被这东西逼疯,觉得太乱了不知道从哪里开始动键盘——

vscode的md预览可以自定义css样式,我经常用LaTeX.css的开源项目写LaTeX风格的md作为预览。

以及最重要的,如果你想体验LaTeX独特的风格又不那么想花费时间去学习它们——

真的,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

(因为是后来想起来加的,不要追究为啥没有脚注标号)

本文标题:LaTeX入门:选择、安装和基础概念。 - 八卦谈
本文地址:www.ttdhp.com/article/54002.html

天天动画片声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
扫码关注我们