一个纠结了两天的问题,我之前在ctex环境下的latex项目迁移到texlive环境出现的问题。我之前的项目是gbk编码的,用ctex环境编译,因此,也只能够支持windows环境,故而,我将其转移到了texlive环境编写,字符集也由原来的gbk变为了utf8,这时出现问题了,起初解决书签乱码的方法是在编译过程中将生成的bachelor.out文件的编码由原来的gbk转为unicode,使用的是一个命令行工具gbk2uni.exe,可是现在全部变为utf8格式了out文件也不再是gbk,原来的转换方法无效了,后来也试着吧utf8格式的out文件转为unicode格式,可是还是无效,纠结很久,解决方法如下。
原文档头部如下
\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{latexsym}
\usepackage{CJK}
\usepackage{listings,xcolor}
\usepackage{graphicx}
\usepackage{titlesec}
\usepackage[dvipdfm,
pdfstartview=FitH,
CJKbookmarks=true,
bookmarksnumbered=true,
bookmarksopen=true,
colorlinks=true, %注释掉此项则交叉引用为彩色边框(将colorlinks和pdfborder同时注释掉)
%pdfborder=001, %注释掉此项则交叉引用为彩色边框
citecolor=magenta,% magenta , cyan
linkcolor=blue,
linktocpage=true,
]{hyperref} % hyperref 宏包通常要求放在导言区的最后!!!
\usepackage{titletoc}
修改为
\documentclass{ctexartutf8}
\usepackage{amsmath,amssymb}
\usepackage{latexsym}
\usepackage{CJKutf8}
\usepackage{listings,xcolor}
\usepackage{graphicx}
\usepackage{titlesec}
\usepackage[unicode,dvipdfm,
pdfstartview=FitH,
colorlinks=true, %注释掉此项则交叉引用为彩色边框(将colorlinks和pdfborder同时注释掉)
%pdfborder=001, %注释掉此项则交叉引用为彩色边框
citecolor=magenta,% magenta , cyan
linkcolor=blue,
linktocpage=true,
]{hyperref} % hyperref 宏包通常要求放在导言区的最后!!!
\usepackage{titletoc}
其中主要是将CJK包改为CJKutf8,另外原来需要开启CJKbookmark=true这些都不要了,当然\documentclass
需要改为支持CJKutf8的格式,比如ctexartutf8等。
这个问题的的确确困扰了我至少两天的时间,最终还是在google上搜索错误信息! Argument of \HyPsd@GetTwoBytes has an extra }
.找到一封邮件(http://lists.ffii.org/pipermail/cjk/2007-February/001832.html),这才恍然大悟。