LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1390|回复: 4

Gentoo的CJK-LaTeX字体安装脚本

[复制链接]
发表于 2006-8-26 04:20:57 | 显示全部楼层 |阅读模式
这个脚本是用woolzey的Debian/Magic的安装脚本改写的,主要是一些细节上的改动,在我的Gentoo上测试了,能很好的安装,粗体、斜体都没有问题,能用于GB、GBK、Big5字符集,所用的python脚本修改自woolzey<woolzey@gmail.com> 的Debian/Magic版本。能够根据ttf字体搜索的结果自动安装,也可以手动指定需要安装的ttf字体,顺利实现斜体、粗体。运行脚本时字体编码可选,字体可选,安装过程简单,速度快,用root用户运行该脚本的默认配置,时间在2min左右,即便是安装19种不同Tpye1字体时间也仅10min左右。默认配置dvipdfmx使用TTF字体,pdflatex使用PK字体。默认情况下不安装Type1字体,不使用Big5编码。需要的话可以用参数激活。

1.安装tetex-3.0_p1-r3和cjk-latex

如果tetex3.0以上的版本在你的portage中是~86的话,那你首先需要unmask後才能许使用它:

echo "app-text/tetex ~x86" >> /etc/portage/package.keywords

然後就可以安装tetex和cjk-latex了:

emerge -av tetex cjk-latex

2.安装freetype-1.3.1-r4,及相关的文件

因为字体转换时需要用到ttf2tfm,而它只在freetype1.*中才有。

emerge -av =freetype-1.3.1-r4

获得所需的sfd文件:

sfd文件是ttf2tfm将ttf文件专成tfm时需要的,GB2312、GBK、Big5对应的编码是UGB.sfd,UGBK.sfd,UBig5.sfd。

可以在 http://www.tug.org/texlive/Contents/live/texlive/texmf/fonts/sfd/ 下找到。

建立相关目录,然後将sfd文件移入其中

mkdir -p /usr/local/share/texmf/fonts/sfd

3.(可选)为pdftex安装Type1字体的准备

此时你还需要安装ttf2pt1和相关的码表。

emerge -av ttf2pt1

GB2312需要的码表cugb.map,GBK需要的码表cugbk.map,Big5需要的码表cubig5.map,

他们可在 http://ttf2pt1.cvs.sourceforge.net/ttf2pt1/chinese-maps/ 下找到,

将上述码表拷到/usr/share/ttf2pt1下。  

4.(推荐)安装dvipdfmx

如果你需要编译出的pdf中的中文能够复制的话,你还需要安装dvipdfmx。由于历史的原因,dvipdfmx的b系列纸型不是ISO的,所以如果你需要使用b系列的纸型的话,那你还需要先安装libpaper。

首先安装libpaper:

echo "app-text/libpaper ~x86" >> /etc/portage/package.keywords

emerge -av libpaper

接着安装dvipdfmx:

echo "app-text/dvipdfmx ~x86" >> /etc/portage/package.keywords

emerge dvipdfmx

编译简体中文需要的UniGB-UCS2-H、UniGB-UCS2-V;编译繁体中文所需的UniCNS-UCS2-H、UniCNS-UCS2-V、UniCNS-UCS2-H,

它们可从 ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/ 下的ag15.tar.Z和ac15.tar.Z中得到,

然後根据你的需要,将它们和CTeX2.5.4中去掉重复编码错误的Adobe-GB1-UCS2(即附件中的cmapfoGB.tar.bz2,请务必使用这个CMap而不是官方的,不然会导致dvipdfmx编译TeX文档时跳出重新定义已有编码的警告)解压到/usr/local/share/texmf/fonts/cmap下,所需从而dvipdfmx就有了编译中文时所需的CMap:

tar -xvjf cmap.tar.bz2 -C /usr/local/share/texmf/fonts  

5.准备TTF字体

首先把你需要安装放到/usr/share/fonts/TTF或~/.fonts下,同时请将字体文件名改成小写,如stxihei.ttf。但如果你的ttf字体目录不是这两个的话可以在运行脚本时指定。

警告: "simsun.ttf"必须使用Win98下的,而不是XP下的simsun.ttc,後者ttf2pt1不支持。

6.运行脚本配置字体

脚本是附件中的setup_cjk.tar.bz2。首先看看脚本默认搜索哪些字体,并以什么名字安装。在脚本所在的目录下用--listfonts参数执行脚本:

python setup-cjk --listfonts

左边一列是latex中将使用的字体名,右边一列是脚本将搜索的相应的TTF文件:

