具有相同标识符 (name{page.}) 的目标已被使用,重复被忽略警告

具有相同标识符 (name{page.}) 的目标已被使用,重复被忽略警告

考虑这个测试用例:

\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

您可以通过多种方式避免这种情况:

  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
    % ...
    
  2. 上述选项可能不是最佳选择,因为页码通常显示在输出 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。

相关内容