latex_hyperref_生成PDF书签乱码的解决方案
更新时间:2023-05-23 08:14:01 阅读量: 实用文档 文档下载
- late推荐度:
- 相关推荐
可以解决生成PDF文件标签乱码的问题。
Latex中使用dvipdfm转换方式hyperref包生成PDF中文书签乱码的解决方案 【下载】
gbk2uni
TeX生成pdf文件时中文书签经常出现乱码, 网上讨论颇多, 解决方法之一是用gbk2uni把.out文件中的GBK编码转化为Unicode编码后再编译一遍。这个gbk2uni是cxterm、张林波和HookLee共同开发的, 点击这里下载, 解压后可以把gbk2uni.exe拷入path所在路径, 比如MiKTeX的安装目录texmf\miktex\bin下。
使用方法如下:
Linux命令行编译顺序如下:
$ latex main.tex
$ bibtex main.tex
$ latex main.tex
$ gbk2uni main.out
$ latex main.tex
$ dvipdfm main.dvi
DOS用批处理编译的话与些相似(省略了扩展名):
latex main
bibtex main
latex main
gbk2uni main
latex main
dvipdfmx main
参考链接:
1. /tex.html
2.
gbk2uni的问题
关键的问题就是如果文档不是GBK编码的,比如用的最多的UTF-8或其他编码,这种方式就会失效,因为gbk2uni依然按照GBK字符去转换,为了和国际接轨(^^),建议统一使用UTF-8进行latex文档的编写,为了正常生成PDF标签,我使用java做了一个工具可以辅助生成。此工具支持所有编码类型的转换。
可以解决生成PDF文件标签乱码的问题。
解决方案LatexHyperrefCharsetTool
可以解决生成PDF文件标签乱码的问题。
注意此文档必须使用UTF-8编码
1 检查您机器上的java环境是否正确(需求:JRE/JRE 1.5+ )。
2 将Charset2Unicode.class文件放入与此文件相同的目录下。
3 执行编译(建议编写批处理文件)。
可以解决生成PDF文件标签乱码的问题。
t_UTF-8是文件名(省略后缀)
编译结果(运行t_UTF-8.pdf)
可见PDF一切正常。
可以解决生成PDF文件标签乱码的问题。
% 导言区使用中文,必须引入一个 CJK 环境 \begin{CJK*}{GBK}{song} \end{CJK*} \usepackage{indentfirst} \setlength{\parindent}{2em}%中文缩进两个汉字位 \renewcommand{\baselinestretch}{1.2}%行距 \usepackage[dvipdfm,%需要使用 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 宏
包通常要求放在导言区的最后!!!
\renewcommand\contentsname{\hfil{}目~~~~~录}%目录文字
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 正文 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} \begin{CJK*}{GBK}{song} \tableofcontents%目录 \section{中华\{哈\}人民共和国} \subsection{1} \section{二} \subsection{1} \subsubsection{1} 这是中文。``哈哈''。这是中文。``哈哈''。这是中文。``哈哈''。 这是中文。``哈哈''。
可以解决生成PDF文件标签乱码的问题。
TeXworks 是在 TUG(TeX Users Group)的支持下正在开发的一个全新的 TeX/LaTeX 编辑器。它的首要特点如下:自带了一个 pdf 浏览器,编辑 latex 文件时可以迅速预览排版后的 pdf 文件;默认情况下 latex 编辑窗口在左边,pdf 浏览窗口在右边,各占一半桌面,在大屏幕宽屏显示器显示的效果最好不过了。还有就是它的设计目 标是简单易用,所以只支持直接生成并预览 pdf,避免 dvi, ps, pdf 各种文件格式对初学者的干扰。 All packages using GNU Automake to produce distribution tarballs with make dist should update to the 1.11.1 or 1.10.3 release, or otherwise work around the problem. \section{嘿嘿}
这是中文。``哈哈''。这是中文。``哈哈''。这是中文。``哈哈''。这是中文。``哈哈''。这是中文。``哈哈 ''。这是中文。``哈哈''。这是中文。``哈哈''。这是中文。``哈哈''。这是中文。``哈哈''。这是中文。`` 哈哈''。这是中文。``哈哈''。 %解决 bug 创建新页 \newpage{} \end{CJK*} \end{document} 脚本 latex gbk_1 java -classpath . Charset2Unicode GBK gbk_1.out latex gbk_1 dvipdfmx 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; /**
可以解决生成PDF文件标签乱码的问题。
* @author 杨帆 yifi@ */ 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<String, Charset> availableCharsets = Charset .availableCharsets(); for (Map.Entry<String, Charset> entry : availableCharsets .entrySet()) { System.out.println(entry.getKey()); } } else { // 处理文件 File srcFile = new File(args[1]); // 文件不存在 if (!srcFile.exists()) { System.out.println(args[1] + " not exists!"); System.exit(-1); } // 清除备份文件 try { new File(args[1] + ".bak").delete(); } catch (Exception e) { } // 改名为备份文件 srcFile.renameTo(new File(args[1] + ".bak")); // 操作文件 srcFile = new File(args[1] + ".bak"); // 生
成新文件 File desFile = new File(args[1]); // 输出流 PrintWriter writer = new PrintWriter(desFile, "UTF-8"); // 读取字符流 BufferedReader reader = new BufferedReader(new InputStreamReader( new FileInputStream(srcFile), args[0])); String line;
可以解决生成PDF文件标签乱码的问题。
Pattern pattern = Pattern .compile("^([^\\{]*\\{[^\\}]*\\}\\{)([^\\}]*)(\\}.*)$"); 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("\\376\\377"); // 将字符转换为八进制 UTF16-BE String 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)); j = j + 3; } else { // 字符转换 byte[] b = new String(c + "") .getBytes("UTF-16BE"); for (int k = 0; k < b.length; k++) { sb.append(Byte2OctString(b[k])); } } } } else { sb.append(matcher.group(i)); } } } else { // 不匹配不操作 } // 写入目标文件 System.out.println("log:" + sb.toString());
可以解决生成PDF文件标签乱码的问题。
【下载】
祝使用愉快,如果有什么建议,请给我发邮件 yifi(a).
正在阅读:
latex_hyperref_生成PDF书签乱码的解决方案05-23
外国文学史复习资料综合版01-04
2017年复旦大学新闻学院823传播实务之网络传播概论新编考研导师圈点必考题汇编05-04
关于动物的感人故事02-09
设备管理知识题库02-01
修该 青少年眼健康知识的讲座505-24
融资租赁业务介绍及其操作流程08-30
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 乱码
- 书签
- hyperref
- 生成
- 解决方案
- latex
- 第二章 流体输送机械习题
- 黑龙江省七台河市勃利县2019-2020学年八年级(上)期末考试物理试题
- 黑龙江省哈尔滨五常市2019-2020学年八年级(上)期末考试物理试题
- 初中数学--圆讲义级习题
- 亚非拉民族民主运动
- 2013海南省会计基础试题及答案
- 2013中考第一轮复习 质量与密度
- ACCESS窗体的概念和作用
- 慈溪市观海卫共为通信设备厂产品介绍、FTTx解决方案
- 材料成型基础及参考答案
- 高频电子线路试题详解
- 外企面试全部问题
- 黑龙江省齐齐哈尔市昂昂溪区2020-2021学年八年级(上)期中物理试题
- 2013三级河南省建造师最新考试试题库
- 计算机控制系统论文
- 等量关系的五种类型
- 九年级数学二次函数教案
- 桩基检测技术发展现状和展望
- 2015年自考金融管理中英合作本科考试计划
- 江苏省苏州市相城区2012-2013学年七年级政治上学期阶段性测试试题苏教版_