全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 LATEX论坛
3735 0
2014-11-28
介绍

[size=13.1428575515747px]LaTeX 的 hyperref 宏包能够在 PDF 文件里生成 PDF 书签,然而「书签乱码」是困扰很多 LaTeX 使用者的麻烦问题。

[size=13.1428575515747px]早年李树钧和张林波老师共同开发了名为 gbk2uni 的小工具,用以将 filename.out 中的 GBK 编码的字符转换成八进制数据;刘海洋和李清在 ctex 宏包 / 文档类对此做了处理,使得 ctex宏包 / 文档类能够正确处理大部分的情况;后来李清编写了 xCJK2uni 宏包,使得在 pdfLaTeX 编译方式下用 CJK 的 GBK 编码模式也能正确输出 PDF 书签,而不必借用额外的工具。

[size=13.1428575515747px]这里对全部正确的方式做一个总结。

推荐的方式

[size=13.1428575515747px]最好的办法是将中文支持和版式处理都交给 ctex 宏包 / 文档类,只需要开启 hyperref 选项即可。

[size=13.1428575515747px]适用情况

  • UTF-8 + XeLaTeX(目前[size=13.1428575515747px]最最最最最最最最推荐的方式,看到它请星星眼)
  • UTF-8 + pdfLaTeX
  • UTF-8 + LaTeX - DVIPDFMx


[color=rgb(170, 170, 170) !important]1


[color=rgb(170, 170, 170) !important]2


[color=rgb(170, 170, 170) !important]3


[color=rgb(170, 170, 170) !important]4


[color=rgb(170, 170, 170) !important]5



