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系统性能优化的两个重要参数介绍
下一篇: PS创建晶莹剔透的云朵