2009年4月4日星期六

OpenSuSE 11.1 下texlive, cjk, latex 中文设置

使用OpenSuSE 11.1也有一段时间了,由于工作较忙,一直懒得折腾cjk-latex的中文,最近使用amsn时发现有一个TEXIM插件挺有意思的,所以顺带地把cjk-latex的中文也设置了一下。

首先要安装相关的软件包,基本上安装软件时选中texlive-cjk-latex-extra其它的包也都顺带选中安装了。下面说说设置的过程。

第一步:把simsun.ttc、simhei.ttf等字体拷贝到/usr/share/fonts/truetype目录下面,主要是为了让后续的SuSEconfig操作能顺利的找到文件;

第二步:编辑/etc/ttf2pk/ttfonts.map,添加相关内容。

在“% simplified Chinese:”后面添加如下内容:
%下面是宋体GB编码设置
song-gb@UGB@ simsun.ttc
song-s-gb@UGB@ simsun.ttc Slant=0.167
song-r-gb@UGB@ simsun.ttc Rotate=Yes
song-rs-gb@UGB@ simsun.ttc Rotate=Yes Slant=0.167
%下面是宋体GBK编码设置
song-gb@UGB@ simsun.ttc
song-s-gb@UGB@ simsun.ttc Slant=0.167
song-r-gb@UGB@ simsun.ttc Rotate=Yes
song-rs-gb@UGB@ simsun.ttc Rotate=Yes Slant=0.167
%下面是宋体Unicode编码设置
song-uni@Unicode@ simsun.ttc
song-s-uni@Unicode@ simsun.ttc Slant=0.167
song-r-uni@Unicode@ simsun.ttc Rotate=Yes
song-rs-uni@Unicode@ simsun.ttc Rotate=Yes Slant=0.167

其它字体类似添加,在这里为了便于区分标记,把@Unicode@、@UGBK@和@GB@前面的名称都做了相应的描述,简单的song、songsl和songr也是可以的,不过后面的tfm文件相关的名称都要改过来了。

第三步:fd文件的添加,主要操作目录是/usr/share/texmf/tex/latex/CJK,在其下面的GBK, UTF8目录下添加相应的fd文件。

GBK目录下,添加c19song.fd,内容可以参考其它fd文件,大致如下:
\def\fileversion{4.7.0}
\def\filedate{2006/10/17}
\ProvidesFile{c19song.fd}[\filedate\space\fileversion]

% character set: GBK
% font encoding: CJK (extended)

\DeclareFontFamily{C19}{song}{\hyphenchar \font\m@ne}

\DeclareFontShape{C19}{song}{m}{n}{<-> CJK * song-gbk}{}
\DeclareFontShape{C19}{song}{m}{sl}{<-> CJK * song-s-gbk}{}
\DeclareFontShape{C19}{song}{m}{it}{<-> CJKssub * song/m/sl}{}
\DeclareFontShape{C19}{song}{bx}{n}{<-> CJKb * song-gbk}{\CJKbold}
\DeclareFontShape{C19}{song}{bx}{sl}{<-> CJKb * song-s-gbk}{\CJKbold}
\DeclareFontShape{C19}{song}{bx}{it}{<-> CJKssub * song/bx/sl}{\CJKbold}

\endinput

还可以添加c19songr.fd文件,大致内容如下:

\def\fileversion{4.5.2}
\def\filedate{2007/05/15}
\ProvidesFile{c19songr.fd}[\filedate\space\fileversion]

% simplified Chinese font song created by Founder.

\DeclareFontShape{C19}{songr}{m}{n}{<-> CJK * song-r-gbk}{}
\DeclareFontShape{C19}{songr}{m}{sl}{<-> CJK * song-rs-gbk}{}
\DeclareFontShape{C19}{songr}{m}{it}{<-> CJKssub * songr/m/sl}{}
\DeclareFontShape{C19}{songr}{bx}{n}{<-> CJKb * song-r-gbk}{\CJKbold}
\DeclareFontShape{C19}{songr}{bx}{sl}{<-> CJKb * song-rs-gbk}{\CJKbold}
\DeclareFontShape{C19}{songr}{bx}{it}{<-> CJKssub * songr/bx/sl}{\CJKbold}

\endinput

在UTF8目录下添加c70song.fd和c70songr.fd,内容和上面类似,只要把里面的c19换成c70, gbk改成uni就可以了。具体可以参见其它fd文件。

最后“#mktexlsr”刷新一下。

第四步:SuSEconfig操作,添加tfm字体文件和一些链接。在这一点上SuSE设计得很方便,执行命令:

#SuSEconfig --module cjk-latex

这样,SuSEconfig的cjk-latex模块能自动根据/etc/ttf2pk/ttfonts.map中的设置创建宋体的tfm字体文件,当然前提是能在/usr/share/fonts/truetype目录中找到simsun.ttc文件。

第五步:搞定dvipdfmx,这样就可以生成可拷贝的中文pdf文档。

添加/var/lib/texmf/fonts/map/dvipdfm/cid-x.map文件,内容如下:

song-gbk@UGBK@ unicode :0:simsun.ttc
song-s-gbk@UGBK@ unicode :0:simsun.ttc -s .167
song-uni@Unicode@ unicode :0:simsun.ttc
song-s-uni@Unicode@ unicode :0:simsun.ttc -s .167

song-r-gbk@UGBK@ Identity-V :0:simsun.ttc
song-rs-gbk@UGBK@ Identity-V :0:simsun.ttc -s .167
song-r-uni@Unicode@ Identity-V :0:simsun.ttc
song-rs-uni@Unicode@ Identity-V :0:simsun.ttc -s .167

后四行是用于旋转90度字体的。
然后,修改/usr/share/texmf/dvipdfm/dvipdfmx.cfg只使用cid-x.map文件,最后mktexlsr就可以了。

这次一切都比较顺利,很快搞定,呵呵!