本文共 2954 字,大约阅读时间需要 9 分钟。
用beamer制作演示文稿时, 加上CJK选项后正文显示中文正常, 但书签是乱码. 此问题一直困扰我很久, 以前临时的解决方法是用utf8编码编写文档, 但在 CJK参数中用GB编码方式. 编译tex文档是把tex文档用iconv转换成GBK编码的 文档, 然后用pdflatex编译, 再用gbk2uni程序转换书签, 最后再用pdflatex 编译. 虽然达到了效果, 但很繁琐. 最近又碰到新的麻烦, 新加入的utf8编码 的字体无法使用. 所以想解决此问题. 网上搜索了一下, 大部分都是用gbk2uni转换的方法. 也看到在写article类型 文章时用hyperref包加unicode参数的方法. 在beamer上实验了一下, 出错! 感觉beamer可能也用hyperref来做书签. 就搜索latex-beamer的deb包(ubuntu) 看看hyperref在哪里被beamer使用了. 在文件/usr/share/texmf/tex/latex/beamer/base/beamer.cls中找到: \PassOptionsToPackage{bookmarks=true,% bookmarksopen=true,% pdfborder={0 0 0},% pdfhighlight={/N},% unicode=true,% <-------------- 加入此行 linkbordercolor={.5 .5 .5}}{hyperref} 把unicode参数加入后, 用下面的tex测试, 书签正常了. 最近开始学用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文档两次即可。
\documentclass{beamer}
\usepackage{CJKutf8} \mode<presentation> { \usetheme[headheight=0.2in]{boxes} \setbeamercovered{transparent} \usecolortheme{dolphin} } %\usepackage[latin1]{inputenc} \usepackage{times} \usepackage{tikz} \usepackage{multimedia} \usepackage{amsmath} %\usecolortheme{sidebartab} \pgfdeclareimage[height=1.5cm,width=1.5cm]{logoUni}{logo2} \logo{\pgfuseimage{logoUni}} \AtBeginSection[] { \begin{frame}<beamer> \frametitle{} \tableofcontents[currentsection] \end{frame} } \AtBeginSubsection[] { \begin{frame}<beamer> \frametitle{} \tableofcontents[currentsubsection] \end{frame} } \begin{document} \begin{CJK}{UTF8}{song} \title{程序结构} \author{微机原理} \begin{frame} \titlepage \end{frame} \section*{摘要} \frame{\tableofcontents} \section{汇编源程序的编程格式} \begin{frame} \frametitle{分类} \begin{itemize} \item<1-> EXE文件的编程格式 \item<2-> COM文件的编程格式 \item<3-> COM文件的执行级别最高,EXE文件次之,同名BAT文件级别最低 \end{itemize} \end{frame} \section{文本方式BIOS屏幕功能调用} \begin{frame} \frametitle{显示存储器} \begin{itemize} \item<1-> 启动DOS,适配器自动工作在80X25文本方式下 \item<2-> 待显示字符ASCII码存放在显示存储器偶地址单元 \end{itemize} \end{frame} \end{CJK} \end{document} 转载地址:http://obmti.baihongyu.com/