LaTeX 编译中文文档
介绍
LaTeX 原生不支持中文。为了添加中文的功能,我们需要引入宏包。XeLaTeX 原生支持中文。不过由于默认使用的字体是英文字体,我们需要设置中文字体之后才能用。不过由于一些原因,在使用 LaTeX 书写中文文档的时候最好还是使用 XeLaTeX 引擎搭配 ctex 文档类或者 ctex 宏包。
- 其中
CJK是最古老的,其对中文字体的支持比较麻烦,不推荐使用。 xeCJK以及luatexja宏包在CJK基础上封装了对汉字排版细节的处理功能。ctex宏包和文档类进一步封装了CJK、xeCJK、luatexja等宏包,使得用户在排版中文时不再考虑排版引擎等细节。
所以目前来说书写中文 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 系统下的字体,分为 macnew 和 macold 两种 |
不支持 |
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 编译中文文档的更多相关文章
- [问题解决]LaTex 进行中文文档操作
第一步,在\documentclass后输入 \usepackage{fontspec, xunicode, xltxtra} \usepackage{xeCJK}%中文字体 \setCJKmainf ...
- Phoenix综述(史上最全Phoenix中文文档)
个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/users/6cb45a00b49c/latest_articles 网上关于P ...
- ReactNative官方中文文档0.21
整理了一份ReactNative0.21中文文档,提供给需要的reactnative爱好者.ReactNative0.21中文文档.chm 百度盘下载:ReactNative0.21中文文档 来源: ...
- Spring中文文档
前一段时间翻译了Jetty的一部分文档,感觉对阅读英文没有大的提高(*^-^*),毕竟Jetty的受众面还是比较小的,而且翻译过程中发现Jetty的文档写的不是很好,所以呢翻译的兴趣慢慢就不大了,只能 ...
- ORCHARD中文文档(翻译)
众所周知,Orchard是.net领域最好的开源CMS之一,他使用了微软最先进的技术,有一群先进理念的支持者,但是,所有的事情在国内总得加个但是,Orchard也不例外,中文资料相对比较少,官网提供的 ...
- 【Chromium中文文档】Profile架构(看看谷歌家的重构)
进程模型 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Profile_ ...
- npm的package.json字段含义中文文档
简介 本文档有所有package.json中必要的配置.它必须是真正的json,而不是js对象. 本文档中描述的很多行为都受npm-config(7)的影响. 默认值 npm会根据包内容设置一些默认值 ...
- Apache Storm 1.1.0 中文文档 | ApacheCN
前言 Apache Storm 是一个免费的,开源的,分布式的实时计算系统. 官方文档: http://storm.apache.org 中文文档: http://storm.apachecn.org ...
- 【scikit-learn 0.19 中文文档 】安装 scikit-learn | ApacheCN
中文文档: http://sklearn.apachecn.org/cn/0.19.0/tutorial/basic/tutorial.html 英文文档: http://sklearn.apache ...
- Keras官方中文文档:Keras安装和配置指南(Windows)
这里需要说明一下,笔者不建议在Windows环境下进行深度学习的研究,一方面是因为Windows所对应的框架搭建的依赖过多,社区设定不完全:另一方面,Linux系统下对显卡支持.内存释放以及存储空间调 ...
随机推荐
- uniapp+thinkphp5实现微信支付(JSAPI支付)
前言 统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口.下面介绍的是其中JSAPI的支付实现流程与uniapp唤起微信支 ...
- P6626 题解
有一个很暴力的解法,就是以询问点为根 DFS. 考虑优化,我们考虑优化换根. 当根节点从父亲移动到它的某个孩子时,孩子的子树内所有点深度减 \(1\) 其余点深度加 \(1\). 同理,当根节点从某个 ...
- Mybatis 中 foreach 的四种用法
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separator,close. ...
- mac idea代码颜色修改、主题
下载样式包 下载样式 网址一:http://www.riaway.com/ 网址二:http://www.themesmap.com/theme.html?t=down 我使用的这几款 链接: htt ...
- Java异步判断线程池所有任务是否执行完成的方法
1.使用ExecutorService和CountDownLatch的方法示例 在Java中,当我们使用线程池(如ExecutorService)来执行异步任务时,常常需要知道所有任务是否都已经完成. ...
- Vue 基于VSCode结合Vetur+ESlint+Prettier统一Vue代码风格
基于VSCode结合Vetur+ESlint+Prettier统一Vue代码风格 插件安装 安装Vetur,ESlint, Prettier - Code formatter插件 安装方法(安装ESl ...
- C# 网络编程:.NET 开发者的核心技能
前言 数字化时代,网络编程已成为软件开发中不可或缺的一环,尤其对于 .NET 开发者而言,掌握 C# 中的网络编程技巧是迈向更高层次的必经之路.无论是构建高性能的 Web 应用,还是实现复杂的分布式系 ...
- springboot简单正确的使用构造函数注入
一个一个写构造函数太麻烦了,而且代码会显得非常多,这里我们可以采用lombok快捷注入 但是我们并不是所有的成员变量都需要进行注入,所以使用 @RequiredArgsConstrucotr 需要构造 ...
- scratch打乒乓球源码免费下载
点击下载
- 【Java】File 文件类
File 文件类 File类的一个对象,代表了一个文件和一个文件目录/文件夹 File类所属在java.io 的包下 构造器部分 - 以parent为父文件,child为子路径创建File对象,可以理 ...