Chinaunix首页 | 论坛 | 博客
  • 博客访问: 923716
  • 博文数量: 201
  • 博客积分: 8078
  • 博客等级: 中将
  • 技术积分: 2162
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-20 17:22
文章分类

全部博文(201)

文章存档

2013年(3)

2012年(11)

2011年(34)

2010年(25)

2009年(51)

2008年(77)

分类: BSD

2009-06-02 15:31:46

在使用latex进行中文排版时,难免遇到生僻字。如果处理不好,则会降低排版者的成就感、加重挫折感,阅读者也会心生不爽,暗怨排版者偷懒。排版 装帧精良、品相完好的电子书是每个LaTeX爱好者的追求,而生僻字的处理这一细节也不容小觑。这里我分享一下自己在对付生僻字方面的一些心得,抛出这块 板砖,但愿能引出玉石。希望高手不吝赐教,晒出各自的实践经验,以便大家共同提高。

一、原装正版方案:安装字库

最直接,同时也是最有效的处理方法,莫过于安装大字库。这里的大字库包括两方面,简单来说就是,源文件的字库和PDF的字库。

源文件的字库是为了让排版者看清楚所要处理的内容是什么。生僻字在tex文件中一抹黑全是乱码,在生成的PDF中却是可读汉字,这样的事情 不是不可能。这说明源文件所依赖的计算机环境中,字体信息不全。而PDF所使用的字体却可以与计算机环境字体相对独立,因此出现上面所说的怪事。

我安装了GB18030 Support Package的SimSun18030.ttc以及方正超大字符集。这样一来,在计算机中,只要选中了编码和字体,就不存在无法显示的小方框了。

但是,即使能在计算机中正常显示,也未必能在生成的PDF中正常显示。这是因为,latex系统依赖额外的字型描述信息,才能画出正确的汉字。

由于latex的两种字体中,GBK家族字体丰富,字型饱满,虽然支持的汉字有限,但是仍然是主流选择。而utf8家族里,尤其Unicode超大字符集字体,虽然支持更多的汉字,但是由于字体选择少,字型不丰满,较少人选择。

推荐文章:

二、枪版方案:录制播放

方法要领:使用其它工具画出汉字,保存成图片格式,以便调用。高手可以使用EPS图,中手们使用jpg或png就可以了。

假设要生成左”扌”右”中”这个字,(表示我们要将生僻字握在手中),其字体代码为AA220。
环境:windowsxp+方正超大字符集+office2003+Photoshop CS9.0+CTEX

注意,需要加入\usepackage{graphicx}才能正确编译。

  1. 打开word2003,新建文档,插入->符号,在下方的输入框中输入22AA0,如果所示,就会出现左”扌”右”中”这个字,如图所示:

    点击插入,就会在word中出现该字。如图:


    选择并复制该字备用。

  2. 打开PS,新建文档,参数如图所示:
  3. 点击”好”按钮。由于72X72较小,需调整显示比例到看着顺眼的比例。
    然后选择”横排文字工具”,点击图像的左中部,显示出跳跃的光标。此时选择”simsun funder extended”字体,字号选72点,其余默认。

  4. 在图像中粘贴,如图:

  5. 选择图层->栅格化->文字,使文字融入图层。
  6. 保存为22aa0.jpg图像备用。
  7. 在latex中加入适当语句显示该图片。
    latex语句:左手\lower0.15ex\hbox{\includegraphics[width=.85em]{22aa0ps.jpg}}右中
    效果如图:

三、DIY方案:仓颉造字

众所周知,汉字是由笔画、偏旁部首等零部件攒成的。找到正确的零部件,再以适当的方式组合在一起,就可以定制特殊的汉字。此方案为上两种方案的补充。仍以左手右中这个生僻字为例。

注意,需要加入\usepackage{graphicx}才能正确编译。

LaTeX语句:\hbox{\scalebox{0.7}[1]{扌}\kern-.3em\scalebox{0.6}[1]{中}}

语法要点:

  • hbox{}:插入一个水平盒子
  • \scalebox{水平缩放因子}[垂直缩放因子]{对象}
  • kern:水平方向平移一个对象。与之对应,可以使用lower在垂直方向平移对象。

整句话的意思是,插入一个水平盒子,里面先排版一个”扌”字符,它的宽度缩小到70%,高度不变。之后再排版一个”中”字符,其宽度为60%,高度为普通高度,再将这个”中”向左平移0.3em个单位。

为什么”扌”的宽度为60%呢?这是因为,它的右侧是空白的,占了一部分空间,如果分配的宽度太小,会使提手旁太难看。另外,由于0.6+0.7==1.3,所以需要使之重合0.3,才能使之正好占100%的一个字的空间,no more, no less。

我们看一下对比效果:

可以看出仓颉版的更自然一些。再来补充几句。

左右结构的汉字要求”左收右放“,即,左边的字要瘦些,右边的字要肥些,搭配才好看。请看图中的“黑猫”两字的比例。

对应语句为{特立独行的小\hbox\scalebox{0.4}[1]{黑}\kern-.05em\scalebox{0.55}[1]{猫}}真好看

左边为0.4,右边为0.55,缩进了0.05。如果不信可以看看”林”字,左边的”木”是不是比右边的”木”要瘦小,而且一捺也缩成了点。这种情况,如果没有合适的偏旁,用两个”木”生造出来的”林”字会很难看的。

反转、倒立、上下结构的也可以制作,例如:

对应语句为:

\hbox{\scalebox{-1} [1]{特}\lower-1.6ex\hbox{\scalebox{1}[-1]{立}}}独行的\hbox{\scalebox{0.5} [0.5]{小}\lower-1.0ex\hbox{\scalebox{1}[0.4]{黑}}\lower.1ex\hbox{\kern-1em \scalebox{1}[0.5]{猫}}}真好看

好了,如果您受累读了这篇文章,欢迎进行这样的思考,权作作业:

  1. 半包围的字如何进行排版?例如”边”字。提示:使用kern与lower进行平移。
  2. 进阶作业:如何把左右结构、上下结构的模式作成宏,以便快速造字?例如:\leftright{扌}[0.7]{手}[0.6],(表示左边缩至70%,右边缩至60%,同时右边向左边平移0.6+0.7-1=0.3)。
阅读(14066) | 评论(0) | 转发(0) |
0

上一篇:历法小知识

下一篇:简单rmvb 播放器。

给主人留下些什么吧!~~