在我的上一篇随笔中,我提到了 Markdown、LaTeX 和 MathJax。这几个东西对目前的网络技术文章的写作、展示都有深远的影响。在上一篇中,我还给出了一份 LaTeX 语法的学习资料。在这一篇里,我想再来谈谈 LaTeX。

在很多人心中,LaTeX 是一个很专业的排版系统,同时也是一个很复杂的系统。说到专业,确实很多科技论文都是用 LaTeX 写作,而且很多知名的杂志社只接受 LaTeX 格式的投稿,而且使用 LaTeX 排版得到的效果那是超级赞,特别是对科技论文中充斥的数学公式而言。说到复杂,不仅是因为 LaTeX 排版语言命令繁多,更因为它数之不尽的宏包,学习成本真的是相当相当相当的高。

对于一套 LaTeX 排版系统,它究竟包含哪些东西呢?我认为它主要可以分成这样几个部分:

  • 一个排版引擎,TeX 或 pdfTeX 或 XeTeX;
  • 一系列的字体;
  • 一系列的宏包;
  • 一些工具,比如用来查看各种排版引擎输出的排版结果,或者在 dvi、ps、pdf 等格式之间的转换。

而对于 LaTeX 排版系统的复杂性,我认为主要是由于历史原因引起的,理由如下:

  • 最早的由 Knuth 教授写的 TeX 引擎不支持 UTF-8 编码的输入文件,所以要让它支持中文实在是太难了;
  • 最早的 TeX 系统自带一套字体,要扩展它就得扩展相应领域的字体,比如 LaTeX 自带丰富的数学字体,要把字体安装到 TeX 系统中是一件非常复杂的事情;
  • 大量的第三方宏包,安装和学习都非常困难;
  • 都什么年代了,谁还用 dvi 格式和 ps 格式啊,用 pdf 多方便啊。

对于这些历史原因引起的复杂性,现在早就解决了,只是很多书籍没有写清楚而已。我认为现在用 LaTeX 其实很方便的,理由如下:

  • Knuth 教授的 Tex 引擎用来瞻仰即可,实际工作中使用 XeTeX 引擎,完美支持 Unicode 字符集和 UTF-8 编码,中文再也不是问题;
  • 字体神马的,Knuth 教授的 METAFONT 早过时了,现在谁还不用 TrueType 啊?好的字体当然少不了像 Microsoft、Adobe、Apple 这些既有钱又有品味的公司出品了;
  • XeTeX 引擎可以直接使用操作系统中安装的字体,再也不用考虑把字体安装到 TeX 系统中了;
  • XeTeX 引擎直接输出 pdf 格式的文件;
  • 排版也可以有 IDE 工具,比如 TeXWorks;
  • 至于宏包太多这个问题,我们可以用现成的发行版嘛,比如 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》里面也有,如下图:

看到这个一公里长的帮助文档列表,你有什么感想呢?

(京山游侠于2015-01-06发布于博客园,转载请注明出处。)

最新文章

  1. 基于Server-Sent Event的简单在线聊天室
  2. Windows安装MySQL5.7.17
  3. js == 判断
  4. spring常用jar包总结(转载)
  5. Django1.9 Python3.4出现Error loading MySQLdb
  6. TForm的显示过程
  7. MYSQL BENCHMARK函数的使用
  8. Android 通过 Intent 传递类对象
  9. Linux学习笔记26——信号量
  10. oo面向对象原则
  11. qt数据库多线程问题的解决(QSqlDatabase只能在创建它的线程中使用)
  12. 移动开发中的Scheme跳转说明——Allowing OtherApps to Start Your Activity
  13. JMeter怎么在get URL请求、POST请求中添加动态参数用于服务器段安全验证
  14. javascript 基础系列(二)
  15. C语言描述链表的实现及操作
  16. Sql优化器究竟帮你做了哪些工作
  17. hdu-1754 I Hate It【线段树】(求区间最大值)
  18. solr之创建core(搜索核心,包括索引和数据)的方法
  19. jenkins(五)---jenkins添加项目
  20. [CSAcademy]Squared Ends

热门文章

  1. HTML5 Boilerplate - 让页面有个好的开始
  2. HTML 事件(三) 事件流与事件委托
  3. 页面中多个script块之间的关系
  4. OpenCASCADE Shape Location
  5. jQuery学习之路(6)- 简单的表格应用
  6. [C#] 走进异步编程的世界 - 开始接触 async/await
  7. Web安全相关(四):过多发布(Over Posting)
  8. IT持续集成之质量管理
  9. 屌丝giser成长记-大学篇
  10. 我的屌丝giser成长记-工作篇之B公司