![具有相同标识符 (name{page.}) 的目标已被使用,重复被忽略警告](https://linux22.com/image/443425/%E5%85%B7%E6%9C%89%E7%9B%B8%E5%90%8C%E6%A0%87%E8%AF%86%E7%AC%A6%20(name%7Bpage.%7D)%20%E7%9A%84%E7%9B%AE%E6%A0%87%E5%B7%B2%E8%A2%AB%E4%BD%BF%E7%94%A8%EF%BC%8C%E9%87%8D%E5%A4%8D%E8%A2%AB%E5%BF%BD%E7%95%A5%E8%AD%A6%E5%91%8A.png)
考虑这个测试用例:
\documentclass{article}
\usepackage{hyperref}
\usepackage{fancyhdr}
\fancypagestyle{empty}{
\pagenumbering{gobble}
}
\usepackage{titling}
\title{}
\author{}
\begin{document}
\pagestyle{empty}
\maketitle
\newpage
\textit{this page intentionally left blank}
\end{document}
它产生警告:
destination with the same identifier (name{page.}) has been already used, duplicate ignored<to be read again> \relax l.24 \end{document} [2] (test.aux)
hyperref
这可能与和包之间的冲突有关fancyhdr
。
有什么解决方案可以解决此警告而不会丢失或禁用功能?
一个不相关的问题:是什么原因导致页面样式fancyhdr
被破坏empty
,所以必须使用gobble
它才能使其按预期工作?可以通过包选项或其他方式修复此问题吗?
更新 1:
下列的彼得·范·奥斯特鲁姆和乌尔丽克·菲舍尔建议,我放弃了使用gobble
而改用\thispagestyle{empty}
,这解决了上面的警告。谢谢!
不幸的是,在下一步定义文档主要部分(位于目录和先前的附录之后)的样式时:
\documentclass{article}
\usepackage[headheight=30pt]{geometry}
\usepackage{hyperref}
\usepackage{fancyhdr}
\fancypagestyle{stylemain}{
\pagenumbering{arabic}
}
\usepackage{titling}
\title{}
\author{}
\begin{document}
\pagestyle{empty}
\maketitle
\thispagestyle{empty}
\newpage
\textit{this page intentionally left blank}
\newpage
\pagestyle{stylemain}
test
\end{document}
我收到了类似的警告:
destination with the same identifier (name{page.1}) has been already used, duplicate ignored<to be read again> \relax l.24 \end{document} [1] (test.aux)
我必须使用arabic
页码,因为需要从roman
目录中使用切换,所以不能像gobble
上面那样删除它。如果不删除,可以修复此警告吗arabic
?
在查看类似问题时,发现包选项是解决hypertexnames=false
方法hyperref
。它无需进行额外更改即可解决上述两个测试用例的警告问题。但根据文档,hyperref
它更像是一种隐藏警告的黑客行为,而不是解决警告。如果使用它而没有从本质上解决警告问题,会有什么后果?
答案1
\maketitle
包含\thispagestyle{plain}
覆盖empty
页面样式的。
您可以用另一个覆盖它\thispagestyle{empty}
:
\documentclass{article}
\usepackage{hyperref}
\usepackage{fancyhdr}
\usepackage{titling}
\title{}
\author{}
\begin{document}
\pagestyle{empty}
\maketitle
\thispagestyle{empty}
\newpage
\textit{this page intentionally left blank}
\end{document}
答案2
问题是您有多个页面具有相同的页码。看一下:
\maketitle% <----------------------------------- page 1
% ...
\newpage
\textit{this page intentionally left blank}% <-- page 2
\newpage
\pagestyle{stylemain}% This resets the page numbering to arabic
test% <----------------------------------------- page 1
您可以通过多种方式避免这种情况:
由于您不想在 周围打印任何页码
\maketitle
,因此可以为这两页使用任意页码。例如,\addtocounter{page}{-2}
在设置 之前添加\maketitle
会将标题和后续页面放在第 -1 页和第 0 页,而第一个实际页面(包含test
)根据需要从第 1 页开始,并且不会使用重复的页码:\pagestyle{empty} \addtocounter{page}{-2}% To avoid duplicate hyperref links to pages with same page number \maketitle \thispagestyle{empty} \newpage % ...
上述选项可能不是最佳选择,因为页码通常显示在输出 PDF 中。而看到页码 -1 和/或 0 可能会令人困惑。因此,请将页码设置为
roman
,即使它们不会在输出页面上明确显示:\pagestyle{empty} \pagenumbering{roman}% To avoid duplicate hyperref links to pages with same page number \maketitle \thispagestyle{empty} \newpage % ...
现在 PDF 查看器中的页码将显示 i 和 ii,而不是 -1 和 0。