diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/fnbreak/fnbreak.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/fnbreak/fnbreak.dtx | 230 |
1 files changed, 202 insertions, 28 deletions
diff --git a/Master/texmf-dist/source/latex/fnbreak/fnbreak.dtx b/Master/texmf-dist/source/latex/fnbreak/fnbreak.dtx index e794e4e7742..1cc54cdfdad 100644 --- a/Master/texmf-dist/source/latex/fnbreak/fnbreak.dtx +++ b/Master/texmf-dist/source/latex/fnbreak/fnbreak.dtx @@ -1,5 +1,5 @@ % \iffalse meta comment -% File: fnbreak.dtx Copyright (C) 2003, 2004 Harald Harders +% File: fnbreak.dtx Copyright (C) 2003, 2004, 2006, 2010, 2012 Harald Harders % \fi % % \iffalse @@ -7,15 +7,15 @@ %<*driver> \documentclass{ltxdoc} \title{The \texttt{fnbreak} package} -\author{Harald Harders\\\texttt{h.harders@tu-bs.de}} +\author{Harald Harders\\\texttt{harald.harders@gmx.de}} \date{Version \fileversion, \filedate, Printed \today} \EnableCrossrefs \CodelineIndex \DoNotIndex{\def,\edef,\let,\newcommand,\newenvironment,\newcounter} -\DoNotIndex{\setcounter,\space} +\DoNotIndex{\setcounter,\space,\ifx,\else,\fi} \CodelineNumbered \RecordChanges -\CheckSum{132} +\CheckSum{202} \IfFileExists{fnbreak-v.tex}{% \input{fnbreak-v.tex} \GetFileInfo{fnbreak-v.tex} @@ -43,7 +43,7 @@ % \tableofcontents % % \section*{Copyright} -% Copyright 2003, 2004 Harald Harders. +% Copyright 2003, 2004, 2006, 2010, 2012 Harald Harders. % % This program can be redistributed and/or modified under the terms % of the LaTeX Project Public License Distributed from CTAN @@ -61,18 +61,23 @@ % If a footnote is split over a page break, a warning like the % following is put into the log: %\begin{verbatim} -%Package fnbreak Warning: Footnote number 1 (label `a') +%Package fnbreak Warning: Footnote number 1 +%(fnbreak) (label `a') %(fnbreak) has been split over different pages: %(fnbreak) page 1 to page 2. %\end{verbatim} % Sometimes, complicated footnote labels are used (for example, when % using symbols): %\begin{verbatim} -%Package fnbreak Warning: Footnote number 1 (label `\ensuremath {*}') +%Package fnbreak Warning: Footnote number 1 +%(fnbreak) (label `\ensuremath {*}') %(fnbreak) has been split over different pages: %(fnbreak) page 1 to page 2. %\end{verbatim} -% In some cases may this even break the function. +% In some cases may complex footnote labels may prevent |fnbreak| from +% functioning. +% \begin{macro}{nolabel} +% \begin{macro}{label} % To avoid these problems, you may give the package option |nolabel|: %\begin{verbatim} %\usepackage[nolabel]{fnbreak} @@ -83,9 +88,57 @@ %(fnbreak) has been split over different pages: %(fnbreak) page 1 to page 2. %\end{verbatim} +% \end{macro} +% \end{macro} % +% \begin{macro}{\fnbreaknolabel} +% \begin{macro}{\fnbreaklabel} +% You may switsch on and off printing of the footnote label in the +% warnings also by using the macros \cs{fnbreaknolabel} and \cs{fnbreaklabel}. +% \end{macro} +% \end{macro} +% +% If the document is set two-sided, fnbreak tries to determine whether +% the footnote spans over a double page or flipsides. +% The result is shown in the warning: +%\begin{verbatim} +%Package fnbreak Warning: Footnote number 1 +%(fnbreak) has been split over different pages (flipsides): +%(fnbreak) page 1 to page 2. +%\end{verbatim} +% or: +%\begin{verbatim} +%Package fnbreak Warning: Footnote number 1 +%(fnbreak) has been split over different pages (double page): +%(fnbreak) page 2 to page 3. +%\end{verbatim} +% This only works if the page numbers are (arabic) numerical. +% +% \begin{macro}{verbose} +% \begin{macro}{nonverbose} % When using the package option |verbose| the fnbreak package writes a -% message for every footnote, even if it is completely on one page. +% message for every footnote, even if it is completely on one page: +%\begin{verbatim} +%\usepackage[verbose]{fnbreak} +%\end{verbatim} +% The output looks as follows: +%\begin{verbatim} +%Package fnbreak Note: Footnote number 2 +%(fnbreak) (label `2') +%(fnbreak) completely on page 3. +%\end{verbatim} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\fnbreaknonverbose} +% \begin{macro}{\fnbreakverbose} +% You may switsch on and off printing footnote information for +% non-split footnotes using the macros \cs{fnbreaknonverbose} and +% \cs{fnbreakverbose}. +% \end{macro} +% \end{macro} +% +% % % \StopEventually{\PrintChanges \PrintIndex} % @@ -100,20 +153,55 @@ % \begin{macrocode} %<package>\ProvidesPackage{fnbreak} %<version>\ProvidesFile{fnbreak-v.tex} -%<package|version> [2004/04/06 v1.10 Warning for pagebreak in footnote (HH)] +%<package|version> [2012/01/01 v1.30 Warning for pagebreak in footnote (HH)] %<*package> % \end{macrocode} % Declare an option to show not only the footnote number but also the % label. +% \changes{1.11}{2006/05/08}{Allow commands in page number}% +% \begin{macrocode} +\RequirePackage{ifthen} +% \end{macrocode} +% Declare an option to show not only the footnote number but also the +% label. % \changes{1.10}{2004/04/06}{Add option `verbose'}% +% \changes{1.30}{2012/01/01}{Add options `nonverbose' and `label'}% % \begin{macrocode} \newif\iffnb@showlabel -\fnb@showlabeltrue \newif\iffnb@verbose +\DeclareOption{label}{\fnb@showlabeltrue} \DeclareOption{nolabel}{\fnb@showlabelfalse} \DeclareOption{verbose}{\fnb@verbosetrue} +\DeclareOption{nonverbose}{\fnb@verbosefalse} +\ExecuteOptions{label,nonverbose} \ProcessOptions\relax % \end{macrocode} +% \begin{macro}{\fnbreakverbose} +% \begin{macro}{\fnbreaknonverbose} +% Switch on or off verbose printing of footnotes. +% \begin{macrocode} +\newcommand*\fnbreakverbose{\fnb@verbosetrue} +\newcommand*\fnbreaknonverbose{\fnb@verbosefalse} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\fnbreaklabel} +% \begin{macro}{\fnbreaknolabel} +% Switch on or off printing of footnote labels in the warnings. +% \begin{macrocode} +\newcommand*\fnbreaklabel{\fnb@showlabeltrue} +\newcommand*\fnbreaknolabel{\fnb@showlabelfalse} +% \end{macrocode} +% \end{macro} +% \end{macro} +% Define new counter and boolean for determining whether a split +% footnote spans ofer a double page or flipsides. +% \changes{1.20}{2010/08/09}{Distinguish between split over double +% page or flipsides}% +% \begin{macrocode} +\newcounter{fnb@@numberpages} +\newif\iffnb@@isdoublepage +% \end{macrocode} % Define default values in order to avoid possible problems: % \changes{1.00}{2004/04/01}{Correct some internal macro names}% % \begin{macrocode} @@ -133,10 +221,11 @@ % \end{macrocode} % If the start of a footnote has been found, just define commands % containing the footnote number (only for debugging) and the start page: +% \changes{1.11}{2006/05/08}{Allow commands in page number}% % \begin{macrocode} \def\fnb@footnotestart#1#2#3{% \xdef\fnb@@footnotestartnum{#1}% - \xdef\fnb@@footnotestartpage{#3}% + \gdef\fnb@@footnotestartpage{#3}% }% % \end{macrocode} % \changes{1.00}{2004/04/01}{No need to have numerical page numbers @@ -151,37 +240,122 @@ % \begin{macrocode} \def\fnb@footnoteend#1#2#3{% \xdef\fnb@@footnoteendnum{#1}% - \xdef\fnb@@footnoteendpage{#3}% + \def\fnb@@footnoteendpage{#3}% % \end{macrocode} % Test if start and end refer to the same footnote. % \begin{macrocode} \ifx\fnb@@footnotestartnum\fnb@@footnoteendnum % \end{macrocode} % Test if the footnote ends on the same page it has started. +% \changes{1.11}{2006/05/08}{Allow commands in page number}% % \begin{macrocode} - \ifx\fnb@@footnotestartpage\fnb@@footnoteendpage + \ifthenelse{\equal{\fnb@@footnotestartpage}{\fnb@@footnoteendpage}}{% % \end{macrocode} % Yes, the footnote is completely on one page. % Print a message if |verbose| mode is requested. +% Simulate a variant of \cs{PackageInfo} which is also written to the +% output rather than only to the log file. +% \changes{1.30}{2012/01/01}{Fix verbose mode for non-numeric labels} % \begin{macrocode} \iffnb@verbose - \message{Package fnbreak: Footnote number #1 - \iffnb@showlabel(label `#2') \fi^^J% - \space\space\space\space\space\space - \space\space\space\space\space\space - \space\space\space\space\space - completely on page #3.}% + \begingroup + \def\MessageBreak{^^J(fnbreak)\@spaces\@spaces\@spaces\@spaces}% + \set@display@protect + \immediate\write\@unused{^^JPackage fnbreak Note:% + \space\space\space\space Footnote number #1 + \iffnb@showlabel\MessageBreak (label `#2') \fi + \MessageBreak + completely on page #3.^^J}% + \endgroup \fi - \else + }{% % \end{macrocode} % No, the footnote contains a pagebreak. +% +% If the page labels are plain numbers we can determine whether a +% footnot spans over a double page or a flipside.\footnote{Thanks to +% Martin M\"unch for the idea of determining double pages.} +% \changes{1.20}{2010/08/09}{Distinguish between split over double +% page or flipsides}% +% |fnb@@numberpages = 0| is used if the code cannot find out whether a +% footnote spans over a double page (i.\,e., for non-integer page +% numbers or single-side documents). +% \begin{macrocode} + \setcounter{fnb@@numberpages}{0}% +% \end{macrocode} +% Do the effort only if the document is two-sided. +% This code requised the boolean \cs{if@twoside} to be defined. +% If this is not the case please report to the author including a +% minimal example file. +% \begin{macrocode} + \if@twoside +% \end{macrocode} +% We can find double pages only if the start page as well as the end +% page are numbers. +% \begin{macrocode} + \ifnum\number0<0\fnb@@footnoteendpage{}% + \ifnum\number0<0\fnb@@footnotestartpage{}% +% \end{macrocode} +% Calculate the number of pages covered by the footnote. If it is more +% than two, a flipside occurs anyways. +% \begin{macrocode} + \setcounter{fnb@@numberpages}{\fnb@@footnoteendpage}% + \addtocounter{fnb@@numberpages}{-\fnb@@footnotestartpage}% + \addtocounter{fnb@@numberpages}{1}% +% \end{macrocode} +% If the footnote starts on an odd page, flipside occurs in any case. +% \begin{macrocode} + \ifodd \fnb@@footnotestartpage{}% + \fnb@@isdoublepagefalse +% \end{macrocode} +% If the footnote starts on an odd page, a double page is found if the +% number of pages equals two. +% \begin{macrocode} + \else + \ifnum \thefnb@@numberpages=2{}% + \fnb@@isdoublepagetrue +% \end{macrocode} +% If the number of pages is larger, flipside. +% \begin{macrocode} + \else + \fnb@@isdoublepagefalse + \fi + \fi + \fi + \fi + \fi +% \end{macrocode} % Print a warning. +% +% If not determined whether a double page occurs: +% \begin{macrocode} + \ifnum\thefnb@@numberpages=0 + \PackageWarningNoLine{fnbreak}{Footnote number #1 + \iffnb@showlabel\MessageBreak (label `#2')\fi + \MessageBreak + has been split over different pages:\MessageBreak + page \fnb@@footnotestartpage\space to page #3}% +% \end{macrocode} +% For a double page: % \begin{macrocode} - \PackageWarningNoLine{fnbreak}{Footnote number #1 - \iffnb@showlabel(label `#2')\fi - \MessageBreak - has been split over different pages:\MessageBreak - page \fnb@@footnotestartpage\space to page #3}% + \else + \iffnb@@isdoublepage + \PackageWarningNoLine{fnbreak}{Footnote number #1 + \iffnb@showlabel\MessageBreak (label `#2')\fi + \MessageBreak + has been split over different pages (double page):\MessageBreak + page \fnb@@footnotestartpage\space to page #3}% +% \end{macrocode} +% For a flipside: +% \begin{macrocode} + \else + \PackageWarningNoLine{fnbreak}{Footnote number #1 + \iffnb@showlabel\MessageBreak (label `#2')\fi + \MessageBreak + has been split over different pages (flipside):\MessageBreak + page \fnb@@footnotestartpage\space to page #3}% + \fi + \fi % \end{macrocode} % Redefine the \cs{fnb@globalwarning} to print a warning at the end of % the log file. @@ -191,7 +365,7 @@ pagebreak.\MessageBreak Check if they are acceptable}% }% - \fi + }% \else % \end{macrocode} % This macro trys to handle different footnotes. @@ -203,7 +377,7 @@ end: #1, page #3}{% This error may not happen. Please try to make a short example which shows this behaviour - and send a bug report to h.harders@tu-bs.de.}% + and send a bug report to harald.harders@gmx.de.}% \fi }% } |