我们知道Latex一般用CJK和CTEX宏包支持中文编辑,CJK和CTEX的默认编码是GBK,而windows下的默然编码就是GBK,因此CJK和CTEX不需要特殊配置就可以直接支持中文Latex编译,只需要用GBK编码保存文件即可。但是如果把文件的字符编码换成现在更加普遍的utf-8的话,应该怎么操作呢?在这里有3种方式可以使用。

1、CJKutf8

CJK有两个基本宏包:CJK和CJKutf8,其中后者面向utf-8编码,其一般使用方法如下:

\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{<font>}
...
\end{CJK}
\end{document}

font为简体中文字体,CJK自带的utf-8简体字体有gbsn(宋体)和gkai(楷体)。以下代码是一个简单的例子(一定要将tex文件保存成utf-8格式):

%test.tex
\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{gbsn}
这是一个CJKutf8的例子,使用的字体是gbsn。
\end{CJK}
\end{document}

用pdflatex编译tex文件,即可得到输出结果。

2、CTEX的UTF8选项

上面的CJKutf8只提供了两种字体,可选择的余地太小,我们可以直接用UTF8选项使CTEX支持utf-8编码,利用CTEX丰富的字体和中文设置可以更好地编辑Latex中文文本,其语法格式为:

\documentclass[UTF8]{article}
\usepackage{CTEX}
\begin{document}
...
\end{document}

或者,直接使用ctexart

\documentclass[UTF8]{ctexart}
\begin{document}
...
\end{document}

以下代码是一个简单的例子(同样把tex文件保存成utf-8格式):

% ctex_test.tex
\documentclass[UTF8]{article}
\usepackage{CTEX}
\begin{document}
这是一个CTEX的utf-8编码例子,{\kaishu 这里是楷体显示},{\songti 这里是宋体显示},{\heiti 这里是黑体显示},{\fangsong 这里是仿宋显示},{\lishu 这里是隶书显示},{\youyuan 这里是幼圆显示}。
\end{document}

用pdflatex编译tex文件:pdflate ctex_test.tex,即可得到如下输出结果,

3、xelatex编译

XeTeX是一种使用Unicode的TeX排版引擎,它原生的支持Unicode,并默认其输入文件为utf-8编码。XeTeX可以在不进行额外配置的情况下直接使用操作系统中安装的字体。XeLaTeX是使用LaTeX的排版引擎,也有上述XeTeX的优点,命令下直接使用xelatex ***.tex就会产生对应的PDF文件。以下是一个简单的xelatex编译ctex的例子(同样把tex文件保存成utf-8格式):

% xelatex_test.tex
\documentclass{article}
\usepackage{CTEX}
\begin{document}
这是一个CTEX的utf-8编码例子,{\kaishu 这里是楷体显示},{\songti 这里是宋体显示},{\heiti 这里是黑体显示},{\fangsong 这里是仿宋显示}。
\end{document}

明眼的同学一下就发现了,这货跟上面第2条中ctex的代码相比,就少了一个UTF8选项啊!额,表面看是这样的,但是如果如果直接把xelatex_test.tex用pdflatex编译,系统就会报错。这是因为不加UTF8选项,pdflatex默然按照GBK编码处理tex文件,而这个文件我们是用utf-8编码的,这样就会造成解码失败。这里直接用xelatex编译,就会编译成功,因为xelatex的默认输入文件是utf-8编码。切换到tex文件所在目录,直接用xelatex编译tex文件:xelatex xelatex_test.tex,即可得到如下输出结果,

