Latex生成中文字体包(转)

date: 2016.05.11; modification:2016.05.11

目录:

(摘自: http://blog.sina.com.cn/s/blog_487bb6210101ap8r.html) (注: Mike本人还没有试验过, 先记在这里备忘)

1 生成中文字体包

安装好TexLive+CJK以后, 还需要安装一个软件──fontforge用于生成字体:

sudo apt-get install fontforge

好了, 前面所做的, 都是标准的Debian式安装, 假如哪天你不需要了, 直接remove安装即可.

生成字体前, 请自己准备你需要生成的字体文件: simsun.ttc, simhei.ttf等, 这里以simsun.ttc(宋体)为例.

准备好后下载下面这个包, 解压到一个地方, 如自己的主目录~/font:

font.tar.bz2

然后把simsun.ttc也复制到~/font里去, 执行下面的命令生成字体地图:

cd ~/font
time fontforge -script subfonts.pe simsun.ttc song Unicode.sfd

加time是为了计算时间, 因为比较耗时, 在我的Core 2 Duo T5500下, 生成song花了40分钟, 生成hei花了24分钟, 仅供参考.

字体生成好了, 再建立一个描述文件吧.

在~/font下, 建立一个makemap文件, 内容如下:

for i in *.tfm
do
cat >> song.map << EOF
${i%.tfm} ${i%.tfm} < ${i%.tfm}.pfb
EOF
done

然后在终端下执行: chmod +x makemap让文件加上执行权限, 最后执行:

./makemap

再建立一个一个c70song.fd文件:

% This is c70song.fd for CJK package.
% created by Edward G.J. Lee
% modify by Yue Wang
\ProvidesFile{c70song.fd}
\DeclareFontFamily{C70}{song}{\hyphenchar \font\m@ne}
\DeclareFontShape{C70}{song}{m}{n}{<-> CJK * song}{}
\DeclareFontShape{C70}{song}{bx}{n}{<-> CJKb * song}{\CJKbold}
\endinput

好的, 相关文件都已生成, 开始复制字体使其生效.

执行下面的命令, 在你的主目录下生成隐藏的个人Tex配置, 如果你哪天不需要了, 也可以删除:

mkdir -p ~/.texmf-var/fonts/map/dvips/CJK
mkdir -p ~/.texmf-var/fonts/tfm/CJK/song
mkdir -p ~/.texmf-var/fonts/type1/CJK/song
mkdir -p ~/.texmf-var/tex/latex/CJK/UTF8

建立完这层层叠叠的目录以后, 就把刚刚生成的字体复制进去吧.

cp ~/font/song.map ~/.texmf-var/fonts/map/dvips/CJK
cp ~/font/*.tfm ~/.texmf-var/fonts/tfm/CJK/song
cp ~/font/*.pfb ~/.texmf-var/fonts/type1/CJK/song
cp ~/font/c70song.fd ~/.texmf-var/tex/latex/CJK/UTF8

复制完后就执行命令刷新缓存, 让它生效:

sudo texhash
updmap --enable Map song.map

假如一切顺序的话, 就测试一下我们安装的song体是否能用吧.

在任意位置编辑这个文件, 然后保存为test.tex, 支持UTF-8格式:

\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{song}
你好! 这里是Ubuntu下的TexLive+CJK环境!
\end{CJK}
\end{document}

执行分别生成pdf文档和用evince来查看文档:

pdflatex test.tex
evince test.pdf

看看你的过程顺不顺利, 生成的PDF档也是下面这样吗?

2 中文文档关键字

中文文档习惯于使用"目录", "插图目录", "表格目录", "参考文献", "摘要", "索引", "表格", "图"等字样作为文章特殊部分的标题, 而 LaTeX 对于这些部分的标题默认是使用英文的, 因此可以通过重定义宏的方式将其重定义为中文字样.

/renewcommand{/contentsname}{目录}
/renewcommand{/listfigurename}{插图目录}
/renewcommand{/listtablename}{表格目录}
/renewcommand{/refname}{参考文献}
/renewcommand{/abstractname}{摘要}
/renewcommand{/indexname}{索引}
/renewcommand{/tablename}{表}
/renewcommand{/figurename}{图}