在Ubuntu下如何用latex编辑生僻字?


名字中有生僻字“旸(暘)”,在Ubuntu下CJK包中无此字。如果用图片代替存在无法复制粘贴的缺陷,如果使用仓颉造字的话不是很美观。请问有什么方法能较好的解决这个问题?抑或有其他中文包括这个字?

latex Ubuntu cjk

钉宫其实是狮子 10 years, 11 months ago

以下内容整理自(http://lifeng.telebyte.com.cn/source/ubuntu.pdf)

对于不同发行版本的Linux来说,文件系统的组织结构有所不同,在之前的文章中,介绍了如何在Fedora 13下安装CJK宏包中使用的中文字体。

对于Ubuntu 11.10来说,由于系统默认安装的是texlive-2009,而且Ubuntu11.10的文件系统结构与配置文件存放的位置也与Fedora发行版本不同,因此对于CJK宏包中使用的中文字体的安装过程也稍有区别。在这里我们介绍一下如何在Ubuntu 11.10下安装CJK宏包中使用的UTF-8编码的中文字体。本文的内容也适用于早期发行的 Ubuntu 11.04 版本。

1 Ubuntu 11.10安装CJK宏包中使用的字体的准备工作

如果想在Ubuntu 11.10下安装CJK宏包中所使用的中文字体,首先需要准备相关的环境。为了能在Ubuntu 11.10下使用LATEX 2ε中的CJK宏包,我们在Ubuntu 11.10下安装所有texlive所需要的包与环境。使用下面的命令:

$sudo apt-get install -y texlive-full

运行上面的命令需要一些时间,时间的长短依赖于你使用的网络的带宽,另外一个因素,是你是否在Ubuntu的“系统设置”中的“软件源”中是否设置与你所处的网络最近的一个下载镜像文件。如果你在中国大陆地区,可以选择“中国的服务器”作为软件下载的源。在上面的安装命令运行过程时,也许安装程序会提示你安装一些其它依赖于texlive的软件包,我们可以按“Y”来确认安装所需的软件包。

在完成安装 texlive-full 软件包后,你还需要一些辅助工具来产生 CJK宏包所需的字体文件。这个工具是“fontforge”,你可以通过下面的命令来安装这个软件:

$sudo apt-get install -y fontforge

下面。我们安装本文所要使用的中文 TrueType 字体软件安装包:

$sudo apt-get install -y ttf-wqy-microhei

在运行上面的命令完成所需的软件与字体的安装,我们就可以准备为CJK 宏包安装新的中文字体。

2 CJK宏包安装中文字体的过程

对于texlive不同的发行版本来说,为 CJK 安装中文字体,主要有以下几个步骤:

  • 产生TEX使用格式的字体文件
  • 通过 Shell 脚本产生新字体的配置文件
  • 安装新的字体文件到TEX系统目录中
  • 通过变更 Ubuntu 11.10 中的配置文件,使新安装的字体可用

2.1 产生TEX使用格式的字体文件

在这里,我们以 UTF-8 编码的中文 TrueType 字体为例,来说明如何在 Ubuntu 11.10 下安装中文字体。为什么用 UTF-8 编码的字体呢?这是由于 UTF-8 编码相较于 GBK 等其它编码的中文字体,有更多的中文字符被收入字体文件中,对于用户所排版的中文科技,文学文稿的排版来说,输出最终文件时,生僻字被漏排的可能性会小很多。

我们这里以 Ubuntu 11.10 下自带的中文 TrueType 字体文件 “wqymicrohei.ttc”来说明中文字体的安装,而不是使用“传统”方式的 “simsun.ttc”字体的安装,主要是由于字体的版权问题。因为在 Ubuntu 下,也有对应的中文字体文件可以用。从技术上来说,这两个不同的安体安装文件,对于 LATEX 2ε 来说,安装过程是相同的。

在运行sudo命令时,系统提示输入管理员密码。这个密码是在系统安装时设定的管理员使用的密码。

2.1.1 准备安装字体的目录

首先,我们为LATEX 2ε中文字体安装准备一个目录,在这个目录下,我们集中存放安装过程中所需的文件。

$cd ~
$mkdir cnfonts

通过上面的两个命令,我们在用户的家目录下,创建目录“cnfonts”。

2.1.2 拷贝所需的文件

通过下面的命令,我们为 LATEX 2ε 产生中文字体格式的所有文件集中存放到我个上面建立的目录中。

$cd ~/cnfonts
$cp /usr/share/texmf-texlive/fonts/sfd/ttf2pk/Unicode.sfd ./
$cp /usr/share/fonts/truetype/wqy/wqy-microhei.ttc ./
$cp /usr/share/latex-cjk-common/utils/subfonts/subfonts.pe ./
$cp /usr/share/latex-cjk-common/utils/subfonts/vertical.pe ./
$cp /usr/share/latex-cjk-common/utils/subfonts/makefdx.pl ./

2.1.3 产生供LATEX 2ε使用的字体文件

我们使用下面的命令,来产生供 LATEX 2ε 使用的字体格式文件。

$fontforge -script subfonts.pe wqy-microhei.ttc hei Unicode.sfd

通过上面的命令,我们可以产生供 LATEX 2ε 使用的各种格式的字体文件,以及相应的编码文件。

2.2 通过Shell脚本产生新字体的配置文件

请在安装字体的当前目录中,编辑makemap.sh文件,用于产生相应字体的 map 文件。下面是 makemap.sh 文件的内容。请使用用户熟悉的编辑器录入以下内容。(在录入时注意输入字符为英文半角)

#!/bin/bash
for i in *.tfm
do
cat >> hei.map <<EOF
${i%.tfm} ${i%.tfm} <${i%.tfm}.pfb
EOF
done

在编辑完成上面的 makemap.sh 文件后,在当前目录下,使用下面的命令,给新编辑的 makemap.sh 以可执行权限。

$chmod 755 makemap.sh

之后,通过运行上面编辑的脚本文件,以产生hei.map文件。

$./makemap.sh

2.3 安装新的字体文件到TEX系统目录中

下面通过下面几步命令,将当前目录下生成的供 TEX 系统使用的字体安装到 TEX 系统目录中。

2.3.1 安装type1字体

$sudo mkdir -p /usr/share/texmf/fonts/type1/latex-cjk-cn/hei
$sudo cp *pfb /usr/share/texmf/fonts/type1/latex-cjk-cn/hei

2.3.2 安装afm字体

$sudo mkdir -p /usr/share/texmf/fonts/afm/arphic/hei
$sudo cp *afm /usr/share/texmf/fonts/afm/arphic/hei/

2.3.3 安装tfm字体

$mkdir -p /usr/share/texmf/fonts/tfm/latex-cjk-cn/hei
$sudo cp *tfm /usr/share/texmf/fonts/tfm/latex-cjk-cn/hei/

2.3.4 安装新字体的enc文件

$sudo mkdir -p /usr/share/texmf/fonts/enc/dvips/latex-cjk-cn/hei
$sudo cp *enc /usr/share/texmf/fonts/enc/dvips/latex-cjk-cn/hei/

2.3.5 安装新字体的map文件

$sudo mkdir -p /usr/share/texmf/fonts/map/dvips/latex-cjk-cn
$sudo cp hei.map /usr/share/texmf/fonts/map/dvips/latex-cjk-cn/

3 通过变更Ubuntu 11.10中的配置文件,使新安装的字体可用

3.1 安装新字体的fd文件

下面,我们通过产生供新生成的‘hei’字体文件使用的‘fd’文件。在字体安装目录中,编辑c70hei.fd文件。

% This is the file c70hei.fd of the CJK package
% for using Asian logographs (Chinese/Japanese/Korean)
% with LaTeX2e
%
% created by the Debian source package for
% CJK Version 4.8.1 (3-Oct-2008).
\def\fileversion{4.8.1}
\def\filedate{2008/10/03}
\ProvidesFile{c70hei.fd}[\filedate\space\fileversion]
% character set: UTF-8
% font encoding: Unicode
\DeclareFontFamily{C70}{hei}{\hyphenchar \font\m@ne}
\DeclareFontShape{C70}{hei}{m}{n}{<-> CJK * hei}{\CJKnormal}
\DeclareFontShape{C70}{hei}{bx}{n}{<-> CJKb * hei}{\CJKbold}
\endinput

在完成文件c70hei.fd文件的编辑后,运行下面的命令,将这个文件拷贝到TEX系统的安体安装目录中。运行下面的命令:

$sudo cp c70hei.fd /usr/share/texmf/tex/latex/CJK/UTF8/

3.2 编辑配置文件,使xdvi使用新安装的字体

通过编辑文件/etc/texmf/xdvi/xdvi.cfg,我们可以使 xdvi 程序使用新安装的字体。通过下面的操作,我们可以进行相应的设置:

$cd /etc/texmf/xdvi
$sudo vi xdvi.cfg

在 vi 编辑模式下,找到该文件的最后一行。内容如下:

dvipsmap ps2pk.map

在这行之后,我们添加一行,内容如下:

dvipsmap hei.map

3.3 编辑updmap.d目录下配置文件 编辑 /etc/texmf/updmap.d/20latex-cjk-chinese-arphic-hei.cfg 文件。在新创建的文件中添加如下一行内容。

Map hei.map

3.4 编辑fontmap-cfg目录下的文件

在目录/var/lib/tex-common/fontmap-cfg下,创建新文件,文件名为:

latex-cjk-chinese-arphic-hei.list

文件内容如下:

20latex-cjk-chinese-arphic-hei

4 更新TEX系统目录

通过运行下面的命令,我们更新TEX系统内目录的当前结构:

$sudo texhash
$sudo updmap-sys --enable Map=hei.map
$sudo fmtutil-sys --all
kenene answered 9 years, 9 months ago

Your Answer