[zz]用Beamer制作幻灯片时,生成的中文书签是乱码
生成侧边栏的导航会是乱码解决参考http://bbs.ctex.org/viewthread.php?tid=50582
最近开始学用beamer做幻灯片,然而beamer不能使用dvipdfmx来生成pdf所以对中文标签的支持不能通过dvipdfmx来完成。我用的是utf8环境,CJKutf8可以很好的完成中文标签tounicode的转换,但是beamer.cls中的定义存在问题。batman在bbs.ctex.org上提出了对其的修改,使之能支持CJKutf8宏包的这一功能。具体如下:
打开/usr/share/texmf/tex/latex/beamer/beamer.cls,或/usr/share/texmf/tex/latex/beamer/base/beamer.cls 找到
\DeclareOptionBeamer{CJK}{\ExecuteOptionsBeamer{cjk}}
\DeclareOptionBeamer{cjk}{
\def\beamer@hypercjk{\hypersetup{CJKbookmarks=true}}
\def\beamer@activecjk{
% Activate all >128 characters.
\count@=127
\@whilenum\count@<255 \do{%
\advance\count@ by 1
\lccode`\~=\count@
\catcode\count@=\active
\lowercase{\def~{\kern1ex}}
}
}
}
在beamer3.06中是在178行,把% Activate all >128 characters.改成% Activate all >=0x80 characters. 然后在上文的第三个} 后加上下面几句:
\DeclareOptionBeamer{CJKutf8}{\ExecuteOptionsBeamer{cjkutf8}}
\DeclareOptionBeamer{cjkutf8}{%
\PassOptionsToPackage{unicode}{hyperref}
\def\beamer@activecjk{
% Activate all characters >= 0x80.
\count@=127
\@whilenum\count@<254 \do{%
\advance\count@ by 1
\lccode`\~=\count@
\catcode\count@=\active
\lowercase{\def~{\kern1ex}}
}
}
}
之后用\documentclass[CJKutf8]{beamer}调用beamer类,并用\usepackage{CJKutf8}来使用CJKutf8宏包,之后按常规使用中文环境,最后用pdflatex编译 .tex文档两次即可。