latex 对中文字体设置的一些解决
以下也可以看作是本文的心路历程:
动机:使用 TeX 编排文档虽不能像 Word 等所见即所得,但它可以满足你几乎任何版式要求,让你有更多时间专注于内容而不是格式。
手段:通过任何纯文本编辑器或者 TeX 编辑器,将你的内容按规定格式写入 .tex 文件。再根据排版引擎编译 .tex 文件,最终得到目标文档。
阻碍:直接使用 Xelatex 或其他引擎编译带中文的文件时,会出现乱码,这是因为 latex 默认的字体不支持中文,这时可以 1、把默认字体更改成支持中文的字体; 2、使用 CTex 文档类、ctex 宏包或 xeCJK 宏包使得 latex 支持中文输出。而设置中文字体可通过以下实现:
英文默认字体为:Computer Modern Roman [CMR],由Donald Knuth创建,但是不支持中文,需要设置成支持中文的字体 - {来自:Egg's Blog}。既然要应用于中文环境,排版格式等要求也应符合中文习惯,仅仅改变字体是不够的。
使用CTeX文档类\ctex宏包
此部分内容来自CTeX宏集手册
%在导言区使用以下代码,获得中文支持
\documentclass[utf8,a4paper,12pt] {ctexart}
%或者
\usepackage {ctex}
设置完成后,中文默认字体为 宋体,如需改变,可以使用表格中的命令对中文字体进行设置,windowsnew 的字库中包括以下字体:
| 字体 | 命令1 | 命令2 |
|---|---|---|
| 宋体 | \songti | \CJKfamily{zhsong} |
| 黑体 | \heiti | \CJKfamily{zhhei} |
| 仿宋 | \fangsong | \CJKfamily{zhfs} |
| 楷书 | \kaishu | \CJKfamily{zhkai} |
| 隶书 | \lishu | \CJKfamily{zhli} |
| 圆体 | \youyuan | \CJKfamily{zhyou} |
| 微软雅黑 | \yahei | \CJKfamily{zhyahei} |
注: \CJKfamily{family}:切换CJK字体族为 〈family〉
使用如下代码:
\documentclass[12pt,a4paper,utf8]{ctexart}
\begin{document}
\noindent 中文字体(默认宋体)\\
\fangsong 中文字体(仿宋) \songti 中文字体(宋体) \lishu 中文字体(隶书) \heiti 中文字体(黑体)\\
\CJKfamily{zhkai} 中文字体(楷书) \CJKfamily{zhyou} 中文字体(幼圆) \CJKfamily{zhyahei} 中文字体(微软雅黑)\\
\end{document}
得到:

-------------- 人为分界线 ----------------
不建议使用 \textrm{},\textsf{},\texttt{} 来改变中文的字体,**中文字体的选择与西文字体是分离的**。
以下内容只是我无聊的实验而已,目前还解释不清:
\textrm{} 相当于默认字体,即中文宋体,英文罗马
\textit{} 默认中文楷书,若前面定义过下文中文字体,则为定义字体,英文斜体
\textsf{} 中文微软雅黑,英文无衬线体
\texttt{} 中文仿宋,英文等宽字体
注意 textsf 会改变中文标点符号
但常规的字体加粗如 \textbf{} 可以互用
使用xeCJK宏包
在始终的博客里,一份其实很短的 LaTeX 入门文档中提到,大多数情况下不推荐使用xeCJK宏包
知乎有相关讨论 处理中文时应该用ctex宏包还是应该用xeCJK宏包?
打个比方说的话,ctex包若是一辆车,xeCJK就是个轮子。轮子是车子的重要零件,但我还是建议你开车,把装轮胎的事交给工程师。
----- 来自知乎用户
xeCJK是一个Xelatex宏包,前面使用CTeX文档类或者ctex宏包时,若通过Xelatex编译则会自动配置xeCJK宏包来排版字体,这一步骤已经封装好,且够用。(-车子轮胎- 的大意,若想实现某些骚操作,则可查阅xeCJK的使用)
xeCJK只提供了字体和标点控制等基本CJK语言支持。在这里,对xeCJK宏包的字体设置进行简单说明,引入xeCJK宏包只要在导言区使用:
\usepackage {xeCJK}
\setCJKmainfont {font name}
% 设置正文罗马族的CJK字体,影响\rmfamily和\textrm 的字体
\setCJKsansfont {font name}
% 设置正文无衬线族的CJK字体,影响\sffamily和\textsf 的字体
\setCJKmonofont {font name}
% 设置正文等宽族的CJK字体,影响\ttfamily 和 \texttt 的字体
windows下预装的中文字体有:
- Arial Unicode MS
- FangSong,仿宋
- KaiTi,楷体
- Microsoft YaHei,微软雅黑
- MingLiU,细明体
- NSimSun,新宋体
- PMingLiU,新细明体
- SimHei,黑体
- SimSun,宋体
只要将font name改为上述字体名称(英)即可

最后更新于 2020年4月20日 --- 最初发表于 2019年12月20日
原创作者:LitBro
关于作者:咕咕咕
本文链接: [https://www.cnblogs.com/LitBro/p/12074820.html]
版权声明:本文采用 BY-NC-SA协议,转载或引用请注明出处!
关于后续:学业不精,如有描述不当,还请见谅并非常感谢指出
latex 对中文字体设置的一些解决的更多相关文章
- Eclipse的中文字体设置
打开eclipse中文字体很小,简直难以辨认.在网上搜索发现这是由于Eclipse 用的字体是 Consolas,显示中文的时候默认太小了.解决方式有两种:一.把字体设置为Courier New 操 ...
- Ubuntu 13.10 中文字体设置
据我查到的资料,在默认设置下,Ubuntu 13.10 中文使用的是文泉驿正黑.我总觉得它的效果有些发虚,模糊,不满意. (貌似是Ubuntu从13.04开始取消了默认的微米黑,回退为之前的正黑.这我 ...
- Windows Latex 中日文字体设置例
中文字体例: \documentclass[CJK]{article} \usepackage{CJKutf8} \newcommand{\songti}{\CJKfamily{song}} % 宋体 ...
- Source Insight中文字体设置
Source Insight是一个面向项目开发的程序编辑器和代码阅读工具,它拥有内置的对C/C++, C#和Java等程序的分析,分析你的源代 码并在你工作的同时动态维护它自己的符号数据库,并自动为你 ...
- 关于latex编译中文不显示问题的解决方法。
我的编译环境是texlive2018 + texstudio 配置如图 默认编码格式为utf8 直接上代码 %\documentclass{article} %\usepackage{xeCJK} \ ...
- PHP的PDF扩展库TCPDF将中文字体设置为内嵌字体的方法
1. 下载要设置的字体,如名为simfang.ttf,放在./vendor/tecnickcom/tcpdf/tools目录中 2.在tools目录中按住shift,点击鼠标右键,点击“在此处打开命令 ...
- LateX的简单字体设置(颜色,居中,大小等)
\(\color{red}{Ⅰ.文本单行居中}\) $$\text{我是蒟蒻}$$ \[\text{我是蒟蒻} \] \(\color{Black}{Ⅱ.设置字体颜色}\) $$\color{Purp ...
- Latex 环境下“中文字体”的使用
Latex 环境下“中文字体”的使用 使用CTex自带编辑器WinEdt,在该环境下如何使用中文字体呢?作为一个菜鸟,折腾了好几天,最终基本解决了这个问题.现在整理下,分享给后来者. 对于使用中文字体 ...
- [Ubuntu]明明白白安装中文字体
Ubuntu 6.06 dapper对中文的支持应该说是一向不错的,包括现在默认安装就包含了scim输入法.然而,一般安装的ubuntu虽然能够显示.输入中文了,但总觉 得所显示的中文像歪瓜裂枣,很是 ...
随机推荐
- spring+cxf 开发webService(主要是记录遇到spring bean注入不进来的解决方法)
这里不介绍原理,只是记录自己spring+cxf的开发过程和遇到的问题 场景:第三方公司需要调用我们的业务系统,以xml报文的形式传递数据,之后我们解析报文存储到我们数据库生成业务单据: WebSer ...
- 浏览器中的 Event Loop
当我们执行 JS 代码的时候其实就是往执行栈中放入函数,那么遇到异步代码的时候该怎么办?其实当遇到异步的代码时,会被挂起并在需要执行的时候加入到 Task(有多种 Task) 队列中.一旦执行栈为空, ...
- HttpClient POST/SET方法
前言: 网络API接口:https://api.apiopen.top/searchMusic 此API接口返回类型为JSON格式类型 GET:从指定资源请求数据 POST:向指定资源提交要被处理的数 ...
- 制作属于自己的翻译软件(基于PyQt5+Python+实时翻译)
目录 制作属于自己的翻译软件(基于PyQt5+Python+实时翻译) 翻译软件上传到github上. 软件截图 主要的思想 界面方面 程序方面 制作属于自己的翻译软件(基于PyQt5+Python+ ...
- #华为云·寻找黑马程序员#【代码重构之路】使用Pattern的正确姿势
1.问题 在浏览项目时,发现一段使用正则表达式的代码 这段代码,在循环里执行了Pattern.matches()方法进行正则匹配判断. 查看matches方法的源码,可以看到 每调用一次matches ...
- 【开发者portal在线开发插件系列一】profile和基本上下行消息
前言: 开发者portal支持在线开发profile(即设备建模).在线开发插件.模拟应用管理设备.模拟设备上报数据接收命令.支持离线开发的profile和插件的上传部署,是合作伙伴快速集成设备.对接 ...
- 基于webpack实现多html页面开发框架二 css打包、支持scss、文件分离
本节主要介绍webpack打包的时候CSS的处理方式 一.解决什么问题 1.CSS打包 2.CSS处理浏览器兼容 3.SASS支持 4.CSS分离成单独的文件 ...
- 配置基于接口地址池的DHCP
配置基于接口地址池的DHCP 原理概述 DHCP(动态主机配置协议),采用C/S方式工作,C向S动态请求配置信息,S自动分配配置信息. 基于接口地址池的DHCP服务器,链接这个接口网段的用户都可以从该 ...
- 【Java库】如何使用优秀的加密库Jasypt来保护你的敏感信息?
1 简介 今天我们介绍一个Java库-Jasypt,全称为Java Simplified Encryption,用于加密解密.它能够让开发者用花费最小的工作而把加密集成到项目中,并且不需要对加密/解密 ...
- Nginx安装echo模块echo-nginx-module
https://github.com/openresty/echo-nginx-module 这个模块不包含在 Nginx 源码中,安装方法: 1. 首先下载模块源码:https://github.c ...