From 51d9d5fd2716b73ae6ab6ce10d90e756ffe4c632 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 13 Jul 2012 23:19:39 +0000 Subject: new latex package footnotebackref (1jul12) git-svn-id: svn://tug.org/texlive/trunk@27034 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/footnotebackref/footnotebackref.sty | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/footnotebackref/footnotebackref.sty (limited to 'Master/texmf-dist/tex') 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 -- cgit v1.2.3