一、序
满纸荒唐言,一把辛酸泪!都云作者痴,谁解其中味?
——曹雪芹
接触letex大概在大学时期,后来荒废了一段时间。
现终于有工作机会使用了,再详细翻翻,别是一番滋味在心头。
这里只详细说linux下latex套件的安装与中文支持方法,希望对大家多有裨益。
二、latex的简介“少年不识愁滋味,爱上层楼。爱上层楼,为赋新词强说愁。而今识尽愁滋味,欲说还休。欲说还休,却道天凉好个秋。”
——辛弃疾
L ATEX是一种面向数学和其它科技文档的电子排版系统。一般人们提到的L ATEX是一个总称,它包括TEX、L ATEX、AMS-L ATEX等。
L ATEX是一个软件系统,同时也是一套标准。遵照这些标准,实现了(implement)所要求功能的软件集合被称为发行版(distribution)。L ATEX发行版只提供了一个L ATEX后台处理机制,用户还需要一个前台编辑器来编辑它的源文件。常用的L ATEX发行版和编辑器见表1.1。
表1.1: L ATEX发行版与编辑器
操作系统
发行版
编辑器
备注
Windows
MikTeX
TeXnicCenter、WinEdt
Unix/Linux
TeXLive
Emacs、vim、Kile
Mac OS
MacTeX
TeXShop
三、texlive的安装
踏破铁鞋无觅处,得来全不费功夫!
——可以看到,texlive就是我们需要的发行版。
1.获取安装程序
首先请找来一张TEX Collection的DVD,或者下载TEX Live的网络安装程序,然后找到这个安装脚本:Unix下是install-tl,Windows下是install-tl.bat。
网络安装程序:在CTAN的systems/texlive/tlnet目录下可以下载,这个地址能自动将你导向一个附近的、保持更新的镜像。你可以下载同时支持Unix和Windows的install-tl.zip或者小得多、但只支持Unix的install-unx.tar.gz。解压后,install-tl和install-tl.bat就会出现在install-tl子目录中。
TEX Collection DVD:打开texlive这个子目录。在Windows下安装程序通常在插入DVD后就自动启动了。要获得DVD的话可以加入一个TEX用户组织(推荐这么做,参见)或是单独购买(通过),又或者是自己从ISO镜像刻录。
参见以了解更多关于获取这个软件的信息和方法。
2.启动安装程序
install-tl是一个Perl脚本。在Unix兼容的系统下启动它最简单的方法是这样的:
> cd /path/to/installer
> perl install-tl
(或者你可以直接运行perl /path/to/installer/install-tl,或者./install-tl,如果这个文件有可执行属性,我们不会把所有这些执行方法列出来。)你可能需要扩大终端窗口的大小才能在一屏内显示完整的文本安装程序界面。
要在专家GUI模式下安装,你需要加入了XFT支持的Perl/TK模块,GNU/Linux下通常都是这样,但其他系统下可能不是。这种情况下,你可以运行:
> perl install-tl -gui
要列出所有这些选项:
> perl install-tl -help
关于Unix下权限的警告:在安装过程中,TEX Live安装程序将会遵照你的umask行事。所以
如果你需要让你的安装能给其他用户使用,就必须保证你设置的权限足够,比如umask 002。更多关
于umask的信息请参见你自己系统的文档。
关于Cygwin的特殊考虑:和其他Unix兼容系统不同,Cygwin并没有包含所有运行TEX Live
安装程序所必须的程序,详见第3.1.4节。
四、texlive中文支持
世界上最远的距离就是我们俩一起出去买苹果,你去买苹果4代,我去买4袋苹果。
——来自福建省厦门市的匿名人士
texlive的中文支持不怎么好,需要特别的安装字体与配置之后才能使用,且听我慢慢道来。
1.安装TexLive+Latex+CJK:
打开终端,执行下述命令安装TexLive和常用的一些Latex宏包(可以根据自己的需要增改):
sudo apt-get install texlive texlive-math-extra texlive-latex-base texlive-latex-extra texlive-latex-recommended texlive-pictures texlive-science texlive-bibtex-extra texlive-common latex-beamer
如果硬盘充裕的话,直接完整安装也可以:
sudo apt-get install texlive-full latex-beamer
安装完后,就可以安装CJK的相关软件包了,如果只需要获得中文支持,那么执行:
sudo apt-get install latex-cjk-chinese ttf-arphic-* hbf-*
否则,建议安装latex-cjk-all以获取完整支持。
2.生成中文字体包
安装好TexLive+CJK以后,还需要安装一个软件──fontforge用于生成字体:
sudo apt-get install fontforge
好了,前面所做的,都是标准的Debian式安装,假如哪天你不需要了,直接remove安装即可。
生成字体前,请自己准备你需要生成的字体文件:simsun.ttc(宋体),simhei.ttf(黑体)等。
准备好后下载下面这个包,解压到一个地方,如自己的主目录~/font:
然后把simsun.ttc simhei.ttf也复制到~/font里去,执行下面的命令生成字体地图:
cd ~/font
time fontforge -script subfonts.pe simsun.ttc song Unicode.sfd
time fontforge -script subfonts.pe simhei.ttf hei Unicode.sfd
加time是为了计算时间,因为比较耗时,在我的电脑下,生成song花了40分钟,生成hei花了24分钟,仅供参考。
字体生成好了,再建立一个描述文件吧。
在~/font下,建立一个makemap文件,内容如下:
for i in *.tfm
do
cat >> song.map << EOF
${i%.tfm} ${i%.tfm} < ${i%.tfm}.pfb
EOF
done
++++++++++++++++我是华丽的分割线++++++++++++++++
在~/font下,建立一个makemap2文件,内容如下:
for i in *.tfm
do
cat >> hei.map << EOF
${i%.tfm} ${i%.tfm} < ${i%.tfm}.pfb
EOF
done
然后在终端下执行:chmod +x makemap让文件加上执行权限,最后执行:
sudo ./makemap
sudo ./makemap2
再建立一个c70song.fd文件:
% This is c70song.fd for CJK package.
% created by Edward G.J. Lee
% modify by Zhangxinjian
\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
++++++++++++++++我是华丽的分割线++++++++++++++++
再建立一个c70hei.fd文件:
% This is c70hei.fd for CJK package.
% created by Edward G.J. Lee
% modify by Zhangxinjian
\ProvidesFile{c70hei.fd}
\DeclareFontFamily{C70}{hei}{\hyphenchar \font\m@ne}
\DeclareFontShape{C70}{hei}{m}{n}{ CJK * hei}{}
\DeclareFontShape{C70}{hei}{bx}{n}{ CJKb * hei}{\CJKbold}
\endinput
好的,相关文件都已生成,开始复制字体使其生效。
执行下面的命令,在你的主目录下生成隐藏的个人Tex配置,如果你哪天不需要了,也可以删除:
mkdir -p ~/.texmf-var/fonts/map/dvips/CJK
mkdir -p ~/.texmf-var/tex/latex/CJK/UTF8
mkdir -p ~/.texmf-var/fonts/tfm/CJK/song
mkdir -p ~/.texmf-var/fonts/type1/CJK/song
++++++++++++++++我是华丽的分割线++++++++++++++++
mkdir -p ~/.texmf-var/fonts/tfm/CJK/hei
mkdir -p ~/.texmf-var/fonts/type1/CJK/hei
建立完这层层叠叠的目录以后,就把刚刚生成的字体复制进去吧。
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
++++++++++++++++我是华丽的分割线++++++++++++++++
cp ~/font/hei.map ~/.texmf-var/fonts/map/dvips/CJK
cp ~/font/*.tfm ~/.texmf-var/fonts/tfm/CJK/hei
cp ~/font/*.pfb ~/.texmf-var/fonts/type1/CJK/hei
cp ~/font/c70hei.fd ~/.texmf-var/tex/latex/CJK/UTF8
复制完后就执行命令刷新缓存,让它生效:
sudo texhash
updmap --enable Map song.map
++++++++++++++++我是华丽的分割线++++++++++++++++
sudo texhash
updmap --enable Map hei.map
假如一切顺序的话,就测试一下我们安装的song和hei体是否能用吧。
在任意位置编辑这个文件,然后保存为test_song.tex,支持UTF-8格式:
\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{song}你好!这里是Ubuntu下的TexLive+CJK环境!\end{CJK}
\end{document}
++++++++++++++++我是华丽的分割线++++++++++++++++
在任意位置编辑这个文件,然后保存为test_hei.tex,支持UTF-8格式:
\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{hei }你好!这里是Ubuntu下的TexLive+CJK环境!\end{CJK}
\end{document}
执行分别生成pdf文档和用evince来查看文档:
pdflatex test_song.tex
evince test_song.pdf
++++++++++++++++我是华丽的分割线++++++++++++++++
pdflatex test_hei.tex
evince test_hei.pdf
芯建
2011-02-11