2008年7月16日星期三

OpenSUSE 11.0 下Latex中文


Linux下LATEX中文一直是件头疼的事情,不同发行版解决办法不尽相同,有时甚至同一发行版的前后两个版本也有差别,OpenSUSE就是如此!

现把OpenSUSE 11.0下texlive中文解决方案记录如下:

由于电脑是双系统,windows下已经安装了最新的CTeX和ctex-fonts,所以解决方案以此为基础。

1. 把windows 下$LOCALTEXMF/tex/latex 拷贝到/usr/share/texmf/tex/latex,然后mktexlsr,这样可以安装CJK等大部分宏包;

2. 这时用LATEX编译中文TEX文件会提示找不到tfm字体,需要把$LOCALTEXMF/fonts/tfm/chinese 拷贝到/usr/share/texmf/fonts/tfm/chinese,但是此时xdvi无法预览生成的dvi文件,这是因为xdvi 没有找到相应的map文件,这时需要把$LOCALTEXMF/dvips/chinese拷贝到/usr/share/texmf/map/dvips/chinese,然后mktexlsr、“updmap-sys --edit”把拷贝过来的几个t1-gbk*.map添加进去;

3. 为了实现dvipdfm 需要把$LOCALTEXMF/fonts/type1/chinese 拷贝到/usr/share/texmf/fonts/type1/chinese,把$LOCALTEXMF/pdftex/chinese 拷贝到/usr/share/texmf/fonts/enc/pdftex/chinese,其中的map文件拷贝到/usr/share/texmf/fonts/map/pdftex/chinese下面,最后mktexlsr就可以了;

4. 最困难的是实现dvipdfmx,首先是把simsun等几个字体拷贝到/usr/share/texmf/fonts/truetype下面,然后添加/var/lib/texmf/fonts/map/dvipdfm/cid-x.map文件,内容如下:

gbksong@UGBK@ unicode :0:simsun.ttf
gbksongsl@UGBK@ unicode :0:simsun.ttf -s .167
gbkhei@UGBK@ unicode :0:simhei.ttf
gbkheisl@UGBK@ unicode :0:simhei.ttf -s .167
gbkkai@UGBK@ unicode :0:simkai.ttf
gbkkaisl@UGBK@ unicode :0:simkai.ttf -s .167
gbkfs@UGBK@ unicode :0:simfang.ttf
gbkfssl@UGBK@ unicode :0:simfang.ttf -s .167
gbkli@UGBK@ unicode :0:simli.ttf
gbklisl@UGBK@ unicode :0:simli.ttf -s .167
gbkyou@UGBK@ unicode :0:simyou.ttf
gbkyousl@UGBK@ unicode :0:simyou.ttf -s .167
unisong@Unicode@ unicode :0:simsun.ttf
unisongsl@Unicode@ unicode :0:simsun.ttf -s .167
unihei@Unicode@ unicode :0:simhei.ttf
uniheisl@Unicode@ unicode :0:simhei.ttf -s .167
unikai@Unicode@ unicode :0:simkai.ttf
unikaisl@Unicode@ unicode :0:simkai.ttf -s .167
unifs@Unicode@ unicode :0:simfang.ttf
unifssl@Unicode@ unicode :0:simfang.ttf -s .167
unili@Unicode@ unicode :0:simli.ttf

然后,修改/usr/share/texmf/dvipdfm/dvipdfmx.cfg只使用cid-x.map文件;最后把/usr/share/ghostscript/Resource/CMap下面的所有文件拷贝到/usr/share/texmf/font/cmap下面后mktexlsr即可。

经过上述操作后,使用LATEX和dvipdfmx就可以编译utf-8和GBK两种编码的TEX文档,而且得到的pdf文件都支持中文拷贝,哈哈!GBK编码的TEX文档还可以使用latex->dvips->ps2pdf得到不可拷贝的pdf,UTF-8的文档则需要simsun等字体的tfm和pfb字体以及enc文件(均可用fontforge生成),才能通过dvips和ps2pdf得到pdf文档,得到的pdf是可拷贝的,呵呵!

说明:配置dvipdfmx最诡异的就是cid-x.map文件,如果使用网上的方法设置为:
gbksong@UGBK@ UniGB-UTF16-H(或UniGB-UCS2-H ) :0:simsun.ttf
GBK编码的TeX文档得到的pdf文档无法拷贝,改成前面的格式就可以,不明白原因,哪位大侠给解释一下?

没有评论: