分类: 系统运维
2010-04-27 01:13:35
本文主要基于ubuntu论坛上ptpt52兄的《Texlive2009安装手记》并结合我自己的实践情况整理,相关帖子详见:
系统环境:ubuntu 9.10
最近刚发布的 TEX Live 2009 是对中文支持有较大改进的一个版本。首先,一如 2007、2008 版本,TEX Live 2009 有中文版本的安装使用指南,强烈建议在提问前把相关章节好好看看,这份指南主要叙述的是和中文无关的一些通用的问题。TEX Live 2009 的中文支持主要分为两部分,基于 XETEX 的,和基于传统 CJK 宏包的。这里我(ptpt52兄)将介绍 TEX Live 2009的安装以及配置过程,并把我(ptpt52兄)对其的一些修改与大家分享。
一直以来,我都在尝试学习latex,可是每次都是因为安装完texlive后不懂得如何配置其中文环境而无法使用,所以也就耽搁了下来。直到最近看到了ptpt52兄分享的《Texlive2009安装手记》,才又重拾信心重新安装配置texlive。题外话:最近这几天一直在折腾着,搞得毕设都暂停了下来,原因是前两天升级系统到最新的10.04版本,可是由于显卡驱动的不完善以及我对新版本的风格不习惯(也许是10.04版本相比之前的版本更加的商业化而遗弃了一些之前早已习惯的风格元素而让我感到别扭),最后又重装回9.10版本。ps:ubuntu系统的平滑升级做的还不是很好,至少在我使用ubuntu将近两年的时间中没有一次平滑升级成功过,不过新版本的全新安装过程还都是十分顺利的。
正如前面所说,我才刚重装系统,很多配置都是从零开始了,所以在安装配置texlive的过程中遇到的问题也会比较多点,这样也好,使得我能够对ptpt52兄的安装手记补充说明一下安装texlive 2009的前期准备工作。
对我们这些ubuntu中文用户来说,使用liveCD全新安装ubuntu系统后,第一件事就是要配置中文环境,具体的配置方法请参考中的。在这里我想强调的与现在安装配置texlive相关是:
设置文档查看器 Evince 的中文支持(Evince是ubuntu系统中pdf文档的默认查看器)。
sudo apt-get install poppler-data cmap-adobe-cns1 cmap-adobe-gb1
sudo apt-get install xpdf-chinese-simplified xpdf-chinese-traditional
安装文泉驿字体和文鼎PL中文字体
sudo apt-get install ttf-wqy-* ttf-arphic-*
安装上面软件包支持后,如果文档查看器(Evince)打开中文PDF文档仍然会有显示方块的问题,那么可以这么解决:
sudo gedit /etc/fonts/conf.d/49-sansserif.conf
将最后的倒数第四行修改为
由于ctex 使用的中文字体有两套,一套是 winfonts(微软的六种中易字体,包括宋体、黑体、楷书、仿宋、隶书、幼圆),另外一套是 adobefonts(Adobe 的四套字体,包括 Adobe Song Std、Adobe Heiti Std、Adobe Fangsong Std、Adobe Kaiti Std)。如果为了省去后面配置texlive的麻烦,安装上这两套字体是最好不过了。不过我们知道,上面的这两套字体都不是可以免费使用的,而大多数使用linux系统的童靴,一般都会有尽量不去使用盗版系统、盗版软件的觉悟(因为那是在盗窃他人的劳动成果),话虽是这么说,但要是能搞到这两套字体并安装上而且能够正常使用,那就不要装清高、装13了。google搜索到的adobe字体下载链接: 安装winfonts 这样以后你的系统就安装好ctex需要的winfonts。(除此之外,上面的字体中还包含了Times New Roman、Arial、Courier New英文字体) 2、修改 /usr/local/texlive/2009/texmf-dist/tex/latex/ctex/fontset/ctex-xecjk-winfonts.def 文件(注意要sudo),默认的 ctex-xecjk-winfonts.def 文件内容是 这里的“[simkai.ttf]”和“[simfang.ttf]”得分别用“KaiTi_GB2312”和“FangSong_GB2312”替换掉(注意引号不包含在内),这也是我之前所说的“从windows系统中拷贝过来的那些中文字体并不可用”的原因了。如果winfonts和adobefonts这两套字体你都安装了(或只安装了其中的一套),那么文章后面的关于unixfonts的配置就可以不看了。ps:也许你会问,直接到windows系统中拷贝字体过来不就得了,可是据我个人的实践得知,那是不可行的。我之前也是这么干了,拷贝的windows字体放置到 ~/.fonts/winfonts 目录(假如没有该目录,则新建一个,后面安装adobe字体也是类似的方法),然后执行 fc-cache -fv 命令更新字体缓存,然后执行 fc-list :lang=zh 命令查看中文字体,确实看到了“宋体,SimSun ”什么的,但是后面执行 xelatex 编译中文 latex 源文件时依然会提示找不到SimSun字体的错误,这说明从windows系统中拷贝过来的那些中文字体并不可用。
1、从windows系统中拷贝如下字体到 ~/.fonts/winfonts 目录中。jarson@jarson-laptop:~/.fonts/winfonts$ ls
arialbd.ttf ARIALNB.TTF ariblk.ttf cour.ttf SIMLI.TTF timesbi.ttf
arialbi.ttf ARIALNI.TTF courbd.ttf simfang.ttf simsun.ttc timesi.ttf
ariali.ttf ARIALN.TTF courbi.ttf simhei.ttf SIMYOU.TTF times.ttf
ARIALNBI.TTF arial.ttf couri.ttf simkai.ttf timesbd.ttf
jarson@jarson-laptop:~$ fc-list :lang=zh|grep -v 'Adobe'|grep -v 'WenQuanYi'|grep -v 'AR PL'
幼圆,YouYuan:style=Regular
楷体_GB2312,KaiTi_GB2312:style=Regular
新宋体,NSimSun:style=Regular
仿宋_GB2312,FangSong_GB2312:style=Regular
宋体,SimSun:style=Regular
黑体,SimHei:style=Regular
隶书,LiSu:style=Regular
% ctex-xecjk-winfonts.def: Windows 的 xeCJK 字体设置,默认为六种中易字体
% vim:ft=tex
\setCJKmainfont[BoldFont={SimHei},ItalicFont={[simkai.ttf]}]
{SimSun}
\setCJKsansfont{SimHei}
\setCJKmonofont{[simfang.ttf]}
\setCJKfamilyfont{zhsong}{SimSun}
\setCJKfamilyfont{zhhei}{SimHei}
\setCJKfamilyfont{zhkai}{[simkai.ttf]}
\setCJKfamilyfont{zhfs}{[simfang.ttf]}
\newcommand*{\songti}{\CJKfamily{zhsong}} % 宋体
\newcommand*{\heiti}{\CJKfamily{zhhei}} % 黑体
\newcommand*{\kaishu}{\CJKfamily{zhkai}} % 楷书
\newcommand*{\fangsong}{\CJKfamily{zhfs}} % 仿宋
\newcommand*{\lishu}{\CJKfamily{zhli}} % 隶书
\newcommand*{\youyuan}{\CJKfamily{zhyou}} % 幼圆
\endinput
后面也就没什么好说的了,直接把ptpt52兄的《Texlive2009安装手记》Ctrl + c 、Ctrl + v 弄过来吧。
1、下载安装程序
下载链接:
或者:
2、运行安装程序
先是解压安装包,然后打开终端,cd 进入解压目录,运行
sudo ./install-tl -repository
然后按你的需要选择修改相关安装选项,如果没什么特别的建议不要改了,用默认设置就行。
补充:如果想图形界面安装的话,执行下面命令安装
sudo apt-get install perl-tk
sudo ./install-tl -repository -gui
ps:可以修改安装选项中的语言支持集合(取消所有的选择,然后只勾选安装CJK(Chinese、Japanese、Korean)和英文支持,然后帮助文档集合中只勾选Chinese和UK English吧),然后再选择最后一项“创建符号链接到系统目录”,让安装程序自己来给我们创建语法链接。具体可参考:(这篇文章有点过时了,不过图形界面安装那里是相同的,只是texlive 2009已经不再需要后面的繁琐配置了,默认就已经支持)
3、基本配置
首先是环境变量的设置,编辑文件/etc/bash.bashrc(sudo gedit /etc/bash.bashrc)在此文件末尾添加
PATH=/usr/local/texlive/2009/bin/i386-linux:$PATH; export PATH
MANPATH=/usr/local/texlive/2009/texmf/doc/man:$MANPATH; export MANPATH
INFOPATH=/usr/local/texlive/2009/texmf/doc/info:$INFOPATH; export INFOPATH
在/etc/manpath.config 文件的“# set up PATH to MANPATH mapping”这行下面的列表后增加一条:
MANPATH_MAP /usr/local/texlive/2009/bin/i386-linux /usr/local/texlive/2009/texmf/doc/man
ps:如果你使用的是64位系统,则“i386-linux”那里改成“x86_64-linux”。
ps2:如果你使用的是图形界面安装,而且也选择了“创建符号链接到系统目录”,那么也就不需要再设置这些环境变量了。
4、编译测试
好了,安装完毕,写个测试文档试试
%test.tex
\documentclass{ctexart}
\begin{document}
中文宏包测试
\end{document}
运行 xelatex test.tex 编译,出现类似于下面之类的结果:
kpathsea: Running mktexmf SimSun ! I can't find file `SimSun'. <*> ...:=ljfour; mag:=1; nonstopmode; input SimSun Please type another input file name ! Emergency stop. <*> ...:=ljfour; mag:=1; nonstopmode; input SimSun Transcript written on mfput.log. grep: SimSun.log: 没有该文件或目录 mktextfm: `mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input SimSun' failed to make SimSun.tfm. kpathsea: Appending font creation commands to missfont.log. ! Font \zf@basefont=SimSun at 10.0pt not loadable: Metric (TFM) file or install ed font not found.\let l.5 {SimSun} ?
怎么回事呢?看提示,应该是说没有 SimSum(宋体)字体。当然啦,Linux 下面当然没有SimSum 字体了,没办法,原来 ctex 还有另外一套字体可以,就是 adobefonts,幸好我这里安装了 adobe 的那套字体,所以修改一下代码
%test.tex
\documentclass[adobefonts]{ctexart}
\begin{document}
中文宏包测试
\end{document}
重新编译就行。但是,如果也没有 adobe 的那一套字体怎么办,有没有办法用开源字体呢?当然,这将在后面的“个性配置”讲到。
ctex 使用的中文字体有两套,一套是 winfonts(微软的六种中易字体,包括宋体、黑体、楷书、仿宋、隶书、幼圆),另外一套是 adobefonts(Adobe 的四套字体,包括 Adobe Song Std、Adobe Heiti Std、Adobe Fangsong Std、Adobe Kaiti Std)。对于 windows 用户,编译当然没有什么问题,因为他们即使没有 Adobe 的四套字体,也会有微软的六种中易字体;但是对于 Linux用户,很可能这两套字体都没有,或者不全,那么,编译的时候就会出现找不到字体之类的错误。我的解决方案是——使用开源字体做替换。具体做法是修改 ctex,给 ctex 添加一套unixfonts,把 ctex 默认字体设置为 unixfonts:
1、添 加 字 体 集:首 先 创 建 文 件 /usr/local/texlive/2009/texmf-dist/tex/latex/ctex/fontset/ctex-xecjk-unixfonts.def (注意要 sudo),添加下面的内容并保存
% ctex-xecjk-unixfonts.def: Unix 的 xeCJK 字体设置
% vim:ft=tex
\setCJKmainfont[BoldFont={WenQuanYi Zen Hei},ItalicFont={AR PL UKai CN}]
{AR PL SungtiL GB}
\setCJKsansfont{WenQuanYi Zen Hei}
\setCJKmonofont{AR PL UMing CN}
\setCJKfamilyfont{zhsong}{AR PL SungtiL GB}
\setCJKfamilyfont{zhhei}{WenQuanYi Zen Hei}
\setCJKfamilyfont{zhkai}{AR PL KaitiM GB}
\setCJKfamilyfont{zhfs}{AR PL UMing CN}
\setCJKfamilyfont{zhli}{WenQuanYi Zen Hei Mono}
\setCJKfamilyfont{zhyou}{AR PL SungtiL GB}
\setCJKfamilyfont{wqy}{WenQuanYi Zen Hei}
\setCJKfamilyfont{uming}{AR PL UMing CN}
\setCJKfamilyfont{ukai}{AR PL UKai CN}
\setCJKfamilyfont{kaitim}{AR PL KaitiM GB}
\setCJKfamilyfont{sungtil}{AR PL SungtiL GB}
\newcommand*{\wqy}{\CJKfamily{wqy}} % 文泉驿正黑
\newcommand*{\uming}{\CJKfamily{uming}} % AR PL UMing CN
\newcommand*{\ukai}{\CJKfamily{ukai}} % AR PL UKai CN
\newcommand*{\kaitim}{\CJKfamily{kaitim}} % 文鼎PL简中楷
\newcommand*{\sungtil}{\CJKfamily{sungtil}} % 文鼎PL简报宋
\newcommand*{\songti}{\CJKfamily{zhsong}} % 宋体
\newcommand*{\heiti}{\CJKfamily{zhhei}} % 黑体
\newcommand*{\kaishu}{\CJKfamily{zhkai}} % 楷书
\newcommand*{\fangsong}{\CJKfamily{zhfs}} % 仿宋
\newcommand*{\lishu}{\CJKfamily{zhli}} % 隶书
\newcommand*{\youyuan}{\CJKfamily{zhyou}} % 幼圆
\endinput
简单的说明一下:这里用“文鼎PL简报宋”替换“宋体”,用“文泉驿正黑”替换“黑体”,用“文鼎PL简中楷”替换“楷体”等等,还把这些字体定义为新的命令,例如:
{\wqy 文泉驿正黑}
就可以用来显示文泉驿正黑字体
然后就是修改文件 /usr/local/texlive/2009/texmf-dist/tex/latex/ctex/opt/ctex-common-opts.def (注意权限),把其中的
% fonts \newif\ifCTEX@nofonts \CTEX@nofontsfalse \newif\ifCTEX@winfonts \CTEX@winfontstrue \newif\ifCTEX@adobefonts \CTEX@adobefontsfalse \DeclareOption{nofonts}{\CTEX@nofontstrue \CTEX@winfontsfalse \CTEX@adobefontsfalse} \DeclareOption{winfonts}{\CTEX@winfontstrue \CTEX@nofontsfalse \CTEX@adobefontsfalse} \DeclareOption{adobefonts}{\CTEX@adobefontstrue \CTEX@nofontsfalse \CTEX@winfontsfalse}
ps:默认使用的是winfonts
修改为
% fonts \newif\ifCTEX@nofonts \CTEX@nofontsfalse \newif\ifCTEX@winfonts \CTEX@winfontstrue \newif\ifCTEX@adobefonts \CTEX@adobefontsfalse \newif\ifCTEX@unixfonts \CTEX@unixfontsfalse \DeclareOption{nofonts}{\CTEX@nofontstrue \CTEX@winfontsfalse \CTEX@adobefontsfalse \CTEX@unixfontsfalse} \DeclareOption{winfonts}{\CTEX@winfontstrue \CTEX@nofontsfalse \CTEX@adobefontsfalse \CTEX@unixfontsfalse} \DeclareOption{adobefonts}{\CTEX@adobefontstrue \CTEX@nofontsfalse \CTEX@winfontsfalse \CTEX@unixfontsfalse} \DeclareOption{unixfonts}{\CTEX@unixfontstrue \CTEX@nofontsfalse \CTEX@winfontsfalse \CTEX@adobefontsfalse}
最后是修改 /usr/local/texlive/2009/texmf-dist/tex/latex/ctex/engine/ctex-xecjk-engine.def ,把其中的
\ifCTEX@nofonts\else
\ifCTEX@winfonts
\input{ctex-xecjk-winfonts.def}
\else\ifCTEX@adobefonts
\input{ctex-xecjk-adobefonts.def}
\fi\fi
\fi
修改为
\begin{verbatim} \ifCTEX@nofonts\else \ifCTEX@winfonts \input{ctex-xecjk-winfonts.def} \else\ifCTEX@adobefonts \input{ctex-xecjk-adobefonts.def} \else\ifCTEX@unixfonts \input{ctex-xecjk-unixfonts.def} \fi\fi\fi \fi
2、把 ctex 默认字体集改为 unixfonts:其实在上面一步的时候也可以修改,不过还是这样改吧,添加文件 /usr/local/texlive/2009/texmf-dist/tex/latex/ctex/cfg/ctexopts.cfg ,内容是
% ctexopts.cfg.template: set default options % vim:ft=tex \ExecuteOptions{unixfonts} \endinput
ps:其实有一个 ctexopts.cfg.template 模板文件的。
3、更新 texlsr,即命令输入 sudo /usr/local/texlive/2009/bin/i386-linux/mktexlsr,至此,你就可以使用 unixfonts 了。
ps:如果你前面的环境变量都设置好了,那么直接 sudo mktexlsr 就可以了。
后记:其实单纯texlive的安装并不难,像这样使用网络安装的方式实际上也就是一个文件下载的过程而已,而且关于texlive的安装网络上的教程一大把。可是很少有提及到如何解决linux系统上缺少相应字体的变通方法,所以就算程序安装成功了,但由于没有相应的字体,在编译中文latex源文件时也还是因为缺少字体而无法编译成功,这样也就无法使用了。
安装配置好texlive后的后续学习,即使texlive已经安装配置成功了,再仔细看一遍texlive自带的安装使用指南也是不错的。ps:其实这个本应该在安装前阅读的,不过有了这篇文章也就不是很必须了,^_^
texdoc texlive-zh-cn
一定要阅读 ctex 宏包文档,用户帮助内容十来页而已。
texdoc ctex
有兴趣、有时间的话阅读一下 xeCJK 宏包文档,用户帮助内容仅几页而已。
texdoc xeCJK
附上一本latex的入门级经典的学习手册:
chinaunix网友2011-01-01 14:13:51
看不懂。。。 我只装了texlive, 好像cjk包也有,字体问题就一直没看明白。。。ctex是一个套装吗?texlive的套装?
chinaunix网友2010-08-15 02:35:10
http://www.cublog.cn/u3/109488/showart_2222797.html 保存當前頁面為pdf時在這裡添加原文地址。
chinaunix网友2010-05-27 15:49:02
首先赞一个呵呵。 但是还是觉得你所引用的原文的做法(使用开源字体)更为合理,直接从win下面拷贝字体过去有些盗版之嫌,而且开源字体也有不少好看的:)