此問題一直困擾我很久, 以前臨時的解決方法是用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}
\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}