安装TeX及中文支持

2015.2.12更新:
下面的笔记适用于在基于debian的发行版(比如Ubuntu、LinuxMint)安装Texlive2013、2014;
第一步根据本机状况,可能不需要;
Texlive2014已经可以下载安装了,下面的所有“2013”更改为“2014”,安装Texlive2014正常。

1.Ubuntu卸载旧的Texlive2009

Try the following commands, one after another. If you progress, respective folders may already be deleted:

sudo apt-get purge texlive*  
rm -rf /usr/local/texlive/2009 and rm -rf ~/.texlive2009
rm -rf /usr/local/share/texmf
rm -rf /var/lib/texmf
rm -rf /etc/texmf
sudo apt-get remove tex-common --purge
rm -rf ~/.texlive

2.安装texlive 2013

这个安装比较简单,我用的是ubuntu12.04.4。 具体步骤是,mount一下你下载的iso文件。

sudo mkdir /media/texlive
sudo mount texlive2013-20130530.iso /media/texlive

然后进入到 /media/texlive目录下,执行:

./install-tl  

提示输入的时候,输入I (大写的i,会看到提示的)
安装完成后,可以向/etc/profile文件的最后一行添加如下代码,注意,我的系统是64位的,你要看看你自己的系统是不是在这个目录下有latex命令。

export PATH=/usr/local/texlive/2013/bin/x86_64-linux:$PATH  

如果你想使用帮助的话,还可以向~/.bashrc中添加下面两行:

export MANPATH=/usr/local/texlive/2013/texmf-dist/doc/man:$MANPATH  
export INFOPATH=/usr/local/texlive/2013/texmf-dist/doc/info:$INFOPATH

到这里,我一般会重启一下。
测试一下上面的配置是否正确:

which latex  

如果找到了latex,那就可以继续了,找不到的话,你需要重新看一下自己是不是没有配置好环境PATH

3.搞定中文字体

(1)测试中文字体

先写一个简单的测试tex文件。起名为test.tex

\documentclass[UTF8]{ctexart}  
\begin{document}
我爱中国!
\end{document}

然后执行如下命令编译:

xelatex test.tex  

等一会,你会遇到一个错误,大致如下:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  
!
! fontspec error: "font-not-found"
!
! The font "SimSun" cannot be found.
!
! See the fontspec documentation for further information.
!
! For immediate help type H <return>.
!...............................................

下面就要解决这个问题。

(2)解决中文字体问题

错误里说了,”font-not-found”!所以问题在于Texlive找不到所示的SimSun字体。

配置Texlive,使其可以使用系统字体

参照官方文档的说法:

XeTEX和LuaTEX可以使用任何系统安装的字体,而不只是TEX目录树中的那些。它们使用类似但不完全一致的方式实现这一功能。
在Windows下TEXLive提供的字体会自动为XeTEX所用。但如果你在Unix兼容的系统中安装了xetex软件包,则需要把系统配置一番XeTEX才能找到随TEXLive安装的那些字体。
为了进行配置,xetex 安装后(不管是初始安装还是后来安装的)都会在TEXMFSYSVAR/fonts/conf/texlive-fontconfig.conf 创建一个必需的配置文件。
要在整个系统中使用TEXLive的字体(假定你有足够的权限),请依照下面的步骤来做:

  1. 将texlive-fontconfig.conf 文件复制到 /etc/fonts/conf.d/09-texlive.conf。
  2. 运行fc-cache -fsv。
    如果你没有足够的权限执行上述操作,或者只需要把TEXLive字体提供给你自己,可以这么做:
  3. 将texlive-fontconfig.conf文件复制到 /.fonts.conf,其中是你的主目录。
  4. 运行fc-cache -fv
    你可以运行fc-list来查看系统字体的名称。

由此可知,执行如下命令即可:

sudo cp /usr/local/texlive/2014/texmf-var/fonts/conf/texlive-fontconfig.conf /etc/fonts/conf.d/09-texlive.conf
sudo fc-cache -fv

现在texlive可以使用系统字体,但是SimSun字体在类UNIX中不存在,所以需要从Windows拷贝。

拷贝SimSun字体到系统中

mkdir ~/.fonts  
cp * ~/.fonts

也可以使用默认的系统文件夹,比如可以用

mkdir /usr/share/fonts/windowsfonts
cp * /usr/share/fonts/windowsfonts

然后执行如下命令,修改字体权限并再次更新字体缓存:

sudo chmod +x *
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fsv

执行成功后,再做如下操作:

cd  /usr/local/texlive/2013/texmf-dist/tex/latex/ctex/fontset/  
sudo vim ctex-xecjk-winfonts.def

文件定义了xeCJK字体设置,内容大致如下:

% 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]}
% \setCJKfamilyfont{zhli}{LiSu}
% \setCJKfamilyfont{zhyou}{YouYuan}
\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

错误产生的原因在于上面定义的字体不存在或者找不到,所以根据已有字体名对字体名进行修改。
下面,打开新的终端,执行如下命令:

fc-list :lang=zh-cn  

输出大约如下:

AR PL UMing TW:style=Light  
AR PL UMing HK:style=Light
文泉驿等宽微米黑,文泉驛等寬微米黑,WenQuanYi Micro Hei Mono:style=Regular
仿宋,FangSong:style=Normal,obyčejné,Standard,Κανονικά,Regular,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
標楷體,DFKai\-SB:style=Regular
AR PL UMing CN:style=Light
新宋体,NSimSun:style=常规,Regular
楷体,KaiTi:style=Normal,obyčejné,Standard,Κανονικά,Regular,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
微软雅黑,Microsoft YaHei:style=Normal,obyčejné,Standard,Κανονικά,Regular,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
Adobe 楷体 Std,Adobe Kaiti Std,Adobe Kaiti Std R,Adobe 楷体 Std R:style=R,Regular
Microsoft YaHei UI,Microsoft YaHei UI Light:style=Light,Regular

注意:输出中有SimSun字样才表示上述两步成功,否则可能复制相关字体不完全。
下面需要做的就是将ctex-xecjk-winfonts.def中的字体SIMFANG.TTF改为FangSong,SIMKAI.TTF改为KaiTi。

如果你用vim,可以在vim里执行如下命令:

:%s/\[SIMFANG.TTF\]/FangSong/g  
:%s/\[SIMKAI.TTF\]/KaiTi/g

(3)测试问题解决

重新执行一下,那个编译命令吧:

xelatex test.tex  

现在应该没有问题了。

(4)调用其他字体

虽然上述方法解决了一些问题,但却还是不能使用微软雅黑之类的字体,下面是解决方案
测试文档是:

\documentclass{ctexart}  
\setCJKfamilyfont{Microsoft YaHei}{微软雅黑}
\newcommand{\yah}{\CJKfamily{Microsoft YaHei}}
\begin{document}
注意:UTF-8编码,用XeLaTeX编译,{\yah 这里示例为微软雅黑}。\\
效果还可以。
\end{document}

效果是这样:
tex
大功告成。