Latex中文utf-8编码的三种方式
我们知道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编码的三种方式的更多相关文章
- JAVA实现Base64编码的三种方式
摘要: Javabase64编码的三种方式 有如下三种方式: 方式一:commons-codec.jar Java代码 1. String base64String="whuang12 ...
- 【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)
一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测 ...
- spring配置datasource三种方式及具体信息
1.使用org.springframework.jdbc.datasource.DriverManagerDataSource说明:DriverManagerDataSource建立连接是只要有连接就 ...
- 三种方式解决你的js加载乱码
第一种方式——编码统一 我们以前觉得出现乱码的原因是因为编码不统一,就是因为我们设置编码统一之后,就解决了问题,所以,让html和js的编码统一,是最简单的一个乱码解决方式,原因是什么,是因为,如果你 ...
- 头像截图上传三种方式之一(一个简单易用的flash插件)(asp.net版本)
flash中有版权声明,不适合商业开发.这是官网地址:http://www.hdfu.net/ 本文参考了http://blog.csdn.net/yafei450225664/article/det ...
- vue+element ui项目总结点(一)select、Cascader级联选择器、encodeURI、decodeURI转码解码、mockjs用法、路由懒加载三种方式
不多说上代码: <template> <div class="hello"> <h1>{{ msg }}</h1> <p> ...
- Python实现微信支付(三种方式)
Python实现微信支付(三种方式) 关注公众号"轻松学编程"了解更多. 如果需要python SDk源码,可以加我微信[1257309054] 在文末有二维码. 一.准备环境 1 ...
- iOS字体加载三种方式
静态加载 动态加载 动态下载苹果提供的多种字体 其他 打印出当前所有可用的字体 检查某字体是否已经下载 这是一篇很简短的文章,介绍了 iOS 自定义字体加载的三种方式. 静态加载 这个可以说是最简单最 ...
- PHP的学习--连接MySQL的三种方式
记录一下PHP连接MySQL的三种方式. 先mock一下数据,可以执行一下sql. /*创建数据库*/ CREATE DATABASE IF NOT EXISTS `test`; /*选择数据库*/ ...
随机推荐
- 公众号 - 解决所有测试中的CORS问题
仅支持GET请求,POST请求会报错. 软件:Chrome 插件:CORS 点击下载 演示:
- Java从零开始学十八(抽象类和接口)
一.什么是抽象类和接口 抽象类.接口与类是一个层次的概念,是java中极其重要的概念. 抽象类是从多个类中抽象出来的公共模板,提供子类均具有的功能. 接口是从多个类中抽象出来的规范,体现的是规范和实现 ...
- 【技术文档】jeecg3.7-maven搭建好开发环境入门
JEECG 微云高速开发平台(3.7)Maven版本号手把手入门手冊 官方标准开发工具:1.IDE Eclipse Java EE IDE for Web Developers. ...
- 算法笔记_211:第七届蓝桥杯软件类决赛部分真题(Java语言A组)
目录 1 阶乘位数 2 凑平方数 3 棋子换位 4 机器人塔 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 阶乘位数 阶乘位数 9的阶乘等于:362880 它的二进制表示为:10110001001 ...
- 算法笔记_171:历届试题 小朋友排队(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 n 个小朋友站成一排.现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友. 每个小朋友都有一个不高兴的程度.开始的 ...
- maven 配置环境变量
maven 环境变量配置 CreationTime--2018年6月4日18点45分 Author:Marydon 前言 要先运行maven,需要按安装并配置jdk,没有配置的见文末推荐. 1.m ...
- 生成CFree 5.0 注册码
C-Free 5.0真是一个很棒的编程软件,可今天用着用着却让我注册,下面的注册码分享给大家: 方法一.下载CFree 5.0之后,直接输入以下信息进行注册. 用户名:tianfang电子邮件:qua ...
- 公钥私钥与SSL的握手协议(转)
一,公钥私钥1,公钥和私钥成对出现2,公开的密钥叫公钥,只有自己知道的叫私钥3,用公钥加密的数据只有对应的私钥可以解密4,用私钥加密的数据只有对应的公钥可以解密5,如果可以用公钥解密,则必然是对应的私 ...
- android.webkit.WebView/WebViewClient/WebChromeClient
使用android.webkit.WebView控件 在xml布局文件中定义 <WebView android:id="@+id/webkit01" android: ...
- JavaScript中的继承与原型链
先看一个例子 function User(){} var u1 = new User(); console.log(u1.prototype);// undefined 使用对象实例无法访问到prot ...