这个问题导致了一个新的方案的出现:
footnotebackref
我习惯hyperref
将脚注标记链接到脚注本身,并且我希望从脚注本身获得某种“反向引用”来指向它们被调用的位置(就像 Wikipedia 一样)。例如:
This[1] is the text[2] that serves[3] as an example[1] to
the footnote[2] backrefence thing[4].
-------
[1] The first footnote. [a, d]
[2] The second footnote. [b, e]
[3] The third footnote. [c]
[4] The fourth footnote. [f]
其中a
、b
、c
、d
和分别链接到脚注标记的第一、第二、第三、第四、第五和第六位e
。f
我希望我能表达出我想要的意思,我不太擅长这个:P
接下来是 MWE。
\documentclass{book}
\usepackage{hyperref}
\begin{document}
This\footnote{The first footnote. [a, d]} is the text\footnote{The second footnote. [b, e]}
that serves\footnote{The third footnote. [c]} as an example\footnotemark[1] to
the footnote\footnotemark[2] backrefence thing\footnote{The fourth footnote. [f]}.
\end{document}
答案1
编辑:使用新包footnotebackref
只需将软件包包含在前言中并\footnote
像往常一样使用 -command。软件包文档中描述了两个选项。
\documentclass{article}
\usepackage{footnotebackref}
%\usepackage[symbol=$\wedge$]{footnotebackref}
%\usepackage[numberlinked=false]{footnotebackref}
\textheight=3cm
\begin{document}\noindent
Text\footnote{The first footnote.} Text\\
Text\footnote[4]{The second footnote.} Text\\
Text\footnote{The third footnote.} Text
\end{document}
原答案:
这是反向引用的一种非技巧性方法。我使用了hyperref[target]{text}
hyperref 包中的命令并创建了一个新的脚注来扩展标准脚注命令。在设置标准脚注之前,我myFootnoteTag
使用独立的计数器为标签引用机制放置了一个带有明确(!) 标签 ( ) 的标签。要从脚注引用标签,hyperref[]{}
请使用该命令。这被设置为脚注文本并在其中创建可点击的引用。在这里,可以为可点击项目选择不同的样式。
\documentclass{article}
\usepackage{hyperref}
\newcounter{myHyperFootnoteCounter}
\newcommand{\myHyperFootnote}[1]{%
\refstepcounter{myHyperFootnoteCounter}%
\def\myFootnoteTag{hfn:\themyHyperFootnoteCounter}%
\label{\myFootnoteTag}%
%\footnote{\hyperref[\myFootnoteTag]{#1}}% clickable footnotetext
\footnote{\hyperref[\myFootnoteTag]{$\wedge$}#1}% Wikipedia style
}
\makeatletter
%clickable footnote number
\renewcommand\@makefntext[1]{%
\noindent\makebox[1.8em][r]{%
\mbox{\textsuperscript{\normalfont\hyperref[\myFootnoteTag]{\@thefnmark}}}\,}#1%
}
\makeatother
\begin{document}
Text\myHyperFootnote{The first footnote.} Text\\
Text\myHyperFootnote{The second footnote.} Text\\
Text\myHyperFootnote{The third footnote.} Text\\
Text\myHyperFootnote{The fourth footnote.} Text\\
Text\myHyperFootnote{The fifth footnote.} Text\\
Text\myHyperFootnote{The sixth footnote.} Text
\end{document}
编辑:
在回答 Stephen 的问题后,我给出了一个扩展版本。我使用 TeX 命令\@ifnextchar
在带或不带可选参数的脚注之间进行分支。如果下一个字符是,\myHyperFootnote
则将执行[
宏\my@OptHyperFootnote
。如果没有,则将执行[
宏\my@HyperFootnote
。请记住,\makeatletter
现在所有宏都在环境中,因为我@
在“submacros”中使用了。
\documentclass{article}
\usepackage{hyperref}
%a new counter to create an unambiguous label-tag
\newcounter{myHyperFootnoteCounter}
\makeatletter
% branch between the footnote with/without opt. argument
\def\myHyperFootnote{\@ifnextchar[\my@OptHyperFootnote\my@HyperFootnote}
%define an new footnote without optional argument
\def\my@HyperFootnote#1{%
\refstepcounter{myHyperFootnoteCounter}%
\def\myFootnoteTag{hfn:\themyHyperFootnoteCounter}%
\label{\myFootnoteTag}%
\footnote{\hyperref[\myFootnoteTag]{$\wedge$}#1}%
}
%define an new footnote with optional argument
\def\my@OptHyperFootnote[#1]#2{%
\refstepcounter{myHyperFootnoteCounter}%
\def\myFootnoteTag{hfn:\themyHyperFootnoteCounter}%
\label{\myFootnoteTag}%
% put the optional argument to the original `footnote`
\footnote[#1]{\hyperref[\myFootnoteTag]{$\wedge$}#2}%
}
%if the footnote number should be the reference than redefine the footnote macro
\renewcommand\@makefntext[1]{%
\noindent\makebox[1.8em][r]{%
\mbox{\textsuperscript{\normalfont\hyperref[\myFootnoteTag]{\@thefnmark}}}\,}#1%
}
\makeatother
\begin{document}
Text\myHyperFootnote{The first footnote.} Text\\
Text\myHyperFootnote[4]{The second footnote.} Text\\
Text\myHyperFootnote{The third footnote.} Text\\
Text\myHyperFootnote{The fourth footnote.} Text\\
Text\myHyperFootnote[8]{The fifth footnote.} Text\\
Text\myHyperFootnote{The sixth footnote.} Text
\end{document}