latex自动生成中文目录_Latex生成书签中文乱码解决

问题

在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仍会报告有部分字符无法转换 :-()

参考资料

你可能感兴趣的:(latex自动生成中文目录)