CeTx解决pdf书签乱码问题

书签乱码

众所周知,LaTeX是一种基于ΤΕΧ的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在20世纪80年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由TeX所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

一般LaTeX的工具套件主要以CTeX和TexLive为主,听说CTeX比较好用(忘了听谁说的,好像是一个科研大牛说的:)),于是下载了CTeX,将近3GB,经过十分钟左右的安装,终于安装完毕,写个测试脚本,内容如下:

\documentclass[a4paper,onecolumn]{ctexart}
\usepackage{latexsym,afterpage,amssymb,amsmath,amsthm,amsbsy,amsopn,amstext,amsxtra,amscd,color,multicol}% 常用宏包
\usepackage{bm,calc,lastpage,listings,indentfirst,ifpdf,CJK,CJKnumb,fancybox,fancyhdr,float,subfigure,times,longtable}
\usepackage{everypage,lastpage}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{url}

\setcounter{secnumdepth}{4}
\pagestyle{plain}
\hypersetup{CJKbookmarks=true}

\title{标题标题}
\author{pangpang}

\begin{document}%
\begin{CJK*}{GBK}{song}

\begin{abstract}%
\noindent \textbf{摘要}
\noindent{\bf 关键字}\\
\end{abstract}

\section{第一章}
   第1章hellohello,你好。
   \section{第二章}
   第2章hellohello,你好。
   \section{第三章}
   第3章hellohello,你好。
   \section{第四章}
   第4章hellohello,你好。
   \section{第五章}
   第5章hellohello,你好。
   \section{第六章}
   第6章hellohello,你好。
   \section{第七章}
   第7章hellohello,你好。
   
\bibliographystyle{plain}
\end{CJK*}
\end{document}

选择"PDFTexify"

编译,运行,生成pdf。一切都很顺利。但是美中不足,生成的pdf标签竟然乱码!!简直无可忍受。

解决方案一:编译工具改为“PDFLaTeX”,问题解决

关于TeX几个重要名词的解释:

TeX:一种宏语言。
Plain Tex: Tex中的一个最基本的宏集合与TeX的基础语言构成的一种格式。
LaTex    : Tex中的一个宏集合,构成一种与 Plain TeX 不一样的格式。
Tex程序  :把Tex语言转换为排版的程序,也叫Tex。为区别,称这个 TeX 程序叫Knuth TeX。
tex命令  :Tex程序中的编译命令。tex命令默认用Plain TeX格式进行排版。也就是说tex命令后面默认跟的 
          tex文件应该是用Plain Tex格式写的。
latex命令:tex命令加上某一个选项使用,就会用LaTeX 格式进行排版,也就是说此时后面跟的tex文件应该是用LaTex格式写的。为方便,就把tex 命令与对应编译选项合成为一个命令,叫latex命令。
ε-TeX 程序:Knuth TeX程序的一个扩展,也是一个程序,一般写成 eTeX。增加了少量的几个命令,但一般来说是与Knuth TeX程序没有太多区别的。
实现:在文中的意思就是指“程序”的意思。如文中:eTeX 程序和 Knuth TeX 都是TeX语言的一个实现(也就是说,eTeX 程序和 Knuth TeX 都是把TeX语言转换为排版的程序。程序作用于tex文本文件,把tex文件编译成dvi文件)。
pdfTeX程序:Tex语言的又一个实现,也就是把Tex语言转换为排版的又一个程序。它会把 TeX 语言写的代码直接编译成 PDF 文件。
pdftex命令:pdfTex程序中的命令,用来编译用Plain TeX格式写的tex文件。
pdflatex命令:pdfTex程序中的命令,用来编译用LaTeX格式写的tex文件。
XeTeX程序 :TeX语言的新的实现,即把Tex语言转换为排版的一个新程序。支持Unicode 编码和直接访问操作系统字体。
xetex命令 :XeTeX程序中的命令,用来编译用Plain TeX格式写的tex文件。
xelatex命令:XeTeX程序中的命令,用来编译用LaTeX格式写的tex文件。
pdftexify :是一个winedt自己写的脚本
TeX 是一种排版语言。LaTeX 是在 TeX 基础上的一种格式。CTeX 是关于 TeX 的一个完整的具体软件包,
而ctex不过是基于miktex的一种发行,它里面可以使用tex,latex,amstex或者其他的语法,并且加入了cct中文处理,是这些东西的一个集成,简单的说是一个工具软件。

