diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/footnotehyper |
Initial commit
Diffstat (limited to 'macros/latex/contrib/footnotehyper')
-rw-r--r-- | macros/latex/contrib/footnotehyper/README.md | 89 | ||||
-rw-r--r-- | macros/latex/contrib/footnotehyper/footnotehyper.dtx | 1046 | ||||
-rw-r--r-- | macros/latex/contrib/footnotehyper/footnotehyper.ins | 48 | ||||
-rw-r--r-- | macros/latex/contrib/footnotehyper/footnotehyper.pdf | bin | 0 -> 57912 bytes |
4 files changed, 1183 insertions, 0 deletions
diff --git a/macros/latex/contrib/footnotehyper/README.md b/macros/latex/contrib/footnotehyper/README.md new file mode 100644 index 0000000000..a9ca08ed8c --- /dev/null +++ b/macros/latex/contrib/footnotehyper/README.md @@ -0,0 +1,89 @@ +<!-- --> + + Source: footnotehyper.dtx (v1.1 2018/01/23) + Author: Jean-Francois Burnol + Info: hyperref aware footnote.sty + License: LPPL 1.3c + Copyright (C) 2016-2018 Jean-Francois Burnol <jfbu at free dot fr>. + +ABSTRACT +======== + +The `footnote` package by Mark Wooding (`1997/01/28` `1.13`) +allows to gather footnotes (`\begin{savenotes}`) and later insert +them (after `\end{savenotes}`) at the bottom of the page, even +if the intervening material consists of tabulars, minipages or +framed contents for example. One can also use the +`\savenotes/\spewnotes` syntax. + +Also, `footnote.sty` provides a `footnote` environment which +allows to insert verbatim material. + +Earlier releases of the present `footnotehyper` package added +patches for `hyperref` compatibility and some bugfixes, addressing +in particular the incompatibility with `color/xcolor`, and with +`babel-frenchb`, and also fixing the `footnote` environment with +optional argument `[NUM]`. Since `v0.99` all macros are defined +internally and the `footnote` package is not loaded at all. + +The same user interface is kept. Since `v1.0` it is possible to +use `footnotehyper` also in absence of `hyperref` or when the latter is +loaded with its `hyperfootnotes=false` option. The order of loading of +`footnotehyper` and `hyperref` is inconsequential. + +INSTALLATION +============ + +To extract the package (.sty) and driver (.tex) files from +footnotehyper.dtx: + +- if footnotehyper.ins is present: etex footnotehyper.ins +- without footnotehyper.ins: etex footnotehyper.dtx +- or run latex or pdflatex directly on footnotehyper.dtx + +At least three ways to produce footnotehyper.pdf (method (1) is +preferred): + +1. latex footnotehyper.tex (twice), then dvipdfmx +2. pdflatex footnotehyper.dtx (twice) +3. latex footnotehyper.dtx (twice), then dvips, then ps2pdf + +Method (1) produces the smallest pdf files. +Options can be set in footnotehyper.tex: + +- scrdoc class options (paper size, font size, ...) +- with or without source code, +- with dvipdfmx or with latex+dvips or pdflatex. + +Installation: + + footnotehyper.sty -> TDS:tex/latex/footnotehyper/footnotehyper.sty + footnotehyper.dtx -> TDS:source/latex/footnotehyper/footnotehyper.dtx + footnotehyper.pdf -> TDS:doc/latex/footnotehyper/footnotehyper.pdf + README.md -> TDS:doc/latex/footnotehyper/README.md + +The other files may be discarded. + +LICENSE +======= + +This Work may be distributed and/or modified under the conditions +of the LaTeX Project Public License, version 1.3c. This version of +this license is in: + +> <http://www.latex-project.org/lppl/lppl-1-3c.txt> + +and the latest version of this license is in: + +> <http://www.latex-project.org/lppl.txt> + +Version 1.3 or later is part of all distributions of +LaTeX version 2005/12/01 or later. + +The Author of this Work is: + +- Jean-Francois Burnol `<jfbu at free dot fr>` + +This Work consists of the main source file footnotehyper.dtx and the +derived files footnotehyper.sty, footnotehyper.ins, footnotehyper.tex, +footnotehyper.pdf, footnotehyper.dvi. diff --git a/macros/latex/contrib/footnotehyper/footnotehyper.dtx b/macros/latex/contrib/footnotehyper/footnotehyper.dtx new file mode 100644 index 0000000000..5c87bff620 --- /dev/null +++ b/macros/latex/contrib/footnotehyper/footnotehyper.dtx @@ -0,0 +1,1046 @@ +% -*- coding: utf-8; time-stamp-format: "%02d-%02m-%:y at %02H:%02M:%02S %Z" -*- +%<*none> +\def\dtxtimestamp {Time-stamp: <23-01-2018 at 20:31:53 CET>} +%</none> +%<*!readme> +%% +%% Package: footnotehyper +%% Version: 1.1 (2018/01/23) +%% License: LPPL 1.3c +%% Copyright (C) 2016-2018 Jean-Francois Burnol <jfbu at free dot fr>. +%% +%</!readme> +%<*insfile|tex> +\def\pkgname {footnotehyper} +\def\pkgdate {2018/01/23} +\def\docdate {2018/01/23} +\def\pkgversion {v1.1} +\def\pkgdescription {hyperref aware footnote.sty (JFB)} +%</insfile|tex> +%<*none> +% Definition of \pkgLicense +\begingroup% cette méthode ne marcherait pas avec caractères en dehors de 32-127 + \long\def\firstofone #1{#1}\catcode1=14\catcode2=0 + \catcode`\%=12\catcode`\_=12\endlinechar13\catcode13=13 ^^A + \catcode32=13\catcode`\\=12^^Brelax^^A +^^Bfirstofone{^^Bendgroup^^Bdef^^BpkgLicense^^A +{% Package: footnotehyper +% Version: 1.1 (2018/01/23) +% License: LPPL 1.3c +% Copyright (C) 2016-2018 Jean-Francois Burnol <jfbu at free dot fr>. +% +% This Work may be distributed and/or modified under the conditions +% of the LaTeX Project Public License, version 1.3c. This version of +% this license is in: +% +% > <http://www.latex-project.org/lppl/lppl-1-3c.txt> +% +% and the latest version of this license is in: +% +% > <http://www.latex-project.org/lppl.txt> +% +% Version 1.3 or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% The Author of this Work is: Jean-Francois Burnol `<jfbu at free dot fr>` +% +% This Work consists of the main source file footnotehyper.dtx and the +% derived files footnotehyper.sty, footnotehyper.ins, footnotehyper.tex, +% footnotehyper.pdf, footnotehyper.dvi. +}}% +\begingroup\catcode1 0 \catcode`\\ 12 +^^Aiffalse +%</none> +%<*readme> +<!-- --> + + Source: footnotehyper.dtx (v1.1 2018/01/23) + Author: Jean-Francois Burnol + Info: hyperref aware footnote.sty + License: LPPL 1.3c + Copyright (C) 2016-2018 Jean-Francois Burnol <jfbu at free dot fr>. + + +ABSTRACT +======== + +The `footnote` package by Mark Wooding (`1997/01/28` `1.13`) +allows to gather footnotes (`\begin{savenotes}`) and later insert +them (after `\end{savenotes}`) at the bottom of the page, even +if the intervening material consists of tabulars, minipages or +framed contents for example. One can also use the +`\savenotes/\spewnotes` syntax. + +Also, `footnote.sty` provides a `footnote` environment which +allows to insert verbatim material. + +Earlier releases of the present `footnotehyper` package added +patches for `hyperref` compatibility and some bugfixes, addressing +in particular the incompatibility with `color/xcolor`, and with +`babel-frenchb`, and also fixing the `footnote` environment with +optional argument `[NUM]`. Since `v0.99` all macros are defined +internally and the `footnote` package is not loaded at all. + +The same user interface is kept. Since `v1.0` it is possible to +use `footnotehyper` also in absence of `hyperref` or when the latter is +loaded with its `hyperfootnotes=false` option. The order of loading of +`footnotehyper` and `hyperref` is inconsequential. + +INSTALLATION +============ + +To extract the package (.sty) and driver (.tex) files from +footnotehyper.dtx: + +- if footnotehyper.ins is present: etex footnotehyper.ins +- without footnotehyper.ins: etex footnotehyper.dtx +- or run latex or pdflatex directly on footnotehyper.dtx + +At least three ways to produce footnotehyper.pdf (method (1) is +preferred): + +1. latex footnotehyper.tex (twice), then dvipdfmx +2. pdflatex footnotehyper.dtx (twice) +3. latex footnotehyper.dtx (twice), then dvips, then ps2pdf + +Method (1) produces the smallest pdf files. +Options can be set in footnotehyper.tex: + +- scrdoc class options (paper size, font size, ...) +- with or without source code, +- with dvipdfmx or with latex+dvips or pdflatex. + +Installation: + + footnotehyper.sty -> TDS:tex/latex/footnotehyper/footnotehyper.sty + footnotehyper.dtx -> TDS:source/latex/footnotehyper/footnotehyper.dtx + footnotehyper.pdf -> TDS:doc/latex/footnotehyper/footnotehyper.pdf + README.md -> TDS:doc/latex/footnotehyper/README.md + +The other files may be discarded. + + +LICENSE +======= + +This Work may be distributed and/or modified under the conditions +of the LaTeX Project Public License, version 1.3c. This version of +this license is in: + +> <http://www.latex-project.org/lppl/lppl-1-3c.txt> + +and the latest version of this license is in: + +> <http://www.latex-project.org/lppl.txt> + +Version 1.3 or later is part of all distributions of +LaTeX version 2005/12/01 or later. + +The Author of this Work is: + +- Jean-Francois Burnol `<jfbu at free dot fr>` + +This Work consists of the main source file footnotehyper.dtx and the +derived files footnotehyper.sty, footnotehyper.ins, footnotehyper.tex, +footnotehyper.pdf, footnotehyper.dvi. +%</readme> +%<*tex>------------------------------------------------------------------------- +%% +%% run latex twice on this file footnotehyper.tex then dvipdfmx on +%% footnotehyper.dvi to produce the documentation footnotehyper.pdf, with +%% source code included. +%% +\chardef\Withdvipdfmx 1 % replace 1 by 0 for using latex+dvips or pdflatex +\chardef\NoSourceCode 0 % replace 0 by 1 for the doc *without* the source code +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile {\pkgname.tex}[Driver for \pkgname\space documentation]% +\PassOptionsToClass {a4paper,fontsize=11pt,oneside}{scrdoc} +\PassOptionsToPackage {english}{babel} +\input \pkgname.dtx +%%% Local Variables: +%%% mode: latex +%%% End: +%</tex>------------------------------------------------------------------------- +%<*insfile>--------------------------------------------------------------------- +%% +%% Run tex on this file to extract from footnotehyper.dtx: +%% footnotehyper.sty, footnotehyper.tex, and README.md +%% +%% Refer to README.md for installation instructions, if needed. +%% +\input docstrip.tex +\askforoverwritefalse +\def\pkgpreamble{\defaultpreamble^^J\MetaPrefix^^J% +\string\NeedsTeXFormat{LaTeX2e}^^J% +\string\ProvidesPackage{\pkgname}\perCent^^J% +\space[\pkgdate\space\pkgversion\space\pkgdescription]}% +\generate{\nopreamble\nopostamble +\file{README.md}{\from{\pkgname.dtx}{readme}}% +\usepostamble\defaultpostamble +\file{\pkgname.tex}{\from{\pkgname.dtx}{tex}}% +\usepreamble\pkgpreamble +\file{\pkgname.sty}{\from{\pkgname.dtx}{package}}}% +\catcode32=13\relax% active space +\let =\space% +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* \pkgname.sty} +\Msg{*} +\Msg{* To produce the documentation run latex twice on file \pkgname.tex} +\Msg{* and then run dvipdfmx on file \pkgname.dvi.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} +\endbatchfile +%</insfile>--------------------------------------------------------------------- +%<*none>------------------------------------------------------------------------ +^^Afi^^Aendgroup +% +\chardef\noetex 0 +\ifx\numexpr\undefined\chardef\noetex 1 \fi +\ifnum\noetex=1 \chardef\extractfiles 0 % extract files, then stop +\else + \ifx\ProvidesFile\undefined + \chardef\extractfiles 0 % etex etc.. on \pkgname.dtx, only file extraction. + \else % latex/pdflatex on \pkgname.tex or on \pkgname.dtx + \ifx\Withdvipdfmx\undefined + % latex/pdflatex run is on \pkgname.dtx + \chardef\extractfiles 1 % 1 = extract files and typeset manual, 2 = only typeset + \chardef\Withdvipdfmx 0 % 0 = pdflatex or latex+dvips, 1 = dvipdfmx + \chardef\NoSourceCode 0 % 0 = include source code, 1 = do not + \NeedsTeXFormat {LaTeX2e}% + \PassOptionsToClass {a4paper,fontsize=11pt,oneside}{scrdoc}% + \PassOptionsToPackage {english}{babel}% + \else % latex run is on \pkgname.tex + \chardef\extractfiles 2 % do not extract files, only typeset + \fi + \ProvidesFile{\pkgname.dtx}% + [\pkgname\space source and documentation (\dtxtimestamp)]% + \fi +\fi +\ifnum\extractfiles<2 % extract files +\def\MessageDeFin{\newlinechar10 \let\Msg\message +\Msg{********************************************************************^^J}% +\Msg{*^^J}% +\Msg{* To finish the installation you have to move the following^^J}% +\Msg{* file into a directory searched by TeX:^^J}% +\Msg{*^^J}% +\Msg{*\space\space\space\space \pkgname.sty^^J}% +\Msg{*^^J}% +\Msg{* To produce the documentation with source code included run latex^^J}% +\Msg{* twice on file \pkgname.tex and then dvipdfmx on \pkgname.dvi^^J}% +\Msg{*^^J}% +\Msg{* Happy TeXing!^^J}% +\Msg{*^^J}% +\Msg{********************************************************************^^J}% +}% +\begingroup + \input docstrip.tex + \askforoverwritefalse + \def\pkgpreamble{\defaultpreamble^^J\MetaPrefix^^J% + \string\NeedsTeXFormat{LaTeX2e}^^J% + \string\ProvidesPackage{\pkgname}\perCent^^J% + \space[\pkgdate\space\pkgversion\space\pkgdescription]}% + \generate{\nopreamble\nopostamble + \file{README.md}{\from{\pkgname.dtx}{readme}}% + \usepostamble\defaultpostamble + \file{\pkgname.ins}{\from{\pkgname.dtx}{insfile}}% + \file{\pkgname.tex}{\from{\pkgname.dtx}{tex}}% + \usepreamble\pkgpreamble + \file{\pkgname.sty}{\from{\pkgname.dtx}{package}}}% +\endgroup +\fi % end of file extraction (from etex/latex/pdflatex run on \pkgname.dtx) +\ifnum\extractfiles=0 % tex/etex/xetex/etc on \pkgname.dtx, files extracted, stop + \MessageDeFin\expandafter\end +\fi +% From this point on, run is necessarily with e-TeX. +% Check if \MessageDeFin got defined, if yes put it at end of run. +\ifdefined\MessageDeFin\AtEndDocument{\MessageDeFin}\fi +%------------------------------------------------------------------------------- +% START OF USER MANUAL TEX SOURCE +\documentclass[abstract]{scrdoc} + +\ifnum\NoSourceCode=1 \OnlyDescription\fi + +\usepackage{ifpdf} +\ifpdf\chardef\Withdvipdfmx 0 \fi + +\makeatletter +\ifnum\Withdvipdfmx=1 + \@for\@tempa:=hyperref,bookmark,graphicx,xcolor,pict2e\do + {\PassOptionsToPackage{dvipdfmx}\@tempa} + % + \PassOptionsToPackage{dvipdfm}{geometry} + \PassOptionsToPackage{bookmarks=true}{hyperref} + \PassOptionsToPackage{dvipdfmx-outline-open}{hyperref} + \PassOptionsToPackage{dvipdfmx-outline-open}{bookmark} + % + \def\pgfsysdriver{pgfsys-dvipdfm.def} +\else + \PassOptionsToPackage{bookmarks=true}{hyperref} +\fi +\makeatother + +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage {babel} + +\usepackage[hscale=0.72,vscale=0.7]{geometry} + +\def\MacroFont{\ttfamily\small\hyphenchar\font45 \baselineskip11pt\relax} + +\usepackage{amsmath} +\usepackage{newtxtext, newtxmath} +\usepackage[straightquotes, scaled=0.97]{newtxtt} +\usepackage{xspace} + +\usepackage[dvipsnames]{xcolor} +\definecolor{joli}{RGB}{225,95,0} +\definecolor{JOLI}{RGB}{225,95,0} +\definecolor{BLUE}{RGB}{0,0,255} +\colorlet{niceone}{green!35!blue!75} + +\usepackage{framed} + +\usepackage[pdfencoding=pdfdoc]{hyperref} +\hypersetup{% +linktoc=all,% +breaklinks=true,% +colorlinks,% +linkcolor=RoyalBlue,% +urlcolor=OliveGreen,% +pdfauthor={Jean-Fran\c cois Burnol},% +pdftitle={The \pkgname\space package},% +pdfsubject={\pkgdescription},% +pdfkeywords={LaTeX, footnotes},% +pdfstartview=FitH,% +pdfpagemode=UseNone} +% added usage of package bookmark 2013/10/10 +\usepackage{bookmark} +\usepackage{enumitem} +\usepackage{\pkgname} + +\newcommand\fnh{% + \texorpdfstring{{\color{joli}\ttfamily\bfseries \pkgname}}{\pkgname}\xspace} + +\frenchspacing + +\renewcommand\familydefault\sfdefault +\pagestyle{headings} + +\begin{document}\thispagestyle{empty} +% the \MacroFont valid at begin document will be the one used in Implementation +% the one defined here will be used by verbatim (not by \verb) +\def\MacroFont{\ttfamily\small} +\rmfamily +\bookmark[named=FirstPage,level=1]{Title page} + +\begin{center} + {\normalfont\LARGE The \fnh package}\\ +\textsc{\small Jean-François Burnol}\par + \footnotesize \ttfamily + jfbu (at) free (dot) fr\par + Package version: \pkgversion\ (\pkgdate)\par + From source file \texttt{\pkgname.dtx} of \dtxtimestamp.\par +\end{center} + +\MakeShortVerb{\`}% +\begin{abstract} +The `footnote` package by \textsc{Mark~Wooding} (`1997/01/28` `1.13`) +allows to gather footnotes (`\begin{savenotes}`) and later insert +them (after `\end{savenotes}`) at the bottom of the page, even +if the intervening material consists of tabulars, minipages or +framed contents for example. One can also use the +`\savenotes/\spewnotes` syntax. + +Also, `footnote.sty` provides a `footnote` environment which +allows to insert verbatim material. + +Earlier releases of the present \fnh package added +patches for `hyperref` compatibility and some bugfixes, addressing +in particular the incompatibility with `color/xcolor`, and with +`babel-frenchb`, and also fixing the `footnote` environment with +optional argument `[NUM]`. Since `v0.99` all macros are defined +internally and the `footnote` package is not loaded at all. + +The same user interface is kept. Since `v1.0` it is possible to +use \fnh also in absence of `hyperref` or when the latter is +loaded with its `hyperfootnotes=false` option. The order of loading of +\fnh and `hyperref` is inconsequential. +\end{abstract} +\DeleteShortVerb{\`} + +\section{License} + +\begingroup\ttfamily\footnotesize\hyphenchar\font -1 + \parindent0pt + \obeyspaces\obeylines % +\pkgLicense\endgroup + +\section{Usage} + +Since |v0.99|, \fnh does not +load package +|footnote.sty|\footnote{\url{http://ctan.org/pkg/footnote}} +anymore, and is even incompatible with it at it uses the same user +interface. + +Since |v1.0|, \fnh is usable also in absence of |hyperref| or when +the latter was passed |hyperfootnotes=false| option. + +Version |v1.1| fixes a bug which arose when |savenotes| environment was used +\emph{inside} a minipage: footnotes were disappearing!% +% +\footnote{Thanks to François Pantigny for reporting the bug.} +% +See related remarks at end of \autoref{sec:notes}. + +The package thus provides: +\begin{itemize} +\item a |savenotes| environment which re-routes footnotes and delivers them at + the end (there is also the |\savenotes/\spewnotes| syntax; it does create a + group like the environment), +\item |footnote| and |footnotetext| environments to allow footnotes + with verbatim material. +\end{itemize} + +But the constructability of the |footnote/footnotetext| environments depends +on how |\@makefntext| has been customized by the class or other packages; a +warning is issued if the situation appears to be desperate.\footnote{original + |footnote.sty| could end up in a low level \TeX\ error.} + +It should be recalled that in case of |\footnotemark[N]| and +|\footnotetext[N]{...}| mark-up |hyperref| creates no hyperlink. This is not +changed by \fnh and applies also to the |\begin{footnotetext}[N]| case. +Without optional argument the link is created, and the link is created also +for |\footnote[N]| or |\begin{footnote}[N]|. + +This package does not handle especially floating environments, except that one +can always surround them in the source in a |savenotes| environment and one +knows that the footnotes will be delivered at the |\end{savenotes}|\dots which +may well be one page earlier than the actual location of the floating material +in the produced document ! + +Environments typesetting multiple times their contents are the most hostile to +footnotes. Currently, \fnh only handles especially the |amsmath| +environments (as in |footnote.sty|.) + +Finally there is a |\makesavenoteenv| command which takes as +argument an environment name and patches it to do the +|\savenotes/\spewnotes| automatically.% +\begin{footnote} + For the +record the syntax is either |\makesavenoteenv{foo}| which patches +environment |foo| or |\makesavenoteenv[bar]{foo}| which defines +environment |bar| as this patched version of |foo|. +\end{footnote} +It is safer to avoid it, as +one never knows what happens with such patches: for example the |[H]| +specifier provided by the |float| package overwrites the |\end{table}| +definition during the execution of |\begin{table}|\dots ! + +\begin{savenotes} +\begin{framed} +\DeleteShortVerb{\|}\MakeShortVerb{\*}% +{\centering + \begin{tabular}{|c|c|} + \hline + \strut Inside\footnote{Notice that as frame + extended to the next page, + the end of the *savenotes* environment delivered its + footnotes only here.} a & tabular\begin{footnote}Alternatively a + *\savenotes/\spewnotes* pair + could have been used.\end{footnote}\\\hline +\end{tabular}\par} +\DeleteShortVerb{\*}\MakeShortVerb{\|}% +An example: +\begin{verbatim} +\begin{savenotes} +\begin{framed} + Please refer to the documentation of the |footnote| package.% + \footnote{\url{http://ctan.org/pkg/footnote}} + + Particularly you may check its |savenotes| environment.% + \footnote{It doesn't bring any + feature to especially handle the issues related to footnotes in floating + environments, though.} +\end{framed} +\end{savenotes} +\end{verbatim} +and the present frame has \cs{footnote}'s from inside a |tabular| and is +inside a |savenotes| environment.% +\begin{footnote} + Here is an issue which has nothing (as I finally figured out) to + do with |footnote|, and only indirectly with \LaTeX: if you embed + a \emph{full-width} minipage (with initial \cs{noindent}) in any + environment not doing \cs{ignorespacesafterend}, be careful to add + a \% either immediately after the |\end{minipage}| (or a |\relax| + or a |\par|) or after the surrounding environment |\end{foo}| or + use |\end{minipage}\end{foo}| else the output may have an extra + blank line if the source has a blank line after the |foo| environment. + Here is a typical example, with a |tabular| rather: + \makeatletter + + \medskip\noindent\hspace{1cm}\begin{minipage}{\dimexpr\linewidth-1cm}% + \def\MacroFont{\baselineskip10pt\relax}% +\begin{verbatim} +\newenvironment{foo}{}{} + +\noindent\begin{tabular}{p{\dimexpr\linewidth-2\tabcolsep\relax}} + A\dotfill B +\end{tabular} + +C + +\begin{foo} +\noindent\begin{tabular}{p{\dimexpr\linewidth-2\tabcolsep\relax}} + A\dotfill B +\end{tabular} +\end{foo} + +C +\end{verbatim}\end{minipage}\par\medskip + + If you try it out you will see an extra blank line in PDF output above the + second C. Starting with |v0.99| the |\end{savenotes}| emits an + \cs{ignorespacesafterend} which avoids this generic \TeX/\LaTeX\ + problem. For good measure there is now an \cs{ignorespaces} in + |\begin{savenotes}|. +\end{footnote} +Let's test an +|amsmath| environment with |\intertext|. As +\begin{align} + E&=mc^2\;, +\intertext{was too easy\footnote{There is also $E=h\nu$.}, let's + try:} + a^n + b^n &=c^n\;. +\end{align} +And a footnote with some verbatim material% +\begin{footnote} + \verb|&$^%\[}$| +\end{footnote}. +\end{framed} +\end{savenotes} + +The last one was coded as: +\begin{verbatim} +And a footnote with some verbatim material% +\begin{footnote} + \verb|&$^%\[}$| +\end{footnote}. +\end{verbatim} +Now some use of |\footnotemark|\footnotemark\ followed by a |footnotetext| +environment. +\begin{footnotetext} + This one uses the normal footnote counter and the hyperlink works. +\end{footnotetext} +And use of |\footnotemark[99]|\footnotemark[99] in association with a +|footnotetext| environment using the same optional argument |[99]|. +No hyperfootnote link was inserted.% +\begin{footnotetext}[99] + |hyperref| creates no hyperlink in this case, or in the + |\footnotemark[N]/\footnotetext[N]{<foo>}| case. It does when + the |[N]| is absent or when it is used with a |\footnote| command + (or a |footnote| environment.) + + By the way, \fnh |v0.9f|'s |\footnotetext[N]| and |\begin{footnotetext}[N]| + each had a bug and they were unusable \emph{inside} the |savenotes| + environment. There was no issue \emph{outside}. +\end{footnotetext} +And a final footnote, done with |\begin{footnote}[57]|% +\begin{footnote}[57]\csname @minipagetrue\endcsname % to reduce + % framed inserted vertical spacing + \begin{framed} + \noindent\fnh works since |v1.0| also in absence of |hyperref| or when the + latter was passed |hyperfootnotes=false| option. + \end{framed} +\end{footnote}. +There is no problem with the hyperlink, then. + +\section{Notes}\label{sec:notes} + +A few items worth of mention: +\begin{itemize}[nosep] +\item the |footnote| package patches the \LaTeX\ kernel |\parbox|. + \fnh doesn't (but the code can be found commented-out at the + end of the present file). +\item the |footnote| package defines a |minipage*| environment + which is |minipage| patched by |\makesavenoteenv|, \fnh doesn't. +\item the |footnote| environment from |footnote.sty| does a + |\leavevmode\unskip| which \fnh doesn't: hence if one locates + |\begin{footnote}| at start of a line in the \LaTeX\ source, one will + typically need a \% at end of text on previous line to avoid the + end-of-line space. +\item the |hyperref| package inserts no hyperlink in case of + |\footnotemark[N]/\footnotetext[N]|. This is not modified by \fnh. +\item side-note: there is an interference between |hyperref| and |frenchb| + regarding the footnote marker when using the syntax |\footnotemark[NUM]|. + For the record here is a patch (last tested briefly with +% PUTAIN BORDEL ! LaTeX Error: Text for \verb command ended by end of +% line. À CHAQUE FOIS ÇA M'AGAÇE. Bon, je n'ai pas mon patch habituel ici. + |hyperref 2016/06/24 v6.83q| and |frenchb 2017/01/30 v3.2g|): +% pour le cas où mis dans commentaires de code +% \begingroup\makeatletter\let\check@percent\@gobble +\begin{verbatim} + \AtBeginDocument{% + \let\@xfootnotemarkORIFB \@xfootnotemark + \def\@xfootnotemarkFB {\leavevmode\unskip\unkern\,\@xfootnotemarkORIFB }% + \ifHy@hyperfootnotes\ifFBAutoSpaceFootnotes + \let\@xfootnotemark\@xfootnotemarkFB + \fi\fi + }% +\end{verbatim} +% \endgroup +\item some environments typeset multiple times their contents, + which causes issues; \fnh takes provisions only to handle the + |amsmath| measuring step. +\item + \LaTeX2e has some features when using footnotes in |minipage|'s + which are themselves in a |minipage| which may also have footnotes externally + to the internal minipages... try it out with some |\fbox|es around the + sub-|minipages|, to see. + + \fnh behaves like original package |footnote| in such contexts. Only + reasonable usage seems to embed the entire contents of the external minipage + in a |savenotes| environment. But there will anyhow be collisions of the + alphabetic enumerations. These collisions are there with or without \fnh (or + |footnote.sty|.) I did not make any attempt, nor intend to in future, to + address in an automatized manner these problematic contexts. +\end{itemize} + +\StopEventually{\end{document}\endinput} +\makeatletter + \let\check@percent\original@check@percent +\makeatother + +\newgeometry{left=4cm, hscale=0.72} +\section{Implementation} + +\small + +\makeatletter +\noindent +\begingroup +\topsep\MacrocodeTopsep +\trivlist\parskip\z@\item[] +\macro@font +\leftskip\@totalleftmargin \advance\leftskip\MacroIndent +\rightskip\z@ \parindent\z@ \parfillskip\@flushglue +\global\@newlistfalse \global\@minipagefalse +\ifcodeline@index + \everypar{\global\advance\c@CodelineNo\@ne + \llap{\theCodelineNo\ \hskip\@totalleftmargin}}% +\fi +\string\NeedsTeXFormat\string{LaTeX2e\string}\par +\string\ProvidesPackage\string{\pkgname\string}\@percentchar\par +\noindent\space [\pkgdate\space\pkgversion\space\pkgdescription]\par +\nointerlineskip +\global\@inlabelfalse +\endtrivlist +\endgroup +\makeatother + +% The catcode hackery next is to avoid to have <*package> to be listed +% in the commented source code... +% (c) 2012/11/19 jf burnol ;-) + +\MakePercentIgnore + +% +% \catcode`\<=0 \catcode`\>=11 \catcode`\*=11 \catcode`\/=11 +% \let</none>\relax +% \def<*package>{\catcode`\<=12 \catcode`\>=12 \catcode`\*=12 \catcode`\/=12} +% +%</none> +%<*package> +% \begin{macro}{no options} +% The package has no options. +% \begin{macrocode} +\DeclareOption*% + {\PackageWarning{footnotehyper}{Option `\CurrentOption' is unknown}}% +\ProcessOptions\relax +% \end{macrocode} +% \end{macro} +% Versions up to |v0.9f| loaded |footnote.sty|, with lots of patching +% afterwards. Starting with |v0.99|, \fnh does everything by itself with |FNH@| +% prefix. Brief overview of some of the fixed issues: +% \begin{itemize}[nosep] +% \item there was incompatibility with |hyperref|, +% \item and with |color|, +% \item if the \cs{@makefntext} at the time of loading of |footnote.sty| +% does not have its argument visible at top level in its meaning, or +% is used multiple times there, then the footnote environment will lead to low +% level \TeX\ error, +% \item |footnote.sty| modifies |\parbox|, +% \item |footnote.sty| does some too early |\let|, +% \item the footnote environment from |footnote.sty| does not work if used with +% optional argument |[N]|. +% \end{itemize} +% +% \noindent Starting with |v1.0|, \fnh may be used also in absence +% of |hyperref|. +% \begin{macrocode} +\newbox\FNH@notes +\newdimen\FNH@width +\let\FNH@colwidth\columnwidth +\newif\ifFNH@savingnotes +\AtBeginDocument {% + \let\FNH@latex@footnote \footnote + \let\FNH@latex@footnotetext\footnotetext + \let\FNH@H@@footnotetext \@footnotetext + \let\FNH@H@@mpfootnotetext \@mpfootnotetext + \newenvironment{savenotes} + {\FNH@savenotes\ignorespaces}{\FNH@spewnotes\ignorespacesafterend}% + \let\spewnotes \FNH@spewnotes + \let\footnote \FNH@footnote + \let\footnotetext \FNH@footnotetext + \let\endfootnote \FNH@endfntext + \let\endfootnotetext\FNH@endfntext + \@ifpackageloaded{hyperref} + {\ifHy@hyperfootnotes + \let\FNH@H@@footnotetext\H@@footnotetext + \let\FNH@H@@mpfootnotetext\H@@mpfootnotetext + \else + \let\FNH@hyper@fntext\FNH@nohyp@fntext + \fi}% + {\let\FNH@hyper@fntext\FNH@nohyp@fntext}% +}% +% \end{macrocode} +% \begin{macro}{\FNH@hyper@fntext} +% \begin{macro}{\FNH@nohyp@fntext} +% \begin{macro}{\FNH@fntext} +% These are the \fnh replacement for |\@footnotetext| inside the +% |savenotes| environment. There is a version creating an hyperlink +% and another one not creating an hyperlink. The \cs{FNH@fntext} +% macro serves as general dispatch. This may be a place to customize if one +% wants to handle environments doing multiple passes: but the footnote counter +% must have been taken care of elsewhere. The code currently handles only +% the case of |amsmath| environments. +% \begin{macrocode} +\def\FNH@hyper@fntext{\FNH@fntext\FNH@hyper@fntext@i}% +\def\FNH@nohyp@fntext{\FNH@fntext\FNH@nohyp@fntext@i}% +\def\FNH@fntext #1{\ifx\ifmeasuring@\@undefined + \expandafter\@secondoftwo\else\expandafter\@firstofone\fi + {\ifmeasuring@\expandafter\@gobbletwo\fi}#1% +}% +% \end{macrocode} +% \end{macro}\end{macro}\end{macro} +% \begin{macro}{\FNH@hyper@fntext@i} +% We do the \cs{ifHy@nesting} test although hyperref's manual +% says ``Allows links to be nested; no drivers currently support this.'' +% \begin{macrocode} +\long\def\FNH@hyper@fntext@i#1{% + \global\setbox\FNH@notes\vbox + {\unvbox\FNH@notes + \FNH@startnote + \@makefntext + {\rule\z@\footnotesep\ignorespaces + \ifHy@nesting\expandafter\ltx@firstoftwo + \else\expandafter\ltx@secondoftwo + \fi + {\expandafter\hyper@@anchor\expandafter{\Hy@footnote@currentHref}{#1}}% + {\Hy@raisedlink + {\expandafter\hyper@@anchor\expandafter{\Hy@footnote@currentHref}% + {\relax}}% + \let\@currentHref\Hy@footnote@currentHref + \let\@currentlabelname\@empty + #1}% + \@finalstrut\strutbox + }% + \FNH@endnote + }% +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\FNH@nohyp@fntext@i} +% The original \cs{fn@fntext} had no \cs{long}. +% \begin{macrocode} +\long\def\FNH@nohyp@fntext@i#1{% + \global\setbox\FNH@notes\vbox + {\unvbox\FNH@notes + \FNH@startnote + \@makefntext{\rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \FNH@endnote + }% +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\FNH@startnote} +% Same as original (the code comment is kept from original.) +% \begin{macrocode} +\def\FNH@startnote{% + \hsize\FNH@colwidth + \interlinepenalty\interfootnotelinepenalty + \reset@font\footnotesize + \floatingpenalty\@MM% Is this right??? + \@parboxrestore + \protected@edef\@currentlabel{\csname p@\@mpfn\endcsname\@thefnmark}% + \color@begingroup +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\FNH@endnote} +% Fixed from original. +% \begin{macrocode} +\def\FNH@endnote{\color@endgroup}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\FNH@savenotes} +% Same as original apart from using |hyperref|-aware \cs{FNH@hyper@fntext}, +% and taking into account |hyperref|'s custom \cs{@xfootnotetext}. This was +% missed by |v0.9f| hence |\footnotetext[N]{..}| did not work +% inside |savenotes| environment. Fixed for |v0.99|. +% +% Maybe I should change the way \cs{@minipagerestore} is handled. +% \begin{macrocode} +\def\FNH@savenotes{% + \begingroup + \ifFNH@savingnotes\else + \FNH@savingnotestrue + \let\@footnotetext \FNH@hyper@fntext + \let\@mpfootnotetext \FNH@hyper@fntext + \let\H@@mpfootnotetext\FNH@nohyp@fntext % fool hyperref's \@xfootnotenext + \FNH@width\columnwidth + \let\FNH@colwidth\FNH@width + \global\setbox\FNH@notes\box\voidb@x + \let\FNH@thempfn\thempfn + \let\FNH@mpfn\@mpfn + \ifx\@minipagerestore\relax\let\@minipagerestore\@empty\fi + \expandafter\def\expandafter\@minipagerestore\expandafter{% + \@minipagerestore + \let\thempfn\FNH@thempfn + \let\@mpfn\FNH@mpfn + }% + \fi +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\FNH@spewnotes} +% This uses \cs{FNH@H@@footnotetext} which is the +% \cs{H@@footnotetext} |hyperref|'s preserved original +% meaning of \cs{@footnotetext} not creating a link target. +% +% |v1.1| fixes the bug about disappearing footnotes if |savenotes| environment +% is used inside a minipage. I had never really considered such usage, hence +% missed realizing there was a bug. +% \begin{macrocode} +\def\FNH@spewnotes {% + \endgroup + \ifFNH@savingnotes\else + \ifvoid\FNH@notes\else + \begingroup + \let\@makefntext\@empty + \let\@finalstrut\@gobble + \let\rule\@gobbletwo + \ifx\@footnotetext\@mpfootnotetext + \expandafter\FNH@H@@mpfootnotetext + \else + \expandafter\FNH@H@@footnotetext + \fi{\unvbox\FNH@notes}% + \endgroup + \fi + \fi +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\FNH@footnote} +% \begin{macro}{\FNH@footnotetext} +% We now take care of |footnote.sty|'s |footnote| environment. The original +% \cs{fn@endfntext} is lacking a \cs{fn@endnote}, and this meant that +% |footnote.sty| was incompatible with |color/xcolor| packages. Also this +% \cs{fn@endnote} was |\let| to |\color@endgroup| which is wrong. +% +% Furthermore, independently of presence of the |\color/xcolor| issue, the +% |footnote.sty|'s |footnote| environment raised an error if used with an +% optional argument. |v0.9f| addresses this issue. +% +% The |footnotetext| environment adds a complication, in case of optional +% argument we should not try to set up a link due to the fact that |hyperref| +% does not support it for the |\footnotemark[N]/\footnotetext[N]| syntax. +% And we need to make sure that the |footnote| and |footnotetext| environments +% obey the |\savenotes/\spewnotes| mechanism. +% +% To handle all of this we code things completely differently from +% |footnote.sty|. +% +% The |v0.9f| |\begin{footnotetext}[N]| inside |savenotes| tried to create +% an hyperref target. Fixed for |v0.99|. +% +% Note: the |footnote.sty| code did a |\leavevmode\unskip| at entrance of +% |footnote| environment, which \fnh has not kept. +% \begin{macrocode} +\def\FNH@footnote@envname {footnote}% +\def\FNH@footnotetext@envname{footnotetext}% +\def\FNH@footnote{% + \ifx\@currenvir\FNH@footnote@envname + \expandafter\FNH@footnoteenv + \else + \expandafter\FNH@latex@footnote + \fi +}% +\def\FNH@footnoteenv{% + \@ifnextchar[% + \FNH@footnoteenv@i %] + {\stepcounter\@mpfn + \protected@xdef\@thefnmark{\thempfn}% + \@footnotemark + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext}% +}% +\def\FNH@footnoteenv@i[#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup + \@footnotemark + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext +}% +\def\FNH@footnotetext{% + \ifx\@currenvir\FNH@footnotetext@envname + \expandafter\FNH@footnotetextenv + \else + \expandafter\FNH@latex@footnotetext + \fi +}% +\def\FNH@footnotetextenv{% + \@ifnextchar[% + \FNH@footnotetextenv@i %] + {\protected@xdef\@thefnmark{\thempfn}% + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext}% +}% +\def\FNH@footnotetextenv@i[#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup + \ifFNH@savingnotes + \def\FNH@endfntext@fntext{\FNH@nohyp@fntext}% + \else + \def\FNH@endfntext@fntext{\FNH@H@@footnotetext}% + \fi + \FNH@startfntext +}% +% \end{macrocode} +% \end{macro}\end{macro} +% \begin{macro}{\FNH@startfntext} +% \begin{macro}{\FNH@endfntext} +% \begin{macro}{\FNH@endfntext@fntext} +% This is used for the environmental form of the footnote environments. +% The use of |\box\z@| originates in |footnote.sty|, should I change that ? +% +% Both of \cs{endfootnote} and \cs{endfootnotetext} are aliases for +% \cs{FNH@endfntext}. +% +% The \cs{FNH@endfntext@fntext} may be \cs{@footnotetext} (which will be +% \cs{FNH@hyper@fntext} in |savenotes| environment), or +% \cs{FNH@H@@footnotetext}, or \cs{FNH@nohyp@fntext} if in |savenotes| scope. +% \begin{macrocode} +\def\FNH@startfntext{% + \setbox\z@\vbox\bgroup + \FNH@startnote + \FNH@prefntext + \rule\z@\footnotesep\ignorespaces +}% +\def\FNH@endfntext {% + \@finalstrut\strutbox + \FNH@postfntext + \FNH@endnote + \egroup + \begingroup + \let\@makefntext\@empty\let\@finalstrut\@gobble\let\rule\@gobbletwo + \FNH@endfntext@fntext {\unvbox\z@}% + \endgroup +}% +% \end{macrocode} +% \end{macro}\end{macro}\end{macro} +% \begin{macro}{\@makefntext} +% \begin{macro}{\FNH@prefntext} +% \begin{macro}{\FNH@postfntext} +% The definitions of |\FNH@prefntext| and |\FNH@postfntext| (which are needed +% for the |footnote| environment, |\FNH@startfntext| and |\FNH@endfntext|) +% are extracted from a somewhat daring analysis of |\@makefntext|. +% Contrarily to |footnote.sty|'s original code (which may result in low level +% \TeX\ errors when the |footnote| environment is executed) +% the method here will alert the user if the argument +% of |\@makefntext| is not visible at top level in its meaning or is used +% there multiple times. We also insert here some code to handle especially +% the case of |babel-frenchb|. +% \begin{macrocode} +\AtBeginDocument{\let\FNH@@makefntext\@makefntext + \ifx\@makefntextFB\undefined + \expandafter\@gobble\else\expandafter\@firstofone\fi + {\ifFBFrenchFootnotes \let\FNH@@makefntext\@makefntextFB \else + \let\FNH@@makefntext\@makefntextORI\fi}% + \expandafter\FNH@check@a\FNH@@makefntext{1.2!3?4,}% + \FNH@@@1.2!3?4,\FNH@@@\relax +}% +\long\def\FNH@check@a #11.2!3?4,#2\FNH@@@#3{% + \ifx\relax#3\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi + \FNH@bad@makefntext@alert + {\def\FNH@prefntext{#1}\def\FNH@postfntext{#2}\FNH@check@b}% +}% +\def\FNH@check@b #1\relax{% + \expandafter\expandafter\expandafter\FNH@check@c + \expandafter\meaning\expandafter\FNH@prefntext + \meaning\FNH@postfntext1.2!3?4,\FNH@check@c\relax +}% +\def\FNH@check@c #11.2!3?4,#2#3\relax{% + \ifx\FNH@check@c#2\expandafter\@gobble\fi\FNH@bad@makefntext@alert +}% +\def\FNH@bad@makefntext@alert{% + \PackageWarningNoLine{footnotehyper}% + {^^J The footnote environment will not be fully functional, sorry.^^J + You may try to email the author with the following information:}% + \typeout{\meaning\@makefntext}% + \let\FNH@prefntext\@empty\let\FNH@postfntext\@empty +}% +% \end{macrocode} +% \end{macro}\end{macro}\end{macro} +% \begin{macro}{\makesavenoteenv} +% Same as original. Not recommended. Safer to use explicitely +% |savenotes| environment. +% \begin{macrocode} +\def\makesavenoteenv{\@ifnextchar[\FNH@msne@ii\FNH@msne@i}%] +\def\FNH@msne@i #1{% + \expandafter\let\csname FNH$#1\expandafter\endcsname %$ + \csname #1\endcsname + \expandafter\let\csname endFNH$#1\expandafter\endcsname %$ + \csname end#1\endcsname + \FNH@msne@ii[#1]{FNH$#1}%$ +}% +\def\FNH@msne@ii[#1]#2{% + \expandafter\edef\csname#1\endcsname{% + \noexpand\savenotes + \expandafter\noexpand\csname#2\endcsname + }% + \expandafter\edef\csname end#1\endcsname{% + \expandafter\noexpand\csname end#2\endcsname + \noexpand\expandafter + \noexpand\spewnotes + \noexpand\if@endpe\noexpand\@endpetrue\noexpand\fi + }% +}% +% \end{macrocode} +% \end{macro} +% Original footnote.sty patches |\parbox|, we don't touch it. Also it defines a +% |minipage*| environment, we don't do it. +% \begin{macrocode} +% \makesavenoteenv[minipage*]{minipage} +% \let\fn@parbox\parbox +% \def\parbox{\@ifnextchar[{\fn@parbox@i{}}{\fn@parbox@ii{}}} +% \def\fn@parbox@i#1[#2]{% +% \@ifnextchar[{\fn@parbox@i{#1[#2]}}{\fn@parbox@ii{#1[#2]}}% +% } +% \long\def\fn@parbox@ii#1#2#3{\savenotes\fn@parbox#1{#2}{#3}\spewnotes} +\endinput +% \end{macrocode} +% \MakePercentComment +\Finale +%% +%% End of file `footnotehyper.dtx'. diff --git a/macros/latex/contrib/footnotehyper/footnotehyper.ins b/macros/latex/contrib/footnotehyper/footnotehyper.ins new file mode 100644 index 0000000000..68fa4ca6c2 --- /dev/null +++ b/macros/latex/contrib/footnotehyper/footnotehyper.ins @@ -0,0 +1,48 @@ +%% +%% Package: footnotehyper +%% Version: 1.1 (2018/01/23) +%% License: LPPL 1.3c +%% Copyright (C) 2016-2018 Jean-Francois Burnol <jfbu at free dot fr>. +%% +\def\pkgname {footnotehyper} +\def\pkgdate {2018/01/23} +\def\docdate {2018/01/23} +\def\pkgversion {v1.1} +\def\pkgdescription {hyperref aware footnote.sty (JFB)} +%% +%% Run tex on this file to extract from footnotehyper.dtx: +%% footnotehyper.sty, footnotehyper.tex, and README.md +%% +%% Refer to README.md for installation instructions, if needed. +%% +\input docstrip.tex +\askforoverwritefalse +\def\pkgpreamble{\defaultpreamble^^J\MetaPrefix^^J% +\string\NeedsTeXFormat{LaTeX2e}^^J% +\string\ProvidesPackage{\pkgname}\perCent^^J% +\space[\pkgdate\space\pkgversion\space\pkgdescription]}% +\generate{\nopreamble\nopostamble +\file{README.md}{\from{\pkgname.dtx}{readme}}% +\usepostamble\defaultpostamble +\file{\pkgname.tex}{\from{\pkgname.dtx}{tex}}% +\usepreamble\pkgpreamble +\file{\pkgname.sty}{\from{\pkgname.dtx}{package}}}% +\catcode32=13\relax% active space +\let =\space% +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* \pkgname.sty} +\Msg{*} +\Msg{* To produce the documentation run latex twice on file \pkgname.tex} +\Msg{* and then run dvipdfmx on file \pkgname.dvi.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} +\endbatchfile +\endinput +%% +%% End of file `footnotehyper.ins'. diff --git a/macros/latex/contrib/footnotehyper/footnotehyper.pdf b/macros/latex/contrib/footnotehyper/footnotehyper.pdf Binary files differnew file mode 100644 index 0000000000..129b44fc1e --- /dev/null +++ b/macros/latex/contrib/footnotehyper/footnotehyper.pdf |