xcp.py 的一个简单例子

有朋友问到 xcp.py 究竟怎么用,是我不对,说了半天连个例子都没举出来,光看两句介绍当然无法理解。我自己记性也不好,怕以后忘了,现在赶紧写下来:

\documentclass{article}

\usepackage{fontspec}

% 定义英文字体,更换为你希望使用的
\setromanfont{Minion Pro}

% 定义中文字体,可将 SimSun 更换为你希望使用的字体
\newfontinstance{\zhfont}{SimSun}
\newcommand{\zh}[1]{{\zhfont #1}}

% 设置中文断行,必备
\XeTeXlinebreaklocale "zh" 
\XeTeXlinebreakskip = 0pt plus 1pt 

\begin{document}

TeX 提供了一套功能强大并且十分灵活的排版语言,它多达 900 
多条指令,并且 TeX 有宏功能,用户可以不断地定义自己适用的
新命令来扩展 TeX 系统的功能。许多人利用 TeX 提供的宏定义
功能对 TeX 进行了二次开发,其中比较著名的有美国数学学会推
荐的非常适合于数学家使用的 AMS-TeX 以及适合于一般文章、报
告、书籍的 LaTeX 系统。

\end{document}

将此文件存为 foo.tex,对它

python xcp.py foo.tex > foo.out.tex
xelatex foo.out.tex
mv foo.out.pdf foo.pdf

就可以得到你需要的 PDF 啦。如果你有兴趣,还可以看看 foo.out.tex 是什么样子的:

\documentclass{article}

\usepackage{fontspec}

% 定义英文字体,更换为你希望使用的
\setromanfont{Minion Pro}

% 定义中文字体,可将 SimSun 更换为你希望使用的字体
\newfontinstance{\zhfont}{SimSun}
\newcommand{\zh}[1]{{\zhfont #1}}

% 设置中文断行,必备
\XeTeXlinebreaklocale "zh" 
\XeTeXlinebreakskip = 0pt plus 1pt 

\begin{document}

TeX \zh{提供了一套功能强大并且十分灵活的排版语言,它多达} 900 
\zh{多条指令,并且} TeX \zh{有宏功能,用户可以不断地定义自己适用的%
新命令来扩展} TeX \zh{系统的功能。许多人利用} TeX \zh{提供的宏定义%
功能对} TeX \zh{进行了二次开发,其中比较著名的有美国数学学会推%
荐的非常适合于数学家使用的} AMS-TeX \zh{以及适合于一般文章、报%
告、书籍的} LaTeX \zh{系统。}

\end{document}

可见导言区都没有修改,只是对正文区进行了预处理。

我们可以打开 PDF 看看,效果如图:

PDF produced

可见中文使用了宋体,英文使用了 Minion Pro,正是我们需要的效果。

Author: jjgod

A software engineer from China, working on text rendering for a fruit company. Interested in typography and science fiction.

Leave a Reply

Your email address will not be published. Required fields are marked *