latex的软件叫miktex

4,简单澄清TeX、LaTeX、TeX Live、TeX Studio这几个概念:
TeX是一种语言,类似于Java和C之类的计算机语言,但是它是为简单的排版操作设计的;
LaTeX是TeX的扩展,又称为宏集,简单说就是TeX的命令太原始了,为了方便作者写作,Leslie Lamport给TeX语言加入了很多新的功能,这些他写的功能跟TeX加在一起被称为LaTeX。LaTeX当然也是一门语言,是基于TeX的一门语言;
TeX Live是一个TeX发行版,它是一组程序的集合,主要作用就是将你写的TeX代码进行解析排版输出成PS或者pdf。“TeX发行版相对于TeX语言”大致可以理解为“C语言编译器(如GCC或Clang)相对于C语言”的关系;

部分编译日志如下:

。。。
gbk2uni, version 0.22, initially implemented by cxterm and ZLB in Jan. 2003
  enhanced by hooklee in Mar. 2003.
  please visit www.ctex.org and www.chinatex.org for more information.
gbk2uni test.out is finished!

以上的解决方案是因为CTeX套件自带了“gbk2uni.exe”这个工具(位于CTeX安装目录\CTeX\cct\bin\下面),所以实现起来比较简单。要是工具集没有自带gbk2uni.exe这个工具怎么办呢?下面请看方案二。

解决方案二:配置gbk2uni.exe。

为了演示本方案的有效性,我们把CTeX自带的gbk2uni.exe重命名一下,让系统无法找到该可执行文件。

Step1:下载gbk2uni.exe,光速传送门压缩包内容如下:

将该压缩包,下载解压到任意目录,比如“E:\1_Program_File\CTeX\gbk2uni”

Step2:将该文件夹的绝对路径配置到系统环境的“PATH”变量,如果不清楚,请自行百度,不在本文的讨论范围。

Step3:配置。

 3.1打开WinEdt -》Options-》Options Interface..

3.2配置MainMenu.ini

双击左边Options Interface-》Menus and Toolbar-》Main Menu

CTRL+F搜索:MENU="TeX_Menu"。在第一个ITEM前面添加如下红色内容:

MENU="TeX_Menu"
  CAPTION="Te&X"
  CONFIG_FILTER="Default;MiKTeX;TeX Live"
  ITEM="-"
  ITEM="GBK2UNICODE"
    CAPTION="gbk2uni"
    IMAGE="Notepad"
    SAVE_INPUT=1
    MACRO=:Run('gbk2uni.bat %P\%N');
    REQ_FILTER="%P\%N.out"

  ITEM="TeXify"      

3.2配置Toolbar.ini

搜索字符串:BUTTON="ps2pdf",改动如下(红色内容):

  BUTTON="ps2pdf"
  BUTTON="|"
  BUTTON="GBK2UNICODE" 

Step4:保存以上两个文件,并且更新配置

此时,如果不出意外,将出现以下图标(编辑*.tex文件才能点击):

Step5:先点击"PDFLaTeX"编译一次,生成*.out文件,然后点击上一步出现的菜单栏图标

出现报错: 

E:\1_Doc\CTEX\test  2>gbk2uni E:\1_Doc\CTEX\test.out
gbk2uni, version 0.22, initially implemented by cxterm and ZLB in Jan. 2003
         enhanced by hooklee in Mar. 2003.
         please visit www.ctex.org and www.chinatex.org for more information.
Cannot open e:\1_doc\ctex\test.out to read!

test.tex所在的文件路径中空格去掉,再次尝试。处理成功:

E:\1_Doc\CTEX\test2>gbk2uni E:\1_Doc\CTEX\test2\test.out
gbk2uni, version 0.22, initially implemented by cxterm and ZLB in Jan. 2003
         enhanced by hooklee in Mar. 2003.
         please visit www.ctex.org and www.chinatex.org for more information.
gbk2uni e:\1_doc\ctex\test2\test.out is finished!

E:\1_Doc\CTEX\test2>pause

再次点击"PDFLaTeX"编译,查看pdf,可以发现,书签正常

如果无法显示书签,请点击SumatraPDF的View-》 Bookmarks

猜你喜欢

转载自blog.csdn.net/pang9998/article/details/88090767