latex_hyperref_生成PDF书签乱码的解决方案.docx_第1页
latex_hyperref_生成PDF书签乱码的解决方案.docx_第2页
latex_hyperref_生成PDF书签乱码的解决方案.docx_第3页
latex_hyperref_生成PDF书签乱码的解决方案.docx_第4页
latex_hyperref_生成PDF书签乱码的解决方案.docx_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Latex中使用dvipdfm转换方式hyperref包生成PDF中文书签乱码的解决方案【下载】gbk2uniTeX生成pdf文件时中文书签经常出现乱码, 网上讨论颇多, 解决方法之一是用gbk2uni把.out文件中的GBK编码转化为Unicode编码后再编译一遍。这个gbk2uni是cxterm、张林波和HookLee共同开发的, 点击这里下载, 解压后可以把gbk2uni.exe拷入path所在路径, 比如MiKTeX的安装目录texmfmiktexbin下。使用方法如下:Linux命令行编译顺序如下:$ latex main.tex$ bibtex main.tex$ latex main.tex$ gbk2uni main.out$ latex main.tex$ dvipdfm main.dviDOS用批处理编译的话与些相似(省略了扩展名):latex mainbibtex mainlatex maingbk2uni mainlatex maindvipdfmx main参考链接:1. /tex.html2. gbk2uni的问题关键的问题就是如果文档不是GBK编码的,比如用的最多的UTF-8或其他编码,这种方式就会失效,因为gbk2uni依然按照GBK字符去转换,为了和国际接轨(),建议统一使用UTF-8进行latex文档的编写,为了正常生成PDF标签,我使用java做了一个工具可以辅助生成。此工具支持所有编码类型的转换。解决方案LatexHyperrefCharsetTool实例文档% charset: UTF-8% 可用字体 song fs hei kai li you% 导言区%documentclass9pt,b5paperarticleusepackageCJKutf8% 导言区使用中文,必须引入一个CJK环境beginCJK*UTF8songendCJK*usepackageindentfirstsetlengthparindent2em%中文缩进两个汉字位renewcommandbaselinestretch1.2%行距usepackagedvipdfm,%需要使用dvipdfm或dvipdfmx进行pdf生成 pdfstartview=FitH, CJKbookmarks=true, %unicode=true,%不要让latex自动转换unicode字符会出现各种问题 bookmarksnumbered=true, bookmarksopen=true, colorlinks=true, %注释掉此项则交叉引用为彩色边框(将colorlinks和pdfborder同时注释掉) %pdfborder=001, %注释掉此项则交叉引用为彩色边框 citecolor=magenta,% magenta , cyan linkcolor=blue, linktocpage=true, hyperref % hyperref 宏包通常要求放在导言区的最后!renewcommandcontentsnamehfil目录%目录文字% 正文%begindocumentbeginCJK*UTF8songtableofcontents%目录section中华人民共和国这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。subsection哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。TeXworks 是在 TUG(TeX Users Group)的支持下正在开发的一个全新的TeX/LaTeX 编辑器。它的首要特点如下:自带了一个 pdf 浏览器,编辑latex 文件时可以迅速预览排版后的 pdf 文件;默认情况下 latex编辑窗口在左边,pdf浏览窗口在右边,各占一半桌面,在大屏幕宽屏显示器显示的效果最好不过了。还有就是它的设计目标是简单易用,所以只支持直接生成并预览pdf,避免dvi, ps, pdf各种文件格式对初学者的干扰。All packages using GNU Automake to produce distribution tarballswith make dist should update to the 1.11.1 or 1.10.3 release, orotherwise work around the problem.section日本語検索subsection亴壪惸蠪衋subsectionsubsectionRecherche avance dentreprisesectionBelgisection这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是%解决bug 创建新页newpageendCJK*enddocument注意此文档必须使用UTF-8编码1 检查您机器上的java环境是否正确(需求:JRE/JRE 1.5+ 下载)。2 将Charset2Unicode.class文件放入与此文件相同的目录下。3 执行编译(建议编写批处理文件)。批处理文件实例latex t_UTF-8java -classpath . Charset2Unicode UTF-8 t_UTF-8.outlatex t_UTF-8dvipdfmx t_UTF-8t_UTF-8是文件名(省略后缀)编译结果(运行t_UTF-8.pdf)可见PDF一切正常。附1 GBK tex文件实例及编译脚本% charset: GBK% 可用字体 song fs hei kai li you% 导言区%documentclass9pt,b5paperarticleusepackageCJK% 导言区使用中文,必须引入一个CJK环境beginCJK*GBKsongendCJK*usepackageindentfirstsetlengthparindent2em%中文缩进两个汉字位renewcommandbaselinestretch1.2%行距usepackagedvipdfm,%需要使用dvipdfm或dvipdfmx进行pdf生成 pdfstartview=FitH, CJKbookmarks=true,%unicode=true,%不要让latex自动转换unicode会出现各种问题 bookmarksnumbered=true, bookmarksopen=true, colorlinks=true, %注释掉此项则交叉引用为彩色边框(将colorlinks和pdfborder同时注释掉) %pdfborder=001, %注释掉此项则交叉引用为彩色边框 citecolor=magenta,% magenta , cyan linkcolor=blue, linktocpage=true, hyperref % hyperref 宏包通常要求放在导言区的最后!renewcommandcontentsnamehfil目录%目录文字% 正文%begindocumentbeginCJK*GBKsongtableofcontents%目录section中华哈人民共和国subsection1section二subsection1subsubsection1这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。TeXworks 是在 TUG(TeX Users Group)的支持下正在开发的一个全新的TeX/LaTeX 编辑器。它的首要特点如下:自带了一个 pdf 浏览器,编辑latex 文件时可以迅速预览排版后的 pdf 文件;默认情况下 latex编辑窗口在左边,pdf浏览窗口在右边,各占一半桌面,在大屏幕宽屏显示器显示的效果最好不过了。还有就是它的设计目标是简单易用,所以只支持直接生成并预览pdf,避免dvi, ps, pdf各种文件格式对初学者的干扰。All packages using GNU Automake to produce distribution tarballswith make dist should update to the 1.11.1 or 1.10.3 release, orotherwise work around the problem.section嘿嘿这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。这是中文。哈哈。%解决bug 创建新页newpageendCJK*enddocument脚本latex gbk_1java -classpath . Charset2Unicode GBK gbk_1.outlatex gbk_1dvipdfmx gbk_1附2 Charset2Unicode 源代码import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.nio.charset.Charset;import java.util.Map;import java.util.SortedMap;import java.util.regex.Matcher;import java.util.regex.Pattern;/* * author 杨帆 */public class Charset2Unicode public static void main(String args) throws IOException if (args.length != 2) System.out.println(usage: Charset2Unicode charset filename);System.out.println(Available Charsets:);SortedMap availableCharsets = Charset.availableCharsets();for (Map.Entry entry : availableCharsets.entrySet() System.out.println(entry.getKey(); else / 处理文件File srcFile = new File(args1);/ 文件不存在if (!srcFile.exists() System.out.println(args1 + not exists!);System.exit(-1);/ 清除备份文件try new File(args1 + .bak).delete(); catch (Exception e) / 改名为备份文件srcFile.renameTo(new File(args1 + .bak);/ 操作文件srcFile = new File(args1 + .bak);/ 生成新文件File desFile = new File(args1);/ 输出流PrintWriter writer = new PrintWriter(desFile, UTF-8);/ 读取字符流BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(srcFile), args0);String line;Pattern pattern = Ppile(*)(*)(.*)$);while (line = reader.readLine() != null) / System.out.println(line);StringBuffer sb = new StringBuffer();/ 分解字符串Matcher matcher = pattern.matcher(line);if (matcher.find() / 匹配for (int i = 1; i = matcher.groupCount(); i+) if (i = 2) / 固定格式sb.append(376377);/ 将字符转换为八进制UTF16-BEString srcStr = matcher.group(i);for (int j = 0; j srcStr.length(); j+) char c = srcStr.charAt(j);if (c = ) / ddd此种格式原样输出, 应该在之前增加000(需要测试)sb.append(000 + c+ srcStr.charAt(j + 1)+ srcStr.charAt(j + 2)+ srcStr.charAt(j + 3)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论