Chinaunix首页 | 论坛 | 博客
  • 博客访问: 596941
  • 博文数量: 40
  • 博客积分: 7274
  • 博客等级: 少将
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-20 15:00
个人简介

Expired

文章分类
文章存档

2011年(1)

2008年(3)

2007年(17)

2006年(10)

2005年(9)

分类: LINUX

2006-07-25 20:22:04

   我的系统从 GB2312 换成 UTF-8 已经好久了,相关的应用环境也慢慢向 UTF-8靠拢,从输入法、数据库、网页编码到 DocBook/XML,一路走来倒也不是很难(那个scim输入法倒费了不少时间)。

   现在轮到 TeX 这个大难题了,我一直用 TexLive,安装简单方便,容易上手,不用自己编译这样那样的软件包,以前在 GB2312 下面写作、编译很简单,现在换成了 UTF-8 就有点麻烦了,虽然可以先用 UTF-8 编码写好,然后转换成 GB2312 的,再使用 latex/pdflatex 等编译,但觉得这样效率太低了,重复工作太多,于是求助于 google, 找到一篇关于 CJK + UTF-8 的文档 ~chou/unicode-tex.html

   安装上面的文档,试了几遍终于大功告成,并且在GB2312下使用的宋体、黑体等在 UTF-8 下面照样可以使用。

   具体步骤如下:

   1. 安装好 TeX2005 (2004及以前的版本没试过)

   2. 准备好字体文件(比如 simsun.ttf, simhei.ttf, youyuan.ttf)

   3. 下载 mktfm.sh,用于将 ttf 转换成 tfm
      下载地址:

   4. 将字体和上述脚本放在一个目录下面,然后创建下面的脚本(go.sh)

   #!/bin/sh

   ## 字体列表
   fontlist=(simsun.ttf simhei.ttf youyuan.ttf)

   ## 对应字体名称
   fontname=(song hei youyuan)

   > cjk-utf8.map
  
   ## 处理后生成的字体相关信息目录
   BASEDIR=texmf-local
   rm -rf $BASEDIR
   mkdir -p $BASEDIR/fonts/enc $BASEDIR/fonts/tfm/chinese
   mkdir -p $BASEDIR/tex/latex/CJK/UTF8

    for ((i=0;i<2;i++)) ; do

       echo "==== Processing font: ${fontlist[$i]} (${fontname[$i]}) ===="
       mkdir $BASEDIR/fonts/enc/${fontname[$i]} 
       mkdir $BASEDIR/fonts/tfm/chinese/${fontname[$i]}

       ./mktfm.sh ${fontlist[$i]} ${fontname[$i]} Unicode
       ls ${fontname[$i]}*.tfm|while read j; do
          base=`basename $j .tfm`
          echo "$base <${fontlist[$i]} $base.enc" >> $BASEDIR/cjk-utf8.map
       done
       mv ${fontname[$i]}*.tfm $BASEDIR/fonts/tfm/chinese/${fontname[$i]}
       mv ${fontname[$i]}*.enc $BASEDIR/fonts/enc/${fontname[$i]}
       mv c70${fontname[$i]}.fd $BASEDIR/tex/latex/CJK/UTF8

    done


5. 运行 go.sh
   如果一切OK的话,当前目录下面将会生成 texmf-local 目录,并且目录下面有一些文件

6. 拷贝 texmf-local 下的所有文件到 Texlive 安装目录下的 texmf-local
   我的安装在 /usr/texlive 目录下

    # cp -arf texmf-local/* /usr/texlive/texmf-local

    
7. 更新相关数据库信息和其他清理工作

    # updmap
    # mktexlsr

    # rm -rf /root/.texlive2005/texmf-var/fonts/map/dvipdfm/
    这个目录由 updmap 生成,不删除时 dvipdfm 会出错

8. UTF-8 文档测试

   准备一个测试文档: utf8.tex,内容如下:

    \documentclass[12pt,a4paper]{article}
    \usepackage{CJK}
    \begin{document}
    \begin{CJK}{UTF8}{song}
   
    一行白鹭上西天
   
    \end{CJK}
    \end{document}
  
9. 编译

   latex utf8.tex
   dvipdfmx utf8.dvi
  
   或直接 pdflatex utf8.tex

   如果没有错误信息,那么你可以用acrobat reader 瞧瞧刚刚生成的 pdf 文档了

10. 问题
  
   中文似乎显示没有问题,但是默认的英文字体却太难看,好像是 Times New Roman,显示得贼黑贼黑的,又有点粗,不知道怎么替换掉,如果改用 Tahoma 或 Verdana 或 Bitstream Vesa 就好看多了。
阅读(2677) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~