Latex 环境下“中文字体”的使用
Latex 环境下“中文字体”的使用
使用CTex自带编辑器WinEdt,在该环境下如何使用中文字体呢?作为一个菜鸟,折腾了好几天,最终基本解决了这个问题。现在整理下,分享给后来者。
对于使用中文字体,网上的很多教程是CCT、CJK和TY,不过,CCT已经不建议使用,而CJK、TY这些都已经过时了。而且这些方案中使用的中文字体就那么几种,想使用更多的字体,要单独去安装字体,无法直接调用系统安装的字体,这样无疑会很麻烦。最终网上找到的成熟方案是:XeLaTeX。
一、首先,从头讲起,基于LaTeX2对于字体的调用方式:
- {\字体名称 正文内容}
使用CTex宏包调用的实例:
1.新建文件,键入下面代码
- \documentclass{article}
- \usepackage{ctex}
- \begin{document}
- 中文宏包测试 \par % "\par"表示回车换号
- {\songti 这是宋体的样式} \par
- {\heiti 这是黑体的样式} \par
- {\fangsong 这是仿宋的样式} \par
- {\kaishu 这是楷书的样式} \par
- %{\lishu 这是隶书的样式} \par %CTeX的手册中是支持隶书和幼圆的,
- %{\youyuan 这是幼圆的样式} \par %但是不知是何原因编译有问题
- \end{document}
2.点击保存,这里这里保存类型建议以后一直选择“UTF-8”
注意;保存类型建议以后一直选择“UTF-8”,因为一方面xeCJK格式的汉字字体将无法显示,另一方面, GBK 编码是 ctex 宏包的缺省模式,使用 XeTEX 引擎的情况下总是内部使用 UTF-8 编码,所以不必使用这个选项,但这并不妨碍编写 GBK 编码的文档。
3.选择XeLaTeX编译方式,点击查看
4.效果如下图:
二、基于XeLaTeX的中文字体的使用
XeLaTeX可以直接调用系统中安装的字体,但是字体的名称并不是我们通常见到的那样,比如:华文隶书 在系统中是“STLiti”。而如何找到这种对于关系呢?
开始->运行->输入“CMD”,弹出命令窗口:输入:"fc-list",回车,就可以看到系统中所有安装字体的这种对于关系。当然,显示的原因,可能看不全,所有不如把它保存下来,方法是命令窗口中输入:“fc-list>>c:font.txt”(这里假设存入到D盘的font.txt文件下)。
注意:笔者按照网上的两种方法:“fc-list:lang=zh-cn”(查看所有安装的中文字体)或者“fc-list:lang=en”(查看所有安装的英文字体),一直无法查看,在这点上折腾了很长时间。所以,如果你的电脑上可以按这两种方法查看那样最好,如果不能,不妨就用我的方法。当然,如果你搞清楚了其中的原因也欢迎留言。
现在有了这种对应关系,那么就可以继续了。在导言区对全局的字体进行设置:
然后便是对于其它字体的设置和使用,需要注意的是指令的名称是可以自己定义的,但是系统字体名称却一定要按照上面查出来了的字体名称
下面是一个完整的例子:
- \documentclass{article}
- \usepackage{ctex}
- \setmainfont{Times New Roman}%设置Times New Roman为默认的英文字体
- \setCJKmainfont{SimSun} %设置宋体为默认的中文字体
- %设置要使用的英文字体
- %\newfontinstance{\courier} {Courier} %使用Courier字体
- \newfontinstance{\gramond} {Garamond} %使用Garamond字体
- %设置要使用的中文字体
- \setCJKfamilyfont{mhwxk}{STXingkai} %华文行楷
- \newcommand{\stxk}{\CJKfamily{mhwxk}}
- \setCJKfamilyfont{hwlsh}{STLiti} %华文隶书
- \newcommand{\sthwls}{\CJKfamily{hwlsh}}
- \begin{document}
- %{\courier This a Courier Style} \par
- {\gramond This a Garamond font style} \par
- {\stxk 这是华文行楷字体的式样} \par
- {\sthwls 这是华文隶书字体的式样} \par
- \end{document}
注意:
1.以上面的程序代码为例,注释掉的部分是使用Courier字体,如果去掉注释,由于我的电脑上没有这样的字体,于是就出来了这样的情况:编译的时候没有错误,却无法生成PDF文件,进而也就无法查看,所以,出现编译没有错误,但是生成不了PDF文件时要考虑是不是本机没有这种字体。这一点一定一定要引起足够的重视!!!
2.对于系统中查到的字体名称,可能考虑到转义字符原因,有些是不能直接使用的,要把“\”去掉才能正确使用。
例如:系统中查到一种字体:“ FZXiaoBiaoSong\-B05S,方正小标宋简体”如果这样使用就是错误的:
- \setCJKfamilyfont{MyCJKfzxbs}{FZXiaoBiaoSong\-B05S} %方正小标宋简体
- \newcommand{\fzxbs}{\CJKfamily{MyCJKfzxbs}}
正确的使用方法是要去掉“\”的,下面是正确的示例,注意对比:
- \setCJKfamilyfont{MyCJKfzxbs}{FZXiaoBiaoSong-B05S} %方正小标宋简体
- \newcommand{\fzxbs}{\CJKfamily{MyCJKfzxbs}}
参考资料:
[1].在xeLaTeX和CTeX中使用本地系统字体的方法
[2].《CTeX宏包说明》
Latex 环境下“中文字体”的使用的更多相关文章
- Linux环境下中文字体乱码处理办法
项目中包含了一项生成JPG图片的功能,该功能需要使用JAVA的Graphics2D动态生成图片中的文字,原来在Windows平台中没有发现问题,但是迁移至Linux平台后发现生成的中文变成了乱码. 百 ...
- 解决 Mac OS X Retina 屏幕显示环境下 jEdit 字体模糊的方法
Mac OS X Retina 屏幕显示环境下,字体非常清晰.但是 jEdit 仍然很模糊,虽然 jEdit 用的是 Java,但这并不是理由.因为诸如 NetBeans 以及 IntelliJ ID ...
- matplotlib在MAC系统下中文字体显示问题
最近想把部分python数据分析的代码从win系统迁移到MAC上,有部分图片上涉及中文显示,迁移到MAC上warning: UserWarning: findfont: Font family [u' ...
- Linux 环境下思源黑体字体与 Java 之间的兼容性问题的解决(补充说明)
在前一篇随笔中,我讲了一下有关 Linux 环境下思源黑体与 Java 之间的兼容性问题,后来经过测试发现,默认安装的思源黑体字体同时包含简体字体和繁体字体,并且其对应的语言编码也是不同的.尝试着把繁 ...
- CentOS环境下中文显示乱码,vim和ls命令显示中文均为乱码的解决办法
1.登陆linux系统打开操作终端之后,输入 echo $LANG可以查看当前使用的系统语言 2.查看是否有中文语言包可以在终端输入 locale命令,如有zh cn 表示已经安装了中文语言 3.如果 ...
- node.js express环境下中文需要注意的地方
问题一: 最近在nuxt项目中开始着手把一些跨域的请求转移到express里,其实跟其他语言差不多,http对象发请求,接收请求都写得很顺畅.之前用的请求部分大多数是get请求,所以除了注意编码问题之 ...
- Fedora 24 Linux 环境下实现 Infinality 字体渲染增强及 Java 字体渲染改善的方法(修订)
Fedora 24 Linux 桌面环境默认字体渲染引擎 freetype 及字体配置工具 fontconfig 采用的是未经优化的编译及设置,字体渲染效果比较差.而某些 Linux 发行版的桌面字体 ...
- Windows下的字体美化
转自HJK的博客 许多人钟情于Mac很大一部分是因为Mac优雅的字体渲染,Windows原生的效果很难做得到,即便是开启了CleartType效果也不尽如人意.不论是微软本身的审美原因还是历史包袱,与 ...
- latex之在windows环境下能够在latex中使用中文
今天要把前段时间的实验用英语先记录下来,自己就想根据原来会议的模版弄一个简易的页面(英语),突然想到之前用英文模板时是不能输入中文的,于是想着怎么在latex中输入中文,折腾了许久,终于成功了,现在分 ...
随机推荐
- windows10(64位)Anaconda3+Python3.6搭建Tensorflow(cpu版本)及keras
转自:windows10(64位)Anaconda3+Python3.6搭建Tensorflow(cpu版本)及keras 1.本来电脑安装的是anaconda3 5.3.1,但安装的python版本 ...
- Discuz 学习笔记一 :getgdc 和get_client_ip
Getgdc函数 discuz有一个超级变量的自定义函数: function getgpc($k, $type='GP') { $type = strtoupper($type); ...
- [Node.js]26. Level 5 : Route rendering
Instead of just writing out the quote to the response, instead render the quote.ejs template, passin ...
- 自定义self.editButtonItem 改变自定义self.editButtonItem的背景图片
一: // UIButton *editSome; 为全局变量,已开启ARC; editSome = [UIButton buttonWithType:UIButtonTypeCustom]; edi ...
- svn log笔记
背景: svn,版本 1.7.8 以下所有命令直接和svn服务器进行交互并没有checkout代码到本地 1.查询分支从拉出来到现在的变更: svn log branche_url --stop-on ...
- 转:Python模块学习 ---- httplib HTTP协议客户端实现
httplib 是 python中http 协议的客户端实现,可以使用该模块来与 HTTP 服务器进行交互.httplib的内容不是很多,也比较简单.以下是一个非常简单的例子,使用httplib获取g ...
- 〖Linux〗Clang/Clang++ for Android Binary/NDK build(二进制可执行文件/NDK编译)
#1. 下载并安装NDK(解压即可,目前最新版是r9c) http://developer.android.com/tools/sdk/ndk/index.html #2. 安装NDK独立编译工具 c ...
- 微信小程序-基于canvas画画涂鸦
代码地址如下:http://www.demodashi.com/demo/14461.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...
- 【mysql】Innodb三大特性之adaptive hash index
1.Adaptive Hash Indexes 定义 If a table fits almost entirely in main memory, the fastest way to perfor ...
- nginx反向代理proxy_set_header自定义header头无效
公司使用nginx作为负载均衡,有时候需要自定义header头发送给后端的真实服务器. 想过去应该是非常的简单的事情. 例子如下: 设置代理服务器ip头 1 proxy_set_header X- ...