sthupo  ->      ['sthupo.ttf']
stcaiyun        ->      ['stcaiyun.ttf']
simsun  ->      ['simsun.ttf', 'uming.ttf']
stsong  ->      ['stsong.ttf']
stxihei         ->      ['stxihei.ttf']
simhei  ->      ['simhei.ttf']
simfang         ->      ['simfang.ttf']
stkaiti         ->      ['stkaiti.ttf']
stliti  ->      ['stliti.ttf']
stfangsong      ->      ['stfangso.ttf']
simkai  ->      ['simkai.ttf', 'ukai.ttf']
stxinwei        ->      ['stxinwei.ttf']
stxingkai       ->      ['stxingka.ttf']
simyou  ->      ['simyou.ttf']
simli   ->      ['simli.ttf']
stzhongsong     ->      ['stzhongs.ttf']

如果你的/usr/share/fonts/TTF或~/.fonts下有相应的部分或全部的ttf文件,那么默认情况下他们就会被安装。如果你不希望安装你所有的中文字体,或觉的采用的字体名字不合适,请先用--no-default-fonts来禁用默认字体,再用--font song:simsun.ttf的形式来指定采用的字体名和相应的字体文件。如果仅仅使用--font参数的话默认的字体仍旧生效。如果你的TTF文件夹不是上面提到的,那么请用--fontpath指定。默认情况下仅生成GB2312和GBK编码的字体,如果你需要Big5编码可加入-big5参数。默认的安装模式配置pdflatex使用pk字体,但字体将在你第一次使用时生成。同时配置dvipdfmx使用生成的tfm字体的码表来使用ttf字体。如果你希望pdflatex使用Type1字体从而获得更好的效果,就用--type1来激活,但这将极大幅度地增加安装时间。关于脚本更多的参数说明请用--help取得。

如果你觉得默认安装方式已经足够了那就直接运行脚本,时间只需3、4分钟:

python setup-cjk.py  

7.测试配置的字体

可以使用下面的Tex文档测试:

代码: A test.tex

\documentclass[10pt]{article} \usepackage{CJK}

\begin{document} \begin{CJK}{GBK}{simsun} 这是正常的宋体,采用的是GBK编码

\textit{这是斜体的宋体}

\textbf{而这是粗体的宋体}

\end{CJK}

\begin{CJK}{GB}{simli} 此时是采用GB2312编码的隶书 \end{CJK}

\end{document}  

效果图:http://zh.gentoo-wiki.com/images/8/89/Latex_lizi.png


全文可在 zh.gentoo-wiki.com的HOWTO中找到,昨晚通宵把howto些出来了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2006-8-26 06:49:51 | 显示全部楼层
楼主做了件好事,谢谢啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-26 15:10:32 | 显示全部楼层
今天中午起床把整个安装过程补全了,大家可以测试了:)
回复 支持 反对

使用道具 举报

