LaTeX学习心得之 —— 中文 书签无乱码 及 pdf书签链接 以及正确的tableofcontents(转)

这个文章转自: http://www.felix021.com/blog/read.php?1554

 

 

看了一天的lshort,终于对LaTeX的使用有了大致的了解,不过还是有些不够熟悉。
决定写个东西练手,但是写着写着遇到一个难以逾越的问题:
使用/label{ooxx}定义一个标签(或者叫做书签?),然后用/ref{ooxx}引用的时候,就出现两个问号"??"
网上的说法是,需要一个gbk2uni.exe把编码转换一下
因为很多人是在win下面编写的TeX文档,默认是GBK编码,而生成书签的需要用UTF-8编码才能被识别
可是我是在Ubuntu Linux下面的,默认的文本编码就是UTF8,没有必要转换了阿
网上查到有人用了hyperref包,但是加上下面这一句之后仍然是俩问号

引用
/usepackage[dvipdfm,
            pdfstartview=FitH,
            CJKbookmarks=true,
            bookmarksnumbered=true,
            bookmarksopen=true,
            colorlinks=true, %注释掉此项则交叉引用为彩色边框(将colorlinks和pdfborder同时注释掉)
            %pdfborder=001,   %注释掉此项则交叉引用为彩色边框
            citecolor=magenta,% magenta , cyan
            linkcolor=blue,
            linktocpage=true,
            ]{hyperref}       % hyperref 宏包通常要求放在导言区的最后!!!


又因为一直是直接用pdflatex b.tex编译的文档,以为是需要按照正常的方式,于是

引用
$ latex b.tex
$ dvips b.div
$ ps2pdf b.ps


可是在第一步提示

引用
LaTeX Warning: Reference `def' on page 1 undefined on input line 31.
LaTeX Warning: There were undefined references.


生成的pdf文件中仍然是不能正常显示,非常囧。
折腾了好久,网上一直没找到解释,却在无意中发现了解决方案:
如果我先用latex编译一次b.tex以后,然后再用pdflatex,就能够解决问题!
然后又突然就明白过来了,运行latex b.tex两次,第二次就没有那个warning了!
Orz... 怎么工作得像MASM似的,先扫一遍找Symbol,然后才生成目标代码。。。

如果要生成的pdf中,书签作为超级链接存在,则要加入前面的那个hyperref的package
注意里面的第一个参数dvipdfm(也可以是ps2pdf,这取决于最后你用什么命令生成pdf)
然后

引用
$ latex b.tex
$ latex b.tex
$ dvipdfm b.dvi


然后生成的b.pdf,就是理想的状态了^_^
经过测试:
如果是dvipdfm,就必须用dvipdfm来生成pdf;
如果是ps2pdf,就必须用ps2pdf生成;
如果不填写,就必须用pdflatex。

--

至于另一个很诡异的问题:
如果在/section{}里面给的是中文,那么加入/tableofcontents以后,就会出现如下错误
! Package inputenc Error: Unicode char /u 8:解 not set up for use with LaTeX.
在 http://www2.informatik.hu-berlin.de/~xu/LaTeX.html 找到了博主在 http://i.thuda.org/ir77/?p=60 找到的诡异解决方法:
在文档的末尾加上/newpage
而且居然有效。
太TMD诡异了。

你可能感兴趣的:(LaTeX学习心得之 —— 中文 书签无乱码 及 pdf书签链接 以及正确的tableofcontents(转))