• 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}
    egin{document}
    egin{CJK}{UTF8}{<font>}
     ...
    end{CJK}
    end{document}

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

    %test.tex
    documentclass{article} usepackage{CJKutf8} egin{document} egin{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}
    egin{document}
    ...
    end{document}

    或者,直接使用ctexart

    documentclass[UTF8]{ctexart}
    egin{document}
    ...
    end{document}

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

    % ctex_test.tex
    documentclass[UTF8]{article}
    usepackage{CTEX}
    egin{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}
    egin{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,即可得到如下输出结果,

  • 相关阅读:
    使用truffle测试部署合约
    nodejs promise深度解析
    pthread线程特定数据
    基于信号量与互斥锁实现的生产者和消费者
    Linux coredump 的打开和关闭
    Linux 双网卡配置两个IP同时只有一个会通的原因
    进程间通信-共享内存
    进程间通信-消息队列
    TCP/IP SIGPIPE信号
    Select模式和超时
  • 原文地址:https://www.cnblogs.com/dezheng/p/3874434.html
Copyright © 2020-2023  润新知