summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/footnotebackref
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-07-13 23:19:39 +0000
committerKarl Berry <karl@freefriends.org>2012-07-13 23:19:39 +0000
commit51d9d5fd2716b73ae6ab6ce10d90e756ffe4c632 (patch)
treec55fde84579b820b446cd3df3c60fca1d9b654bf /Master/texmf-dist/tex/latex/footnotebackref
parent1dc1616ebcf1c314a5a546725898542810280310 (diff)
new latex package footnotebackref (1jul12)
git-svn-id: svn://tug.org/texlive/trunk@27034 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/footnotebackref')
-rw-r--r--Master/texmf-dist/tex/latex/footnotebackref/footnotebackref.sty77
1 files changed, 77 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/footnotebackref/footnotebackref.sty b/Master/texmf-dist/tex/latex/footnotebackref/footnotebackref.sty
new file mode 100644
index 00000000000..9f2a7be5f91
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/footnotebackref/footnotebackref.sty
@@ -0,0 +1,77 @@
+%File: footnotebackref.sty
+% Copyright (C) 2012 Holger Lange
+%
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+
+\NeedsTeXFormat{LaTeX2e}[2011/06/27]
+\ProvidesPackage{footnotebackref}%
+ [2012/07/01 v1.0 Backreferences for footnotes (Holger Lange)]
+
+% This package was inspired by http://tex.stackexchange.com/a/40282
+
+\RequirePackage{letltxmacro}
+\RequirePackage{hyperref}
+\RequirePackage{kvoptions}[2010/12/23]% v3.10
+
+\SetupKeyvalOptions{family=FootnoteBackref, prefix=FootnoteBackref@}
+
+% The symbol between the footnotenumber and the footnotetext
+% If empty no symbol will be printed
+\DeclareStringOption{symbol}
+
+% Option to hyperlink the footnotenumber
+\DeclareBoolOption[true]{numberlinked}
+\ProcessKeyvalOptions*
+
+% A new counter to create an unambiguous label-tag for all hyperfootnotes
+\newcounter{BackrefHyperFootnoteCounter}
+
+% Store the original LaTeX footnote macros to separate macros
+\LetLtxMacro{\BHFN@OldFootnote}{\footnote}
+\LetLtxMacro{\BHFN@OldMakefntext}{\@makefntext}
+
+% Redefine the original footnote macro to
+% branch between the footnote with/without optional argument
+\renewcommand*\footnote{%
+ \refstepcounter{BackrefHyperFootnoteCounter}%
+ \edef\BackrefFootnoteTag{bhfn:\theBackrefHyperFootnoteCounter}%
+ \label{\BackrefFootnoteTag}%
+ \@ifnextchar[\Backref@OptHyperFootnote\Backref@HyperFootnote}
+
+% Define an new footnote without optional argument
+\newcommand\Backref@HyperFootnote[1]{%
+ \BHFN@OldFootnote{\Backref@HyperSymbol#1}}
+
+% Define an new footnote with optional argument
+\newcommand\Backref@OptHyperFootnote[2][\empty]{%
+ \BHFN@OldFootnote[#1]{\Backref@HyperSymbol#2}}
+
+% Definition of the hyperlinked symbol ...
+\newcommand\Backref@HyperSymbol{%
+ \hyperref[\BackrefFootnoteTag]{\FootnoteBackref@symbol}}
+
+% ...but if the symbol is empty it is deleted straightaway
+\ifx\FootnoteBackref@symbol\empty
+ \renewcommand\Backref@HyperSymbol\relax\fi
+
+% If the footnote number should be the reference
+% than redefine the \@makefntext and \@makefnmark
+% The \@makefnmark macro is redefined in the space of
+% the \@makefntext macro
+% So the footnote numbers in the main text are not influenced
+\ifFootnoteBackref@numberlinked
+ \renewcommand\@makefntext[1]{%
+ \renewcommand\@makefnmark{%
+ \mbox{\textsuperscript{\normalfont%
+ \hyperref[\BackrefFootnoteTag]{\@thefnmark}}}\,}%
+ \BHFN@OldMakefntext{#1}}%
+\fi
+
+\endinput