\documentclass[color=rgb(51, 51, 51) !important][hyperref[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] UTF8[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important]{ctexart[color=rgb(51, 51, 51) !important]}
\begin[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}
\section[color=rgb(51, 51, 51) !important]{中文书签不会乱码[color=rgb(51, 51, 51) !important]}
UTF-8[color=rgb(0, 111, 224) !important] 编码,Xe\LaTeX[color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}/pdf\LaTeX[color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}/\LaTeX[color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}[color=rgb(0, 111, 224) !important] -[color=rgb(0, 111, 224) !important] DVIPDFMx[color=rgb(0, 111, 224) !important] 编译。
\end[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}





[color=rgb(170, 170, 170) !important]1


[color=rgb(170, 170, 170) !important]2


[color=rgb(170, 170, 170) !important]3


[color=rgb(170, 170, 170) !important]4


[color=rgb(170, 170, 170) !important]5



\documentclass[color=rgb(51, 51, 51) !important][hyperref[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] UTF8[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important]{ctexart[color=rgb(51, 51, 51) !important]}
\begin[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}
\section[color=rgb(51, 51, 51) !important]{中文书签不会乱码[color=rgb(51, 51, 51) !important]}
UTF-8[color=rgb(0, 111, 224) !important] 编码,Xe\LaTeX[color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}/pdf\LaTeX[color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}/\LaTeX[color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}[color=rgb(0, 111, 224) !important] -[color=rgb(0, 111, 224) !important] DVIPDFMx[color=rgb(0, 111, 224) !important] 编译。
\end[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}



[size=13.1428575515747px]适用情况(除非必要,不要使用 GBK 编码)

  • GBK + LaTeX - DVIPDFMx
  • GBK + pdfLaTeX (ctex 宏包 2.x 版本支持,当前的 1.x 版本暂不支持)


[color=rgb(170, 170, 170) !important]1


[color=rgb(170, 170, 170) !important]2


[color=rgb(170, 170, 170) !important]3


[color=rgb(170, 170, 170) !important]4


[color=rgb(170, 170, 170) !important]5



\documentclass[color=rgb(51, 51, 51) !important][hyperref[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] GBK[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important]{ctexart[color=rgb(51, 51, 51) !important]}
\begin[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}
\section[color=rgb(51, 51, 51) !important]{中文书签不会乱码[color=rgb(51, 51, 51) !important]}
GBK[color=rgb(0, 111, 224) !important] 编码,pdf\LaTeX[color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}/\LaTeX[color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}[color=rgb(0, 111, 224) !important] -[color=rgb(0, 111, 224) !important] DVIPDFMx[color=rgb(0, 111, 224) !important] 编译。
\end[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}





[color=rgb(170, 170, 170) !important]1


[color=rgb(170, 170, 170) !important]2


[color=rgb(170, 170, 170) !important]3


[color=rgb(170, 170, 170) !important]4


[color=rgb(170, 170, 170) !important]5



\documentclass[color=rgb(51, 51, 51) !important][hyperref[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] GBK[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important]{ctexart[color=rgb(51, 51, 51) !important]}
\begin[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}
\section[color=rgb(51, 51, 51) !important]{中文书签不会乱码[color=rgb(51, 51, 51) !important]}
GBK[color=rgb(0, 111, 224) !important] 编码,pdf\LaTeX[color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}/\LaTeX[color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}[color=rgb(0, 111, 224) !important] -[color=rgb(0, 111, 224) !important] DVIPDFMx[color=rgb(0, 111, 224) !important] 编译。
\end[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}




折腾星人的方式

[size=13.1428575515747px]如果不想使用 ctex 宏包 / 文档类,也可以选择自己写代码进行中文支持。这时候需要做额外的代码配置,保证 PDF 书签不会乱码。

[size=13.1428575515747px]适用情况

  • UTF-8 + XeLaTeX


[color=rgb(170, 170, 170) !important]1


[color=rgb(170, 170, 170) !important]2


[color=rgb(170, 170, 170) !important]3


[color=rgb(170, 170, 170) !important]4


[color=rgb(170, 170, 170) !important]5


[color=rgb(170, 170, 170) !important]6


[color=rgb(170, 170, 170) !important]7


[color=rgb(170, 170, 170) !important]8



\documentclass[color=rgb(51, 51, 51) !important]{article[color=rgb(51, 51, 51) !important]}
\usepackage[color=rgb(51, 51, 51) !important]{xeCJK[color=rgb(51, 51, 51) !important]}
\usepackage[color=rgb(51, 51, 51) !important]{hyperref[color=rgb(51, 51, 51) !important]}
\setCJKmainfont[color=rgb(51, 51, 51) !important]{SimSun[color=rgb(51, 51, 51) !important]}
\begin[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}
\section[color=rgb(51, 51, 51) !important]{中文书签不会乱码[color=rgb(51, 51, 51) !important]}
UTF-8[color=rgb(0, 111, 224) !important] 编码,Xe\LaTeX[color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}[color=rgb(0, 111, 224) !important] 编译。
\end[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}



[size=13.1428575515747px]适用情况

  • UTF-8 + pdfLaTeX


[color=rgb(170, 170, 170) !important]1


[color=rgb(170, 170, 170) !important]2


[color=rgb(170, 170, 170) !important]3


[color=rgb(170, 170, 170) !important]4


[color=rgb(170, 170, 170) !important]5


[color=rgb(170, 170, 170) !important]6


[color=rgb(170, 170, 170) !important]7


[color=rgb(170, 170, 170) !important]8


[color=rgb(170, 170, 170) !important]9


[color=rgb(170, 170, 170) !important]10


[color=rgb(170, 170, 170) !important]11


[color=rgb(170, 170, 170) !important]12



\documentclass[color=rgb(51, 51, 51) !important]{article[color=rgb(51, 51, 51) !important]}
\usepackage[color=rgb(51, 51, 51) !important]{CJKutf8[color=rgb(51, 51, 51) !important]}
\usepackage[color=rgb(51, 51, 51) !important]{hyperref[color=rgb(51, 51, 51) !important]}
\hypersetup[color=rgb(51, 51, 51) !important]{unicode[color=rgb(51, 51, 51) !important]}
\AtBeginShipoutFirst[color=rgb(51, 51, 51) !important]{\input[color=rgb(51, 51, 51) !important]{zhwinfonts[color=rgb(51, 51, 51) !important].tex[color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important]}
\begin[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}
\begin[color=rgb(51, 51, 51) !important]{CJK*[color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important]{UTF8[color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important]{song[color=rgb(51, 51, 51) !important]}
\section[color=rgb(51, 51, 51) !important]{中文书签不会乱码[color=rgb(51, 51, 51) !important]}
UTF-8[color=rgb(51, 51, 51) !important]~编码,pdf\LaTeX[color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important]~编译。
\clearpage
\end[color=rgb(51, 51, 51) !important]{CJK*[color=rgb(51, 51, 51) !important]}
\end[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}



[size=13.1428575515747px]适用情况

  • UTF-8 + LaTeX - DVIPDFMx


[color=rgb(170, 170, 170) !important]1


[color=rgb(170, 170, 170) !important]2


[color=rgb(170, 170, 170) !important]3


[color=rgb(170, 170, 170) !important]4


[color=rgb(170, 170, 170) !important]5


[color=rgb(170, 170, 170) !important]6


[color=rgb(170, 170, 170) !important]7


[color=rgb(170, 170, 170) !important]8


[color=rgb(170, 170, 170) !important]9


[color=rgb(170, 170, 170) !important]10


[color=rgb(170, 170, 170) !important]11


[color=rgb(170, 170, 170) !important]12



\documentclass[color=rgb(51, 51, 51) !important]{article[color=rgb(51, 51, 51) !important]}
\usepackage[color=rgb(51, 51, 51) !important]{CJKutf8[color=rgb(51, 51, 51) !important]}
\usepackage[color=rgb(51, 51, 51) !important][dvipdfmx[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important]{hyperref[color=rgb(51, 51, 51) !important]}
\hypersetup[color=rgb(51, 51, 51) !important]{unicode[color=rgb(51, 51, 51) !important]}
\AtBeginShipoutFirst[color=rgb(51, 51, 51) !important]{\input[color=rgb(51, 51, 51) !important]{zhwinfonts[color=rgb(51, 51, 51) !important].tex[color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important]}
\begin[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}
\begin[color=rgb(51, 51, 51) !important]{CJK*[color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important]{UTF8[color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important]{song[color=rgb(51, 51, 51) !important]}
\section[color=rgb(51, 51, 51) !important]{中文书签不会乱码[color=rgb(51, 51, 51) !important]}
UTF-8[color=rgb(51, 51, 51) !important]~编码,\LaTeX[color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}[color=rgb(0, 111, 224) !important] -[color=rgb(0, 111, 224) !important] DVIPDFMx[color=rgb(51, 51, 51) !important]~编译。
\clearpage
\end[color=rgb(51, 51, 51) !important]{CJK*[color=rgb(51, 51, 51) !important]}
\end[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}



[size=13.1428575515747px]适用情况

  • GBK + pdfLaTeX (谁特么还在用 GBK 啊!摔!)

[size=13.1428575515747px]请大家将感谢信发送至 李清 的邮箱~



[color=rgb(170, 170, 170) !important]1


[color=rgb(170, 170, 170) !important]2


[color=rgb(170, 170, 170) !important]3


[color=rgb(170, 170, 170) !important]4


[color=rgb(170, 170, 170) !important]5


[color=rgb(170, 170, 170) !important]6


[color=rgb(170, 170, 170) !important]7


[color=rgb(170, 170, 170) !important]8


[color=rgb(170, 170, 170) !important]9


[color=rgb(170, 170, 170) !important]10


[color=rgb(170, 170, 170) !important]11


[color=rgb(170, 170, 170) !important]12



\documentclass[color=rgb(51, 51, 51) !important]{article[color=rgb(51, 51, 51) !important]}
\usepackage[color=rgb(51, 51, 51) !important]{CJK[color=rgb(51, 51, 51) !important]}
\usepackage[color=rgb(51, 51, 51) !important]{xCJK2uni[color=rgb(51, 51, 51) !important]}[color=rgb(0, 111, 224) !important] [color=rgb(153, 153, 153) !important]% 请大家将感谢信发送至 李清 的邮箱~ : )
\usepackage[color=rgb(51, 51, 51) !important]{hyperref[color=rgb(51, 51, 51) !important]}
\AtBeginShipoutFirst[color=rgb(51, 51, 51) !important]{\input[color=rgb(51, 51, 51) !important]{zhwinfonts[color=rgb(51, 51, 51) !important].tex[color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important]}
\begin[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}
\begin[color=rgb(51, 51, 51) !important]{CJK*[color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important]{GBK[color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important]{song[color=rgb(51, 51, 51) !important]}
\section[color=rgb(51, 51, 51) !important]{中文书签不会乱码[color=rgb(51, 51, 51) !important]}
GBK[color=rgb(51, 51, 51) !important]~编码,pdf\LaTeX[color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important]~编译。
\clearpage
\end[color=rgb(51, 51, 51) !important]{CJK*[color=rgb(51, 51, 51) !important]}
\end[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}



[size=13.1428575515747px]适用情况

  • GBK + LaTeX - DVIPDFMx(谁特么还在用 GBK 啊!摔!)

[backcolor=rgb(238, 238, 238) !important][color=rgb(102, 102, 102) !important]











[color=rgb(102, 102, 102) !important][size=9.7142858505249px]TeX



[color=rgb(170, 170, 170) !important]1


[color=rgb(170, 170, 170) !important]2


[color=rgb(170, 170, 170) !important]3


[color=rgb(170, 170, 170) !important]4


[color=rgb(170, 170, 170) !important]5


[color=rgb(170, 170, 170) !important]6


[color=rgb(170, 170, 170) !important]7


[color=rgb(170, 170, 170) !important]8


[color=rgb(170, 170, 170) !important]9


[color=rgb(170, 170, 170) !important]10


[color=rgb(170, 170, 170) !important]11


[color=rgb(170, 170, 170) !important]12


[color=rgb(170, 170, 170) !important]13



\documentclass[color=rgb(51, 51, 51) !important]{article[color=rgb(51, 51, 51) !important]}
\usepackage[color=rgb(51, 51, 51) !important]{CJK[color=rgb(51, 51, 51) !important]}
\usepackage[color=rgb(51, 51, 51) !important][dvipdfmx[color=rgb(51, 51, 51) !important][color=rgb(51, 51, 51) !important]{hyperref[color=rgb(51, 51, 51) !important]}
\hypersetup[color=rgb(51, 51, 51) !important]{CJKbookmarks[color=rgb(51, 51, 51) !important]}
\AtBeginShipoutFirst[color=rgb(51, 51, 51) !important]{\input[color=rgb(51, 51, 51) !important]{zhwinfonts[color=rgb(51, 51, 51) !important].tex[color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important]}
\AtBeginShipoutFirst[color=rgb(51, 51, 51) !important]{\special[color=rgb(51, 51, 51) !important]{pdf[color=rgb(51, 51, 51) !important]:tounicode[color=rgb(0, 111, 224) !important] GBK-EUC-UCS2[color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important]}
\begin[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}
\begin[color=rgb(51, 51, 51) !important]{CJK*[color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important]{GBK[color=rgb(51, 51, 51) !important]}[color=rgb(51, 51, 51) !important]{song[color=rgb(51, 51, 51) !important]}
\section[color=rgb(51, 51, 51) !important]{中文书签不会乱码[color=rgb(51, 51, 51) !important]}
GBK[color=rgb(51, 51, 51) !important]~编码,\LaTeX[color=rgb(51, 51, 51) !important]{[color=rgb(51, 51, 51) !important]}[color=rgb(0, 111, 224) !important] -[color=rgb(0, 111, 224) !important] DVIPDFMx[color=rgb(51, 51, 51) !important]~编译。
\clearpage
\end[color=rgb(51, 51, 51) !important]{CJK*[color=rgb(51, 51, 51) !important]}
\end[color=rgb(51, 51, 51) !important]{document[color=rgb(51, 51, 51) !important]}



[size=13.1428575515747px]选自:http://liam0205.me/2014/11/22/latex-pdf-cjk-bookmarks/


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群