用XeTeX处理中文LaTeX笔记

好久没写中文的Post了,今天记点关于中文LaTeX的东西。

要说也没想着“研究”这个。前两天LinuxToy上贴了一个从几个连载小说的
网站上往下抓书的脚本,正好LP以前曾经跟我说过郭敬明的《梦里花落知
多少》挺有意思的,说新浪读书有连载,由于不喜欢在新浪那儿一直翻一直翻
的,加上对郭这个人没什么好印象,就放着没动。今天想起来了,于是下载
了试了一下,结果发现至少新浪那个脚本,是相当的不好使──下回来的东西完全
就是一空白文件。

看了一下那脚本,发现有些Bug,而且缺少保留原来文章内容中的换行的功能,生
成的文件的字符编码也还是和网页一样的GB2312而非UTF-8。于是改了改,现在
像点样子了。文章内容以外的零七八碎的一概不留,格式也工整了不少,
也是UTF8的了。

有了整洁文本,一想,干脆上LaTeX转PDF吧。结果发现自己对中文LaTeX的认识还
停留在一年前的水平,就记着源文件得是GB编码的,用CJK包,字体也得用脚本一
个一个转,一句话,太麻烦了。上网一搜才发现,原来TeXLive2007带的XeTeX已
经可以很好的支持UTF-8编码的中文源文件而且字体也可以用系统中的中文字体了。
于是赶紧sudo apt-get install texlive-xetex了一把,写了个测试文件如下:

documentclass[a4paper,10pt]{article}

usepackage{fullpage}
usepackage{fontspec}
setromanfont{STSong}
setsansfont{STKaiti}
XeTeXlinebreaklocale "zh"
XeTeXlinebreakskip = 0pt plus 1pt

setlengthparindent{20pt}
setlengthparskip{10pt}

usepackage{setspace}
onehalfspacing

title{sf 梦里花落知多少}
author{sf 郭敬明}
date{}

begin{document}

maketitle

闻婧打电话过来的时候我正在床上睡得格外欢畅,左翻右跳地穷伸懒腰,觉
得我的床就是全世界。其实我的床也的确很大。我只有两个爱好,看电影和
睡觉,如果有人在我累得要死的时候还不让我睡觉那还不如一刀砍死我,那
样我一定心存感激。所以我理所当然地把床弄得往死里舒服,我曾经告诉我
妈我哪天嫁人了我也得把这床给背过去。

ldots

end{document}

xelatex一编译,出错了,说找不到lmodern,一搜apt-cache,发现原
来还有个包叫lmodern得装一下,这之后就基本一切太平了。

其实据说现在XeTeX在处理中英文混排时的间距和断行还没有当初CJK+CKJpunkt完
美。当然,我今天也没用得上那么复杂的源文件,等以后有机会了,而且估计那
时ubuntu里也会有0.997版的xetex(就不用自己编译了,否则现在的
0.996使不了zhspacing),就可以试试用XeTeX+zhspacing来完美的
处理中文LaTeX了。

感谢Ubuntu中文论坛里那个置顶贴,刚开始看时还觉得挺晕的看不懂写什
么呢,后来发现还是有点儿用的。最后郭小四及其Fans不用担心我会散布这个
Pdf版本的书(不过估计国内现在已经有不少盗版了吧),我这完全是在新浪逼迫
下的自娱自乐。

Advertisements

About this entry