最近开始学用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中?*?78行,把% 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文档两次即可。
你好,在我的电脑上怎么不能编译通过呢?
我用的是beamerexample4,将相关编码直接变成CJKutf8的,但总是提示出错(/usr/local/texlive/2007/texmf-dist/tex/latex/CJK/UTF8/UTF8.chr)
Package hyperref Warning: Option `pdfauthor' has already been used,
(hyperref) setting the option has no effect on input line 23.
! Package CJK Error: Invalid character code.
See the CJK package documentation for explanation.
Type H for immediate help.
...
l.26 \frame{\titlepage}
你的beamer是3.06的吗?还是texlive中原来的beamer?
还有你的文件是utf8编码的还是gbk编码的?
你把你的tex文件贴上来看看。
又解决了我的大问题。
Beamer 3.07 也适用。
:-)
3.07适用(texlive2008)
但是,不是“上文的第三个} 后加上下面几句”,
而是直接在上文后面加上下面几句。
大家千万不要在“上文的第三个} 后加上下面几句”,否则会抓狂的!!!
小鱼啥都好,就是说话说不清啊。
修改了一下,谢谢提醒 :-)