介绍

LaTeX 原生不支持中文。为了添加中文的功能,我们需要引入宏包。XeLaTeX 原生支持中文。不过由于默认使用的字体是英文字体,我们需要设置中文字体之后才能用。不过由于一些原因,在使用 LaTeX 书写中文文档的时候最好还是使用 XeLaTeX 引擎搭配 ctex 文档类或者 ctex 宏包。

支持中文字体的宏包有 CJKxeCJKctex

  • 其中 CJK 是最古老的,其对中文字体的支持比较麻烦,不推荐使用。
  • xeCJK 以及 luatexja 宏包在 CJK 基础上封装了对汉字排版细节的处理功能。
  • ctex 宏包和文档类进一步封装了 CJKxeCJKluatexja 等宏包,使得用户在排版中文时不再考虑排版引擎等细节。

所以目前来说书写中文 LaTeX 文档的最优解决方案是使用 ctex 文档类或者 ctex 宏包。

使用 ctex 文档类

如果你要撰写一篇纯中文的文档,那么你可以直接使用 ctex 文档类:

\documentclass[fontset=founder]{ctexart}

使用 ctex 宏包或者 xeCJK 宏包

如果你需要使用特定的文档类而不能使用 ctex 文档类,但又要在文档中插入中文,那么你可以使用 ctex 宏包或者 xeCJK 宏包:

\usepackage[fontset=founder]{ctex}
\usepackage{xeCJK}

xeCJK 对中文的支持更朴素一点,也就是它除了支持你插入中文以外不会改变文档其他地方。而 ctex 则会将文档类中的一些英文环境也翻译成中文。相对来说更推荐使用 ctex

使用 xeCJK:

\documentclass{article}
\usepackage{fontspec} % 加载 fontspec 宏包
\usepackage{xeCJK} % 加载 xeCJK 宏包 \setmainfont{Times New Roman} % 设置英文字体
\setCJKmainfont{SimSun} % 设置中文字体 \begin{document}
这是中文文本。This is English text.
\end{document}

使用 ctex:

\documentclass{article}
\usepackage[fontset=founder]{ctex} \setmainfont{Times New Roman} % 设置英文字体
\setCJKmainfont{SimSun} % 设置中文字体 \begin{document}
这是中文文本。This is English text.
\end{document}

在 XeLaTeX 中直接使用中文

XeLaTeX 引擎原生支持 Unicode 字符,因此我们实际上可以直接使用中文书写 LaTeX 文档。不过前提是设置一下中文字体,因为虽然 XeLaTeX 引擎原生支持中文字符,但是其使用的默认字体是英文字体,不包括中文字符。

\documentclass{article}

\usepackage{fontspec} % 使用 fontspec 包配置字体
\setmainfont{SimSun} % 设置宋体为主要字体 \begin{document}
你好,\LaTeX
\end{document}

附录

ctex 预定义的中文字库:

字体选项 描述 支持pdfLATEX
adobe 使用 Adobe 公司的四款中文字体 不支持
fandol 使用 Fandol 中文字体 不支持
founder 使用方正公司的中文字体 支持
mac 使用 macOS 系统下的字体,分为 macnewmacold 两种 不支持
macnew 使用 El Capitan 或之后的多字重华文字体和苹方字体 支持
macold 使用 Yosemite 或之前的华文字体 支持
ubuntu 使用 Ubuntu 系统下的思源宋体、思源黑体和文鼎楷体 不支持
windows 使用 Windows 系统下的中易字体和微软雅黑字体 特定条件下支持(见描述)

ctex 中定义的字体命令:

  • \songti:宋体,CJK 等价命令 \CJKfamily{zhsong}
  • \heiti:黑体,CJK 等价命令 \CJKfamily{zhhei}
  • \fangsong:仿宋,CJK 等价命令\CJKfamily{zhfs}
  • \kaishu:楷书,CJK 等价命令 \CJKfamily{zhkai}

参考:

