Skip to main content
  1. Posts/

全面总结如何在 LaTeX 中使用中文 (2020 最新版)

··222 words·2 mins·
Table of Contents

LaTeX 最初对中文的支持并不友好,只支持 ASCII 字符,后来才逐渐变得好起来,加入了对 Unicode 字符的支持。本文总结一下几种在 LaTeX 中使用中文的方法,以期能够帮助读者快速使用 LaTeX 对中文内容进行排版。

使用 CTeX
#

国内的 CTeX 开发组为了满足用户在 LaTeX 中排版中文的种种需求,已经开发了多款 LaTeX 文档类以及 LaTeX 宏包。使用这些库,你能够很轻松地在 LaTeX 使用中文。另外值得注意的是,CTeX 也提供所谓的 CTeX 套装,其实是打包了 MikTeX 和其他的一些工具,现在已经基本上被淘汰了,非常老旧,不建议安装使用。建议读者直接安装 MikTeX 或者 TeX Live 即可 (Mac 用户可以安装 MacTeX)。

使用 CTeX 排版中文,目前主要可以使用两种方式:

  • 使用 ctexart 文档类(英文:documentclass)
  • 使用 ctex 宏包(英文:package)

使用 ctexart
#

如果你的文章主要由中文构成,你可以考虑使用 CTeX 中的 ctexart 文档类,下面的例子展示了如何使用 ctexart 文档类来写中文文档:

\documentclass[UTF8]{ctexart}
\usepackage[T1]{fontenc}

\begin{document}
你好,这是一个测试文档。
\end{document}

使用 ctexart documentclass 时候,最好加上 \usepackage[T1]{fontenc},否则 某些符号显示不正确

使用 ctex 宏包
#

除了使用 ctexart 文档类,你可以可以选择使用 ctex 宏包,一个简单例子如下:

\documentclass{article}
\usepackage[UTF8]{ctex}
\begin{document}
你好,这是一个测试文档。
\end{document}

使用以上代码的 LaTeX 源文件可以使用 latexpdflatexxelatex 或者 lualatex 命令来编译生成 PDF 文件。CTeX 开发者推荐使用 xelatex 命令编译源文件。

使用 xeCJK
#

如果你仅仅需要在文档中使用有限的一些中文字符,你可以使用 xeCJK 宏包,然后使用 xelatex 命令编译源文件。一个简单可运行的例子如下:

点击查看代码
% 该文件使用 xelatex 命令可以编译通过
\documentclass[12pt, a4paper]{article}
\usepackage{fontspec}
\usepackage[slantfont, boldfont]{xeCJK}

% 设置英文字体
\setmainfont{Microsoft YaHei}
\setsansfont{Comic Sans MS}
\setmonofont{Courier New}

% 设置中文字体
\setCJKmainfont{Microsoft YaHei}
\setCJKmonofont{Source Code Pro}
\setCJKsansfont{YouYuan}

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

\title{测试}
\author{}
\date{2016年6月6日}
\begin{document}
\maketitle
\begin{center}
满纸荒唐言\\
一把辛酸泪\\
都云作者痴\\
谁解其中味\\
\end{center}
\begin{verse}
\texttt{Stray birds of summer come to my window to sing and fly away}. \\
\textsf{And yellow leaves of autumn, which have no songs}, \\
\textrm{flutter and fall there with a sign}.\\
\hfill \emph{RabindranathTagore}
\end{verse}
\begin{verse}
\texttt{夏天的飞鸟}\textsf{飞到我的窗前唱歌}\textrm{又飞去了}\\
秋天的黄叶,它们没有什么可唱,只叹息一声,飞落在那里。\\
\hfill \emph{罗宾德拉纳特·泰戈尔}
\end{verse}
\end{document}

对于中文来说,\setCJKmainfont{} 命令用来设置正文使用的中文字体,同时也是 \textrm{} 命令使用的字体。\setCJKmonofont{} 用来设置 \texttt{} 命令中的中文使用的字体。\setCJKsansfont{} 用来设置 \textsf{} 命令中的中文使用的字体。

那么问题来了,如何找到可用的中文字体呢?如果你已经安装了 TeX Live,那么很容易找到中文字体。在系统的命令行,使用下面的命令:

fc-list :lang=zh

这个命令会列出系统中所有支持中文的字体,例如,在我的系统上部分输出如下:

你可选择自己喜欢的字体,或者可以实验不同字体的输出效果来选择合适的字体。

以上使用 xeCJK 的例子,综合参考了多个博文,但是我去掉了几个使用的宏包,例如xunicodexltxtra,因为 这些宏包已经过时了

参考资料
#

Related

纯文本做笔记 --- 使用 Pandoc 把 Markdown 转为 PDF 文件
··998 words·5 mins
Nifty LaTeX Techniques -- Series 1
··299 words·2 mins
How to Use Chinese with LaTeX
··447 words·3 mins