前天在Ubuntu 12.04下,使用网络安装的方法安装了TeX Live 2013。XeTeX最近成为中文LaTeX排版的新趋势,我也想尝试一下,因此卸载了系统源里的2012版,并安装2013版。因为XeTeX还没有正式发布,目前正在活跃的开发中,这一年时间肯定修正了不少bug,值得更新。
在线安装TeX Live 2013
下载安装文件
下载地址:http://www.tug.org/texlive/acquire-netinstall.html
- install-tl-unx.tar.gz(2.8MB),适用于Linux
- install-tl.zip for Windows (18mb),适用于Windows
安装
(官方中文指南下载:TeX Live指南)
下载安装程序后,按照这个 Quick Install 就可以方便的安装了。这里把主要过程简记如下:
- 解压缩:
tar xzf install-tl-unx.tar.gz
- 从CTAN网站选择一个离你近、速度快的CTAN的镜像站。我选的是ustc的HTTP源:http://mirrors.ustc.edu.cn/CTAN/,我这边ustc的开源软件源速度一直不错。
- 运行安装程序,并设置上一步选择的源,加快下载速度
- 文本界面:
./install-tl --location http://mirrors.ustc.edu.cn/CTAN/
- 图形界面:
./install-tl -gui --location http://mirrors.ustc.edu.cn/CTAN/
。需要注意,使用图形界面需要安装perl-tk包(sudo apt-get install perl-tk
),否则无法启动图形界面。
- 文本界面:
- 启动安装程序后有个选择安装位置的选项,我选的是
/opt/texlive/2013
(我对/opt/
目录拥有写入权限,如果你对要安装的目录没有定稿权限,需要以root身份sudo ./install-tl 参数
重新运行安装程序),TEXMFHOME
变量选的是~/.texlive/texmf
。 - 我使用的是文本界面。写这篇文章时我已经安装好了,所以无法截图。需要注意的是
install scheme
,如果是新手,选full scheme
可以省去很多麻烦。如果是LaTeX大神级的,那估计也不用看我的文章了=_=。我选的是custom selections of collections
。然后进入customizing installation collections
选择要安装的collection
。这提供了比scheme
更细的方法控制安装哪些包。选的越多需要的硬盘空间越大,全选的话需要3.9G的样子,我的选择需要1.9G,其中的字体和文档都是大部头,可以适当取消几个。 - 然后就是漫长的等待,我用了2个半小时安装完(事后看的,做完上面的选择就睡觉去了=_=)
安装后续处理
配置PATH环境变量
使用bash或者zsh的,在~/.profile
里添加以下内容
PATH=$PATH:/opt/texlive/2013/bin/x86_64-linux export PATH
或者在安装过程中选择了在系统目录创建链接。如果没选,也可以运行tlmgr -gui
,从菜单里选择创建链接。
为XeTeX安装中文字体
字体从哪儿来
- 从Windows系统的Fonts目录复制:
用资源管理器打开C:\Windows\Fonts,以详细方式查看,点上方的
Designed for
(英文系统)排序,向下拉找到值为Han (Simplified)
的字体,复制下来,送到Linux的~/.fonts
目录。 - Ubuntu源里的中文字体:文鼎、文泉驿(
sudo apt-get install ttf-wqy-zenhei ttf-wqy-microhei xfonts-wqy fonts-arphic-ukai fonts-arphic-uming
)。如果用那些版权字体不舒服,只用这两种也足够了。 - Adobe 中文字体,好像是Adobe Reader自带的中文字体,具体不了解,可以免费获得。
安装字体
把获得的各种字体放到~/.fonts目录下。然后运行
fc-cache -fv`更新系统字体缓存。
查看系统字体的名称
使用fc-list :lang=zh family style file spacing
命令查看安装的中文字体。其中字体的名称可能有英文、简中、繁中等多个,使用其中哪一个都行(应该是的)。可以使用下面的命令把这个列表保存到文件chinesefontname中,并对字体名进行排序
fc-list :lang=zh family style file spacing | awk -F: 'BEGIN {OFS=" : "} {print $2 , $1 , $3 }' | sort > chinesefontname
把上面命令中的:lang=zh
去掉可以查看系统中的所有字体。
让XeTeX找到TeX Live安装的字体
Linux系统下,需要配置一下XeTeX才能找到随TeX Live安装的字体。
- 复制字体配置文件
cp /opt/texlive/2013/texmf-var/fonts/conf/texlive-fontconfig.conf ~/.fonts.conf # 个人使用
# 或者
sudo cp /opt/texlive/2013/texmf-var/fonts/conf/texlive-fontconfig.conf /etc/fonts/conf.d/09-texlive.conf # 系统所有用户可用
- 更新字体缓存
fc-cache -fv # 安装在~/.fonts.conf
# 或者
fc-cache -fsv # 安装在/etc/fonts/
注意一点,如果你的~/.fonts.conf
中原来有内容,比如我就使用文泉驿Fontconfig Designer(视觉习惯) 生成过这个文件,这是个很好用的工具,不想丢掉它生成的内容,打开这两个文件比较一下,发现两个的内容可以合并。把texlive-fontconfig.conf
处在fontconfig
标签之间的三行
<dir>/opt/texlive/2013/texmf-dist/fonts/opentype</dir>
<dir>/opt/texlive/2013/texmf-dist/fonts/truetype</dir>
<dir>/opt/texlive/2013/texmf-dist/fonts/type1</dir>
复制到~/.fonts.conf
的<fontconfig>
标签的下一行即可。合并后的~/.fonts.conf
的部分内容如下(前一个注释是我自己加的):
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!-- manually copied from /opt/texlive/2013/texmf-var/fonts/conf/texlive-fontconfig.conf used by XeTeX -->
<dir>/opt/texlive/2013/texmf-dist/fonts/opentype</dir>
<dir>/opt/texlive/2013/texmf-dist/fonts/truetype</dir>
<dir>/opt/texlive/2013/texmf-dist/fonts/type1</dir>
<!-- created by WenQuanYi FcDesigner v0.5 -->
<match>
<test name="family"><string>sans-serif</string></test>
<edit name="family" mode="prepend" binding="strong">
......
在XeTeX中使用系统任意字体
示例如下
% !TEX program = xelatex
\documentclass[12pt,a4paper]{article}
\usepackage{ctex}
\usepackage{fontspec}
% 微软雅黑 \yahei
\setCJKfamilyfont{MSYAHEI}{微软雅黑}
\newcommand{\yahei}{\CJKfamily{MSYAHEI}}
% 楷体 \kai
\setCJKfamilyfont{KAITI}{楷体}
\newcommand{\kai}{\CJKfamily{KAITI}}
\setmainfont[BoldFont=黑体,ItalicFont=楷体]{宋体}
\setsansfont[BoldFont=黑体]{楷体}
\setmonofont{文泉驿等宽微米黑}
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt
\begin{document}
\zihao{-4}
中文字体!(默认宋体) \\
{\yahei 微软雅黑字体} \\
\kai{楷体。两小儿问孔子} \\
\youyuan{xeCJK 系统定义好的幼圆字体}
\textsf{无衬线字体(楷体)} \\
\textbf{\textsf{无衬线字体粗体(黑体)}} \\
\texttt{打字机字体文(泉驿等宽微米黑)} \\
\end{document}
一定要使用xelatex
编译,使用xetex不行。
输出果与预期稍有不同,\textsf
好像把字体变成了仿宋(从输出的pdf文件看),原因不明。
The font "[SIMKAI.TTF]" cannot be found.
完整的错误如下
! fontspec error: "font-not-found"
!
! The font "[SIMKAI.TTF]" cannot be found.
原因是xeCJK
配置文件里写的字体文件名与你实际用的文件名不一样,所以就看不到字体了。修正方法是修改texmf-dist/tex/latex/ctex/fontset/ctex-xecjk-winfonts.def
文件,把里面的字体改成你在fc-list
看到的正确字体,我修改的结果如下(把所有字体都改成了中文):
% ctex-xecjk-winfonts.def: Windows 的 xeCJK 字体设置,默认为六种中易字体
% vim:ft=tex
\setCJKmainfont[BoldFont={黑体},ItalicFont={楷体}]
{宋体}
\setCJKsansfont{黑体}
\setCJKmonofont{仿宋}
> Blockquote
\setCJKfamilyfont{zhsong}{宋体}
\setCJKfamilyfont{zhhei}{黑体}
\setCJKfamilyfont{zhkai}{楷体}
\setCJKfamilyfont{zhfs}{仿宋}
\setCJKfamilyfont{zhli}{隶书}
\setCJKfamilyfont{zhyou}{幼圆}
\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
从这里可以看出,xeCJK
为我们提供了6个预定义的字体命令:\songti, \heiti, \kaishu, \fangsong, \lishu, \youyuan
,可以直接使用。1
No comments:
Post a Comment