Latex + CJK + Beamer制作中文PDF文档书签乱码问题的解决

试验了很久,终于找到解决方案。参考http://hi.baidu.com/wtx358/blog/item/8e94698969f771b40e244463.html

本质的问题是CJK支持uft8编码,但是beamer没有CJKutf8选项。因此,修改beamer.cls文件,增加一块关于CJKuft8的定义即可。

转贴上面链接中的内容:

\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}}

}

}

}

把% 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文档两次即可。

《Latex + CJK + Beamer制作中文PDF文档书签乱码问题的解决》有5个想法

  1. documentclass[]{beamer}
    usetheme{default}
    usepackage[utf8]{inputenc}
    usepackage{fontspec}
    usepackage{xeCJK}
    setCJKmainfont{AR PL UMing CN}
    title{乱码1/2}
    author{YXY}
    date{today}
    begin{document}
    frame{titlepage}
    section{乱码测试}
    begin{frame}
    乱码测试
    end{frame}
    subsection{测试乱码}
    begin{frame}
    测试乱码
    end{frame}
    end{document}

    xelatex编译通过,毫无乱码:)

    1. “documentclass[]{beamer}”
      usepackage[utf8]{inputenc}

      这两行和起来正好用了beamer的默认格式,然后用额外的uft8和xeCJK处理汉字。这个做法很不错。有意思。

      不过从逻辑上说,用beamer本身来处理汉字,由它来调用CJK(或者xeCJK),更合理。

  2. usepackage[utf8]{inputenc}貌似标准用法,我看了网上好多theme都是这样处理的,我就照着做了,这样省心,不过编译有点慢,不知道为什么。而且,和bib一样,beamer必须编译两遍才能正常显示书签什么的,一直搞不清楚为什么。

发表评论

电子邮件地址不会被公开。 必填项已用*标注