Latex 环境下“中文字体”的使用

使用CTex自带编辑器WinEdt,在该环境下如何使用中文字体呢?作为一个菜鸟,折腾了好几天,最终基本解决了这个问题。现在整理下,分享给后来者。

对于使用中文字体,网上的很多教程是CCT、CJK和TY,不过,CCT已经不建议使用,而CJK、TY这些都已经过时了。而且这些方案中使用的中文字体就那么几种,想使用更多的字体,要单独去安装字体,无法直接调用系统安装的字体,这样无疑会很麻烦。最终网上找到的成熟方案是:XeLaTeX。

一、首先,从头讲起,基于LaTeX2对于字体的调用方式:

  1. {\字体名称 正文内容}

使用CTex宏包调用的实例:

1.新建文件,键入下面代码

  1. \documentclass{article}
  2. \usepackage{ctex}
  3. \begin{document}
  4. 中文宏包测试               \par % "\par"表示回车换号
  5. {\songti   这是宋体的样式} \par
  6. {\heiti    这是黑体的样式} \par
  7. {\fangsong 这是仿宋的样式} \par
  8. {\kaishu   这是楷书的样式} \par
  9. %{\lishu   这是隶书的样式} \par %CTeX的手册中是支持隶书和幼圆的,
  10. %{\youyuan 这是幼圆的样式} \par %但是不知是何原因编译有问题
  11. \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”(查看所有安装的英文字体),一直无法查看,在这点上折腾了很长时间。所以,如果你的电脑上可以按这两种方法查看那样最好,如果不能,不妨就用我的方法。当然,如果你搞清楚了其中的原因也欢迎留言。

现在有了这种对应关系,那么就可以继续了。在导言区对全局的字体进行设置:

然后便是对于其它字体的设置和使用,需要注意的是指令的名称是可以自己定义的,但是系统字体名称却一定要按照上面查出来了的字体名称

下面是一个完整的例子:

  1. \documentclass{article}
  2. \usepackage{ctex}
  3. \setmainfont{Times New Roman}%设置Times New Roman为默认的英文字体
  4. \setCJKmainfont{SimSun}      %设置宋体为默认的中文字体
  5. %设置要使用的英文字体
  6. %\newfontinstance{\courier}   {Courier}   %使用Courier字体
  7. \newfontinstance{\gramond}   {Garamond}   %使用Garamond字体
  8. %设置要使用的中文字体
  9. \setCJKfamilyfont{mhwxk}{STXingkai} %华文行楷
  10. \newcommand{\stxk}{\CJKfamily{mhwxk}}
  11. \setCJKfamilyfont{hwlsh}{STLiti} %华文隶书
  12. \newcommand{\sthwls}{\CJKfamily{hwlsh}}
  13. \begin{document}
  14. %{\courier This a Courier Style} \par
  15. {\gramond This a Garamond font style} \par
  16. {\stxk   这是华文行楷字体的式样} \par
  17. {\sthwls 这是华文隶书字体的式样} \par
  18. \end{document}

注意

1.以上面的程序代码为例,注释掉的部分是使用Courier字体,如果去掉注释,由于我的电脑上没有这样的字体,于是就出来了这样的情况:编译的时候没有错误,却无法生成PDF文件,进而也就无法查看,所以,出现编译没有错误,但是生成不了PDF文件时要考虑是不是本机没有这种字体。这一点一定一定要引起足够的重视!!!

2.对于系统中查到的字体名称,可能考虑到转义字符原因,有些是不能直接使用的,要把“\”去掉才能正确使用。

例如:系统中查到一种字体:“ FZXiaoBiaoSong\-B05S,方正小标宋简体”如果这样使用就是错误的:

  1. \setCJKfamilyfont{MyCJKfzxbs}{FZXiaoBiaoSong\-B05S} %方正小标宋简体
  2. \newcommand{\fzxbs}{\CJKfamily{MyCJKfzxbs}}

正确的使用方法是要去掉“\”的,下面是正确的示例,注意对比:

  1. \setCJKfamilyfont{MyCJKfzxbs}{FZXiaoBiaoSong-B05S} %方正小标宋简体
  2. \newcommand{\fzxbs}{\CJKfamily{MyCJKfzxbs}}

参考资料:

[1].在xeLaTeX和CTeX中使用本地系统字体的方法

[2].《CTeX宏包说明》

