使用 hyperref 进行 Endnote 反向引用

使用 hyperref 进行 Endnote 反向引用

我使用脚注和尾注以及包尾注(尾注中也有脚注)。我想在尾注的末尾添加一个链接,链接回打开它的链接位置(除了定义尾注的位置外,其他尾注中也可能有对尾注的多个引用)。

\documentclass{article}
\usepackage[usenames]{color}
\usepackage{hyperref} 
\hypersetup{
  colorlinks=true,  %RR colors links instead of ugly boxes
  linkcolor=red
}

%% \ref replacement to color the term also eg \rrref{figure}{fig:blabla}
\def\rrref#1#2{\hyperref[#2]{#1\,}\ref{#2}}

%% multi-par endnote with label: #1=topicname  #2=reflabel #3=notetext
\usepackage{endnotes}
%RR normal number https://tex.stackexchange.com/questions/202542/ = egreg
\renewcommand\enoteformat{%  
 \makebox[0pt][r]{\theenmark. \rule{0pt}{\dimexpr\ht\strutbox+\baselineskip}}}
\usepackage{mfirstuc}
\long\def\rrendnote#1#2#3{%
\phantomsection\label{#2main}%  %RR up front to jump back to start
\stepcounter{endnote}%
\hyperref[#2]{[{\color{red}{\bf {\em \theendnote\ #1\/}}}]}% 
{\endnotetext{\phantomsection\label{#2}%  %RR StExch trick to jump correctly
\parindent=3ex
{\bf {\em \nopagebreak\xmakefirstuc{#1}\/}}\\[0.5ex]%  %RR first upper case
{~\,#3}% %RR note body
~~\hyperref[#2main]{[{\em Main call\/}]}%
}}}

%RR fatter footnote numbers https://tex.stackexchange.com/questions/68580/
\makeatletter
\renewcommand{\@makefnmark}{\hbox{\textsuperscript{\bf\scriptsize{\@thefnmark}}}}
\makeatother

%RR clicking footnotenumber jumps back to text location (not for endnotes)
\usepackage{footnotebackref}

\begin{document}  
\parindent=0ex
\parskip=3ex %% to make jump-to location clear

Bla bla bla \rrendnote{first endnote}{note:1}{%
This is the first endnote.}.

Bla bla bla \rrendnote{second endnote}{note:2}{%
This is the second endnote.  In here I
refer to the first: see \rrref{endnote}{note:1}.
Now in endnote 1 I would like to add a clicker [Back] at the
end that jumps back to its link here, before the [Main call]
clicker that jumps back to the call in the main text.
There may be more such links to an endnote.}.

Bla bla bla.

%% endnotes
\begingroup
\def\enotesize{\normalsize} %RR normal readability
\newpage
\renewcommand*{\enoteheading}{}   %RR get rid of default Notes
\section*{Notes}
\mbox{}\vspace*{-3ex}  %RR fix white space, no idea why
~~\theendnotes  %RR ~~ fix the first, no idea why
\endgroup

\end{document}

链接到小例子代码 尾注

答案1

由于跳转到目标的链接不止一个,因此返回需要借助 pdf 查看器。最简单的返回方法是使用GoBack通常通过 访问的Alt + left arrow

您可以添加与以下命令执行相同操作的操作\Acrobatmenu

\documentclass{article}
\usepackage[usenames]{color}
\usepackage{hyperref}
\hypersetup{
  colorlinks=true, 
  linkcolor=red
}


\begin{document}
\section{Test}\label{test}

\Acrobatmenu{GoBack}{Back}
\newpage 

Ref 1: \ref{test}

\newpage
Ref 2: \ref{test}
\end{document}

答案2

Ulrike Fischer 建议使用 \Acrobatmenu{GoBack}{Back} 就是答案:在上面的例子中,我在“%RR note body”行下方添加了“~~[\Acrobatmenu{GoBack}{\em Back\/}]”。它在每个尾注的末尾添加了一个 [Back] 点击器,它们可以完成工作 - 但只是部分工作:在 Ubuntu 中,它们可以在 acroread、xpdf、firefox pdf viewer 中使用,但不适用于 evince 和 chrome pdf viewer。在 macOS 中,它们可以在 Preview 和 Firefox pdf viewer 中使用,但不适用于 Safari pdf viewer。当它们不工作时,什么也不会发生(在 evince 中,我在启动 evince 的终端中收到一条可忽略的错误消息)。我可以接受这种部分成功,因为我的大多数目标读者都使用 macOS Preview。

相关内容