TeX Live 2008 安装 & 配置中文支持 (下)

本文在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com

居然拖了两个多月都没把这篇文章写完, 但十月份之前总算交出了它的下半篇.

上次说到把 XeLaTeX 安装好了. 但默认的设置对中英文混排支持还不够好, 不能对中文和英文分别设置字体, 也不能很好地处理中文和英文之间的空白距离. 我们可以安装孙文昌老师开发的 xeCJK 宏包来解决这个问题.

xeCJK 的宏包可以在这里下载到. 这个不是最新版的 xeCJK, 因为最新版的 xeCJK 需要 xetex 0.9995.0 之后的版本(TeX Live 2009 或 MiKTeX 2.8). 而且新版的 xeCJK 已经被收入 ctex-kit 项目, 将随 TeX Live 2009 一起分发. 就是说, 等到 TeX Live 2009 Release 的时候, 它对中文的支持会比现在好很多.

把刚刚下载到的压缩包解压到 ~/.texlive2008/texmf/tex/xelatex/, 然后用mktexlsr 更新. (这里我不是很了解, 只是照葫芦画瓢, 没自己看过文档, 有什么问题还请诸位老师指正)

unzip xecjk-2_2_15.zip -d ~/.texlive2008/texmf/tex/xelatex/
cd ~/.texlive2008/texmf
mktexlsr .

在刚才下载的压缩包里的 doc 文件夹里有 xeCJK 的完整文档, 我这里给出一个我使用的 preamble 模板.

%# -*- coding: utf-8 -*-
\documentclass[a4paper]{article}

\usepackage[slantfont, boldfont, CJKtextspaces,
CJKmathspaces]{xeCJK} % 允许斜体和粗体
\setCJKmainfont[BoldFont={Adobe Heiti Std}, ItalicFont={Adobe Kaiti
  Std}]{Adobe Song Std} % 设置缺省中文字体
\setCJKmonofont{Adobe Fangsong Std} % 设置等宽字体

\setmainfont[Mapping=tex-text]{Liberation
  Serif} % 英文衬线字体
\setsansfont{Liberation Sans} % 英文无衬线字体
\setmonofont{Bitstream Vera Sans Mono} % 英文等宽字体
\punctstyle{kaiming} % 开明式标点格式
  
\usepackage{indentfirst} % 首段缩进
\begin{document}
  
{默认字体}   {\bfseries 粗体效果}   {\itshape 斜体效果}

这是Ai.Freedom的Blog的第101篇日志。

居然拖了两个多月都没把这篇文章写完,但十月份之前总算交出了它的下半篇。

上次说到把 XeLaTeX 安装好了。但默认的设置对中英文混排支持还不够好,不能
对中文和英文分别设置字体,也不能很好地处理中文和英文之间的空白距离。我
们可以安装孙文昌老师开发的 xeCJK 宏包来解决这个问题。

\end{document}

但这里给出的代码你很可能还无法编译, 因为你没有安装 Adobe 的字体. 这里用到的四个字体可以在这里下载到. 其中 Adobe Song Std 和 Adobe Heiti Std 是随 Adobe Reader 一起分发的, 根据 Lisence 可以免费使用, 关于另外两个字体的版权我还不是很清楚.

把它们下载回来了之后解压到 ~/.fonts 目录中. 然后执行

sudo fc-cache -fv

更新字体缓存. 好了, 把刚才的代码保存到 test.tex 后用

xelatex test.tex

编译就可以得到 test.pdf 了.

在下载的 xeCJK 的压缩包里, source 目录下有一个脚本用来为特定的字体生成标点符号. 按照 README 里的提示, 将 xecjksetpunct-main.tex 里用于 Windows 平台的部分注释掉, 把 Linux 里用到的语句的注释去掉, 然后把下面的字体设置成自己用的字体, 保存. 我们这里用的是 TeX Live, 所以执行

xelatex --shell-escape xecjksetpunct-main

然后把生成的 xeCJKpunct.spa 文件移动到 .texlive2008/texmf-var/tex/xelatex/xecjk/tex/xelatex/xecjk 目录下, 覆盖默认的 xeCJKpunct.spa 文件. 最后执行

texhash .

好了, 我们的配置总算是告一段落了. 关于 xeCJK 的更多详细的设置选项, 请查询它的文档. 学习 LaTeX 文档的排版, 有这样一本 “The not so Short Introduction to LaTeX“, 这个链接是中文版的, 还有 CTeX 论坛的版主 milksea 推荐的这个列表. 学习 LaTeX 的资料真的很多, 只要你愿意动手.

0 0 votes
Article Rating
Subscribe
Notify of
guest
10 Comments
Inline Feedbacks
View all comments
yaker
14 years ago

处理中文英文间距有个包的,zhspacing

XeCycle
14 years ago

我fedora的,不知源里的新不。
想问一个:怎么改emacs里C-c C-f的运行命令?这么用要从latex改成xelatex。

XeCycle
14 years ago
Reply to  aifreedom

当然是latex模式默认的。C-c C-f不是Tex File么。你C-x C-f一个.tex文件再按一遍就知道了。

Sharron Clemons
13 years ago

当然是latex模式默认的。C-c C-f不是Tex File么。你C-x C-f一个.tex文件再按一遍就知道了。

trackback

[…] 它的中文字体配置可以参见这篇日志. 如果你使用 texlive. 你可以首先试试编译下面的代码来检验你的 listings […]

trackback

[…] Linux 里安装字体的方法见这篇关于 XeLaTeX 的日志. […]

trackback

[…] 详细的使用xelatex可以参考aifreedom的博文。 […]

10
0
Would love your thoughts, please comment.x
()
x