发表于 2006-9-7 15:01:21 | 显示全部楼层
第6步,脚本执行出错。
  1. # python setup-cjk.py --font mingliu:mingliu.ttf --fontpath /usr/share/fonts/myfonts

  2. setup-cjk: You run this scrip as root.
  3. setup-cjk: All of the chinese fonts will be installed to /usr/local/share/texmf.
  4. setup-cjk: If you choose to install Type1 font, the updmap.cfg will be backup to there in web2b as well

  5. setup-cjk: Finding tetex...
  6. /usr/bin/updmap
  7. setup-cjk: Finding latex...
  8. /usr/bin/latex
  9. setup-cjk: Finding ttf2tfm...
  10. /usr/bin/ttf2tfm
  11. setup-cjk: Finding ttf2pt1
  12. /usr/bin/ttf2pt1
  13. setup-cjk: Finding dvipdfmx...
  14. /usr/bin/dvipdfmx

  15. setup-cjk: No ttf found for 'sthupo',it won't be installed!
  16. setup-cjk: No ttf found for 'stcaiyun',it won't be installed!
  17. setup-cjk: Use /usr/share/fonts/myfonts/simsun.ttf for 'simsun'
  18. setup-cjk: No ttf found for 'stsong',it won't be installed!
  19. setup-cjk: No ttf found for 'stxihei',it won't be installed!
  20. setup-cjk: Use /usr/share/fonts/myfonts/simhei.ttf for 'simhei'
  21. setup-cjk: Use /usr/share/fonts/myfonts/simfang.ttf for 'simfang'
  22. setup-cjk: No ttf found for 'stkaiti',it won't be installed!
  23. setup-cjk: No ttf found for 'stliti',it won't be installed!
  24. setup-cjk: No ttf found for 'stfangsong',it won't be installed!
  25. setup-cjk: Use /usr/share/fonts/myfonts/simkai.ttf for 'simkai'
  26. setup-cjk: No ttf found for 'stxinwei',it won't be installed!
  27. setup-cjk: No ttf found for 'fzshuti',it won't be installed!
  28. setup-cjk: Use /usr/share/fonts/myfonts/mingliu.ttf for 'mingliu'
  29. setup-cjk: No ttf found for 'stxingkai',it won't be installed!
  30. setup-cjk: Use /usr/share/fonts/myfonts/simyou.ttf for 'simyou'
  31. setup-cjk: Use /usr/share/fonts/myfonts/simli.ttf for 'simli'
  32. setup-cjk: No ttf found for 'fzyaoti',it won't be installed!
  33. setup-cjk: No ttf found for 'stzhongsong',it won't be installed!

  34. texhash: Updating /usr/local/share/texmf/ls-R...
  35. texhash: Updating /usr/share/texmf/ls-R...
  36. texhash: Updating /usr/share/texmf-site/ls-R...
  37. texhash: Updating /var/cache/fonts/ls-R...
  38. texhash: Updating /var/lib/texmf/ls-R...
  39. texhash: Done.

  40. setup-cjk: starting TTF config:
  41. (TFM)/usr/share/fonts/myfonts/simsun.ttf: gb gbk (TFM)/usr/share/fonts/myfonts/simhei.ttf: gb gbk (TFM)/usr/share/fonts/myfonts/simfang.ttf: gb gbk (TFM)/usr/share/fonts/myfonts/simkai.ttf: gb gbk (TFM)/usr/share/fonts/myfonts/mingliu.ttf: gb gbk (TFM)/usr/share/fonts/myfonts/simyou.ttf: gb gbk (TFM)/usr/share/fonts/myfonts/simli.ttf: gb gbk

  42. setup-cjk: starting Type1 font conversion:
  43. (T1)simsun.ttf@gb: 01**** Unknown File Version number [66637474], or not a TrueType file
  44. 02**** Unknown File Version number [66637474], or not a TrueType file
  45. 03**** Unknown File Version number [66637474], or not a TrueType file
  46. 04**** Unknown File Version number [66637474], or not a TrueType file
  47. 05**** Unknown File Version number [66637474], or not a TrueType file
  48. 06**** Unknown File Version number [66637474], or not a TrueType file
  49. 07**** Unknown File Version number [66637474], or not a TrueType file
  50. 08**** Unknown File Version number [66637474], or not a TrueType file
  51. 09**** Unknown File Version number [66637474], or not a TrueType file
  52. 10**** Unknown File Version number [66637474], or not a TrueType file
  53. 11**** Unknown File Version number [66637474], or not a TrueType file
  54. 12**** Unknown File Version number [66637474], or not a TrueType file
  55. 13**** Unknown File Version number [66637474], or not a TrueType file
  56. 14**** Unknown File Version number [66637474], or not a TrueType file
  57. 15**** Unknown File Version number [66637474], or not a TrueType file
  58. 16**** Unknown File Version number [66637474], or not a TrueType file
  59. 17**** Unknown File Version number [66637474], or not a TrueType file
  60. 18**** Unknown File Version number [66637474], or not a TrueType file
  61. 19**** Unknown File Version number [66637474], or not a TrueType file
  62. 20**** Unknown File Version number [66637474], or not a TrueType file
  63. 21**** Unknown File Version number [66637474], or not a TrueType file
  64. 22**** Unknown File Version number [66637474], or not a TrueType file
  65. 23**** Unknown File Version number [66637474], or not a TrueType file
  66. 24**** Unknown File Version number [66637474], or not a TrueType file
  67. 25**** Unknown File Version number [66637474], or not a TrueType file
  68. 26**** Unknown File Version number [66637474], or not a TrueType file
  69. 27**** Unknown File Version number [66637474], or not a TrueType file
  70. 28**** Unknown File Version number [66637474], or not a TrueType file
  71. 29**** Unknown File Version number [66637474], or not a TrueType file
  72. 30**** Unknown File Version number [66637474], or not a TrueType file
  73. 31**** Unknown File Version number [66637474], or not a TrueType file
  74. 32**** Unknown File Version number [66637474], or not a TrueType file
  75. 33**** Unknown File Version number [66637474], or not a TrueType file
  76. 34**** Unknown File Version number [66637474], or not a TrueType file
  77. 35**** Unknown File Version number [66637474], or not a TrueType file

  78. mv: cannot stat `*.pfb': No such file or directory
  79. mv: cannot stat `*.enc': No such file or directory
  80. mv: cannot stat `*.afm': No such file or directory
  81. Traceback (most recent call last):
  82.   File "/root/tmp/setup-cjk/setup-cjk.py", line 695, in ?
  83.     setup_type1()
  84.   File "/root/tmp/setup-cjk/setup-cjk.py", line 409, in setup_type1
  85.     afmfile = file(os.path.join(TEXMF, "fonts/afm/zh/%s%s/%s%s%02d.afm" % (enc, f, enc, f, i)))
  86. IOError: [Errno 2] No such file or directory: '/usr/local/share/texmf/fonts/afm/zh/gbsimsun/gbsimsun01.afm'
复制代码
回复 支持 反对

使用道具 举报

发表于 2006-9-7 15:17:06 | 显示全部楼层
tetex已经停止更新了吧,作者好像转到texlive上去了
不过还是赞你的工作
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表