本文在署名-非商业性使用-相同方式共享 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 的资料真的很多, 只要你愿意动手.
处理中文英文间距有个包的,zhspacing
这个我也用过的, 这个包的开发者说他不经常更新, 推荐大家用 xeCJK ..
我fedora的,不知源里的新不。
想问一个:怎么改emacs里C-c C-f的运行命令?这么用要从latex改成xelatex。
好久没看这个了, 但我的配置里应该修改过这个, 下篇日志就写写清楚这个, 稍等几天吧 🙂
你这里说的 C-c C-f 是哪里的绑定?
当然是latex模式默认的。C-c C-f不是Tex File么。你C-x C-f一个.tex文件再按一遍就知道了。
当然是latex模式默认的。C-c C-f不是Tex File么。你C-x C-f一个.tex文件再按一遍就知道了。
[…] 它的中文字体配置可以参见这篇日志. 如果你使用 texlive. 你可以首先试试编译下面的代码来检验你的 listings […]
[…] Linux 里安装字体的方法见这篇关于 XeLaTeX 的日志. […]
[…] 详细的使用xelatex可以参考aifreedom的博文。 […]