Latex中文utf-8编码的三种方式的更多相关文章

  1. JAVA实现Base64编码的三种方式

    摘要: Javabase64编码的三种方式   有如下三种方式: 方式一:commons-codec.jar Java代码  1. String base64String="whuang12 ...

  2. 【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)

          一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测 ...

  3. spring配置datasource三种方式及具体信息

    1.使用org.springframework.jdbc.datasource.DriverManagerDataSource说明:DriverManagerDataSource建立连接是只要有连接就 ...

  4. 三种方式解决你的js加载乱码

    第一种方式——编码统一 我们以前觉得出现乱码的原因是因为编码不统一,就是因为我们设置编码统一之后,就解决了问题,所以,让html和js的编码统一,是最简单的一个乱码解决方式,原因是什么,是因为,如果你 ...

  5. 头像截图上传三种方式之一(一个简单易用的flash插件)(asp.net版本)

    flash中有版权声明,不适合商业开发.这是官网地址:http://www.hdfu.net/ 本文参考了http://blog.csdn.net/yafei450225664/article/det ...

  6. vue+element ui项目总结点(一)select、Cascader级联选择器、encodeURI、decodeURI转码解码、mockjs用法、路由懒加载三种方式

    不多说上代码: <template> <div class="hello"> <h1>{{ msg }}</h1> <p> ...

  7. Python实现微信支付(三种方式)

    Python实现微信支付(三种方式) 关注公众号"轻松学编程"了解更多. 如果需要python SDk源码,可以加我微信[1257309054] 在文末有二维码. 一.准备环境 1 ...

  8. iOS字体加载三种方式

    静态加载 动态加载 动态下载苹果提供的多种字体 其他 打印出当前所有可用的字体 检查某字体是否已经下载 这是一篇很简短的文章,介绍了 iOS 自定义字体加载的三种方式. 静态加载 这个可以说是最简单最 ...

  9. PHP的学习--连接MySQL的三种方式

    记录一下PHP连接MySQL的三种方式. 先mock一下数据,可以执行一下sql. /*创建数据库*/ CREATE DATABASE IF NOT EXISTS `test`; /*选择数据库*/ ...

随机推荐

  1. vb.net 模拟UDP通信

    Imports System.Net Imports System.Text.Encoding Public Class Form1 Dim publisher As New Sockets.UdpC ...

  2. 剑指offer(2) - 二维数组中的查找

    题目: 在一个二维数组中.每一行都依照从左到右递增的顺序排序,每一列都依照从上往下递增的顺序排序.请写一个函数,输入一个二维数组和一个整数,推断数组中是否含有该整数. 比如以下的二维数组就是每行.每列 ...

  3. Java读取文件整理

    /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public class ReadFromFile { public static void readFileB ...

  4. systemctl的常用命令

    #systemctl #systemctl --all #systemctl list-units --type=sokect #systemctl list-units --type=service ...

  5. EXCEPTION-javaBean

      CreateTime--2016年11月24日14:29:43Author:Marydon 声明:异常类文章主要是记录了我遇到的异常信息及解决方案,解决方案大部分都是百度解决的,(这里只是针对我遇 ...

  6. Windows下如何配置tomcat环境变量

    Apache Tomcat 是一款 Java Servlet 和 JavaServer Pages 技术的开源软件实现,可以作为测试 Servlet 的独立服务器,而且可以集成到 Apache Web ...

  7. windows执行命令来运行loadrunner录制好的脚本(收藏)

    SET M_ROOT=D:Mercury InteractiveMercury LoadRunnerincd %M_ROOT% wlrun.exe -TestPath D:ceshi10Scenari ...

  8. spyder python 相关

    1.python开发集成工具Spyder中,如何设置变量成员提示和代码补全呢? 答: pip install rope,安装好rope 就可以了 2.最常用的是:tap的制动补全 (IPython c ...

  9. Centos6.5生产环境最小化优化配置

    Centos6.5生产环境最小化优化配置,满足业务需求! 01.启动网卡 #centos6.x最小化安装后,网卡默认不是启动状态 ifup eth0  //  ifconfig eth0 up /et ...

  10. iOS微信支付集成

    概述 iOS微信支付集成 详细 代码下载:http://www.demodashi.com/demo/10735.html 支付宝和微信都是业界的老大哥,相信大家都有所觉得文档.SDK都是各种坑吧(纯 ...