latex beamer class中文书签问题

OOo,TeX,KO,ABI,GIMP,Picasa,ProE,QCAD,Inkscape,Kicad,Eagle
回复
头像
a14331990
帖子: 604
注册时间: 2009-03-25 9:38
系统: Fedora 22 x86_64

latex beamer class中文书签问题

#1

帖子 a14331990 » 2009-08-06 17:16

一直无法解决latex beamer class的中文书签问题。
症状是:
测试文件123.tex(英文),123_cn.tex(中文)。
第一次运行pdflatex 123_cn.tex,产生了
123_cn.toc
第一行\beamer@sectionintoc {1}{首页}{1}{0}{1}
以及123_cn.out
第一行\BOOKMARK [2][]{Outline0.1}{\231\226\230\165}{}
如果对于英文的123.tex,
第一次运行 pdflatex 123.tex,产生的123.toc和123.out第一行内容分别是
\beamer@sectionintoc {1}{Title}{1}{0}{1}

\BOOKMARK [2][]{Outline0.1}{Title}{}
我的理解是第一遍pdflatex把
“首页”转化为“\231\226\230\165“,没有把"Title"改动。
网上有人建议用gbk2uni(附件gbk2uni.c,gbk2uni.h)运行
gbk2uni 123_cn或gbk2uni 123_cn.out,这样可以处理123_cn.out
第一行变为
\BOOKMARK [2][]{Outline0.1}{\376\377\000\231\000\226\000\230\000\165}{}
写到这里偶然得到解决方法了,把上行的\000全删掉,其他行一样处理。
可以得到中文书签了!
最后的疑问:
\376之类的东西看不懂。把中文如何转化为\376的?答案或许在gbk2uni.c和gbk2uni.h中。
标签中的英文以及数字竟然成了乱码。或许英文数字等也该转化为\376之类的东西。
我想找本类似字典的东西来进行转化。
附件
gbk2uni.tar
(240 KiB) 已下载 107 次
qq 591799783
email a14331990#hotmail.com a14331990#163.com
头像
a14331990
帖子: 604
注册时间: 2009-03-25 9:38
系统: Fedora 22 x86_64

Re: latex beamer class中文书签问题

#2

帖子 a14331990 » 2009-08-06 21:38

刚才自己试验出来了
注意分离数字、空格与字母,数字、空格与字母中的\000不可去掉。
gbk2uni后把数字、空格与字母也处理了。
\000\040是空格
\000\061是1
\000\062是2
汉字前的\000该去掉。
举例:
神奇的Haskell 1
pdflatex第一遍
\171\136\131\107\166\204Haskell 2
gbk2uni处理
\376\377\000\171\000\136\000\131\000\107\000\166\000\204\000\110\000\141\000\163\000\153\000\145\000\154\000\154\000\040\000\061
开始改上行
\376\377是头,不管,
汉字部分在未处理行与已处理行中十分相似
根据猜测204表示汉字的结尾。于是204前的均删一个\000(注意连着的\000也只能删一个)。
得到\376\377\171\136\131\107\166\204\000\110\000\141\000\163\000\153\000\145\000\154\000\154\000\040\000\061
qq 591799783
email a14331990#hotmail.com a14331990#163.com
头像
a14331990
帖子: 604
注册时间: 2009-03-25 9:38
系统: Fedora 22 x86_64

Re: latex beamer class中文书签问题

#3

帖子 a14331990 » 2009-08-07 7:53

最小文件123_cn.tex如下:
\documentclass[13pt,a4paper]{beamer}
\usepackage{CJKutf8}
\usetheme{PaloAlto}

\begin{document}
\begin{CJK}{UTF8}{song}

\section{123 hello 汉字 123 hello}
\begin{frame}[plain]
\titlepage
\end{frame}




\end{CJK}
\end{document}

pdflatex第一遍得到
\BOOKMARK [2][]{Outline0.1}{123 hello \154\111\133\127 123 hello}{}
用gbk2uni处理得到
\BOOKMARK [2][]{Outline0.1}{\376\377\000\061\000\062\000\063\000\040\000\150\000\145\000\154\000\154\000\157\000\040\000\154\000\111\000\133\000\127\000\040\000\061\000\062\000\063\000\040\000\150\000\145\000\154\000\154\000\157}{}
在123_cn.out中修改上行得到
\BOOKMARK [2][]{Outline0.1}{\376\377\000\061\000\062\000\063\000\040\000\150\000\145\000\154\000\154\000\157\000\040\154\111\133\127\000\040\000\061\000\062\000\063\000\040\000\150\000\145\000\154\000\154\000\157}{}
第二遍pdflatex得到正确显示
123 hello 汉字 123 hello
从上面看,gbk2uni给第一遍生成的123_cn.out加了个头\376\377,再把数字,字母,空格转成\000\xxx的样子,只是不该给汉字也加\000。加头\376\377我也会,请问有什么好办法直接把数字,字母,空格转成\000\xxx的样子。
谢谢!
qq 591799783
email a14331990#hotmail.com a14331990#163.com
头像
a14331990
帖子: 604
注册时间: 2009-03-25 9:38
系统: Fedora 22 x86_64

Re: latex beamer class中文书签问题

#4

帖子 a14331990 » 2009-08-07 12:40

我把123_cn.tex的导言改了下
\documentclass[hyperref={unicode},13pt,a4paper]{beamer}
\usepackage{CJKutf8}
\usetheme{PaloAlto}
\begin{document}
\begin{CJK}{UTF8}{song}
\section{123 hello 汉字 123 hello}
\begin{frame}[plain]
\titlepage
\end{frame}
\end{CJK}
\end{document}
仅仅是在ctex论坛的朋友的建议下加了hyperref={unicode}
直接两遍pdflatex就行,不用gbk2uni。
后来我看了下beameruserguide和hyperref manual总算懂了。
谢谢大家的关注!
qq 591799783
email a14331990#hotmail.com a14331990#163.com
dogal
帖子: 900
注册时间: 2006-11-23 13:04

Re: latex beamer class中文书签问题

#5

帖子 dogal » 2012-03-28 20:37

a14331990 写了:我把123_cn.tex的导言改了下
\documentclass[hyperref={unicode},13pt,a4paper]{beamer}

这个强!!!!!!!

解决了我的问题。 :em11
回复