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中输入中文,折腾了许久,终于成功了,现在分 ...
随机推荐
- [Node.js] Stream all things!
Node.js come alone with many Stream API. Stream is useful when handling large trunck of data. For ex ...
- [CSS3] Parent relative and child absoulte
如果在一个容器中的子元素使用了position:absolute, 那么他可能会跑出父元素的框架范围. 如果想限定子元素在付元素的框架范围,可以在父元素上加position:relative; 对于一 ...
- 【Javascript Demo】遮罩层和弹出层简单实现
最近纠结于遮罩层和弹出层的实现,终于搞定了个简单的版本.示例和代码如下,点击按钮可以看到效果: 1.示例: 2.代码: <!DOCTYPE html PUBLIC "-//W3C//D ...
- 火狐浏览器Firefox Firebug使用方法
什么是Firebug 从事了数年的Web开发工作,越来越觉得现在对WEB开发有了更高的要求.要写出漂亮的HTML代码:要编写精致的CSS样式表展示每个页面模块:要调试javascript给页面增加一些 ...
- ZH奶酪:putty远程登录Linux服务器非常慢
11.pytty远程登录Linux服务器非常慢 http://www.it165.net/os/html/201209/3425.html 12.启动SSHD服务报错 http://blog.chin ...
- ubuntu Server 设置主机静态 ip地址
ubuntu Server 设置主机静态 ip地址 1:先输入 ifconfig 查看当前网络配置 2:然后关闭 eth0 网卡 sudo ifdown eth0 3:配置静态ip sudo vim ...
- UISlider设置按钮透明
UISlider *aslider = [[UISlider alloc]initWithFrame:kCR(, , , )]; [aslider setValue:0.5]; [aslider se ...
- Hibernate(十)HQL查询二
一.数据库的emp名和dept表 建立持久化类和配置文件,可以用MyEclipse直接生成 持久化类 package entity; import java.util.Date; public cla ...
- Java从零开始学十六(多态)
一.什么是多态 多态性是指允许不同类的对象对同一消息作出响应.多态性包括参数化多态性和包含多态性.多态性语言具有灵活.抽象.行为共享.代码共享的优势,很好的解决了应用程序函数同名问题.多态有两种表现形 ...
- 算法笔记_118:算法集训之结果填空题集二(Java)
目录 1 欧拉与鸡蛋 2 巧排扑克牌 3 排座位 4 黄金队列 5 汉诺塔计数 6 猜生日 7 棋盘上的麦子 8 国庆星期日 9 找素数 10 填写算式 11 取字母组成串 1 欧拉与鸡蛋 大数 ...