Latex 环境下“中文字体”的使用的更多相关文章

  1. Linux环境下中文字体乱码处理办法

    项目中包含了一项生成JPG图片的功能,该功能需要使用JAVA的Graphics2D动态生成图片中的文字,原来在Windows平台中没有发现问题,但是迁移至Linux平台后发现生成的中文变成了乱码. 百 ...

  2. 解决 Mac OS X Retina 屏幕显示环境下 jEdit 字体模糊的方法

    Mac OS X Retina 屏幕显示环境下,字体非常清晰.但是 jEdit 仍然很模糊,虽然 jEdit 用的是 Java,但这并不是理由.因为诸如 NetBeans 以及 IntelliJ ID ...

  3. matplotlib在MAC系统下中文字体显示问题

    最近想把部分python数据分析的代码从win系统迁移到MAC上,有部分图片上涉及中文显示,迁移到MAC上warning: UserWarning: findfont: Font family [u' ...

  4. Linux 环境下思源黑体字体与 Java 之间的兼容性问题的解决(补充说明)

    在前一篇随笔中,我讲了一下有关 Linux 环境下思源黑体与 Java 之间的兼容性问题,后来经过测试发现,默认安装的思源黑体字体同时包含简体字体和繁体字体,并且其对应的语言编码也是不同的.尝试着把繁 ...

  5. CentOS环境下中文显示乱码,vim和ls命令显示中文均为乱码的解决办法

    1.登陆linux系统打开操作终端之后,输入 echo $LANG可以查看当前使用的系统语言 2.查看是否有中文语言包可以在终端输入 locale命令,如有zh cn 表示已经安装了中文语言 3.如果 ...

  6. node.js express环境下中文需要注意的地方

    问题一: 最近在nuxt项目中开始着手把一些跨域的请求转移到express里,其实跟其他语言差不多,http对象发请求,接收请求都写得很顺畅.之前用的请求部分大多数是get请求,所以除了注意编码问题之 ...

  7. Fedora 24 Linux 环境下实现 Infinality 字体渲染增强及 Java 字体渲染改善的方法(修订)

    Fedora 24 Linux 桌面环境默认字体渲染引擎 freetype 及字体配置工具 fontconfig 采用的是未经优化的编译及设置,字体渲染效果比较差.而某些 Linux 发行版的桌面字体 ...

  8. Windows下的字体美化

    转自HJK的博客 许多人钟情于Mac很大一部分是因为Mac优雅的字体渲染,Windows原生的效果很难做得到,即便是开启了CleartType效果也不尽如人意.不论是微软本身的审美原因还是历史包袱,与 ...

  9. latex之在windows环境下能够在latex中使用中文

    今天要把前段时间的实验用英语先记录下来,自己就想根据原来会议的模版弄一个简易的页面(英语),突然想到之前用英文模板时是不能输入中文的,于是想着怎么在latex中输入中文,折腾了许久,终于成功了,现在分 ...

随机推荐

  1. 廖雪峰的python学习网址

    http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00140737570055886 ...

  2. 数据需求统计常用awk命令

    原文:http://www.5iops.com/html/2013/script_0418/267.html 1.将时间转换为时间戳 select unix_timestamp('2009-10-26 ...

  3. BSTR

    BSTR A BSTR (Basic string or binary string) is a string data type that is used by COM, Automation, a ...

  4. [Sass] Level 4: Extend -- Ex

    Better use @extend with % placeholder. Extend is useful when you want to reuse some of you class. Al ...

  5. javascript深度克隆对象

    /** * * @param obj * @returns {*} */ //深度克隆 function cloneObject(obj) { if (obj === null || typeof(o ...

  6. ZH奶酪:Yii PHP sum SQL查询语句

    例子: $sql = 'SELECT SUM(o.price) as `sum` FROM `order` o WHERE o.customer_id ='.$profile->id; $ret ...

  7. iOS键盘高度自适应(中英文输入)

    一:添加通知监测键盘高度变化 [self keyBoardAutoSize]; 二:动态改变高度 #pragma mark keyboard height auto /* NSNotification ...

  8. JAVA中MD5加密实现

    MD5加密实现  结 package com.pb; import java.io.UnsupportedEncodingException; import java.security.Message ...

  9. 关于gcc、glibc和binutils模块之间的关系,以及在现有系统上如何升级的总结

    http://blog.csai.cn/user1/265/archives/2005/2465.html 一.关于gcc.glibc和binutils模块之间的关系 1.gcc(gnu collec ...

  10. 算法笔记_118:算法集训之结果填空题集二(Java)

     目录 1 欧拉与鸡蛋 2 巧排扑克牌 3 排座位 4 黄金队列 5 汉诺塔计数 6 猜生日 7 棋盘上的麦子 8 国庆星期日 9 找素数 10 填写算式 11 取字母组成串   1 欧拉与鸡蛋 大数 ...