LaTeX 编译中文文档的更多相关文章

  1. [问题解决]LaTex 进行中文文档操作

    第一步,在\documentclass后输入 \usepackage{fontspec, xunicode, xltxtra} \usepackage{xeCJK}%中文字体 \setCJKmainf ...

  2. Phoenix综述(史上最全Phoenix中文文档)

    个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/users/6cb45a00b49c/latest_articles 网上关于P ...

  3. ReactNative官方中文文档0.21

    整理了一份ReactNative0.21中文文档,提供给需要的reactnative爱好者.ReactNative0.21中文文档.chm  百度盘下载:ReactNative0.21中文文档 来源: ...

  4. Spring中文文档

    前一段时间翻译了Jetty的一部分文档,感觉对阅读英文没有大的提高(*^-^*),毕竟Jetty的受众面还是比较小的,而且翻译过程中发现Jetty的文档写的不是很好,所以呢翻译的兴趣慢慢就不大了,只能 ...

  5. ORCHARD中文文档(翻译)

    众所周知,Orchard是.net领域最好的开源CMS之一,他使用了微软最先进的技术,有一群先进理念的支持者,但是,所有的事情在国内总得加个但是,Orchard也不例外,中文资料相对比较少,官网提供的 ...

  6. 【Chromium中文文档】Profile架构(看看谷歌家的重构)

    进程模型 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Profile_ ...

  7. npm的package.json字段含义中文文档

    简介 本文档有所有package.json中必要的配置.它必须是真正的json,而不是js对象. 本文档中描述的很多行为都受npm-config(7)的影响. 默认值 npm会根据包内容设置一些默认值 ...

  8. Apache Storm 1.1.0 中文文档 | ApacheCN

    前言 Apache Storm 是一个免费的,开源的,分布式的实时计算系统. 官方文档: http://storm.apache.org 中文文档: http://storm.apachecn.org ...

  9. 【scikit-learn 0.19 中文文档 】安装 scikit-learn | ApacheCN

    中文文档: http://sklearn.apachecn.org/cn/0.19.0/tutorial/basic/tutorial.html 英文文档: http://sklearn.apache ...

  10. Keras官方中文文档:Keras安装和配置指南(Windows)

    这里需要说明一下,笔者不建议在Windows环境下进行深度学习的研究,一方面是因为Windows所对应的框架搭建的依赖过多,社区设定不完全:另一方面,Linux系统下对显卡支持.内存释放以及存储空间调 ...

随机推荐

  1. 搭建hadoop集群关键步骤--以三节点为例

    搭建三节点的hadoop集群: 要求: 主机名称 备注 IP地址 功能 hadoop01 Master 主节点 192.168.211.134 NameNode.DataNode.ResourceMa ...

  2. 【Hadoop报错】The directory item limit is exceeded: limit=1048576 items=1048576

    问题描述: 调度系统执行hive任务失败,一直执行失败,报错如下: java.io.IOException: java.net.ConnectException: Call From #HostNam ...

  3. SQLServer统计采集数据库相关信息

    在MS Sql Server中可以能过以下的方法查询出磁盘空间的使用情况及各数据库数据文件及日志文件的大小及使用利用率: 1.查询各个磁盘分区的剩余空间:Exec master.dbo.xp_fixe ...

  4. QT 使用相对路径读取.txt文件

    QT可以使用QFile来读取.txt文件,具体代码实现如下: 1 #include <QCoreApplication> 2 #include <QString> 3 #inc ...

  5. Java中的栈、堆和常量池

    Java程序是运行在JVM(Java虚拟机)上的,因此Java的内存分配是在JVM中进行的,JVM是内存分配的基础和前提. Java程序的运行会涉及以下的内存区域: 寄存器:JVM内部虚拟寄存器,存取 ...

  6. 2024已过半,还没试过在vue3中使用ioc容器吗?

    Vue3 已经非常强大和灵活了,为什么还要引入 IOC 容器呢?IOC 容器离不开 Class,那么我们就从 Class 谈起 Class的应用场景 一提起 Class,大家一定会想到这是 Vue 官 ...

  7. PLSQL 编码设置

    1.先查询plsql编码格式 select userenv('language')from dual 2.新建用户变量,变量名=NLS_LANG,变量值,刚才sql查询的结果 保存后,重启plsql即 ...

  8. git将某个开发分支最近的提交合并成一个提交

    你可以使用 `git merge --squash` 命令将某个开发分支最近的提交合并成一个提交. 具体步骤如下: 1. 切换到你想要合并的分支上,比如 `develop` 分支: `git chec ...

  9. 靶机练习: y0usef

    靶机: y0usef 准备工作 靶机地址: https://download.vulnhub.com/y0usef/y0usef.ova MD5 校验:28c5d869b003be94b2d8ab4b ...

  10. Pandas库学习笔记(6) -- Pandas 基本方法

    Pandas 基本方法实例 到目前为止,我们了解了三个Pandas DataStructures以及如何创建它们.由于它在实时数据处理中的重要性,因此我们将主要关注DataFrame对象,并讨论其他一 ...