再来说说 LaTeX
在我的上一篇随笔中,我提到了 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发布于博客园,转载请注明出处。)
再来说说 LaTeX的更多相关文章
- Linux 桌面玩家指南:12. 优秀的文本化编辑思想大碰撞(Markdown、LaTeX、MathJax)
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...
- 如何使用LaTeX让自己不乱?
虽然说LaTeX声称排版容易,只关注内容,可是混合着源代码的结构很难让我只关注内容,最后看得眼睛疼,找什么都找不到. 匿名用户 30 人赞同 立即想到的几个建议: 选择有折叠功能 (folding) ...
- Linux 江湖系列阶段性总结
引言 我使用 Linux 已经有很多年了,最开始接触 Linux 的时候是从 RedHat 9(没有 Enterprise),中途换过 N 个不同的发行版.多年前,我在 BlogJava 上面分享 J ...
- Linux应用环境
转载Linux应用环境 阅读目录 引言 使用 Linux 的一些困难和解决方法 我眼中的Linux哲学总纲 我这一系列随笔中展现出的Linux哲学 Linux之得和Linux之失 总结 回到顶部 引言 ...
- [整理][LaTex]小技巧之——首行缩进
0. 简介 在LaTex编辑时,有时会遇到这样一个有关于首行缩进的问题.在汉语环境的编辑下,习惯上每段会进行一个两个字的缩进.但是在默认编辑模式下,一个章节下的首段是没有首行缩进的,本文的目的主要是解 ...
- LaTeX 有哪些「新手须知」的内容?
孟晨 ,在 LaTeX 话题下写错 LaTeX 名字的,一律… 陈硕等 137 人赞同 这是个好问题,虽然提问提得很大.不是很好答,权当抛砖引玉了. 天字第一号原则:不要到网上抄代码,尤其是似懂非懂的 ...
- LaTeX排版工具使用
专业的论文,都是用Latex.CTex等相关的工具.那么,用word写论文,缺点在哪? latex 写的东西,最终要编译成pdf格式的.里面的格式,尤其是数学类符号等,比较漂亮.这是word不能比的. ...
- 美赛LaTeX急救指南
目录 1 关于easymcm宏包的基本信息,以及编译系统的若干问题 2 图片.表格.数学公式.网址的处理 3 样式.字体字号.段落的设置 4 目录.交叉引用的相关问题 关于标题不能换行的问题:这里有解 ...
- LaTex 小技巧
首行缩进 参考:小技巧之--首行缩进 %-------------------------------------------------------------------------------- ...
随机推荐
- 告别被拒,如何提升iOS审核通过率(上篇)
iOS审核一直是每款移动产品上架苹果商店时面对的一座大山,每次提审都像是一次漫长而又悲壮的旅行,经常被苹果拒之门外,无比煎熬.那么问题来了,我们有没有什么办法准确把握苹果审核准则,从而提升审核的通过率 ...
- 在Openfire上弄一个简单的推送系统
推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...
- iOS开发系列--Swift语言
概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...
- 【.net 深呼吸】程序集的热更新
当一个程序集被加载使用的时候,出于数据的完整性和安全性考虑,程序集文件(在99.9998%的情况下是.dll文件)会被锁定,如果此时你想更新程序集(实际上是替换dll文件),是不可以操作的,这时你得把 ...
- 【WCF】错误协定声明
在上一篇烂文中,老周给大伙伴们介绍了 IErrorHandler 接口的使用,今天,老周补充一个错误处理的知识点——错误协定. 错误协定与IErrorHandler接口不同,大伙伴们应该记得,上回我们 ...
- spring注解源码分析--how does autowired works?
1. 背景 注解可以减少代码的开发量,spring提供了丰富的注解功能.我们可能会被问到,spring的注解到底是什么触发的呢?今天以spring最常使用的一个注解autowired来跟踪代码,进行d ...
- [高性能MYSQL 读后随笔] 关于事务的隔离级别(一)
一.锁的种类 MySQL中锁的种类很多,有常见的表锁和行锁,也有新加入的Metadata Lock等等,表锁是对一整张表加锁,虽然可分为读锁和写锁,但毕竟是锁住整张表,会导致并发能力下降,一般是做dd ...
- JavaMail发送邮件
发送邮件包含的内容有: from字段 --用于指明发件人 to字段 --用于指明收件人 subject字段 --用于说明邮件主题 cc字段 -- 抄送,将邮件发送给收件人的同时抄 ...
- java I/O流
输入流(读取数据的流) BufferedInputStream---继承--->FileInputStream--继承--->InputStream------> (1)字节流操作中 ...
- 关押罪犯 and 食物链(并查集)
题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值"( ...