楼主: oliyiyi
2968 0

在 LaTeX 中使用含有中文的 PDF 书签的正确姿势 [推广有奖]

版主

泰斗

0%

还不是VIP/贵宾

-

TA的文库  其他...

计量文库

威望
7
论坛币
271951 个
通用积分
31269.3519
学术水平
1435 点
热心指数
1554 点
信用等级
1345 点
经验
383775 点
帖子
9598
精华
66
在线时间
5468 小时
注册时间
2007-5-21
最后登录
2024-4-18

初级学术勋章 初级热心勋章 初级信用勋章 中级信用勋章 中级学术勋章 中级热心勋章 高级热心勋章 高级学术勋章 高级信用勋章 特级热心勋章 特级学术勋章 特级信用勋章

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
介绍

[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/


二维码

扫码加我 拉你入群

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

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

关键词:LaTeX 正确姿势 Late atex PDF 正确姿势 中文

缺少币币的网友请访问有奖回帖集合
https://bbs.pinggu.org/thread-3990750-1-1.html
您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-24 04:10