警告的内容
destination with the same identifier (name{page.5}) has been already used, duplicate ignored<to be read again>
原因
举个不太恰当的例子。一个pdf文件同时具有内部编号和显式编号。pdf的第一页的内部编号为1,第二页为2,以此类推。显式编号是你在pdf中看到的页号,比如目录里的i
ii
iii
,正文里的1
2
3
,附件里的A
B
C
。因此,内部编号和显式编号不一定能对得上;一般不会出现警告。但是在使用\frontmatter
和\mainmatter
等命令生成i
ii
iii
1
2
3
等显式编号的同时,使用了hyperref
包的话,就可能产生警告。
解决方法
不具有通用性,请勿参考。
第一步
在\begin{document}
后立刻添加\hypersetup{pageanchor=false}
,作用是:停止对页面进行内部编号。理由是:如果使用\documentclass{book}
的话,默认从封面就开始对页面进行内部编号。
封面、摘要和致谢一般不进行显式编号。
在生成封面、摘要和致谢后可以使用\frontmatter
对内容目录、表格目录和图片目录用罗马数字进行显式编号
第二步
在正文前添加\hypersetup{pageanchor=true}
,作用是:从这里开始对页面进行内部编号,从1开始。添加后即可使用\mainmatter
命令对正文内容进行从1开始的显式编号。
举例
\begin{document}
\hypersetup{pageanchor=false} % 停止内部编号
\makepreliminarypages % 生成封面、摘要和致谢
\frontmatter % 为内容目录、图片目录和表格目录生成显式编号 i ii iii
\tableofcontents % 内容目录
\listoffigures % 图片目录
\listoftables % 表格目录
\hypersetup{pageanchor=true} % 开始内部编号
\mainmatter % 为正文生成显式编号 1 2 3
\maintext % 正文
\end{document}
另记
使用hyperref
包时,可能需要使用如下参数(不知道是否默认为false)。
\usepackage[plainpages=false]{hyperref}