美文网首页
Latex生成书签中文乱码解决

Latex生成书签中文乱码解决

作者: Azur_wxj | 来源:发表于2019-03-04 19:22 被阅读0次

问题


在Ctex里,使用hyperref宏包设定输出pdf文件的书签目录时,发现中文产生了乱码。虽然已经启用了CJKbookmarks=true的选项。

原因


因为在Ctex中,中文环境默认的编码是GBK编码,而我的tex文件是UTF8的编码

\documentclass[UTF8]{ctexrep} %使用了UTF8编码
\usepackage{graphicx,floatrow,picinpar,array,amsmath} 
\usepackage[
    CJKbookmarks=true,bookmarksnumbered,bookmarksopen,
    pdftitle={Normal Distribution},pdfauthor=Azur,     
    pdfstartview=FitH,colorlinks=true,linkcolor=black,pdftex
]{hyperref}
.....

解决办法


有如下几个解决办法

改编码

一个解决办法是,将文件的编码从UTF-8改为GBK编码。

修改out文件

第一次编译tex文件时,会生成后缀为out的临时文件。这个文件中包含的就是目录信息。
第一次编译完只是输出并生成了目录信息,尚未完成目录的链接,因此此时打开pdf文件是看不到目录信息的,这就是为什么需要编译第二遍

因此,我们可以在第一次编译完得到out文件后,直接修改out文件中的内容,然后再次编译。

不过涉及到编码的转换,而且out中的目录部分中对汉字和使用\CJkchar命令描述的汉字有不同的编码格式。例如,有人推荐使用gbk2uni这个程序对out文件进行转码,如在命令行中(Windows系统)可以按照如下所示进行编译:

> pdflatex foo.tex
> gbk2uni foo.toc
> pdflatex foo.tex

(不过我试了一下,gbk2uni仍会报告有部分字符无法转换 :-()

参考资料


  1. LaTeX技巧709:LaTeX中文书签乱码的解决方法【转】

相关文章

网友评论

      本文标题:Latex生成书签中文乱码解决

      本文链接:https://www.haomeiwen.com/subject/xhmiuqtx.html