Latex中使用中文
编码
使用任何一种语言,Latex都必须处理两个基本问题:
- 将输入字节映射为所使用语言的字符
- 将字符映射为所使用字体的字形
使用xelatex可以帮助我们处理这些问题。对于xelatex,输入文件默认为UTF-8格式,引擎自动将字符映射为TrueType或OpenType字体的字形。当然,我们必须保证所使用的字体支持所用语言。
当是使用Latex或pdflatex时,必须告诉Latex输入文件的编码格式。一般来说,UTF-8是最好的输入编码方式,可以使用下面的方式设置
\usepackage[utf8]{inputenc}
我们还要指定使用什么样的输出编码方式将字符映射为字体中的字形,对于大部分啦拉丁语系的语言,可使用T1输出编码。使用如下方式设置
\usepackage[T1]{fontenc}
但对于其他语言,必须指定特定的编码方式。xeCJK包提供了很好的中文支持,
\usepackage{xeCJK}
国际化的语言支持
当前有两个可以提供国际化的语言支持,即Polyglossia和Babel。Polyglossia主要和XeTex一起使用,Babel和pdfTex、LuaTex一起使用。这两个包完成下列任务:
- 载入语言特定的连词符号模式和其他排版约定
- 设置当前字体的脚本(script)和语言标签(language tags)。
- 不同语言的字体间切换
- 根据语言的约定格式化日期
- 根据语言特定的数字系统,格式化数字
Polyglossia
当使用XeLatex 和 LuaLatex时,polyglossia提供了国际化支持。使用这个包,可以指定使用的语言和语言特定的选项。例如,文档中包含了美国英语和法语,可以使用下面的设定
\usepackage{polyglossia}
\setdefaultlanguage[variant=american]{english}
\setotherlanguage{french}
Babel
当使用latex或pdflatex时,babel包可提供国际化支持。这个包也可以用于LuaLatex和XeLaTex。可以在包参数中指定语言。
\usepackage[language]{babel}
这个包应该紧跟在\documentclass
,使后面载入的包能够知道你所所以用的语言。加载babel包时可以指定多种语言
\usepackage[languageA, languageB]{babel}
参数列表中的最后一种语言是当前激活的语言。可以使用命令改变当前激活语言
\selectlanguage{languageA}
当文档中包含多种语言时,可以使用babel提供的命令方便地在不同语言间切换。babel提供了定义语言名字的方式
\babeltags{de = german}
文档可以写为
text \textde{German text} text
\begin{de}
German text
\end{de}
使用xeCJK
xeCJK主要功能包括:
- 分别设置CJK和英文字体
- 自动忽略中文文字间的空格而保留其他空格,允许在非标点汉字和英文字母间断行
- 调整中英文间的空白
xeCJK包提供了许多选项,可以在调用宏包时直接设置,也可以使用\xeCJKsetup
设置这些选项。xeCJK内部使用fontspec宏包,在调用xeCJK宏包时,也可以使用fontspec宏包中的选项。
加载xeCJK包之后,只要设置CJK文字的字体,就可以使用中文了。例如,中文字体要使用SimSun(宋体)。这里,假设系统安装了需要的字体。
\usepackage{xeCJK}
\setCJKmainfont{SimSum}
使用字体
字体族(font families)有很多,如Times, Courier, Helvetica。它们一般可以分为三类:serif, sans serif 和 monospaced。在Latex中,分别用简写rm, sf, tt表示。
字体族通常包含不同的风格,如斜体(italic)或加粗(bold)。
\setmainfont{}
设置西文正文默认罗马类字体。在Word中,默认字体通常是”Times New Roman”。setsansfont{}
设置西文默认无衬线字体。一般出现在大标题等显眼的位置。这一部分常见的字体是Helvetica/Arial。\setmonofont{}
设置西文默认等宽字体,一般用于排版程序代码。常见的字体是Courier或者Courier New。
xeCJK中提供了相似的三个命令设置对应的中文字体:
\setCJKmainfont[BoldFont={}, ItalicFont={}]{}
设置中文正文罗马类字体。大部分中文文档使用宋体排版 ,实际上就是Simsun。Linux下可能用文鼎宋体代替。与西文不同的是,这里允许我们指定粗体和斜体使用何种字体代替。之所以有这个区别,是因为中文不使用粗体表示强调,也不使用斜体表示引文或书名号。可指定BoldFont 和 ItalicFont 为某种黑体,Windows 环境下用SimHei,Linux 下用文泉驿正黑避免版权问题。\setCJKsansfont{}
设置中文正文无衬线的CJK字体,影响\sffamily
和\textsf
的字体。可以设为宋体。setCKJmonofont{}
设置中文正文等宽族的CJK字体,影响\ttfamily
和\texttt
的字体。可以设为宋体。
CTex工具集
xeCJK包仅提供的中文字体。中文文档的排版习惯和英文文档不同。为了排版中文文档,使用CTex工具集是最方便的方法。CTex的使用方法可以参考其文档。
[1] https://en.wikibooks.org/wiki/LaTeX/Internationalization
[2] https://www.zhihu.com/question/20563044
Latex中使用中文相关推荐
- 解决 LaTeX 中的中文显示问题
解决 LaTeX 中的中文显示问题 前提条件:.tex源文件使用UTF8编码方式保存 在此前提下,有四种推荐方法 方法1 使用 ctex宏包 头部使用 \documentclass{article} ...
- LaTeX中的中文处理方法
LaTeX中的中文处理方法 在能够处理宽字节编码的xelatex出现之后,主要是用xelatex结合ctex宏包来处理中文. 以TexStudio举例. 打开设置. ①"构建"-& ...
- 怎样在LaTeX中使用中文
因为疫情在家中上课,作业提交都必须使用PDF.反正时间充裕,不如趁机回顾一下LaTeX的使用. 之前一直用的是Vimtex,但是感觉还是不太方便,于是改用了Texpad.Texpad的强大之处在于它支 ...
- Latex中处理中文
下面我就给出一个处理中文的基本样例. \documentclass[a4paper]{article} \usepackage{CJK} \begin{document} \begin{CJK*}{G ...
- Latex学习笔记——latex中的中文处理办法
latex中要使用中文排版首先要保证latex源文件的编码形式为UTF-8 其次还需要将构建命令设置为xelatex 然后有两种方法导入宏包: 第①种方法是直接将导言区引入的文档类改为\documen ...
- LaTeX中宋体中文无法加粗的情况
1 致谢 感谢LaTeX科技排版工作室的帮助 链接如下: http://www.latexstudio.net/ 2 问题描述 最近在用LaTeX写硕士论文 遇到一个奇怪的问题 那就是宋体的中文无法加 ...
- figure字体 latex_如何在 Mac 下的 LaTeX 中使用中文字体?
提供一个比较全的模板供参考,编译用xelatex: \documentclass[11pt,a4paper]{article} % \documentclass[11pt,a4paper]{repor ...
- Latex中如何使用中文?
文章目录 Latex中如何使用中文? 环境 解决方案 解决方案一 解决方案二 解决方案三 参考 Latex中如何使用中文? 环境 Mac Os High Sierra + Texstudio 解决方案 ...
- 0001.Latex中中文双引号和单引号的写法
如何在Latex或者Ctex中输入中文双引号or单引号? 在Latex中,查看Tab键上面的键,在英文状态下连续输入两个``,然后输入Enter键左边的单引号'',输入两次,也是英文状态下哦. 可以将 ...
最新文章
- C#基础知识整理:基础知识(10) 静态
- mysql查询当前库的实例名_oracle查询数据库名、实例名等
- 高颜值在线绘图平台ImageGP系列教程 - 功能介绍
- docker內安装TOPT
- Android嵌入式组态软件
- java 协同过滤算法_推荐系统中协同过滤算法实现分析
- 你真的了解行盒模型吗?
- 史上最全的程序员常用英语词汇 建议收藏!
- OpenCV精进之路(十八):工具——“全能扫描王“扫描软件
- 野火Linux内核,ebf_6ull_linux
- ASUS 論壇,有官方槍手,想要刪除抗議 Windows 7 的帖子,並合理化,並罵消費者白目
- 2021年天津仁爱学院专升本录取结果查询、最低分数线、录取通知书
- 大翻盘!超80亿美元Java侵权案落槌,谷歌胜诉!
- 如何打破校园网垄断现象?
- 队列的定义及其基本操作
- hackthebox(HTB) Ambassdor !
- Android 双usb 摄像头支持
- echart实现地图的逐级钻取
- 蘑菇街java,猎聘邀请蘑菇街觉知分享Java异步化与高性能网络应用
- 平平淡淡从从容容才是真?