在引用页面中通过 \label 使用 \pageref

在引用页面中通过 \label 使用 \pageref

我正在编写一个简单的文档,使用 fancyhdr 包作为页眉和页脚,还使用 ​​hyperref 包。我使用 \label 来标记页面。

这是我的 MWE(已编辑):

\documentclass[10pt,a4paper]{report}

\usepackage[left=0.50in, right=0.50in, top=1.00in, bottom=1.00in, paperheight=11.69in, paperwidth=8.27in]{geometry}

\usepackage{amsmath,amsfonts,amssymb}
\usepackage{fancyhdr}
\usepackage{hyperref}
\usepackage{mathtools}

\fancypagestyle{fancy}{%
\fancyhf{}
\fancyhead[L]{Upper Left Header  \\
    Lower Left Header}
\fancyhead[R]{Upper Right Header  \\
    Lower Right Header}
\fancyfoot[L]{}
\fancyfoot[R]{}
\fancyfoot[C]{Page \thepage\ of \pageref{page:2}} 
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0.5pt}
}


\fancypagestyle{fancier}{%
\fancyhf{}
\fancyhead[L]{ Header 2  \\ \phantomsection\label{page:2}
Header 3 }
\fancyhead[R]{Header 4  \\
Header 5}
\fancyfoot[L]{}
\fancyfoot[R]{}
\fancyfoot[C]{Page \thepage\ of \pageref{page:2}} 
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0.5pt}
}


\fancypagestyle{fanciest}{%
\fancyhf{}
\fancyhead[L]{}
\fancyhead[R]{}
\fancyfoot[L]{}
\fancyfoot[R]{}
\fancyfoot[C]{Page \thepage\ of \pageref{page:2}} 
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0.5pt}
}


\begin{document}

    \thispagestyle{fancy}

\pagestyle{fanciest}

    This is page 1.

    \newpage

\thispagestyle{fancier}

    \label{page:2}

This is page 2. 

\newpage

This is page 3.

\end{document}

当我编译它时,它工作正常,但是当我单击标有 \pageref 的页码时,它会将我带到第一页。我该如何修复代码,以便标有 \pageref 的页码会将我带到从页眉开始的第二页?我知道 lastpage 包可用于将我带到最后一页(此 MWE 中的第三页),但我不想这样做。为了以防万一,我正在使用 XeLaTeX,因为我使用 PSTricks 图表。

先感谢您。

答案1

\pageref总是链接到由分段命令或设置目标的其他命令设置的最后一个目标,例如\phantomsection。因此它通常会跳转到页面中的某个位置。

要始终获得位于标题上方的固定位置,您可以使用 hyperref 在每个页面的左上角添加到每个页面的页面目标 (pageanchor)。但目前没有好的界面来检索其名称以进行链接(这将在下一个 hyperref 和 LaTeX 版本中得到改进)。只要您不使用选项plainpagehypertexnames(当然也不使用pageanchor=false),您可以通过这样的标签链接到这样的目标:

\documentclass[10pt,a4paper]{report}

\usepackage[headheight=24pt,left=0.50in, right=0.50in, top=1.00in, bottom=1.00in, paperheight=11.69in, paperwidth=8.27in]{geometry}

\usepackage{amsmath,amsfonts,amssymb}
\usepackage{fancyhdr}
\usepackage{hyperref}
\usepackage{mathtools}
\usepackage{refcount}
\fancypagestyle{fancy}{%
\fancyhf{}
\fancyhead[L]{Upper Left Header  \\
    Lower Left Header}
\fancyhead[R]{Upper Right Header  \\
    Lower Right Header}
\fancyfoot[L]{}
\fancyfoot[R]{}
\fancyfoot[C]{Page \thepage\ of \pagetargetref{page:2}} 
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0.5pt}
}


\pagestyle{fancy}

\NewDocumentCommand\pagetargetref{m}{%
 \hyperlink{page.\getpagerefnumber{#1}}{\pageref*{#1}}}

\begin{document}

This is page 1.

\newpage

\label{page:2}

This is page 2. 

\newpage

This is page 3.

\end{document}

相关内容