使每个页码链接回章节或部分的开头

使每个页码链接回章节或部分的开头

我想知道是否可以让出现在每页页脚中的页码链接回它们出现的章节或节的开头。

我有一段用于链接回目录的代码:

\usepackage{fancyhdr}
\fancypagestyle{plain}{% % <-- this is new
  \fancyhf{} 
  \fancyfoot[CO]{\hyperref[sec:toc]{\thepage}}

...我在这里发现的:这里

我尝试使用\thechapter\thesection作为超链接目标,但它不起作用,即使我在另一个问题中完成了类似的事情:问题

这里我将词汇表列表的每一组字母链接回词汇表的开头,\thechapter作为超链接目标:

...

 \renewcommand*{\glsgroupheading}[1]
    {
    \begin{center}
    \vspace{25pt}
    \glsnavhypertarget{##1}{}
    \vspace{25pt}
    \end{center}
    \needspace{6\baselineskip}\item[]\makebox[-85pt]{\begin{Large}\textbf{\glsgetgrouptitle{\hyperref[\thechapter]{##1}}}\end{Large}}
    }
...

我猜是因为\thechapter\thesection返回了章节/节号。但不确定为什么它在我的其他问题中有效而在这里无效。我以为这是个侥幸,但当我尝试使用页码(使用 fancyhdr)链接到章节开头时,我得到了一个引用错误,而当链接到词汇表的开头时(更新词汇表组标题命令)却没有得到引用错误。

有没有办法将页码概括为当前章节或节的链接?

任何帮助都将受到赞赏。

以下是 MWE:

\documentclass{report}
\usepackage[margin=1in]{geometry}

\usepackage{setspace}
\doublespacing
\emergencystretch=1em

\usepackage{ragged2e}
\usepackage[english]{babel}
\usepackage{hyperref}
\usepackage{bookmark}

\usepackage{fancyhdr}
\fancypagestyle{plain}{
  \fancyhf{} 
  \fancyfoot[CO]{\hyperref[sec:toc]{\thepage}} 
  \renewcommand{\headrulewidth}{0pt}}

%Quick Filler Text
\usepackage{blindtext}
\usepackage{kantlipsum}

\begin{document}
\tableofcontents
\label{sec:toc}
\pagestyle{plain}

\chapter{Introduction}
\label{intro}
\blindtext[5]

\chapter{Next}
\label{next}
\blindtext[3]
\blinditemize
\blindtext[2]

\section{And Then}
\label{andthen}
\blindtext[6]
\blindenumerate

\chapter{Math}
\label{math}
\blindtext[5]

\section{Some Math}
\label{somemath}
\blindmathpaper

\chapter{Conclusion}
\label{conclusion}
\blindtext{20}
\end{document}

答案1

\documentclass{report}
\usepackage[margin=1in]{geometry}

\usepackage{setspace}
\doublespacing
\emergencystretch=1em

\usepackage{ragged2e}
\usepackage[english]{babel}
\usepackage{hyperref}
\usepackage{bookmark}

\usepackage{fancyhdr}
\renewcommand{\headrulewidth}{0pt}

\pagestyle{fancy}
\fancyhf{}
\fancyfoot[CO]{\rightmark}
\fancypagestyle{plain}{\pagestyle{fancy}}

%Quick Filler Text
\usepackage{blindtext}
\usepackage{kantlipsum}
\makeatletter
\def\chaptermark#1{\markboth
  {\MakeUppercase {\ifnum \c@secnumdepth >\m@ne \@chapapp \ \thechapter . \ \fi #1}}
  {\protect\hyper@linkstart{link}{\@currentHref}{to current chapter: \protect\thepage}\protect\hyper@linkend}}

\def\sectionmark#1{\markright{\protect\hyper@linkstart{link}{\@currentHref}{to current section: \protect\thepage}\protect\hyper@linkend}}
\makeatother
\begin{document}
\tableofcontents
\label{sec:toc}
\pagestyle{plain}

\chapter{Introduction}
\label{intro}
\blindtext[5]

\chapter{Next}
\label{next}
\blindtext[3]
\blinditemize
\blindtext[2]

\section{And Then}
\label{andthen}
\blindtext[6]
\blindenumerate

\chapter{Math}
\label{math}
\blindtext[5]

\section{Some Math}
\label{somemath}
\blindmathpaper

\chapter{Conclusion}
\label{conclusion}
\blindtext{20}
\end{document}

答案2

您可能希望在章节标题中添加标签,然后通过 \pageref 引用它

...
\chapter{xx}\label{ch:xx}
... further content goes here
Put something like this where you want the page reference: Chapter ``\nameref{ch:xx}'' is on \pageref{ch:xx} (you only need the pageref-command)

我希望这有帮助。

答案3

看起来这个可行,必须重新定义章节和部分格式:

\documentclass{report}
\usepackage[margin=1in]{geometry}

\usepackage{setspace}
\doublespacing
\emergencystretch=1em

\usepackage{ragged2e}
\usepackage[english]{babel}
\usepackage[linktoc=all]{hyperref}
\usepackage{bookmark}
\usepackage[explicit, noindentafter]{titlesec}
\usepackage{titlesec}


\AtBeginDocument{\def\chapterautorefname{Chapter}}%
\AtBeginDocument{\def\sectionautorefname{Section}}%

%Chapter Title Format
\titleformat{\chapter}[display]{\hypertarget{section::\theHsection}{}\bfseries\centering}{\huge Chapter \thechapter}{1em}{\huge #1}
\titlespacing{\chapter}{0pt}{-32pt}{1cm}

%Section Title Format
\titleformat{\section}[display]{\hypertarget{section::\theHsection}{}\bfseries}{\large\thesection \hspace{6pt} #1}{3pt}{}
\titlespacing{\section}{0pt}{16pt}{-18pt}

\usepackage{fancyhdr}
\fancypagestyle{plain}{
  \fancyhf{} 
  \fancyfoot[CO]{\hyperlink{section::\theHsection}{\thepage}}
  \renewcommand{\headrulewidth}{0pt}}

%Quick Filler Text
\usepackage{blindtext}
\usepackage{kantlipsum}

\begin{document}
\tableofcontents
\label{sec:toc}
\pagestyle{plain}


\chapter{Introduction}
\label{intro}
\blindtext[5]

\chapter{Next}
\label{next}
\blindtext[3]
\blinditemize
\blindtext[2]

\section{And Then}
\label{andthen}
\blindtext[6]
\blindenumerate

\chapter{Math}
\label{math}
\blindtext[5]

\section{Some Math}
\label{somemath}
\blindmathpaper

\chapter{Conclusion}
\label{conclusion}
\blindtext{20}
\end{document}

它适用于我的 MWE,稍后将在我的论文中对其进行测试并报告。

相关内容