在使用CJK宏包编辑中文时,可以使用不同的编码方式,一种是UTF-8格式;另外一种是GBK编码。在使用GBK编码时,生成的PDF格式中的文本是GBK的编码方式,因此大部分不支持GBK编码的PDF阅读器无法正确的显示PDF文档,如下图所示。

这是因为在使用Hyperref宏包产生书签(Bookmark)时,使用的参数为CJKbookmarks=true,该参数不能与Hyperref的unicode参数同时使用,不然会产生冲突。因此,要么源文件中改用UTF-8的编码方式,要么使用GBK编码生成PDF中,改变编码方式。本文主要介绍第二种。

解决问题的思路很简单,即在生成PDF过程中改变编码方式,而改变的方法是将编译中间生成的.out文件中的GBK编码替换掉。这里推荐一个好用的小工具,即gbk2uni。该工具可以将out文件中的书签变成unicode格式。使用方法如下:

  • 使用PdfLatex和BibTex等工具生成带有中文乱码的PDF文档;
  • 下载上述的工具gbk2uni,在.out文件所在目录执行gbk2uni *.out
  • 在转换成功后,只需执行PdfLatex一次即可。

运行以下两个命令:

Linux系统:
gbk2uni ${TEX_NAME}.out
pdflatex ${TEX_NAME}.tex
Windows系统
gbk2uni 你的文件名.out(跟*.tex一个目录,没有就自己创建一个)
pdflatex 你的文件名.tex
 

除了上述工具,还有人用Python实现了gbk2uni,参考地址在这里。执行成功后如下图所示。

转自:http://blog.csdn.net/zxia1/article/details/17504147

Latex之CJK中文书签乱码[转]的更多相关文章

  1. Latex 环境下“中文字体”的使用

    Latex 环境下“中文字体”的使用 使用CTex自带编辑器WinEdt,在该环境下如何使用中文字体呢?作为一个菜鸟,折腾了好几天,最终基本解决了这个问题.现在整理下,分享给后来者. 对于使用中文字体 ...

  2. latex之在windows环境下能够在latex中使用中文

    今天要把前段时间的实验用英语先记录下来,自己就想根据原来会议的模版弄一个简易的页面(英语),突然想到之前用英文模板时是不能输入中文的,于是想着怎么在latex中输入中文,折腾了许久,终于成功了,现在分 ...

  3. 怎样在LaTeX中使用中文

    因为疫情在家中上课,作业提交都必须使用PDF.反正时间充裕,不如趁机回顾一下LaTeX的使用. 之前一直用的是Vimtex,但是感觉还是不太方便,于是改用了Texpad.Texpad的强大之处在于它支 ...

  4. eclipse运行没问题,tomcat以脚本启动后插入数据库的中文会乱码

    记一次部署工程的时候遇到的问题 部署war包到win7的时候发现,布上去后插入数据库的中文会乱码,然后发现用eclipse运行源码没问题,一开始以为是war打出来的时候编码错误,然后将eclipse的 ...

  5. Linux中文显示乱码?如何设置centos显示中文

    Linux中文显示乱码?如何设置centos显示中文 怎么设置Linux系统中文语言,这是很多小伙伴在开始使用Linux的时候,都会遇到一个问题,就是终端输入命令回显的时候中文显示乱码.出现这个情况一 ...

  6. spring mvc 中文参数乱码

    最近做项目,springmvc的url中文参数乱码: 请求url: http://localhost:8080/supply/supply_list.htm?productName=测试&is ...

  7. Xshell个性化设置,解决Xshell遇到中文显示乱码的问题

    在同事的推荐下,今天开始使用Xshell连接Linux,但是发现一个“遇到中文显示乱码”的问题, 同事的解决方案如下: 平常给Linux上传文件之前,先把文件转换成UTF-8编码形式, 然后设置Xsh ...

  8. 在strust2 框架下,前端APP传过来的中文数据乱码问题

    public String addMessage() throws UnsupportedEncodingException{ Patient patient=new Patient(); patie ...

  9. [原创]使用Gradle的插件EnIDE build的时候,输出的中文总是乱码。

    使用Gradle的插件EnIDE build的时候,输出的中文总是乱码.解决办法:在EnIDE的设置里面,设置JVM options GRADLE_OPTS 为:-Dfile.encoding=UTF ...

随机推荐

  1. hdu4123-Bob’s Race(树形dp+rmq+尺取)

    题意:Bob想要开一个运动会,有n个房子和n-1条路(一棵树),Bob希望每个人都从不同的房子开始跑,要求跑的尽可能远,而且每条路只能走最多一次.Bob希望所有人跑的距离的极差不大于q,如果起点的编号 ...

  2. android开发中遇到的问题

    7.ExpandableListView setOnChildClickListener无效,请在adapter的方法isChildSelectable返回true即可 6.使用<shape/& ...

  3. SQL2008-字符转数字CAST和CONVERT

    语法 使用CAST: CAST(expression AS data_type) 使用CONVERT: CONVERT(data_type[(length)],expression,[style])例 ...

  4. [iOS基础控件 - 5.1] UIScrollView

    A.需要掌握 UIScrollView 是一个能够滚动的视图控件,可以用来展示大量内容,如手机的“设置” 1.常见属性 2.常用代理方法 3.缩放 4.UIScrollView和UIPageContr ...

  5. 引爆公式让你的APP游戏成为下一个“爆款”

    在2014年的移动互联网领域,“魔漫相机”是一款值得关注的产品.虽然没有腾讯.百度或阿里巴巴等大资源的支持,但是这款应用一上线就在中国市场发展迅猛,日下载量超过80万次,最高一日达300万次.类似的成 ...

  6. Javascript注意事项二【避免误用parseInt】

    parseInt("123abc"); //123parseInt("1.73"); //1parseInt(".123"); //NaN ...

  7. ios怎样实现快速将显卡中数据读出压缩成视频在cocos2dx扩展开发中

    如果解决ios怎样实现快速将显卡中数据读出压缩成视频在cocos2dx扩展开发中 手机平台性能是个关键问题. 压缩视频分成3个步骤: 读取显卡数据, 使用编码器压缩,保存文件. 使用libav 压缩的 ...

  8. 【Cocos2d-X开发学习笔记】第09期:渲染框架之菜单类(CCMenu)的使用

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010    一.菜单项(CCMenuItem) 菜单项 ...

  9. [安卓开发]App Widget开发入门指导

    本节所要讲的主要内容包括Android桌面小部件.App Widget的开发入门指导,并通过一个简单实例的形式来直观的讲解App Widget. 一.Widget .App Widget .Web A ...

  10. as3调用外部swf里的类的方法

    as3项目要调用外部swf里的类有3种方法: 1.将外部的swf发布为swc,使用时将swc引用添加到相应的项目中,这应该是最简单的一种引用.不过当项目中的类或组件比较多时就会使项目发布生成的swf文 ...