Linux折腾记(十五):再来说说LaTeX排版引擎
在我的上一篇随笔中,我提到了Markdown、LaTeX和MathJax。这几个东西对目前的网络技术文章的写作、展示都有深远的影响。在上一篇中,我还给出了一份LaTeX语法的学习资料。在这一篇里,我想再来谈谈LaTeX。
在很多人心中,LaTeX是一个很专业的排版系统,同时也是一个很复杂的系统。说到专业,确实很多科技论文都是用LaTeX写作,而且很多知名的杂志社只接受LaTeX格式的投稿,而且使用LaTeX排版得到的效果那是超级赞,特别是对科技论文中充斥的数学公式而言。说到复杂,不仅是因为LaTeX排版语言命令繁多,更因为它数之不尽的宏包,学习成本真的是相当相当相当的高。
对于一套LaTeX排版系统,它究竟包含哪些东西呢?我认为它主要可以分成这样几个部分:
1.一个排版引擎,TeX或pdfTeX或XeTeX;2.一系列的字体;
3.一系列的宏包;
一些工具,比如用来查看各种排版引擎输出的排版结果,或者在dvi、ps、pdf等格式之间的转换。
而对于LaTeX排版系统的复杂性,我认为主要是由于历史原因引起的,理由如下:
1.最早的由Knuth教授写的TeX引擎不支持UTF-8编码的输入文件,所以要让它支持中文实在是太难了;2.最早的TeX系统自带一套字体,要扩展它就得扩展相应领域的字体,比如LaTeX自带丰富的数学字体,要把字体安装到TeX系统中是一件非常复杂的事情;
3.大量的第三方宏包,安装和学习都非常困难;
4.都什么年代了,谁还用dvi格式和ps格式啊,用pdf多方便啊。
对于这些历史原因引起的复杂性,现在早就解决了,只是很多书籍没有写清楚而已。我认为现在用LaTeX其实很方便的,理由如下:
1.Knuth教授的Tex引擎用来瞻仰即可,实际工作中使用XeTeX引擎,完美支持Unicode字符集和UTF-8编码,中文再也不是问题;2.字体神马的,Knuth教授的METAFONT早过时了,现在谁还不用TrueType啊?好的字体当然少不了像Microsoft、Adobe、Apple这些既有钱又有品味的公司出品了;
3.XeTeX引擎可以直接使用操作系统中安装的字体,再也不用考虑把字体安装到TeX系统中了;
4.XeTeX引擎直接输出pdf格式的文件;
5.排版也可以有IDE工具,比如TeXWorks;
6.至于宏包太多这个问题,我们可以用现成的发行版嘛,比如texlive套装。
下面开始实战。我是在Ubuntu系统下使用texlive,为了省事,我直接安装了texlive-full,使用如下命令:
复制代码代码如下:
sudo apt-get install texlive-full
然后,再安装一个TeXWorks,命令如下:
复制代码代码如下:
sudo apt-get install texworks
下面是TexWorks的工作界面,排版引擎一定要选择XeLaTex哦。左边是文档编辑,右边是预览效果:
第一次运行是不可能成功的,因为还要像下面这样设置一下字体。
如果要想顺利地进行中文排版,必须得借用一点中文字体。中文排版所用到的字体一般有6种,分别是:宋体、楷体、黑体、仿宋体、隶书和幼圆。所以我从我的Win7系统下将这几个字体拷贝到Ubuntu中,把它们扔到主目录下的.fonts中即可。(隶书和幼圆要安装了Office才有。)如下图:
当然,如果不想完全达到Windows中的效果,也是可以不借用它的字体的。在Linux中,宋体、黑体和楷体是不缺的,其它字体就欠奉了。如果不借用Windows中的字体,则宋体可由AR PL UMing代替,楷体可由AR PL UKai代替,黑体可由Droid Sans Fallback代替,如下图:
然后,修改/usr/share/texlive/texmf-dist/tex/latex/ctex/fontset/ctex-xecjk-winfonts.def
中的字体名称和上图中fc-list输出的字体名称一一对应,如下图:
看到上面的路径是不是觉得它太长了?太难找了?的确如此,texlive的路径就是这么复杂。我第一次是根据错误信息找到的这个文件。
texlive-full实在是太大了,我安装的时候几乎花了一夜的时间去下载。对于这么复杂的系统,它的各种配置文件啊、环境变量啊,都放在哪里呢?使用tlmgr conf
命令即可查看,如下图:
对于写写中文文档,使用ctex宏包就足够了。并不是很复杂。LaTeX还有一些更加复杂的功能,比如制作幻灯片啊、绘图啊什么的,都有相应的宏包可以使用,而且安装texlive-full的时候,都安装了非常详细的帮助文档,只需要打开/usr/share/texlive/doc.html
这个文件,就可以看到所有宏包和帮助文档的列表,我之前分享的《一份不太短的LaTeX介绍》里面有,经典的《Tex by Topic》里面也有,如下图:
看到这个一公里长的列表,你有什么感想呢?
下一篇:Linux折腾记(十四):优秀的文本化编辑思想大碰撞(Markdown、LaTeX、MathJax)