我正在编写一个简单的文档,使用 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 版本中得到改进)。只要您不使用选项plainpage
或hypertexnames
(当然也不使用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}