有很多Geeks或者LaTeX'sFanaticalFans过分地强调了LaTeX的一些并非重点的特性,以至于很多初学者会觉得LaTeX很神秘很复杂,从而引发了初学者的畏难情绪甚至是负面情绪。尽管这些Fans说得并没有错,我是说在事实上,但是他们的表达方式和内心态度却间接阻碍了LaTeX的发展,我想这也是和他们的初衷相悖的。
我曾经也受到过这些言论的影响,但幸运的事,至今为止我已经越过了这些障碍,并更加坚信了他们所言(LaTeX的优点)的正确性。因此我想以我自己的方式,向更多的人介绍LaTeX——这个优雅,但有着自己高傲,却绝不复杂甚至神秘的东西。
事实上本文在行文过程中,会有相当多的提示帮助你以正确的方式阅读。因此有必要在此先介绍一下最常用的一些标记。
TeX的源代码是后缀为.tex的纯文本文件。使用任意纯文本编辑器,都可以修改.tex文件:包括Windows自带的记事本程序,也包括专为TeX设计的编辑器(TeXworks,TeXmaker,TeXstudio,WinEdt等),还包括一些通用的文本编辑器(SublimeText,Atom,VisualStudioCode等)。你可以在这些能够编辑纯文本文件的编辑器中任选其一作为你的TeX编辑器,也可以使用TeX发行自带的编辑器。最流行的两个TeX发行(TeXLive和MiKTeX)都带有TeXworks编辑器。
所谓TeX发行,也叫TeX发行版、TeX系统或者TeX套装,指的是包括TeX系统的各种可执行程序,以及他们执行时需要的一些辅助程序和宏包文档的集合。
本文只介绍TeXworks的使用,原因有以下一些:
启动TeXworks很简单,你可以在Windows启动对话框中输入texworks按回车。具体步骤是:
如果这样打不开TeXworks,你可能需要从开始菜单找到TeXworks图标以启动;或者进入TeX系统的安装目录找到TeXworks。
启动之后,TeXworks的界面,会默认占据你屏幕的左半边,右半边留空。效果如下图:
图中空白的部分,就是输入编辑文本的编辑框;在编辑框的右下角,显示有三个按钮,最左边的是换行符模式,中间是编码模式,右边标示当前光标所在位置;编辑框的上方是工具栏,工具栏的右半部分使大家熟悉的功能(新建、打开、保存、撤消、恢复、剪切、复制、黏贴、查找、替换),工具栏的左边则是编译按钮(TeXworks也称其为「排版工具」);工具栏在往上,则是菜单栏,此处按下不表。
Windows,Unix等操作系统对待「换行符」是有不同的。索性TeXworks为我们做了足够的提示,方面我们的选择(点击一下那个按钮就知道了)。一般而言,保持默认即可。
字符(包括英文字符和中文字符)在计算机中,经过编码以二进制的形式存储在计算机中。如果编辑器编码和计算机内部编码不一致,则会导致所谓「乱码」的现象。TeXworks默认使用UTF8编码,在我们的文档中不需要进行任何更改,而对于一些其他的文档可能需要按照要求更改编码。
TeXworks默认的排版工具是pdfLaTeX。如果你希望更改这个默认值,可以在编辑-首选项-排版-处理工具-默认中修改。
在编辑框中,输入如下内容:
12345\documentclass{article}%这里是导言区\begin{document}Hello,world!\end{document}将文档保存在你希望的位置,然后在排版工具的下拉选框中选中XeLaTeX后,按下绿色的编译按钮。一会儿,如果没有意外,屏幕的右边就会出现编译之后结果。如下图:
请注意,由于操作系统编码和TeX内部实现的限制,在Windows平台上,TeX涉及到的文件(包括.tex,.jpg等各类文件)都不要包含中文名字。否则,在编译时可能会因为编码问题导致稀奇古怪的报错。
很容易发现,输入进编辑框的五行文字,在最终输出的pdf档中只显示了1行。事实上,交付TeX处理的文档内容,并不会全部输出。
此处的第一行\documentclass{article}中包含了一个控制序列(或称命令/标记)。所谓控制序列,是以反斜杠\开头,以第一个空格或非字母的字符结束的一串文字。它们不被输出,但是他们会影响输出文档的效果。这里的控制序列是documentclass,它后面紧跟着的{article}代表这个控制序列有一个必要的参数,该参数的值为article。这个控制序列的作用,是调用名为article的文档类。
请注意,TeX对控制序列的大小写是敏感的。
部分控制序列还有被方括号[]包括的可选参数。
所谓文档类,即是TeX系统预设的(或是用户自定的)一些格式的集合。不同的文档类在输出效果上会有差别。
此处的第二行以%开头。TeX以百分号%作为注释标记。具体来说,TeX会忽略从%开始到当前行末尾的所有内容。这些内容不会被输出,也不影响最终排版效果,只供人类阅读。若要输出%字符本身,则需要在%之前加上反斜杠\进行转义(escape)。例如:
1今年的净利润为20\%,比去年高。此处%被当做正常的百分号处理,其后的文字也将被正常输出。
我们继续分析第一篇文档的内容。在注释行之后出现了控制序列begin。这个控制序列总是与end成对出现。这两个控制序列以及他们中间的内容被称为「环境」;它们之后的第一个必要参数总是一致的,被称为环境名。
只有在document环境中的内容,才会被正常输出到文档中去或是作为控制序列对文档产生影响。也就是说,在\end{document}之后插入任何内容都是无效的。
从\documentclass{article}开始到\begin{document}之前的部分被称为导言区。你可以将导言区理解为是对整篇文档进行设置的区域——在导言区出现的控制序列,往往会影响整篇文档的格式。
比如,我们通常在导言区设置页面大小、页眉页脚样式、章节标题样式等等。
关于LaTeX的中文支持,首先要说的是:在现在,一切教你使用CJK宏包的模板、人、网页、书,都是糟糕的、有害的、恼人的、邪恶的和应该摒弃的。
成功编译输出第一个文档之后,中国TeX用户面临的第二个普遍问题大概就是「实现中英文混排」了。众所周知,TeX系统是高教授开发的。在TeX开发当初并没有考虑到亚洲文字的问题。因此早期的TeX系统并不能直接支持中文,必须要用其他工具先处理一下(或者是一些宏包之类的)。但是现在,XeTeX原生支持Unicode,并且可以方便地调用系统字体。可以说解决了困扰中国TeX使用者多年的大问题。至此,我们只需要使用几个简单的宏包,就能完成中文支持了。
所谓宏包,就是一系列控制序列的合集。这些控制序列太常用,以至于人们会觉得每次将他们写在导言区太过繁琐,于是将他们打包放在同一个文件中,成为所谓的宏包(台湾方面称之为「巨集套件」)。\usepackage{}可以用来调用宏包。
除去中文支持,中文的版式处理和标点禁则也是不小的挑战。好在由吴凌云和江疆牵头,现在主要由刘海洋、李清和我维护的CTeX宏集一次性解决了这些问题。CTeX宏集的优势在于,它能适配于多种编译方式;在内部处理好了中文和中文版式的支持,隐藏了这些细节;并且,提供了不少中文用户需要的功能接口。我们来看如何使用CTeX宏集来处理中英文混排的文档。
请注意,CTeX宏集和CTeX套装是两个不同的东西。CTeX宏集本质是LaTeX宏的集合,包含若干文档类(.cls文件)和宏包(.sty文件)。CTeX套装是一个过时的TeX系统。
新版CTeX宏集的默认能够自动检测用户的操作系统,并为之配置合适的字库。对于Windows用户、MacOSX用户和Linux用户,都无需做任何配置,就能使用CTeX宏集来排版中文。[2015-05-20更新]
在TeXworks编辑框中输入以下内容,以UTF-8编码保存,使用XeLaTeX编译:
1234\documentclass[UTF8]{ctexart}\begin{document}你好,world!\end{document}如果没有意外,你将会看到类似下图的输出结果。
相较于之前的例子,这份代码只有细微的差异:
你也可以直接使用xeCJK宏包来支持中英文混排。不过大多数情况是不推荐这样做的。因此,如果你能抑制住你小小的好奇心,可以暂时略过这一段,回头再看不迟。:)
在TeXworks编辑框中输入以下内容,保存,使用XeLaTeX编译:
除了"document"环境中同时出现了中文和英文,和最原始的Hello,world!不同点在于,导言区中多出了两条控制序列。他们的作用我已经用注释标出了。
\setCJKmainfont{·}是定义在"xeCJK"宏包中的控制序列,它可以用来设置CJK主字体。
如果你的TeX系统提示找不到字体,请按以下提示操作。
非MacOSX用户请按照如下步骤打开系统命令行(*nix系统请打开终端):
在系统命令行中输入如下命令:
fc-list:lang=zh-cn>C:\font_zh-cn.txt(相信使用*nix的你,一定知道如何修改上述命令达到你想要的效果)
打开C盘根目录下的C:\font_zh-cn.txt纯文本文档,里面的内容就是你当前系统可用的全部中文字体,形如:
每一个小黑框之间的内容,就对应着一个可用的字体。这些小黑框实际上是换行符,但是由于Windows系统的原因,他们没有被正常显示。如果看着不爽,你可以尝试用TeXworks打开这个文件查看(放心,能够打开的)。以下是我用gVim打开的效果:
其中的每一行,都代表着一个可用的字体。其形式如下:
<字体文件路径>:<字体标示名1>,<字体表示名2>:Style=<字体类型>我们可以看到图中的倒数第四行
C:/WINDOWS/fonts/simsun.ttc:宋体,SimSun:style=Regular出现了之前文档里调用的字体SimSun,此处表明该字体有两个表示名:宋体和SimSun,我们在\setCJKmainfont{·}中填入任意一个都有同样的效果。
因此,如果之前的文档无法编译通过,请在你的操作系统字体中,选取一个自己喜欢的,将它的字体表示名填入到\setCJKmainfont{·}中去。
保存并用XeLaTeX编译如下文档,查看效果:
12345678\documentclass[UTF8]{ctexart}\title{你好,world!}\author{Liam}\date{\today}\begin{document}\maketitle你好,world!\end{document}导言区复杂了很多,但和之前的文档主要的区别只有一处:定义了标题、作者、日期。
在document环境中,除了原本的你好,world!,还多了一个控制序列maketitle。这个控制序列能将在导言区中定义的标题、作者、日期按照预定的格式展现出来。
123456789101112131415161718\documentclass[UTF8]{ctexart}\title{你好,world!}\author{Liam}\date{\today}\begin{document}\maketitle\section{你好中国}中国在EastAsia.\subsection{HelloBeijing}北京是capitalofChina.\subsubsection{HelloDongchengDistrict}\paragraph{Tian'anmenSquare}isinthecenterofBeijing\subparagraph{ChairmanMao}isinthecenterof天安门广场。\subsection{Hello山东}\paragraph{山东大学}isoneofthebestuniversityin山东。\end{document}在文档类article/ctexart中,定义了五个控制序列来调整行文组织结构。他们分别是
在report/ctexrep中,还有\chapter{·};在文档类book/ctexbook中,还定义了\part{·}。
在上一节的文档中,找到\maketitle,在它的下面插入控制序列\tableofcontents,保存并用XeLaTeX编译两次,观察效果:
12345678910111213141516171819\documentclass[UTF8]{ctexart}\title{你好,world!}\author{Liam}\date{\today}\begin{document}\maketitle\tableofcontents\section{你好中国}中国在EastAsia.\subsection{HelloBeijing}北京是capitalofChina.\subsubsection{HelloDongchengDistrict}\paragraph{Tian'anmenSquare}isinthecenterofBeijing\subparagraph{ChairmanMao}isinthecenterof天安门广场。\subsection{Hello山东}\paragraph{山东大学}isoneofthebestuniversityin山东。\end{document}试试交换\maketitle和\tableofcontents的顺序,看看会发生什么,想想为什么。
请注意,在「你好中国」这一节中,两次「中国在EastAsia.」中夹有一个空行,但输出却只有一个换行并没有空行。这是因为LaTeX将一个换行当做是一个简单的空格来处理,如果需要换行另起一段,则需要用两个换行(一个空行)来实现。
首先恭喜你看到这里。如果前面的几个文档你都认真编译过了,那么你已经可以胜任许多文档的排版工作。下面我们进入LaTeX最为犀利的部分。
为了使用AMS-LaTeX提供的数学功能,我们需要在导言区加载amsmath宏包:
1\usepackage{amsmath}数学模式LaTeX的数学模式有两种:行内模式(inline)和行间模式(display)。前者在正文的行文中,插入数学公式;后者独立排列单独成行,并自动居中。
在行文中,使用$...$可以插入行内公式,使用\[...\]可以插入行间公式,如果需要对行间公式进行编号,则可以使用equation环境:
示例代码(请保存后,使用XeLaTeX编译,查看效果):
1234567891011\documentclass{article}\usepackage{amsmath}\begin{document}Einstein's$E=mc^2$.\[E=mc^2.\]\begin{equation}E=mc^2.\end{equation}\end{document}在这里提一下关于公式标点使用的规范。行内公式和行间公式对标点的要求是不同的:行内公式的标点,应该放在数学模式的限定符之外,而行间公式则应该放在数学模式限定符之内。
在数学模式中,需要表示上标,可以使用^来实现(下标则是_)。它默认只作用于之后的一个字符,如果想对连续的几个字符起作用,请将这些字符用花括号{}括起来,例如:
1\[z=r\cdote^{2\pii}.\]根式与分式根式用\sqrt{·}来表示,分式用\frac{·}{·}来表示(第一个参数为分子,第二个为分母)。
123456789\documentclass{article}\usepackage{amsmath}\begin{document}$\sqrt{x}$,$\frac{1}{2}$.\[\sqrt{x},\]\[\frac{1}{2}.\]\end{document}可以发现,在行间公式和行内公式中,分式的输出效果是有差异的。如果要强制行内模式的分式显示为行间模式的大小,可以使用\dfrac,反之可以使用\tfrac。
在行内写分式,你可能会喜欢xfrac宏包提供的\sfrac命令的效果。
排版繁分式,你应该使用\cfrac命令。
一些小的运算符,可以在数学模式下直接输入;另一些需要用控制序列生成,如
12\[\pm\;\times\;\div\;\cdot\;\cap\;\cup\;\geq\;\leq\;\neq\;\approx\;\equiv\]连加、连乘、极限、积分等大型运算符分别用\sum,\prod,\lim,\int生成。他们的上下标在行内公式中被压缩,以适应行高。我们可以用\limits和\nolimits来强制显式地指定是否压缩这些上下标。例如:
1234$\sum_{i=1}^ni\quad\prod_{i=1}^n$$\sum\limits_{i=1}^ni\quad\prod\limits_{i=1}^n$\[\lim_{x\to0}x^2\quad\int_a^bx^2dx\]\[\lim\nolimits_{x\to0}x^2\quad\int\nolimits_a^bx^2dx\]多重积分可以使用\iint,\iiint,\iiiint,\idotsint等命令输入。
1\[\iint\quad\iiint\quad\iiiint\quad\idotsint\]定界符(括号等)各种括号用(),[],\{\},\langle\rangle等命令表示;注意花括号通常用来输入命令和环境的参数,所以在数学公式中它们前面要加\。因为LaTeX中|和\|的应用过于随意,amsmath宏包推荐用\lvert\rvert和\lVert\rVert取而代之。
为了调整这些定界符的大小,amsmath宏包推荐使用\big,\Big,\bigg,\Bigg等一系列命令放在上述括号前面调整大小。
省略号用\dots,\cdots,\vdots,\ddots等命令表示。\dots和\cdots的纵向位置不同,前者一般用于有下标的序列。
12\[x_1,x_2,\dots,x_n\quad1,2,\cdots,n\quad\vdots\quad\ddots\]矩阵amsmath的pmatrix,bmatrix,Bmatrix,vmatrix,Vmatrix等环境可以在矩阵两边加上各种分隔符。
12345\[\begin{pmatrix}a&b\\c&d\end{pmatrix}\quad\begin{bmatrix}a&b\\c&d\end{bmatrix}\quad\begin{Bmatrix}a&b\\c&d\end{Bmatrix}\quad\begin{vmatrix}a&b\\c&d\end{vmatrix}\quad\begin{Vmatrix}a&b\\c&d\end{Vmatrix}\]效果图:
使用smallmatrix环境,可以生成行内公式的小矩阵。
1Marryhasalittlematrix$(\begin{smallmatrix}a&b\\c&d\end{smallmatrix})$.效果图:
有的公式特别长,我们需要手动为他们换行;有几个公式是一组,我们需要将他们放在一起;还有些类似分段函数,我们需要给它加上一个左边的花括号。
无须对齐的长公式可以使用multline环境。
1234\begin{multline}x=a+b+c+{}\\d+e+f+g\end{multline}效果:
如果不需要编号,可以使用multline*环境代替。
需要对齐的公式,可以使用aligned次环境来实现,它必须包含在数学环境之内。
1234\[\begin{aligned}x={}&a+b+c+{}\\&d+e+f+g\end{aligned}\]效果图:
无需对齐的公式组可以使用gather环境,需要对齐的公式组可以使用align环境。他们都带有编号,如果不需要编号可以使用带星花的版本。
12345678\begin{gather}a=b+c+d\\x=y+z\end{gather}\begin{align}a&=b+c+d\\x&=y+z\end{align}效果:
请注意,不要使用eqnarray环境。原因可以参考:
分段函数可以用cases次环境来实现,它必须包含在数学环境之内。
1234\[y=\begin{cases}-x,\quadx\leq0\\x,\quadx>0\end{cases}\]效果图:
站在我个人的角度,我建议LaTeX用户应当尽可能避免使用辅助工具输入数学公式。但对于急用的初学者而言,适当地使用辅助工具(而不形成依赖)也是有一些收益的。因此这里介绍一些关于数学公式的辅助工具。
关于LaTeX插图,首先要说的是:「LaTeX只支持.eps格式的图档」这个说法是错误的。
在LaTeX中插入图片,有很多种方式。最好用的应当属利用graphicx宏包提供的\includegraphics命令。比如你在你的TeX源文件同目录下,有名为a.jpg的图片,你可以用这样的方式将它插入到输出文档中:
12345\documentclass{article}\usepackage{graphicx}\begin{document}\includegraphics{a.jpg}\end{document}图片可能很大,超过了输出文件的纸张大小,或者干脆就是你自己觉得输出的效果不爽。这时候你可以用\includegraphics控制序列的可选参数来控制。比如
1\includegraphics[width=.8\textwidth]{a.jpg}这样图片的宽度会被缩放至页面宽度的百分之八十,图片的总高度会按比例缩放。
tabular环境提供了最简单的表格功能。它用\hline命令表示横线,在列格式中用|表示竖线;用&来分列,用\\来换行;每列可以采用居左、居中、居右等横向对齐方式,分别用l、c、r来表示。
12345678910111213\begin{tabular}{|l|c|r|}\hline操作系统&发行版&编辑器\\\hlineWindows&MikTeX&TexMakerX\\\hlineUnix/Linux&teTeX&Kile\\\hlineMacOS&MacTeX&TeXShop\\\hline通用&TeXLive&TeXworks\\\hline\end{tabular}效果:
插图和表格通常需要占据大块空间,所以在文字处理软件中我们经常需要调整他们的位置。figure和table环境可以自动完成这样的任务;这种自动调整位置的环境称作浮动体(float)。我们以figure为例。
123456\begin{figure}[htbp]\centering\includegraphics{a.jpg}\caption{有图有真相}\label{fig:myphoto}\end{figure}htbp选项用来指定插图的理想位置,这几个字母分别代表here,top,bottom,floatpage,也就是就这里、页顶、页尾、浮动页(专门放浮动体的单独页面或分栏)。\centering用来使插图居中;\caption命令设置插图标题,LaTeX会自动给浮动体的标题加上编号。注意\label应该放在标题命令之后。
图片和表格的各种特殊效果,限于篇幅此处无法详叙。请查看最后一章推荐的文档。
比如我希望,将纸张的长度设置为20cm、宽度设置为15cm、左边距1cm、右边距2cm、上边距3cm、下边距4cm,可以在导言区加上这样几行:
如果你因为某些原因选择不适用CTeX宏集(不推荐)进行中文支持和版式设置,则你需要做额外的一些工作。
我们可以通过setspace宏包提供的命令来调整行间距。比如在导言区添加如下内容,可以将行距设置为字号的1.5倍:
请注意用词的差别:
我们可以通过修改长度\parskip的值来调整段间距。例如在导言区添加以下内容
1\addtolength{\parskip}{.4em}则可以在原有的基础上,增加段间距0.4em。如果需要减小段间距,只需将该数值改为负值即可。
恭喜你终于看到了这里。如果你认真完成了上面所有的练习,并琢磨了其中的意义,相信你已经可以用LaTeX排版出漂亮的文档了。现在我们说一点历史,帮助你更好地理解TeX这个系统。
带有TeX的词,仅仅是本文就已经提到了TeX,LaTeX,XeLaTeX。通常中国学生面对不了解意思的一群形近单词,都会有一种「本能的恐惧」(笑~)。因此,「大神们」在为新手介绍TeX的时候,如果互相争论「XXTeX比YYTeX好」或者是「XXTeX的YYTeX如何如何」,往往会蹦出下面这些带有TeX的词汇:TeX,pdfTeX,XeTeX,LuaTeX,LaTeX,pdfLaTeX,XeLaTeX…
事实上,这部分的内容太过复杂,我自己的了解也实在有限。所以下面这部分的内容也只能是对我了解到的知识的一个概括,甚至可能有些许谬误。所以大家只需要将这部分的内容当做是一个参考就可以了。
TeX是高德纳(DonaldErvinKnuth,1938年1月10日--)教授愤世嫉俗追求完美做出来的排版引擎,同时也是该引擎使用的标记语言(MarkupLanguage)的名称。这里所谓的引擎,是指能够实现断行、分页等操作的程序(请注意这并不是定义);这里的标记语言,是指一种将控制命令和文本结合起来的格式,它的主体是其中的文本而控制命令则实现一些特殊效果(同样请注意这并不是定义)。
而LaTeX则是L.Lamport(1941年2月7日--)教授开发的基于TeX的排版系统。实际上LaTeX利用TeX的控制命令,定义了许多新的控制命令并封装成一个可执行文件。这个可执行文件会去解释LaTeX新定义的命令成为TeX的控制命令,并最终交由TeX引擎进行排版。
实际上,LaTeX是基于一个叫做plainTeX的格式的。plainTeX是高德纳教授为了方便用户,自己基于原始的TeX定义的格式,但实际上plainTeX的命令仍然十分晦涩。至于原始的TeX直接使用的人就更少了,因此plainTeX格式逐渐就成为了TeX格式的同义词,尽管他们事实上是不同的。
因此在TeX-LaTeX组合中,
TeX系统生成的文件是dvi格式,虽然可以用其他程序将其转换为例如pdf等更为常见的格式,但是毕竟不方便。
dvi格式是为了排版而产生的,它本身并不支持所谓的「交叉引用」,pdfTeX直接输出pdf格式的文档,这也是pdfTeX相对TeX进步(易用性方面)的地方。
为了解决这个问题,HànThThành博士在他的博士论文中提出了pdfTeX这个对TeX引擎的扩展。二者最主要的差别就是pdfTeX直接输出pdf格式文档,而TeX引擎则输出dvi格式的文档。
pdfLaTeX这个程序的主要工作依旧是将LaTeX格式的文档进行解释,不过此次是将解释之后的结果交付给pdfTeX引擎处理。
高德纳教授在实现TeX的当初并没有考虑到中日韩等字符的处理,而只支持ASCII字符。这并不是说中日韩字符就无法使用TeX引擎排版了,事实上TeX将每个字符用一个框包括起来(这被称为盒子)然后将一个个的盒子按照一定规则排列起来,因而TeX的算法理论上适用于任何字符。ASCII字符简单理解,就是在半角模式下你的键盘能直接输出的字符。
不同于CJK等方式使用TeX和pdfTeX这两个不直接支持Unicode字符的引擎,XeTeX引擎直接支持Unicode字符。也就是说现在不使用CJK也能排版中日韩文的文档了,并且这种方式要比之前的方式更加优秀。
XeLaTeX和XeTeX的关系与pdfLaTeX和pdfTeX的关系类似,这里不再赘述。
使用XeTeX引擎需要使用UTF-8编码。
所谓编码就是字符在计算机储存时候的对应关系。例如,假设有一种编码,将汉字「你」对应为数字「1」;「好」对应为数字「2」,则含有「你好」的纯文本文件,在计算机中储存为「12」(读取文件的时候,将「12」再转换为「你好」显示在屏幕上或打印出来)。
LuaTeX是正在开发完善的一个TeX引擎,相对它的前辈们还相当的不完善,这里不赘述。
之前介绍了TeX,LaTeX,pdfTeX,pdfLaTeX,XeTeX,XeLaTeX,LuaTeX等,他们都是TeX家族的一部分。但是作为一个能够使用的TeX系统,仅仅有他们还是不够的。CTeX,MiKTeX,TeXLive都是被称为「发行」的软件合集。他们包括了上述各种引擎的可执行程序,以及一些文档类、模板、字体文件、辅助程序等等。其中CTeX是建立在MiKTeX的基础之上的。
TeX-pdfTeX-XeTeX-LuaTeX都是排版引擎,按照先进程度递增(LuaTeX尚未完善)。
LaTeX是一种格式,基于TeX格式定义了很多更方便使用的控制命令。上述四个引擎都有对应的程序将LaTeX格式解释成引擎能处理的内容。
CTeX,MiKTeX,TeXLive都是TeX的发行,他们是许许多多东西的集合。
因此,如果通过我这篇小文,体验到了LaTeX带给你的一些乐趣,有了对LaTeX的兴趣(如果是这样,我就已经能够无比开心了~),请务必去阅读一些正式的LaTeX文档。