8

latex中用hyperref和CJK生成中文书签

 3 years ago
source link: https://blog.csdn.net/yanxiangtianji/article/details/17754679
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

latex中用hyperref和CJK生成中文书签

在latex中使用中文问题多多,前一篇博文 http://blog.csdn.net/yanxiangtianji/article/details/17539571  讨论了怎么安装中文环境。

为了便于浏览,我们经常加入带有链接功能的书签(bookmark)或者叫目录树、索引,latex中最方便的是使用hyperref宏包,只要导入了它,它就会自动为各种交叉索引加入链接。

但是配置不当的时候加入了它可能无法编译,或者可以编译出正常的pdf正文部分但是书签部分全是乱码。

出现问题的地方主要有2点:

1,utf-8与ansi/gbk的问题。

这里需要保持“文件保存格式”与“文件中命令(包名、参数)形式”的一致。

为了避免不必要的麻烦,建议把文件保存为utf8格式(windows下默认会保存为ansi格式,并采用GBK编码)并使用相关指令,一般可以在编辑工具的选项里面设置。否则需要借助网上盛传的gbk2uni工具,它其实就是做了一个把中间文件(*.out)从ansi/gbk到utf-8转码的功能。

ansi/gbk配套包名、命令:\usepackage{CJK}  及 \begin{cJK}{GBK}{字体}

utf-8配套包名、命令:\usepackage{CJKutf8}  及 \begin{cJK}{UTF8}{字体}

2,hyperref包的选项。

如果文件采用了utf-8编码保存,那么千千万万不要在hyperref包的选项里面写入CJKbookmarks,这会导致乱码。而应该使用unicode选项。

一个简单问题:如果采用pdflatex编译,选项中应该写pdftex;而如果采用类似latex->dvi2ps->ps2pdf这样的一条编译链的话就应该使用选项dvipdfm。

其他说明:

如果修改了目录结构,pdflatex命令需要执行2到3遍(前面的几遍用于更新中间文件(.toc等),最后一遍用于将中间文件和.tex文件整合),否则得到的pdf文件的在目录等某些地方没有更新。如果只是修改了正文,那执行一遍就可以了。

这是一个我在使用的没有问题的导言区例子:

\documentclass[fleqn]{article}	%align all the equations to the left
\usepackage{geometry}
\geometry{left=3.18cm,right=3.18cm,top=2.54cm,bottom=2.54cm}	%word中默认的A4纸边距
\usepackage{CJKutf8}
%\usepackage{CJK}
\usepackage[cmex10]{amsmath}
%\usepackage[CJKbookmarks,pdftex]{hyperref}	%dvipdfm
\usepackage[unicode,pdftex]{hyperref}	%dvipdfm
\begin{document}
\begin{CJK}{UTF8}{gbsn}	%文件保存为utf8格式时需要,宋体
%\begin{CJK}{GBK}{gbsn}	%文件保存为ansi格式时需要,宋体
......
\end{CJK}

再附一个hyperref各种选项的官方简要说明:

http://mirror.math.ku.edu/tex-archive/macros/latex/contrib/hyperref/doc/options.pdf

为了方便网络条件不是很好的朋友,提供csdn下载站的一个副本:

http://download.csdn.net/detail/yanxiangtianji/6799105

原载于http://blog.csdn.net/yanxiangtianji

转载请注明出处


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK