本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com
Knuth 爷爷的 TeX 系统堪称完美! 但他在发明它的时候没有考虑到对英文之外的语言的支持, 因此用 LaTeX 给中文排版一直有些麻烦.
一年前, 我写过一篇日志介绍 TeX Live 2007 的中文支持配置. 但那个还是用 CJK 实现对中文的支持, 字体的配置比较麻烦. 而现在我要推荐的是 XeTeX, 它对中文的支持比 LaTeX + CJK 包要好很多. 这个解决方案是基于 XeLaTeX + xeCJK 实现对中文的支持. 其实 XeLaTeX 支持中文排版, 但它对中英文混排的支持不是很好. 它不能为中文英文分别设置字体, 也不能很好地控制中英文混排时的间距. 这些都是靠 xeCJK 这个宏包完成的. 去年的时候 LeafDuo 就跟我说 XeTeX 的中文支持很好, 但当时因为懒惰, 一直没有配置起来. 直到不久前写C语言实验报告, 才有了动力把 XeTeX 配置起来.
这篇日志主要记录的是我在 Ubuntu 中安装 TeX Live 2008 及配置中文支持的过程, 在 Windows 中安装与配置的过程与本文有些区别.
这一篇讲的是下载安装 TeX Live 2008, 下一篇讲的是将是 Linux 字体安装和 xeCJK 的配置.
Ubuntu 的源里就有 XeTeX 了, 而这里不使用源里的那个 XeTeX 是因为它的版本比较旧, 之后安装中文排版支持宏包会遇到一些麻烦.
TeX Live 可以直接在线安装, 也可以把光盘镜像下载回本地安装. 考虑到网速等问题, 我是下载镜像到本地之后安装的.
TeX Live 的镜像可以在 TeX Live 的主页下载到. 在中国, 使用 CTeX 的镜像下载会比较快.
1. 如果要使用图形界面安装, 需要先安装 perl-tk; 解压 lzma 格式的压缩包需要安装 lzma.
在 Ubuntu 的源里有这两个包, 可以使用 apt-get 安装.
sudo apt-get install perl-tk p7zip
2. 进入存下载的镜像的目录, 将压缩包解开.
注意, 这一步需要有 4-5G 的空余磁盘空间. 解压后的光盘镜像似乎有 2-3G.
lzma -d texlive2008.iso.lzma
3. 挂载刚刚解压出的 iso 镜像.
sudo mount -o loop texlive2008-20080822.iso /mnt
4. 执行安装程序
sudo /mnt/install-tl --gui
这时会弹出安装程序的窗口.
将最后一项 "Create symlinks in system directories" 勾上, 让它自动创建符号链接.
我几乎把所有的包都装上了, 如果你的硬盘空间足够, 也就不需要做什么改动了. 但可以在第四项 "Language Collections" 中去掉不需要的语言包, 节省几百兆的空间.
配置完后点击 "Install TeX Live", 等上几分钟就装好了.
现在 XeLaTeX 就已经可以处理中文了, 不信你试试编译这个 tex 文档.
1 2 3 4 5 6 7 |
/documentclass{article} /usepackage{fontspec} /setmainfont{Adobe Song Std} /begin{document} Ai.Freedom的Blog// aifreedom.com /end{document} |
这里用的 "Adobe Song Std" 字体需要你从 Adobe 下载后安装. 在 Linux 中安装字体的方法会在下一篇中介绍.
编译的命令用 xelatex. 这个文档是可以正常编译的, 但用宋体显示英文字体太丑了, 所以就需要 xeCJK 告诉 XeLaTeX 哪些字符该用哪些字体. xeCJK 的配置和简单的使用也会在下一篇中介绍.
TeX Live 2008 安装 & 配置中文支持 (下)
本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com
居然拖了两个多月都没把这篇文章写完, 但十月份之前总算交出了它的下半篇.
上次说到把 XeLaTeX 安装好了. 但默认的设置对中英文混排支持还不够好, 不能对中文和英文分别设置字体, 也不能很好地处理中文和英文之间的空白距离. 我们可以安装孙文昌老师开发的 xeCJK 宏包来解决这个问题.
xeCJK 的宏包可以在这里下载到. 这个不是最新版的 xeCJK, 因为最新版的 xeCJK 需要 xetex 0.9995.0 之后的版本(TeX Live 2009 或 MiKTeX 2.8). 而且新版的 xeCJK 已经被收入 ctex-kit 项目, 将随 TeX Live 2009 一起分发. 就是说, 等到 TeX Live 2009 Release 的时候, 它对中文的支持会比现在好很多.
把刚刚下载到的压缩包解压到 ~/.texlive2008/texmf/tex/xelatex/, 然后用mktexlsr 更新. (这里我不是很了解, 只是照葫芦画瓢, 没自己看过文档, 有什么问题还请诸位老师指正)
unzip xecjk-2_2_15.zip -d ~/.texlive2008/texmf/tex/xelatex/ cd ~/.texlive2008/texmf mktexlsr .
在刚才下载的压缩包里的 doc 文件夹里有 xeCJK 的完整文档, 我这里给出一个我使用的 preamble 模板.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
%# -*- coding: utf-8 -*- /documentclass[a4paper]{article} /usepackage[slantfont, boldfont, CJKtextspaces, CJKmathspaces]{xeCJK} % 允许斜体和粗体 /setCJKmainfont[BoldFont={Adobe Heiti Std}, ItalicFont={Adobe Kaiti Std}]{Adobe Song Std} % 设置缺省中文字体 /setCJKmonofont{Adobe Fangsong Std} % 设置等宽字体 /setmainfont[Mapping=tex-text]{Liberation Serif} % 英文衬线字体 /setsansfont{Liberation Sans} % 英文无衬线字体 /setmonofont{Bitstream Vera Sans Mono} % 英文等宽字体 /punctstyle{kaiming} % 开明式标点格式 /usepackage{indentfirst} % 首段缩进 /begin{document} {默认字体} {/bfseries 粗体效果} {/itshape 斜体效果} 这是Ai.Freedom的Blog的第101篇日志。 居然拖了两个多月都没把这篇文章写完,但十月份之前总算交出了它的下半篇。 上次说到把 XeLaTeX 安装好了。但默认的设置对中英文混排支持还不够好,不能 对中文和英文分别设置字体,也不能很好地处理中文和英文之间的空白距离。我 们可以安装孙文昌老师开发的 xeCJK 宏包来解决这个问题。 /end{document} |
但这里给出的代码你很可能还无法编译, 因为你没有安装 Adobe 的字体. 这里用到的四个字体可以在这里下载到. 其中 Adobe Song Std 和 Adobe Heiti Std 是随 Adobe Reader 一起分发的, 根据 Lisence 可以免费使用, 关于另外两个字体的版权我还不是很清楚.
把它们下载回来了之后解压到 ~/.fonts 目录中. 然后执行
sudo fc-cache -fv
更新字体缓存. 好了, 把刚才的代码保存到 test.tex 后用
xelatex test.tex
编译就可以得到 test.pdf 了.
在下载的 xeCJK 的压缩包里, source 目录下有一个脚本用来为特定的字体生成标点符号. 按照 README 里的提示, 将 xecjksetpunct-main.tex 里用于 Windows 平台的部分注释掉, 把 Linux 里用到的语句的注释去掉, 然后把下面的字体设置成自己用的字体, 保存. 我们这里用的是 TeX Live, 所以执行
xelatex --shell-escape xecjksetpunct-main
然后把生成的 xeCJKpunct.spa 文件移动到 .texlive2008/texmf-var/tex/xelatex/xecjk/tex/xelatex/xecjk 目录下, 覆盖默认的 xeCJKpunct.spa 文件. 最后执行
texhash .
好了, 我们的配置总算是告一段落了. 关于 xeCJK 的更多详细的设置选项, 请查询它的文档. 学习 LaTeX 文档的排版, 有这样一本 "The not so Short Introduction to LaTeX", 这个链接是中文版的, 还有 CTeX 论坛的版主 milksea 推荐的这个列表. 学习 LaTeX 的资料真的很多, 只要你愿意动手.