活着再见3有声版百度云:真正的Linux下的中文LATEX解决方案: CTeX + xeCJK + XeTEX

来源:百度文库 编辑:偶看新闻 时间:2024/05/06 13:04:46

真正的Linux下的中文LATEX解决方案: CTeX + xeCJK + XeTEX

lins05 
mysnowls@163.com

August 6, 2011

摘要

Linux下用LaTeX很方便,但是要解决中文的问题就不怎么方便,因 为TeX的字体系统很难自己解决。

Windows下可以使用配置好的CTeX套装1 , 现在本文中就简介如何在Linux下配置CTeX,以方便写中文文档。

目录

1 老的方法 
1.1 缺乏可用的字体 
1.2 默认的格式不符合中文排版要求 
1.3 不能满足中文的其他要求 
2 CTeX和xeCJK 
2.1 字体 
2.2 中文版式 
2.3 CTeX和xeCJK的关系 
3 简单的例子 
4 注意事项 
4.1 如何安装 
4.2 推荐字体 
4.3 其他设置

1 老的方法

LATEX的CJK宏包,经过实践证明,确实是一个可行且实用的中文LATEX解决方 案。但是它有几点不足:

1.1 缺乏可用的字体

LATEX下的中文字体很少,Linux下的字体更少。因为TEX的字体系统比较复杂,使 得用户想自己生成字体非难困难,门槛很高,并且管理不方便。

1.2 默认的格式不符合中文排版要求

CJK宏包仅仅解决了中文字体的问题,但是它默认的格式是英文的排版方式(CJK的 作者是德国人)。

因此,一般用户都需要自己设置种种版式:首先缩进,行距和段距。中英文混排 时的字距,等等。

1.3 不能满足中文的其他要求

比如生成目录时,中文文档应该叫“目录”,而不是”CONTENTS”。类似的还有“ 附录”、“表格索引”等等。

CTeX宏包和xeCJK宏包的组合相当完美的解决了这些问题。

2 CTeX和xeCJK

2.1 字体

xeCJK宏包所使用的XeTeX引擎,是从MacOS移植到Linux和Windows上的。它最大 的特点是从底层就具备对unicode的支持,以及可以直接调用系统中已有的字 

这意味着将LaTeX用户从和字体相关的一大推问题中解决出来了。只要系统中安装 了中文字体,那么使用XeTeX就能使用这些字体。

xeCJK是必须使用XeTeX引擎的,这也是为什么标题叫做CTeX + xeCJK + XeTeX的原因。

2.2 中文版式

CTeX的开发者们是值得所有的LaTeX用户感激的。使用CTeX的各个documentclass, 我们就无须再手动地设置版式,因为CTeX的默认设置就是最适合中文文档的:行首 缩进两个汉字;行距和段距的适当调整,中英文的混排时的字距,都是适合中文版式 的。

此外,CTeX将其他应该为中文文档考虑的地方大都包括了进去:”CONTENTS”改为 了“目录”,”Index”改为了”索引“,等等。

2.3 CTeX和xeCJK的关系

二者都是宏包,但是,CTeX是一个上层的中文LaTeX宏包。它的下层是可选的,可 以支持xeCJK、CJK,甚至更老的CCT宏包。对于不同的下层宏包它进行不同的设 置。xeCJK完全可以脱离CTeX使用,但是这样你虽然不用担心字体,同样也不能享 受到CTeX的中文版式。

3 简单的例子

例子总是最直观的。我们以一个最简单的例子来说明。

%---------------------------------------  
\documentclass[a4paper]{article}  
\usepackage[adobefonts]{ctex}  
\setCJKmainfont{SimSun}  
%---------------------------------------  
\author{小明}  
\title{记一次春游}  
\date{\today}  
%---------------------------------------  
\begin{document}  
\pagestyle{plain}  
\maketitle  
%---------------------------------------  

昨天,老师带我们三年级二班的小朋友们全体去郊外春游。我非常高兴。 
们在郊外看到了\textbf{老虎、狮子和熊猫}。 
长大了要\textsl{保护动物}。  

天,老师要教我们学习\LaTeX 了,大家都非常激动。  
\end{document}  


Figure 1: 小明的日记


4 注意事项

4.1 如何安装

Linux下安装这三者的最方便的方法是安装texlive系列。texlive是一整套TEX工具和引 擎的集合,包括了LaTeX等种种工具和一些相关的程序、宏包,不同的发行版里会把 整个texlive分为不同的软件包,诸如texlive-xetex、texlive-xecjk、texlive-ctex。用包 管理软件进行搜索,不难找到应该安装的软件包。

当然另一种方式是使用texlive的安装DVD或者在线安装 工具。笔者使用的slackware发行版里没有提供texlive的软件 包2 ,因此是从中科 大的CTAN镜像3 下 载的texlive2011DVD进行安装的。具体的安装过程可以读光盘里的README文 件。

由于texlive是一个TeX软件的大集合。因此它有一个专门的包管理程序:tlmgr。 这个程序类似debian下的apt-get,提供了搜索、查询、安装、卸载、升级各个tex软件 包的功能。在DVD安装版中有这个软件,一般的发行版应该不会提供这个程 序4 。

4.2 推荐字体

一般使用的字体有三套。

一是在Linux下常用的文泉驿字体,但它不适合写正式的文档。

二是在网上下载Adobe的四套字体,分别是宋体、仿宋、黑体和楷体。

三是可以拷贝Window下的字体。但是这涉及到版权问题。如果确实想用,可以在 百度上搜索“方正楷体”、“方正宋体”,等等。

使用字体的方法如下:

先拷贝字体到/usr/share/fonts/下的相应的子目录中,然后运行"fc-cache"更 新系统的字体缓存。

在xeCJK中,设置主字体是使用\setCJKmainfont命令(因为我们的CTeX会调 用xeCJK,因此可以使用xeCJK中的命令)。

具体的字体名字可以用"fc-list :zh-cn"命令来查看。

4.3 其他设置

1 如果你的系统中没有CTeX要求的全套六种字 体5 , 那么,一定要在\usepackage{ctex}的选项中加上adobefonts这一条。

这样一来CTeX会用相应的Adobe字体去代替它要求的六套字体。不然有时会出现 找不到字体的现象,尤其是使用特殊字体的时候,比如在verbtim环境中。

2 一般情况下,中文文档中是不使用斜体的。因此在CTeX调用xeCJK时,默认是 不使用斜体的,所以你就算在文档中使用\textsl{},最终也不会产生任何斜体效 果。

如果你真的要用,就要修 改/ctex/engine/ctex-xecjk-engine.def6 中 的一行:

\RequirePackage[BoldFont,normalindentfirst]{xeCJK}

改为:

\RequirePackage[BoldFont,slantfont,normalindentfirst]{xeCJK}

3 使用CTeX的两种方法

第一种是直接使用CTeX的文档类。

\documentclass[adobefonts]{ctexart}

第二种是使用CTeX包。

\usepackage[adobefonts]{ctex}

二者的区别是:当通过\usepackage来使用CTeX包时,产生的仍然 是”CONTENTS”、”INDEX”,而不是“目录”、“索引”。

当然,如果要用其他类作为文档类,就必须使用第二种方式了,最典型就是 用beamer类做幻灯片的时候了。

这时,如果要使用中文的“目录”、“摘要”等样式,可以使用这两条命 令:

\renewcommand*\contentsname{目录}  
\renewcommand*\abstractname{摘要}

还有一个更折腾的方法。修改一下ctex/ctex.sty文件,在其中添加一 句

\input{ctex-caption.def}

这样就一直保持中文的名称了。