一直无法解决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之类的东西。
我想找本类似字典的东西来进行转化。
latex beamer class中文书签问题
- a14331990
- 帖子: 604
- 注册时间: 2009-03-25 9:38
- 系统: Fedora 22 x86_64
latex beamer class中文书签问题
- 附件
-
- gbk2uni.tar
- (240 KiB) 已下载 107 次
qq 591799783
email a14331990#hotmail.com a14331990#163.com
email a14331990#hotmail.com a14331990#163.com
- a14331990
- 帖子: 604
- 注册时间: 2009-03-25 9:38
- 系统: Fedora 22 x86_64
Re: latex beamer class中文书签问题
刚才自己试验出来了
注意分离数字、空格与字母,数字、空格与字母中的\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
注意分离数字、空格与字母,数字、空格与字母中的\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
email a14331990#hotmail.com a14331990#163.com
- a14331990
- 帖子: 604
- 注册时间: 2009-03-25 9:38
- 系统: Fedora 22 x86_64
Re: latex beamer class中文书签问题
最小文件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的样子。
谢谢!
\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
email a14331990#hotmail.com a14331990#163.com
- a14331990
- 帖子: 604
- 注册时间: 2009-03-25 9:38
- 系统: Fedora 22 x86_64
Re: latex beamer class中文书签问题
我把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总算懂了。
谢谢大家的关注!
\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
email a14331990#hotmail.com a14331990#163.com
-
- 帖子: 900
- 注册时间: 2006-11-23 13:04
Re: latex beamer class中文书签问题
a14331990 写了:我把123_cn.tex的导言改了下
\documentclass[hyperref={unicode},13pt,a4paper]{beamer}
这个强!!!!!!!
解决了我的问题。
