diff options
author | Karl Berry <karl@freefriends.org> | 2022-12-05 21:23:48 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-12-05 21:23:48 +0000 |
commit | 5caccaedbc1e667bc6c77cd4121b3aa42fd0cbba (patch) | |
tree | 3d19f3653011e84771abf1ed211ea3e6896d22f9 /Master/texmf-dist/tex/latex/lineno | |
parent | 6afd51ad6a48b892314f157f8d551c84dead3dec (diff) |
lineno (5dec22)
git-svn-id: svn://tug.org/texlive/trunk@65204 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/lineno')
-rw-r--r-- | Master/texmf-dist/tex/latex/lineno/ednmath0.sty | 334 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/lineno/edtable.sty | 996 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/lineno/fnlineno.sty | 1008 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/lineno/lineno.sty | 3651 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/lineno/vplref.sty | 99 |
5 files changed, 3070 insertions, 3018 deletions
diff --git a/Master/texmf-dist/tex/latex/lineno/ednmath0.sty b/Master/texmf-dist/tex/latex/lineno/ednmath0.sty index 363c6c6aa5c..ef9884f30cb 100644 --- a/Master/texmf-dist/tex/latex/lineno/ednmath0.sty +++ b/Master/texmf-dist/tex/latex/lineno/ednmath0.sty @@ -1,202 +1,200 @@ -%% Macro package `ednmath0.sty' for LaTeX2e, -%% copyright (C) 2004 Uwe L\"uck, -%% http://www.contact-ednotes.sty.de.vu -%% --author-maintained; -%% math support for `lineno.sty' and `ednotes.sty'. -%% +%% Macro package `ednmath0.sty' for LaTeX2e, +%% copyright (C) 2004 Uwe L\"uck, +%% http://www.contact-ednotes.sty.de.vu +%% --author-maintained; +%% math support for `lineno.sty' and `ednotes.sty'. +%% \def\fileversion{v0.2b} \def\filedate{2005/01/10} -%% This program can be redistributed and/or modified under the -%% terms of the LaTeX Project Public License distributed from +%% This program can be redistributed and/or modified under the +%% terms of the LaTeX Project Public License distributed from %% CTAN archives in directory macros/latex/base/lppl.txt; either %% version 1.3a of the License, or any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt -%% There is NO WARRANTY. -%% This code is very EXPERIMENTAL! +%% There is NO WARRANTY. +%% This code is very EXPERIMENTAL! +%% +%% Please report bugs, problems, and suggestions via %% -%% Please report bugs, problems, and suggestions via -%% -%% http://www.contact-ednotes.sty@web.de -% -%% * MAIN FEATURE * -% -% lineno.sty's \linelabel and ednotes.sty's commands are enabled -% to work in math mode if it's "entered in outer mode" -% (including `displaymath' and `equation' environments). -% (lineno.sty is the package by Stephan Boettcher.) -% They will even work in tabular environments that are adjusted -% to notes by package `edtable.sty'. -% -% CAVEATS: -% -- Does not work yet in environments like LaTeX's -% `eqnarray'. (This could probably repaired along the lines -% of Edtable.sty--we're short of time and will try later.) -% -- Useful error messages when (i) math mode is entered from -% inner mode or when (ii) a math display gets not line number -% are missing at present. -% +%% http://www.contact-ednotes.sty@web.de +% +%% * MAIN FEATURE * +% +% lineno.sty's \linelabel and ednotes.sty's commands are enabled +% to work in math mode if it's "entered in outer mode" +% (including `displaymath' and `equation' environments). +% (lineno.sty is the package by Stephan Boettcher.) +% They will even work in tabular environments that are adjusted +% to notes by package `edtable.sty'. +% +% CAVEATS: +% -- Does not work yet in environments like LaTeX's +% `eqnarray'. (This could probably repaired along the lines +% of Edtable.sty--we're short of time and will try later.) +% -- Useful error messages when (i) math mode is entered from +% inner mode or when (ii) a math display gets not line number +% are missing at present. +% %% * USAGE: * -% -% * Most simple: * -% --If you are working with ednotes and want to use its -% commands in math mode, load ednotes.sty--version 0.8 -% onwards--with its package option `mathnotes'. -% --If you don't work with ednotes, only with lineno, you -% get the main feature of making \linelabel work in math mode -% by loading lineno.sty--version 4.1 onwards--with its -% package option `mathrefs'. -% -% * Switch off and on: * -% To reduce danger resulting from missing error messages -% ("caveat" above), you may switch these new math facilities -% off by \NoNotesToMath where you don't expect to need them. -% You may switch them on again by \NotesToMath where you want -% to use them, being aware of the danger. Both commands work -% locally, so you can replace one of them by enclosing it in -% a group. E.g., even, after \NoNotesToMath you can use an -% environment as follows: +% +% * Most simple: * +% --If you are working with ednotes and want to use its +% commands in math mode, load ednotes.sty--version 0.8 +% onwards--with its package option `mathnotes'. +% --If you don't work with ednotes, only with lineno, you +% get the main feature of making \linelabel work in math mode +% by loading lineno.sty--version 4.1 onwards--with its +% package option `mathrefs'. +% +% * Switch off and on: * +% To reduce danger resulting from missing error messages +% ("caveat" above), you may switch these new math facilities +% off by \NoNotesToMath where you don't expect to need them. +% You may switch them on again by \NotesToMath where you want +% to use them, being aware of the danger. Both commands work +% locally, so you can replace one of them by enclosing it in +% a group. E.g., even, after \NoNotesToMath you can use an +% environment as follows: % \begin{NotesToMath} -% <text> -% \end{NotesToMath} +% <text> +% \end{NotesToMath} % (I am not quite sure that this is useful.) -% -% * Customize ellipsis: * -% ednotes' \lemmaellipsis is changed to expand to -% \mathlemmaellipsis when entering math, and this is preset -% to be LaTeX's \mathellipsis. (This is three dots as -% \mathinner.) You can change this by redefining -% \mathlemmaellipsis, e.g.: +% +% * Customize ellipsis: * +% ednotes' \lemmaellipsis is changed to expand to +% \mathlemmaellipsis when entering math, and this is preset +% to be LaTeX's \mathellipsis. (This is three dots as +% \mathinner.) You can change this by redefining +% \mathlemmaellipsis, e.g.: % \renewcommand{\mathlemmaellipsis}{\cdots} -% If you need \cdots as the ellipsis at a single place only, -% you may, of course, use the `<...>' option of \<, e.g.: +% If you need \cdots as the ellipsis at a single place only, +% you may, of course, use the `<...>' option of \<, e.g.: % $ x = \Anote{a\<<\cdots>bcd\>e}{Indeed?} - y $ -% +% % * Customize note mode: * -% For variant readings, you may want that the note is -% usually set in math mode--so you may want that you -% needn't type the dollar signs in the note text. -% Note that you can do this by customizing \notefmt, -% and you can do this by customizing \Anotefmt (e.g.) -% to have this feature for \Anote only. -% +% For variant readings, you may want that the note is +% usually set in math mode--so you may want that you +% needn't type the dollar signs in the note text. +% Note that you can do this by customizing \notefmt, +% and you can do this by customizing \Anotefmt (e.g.) +% to have this feature for \Anote only. +% \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ednmath0}[\filedate\space\fileversion\space - math support for lineno/ednotes (ul)] -% -%% User commands: +\ProvidesPackage{ednmath0}[\filedate\space\fileversion\space + math support for lineno/ednotes (ul)] +% +%% User commands: \def\NotesToMath{\let\@LN@mathhook\@LN@labelinmath - \@bsphack \@esphack + \@bsphack \@esphack % For \begin{NotesToMath} -} +} \def\NoNotesToMath{\@bsphack - \def\@LN@mathhook{\@parmoderr\@gobble}% - \@esphack -} + \def\@LN@mathhook{\@parmoderr\@gobble}% + \@esphack +} \def\endNotesToMath{\@bsphack\@Esphack} -\let\endNoNotesToMath\endNotesToMath -% -%% Core code for lineno.sty: -\@ifundefined{@LN@postlabel}{% - \PackageError{ednmath0}{% - Bad lineno.sty version% - }{% - lineno.sty from 2004/08/16 or later - must be loaded earlier.% +\let\endNoNotesToMath\endNotesToMath +% +%% Core code for lineno.sty: +\@ifundefined{@LN@postlabel}{% + \PackageError{ednmath0}{% + Bad lineno.sty version% + }{% + lineno.sty from 2004/08/16 or later + must be loaded earlier.% }% -}{% - \def\@LN@labelinmath#1{% - \ifmmode - \@LN@postlabel{#1}% - \else - \@parmoderr - \fi +}{% + \def\@LN@labelinmath#1{% + \ifmmode + \@LN@postlabel{#1}% + \else + \@parmoderr + \fi } -} -% -%% Core code for ednotes.sty: -\@ifundefined{@EN@note}{% -% v0.01 sent a warning in this case. Considered superfluous now. -}{% +} +% +%% Core code for ednotes.sty: +\@ifundefined{@EN@note}{% +% v0.01 sent a warning in this case. Considered superfluous now. +}{% \def\@EN@themathlemmatag{% - \ifmmode - \toks@\expandafter{\@EN@lemmatag}% + \ifmmode + \toks@\expandafter{\@EN@lemmatag}% \edef\@EN@lemmatag{% - $% - \def\noexpand\lemmaellipsis{% - \noexpand\mathlemmaellipsis}% - \the\toks@ - $% - }% -% \expandafter \def \expandafter \@EN@lemmatag -% \expandafter {\expandafter $\expandafter -% \def \expandafter \lemmaellipsis \expandafter {% -% \expandafter \mathlemmaellipsis \expandafter }% -% \@EN@lemmatag $}% - \fi - } -% To be sure, \lemmaellipsis doesn't need to be changed when -% ednotes `\<...\>' feature is not used. Though I prefer to -% use one hook only in ednotes for both situations, with and -% without `\<...\>'. -% -% The final \unskip in ednotes' \@EN@lemmatag would undo a final -% \quad. That's OK: outside math the same happens. -% In v0.01, \NoNotesToMath undid ednotes changes for math mode. -% However, re-appearence of \linelabel error messages suffices. -% -% Now add lemma switch to the left of \[No]NotesToMath: + $% + \def\noexpand\lemmaellipsis{% + \noexpand\mathlemmaellipsis}% + \the\toks@ + $% + }% +% \expandafter \def \expandafter \@EN@lemmatag +% \expandafter {\expandafter $\expandafter +% \def \expandafter \lemmaellipsis \expandafter {% +% \expandafter \mathlemmaellipsis \expandafter }% +% \@EN@lemmatag $}% + \fi + } +% To be sure, \lemmaellipsis doesn't need to be changed when +% ednotes `\<...\>' feature is not used. Though I prefer to +% use one hook only in ednotes for both situations, with and +% without `\<...\>'. +% +% The final \unskip in ednotes' \@EN@lemmatag would undo a final +% \quad. That's OK: outside math the same happens. +% In v0.01, \NoNotesToMath undid ednotes changes for math mode. +% However, re-appearence of \linelabel error messages suffices. +% +% Now add lemma switch to the left of \[No]NotesToMath: \toks@\expandafter{\NotesToMath} - \edef\NotesToMath{% - \let \noexpand\@EN@mathlemmatag \noexpand\@EN@themathlemmatag + \edef\NotesToMath{% + \let \noexpand\@EN@mathlemmatag \noexpand\@EN@themathlemmatag \the\toks@ } % \typeout{\string\NotesToMath: \meaning\NotesToMath} \toks@\expandafter{\NoNotesToMath} - \edef\NoNotesToMath{% - \let \noexpand\@EN@mathlemmatag \relax + \edef\NoNotesToMath{% + \let \noexpand\@EN@mathlemmatag \relax \the\toks@ } % \typeout{\string\NoNotesToMath: \meaning\NoNotesToMath} -} -% We need no extra device for a choice for users whether the *note* -% should be set in math mode or in horizontal mode by default -% (which might depend on the kind ["layer"] of notes). -% This can be done already by customization of ednotes' \notefmt. -% However, we might change ednotes' default \notefmt to default +} +% We need no extra device for a choice for users whether the *note* +% should be set in math mode or in horizontal mode by default +% (which might depend on the kind ["layer"] of notes). +% This can be done already by customization of ednotes' \notefmt. +% However, we might change ednotes' default \notefmt to default % \renewcommand*{\notefmt}[1]{$#1$} -% -\let\mathlemmaellipsis\mathellipsis -%% TODO: Since when has LaTeX provided \mathellipsis? -%% -> \Needs... -% -% Default: +% +\let\mathlemmaellipsis\mathellipsis +%% TODO: Since when has LaTeX provided \mathellipsis? +%% -> \Needs... +% +% Default: \NotesToMath -% -\endinput - -%% TODO: Without \linenumberdisplaymath, in displaymath, -%% an error should be shown. Use, e.g., that in a displaymath -%% \ifinner is false. -%% TODO: E.g., by changing \everymath, perhaps can be warned -%% that the math group is in a box already, so the vertical -%% items will get lost. -%% TODO: Adjust `eqnarray' (in Edtable?) as well. - -%% VERSION HISTORY: -v0.01 2004/08/16 First version, sent to Christian. -v0.02 2004/08/16 Considerably simplified for ednotes. - 2004/08/19 Added ellipsis stuff, documentation, and - instructions. Uncapitalized package names. - Added \end[No]NotesToMath. - 2004/08/20 Added \@bsphack and \@esphack; corrected - ednotes extension (too much deleted, completely - wrong), introducing \@EN@themathlemmatag. -v0.02b .../08/31 Rearranged preamble concerning maintenance. -v0.1 2004/09/20 Removed mentions of `linenox0.sty'. -v0.2 2004/10/07 Removed another mention of `linenox0.sty'; - Instructions: `lineno' or `ednotes.sty' option. -v0.2a 2004/11/07 LPPL v1.3a. -v0.2b 2005/01/10 Contact via http. +% +\endinput +%% TODO: Without \linenumberdisplaymath, in displaymath, +%% an error should be shown. Use, e.g., that in a displaymath +%% \ifinner is false. +%% TODO: E.g., by changing \everymath, perhaps can be warned +%% that the math group is in a box already, so the vertical +%% items will get lost. +%% TODO: Adjust `eqnarray' (in Edtable?) as well. +%% VERSION HISTORY: +v0.01 2004/08/16 First version, sent to Christian. +v0.02 2004/08/16 Considerably simplified for ednotes. + 2004/08/19 Added ellipsis stuff, documentation, and + instructions. Uncapitalized package names. + Added \end[No]NotesToMath. + 2004/08/20 Added \@bsphack and \@esphack; corrected + ednotes extension (too much deleted, completely + wrong), introducing \@EN@themathlemmatag. +v0.02b .../08/31 Rearranged preamble concerning maintenance. +v0.1 2004/09/20 Removed mentions of `linenox0.sty'. +v0.2 2004/10/07 Removed another mention of `linenox0.sty'; + Instructions: `lineno' or `ednotes.sty' option. +v0.2a 2004/11/07 LPPL v1.3a. +v0.2b 2005/01/10 Contact via http. diff --git a/Master/texmf-dist/tex/latex/lineno/edtable.sty b/Master/texmf-dist/tex/latex/lineno/edtable.sty index 206347539e7..3d16a9c7220 100644 --- a/Master/texmf-dist/tex/latex/lineno/edtable.sty +++ b/Master/texmf-dist/tex/latex/lineno/edtable.sty @@ -1,571 +1,571 @@ -%% `edtable.sty'---Uwe L"uck, direction Christian Tapp. -%% LaTeX package for tables with line numbers and -%% editorial notes. -%% -%% Copyright (C) 2003-2005 Uwe L"uck--author-maintained. -%% -\def\fileversion{1.3c} \def\filedate{2005/10/03} -%% -%% This file can be redistributed and/or modified under -%% the terms of the LaTeX Project Public License; either +%% `edtable.sty'---Uwe L"uck, direction Christian Tapp. +%% LaTeX package for tables with line numbers and +%% editorial notes. +%% +%% Copyright (C) 2003-2005 Uwe L"uck--author-maintained. +%% +\def\fileversion{1.3c} \def\filedate{2005/10/03} +%% +%% This file can be redistributed and/or modified under +%% the terms of the LaTeX Project Public License; either %% version 1.3 of the License, or any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt -%% We did our best to help you, but there is NO WARRANTY. -%% -%% Please send your comments via -%% -%% http://www.contact-ednotes.sty.de.vu -%% -%% * USAGE: * -% -% *Requirements/overview:* -% -% The package is made for the background of the LaTeX2e macro -% package and enhances functionality of the following packages: -% 1.) Stephan I. B"ottcher's `lineno.sty' for printing line -% numbers in the margin and a \label version \linelabel -% relating labels to line numbers; -% 2.) our `ednotes.sty' for indicating variant readings and -% other editorial remarks in separate footnote apparatuses; -% 3.) David Carlisle's `longtable.sty' for multi-page tables. -% %% TODO: supertabular etc.!? -% 4.) our `ltabptch.sty' for a patch of `longtable.sty' -% (i.e., optionally, see below). -% -% Actually, only the first package is necessary for using the -% present one. The present one needs your line numbering commands -% according to the first one and its documentation to which we -% refer here. We likewise refer to the remaining packages for the -% details of their functionality. -% -% `lineno.sty' version 4.1 and (in case it is used) `ednotes.sty' -% version 0.8 (onwards) are needed. For obtaining recent versions -% of required packages, see the CTAN folder -% /macros/latex/contrib/ednotes. -% -% *Install/load:* -% 1.) To be used, the present file must be put into a folder -% that (La)TeX searches. You should have obtained a file -% containing more detailed hints about this. -% 2.) We recommend loading this file *not* by -% \usepackage[<options>]{edtable} but by loading `lineno.sty' -% or `ednotes.sty' with package option `edtable'. -% 3.) To use the package options `longtable' and -% `nolongtablepatch' that are described below, enter them -% as options for `lineno.sty' or `ednotes.sty'. -% -% *User Commands:* -% -% 1. The package defines an environment `edtable' -- for its -% syntax we consider two cases: -% (a) Let <stdtable> be a tabular environment "like `tabular'". -% "Like" here means: (i) we have tested it with `tabular', but -% it should work with many more (e.g., from the `array' and -% `tabularx' packages) -- which share certain properties of -% implementation and requirements. Sorry, you must try, or we -% hope you will (and tell us). (For wizards: <stdtable> may -% probably be anything using a single \halign and \tabskip=0pt.) -% Definitively: -% (ii) LaTeX's standard `array' and other environments are *not* -% "like" `tabular'. Namely, environments that work only in math -% mode are not meant here. They are considered below in `b.'. -% (iii) `longtable' from the `longtable' package of the `tools' -% bundle neither is meant. An option of the present package -% deals with it as described below. Neither `supertabular' is -% meant. -% (iv) In general, usage with tabular environments that can -% break across pages as in (iii) is not recommended, at least -% when working with `ednotes.sty'. Even if some worked here, a -% shortcoming with `ednotes.sty' would be that the footnotes can -% appear on bad pages. -% -- Now the syntax is: +%% We did our best to help you, but there is NO WARRANTY. +%% +%% Please send your comments via +%% +%% http://www.contact-ednotes.sty.de.vu +%% +%% * USAGE: * +% +% *Requirements/overview:* +% +% The package is made for the background of the LaTeX2e macro +% package and enhances functionality of the following packages: +% 1.) Stephan I. B"ottcher's `lineno.sty' for printing line +% numbers in the margin and a \label version \linelabel +% relating labels to line numbers; +% 2.) our `ednotes.sty' for indicating variant readings and +% other editorial remarks in separate footnote apparatuses; +% 3.) David Carlisle's `longtable.sty' for multi-page tables. +% %% TODO: supertabular etc.!? +% 4.) our `ltabptch.sty' for a patch of `longtable.sty' +% (i.e., optionally, see below). +% +% Actually, only the first package is necessary for using the +% present one. The present one needs your line numbering commands +% according to the first one and its documentation to which we +% refer here. We likewise refer to the remaining packages for the +% details of their functionality. +% +% `lineno.sty' version 4.1 and (in case it is used) `ednotes.sty' +% version 0.8 (onwards) are needed. For obtaining recent versions +% of required packages, see the CTAN folder +% /macros/latex/contrib/ednotes. +% +% *Install/load:* +% 1.) To be used, the present file must be put into a folder +% that (La)TeX searches. You should have obtained a file +% containing more detailed hints about this. +% 2.) We recommend loading this file *not* by +% \usepackage[<options>]{edtable} but by loading `lineno.sty' +% or `ednotes.sty' with package option `edtable'. +% 3.) To use the package options `longtable' and +% `nolongtablepatch' that are described below, enter them +% as options for `lineno.sty' or `ednotes.sty'. +% +% *User Commands:* +% +% 1. The package defines an environment `edtable' -- for its +% syntax we consider two cases: +% (a) Let <stdtable> be a tabular environment "like `tabular'". +% "Like" here means: (i) we have tested it with `tabular', but +% it should work with many more (e.g., from the `array' and +% `tabularx' packages) -- which share certain properties of +% implementation and requirements. Sorry, you must try, or we +% hope you will (and tell us). (For wizards: <stdtable> may +% probably be anything using a single \halign and \tabskip=0pt.) +% Definitively: +% (ii) LaTeX's standard `array' and other environments are *not* +% "like" `tabular'. Namely, environments that work only in math +% mode are not meant here. They are considered below in `b.'. +% (iii) `longtable' from the `longtable' package of the `tools' +% bundle neither is meant. An option of the present package +% deals with it as described below. Neither `supertabular' is +% meant. +% (iv) In general, usage with tabular environments that can +% break across pages as in (iii) is not recommended, at least +% when working with `ednotes.sty'. Even if some worked here, a +% shortcoming with `ednotes.sty' would be that the footnotes can +% appear on bad pages. +% -- Now the syntax is: % \begin{edtable}{<stdtable>}<args><entries>\end{edtable} -% -- where <args> and <entries> are usual arguments and entries -% for <stdtable>. So an example is: -% \begin{edtable}{tabular}{cc} -% left upper & right upper \\ left lower & right lower -% \end{edtable} -% This produces just what <stdtable> does in an extra line, -% only adding line numbers in the margin and processing `ednotes' -% commands in the entries appropriately. -% (b) Let <stdarray> be an "array environment" like -- standard -% LaTeX's `array'! "Like" here means (i) ... analogously to -% <stdtable> above. (ii) "Text" ... oh, sorry, this is not clear -% to me at present, and I am in a hurry. %% TODO -% (iii) Nothing from the `amsmath' package seems to work here, -% sorry, I have tried a lot ... (iv) For standard LaTeX's -% `eqnarray', it is better to try the `linenomath' environment -% of `lineno.sty' [with package option `mathlines']. Its -% modifications in `amsmath' produce (at best) a spurious line -% number with the `linenomath' environment (up to now). -% -- Now the syntax is: +% -- where <args> and <entries> are usual arguments and entries +% for <stdtable>. So an example is: +% \begin{edtable}{tabular}{cc} +% left upper & right upper \\ left lower & right lower +% \end{edtable} +% This produces just what <stdtable> does in an extra line, +% only adding line numbers in the margin and processing `ednotes' +% commands in the entries appropriately. +% (b) Let <stdarray> be an "array environment" like -- standard +% LaTeX's `array'! "Like" here means (i) ... analogously to +% <stdtable> above. (ii) "Text" ... oh, sorry, this is not clear +% to me at present, and I am in a hurry. %% TODO +% (iii) Nothing from the `amsmath' package seems to work here, +% sorry, I have tried a lot ... (iv) For standard LaTeX's +% `eqnarray', it is better to try the `linenomath' environment +% of `lineno.sty' [with package option `mathlines']. Its +% modifications in `amsmath' produce (at best) a spurious line +% number with the `linenomath' environment (up to now). +% -- Now the syntax is: % \begin{edtable}[<$$$>]{<stdarray>} % <args><entries>\end{edtable} -% -- where <args> and <entries> are usual arguments and entries -% for <stdarray>. <$$$> can be one of `$' or `$$'. Indeed, the -% <stdtable> syntax above (without [<$$$>]) *does not work* -% inside $...$ or $$...$$. -- An example: +% -- where <args> and <entries> are usual arguments and entries +% for <stdarray>. <$$$> can be one of `$' or `$$'. Indeed, the +% <stdtable> syntax above (without [<$$$>]) *does not work* +% inside $...$ or $$...$$. -- An example: % \begin{edtable}[$$]{array}{cc} % a_{11} & a_{12} \\ a_{21} & a_{22} % \end{edtable} -% Now, this produces just what <stdarray> does in an extra line -% etc. as with <stdtable>. However, \linelabel and `ednotes.sty' -% footnotes may need the `mathrefs' option of `lineno.sty'. For -% the difference between `[$]' and `[$$]', see below. -% -% 2. When working with `ednotes.sty', in +% Now, this produces just what <stdarray> does in an extra line +% etc. as with <stdtable>. However, \linelabel and `ednotes.sty' +% footnotes may need the `mathrefs' option of `lineno.sty'. For +% the difference between `[$]' and `[$$]', see below. +% +% 2. When working with `ednotes.sty', in % \Anote{L1\<L2\>L3}{NOTE} -% L2 may contain &'s and \\'s, but L1, L3 must not! Analogously -% for \Bnote, etc., \Anotelabel...\donote..., etc. -- Well this -% holds for <stdtable>, hardly for <stdarray> ... %% TODO -% -% 3. On positioning: You may have wondered about `extra line' -% above. This means that `edtable' starts a new line at -% \begin{edtable} and at \end{edtable}. %% TODO: sure!? -% (a) It should be placed within a `center', `flushleft', or -% `flushright' environment for proper (vertical) spacing, but -% also works without. However, with <stdarray> and optional -% parameter `$$' of `edtable' (i.e., \begin{edtable}[$$]...), -% you can obtain the usual math display spacing *within a -% paragraph*; especially, the vertical space is less when the -% previous line is short ... and so on. -% (b) Horizontal positioning of line numbers (usually) needs a -% second run (after changing a table)! %% TODO: automatic warning. -% (For wizards: It may fail if some of \leftskip, \rightskip, -% \linewidth, and \@totalleftmargin are used in an unusual way.) -% A <dimen> register \ETextraoffset is provided whose value is -% 0pt by default and which additionally moves line numbers -% to the left (right) if given a positive (negative) value. -% %% TODO: any use? -% -% *Package options:* -% -% 1. Option `longtable' adjusts the `longtable' environment -% defined by David Carlisle's longtable.sty for use with -% `lineno.sty' and `ednotes.sty'. The option makes `longtable' -% environments appear with line numbers in the margin, according -% to `lineno.sty', and process `ednotes.sty' commands if line -% numbering is active according to `lineno.sty'. -% [We maintain an alternative package with just this function -% in a slightly different implementation.] %% -> ulnltab.sty. -% Lemmas may go across table entries as with `edtable' (see above). -% ---There might be options like `supertabular' for adjusting -% other tabular environments that cannot be handled by the -% `edtable' environment provided here---they have not been -% implemented yet! %% TODO -% -% 2. Option `nolongtablepatch' avoids loading/asking for -% `ltabptch.sty'. I.e.: according to LaTeX bugs database, -% tools/3180 and tools/3485, there have been problems with -% vertical spacing around `longtable' environments. By default -% the present package loads our `ltabptch.sty' or asks for it. -% Option `nolongtablepatch' overrides this. This is useful when -% you don't want to have the patch, especially when you use an -% "emergency stop" installation of TeX. -% -% *Wizard interface:* -% Macros \@ET@makeLineNumber, \@ET@use@outerhook, -% \@ET@execute@outerhook, \@ET@ampnotes \@ET@startlinewith, -% \@ET@trivialize@linelabel are provided as tools for adjusting -% tabular environments for use with `lineno.sty' and -% `ednotes.sty'. \@ET@step@linenumber is \let \stepLineNumber -% (from `lineno.sty'), but could be used as a hook for -% something different. See Environment `edtable' and Option -% `longtable' below for examples of application. -% %% TODO: specification here. -% +% L2 may contain &'s and \\'s, but L1, L3 must not! Analogously +% for \Bnote, etc., \Anotelabel...\donote..., etc. -- Well this +% holds for <stdtable>, hardly for <stdarray> ... %% TODO +% +% 3. On positioning: You may have wondered about `extra line' +% above. This means that `edtable' starts a new line at +% \begin{edtable} and at \end{edtable}. %% TODO: sure!? +% (a) It should be placed within a `center', `flushleft', or +% `flushright' environment for proper (vertical) spacing, but +% also works without. However, with <stdarray> and optional +% parameter `$$' of `edtable' (i.e., \begin{edtable}[$$]...), +% you can obtain the usual math display spacing *within a +% paragraph*; especially, the vertical space is less when the +% previous line is short ... and so on. +% (b) Horizontal positioning of line numbers (usually) needs a +% second run (after changing a table)! %% TODO: automatic warning. +% (For wizards: It may fail if some of \leftskip, \rightskip, +% \linewidth, and \@totalleftmargin are used in an unusual way.) +% A <dimen> register \ETextraoffset is provided whose value is +% 0pt by default and which additionally moves line numbers +% to the left (right) if given a positive (negative) value. +% %% TODO: any use? +% +% *Package options:* +% +% 1. Option `longtable' adjusts the `longtable' environment +% defined by David Carlisle's longtable.sty for use with +% `lineno.sty' and `ednotes.sty'. The option makes `longtable' +% environments appear with line numbers in the margin, according +% to `lineno.sty', and process `ednotes.sty' commands if line +% numbering is active according to `lineno.sty'. +% [We maintain an alternative package with just this function +% in a slightly different implementation.] %% -> ulnltab.sty. +% Lemmas may go across table entries as with `edtable' (see above). +% ---There might be options like `supertabular' for adjusting +% other tabular environments that cannot be handled by the +% `edtable' environment provided here---they have not been +% implemented yet! %% TODO +% +% 2. Option `nolongtablepatch' avoids loading/asking for +% `ltabptch.sty'. I.e.: according to LaTeX bugs database, +% tools/3180 and tools/3485, there have been problems with +% vertical spacing around `longtable' environments. By default +% the present package loads our `ltabptch.sty' or asks for it. +% Option `nolongtablepatch' overrides this. This is useful when +% you don't want to have the patch, especially when you use an +% "emergency stop" installation of TeX. +% +% *Wizard interface:* +% Macros \@ET@makeLineNumber, \@ET@use@outerhook, +% \@ET@execute@outerhook, \@ET@ampnotes \@ET@startlinewith, +% \@ET@trivialize@linelabel are provided as tools for adjusting +% tabular environments for use with `lineno.sty' and +% `ednotes.sty'. \@ET@step@linenumber is \let \stepLineNumber +% (from `lineno.sty'), but could be used as a hook for +% something different. See Environment `edtable' and Option +% `longtable' below for examples of application. +% %% TODO: specification here. +% +% +%% * Acknowledgements: * +% +% Stephan I. B"ottcher told us how to do it in extensive discussion +% and by providing some first code lines. We changed these essentially +% in some respects, but kept his general ideas and some parts of his +% macros, the latter even without knowing what we are doing. +% +% v1.3 is due to a request by Martin Brandenburg. +% +% * Now for internals: * % -%% * Acknowledgements: * -% -% Stephan I. B"ottcher told us how to do it in extensive discussion -% and by providing some first code lines. We changed these essentially -% in some respects, but kept his general ideas and some parts of his -% macros, the latter even without knowing what we are doing. -% -% v1.3 is due to a request by Martin Brandenburg. -% -% * Now for internals: * -% -\NeedsTeXFormat{LaTeX2e}[1994/12/01] -% 1994/12/01: \newenvironment* etc. %% TODO: more recent needed? -\ProvidesPackage{edtable}[\filedate\space v\fileversion\space - arrays with lineno + ednotes (ul)] -% -% Alternative ideas for implementation: -% 1. There is a German package `TABMAC' enhancing `EDMAC' (cf. -% documentation of `ednotes.sty'). We could have rewritten its -% macros so it would work with `lineno.sty' and `ednotes.sty' -% in place of `EDMAC'. [TODO: "tabmac.sty"] -% 2. We redefine `longtable' by Option `longtable' because -% there seems to be only one reasonable use of the `longtable' -% environment in the course of a critical edition. This may be -% different for environments like `array' and `tabular' which -% can be used within text lines. Therefore, these environments -% are not redefined. -% 3. One might use \everycr, however: (a) it is executed -% before the first row, (b) it is executed in fake lines that -% `longtable' uses. -% 4. As an alternative to \everycr, there is the approach of -% redefining \cr and \crcr for setting \noalign. This needs -% redefining \@tabularcr etc.---not nice. We use this approach -% here for `longtable' which uses a stretching \tabskip. -% For \tabskip=0pt, we attach line numbers by a template. -% -% \RequirePackage{lineno}[2004/10/06] -% Wanted to check lineno version--causes unknown option error. -% See LaTeX bug latex/3730. +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +% 1994/12/01: \newenvironment* etc. %% TODO: more recent needed? +\ProvidesPackage{edtable}[\filedate\space v\fileversion\space + arrays with lineno + ednotes (ul)] +% +% Alternative ideas for implementation: +% 1. There is a German package `TABMAC' enhancing `EDMAC' (cf. +% documentation of `ednotes.sty'). We could have rewritten its +% macros so it would work with `lineno.sty' and `ednotes.sty' +% in place of `EDMAC'. [TODO: "tabmac.sty"] +% 2. We redefine `longtable' by Option `longtable' because +% there seems to be only one reasonable use of the `longtable' +% environment in the course of a critical edition. This may be +% different for environments like `array' and `tabular' which +% can be used within text lines. Therefore, these environments +% are not redefined. +% 3. One might use \everycr, however: (a) it is executed +% before the first row, (b) it is executed in fake lines that +% `longtable' uses. +% 4. As an alternative to \everycr, there is the approach of +% redefining \cr and \crcr for setting \noalign. This needs +% redefining \@tabularcr etc.---not nice. We use this approach +% here for `longtable' which uses a stretching \tabskip. +% For \tabskip=0pt, we attach line numbers by a template. +% +% \RequirePackage{lineno}[2004/10/06] +% Wanted to check lineno version--causes unknown option error. +% See LaTeX bug latex/3730. -% Options: +% Options: -%% TODO: underful page with `longtable.sty'!? -\let\if@ET@longtable\iffalse % \newif\if@ET@longtable@ -\DeclareOption{longtable}{\let\if@ET@longtable\iftrue} -\let\if@ET@ltabptch\iftrue +%% TODO: underful page with `longtable.sty'!? +\let\if@ET@longtable\iffalse % \newif\if@ET@longtable@ +\DeclareOption{longtable}{\let\if@ET@longtable\iftrue} +\let\if@ET@ltabptch\iftrue \DeclareOption{nolongtablepatch}{\let\if@ET@ltabptch\iffalse} \ProcessOptions -% Redefine \longtable if option: +% Redefine \longtable if option: \if@ET@longtable - % Stephan's direction for attaching a line number to each row - % is using \noalign in the course of \\. - % However, (1) the user should not worry about closing the table - % with \\ or without, and (2) the line number thing should not - % happen twice if \\ is the last token before \end{longtable}. - % Our solution: attach something to the beginning of \endlongtable - % which attaches line number unless an unsucceeded \\ has done it. - % This thing is activated by each row start and turned off by \\. - % Since the switch at row start may happen to be in a pbox, - % let it act globally on \endlongtable. (The \crcr at the beginning - % of \endlongtable must not be changed directly, since original - % \crcr may be required in table entries using \oalign etc.) - % + % Stephan's direction for attaching a line number to each row + % is using \noalign in the course of \\. + % However, (1) the user should not worry about closing the table + % with \\ or without, and (2) the line number thing should not + % happen twice if \\ is the last token before \end{longtable}. + % Our solution: attach something to the beginning of \endlongtable + % which attaches line number unless an unsucceeded \\ has done it. + % This thing is activated by each row start and turned off by \\. + % Since the switch at row start may happen to be in a pbox, + % let it act globally on \endlongtable. (The \crcr at the beginning + % of \endlongtable must not be changed directly, since original + % \crcr may be required in table entries using \oalign etc.) + % \RequirePackage{longtable}% % \IfFileExists{longtable.sty}{\RequirePackage{longtable}}% % {\RequirePackage{longtabl}}% -% For Atari problem, it suffices to rename `longtable.sty' -% into `longtabl.sty'. -% +% For Atari problem, it suffices to rename `longtable.sty' +% into `longtabl.sty'. +% % Patch for tools/3180 and tools/3485 of LaTeX bug database: \if@ET@ltabptch - \IfFileExists{ltabptch.sty}{\RequirePackage{ltabptch}}{% - \PackageError{edtable}{% + \IfFileExists{ltabptch.sty}{\RequirePackage{ltabptch}}{% + \PackageError{edtable}{% ltabptch.sty (for improving spacing around\MessageBreak - longtable) missing! Be sure to use it always\MessageBreak + longtable) missing! Be sure to use it always\MessageBreak or never!% - }{% - To omit ltabptch.sty *and* escape this error,\MessageBreak + }{% + To omit ltabptch.sty *and* escape this error,\MessageBreak use package option `nolongtablepatch'.% }% } - \fi - \let\@ET@@longtable\longtable - \def\longtable{% - \ifLineNumbers - \expandafter\@ET@longtable - \else - \let\@ET@sw@cr\@ET@crcr % ... in \endlongtable. - \expandafter\@ET@@longtable - \fi - } - \def\@ET@longtable{% - % Since we have made it anyway, we use the method of redefining - % \halign for inserting the activating row start as well. - % However, redefinition must be repeated before every \LT@bchunk. - % \longtable and \LT@get@withs are good places for this. - \@ET@startlinewith\@ET@sw@cr@on - \@ET@trivialize@linelabel - \@ET@use@outerhook - \@ET@ampnotes - \let\LT@tabularcr\@ET@LT@tabularcr - \expandafter\def\expandafter\LT@get@widths\expandafter + \fi + \let\@ET@@longtable\longtable + \def\longtable{% + \ifLineNumbers + \expandafter\@ET@longtable + \else + \let\@ET@sw@cr\@ET@crcr % ... in \endlongtable. + \expandafter\@ET@@longtable + \fi + } + \def\@ET@longtable{% + % Since we have made it anyway, we use the method of redefining + % \halign for inserting the activating row start as well. + % However, redefinition must be repeated before every \LT@bchunk. + % \longtable and \LT@get@withs are good places for this. + \@ET@startlinewith\@ET@sw@cr@on + \@ET@trivialize@linelabel + \@ET@use@outerhook + \@ET@ampnotes + \let\LT@tabularcr\@ET@LT@tabularcr + \expandafter\def\expandafter\LT@get@widths\expandafter {\LT@get@widths\@ET@startlinewith\@ET@sw@cr@on} - % Admittedly, we could make it less of a hack by using @{...} - % ---we could then leave \LT@get@widths untouched. - \@ET@@longtable - } - \def\@ET@sw@cr@on{\global\let\@ET@sw@cr\@ET@cr@attach} - % We are hacking a longtable version offering + % Admittedly, we could make it less of a hack by using @{...} + % ---we could then leave \LT@get@widths untouched. + \@ET@@longtable + } + \def\@ET@sw@cr@on{\global\let\@ET@sw@cr\@ET@cr@attach} + % We are hacking a longtable version offering % \def\LT@tabularcr{% % \relax\iffalse{\fi\ifnum0=`}\fi % \@ifstar % {\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr % \LT@t@bularcr}% % {\LT@t@bularcr}} - % We need a redefinition of \cr which is not overridden by \@ifstar: + % We need a redefinition of \cr which is not overridden by \@ifstar: \def\@ET@LT@tabularcr{% \relax\iffalse{\fi\ifnum0=`}\fi - \def\cr{\@ET@sw@cr}% - % So \crcr is affected by change of \@ET@sw@cr, cf. below. - \let\crcr\cr + \def\cr{\@ET@sw@cr}% + % So \crcr is affected by change of \@ET@sw@cr, cf. below. + \let\crcr\cr \@ifstar - {\gdef\@ET@sw@nobreak{\nobreak - \global\let\@ET@sw@nobreak\relax}% + {\gdef\@ET@sw@nobreak{\nobreak + \global\let\@ET@sw@nobreak\relax}% % {\def\cr{\@ET@sw@cr\noalign{\nobreak}}\let\cr\crcr - % Why didn't this work? %% TODO: try shorter again. + % Why didn't this work? %% TODO: try shorter again. \LT@t@bularcr}% - \LT@t@bularcr + \LT@t@bularcr % {\let\cr\@ET@sw@cr \let\crcr\cr - % \LT@t@bularcr}% This accompanied \def\cr... above. + % \LT@t@bularcr}% This accompanied \def\cr... above. } - % Attach \@ET@sw@cr to beginning of \endlongtable: - \expandafter\def\expandafter\endlongtable\expandafter + % Attach \@ET@sw@cr to beginning of \endlongtable: + \expandafter\def\expandafter\endlongtable\expandafter {\expandafter\@ET@sw@cr\endlongtable} - \def\@ET@cr@attach{% Actually attaching line numbers. - \@ET@crcr\noalign{% Basically Stephan's approach. - % If we were not careful, following box containing line number - % could fool interline glue after longtable, even if tools/3485 - % is repaired in some way. This box should have same depth as - % the line composed previously. - \nobreak %% \@ET@ex... might cause page break. 2003/10/30. - \setbox\z@\@ET@makeLineNumber - \ht\z@-\prevdepth \dp\z@\prevdepth \box\z@ - \@ET@step@linenumber - \global\let\@ET@sw@cr\@ET@crcr % ... if called by \\. - % This also resets the \crcr starting \LT@echunk following - % \@xargarraycr or \@yargarraycr in \LT@argtabularcr. - % \let...\relax seems to suffice at well, but in case ... - \@ET@execute@outerhook %% 2003/10/30. - \@ET@sw@nobreak -% \@ET@execute@outerhook - }% - } - \let\@ET@crcr\crcr - \global\let\@ET@sw@nobreak\relax % Just to remind ... -\fi - -\let\@ET@step@linenumber\stepLineNumber + \def\@ET@cr@attach{% Actually attaching line numbers. + \@ET@crcr\noalign{% Basically Stephan's approach. + % If we were not careful, following box containing line number + % could fool interline glue after longtable, even if tools/3485 + % is repaired in some way. This box should have same depth as + % the line composed previously. + \nobreak %% \@ET@ex... might cause page break. 2003/10/30. + \setbox\z@\@ET@makeLineNumber + \ht\z@-\prevdepth \dp\z@\prevdepth \box\z@ + \@ET@step@linenumber + \global\let\@ET@sw@cr\@ET@crcr % ... if called by \\. + % This also resets the \crcr starting \LT@echunk following + % \@xargarraycr or \@yargarraycr in \LT@argtabularcr. + % \let...\relax seems to suffice at well, but in case ... + \@ET@execute@outerhook %% 2003/10/30. + \@ET@sw@nobreak +% \@ET@execute@outerhook + }% + } + \let\@ET@crcr\crcr + \global\let\@ET@sw@nobreak\relax % Just to remind ... +\fi + +\let\@ET@step@linenumber\stepLineNumber % \def\@ET@step@linenumber{\global\advance\c@linenumber\@ne} -\def\@ET@makeLineNumber{\hb@xt@\z@{\makeLineNumber}} -%% TODO: export to lineno.sty!? -% Special \halign: -% For `array' etc., we insert line numbers by a leftmost template. -% @{...} in the last argument of `array' etc. is difficult for this -% since `tabular*' has an additional argument. So we redefine -% \halign to put something to the right of the next \bgroup. -% Now, as a macro, \halign would break in an \edef or \xdef. -% Horribly, this danger has become quite real in longtable.sty's -% definition of \LT@bchunk. Only its latest version 4.10 has -% preceded \halign by a \noexpand (for mathtext.sty which -% redefines \halign as well). We need not rely on such a -% provision if we let \halign expand to \the<token register> -% for some token register. However, using \toks@ or \@temptokena -% is neither very safe---might be filled by macro ahead with -% something new. So reserve an own token register. -\newtoks\@ET@toks -\@ET@toks{\@ET@specialhalign} -% v1.3: In 'AMSmath', there are \halign's followed by explicit -% left braces. Thus '\def\@ET@specialhalign#1\bgroup{%' broke. -%% TODO ... +\def\@ET@makeLineNumber{\hb@xt@\z@{\makeLineNumber}} +%% TODO: export to lineno.sty!? +% Special \halign: +% For `array' etc., we insert line numbers by a leftmost template. +% @{...} in the last argument of `array' etc. is difficult for this +% since `tabular*' has an additional argument. So we redefine +% \halign to put something to the right of the next \bgroup. +% Now, as a macro, \halign would break in an \edef or \xdef. +% Horribly, this danger has become quite real in longtable.sty's +% definition of \LT@bchunk. Only its latest version 4.10 has +% preceded \halign by a \noexpand (for mathtext.sty which +% redefines \halign as well). We need not rely on such a +% provision if we let \halign expand to \the<token register> +% for some token register. However, using \toks@ or \@temptokena +% is neither very safe---might be filled by macro ahead with +% something new. So reserve an own token register. +\newtoks\@ET@toks +\@ET@toks{\@ET@specialhalign} +% v1.3: In 'AMSmath', there are \halign's followed by explicit +% left braces. Thus '\def\@ET@specialhalign#1\bgroup{%' broke. +%% TODO ... \def\@ET@specialhalign{% - \ifmeasuring@ \expandafter\@firstoftwo -% v1.3 2005/03/04, for `amsmath'. - \else \expandafter\@secondoftwo + \ifmeasuring@ \expandafter\@firstoftwo +% v1.3 2005/03/04, for `amsmath'. + \else \expandafter\@secondoftwo \fi - {\let\halign\@ET@@halign \halign}% + {\let\halign\@ET@@halign \halign}% {\@ifnextchar\bgroup\@ET@replace@arg\@ET@sphalign@to}} -%% TODO: change back, commenting out code above, report -%% error with `alignat'. +%% TODO: change back, commenting out code above, report +%% error with `alignat'. % \@ifnextchar\bgroup\@ET@replace@arg\@ET@sphalign@to} -% If `amsmath' not loaded (v1.3): -\AtBeginDocument{\@ifundefined{measuring@true}{% +% If `amsmath' not loaded (v1.3): +\AtBeginDocument{\@ifundefined{measuring@true}{% \let\ifmeasuring@\iffalse}\relax} \def\@ET@replace@arg#1{% - \def\@EN@tempa{#1}\def\@EN@tempb{\bgroup}% Corr. after v1.3b. - \ifx\@EN@tempa\@EN@tempb + \def\@EN@tempa{#1}\def\@EN@tempb{\bgroup}% Corr. after v1.3b. + \ifx\@EN@tempa\@EN@tempb \def\@EN@tempa{\@ET@sphalign@to\bgroup}% - \else + \else \def\@EN@tempa{\@ET@sphalign@to{#1}}% -% This may be wrong, #1 might be `t' from `to' ... - \fi +% This may be wrong, #1 might be `t' from `to' ... + \fi \@EN@tempa} -\def\@ET@sphalign@to#1\bgroup{% - \let\halign\@ET@@halign % Reset for nested arrays. - \halign#1\bgroup -% \ifmeasuring@\else % For `amsmath', moved backwards. - \@ET@startline % [Wizard interface, via \@ET@starlinewith.] -% \fi +\def\@ET@sphalign@to#1\bgroup{% + \let\halign\@ET@@halign % Reset for nested arrays. + \halign#1\bgroup +% \ifmeasuring@\else % For `amsmath', moved backwards. + \@ET@startline % [Wizard interface, via \@ET@starlinewith.] +% \fi } -% Wizard interface: -\def\@ET@startlinewith{% Next token precedes preamble. -% \let\@ET@@halign\halign % Or \AtBeginDocument? -% ... indeed: bad loop with long longtable (\LT@get@widths!?) - \def\halign{\the\@ET@toks}% - \let\@ET@startline -} -\AtBeginDocument{\let\@ET@@halign\halign} -% Or save it at start of environment only -% (don't repeat inside longtable). -% -% Outer hook for inserts: (wizard interface) -\def\@ET@execute@outerhook{% To be placed outside inner mode. - \@ET@outerhook \global\let\@ET@outerhook\@empty -} -\global\let\@ET@outerhook\@empty % Just to remind: global! -% \@EN@hookfn (ednotes) sends to outer hook: -\def\@ET@use@outerhook{% Wizard interface. - \def\@EN@hookfn{\g@addto@macro\@ET@outerhook}% -}%% TODO: move last line to `ednotes', \let\@ET@use...\@empty. -%% But this requires re-installing both packages -%% at the same time. See the `ampnotes' thing as well. -% -% Trivialize \linelabel: (wizard interface) +% Wizard interface: +\def\@ET@startlinewith{% Next token precedes preamble. +% \let\@ET@@halign\halign % Or \AtBeginDocument? +% ... indeed: bad loop with long longtable (\LT@get@widths!?) + \def\halign{\the\@ET@toks}% + \let\@ET@startline +} +\AtBeginDocument{\let\@ET@@halign\halign} +% Or save it at start of environment only +% (don't repeat inside longtable). +% +% Outer hook for inserts: (wizard interface) +\def\@ET@execute@outerhook{% To be placed outside inner mode. + \@ET@outerhook \global\let\@ET@outerhook\@empty +} +\global\let\@ET@outerhook\@empty % Just to remind: global! +% \@EN@hookfn (ednotes) sends to outer hook: +\def\@ET@use@outerhook{% Wizard interface. + \def\@EN@hookfn{\g@addto@macro\@ET@outerhook}% +}%% TODO: move last line to `ednotes', \let\@ET@use...\@empty. +%% But this requires re-installing both packages +%% at the same time. See the `ampnotes' thing as well. +% +% Trivialize \linelabel: (wizard interface) \def\@ET@trivialize@linelabel{\let\linelabel\@ET@linelabel} -\def\@ET@linelabel{% - \protected@edef\@currentlabel{\theLineNumber}% +\def\@ET@linelabel{% + \protected@edef\@currentlabel{\theLineNumber}% \label } -% Change ampersand at \Anote etc.: (wizard interface) -%% 2003/10/31. -% & is changed by \Anote etc. No \begin...\endgroup, -% next \\ or & after % note/donote command switches back. -% ---Global change seems to break table setup. -\begingroup +% Change ampersand at \Anote etc.: (wizard interface) +%% 2003/10/31. +% & is changed by \Anote etc. No \begin...\endgroup, +% next \\ or & after % note/donote command switches back. +% ---Global change seems to break table setup. +\begingroup \gdef\@ET@hideamps{\catcode`\&\active} -\@ET@hideamps -\gdef\@ET@ampnotes{% - \let&\@ET@hideamp - %% & would be undefined after \\ in lemma. - \let\@ET@EN@rnote\@EN@note +\@ET@hideamps +\gdef\@ET@ampnotes{% + \let&\@ET@hideamp + %% & would be undefined after \\ in lemma. + \let\@ET@EN@rnote\@EN@note \def\@EN@note{\@ET@hideamps\@ET@EN@rnote}% - \let\@ET@EN@rnotelb\@EN@notelabel + \let\@ET@EN@rnotelb\@EN@notelabel \def\@EN@notelabel{\@ET@hideamps\@ET@EN@rnotelb}% -} -%% TODO: & and \\ in \@EN@lemmaexpands!? -\endgroup +} +%% TODO: & and \\ in \@EN@lemmaexpands!? +\endgroup \def\@ET@hideamp{&} -\newenvironment*{edtable}[2][]{% -% #1 $ or $$, #2 standard environment name. -%% TODO: star version!? cf. lineno.sty's `numquote'. - \def\@ET@mode{#1}% - \def\@ET@currenvir{#2}% - \ifhmode \ifnum\the\lastpenalty=-\@M\else -% \par must be executed for printing/stopping line numbers: - \@centercr\relax \noindent - \fi \fi - \ifvmode \noindent \fi % Otherwise linenumbers are indented -% -- however, not recommended. - \@ET@use@outerhook - \@ET@trivialize@linelabel - \@ET@ampnotes - \@ET@startlinewith\@ET@normal@startline - \global\advance\c@linenumber\m@ne % Stepping correction. +\newenvironment*{edtable}[2][]{% +% #1 $ or $$, #2 standard environment name. +%% TODO: star version!? cf. lineno.sty's `numquote'. + \def\@ET@mode{#1}% + \def\@ET@currenvir{#2}% + \ifhmode \ifnum\the\lastpenalty=-\@M\else +% \par must be executed for printing/stopping line numbers: + \@centercr\relax \noindent + \fi \fi + \ifvmode \noindent \fi % Otherwise linenumbers are indented +% -- however, not recommended. + \@ET@use@outerhook + \@ET@trivialize@linelabel + \@ET@ampnotes + \@ET@startlinewith\@ET@normal@startline + \global\advance\c@linenumber\m@ne % Stepping correction. % (Must come after closing previous paragraph.) -% Calculate offset: - \global\advance\c@ET@array\@ne -% Saving/calling width of table (`longtable's algorithm). -% Test if there is \@flushglue on the left (center or flushleft): - \edef\@EN@tempa{\the\@flushglue}% -% ... v1.3: fool this for "$$". - \in@{$$}{#1\@nil}% \in@{#1}{#2} searches #1 in #2#1 ... - \edef\@EN@tempb{\the\ifin@\@flushglue\else\leftskip\fi}% - \ifx\@EN@tempa\@EN@tempb -% Assume \@ET@offset is 0pt else here. - \@ET@offset\linewidth - \advance\@ET@offset-% - \@ifundefined\@ET@arraywidth@csn % Shortened for v1.3. - {\linewidth\G@refundefinedtrue - \PackageWarningNoLine{edtab}{^^JLine numbers at - \@ET@currenvir\space need \jobname.aux}}% - {\csname\@ET@arraywidth@csn\endcsname}% -% Test if \@flushglue on the right (center): -% ... v1.3: fool it again. Repeat \in@ in case ... +% Calculate offset: + \global\advance\c@ET@array\@ne +% Saving/calling width of table (`longtable's algorithm). +% Test if there is \@flushglue on the left (center or flushleft): + \edef\@EN@tempa{\the\@flushglue}% +% ... v1.3: fool this for "$$". + \in@{$$}{#1\@nil}% \in@{#1}{#2} searches #1 in #2#1 ... + \edef\@EN@tempb{\the\ifin@\@flushglue\else\leftskip\fi}% + \ifx\@EN@tempa\@EN@tempb +% Assume \@ET@offset is 0pt else here. + \@ET@offset\linewidth + \advance\@ET@offset-% + \@ifundefined\@ET@arraywidth@csn % Shortened for v1.3. + {\linewidth\G@refundefinedtrue + \PackageWarningNoLine{edtab}{^^JLine numbers at + \@ET@currenvir\space need \jobname.aux}}% + {\csname\@ET@arraywidth@csn\endcsname}% +% Test if \@flushglue on the right (center): +% ... v1.3: fool it again. Repeat \in@ in case ... \in@{$$}{#1\@nil}% - \edef\@EN@tempb{\the\ifin@\@flushglue\else\rightskip\fi}% - \ifx\@EN@tempa\@EN@tempb \divide\@ET@offset\tw@ \fi - \fi - \advance\@ET@offset\@totalleftmargin - \advance\@ET@offset\ETextraoffset % Offset ready. - \setbox\@tempboxa\hbox\bgroup -% v1.3: `alignat' complains later when this is \vbox instead. -% \vbox\bgroup % Tried in vain. - \ifx\@ET@mode\@empty\else $\fi - \csname#2\endcsname -}{% - \csname end\@ET@currenvir \endcsname - \ifx\@ET@mode\@empty\else $\fi - \egroup - \@ET@step@linenumber % Stepping correction. + \edef\@EN@tempb{\the\ifin@\@flushglue\else\rightskip\fi}% + \ifx\@EN@tempa\@EN@tempb \divide\@ET@offset\tw@ \fi + \fi + \advance\@ET@offset\@totalleftmargin + \advance\@ET@offset\ETextraoffset % Offset ready. + \setbox\@tempboxa\hbox\bgroup +% v1.3: `alignat' complains later when this is \vbox instead. +% \vbox\bgroup % Tried in vain. + \ifx\@ET@mode\@empty\else $\fi + \csname#2\endcsname +}{% + \csname end\@ET@currenvir \endcsname + \ifx\@ET@mode\@empty\else $\fi + \egroup + \@ET@step@linenumber % Stepping correction. \if@filesw \immediate\write\@auxout{% \gdef\expandafter\noexpand \csname\@ET@arraywidth@csn\endcsname {\the\wd\@tempboxa}}% -%% TODO: warning if changed!? +%% TODO: warning if changed!? \fi -% No automatic line number at array line: - \nolinenumbers - \@ET@mode\ensuremath{\vcenter{\box\@tempboxa}}\@ET@mode % v1.3. +% No automatic line number at array line: + \nolinenumbers + \@ET@mode\ensuremath{\vcenter{\box\@tempboxa}}\@ET@mode % v1.3. \@ET@execute@outerhook - \ifhmode \@centercr\relax \fi -% \par must be executed for proper restart of printing line numbers -% (think so). - \@endpetrue % Outside \@flushglue environment, avoid indent ahead. -%% TODO: slightly change for math mode around? Or give an error -%% in math mode. -} -%% TODO: make \edtable \outer!? + \ifhmode \@centercr\relax \fi +% \par must be executed for proper restart of printing line numbers +% (think so). + \@endpetrue % Outside \@flushglue environment, avoid indent ahead. +%% TODO: slightly change for math mode around? Or give an error +%% in math mode. +} +%% TODO: make \edtable \outer!? \def\@ET@normal@startline{% - \@ET@step@linenumber - \llap{\@ET@makeLineNumber \hskip\@ET@offset}% -} -\newdimen\@ET@offset -\newdimen\ETextraoffset -%% TODO: export to lineno.sty!? -\newcount\c@ET@array + \@ET@step@linenumber + \llap{\@ET@makeLineNumber \hskip\@ET@offset}% +} +\newdimen\@ET@offset +\newdimen\ETextraoffset +%% TODO: export to lineno.sty!? +\newcount\c@ET@array \def\@ET@arraywidth@csn{ET@a@\romannumeral\c@ET@array} -% -%% TODO: .dtx -\endinput +% +%% TODO: .dtx +\endinput -%% VERSION HISTORY: -v0.22 2003/01/13 First version, named `edtab02.sty', sent around, - together with ednotes.sty. -v0.23 2003/01/22 Added version history. -v0.24 2003/01/27 Copyright notice. -%%% v0.3 2003/03/03 Requires linenox0.sty. %% RETREATED -%% TODO: reconsider, see `lineno[x].sty'. -v0.25 2003/03/05 Added <ednotes.sty@web.de>. -v0.26 2003/03/23 Added \@ET@startlinewith to wizard command list; - moved redefinition \LT@get@widths from option code - into \@ET@longtable so this really happens in - line number mode only; moved \let\@ET@@halign\halign - from \@ET@startlinewith to \AtBeginDocument. -v0.27 2003/06/02 Added \ifvmode \noindent \fi to `edtable' definition; - 2003/06/10 added `lemma cannot run' to instructions. -v0.28 2003/10/31 \@ET@cr@attach: moved \@ET@execu..., added \nobreak. - Added \@ET@ampnotes and documentation: now working - across entries. -v1.0 2004/05/13 `ednotes.sty' etc., updated copyright. Renamed as - `edtable.sty' for TUGboat article. - \RequirePackage{lineno}, changed doc. accordingly. - Removed `may be released under different name'. -v1.10 2004/07/27 Looking for `longtabl.sty' for my Atari! - 2004/08/22 Added warning (screen/documentation) concerning - ltabptch.sty. - 2004/08/23 Added suggestion of option `nolongtablepatch'; - LPPL v1.3. -v1.2 2004/08/31 Rearranged preamble concerning maintenance, - removed `preliminary release'. - 2004/10/06 \newif -> \let...; option `nolongtablepatch'; - changed documentation accordingly and for - loading edtable.sty by lineno/ednotes option; - \let\@ET@step@linenumber\stepLineNumber; use - \ifLineNumbers. - 2004/10/07 Needed version numbers. - 2004/10/08 ltabptch warning -> error! - 2004/10/11 Disabled \RequirePackage{lineno}[...]; undid - the `longtabl.sty' thing from 2004/07/27. - 2004/10/12 latex/3730. -v1.2a 2004/11/07 LPPL v1.3a. -v1.2b 2005/01/10 Contact via http. -v1.3b 2005/03/04 Support for environments like `array' - environment. The description of `edtable' was - wrong in this respect! -v1.3 2005/03/07 Adaptations in documentation, and extended usage - instructions very much, correcting some - errors as well. Acknowledgement to M. B. -v1.3a 2005/03/09 Corrected numbering in `usage'. -v1.3c 2005/03/15 \@centercr\relax, TODO on math mode. - 2005/04/09 `editory' -> `editorial'. +%% VERSION HISTORY: +v0.22 2003/01/13 First version, named `edtab02.sty', sent around, + together with ednotes.sty. +v0.23 2003/01/22 Added version history. +v0.24 2003/01/27 Copyright notice. +%%% v0.3 2003/03/03 Requires linenox0.sty. %% RETREATED +%% TODO: reconsider, see `lineno[x].sty'. +v0.25 2003/03/05 Added <ednotes.sty@web.de>. +v0.26 2003/03/23 Added \@ET@startlinewith to wizard command list; + moved redefinition \LT@get@widths from option code + into \@ET@longtable so this really happens in + line number mode only; moved \let\@ET@@halign\halign + from \@ET@startlinewith to \AtBeginDocument. +v0.27 2003/06/02 Added \ifvmode \noindent \fi to `edtable' definition; + 2003/06/10 added `lemma cannot run' to instructions. +v0.28 2003/10/31 \@ET@cr@attach: moved \@ET@execu..., added \nobreak. + Added \@ET@ampnotes and documentation: now working + across entries. +v1.0 2004/05/13 `ednotes.sty' etc., updated copyright. Renamed as + `edtable.sty' for TUGboat article. + \RequirePackage{lineno}, changed doc. accordingly. + Removed `may be released under different name'. +v1.10 2004/07/27 Looking for `longtabl.sty' for my Atari! + 2004/08/22 Added warning (screen/documentation) concerning + ltabptch.sty. + 2004/08/23 Added suggestion of option `nolongtablepatch'; + LPPL v1.3. +v1.2 2004/08/31 Rearranged preamble concerning maintenance, + removed `preliminary release'. + 2004/10/06 \newif -> \let...; option `nolongtablepatch'; + changed documentation accordingly and for + loading edtable.sty by lineno/ednotes option; + \let\@ET@step@linenumber\stepLineNumber; use + \ifLineNumbers. + 2004/10/07 Needed version numbers. + 2004/10/08 ltabptch warning -> error! + 2004/10/11 Disabled \RequirePackage{lineno}[...]; undid + the `longtabl.sty' thing from 2004/07/27. + 2004/10/12 latex/3730. +v1.2a 2004/11/07 LPPL v1.3a. +v1.2b 2005/01/10 Contact via http. +v1.3b 2005/03/04 Support for environments like `array' + environment. The description of `edtable' was + wrong in this respect! +v1.3 2005/03/07 Adaptations in documentation, and extended usage + instructions very much, correcting some + errors as well. Acknowledgement to M. B. +v1.3a 2005/03/09 Corrected numbering in `usage'. +v1.3c 2005/03/15 \@centercr\relax, TODO on math mode. + 2005/04/09 `editory' -> `editorial'. diff --git a/Master/texmf-dist/tex/latex/lineno/fnlineno.sty b/Master/texmf-dist/tex/latex/lineno/fnlineno.sty index 5c53da606c7..224f4743dba 100644 --- a/Master/texmf-dist/tex/latex/lineno/fnlineno.sty +++ b/Master/texmf-dist/tex/latex/lineno/fnlineno.sty @@ -2,37 +2,37 @@ \ProvidesPackage{fnlineno}[2011/01/07 v0.55 numbers to footnote lines (UL)] -%% Copyright (C) 2010 Uwe Lueck, -%% http://www.contact-ednotes.sty.de.vu -%% -- author-maintained in the sense of LPPL below -- +%% Copyright (C) 2010 Uwe Lueck, +%% http://www.contact-ednotes.sty.de.vu +%% -- author-maintained in the sense of LPPL below -- %% -%% This file can be redistributed and/or modified under -%% the terms of the LaTeX Project Public License; either +%% This file can be redistributed and/or modified under +%% the terms of the LaTeX Project Public License; either %% version 1.3c of the License, or any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt -%% We did our best to help you, but there is NO WARRANTY. +%% We did our best to help you, but there is NO WARRANTY. %% -%% Please report bugs, problems, and suggestions via -%% -%% http://www.contact-ednotes.sty.de.vu +%% Please report bugs, problems, and suggestions via %% -%% {\it This work has been supported +%% http://www.contact-ednotes.sty.de.vu +%% +%% {\it This work has been supported %% % and is owned %% wrong, owner is RUB -- 2011/02/09 -%% by the Deutsche Forschungsgemeinschaft (DFG), +%% by the Deutsche Forschungsgemeinschaft (DFG), %% organized %% 2010/12/18 TODO!? -%% by Prof.~Dr.\ Dr.\ Christian Tapp +%% by Prof.~Dr.\ Dr.\ Christian Tapp %% at Ruhr-Universit\"at Bochum, Germany.} %% %% 2010/12/18: %% Christian also has constructed some critical tests. -%% +%% %% === Installing and Calling === -%% The file 'fnlineno.sty' is provided ready, installation only requires -%% putting it somewhere where \TeX\ finds it -%% (which may need updating the filename data +%% The file 'fnlineno.sty' is provided ready, installation only requires +%% putting it somewhere where \TeX\ finds it +%% (which may need updating the filename data %% base).\footnote{\url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=inst-wlcf}} -%% -%% As usually, 'fnlineno.sty' is loaded by +%% +%% As usually, 'fnlineno.sty' is loaded by %% % \begin{verbatim} %% `\usepackage{fnlineno}' %% % \end{verbatim} @@ -40,91 +40,91 @@ %% %% === Limitations === %% v0.55 %%% v0.5 %% 2011/02/09 -%% should really work +%% should really work %% the way users expect, %% 2011/02/09 %% but please consider: -%% % In the \strong{present version (v0.4)}, 'flnineno.sty' is just +%% % In the \strong{present version (v0.4)}, 'flnineno.sty' is just %% % ``work in progress"---with at least the following issues: %% \begin{enumerate} -%% % \item Lines are numbered in an order -%% % that you may not like, in the presence of -%% % footnotes. -%% % Overcoming this failure by automagic -%% % will be the major further work on the package! +%% % \item Lines are numbered in an order +%% % that you may not like, in the presence of +%% % footnotes. +%% % Overcoming this failure by automagic +%% % will be the major further work on the package! %% % (v0.5!?) -%% % -%% % \item The package is not expected to work with 'manyfoot' +%% % +%% % \item The package is not expected to work with 'manyfoot' %% % (neither 'ednotes' ... future work!). %% -%% \item Nothing is known about compatibility with +%% \item Nothing is known about compatibility with %% packages (other than 'manyfoot' and 'bigfoot') %% providing footnote features beyond standard \LaTeX. -%% -%% \item `\lipsum[<opt-arg>]' in main text produces +%% +%% \item `\lipsum[<opt-arg>]' in main text produces %% a different number of paragraphs ... -%% +%% %% %% 2010/12/18: -%% % \item `\pagebreak' (without optional argument, or -%% % `\pagebreak[4]') in footnotes prints footnote parts +%% % \item `\pagebreak' (without optional argument, or +%% % `\pagebreak[4]') in footnotes prints footnote parts %% % (splits) in wrong order.\footnote{TODO: -%% % (i)~extra case (using flag) in &\output -%% % with $&\outputpenalty=-10000$; +%% % (i)~extra case (using flag) in &\output +%% % with $&\outputpenalty=-10000$; %% % \emph{or} %% % (ii)~redefine &\pagebreak in footnotes ...} %% %% 2010/12/19, "tried" "assumed" 2010/12/21: -%% \item v0.41 tried supporting `\pagebreak' in footnotes -%% for manual control of splitting footnotes. +%% \item v0.41 tried supporting `\pagebreak' in footnotes +%% for manual control of splitting footnotes. %% %% 2010/12/20f.: %% However, it wrongly assumed that `\pagebreak[4]' -%% forces a footnote split, cf. Section~\ref{sec:sw}; +%% forces a footnote split, cf. Section~\ref{sec:sw}; %% users better still don't use `\pagebreak' %% in footnotes! -%% -%% \item Much of the code is ``guessed" without complete -%% knowledge of \TeX\ internals and without having +%% +%% \item Much of the code is ``guessed" without complete +%% knowledge of \TeX\ internals and without having %% tested many possible cases. %% %% 2010/12/27: %% \item \emph{Local} switching to ``pagewise" numbering -%% won't be possible for a while; we rather assume -%% that you \emph{always} want ``pagewise" numbering. +%% won't be possible for a while; we rather assume +%% that you \emph{always} want ``pagewise" numbering. %% -%% \item Nothing has been tried to offer choices about the +%% \item Nothing has been tried to offer choices about the %% \emph{style} of numbering footnotes. %% \end{enumerate} %% %% \pagebreak %% 2011/02/09 %% == Implementation == %% === Terms === -%% ``\strong{OTR}" is short for \textit{``output routine"}, +%% ``\strong{OTR}" is short for \textit{``output routine"}, %% ``\strong{MVL}" is short for \textit{``main vertical list"}. %% %%% TODO "acro" %% %% === Basic Strategy === -%% \LaTeX's |\@footnotetext| writes the footnote text into the -%% insertion register. For numbering the footnote lines, -%% \emph{we here} do not execute this `\@footnotetext' -%% immediately after placing |\@footnotemark|, -%% but postpone its |\insert| a little so it -%% is executed only after the main text paragraph has been -%% broken into lines. Right below the line that contains the -%% footnote mark, a special new ``slot" of the \strong{OTR} -%% is called that interchanges ``the page so far" with the -%% footnote text. When the latter has been typeset, -%% another ``slot" of the OTR puts ``the page so far" -%% back to the MVL and immediately after that fills the footnote -%% text as just typeset on the MVL into the `\insert' register. -%% -%% Passing footnotes from horizontal mode to vertical mode -%% resembles 'lineno''s `\PostponeVadjust', but a +%% \LaTeX's |\@footnotetext| writes the footnote text into the +%% insertion register. For numbering the footnote lines, +%% \emph{we here} do not execute this `\@footnotetext' +%% immediately after placing |\@footnotemark|, +%% but postpone its |\insert| a little so it +%% is executed only after the main text paragraph has been +%% broken into lines. Right below the line that contains the +%% footnote mark, a special new ``slot" of the \strong{OTR} +%% is called that interchanges ``the page so far" with the +%% footnote text. When the latter has been typeset, +%% another ``slot" of the OTR puts ``the page so far" +%% back to the MVL and immediately after that fills the footnote +%% text as just typeset on the MVL into the `\insert' register. +%% +%% Passing footnotes from horizontal mode to vertical mode +%% resembles 'lineno''s `\PostponeVadjust', but a %% different \strong{list} |\FNLN@list| -%% must store code -%% (\textit{a})~for the footnote \strong{mark} and -%% (\textit{b})~for the footnote \strong{text}. +%% must store code +%% (\textit{a})~for the footnote \strong{mark} and +%% (\textit{b})~for the footnote \strong{text}. %% %%% (TODO: move this paragraph) %% %% === Package Options === %% A package option |[check-latex]| %% typo article 2010/12/31 -%% for checking vital \LaTeX\ internals may once be offered +%% for checking vital \LaTeX\ internals may once be offered %% (TODO 2010/12/12) ... \newif\if@FNLN@check@ \DeclareOption{check-latex}{\@FNLN@check@true} @@ -133,13 +133,13 @@ %% === Footnote Commands === %% ==== Standard Footnotes ==== %% The following macro |\FNLN@ltx@fntext| %% more 2010/12/16 -%% is a copy of \LaTeX's `\@footnotetext' -%% that we are varying. It may be used for a check -%% if the `\@footnotetext' that 'fnlineno.sty' encounters +%% is a copy of \LaTeX's `\@footnotetext' +%% that we are varying. It may be used for a check +%% if the `\@footnotetext' that 'fnlineno.sty' encounters %% is the one expected (TODO). -%% In line numbering mode, this code may never be needed -%% all at once, rather we will have to see which material -%% must be used at which point of our unusual way of +%% In line numbering mode, this code may never be needed +%% all at once, rather we will have to see which material +%% must be used at which point of our unusual way of %% processeing footnotes. \if@FNLN@check@ \long\def\FNLN@ltx@fntext#1{\insert\footins{% @@ -158,24 +158,24 @@ \fi %% %% ==== Modifying Footnote Commands ==== -%% In order to number |\footnote| lines and make -%% `\linelabel' available in footnotes, it seems to suffice -%% (with standard \LaTeX) to \strong{redefine} +%% In order to number |\footnote| lines and make +%% `\linelabel' available in footnotes, it seems to suffice +%% (with standard \LaTeX) to \strong{redefine} %% the internal |\@footnotetext|. -%% In line numbering mode, `\@footnotetext' will act as -%% |\FNLN@text|, +%% In line numbering mode, `\@footnotetext' will act as +%% |\FNLN@text|, %% % \begin{itemize} -%% % \item[(i)] +%% % \item[(i)] %% (\textit{i})~% %% placing a ``signal" \strong{output penalty} %% below the current line via `\vadjust' and -%% % \item[(ii)] +%% % \item[(ii)] %% (\textit{ii})~% -%% appending the footnote text to the -%% \strong{list} |\FNLN@list| of \strong{footnote texts}. +%% appending the footnote text to the +%% \strong{list} |\FNLN@list| of \strong{footnote texts}. %% % \end{itemize} -%% -%% |\FNLN@@text| stores the `\@footnotetext' found, +%% +%% |\FNLN@@text| stores the `\@footnotetext' found, %% we might check if it is `\FNLN@ltx@fntext' ... %% TODO \let\FNLN@@text\@footnotetext \def\@footnotetext{% @@ -184,27 +184,27 @@ \fi} \def \FNLN@text {% %% 2010/12/31 arg read later \vadjust{\penalty-\FNLN@M@swap@codepen}% -%% Standard \LaTeX's `\@footnotetext' expands `\@thefnmark' -%% to produce the footnote mark at the page bottom, -%% right after it has been determined for the mark -%% in the main text. \emph{Here} the footnote text +%% Standard \LaTeX's `\@footnotetext' expands `\@thefnmark' +%% to produce the footnote mark at the page bottom, +%% right after it has been determined for the mark +%% in the main text. \emph{Here} the footnote text %% will be typeset only when \emph{other} footnote marks -%% may have been formed for typesetting the main text -%% paragraph before. +%% may have been formed for typesetting the main text +%% paragraph before. %% %%% (TODO clearer wording) -%% In the \strong{footnote list} +%% In the \strong{footnote list} %% macro |\FNLN@list|, the (\dqtd{`&\protect'ed}) -%% \emph{current} expansion <mark> of `\@thefnmark' -%% is stored as an item preceding the footnote text -%% <text>. One footnote entry in `\FNLN@list' +%% \emph{current} expansion <mark> of `\@thefnmark' +%% is stored as an item preceding the footnote text +%% <text>. One footnote entry in `\FNLN@list' %% thus has the form \lq`<mark>\@lt<text>\@lt'\rq. -%% \LaTeX's internal `\g@addto@macro' is used to \emph{append} -%% an entry to the list (at the right). The OTR will later -%% take the entries from the left of the list. -%% -%% The argument of the auxiliary/temporary `\@tempa' -%% will contain the footnote text and thus must be able to -%% carry `\par' tokens. We therefore need a `\long' version of +%% \LaTeX's internal `\g@addto@macro' is used to \emph{append} +%% an entry to the list (at the right). The OTR will later +%% take the entries from the left of the list. +%% +%% The argument of the auxiliary/temporary `\@tempa' +%% will contain the footnote text and thus must be able to +%% carry `\par' tokens. We therefore need a `\long' version of %% `\protected@edef': \let\@@protect\protect \let\protect\@unexpandable@protect @@ -212,7 +212,7 @@ \long \edef \@tempa ##1{% \noexpand\g@addto@macro \noexpand\FNLN@list {% \@thefnmark \noexpand\@lt ##1\noexpand \@lt}}% -%% ... issuing +%% ... issuing %% \lq`\g@addto@macro\FNLN@list{<mark>\elt<text>\@lt}'\rq\ ... \@tempa %% reads arg } @@ -222,62 +222,62 @@ %% === Output Routines === %% ==== 'lineno''s Output Routine ==== %% The following is a copy of 'lineno''s OTR -%% that we are varying. It may be used for a check -%% if the OTR that 'fnlineno.sty' encounters +%% that we are varying. It may be used for a check +%% if the OTR that 'fnlineno.sty' encounters %% is the one expected (TODO). \if@FNLN@check@ \def\FNLN@lno@output {% \LineNoTest \if@tempswa - \ifnum\outputpenalty=-\@Mllbcodepen - \WriteLineNo - \else - \ifnum\outputpenalty=-\@Mppvacodepen - \PassVadjustList - \else - \LineNoLaTeXOutput - \fi - \fi - \else + \ifnum\outputpenalty=-\@Mllbcodepen + \WriteLineNo + \else + \ifnum\outputpenalty=-\@Mppvacodepen + \PassVadjustList + \else + \LineNoLaTeXOutput + \fi + \fi + \else \MakeLineNo \fi } %% The ``signal penalties" used here are - \mathchardef\FNLN@M@llbl@codepen=11111 - \mathchardef\FNLN@M@ppva@codepen=11112 + \mathchardef\FNLN@M@llbl@codepen=11111 + \mathchardef\FNLN@M@ppva@codepen=11112 \fi -%% Their names should mean ```\linelabel' code penalty" and +%% Their names should mean ```\linelabel' code penalty" and %% ```\PostponeVadjust' code penalty." %% %% |\TheLineNoLaTeXOutput|: -%% It turns out to be inconvenient here -%% that 'lineno' sacrifices access -%% to the \emph{primitive} `\output' (```\@tempa'"; -%% TODO: auxiliary package before loading 'lineno'!?; -%% later change 'lineno.sty' indeed). -%% So to change the OTR we use `\LineNoLaTeXOutput' as a hook -%% for adding additional cases of `\outputpenalt'ies. -%% We take a copy of `\LineNoLaTeXOutput' here. +%% It turns out to be inconvenient here +%% that 'lineno' sacrifices access +%% to the \emph{primitive} `\output' (```\@tempa'"; +%% TODO: auxiliary package before loading 'lineno'!?; +%% later change 'lineno.sty' indeed). +%% So to change the OTR we use `\LineNoLaTeXOutput' as a hook +%% for adding additional cases of `\outputpenalt'ies. +%% We take a copy of `\LineNoLaTeXOutput' here. \let\TheLineNoLaTeXOutput\LineNoLaTeXOutput %% %% ==== Tools for Temporary Parameter Changes ==== -%% |\GStoreReg{<register>}|\quad +%% |\GStoreReg{<register>}|\quad %% (or\quad |\GStoreReg<register>|\\[\smallskipamount] %% when <register> is a single token---\lq`\count0'\rq\ -%% being a counterexample ...)\quad -%% stores the current content of <register> -%% (\emph{globally}) as an internal macro so that it can be -%% restored later by\\[\smallskipamount] -%% |\RestoreReg{<register>}|\quad +%% being a counterexample ...)\quad +%% stores the current content of <register> +%% (\emph{globally}) as an internal macro so that it can be +%% restored later by\\[\smallskipamount] +%% |\RestoreReg{<register>}|\quad %% \mbox{(or\quad }|\RestoreReg<register>|)\\[\smallskipamount] -%% or \emph{globally} by\\[\smallskipamount] +%% or \emph{globally} by\\[\smallskipamount] %% |\GRestoreReg{<register>}|\quad (|\GRestoreReg<register>|) %% \\[\smallskipamount] -%% (The OTR runs in a local group!---Recall that assignments -%% to ``special dimens"---\TeX book p.\,271---are -%% automatically global.) +%% (The OTR runs in a local group!---Recall that assignments +%% to ``special dimens"---\TeX book p.\,271---are +%% automatically global.) %% <register> is something that can be prefixed by `\the' -%% to read its content and to which you can assign a value +%% to read its content and to which you can assign a value %% <value> by \lq<register><value>\rq. %% (TODO: could also be some `\catcode'!) %% %% and TODO allow changing name space! @@ -285,15 +285,15 @@ \expandafter \xdef \csname GS\string#1\endcsname {\the #1}} \newcommand*{\RestoreReg}[1]{#1\csname GS\string#1\endcsname \relax} \newcommand*{\GRestoreReg}{\global\RestoreReg} -%% |\GStoreSetReg{<register>}{<value>}| assigns %%% the new value -%% <value> to <register> (locally) after executing `\GStoreSet', -%% |\GStoreGSetReg| does the same \emph{globally} -%% (and still argument braces aren't needed when a single -%% token refers to the register). +%% |\GStoreSetReg{<register>}{<value>}| assigns %%% the new value +%% <value> to <register> (locally) after executing `\GStoreSet', +%% |\GStoreGSetReg| does the same \emph{globally} +%% (and still argument braces aren't needed when a single +%% token refers to the register). \newcommand*{\g@storesetreg}[3]{\GStoreReg{#2}#1#2#3\relax} \newcommand*{\GStoreSetReg} {\g@storesetreg\relax} \newcommand*{\GStoreGSetReg}{\g@storesetreg\global} -%% (These preliminaries might go into an own new package, TODO! +%% (These preliminaries might go into an own new package, TODO! %% + loop on list of <register>s ...) %% 2010/12/19 %% %% ==== The basic hook ==== @@ -301,15 +301,15 @@ %% We use two more penalties triggering the ``MVL swaps:" \mathchardef\FNLN@M@swap@codepen =11113 \mathchardef\FNLN@M@insert@codepen=11114 -%% v0.41 deals with |\pagebreak| in footnote texts, -%% using a flag |\if@FNLN@sw@| that must be set globally. +%% v0.41 deals with |\pagebreak| in footnote texts, +%% using a flag |\if@FNLN@sw@| that must be set globally. %% %% 2011/01/07: -%% It turned out not to work properly; however, the new -%% switch has served a different purpose for ``continuous +%% It turned out not to work properly; however, the new +%% switch has served a different purpose for ``continuous %% line numbering," cf. section~\ref{sec:cont}. \newif\if@FNLN@sw@ \global\@FNLN@sw@false %% v0.41 -%% When a `\pagebreak' triggers the OTR while typesetting -%% the footnote text, the page content is collected +%% When a `\pagebreak' triggers the OTR while typesetting +%% the footnote text, the page content is collected %% in a box |\FNLN@holdft|: \newsavebox\FNLN@holdft %% v0.41 %% Using |\LineNoLaTeXOutput| for hooking into the OTR: @@ -323,17 +323,17 @@ \if@FNLN@sw@ %% v0.41 % \showthe\outputpenalty %% 2010/12/20 \global\setbox \FNLN@holdft \vbox{% - \unvbox\FNLN@holdft + \unvbox\FNLN@holdft %% %% moved here, clarified 2010/12/21: -%% TODO from v0.41: `\pagebreak[4]' does not seem to force (reliably) -%% splitting a footnote; if the footnote is not split here, +%% TODO from v0.41: `\pagebreak[4]' does not seem to force (reliably) +%% splitting a footnote; if the footnote is not split here, %% at present the `\baselineskip' is lost, -%% see the footnote paragraph starting +%% see the footnote paragraph starting %% with \qtd{C} in `edfndemo.pdf' as of 2010/12/21. %% We would need some measuring ... `\pagebreak' %% might be redefined ... resembling \LaTeX's `\@specialoutput'! - \unvbox\@cclv -%% TODO same problem here, see the footnote paragraph starting + \unvbox\@cclv +%% TODO same problem here, see the footnote paragraph starting %% with \qtd{D} in `edfndemo.pdf' as of 2010/12/21. \penalty\outputpenalty}% %% TODO reset page book-keeping!? %% v0.41 @@ -343,45 +343,45 @@ \fi \fi } -%% \strong{An idea:}\quad Instead of so many `\ifnum', use +%% \strong{An idea:}\quad Instead of so many `\ifnum', use %% \[`\csname<chars>\the\outputpenalty\endcsname'\] -%% ... in 'lineno.sty', when you really have a broad -%% range of `\outputpenalties' useful to be +%% ... in 'lineno.sty', when you really have a broad +%% range of `\outputpenalties' useful to be %% described by `\ifnum' range checks ... %% %% ==== Typesetting the Footnote Text ==== -%% |\SwapFootnoteMain| is the slot of the OTR that our -%% modified `\@footnotetext' calls with +%% |\SwapFootnoteMain| is the slot of the OTR that our +%% modified `\@footnotetext' calls with %% $`\outputpenalty'=-`\FNLN@M@swap@codepen'$. -%% The ``column so far" is stored in a new box register +%% The ``column so far" is stored in a new box register %% |\FLNL@holdcol|. \newsavebox\FNLN@holdcol \newcommand*{\SwapFootnoteMain}{% \global \setbox\FNLN@holdcol \vbox{\unvbox\@cclv}% %% (... cf. `\@holdpg' in \LaTeX.) %% -%% The entire text of a footnote is typeset on top of -%% the MVL. `\vsize' is maximized temporarily to avoid -%% that the footnote text is broken across pages. +%% The entire text of a footnote is typeset on top of +%% the MVL. `\vsize' is maximized temporarily to avoid +%% that the footnote text is broken across pages. \GStoreGSetReg\vsize\maxdimen %% However, the user may want to use `\pagebreak' -%% in a footnote in order to control manually where -%% a ``long" footnote is split. v0.41 tries to support +%% in a footnote in order to control manually where +%% a ``long" footnote is split. v0.41 tries to support %% this: \global\@FNLN@sw@true %% v0.41 %% ... cf. Section~\ref{sec:sw}. %% -%% There shouldn't be any `\topskip', the space +%% There shouldn't be any `\topskip', the space %% on top of a footnote is controlled by `\footnotesep' %% entirely: \GStoreGSetReg\topskip\z@skip -%% (`\nointerlineskip' as well as setting `\topskip' +%% (`\nointerlineskip' as well as setting `\topskip' %% locally instead fails ... according to `\showlists' ...) %% -%% Resetting |\pagegoal| -%% (why doesn't it switch to $`\vsize'=`\maxdimen'$ automatically?), -%% |\pagetotal|, and the other ``special dimens" -%% (\TeX book p.\,271; rather experimental ... +%% Resetting |\pagegoal| +%% (why doesn't it switch to $`\vsize'=`\maxdimen'$ automatically?), +%% |\pagetotal|, and the other ``special dimens" +%% (\TeX book p.\,271; rather experimental ... %% I think it is important to restore them later ...) \GStoreSetReg\pagegoal \vsize \GStoreSetReg\pagetotal\z@ @@ -395,27 +395,27 @@ %% such as font: \reset@font\footnotesize \interlinepenalty\interfootnotelinepenalty -%% \LaTeX's `split' things here are relevant at +%% \LaTeX's `split' things here are relevant at %% `\insert\footins' only: (TODO!?) % \splittopskip\footnotesep % \splitmaxdepth \dp\strutbox \floatingpenalty \@MM \hsize\columnwidth \@parboxrestore %% The previous lines were from \LaTeX's `\@footnotetext'. -%% Now we need to restore the `\@thefnmark' that belongs -%% to the current footnote text. We use a macro that -%% tears two items from |\FNLN@list| and executes the +%% Now we need to restore the `\@thefnmark' that belongs +%% to the current footnote text. We use a macro that +%% tears two items from |\FNLN@list| and executes the %% rest of \LaTeX's `\@footnotetext': \expandafter \FNLN@typeset \FNLN@list \@@ % \showthe\vsize -%% ... so a `\vsize' assignment without `\global' -%% is noted here, and an analogous `\topskip' assignment +%% ... so a `\vsize' assignment without `\global' +%% is noted here, and an analogous `\topskip' assignment %% is not!? TODO ... } %% |\FNLN@typeset| first removes something %% reworded 2010/12/26 %% from the list of footnotes, similarly to \LaTeX's |\@xnext| -%% and 'lineno''s `\@LN@xnext', then executes a -%% remaining portion of \LaTeX's `\@footnotetext'. -%% The footnote text may contain `\par' tokens, +%% and 'lineno''s `\@LN@xnext', then executes a +%% remaining portion of \LaTeX's `\@footnotetext'. +%% The footnote text may contain `\par' tokens, %% so the definition must be `\long': \long\def \FNLN@typeset #1\@lt #2\@lt #3\@@{% \gdef\FNLN@list{#3}% @@ -428,11 +428,11 @@ %% We insert starting the 'lineno' settings ... \linenumbers \setfootnotelinenumbers %% 2010/12/25 -%% ... \LaTeX\ again (v0.41 exports dealing with -%% closing `\par' to `finstrut.sty'): +%% ... \LaTeX\ again (v0.41 exports dealing with +%% closing `\par' to `finstrut.sty'): \@makefntext{% \rule\z@\footnotesep\ignorespaces -%% We replace `#1' by `#2\par' (`\linenumberpar'), +%% We replace `#1' by `#2\par' (`\linenumberpar'), %% so we really need `finstrut.sty': #2\par \@finalstrut\strutbox}% @@ -441,25 +441,25 @@ \penalty-\FNLN@M@insert@codepen } \RequirePackage{finstrut} -%% +%% %% ==== &\insert\ the Footnote Text ==== %% |\InsertFootnote| is the slot of the OTR that executes %% `\insert\footins' with the numbered footnote text. -%% The ``column so far" stored in `\FNLN@holdcol' -%% is put onto the top of the MVL, and then parts of +%% The ``column so far" stored in `\FNLN@holdcol' +%% is put onto the top of the MVL, and then parts of %% \LaTeX's `\@footnotetext' are performed that haven't -%% been done earlier, applied to the footnote text -%% that the OTR should have found in `\box255'. -%% Before however, the previous `\topskip', `\vsize', and the +%% been done earlier, applied to the footnote text +%% that the OTR should have found in `\box255'. +%% Before however, the previous `\topskip', `\vsize', and the %% `\page'... book-keeping parameters are restored: \newcommand*{\InsertFootnote}{% \GRestoreReg\topskip \GRestoreReg\vsize -%% (... \emph{global} restoring of `\vsize' proved vital with +%% (... \emph{global} restoring of `\vsize' proved vital with %% 'edfndemo' 2010/12/17 ...) \RestoreReg \pagegoal \RestoreReg\pagetotal \RestoreReg \pagestretch - \RestoreReg \pagefilstretch - \RestoreReg \pagefillstretch + \RestoreReg \pagefilstretch + \RestoreReg \pagefillstretch \RestoreReg \pagefilllstretch \RestoreReg \pageshrink \RestoreReg\pagedepth \unvbox\FNLN@holdcol @@ -478,218 +478,218 @@ %% === ``Continuous'' Numbering === %% \label{sec:cont} %% ==== Goal ==== -%% With v0.5, for the first time we try to get a +%% With v0.5, for the first time we try to get a %% ``pagewise" numbering such that, if a main text line -%% has a footnote, -%% (\textit{i})~its printed number is just the natural -%% successor of the printed number of the previous main -%% text line -%% (instead of continuing previous numbering with the -%% lines of the footnote first), -%% and (\textit{ii})~the printed numbers of footnote lines +%% has a footnote, +%% (\textit{i})~its printed number is just the natural +%% successor of the printed number of the previous main +%% text line +%% (instead of continuing previous numbering with the +%% lines of the footnote first), +%% and (\textit{ii})~the printed numbers of footnote lines %% just continue the printed numbers of the main text lines. -%% This ``obvious'' desirement is not easy to achieve; -%% already pagewise numbering of main text lines, -%% without numbering footnote lines, has been somewhat +%% This ``obvious'' desirement is not easy to achieve; +%% already pagewise numbering of main text lines, +%% without numbering footnote lines, has been somewhat %% ingenious. %% %% ==== How to Number Lines Pagewise ==== %% The basic idea of 'lineno''s pagewise numbering is: %% \begin{enumerate} -%% \item Each numbered line of the document is identified +%% \item Each numbered line of the document is identified %% by a unique counter value, an ``absolute" number. -%% \item For each page (and column), the range of absolute -%% line numbers occurring on them is recorded -%% (or actually: the first and the last number). -%% \item The ``public," ``human-readable" (``pagewise") -%% format of a given absolute line number $l$ is generated by -%% (\textit{i})~finding the page (and column) with -%% first number $n$ and last number $k$ such that -%% $n\leq l\leq k$, +%% \item For each page (and column), the range of absolute +%% line numbers occurring on them is recorded +%% (or actually: the first and the last number). +%% \item The ``public," ``human-readable" (``pagewise") +%% format of a given absolute line number $l$ is generated by +%% (\textit{i})~finding the page (and column) with +%% first number $n$ and last number $k$ such that +%% $n\leq l\leq k$, %% (\textit{ii}) ``printing" $l-n+1$ in ``columnwise" -%% mode, otherwise $l-m+1$ where $m$ is the first -%% absolute line number in the left-hand column of the +%% mode, otherwise $l-m+1$ where $m$ is the first +%% absolute line number in the left-hand column of the %% same page. %% \end{enumerate} -%% \strong{Generating} the ``pagewise" representation for a -%% given absolute line number $l$ thus may be summarized as -%% \emph{finding the corresponding \emph{\strong{offset}} value} +%% \strong{Generating} the ``pagewise" representation for a +%% given absolute line number $l$ thus may be summarized as +%% \emph{finding the corresponding \emph{\strong{offset}} value} %% to be subtracted ($n$, $n+1$, $m$, or $m+1$ ...). %% -%% When \emph{footnote} lines are to be numbered as well, -%% a little problem is the order in which main text and -%% footnote lines increment the absolute counter. -%% 'lineno''s mechanism for this is started immediately -%% after a paragraph has been broken into lines. -%% Each line of the paragraph then calls a macro -%% generating the line number. 'fnlineno' now interrupts -%% numbering of main text lines at a line issuing a footnote. -%% The footnote text is typeset, including numbering its -%% lines at each end of a footnote paragraph. When the -%% footnote text has been sent into the `\insert' register, -%% numbering of main text lines is resumed. -%% -%% Up to v0.4 (a development version), we used the \emph{same} -%% absolute counter for main text and footnote lines. -%% When a page $p$ has more than one main text line and the first -%% one has a long footnote continued on the next page~$p+1$, -%% there is no ``range" of absolute line numbers -%% characterizing page~$p$ any more, -%% because the greatest absolute line number of page~$p$ -%% exceeds the absolute line numbers of the footnote continued +%% When \emph{footnote} lines are to be numbered as well, +%% a little problem is the order in which main text and +%% footnote lines increment the absolute counter. +%% 'lineno''s mechanism for this is started immediately +%% after a paragraph has been broken into lines. +%% Each line of the paragraph then calls a macro +%% generating the line number. 'fnlineno' now interrupts +%% numbering of main text lines at a line issuing a footnote. +%% The footnote text is typeset, including numbering its +%% lines at each end of a footnote paragraph. When the +%% footnote text has been sent into the `\insert' register, +%% numbering of main text lines is resumed. +%% +%% Up to v0.4 (a development version), we used the \emph{same} +%% absolute counter for main text and footnote lines. +%% When a page $p$ has more than one main text line and the first +%% one has a long footnote continued on the next page~$p+1$, +%% there is no ``range" of absolute line numbers +%% characterizing page~$p$ any more, +%% because the greatest absolute line number of page~$p$ +%% exceeds the absolute line numbers of the footnote continued %% on page~$p+1$. %% -%% 'lineno''s procedure can be revived by numbering -%% main text lines and footnote lines independently -%% from each other. We use \emph{two} absolute counters, -%% one is incremented with main text lines only, -%% the other with footnote lines only. -%% Numbering of main text lines just will not be affected -%% by numbering of the footnote lines. +%% 'lineno''s procedure can be revived by numbering +%% main text lines and footnote lines independently +%% from each other. We use \emph{two} absolute counters, +%% one is incremented with main text lines only, +%% the other with footnote lines only. +%% Numbering of main text lines just will not be affected +%% by numbering of the footnote lines. %% -%% Almost the same will hold for footnote lines. -%% Each page (and column) will have a characteristic -%% ``range" of absolute footnote line numbers $\{n,\dots,k\}$. -%% The only notable difference will be that for footnote line~$l$ -%% we print $(l-n+1)+(K-N+1) = (K+l)-(N+n)+2$ instead of +%% Almost the same will hold for footnote lines. +%% Each page (and column) will have a characteristic +%% ``range" of absolute footnote line numbers $\{n,\dots,k\}$. +%% The only notable difference will be that for footnote line~$l$ +%% we print $(l-n+1)+(K-N+1) = (K+l)-(N+n)+2$ instead of %% $l-n+1$---where $\{N,\dots,K\}$ is the range of \emph{main text} -%% line numbers of the page (and column). -%% -%% The previous discussion of \strong{generating} the printed -%% line number from its absolute version -%% has assumed that corresponding \strong{offset} values -%% have been given somehow, or that the ``line number ranges" -%% for pages are known from somewhere. -%% In fact, these ranges are \strong{computed} at the -%% \strong{start} of a \LaTeX\ run \emph{before} typesetting, -%% when reading the `.aux' file for the first -%% time. They are used in the entire document. -%% While typesetting, each numbered line of main text leaves -%% a record of its absolute number and page number in the new -%% version of the `.aux' file that the run creates, -%% a two-parameter macro `\@LN'. With 'fnlineno.sty', -%% there will be new `\@FLN' entries of the same type. -%% These `.aux' entries are used for building -%% the page range data for the next run. -%% When the document source has been changed, at least -%% \emph{two runs} will usually be required -%% to get correct line numbers in page margins, -%% and \emph{another} run will be needed so references -%% to line numbers by `\ref' and `\linelabel' are correct. -%% +%% line numbers of the page (and column). +%% +%% The previous discussion of \strong{generating} the printed +%% line number from its absolute version +%% has assumed that corresponding \strong{offset} values +%% have been given somehow, or that the ``line number ranges" +%% for pages are known from somewhere. +%% In fact, these ranges are \strong{computed} at the +%% \strong{start} of a \LaTeX\ run \emph{before} typesetting, +%% when reading the `.aux' file for the first +%% time. They are used in the entire document. +%% While typesetting, each numbered line of main text leaves +%% a record of its absolute number and page number in the new +%% version of the `.aux' file that the run creates, +%% a two-parameter macro `\@LN'. With 'fnlineno.sty', +%% there will be new `\@FLN' entries of the same type. +%% These `.aux' entries are used for building +%% the page range data for the next run. +%% When the document source has been changed, at least +%% \emph{two runs} will usually be required +%% to get correct line numbers in page margins, +%% and \emph{another} run will be needed so references +%% to line numbers by `\ref' and `\linelabel' are correct. +%% %% ==== Summary of Changes ==== -%% Variants of 'lineno.sty''s code for ``pagewise" +%% Variants of 'lineno.sty''s code for ``pagewise" %% numbering are following. Sometimes we generalize -%% `pagewise' stuff from 'lineno' and re-implement pagewise -%% numbering of main text lines as a special case, +%% `pagewise' stuff from 'lineno' and re-implement pagewise +%% numbering of main text lines as a special case, %% the other special case being numbering of footnote lines. -%% +%% %% Five things need modifications: %% \begin{description} -%% \item[Building page info macros:] -%% Processing `\@LN' and `\@FLN' `.aux' entries will -%% use shared building macros, the difference is -%% obtained by switching \strong{name spaces}. -%% (It may be notable that a page may get one -%% info macro for main text and another for +%% \item[Building page info macros:] +%% Processing `\@LN' and `\@FLN' `.aux' entries will +%% use shared building macros, the difference is +%% obtained by switching \strong{name spaces}. +%% (It may be notable that a page may get one +%% info macro for main text and another for %% footnote text, if it contains footnote text.) %% \item[Logging:] -%% While typesetting, the shared logging macro -%% is switched to write either `\@LN' or `\@FLN' -%% to the `.aux' file. Also, `\c@linenumber' -%% may refer to either the main text or to the -%% footnote text counter. +%% While typesetting, the shared logging macro +%% is switched to write either `\@LN' or `\@FLN' +%% to the `.aux' file. Also, `\c@linenumber' +%% may refer to either the main text or to the +%% footnote text counter. %% \item[Generating ``pagewise" format:] -%% The choice of `\c@linenumber' also determines -%% which counter is incremented, and again -%% name spaces for page info macros are switched. -%% For footnote lines, -%% a tail macro for adding the number of main text lines +%% The choice of `\c@linenumber' also determines +%% which counter is incremented, and again +%% name spaces for page info macros are switched. +%% For footnote lines, +%% a tail macro for adding the number of main text lines %% will be activated. %% \item[Referencing:] %% The `.aux' file may have entries from `\linelabel' %% containing large numbers from an ``absolute" counter. -%% In generating the ``human-readable" number, -%% it must be known whether it is a main text or a -%% footnote line number. +%% In generating the ``human-readable" number, +%% it must be known whether it is a main text or a +%% footnote line number. %% %% 2010/12/28: -%% An additional complication is referring to a -%% main text line from a footnote and vice versa---thinking +%% An additional complication is referring to a +%% main text line from a footnote and vice versa---thinking %% of global changes in generating the number. -%% Or even think of the case referring from unnumbered text +%% Or even think of the case referring from unnumbered text %% to numbered text! -%% (I have wondered before if the entry couldn't be +%% (I have wondered before if the entry couldn't be %% the ready human-readable number, TODO!) %% %% 2010/12/27: %% \item[Lists of ``vertical tasks":] -%% 'lineno.sty' (v4) has introduced two lists of +%% 'lineno.sty' (v4) has introduced two lists of %% tasks that were issued in horizontal mode -%% but only can be completed after breaking a paragraph -%% into lines: one for `\linelabel's and one for `\vadjust' -%% items that must wait until the line number has been -%% attached. It is essential that the tasks are processed -%% in the same order in vertical mode as they were -%% issued in horizontal mode. As we are now interrupting -%% processing of main text paragraphs for processing -%% footnotes, tasks for footnote text must be lined up -%% in separate lists than tasks for main text. -%% This is indeed essential for the previous issue -%% of getting `\linelabel' work in footnotes as well +%% but only can be completed after breaking a paragraph +%% into lines: one for `\linelabel's and one for `\vadjust' +%% items that must wait until the line number has been +%% attached. It is essential that the tasks are processed +%% in the same order in vertical mode as they were +%% issued in horizontal mode. As we are now interrupting +%% processing of main text paragraphs for processing +%% footnotes, tasks for footnote text must be lined up +%% in separate lists than tasks for main text. +%% This is indeed essential for the previous issue +%% of getting `\linelabel' work in footnotes as well %% as in main text. %% \end{description} -%% +%% %% ==== Info Building ==== -%% % These macros +%% % These macros %% |\@LN|, |\@FLN|, and |\@FNLN| -%% are processed at reading the `.aux' file before typesetting only. -%% The \strong{interface} to \strong{generating} +%% are processed at reading the `.aux' file before typesetting only. +%% The \strong{interface} to \strong{generating} %% ``pagewise" and footnote line numbers just are |\LN@Pfirst| -%% and |\FLN@Pfirst|, eventually pointing to the first page/column +%% and |\FLN@Pfirst|, eventually pointing to the first page/column %% with numbered main text lines or footnote lines, resp. \def \FLN@Pfirst {\nextLN\relax} -%% This initialization of `\FLN@Pfirst' is just the same -%% as the one of `\LN@Pfirst' in 'lineno.sty'; -%% their expansions are changed as soon +%% This initialization of `\FLN@Pfirst' is just the same +%% as the one of `\LN@Pfirst' in 'lineno.sty'; +%% their expansions are changed as soon %% as such a page is found, replacing the `\relax' by the -%% corresponding page info macro. -%% -%% `\LN@Pfirst' and `\FLN@Pfirst' are passed to +%% corresponding page info macro. +%% +%% `\LN@Pfirst' and `\FLN@Pfirst' are passed to %% |\testFirstNumberedPage| via the hook |\FNLN@first@numbered| %% that by default is the same as `\LN@first': \def \FNLN@first@numbered {\LN@Pfirst} %% (oh, it must be `\def' here to recognize the change ...). -%% This must be changed by `\setfootnotelinenumbers' -%% (`\let' then, as when called the change will have happened). +%% This must be changed by `\setfootnotelinenumbers' +%% (`\let' then, as when called the change will have happened). %% -%% Moreover, they are passed to |\NumberedPageCache| -%% (the page info macro where a search starts, -%% ``current" page/column) as its initialization; -%% the ``generating" macros then change the +%% Moreover, they are passed to |\NumberedPageCache| +%% (the page info macro where a search starts, +%% ``current" page/column) as its initialization; +%% the ``generating" macros then change the %% latter macro following `\nextLN' in the page info macros. %% -%% In this sense, no other ``name space switching" is needed +%% In this sense, no other ``name space switching" is needed %% for communication with other functions. -%% +%% %% 'lineno.sty' has changed |\LastNumberedPage| globally ... -%% the last page with numbered \emph{footnote} lines -%% may well be another one than the last page with -%% numbered \emph{main} text lines ... +%% the last page with numbered \emph{footnote} lines +%% may well be another one than the last page with +%% numbered \emph{main} text lines ... %% But fortunately, also `\LastNumberedPage' %% is needed in reading the `.aux' before typesetting only %% (`\@onlypreamble' is \LaTeX's disabling command): \@onlypreamble\LastNumberedPage -%% In 'lineno.sty', we have `\def\LastNumberedPage{first}'. -%% We need the same for the footnote variant |\FNLN@last@numbered| -%% (to be handled globally!): +%% In 'lineno.sty', we have `\def\LastNumberedPage{first}'. +%% We need the same for the footnote variant |\FNLN@last@numbered| +%% (to be handled globally!): \global \let \FNLN@last@numbered \LastNumberedPage \@onlypreamble \FNLN@last@numbered %% |\@FNLN{<names>}<last-numbered>{<line>}{<page>}| %% \\[\smallskipamount] -%% generalizes 'lineno.sty''s `\@LN{<line>}{<page>}' -%% to re-implement it. -%% There is an additional parameter argument <names> +%% generalizes 'lineno.sty''s `\@LN{<line>}{<page>}' +%% to re-implement it. +%% There is an additional parameter argument <names> %% for choosing name spaces -%% and a parameter <last-numbered> for choosing the macro +%% and a parameter <last-numbered> for choosing the macro %% storing the ``last numbered page." %% (An argument without braces expects a macro name.) \newcommand* \@FNLN [4]{{% @@ -698,17 +698,17 @@ \csname #1O#4\endcsname {#3}{#4}{#1}{#2}}} \@onlypreamble\@FNLN -%% As in 'lineno.sty' `\@LN' calls `\@@LN', a new variant +%% As in 'lineno.sty' `\@LN' calls `\@@LN', a new variant %% of `\@@LN' is called by `\@FLN' here, but it gets one -%% additional parameter for passing <names> -%% and another for passing <last-numbered> from `\@FLN'. -%% So the new syntax is\\[\smallskipamount] +%% additional parameter for passing <names> +%% and another for passing <last-numbered> from `\@FLN'. +%% So the new syntax is\\[\smallskipamount] %% |\@@LN<info><first-page-line>{<line>}{<page>}{<names>}<last-numbered>|: -\renewcommand* \@@LN [6]{% +\renewcommand* \@@LN [6]{% \ifx#1\relax \ifx#2\relax\gdef#2{#3}\fi - \expandafter\@@@LN\csname #5#6\endcsname#1% - \xdef#1{\lastLN{#3}\firstLN{#3}% + \expandafter\@@@LN\csname #5#6\endcsname#1% + \xdef#1{\lastLN{#3}\firstLN{#3}% \pageLN{#4}{\@LN@column}{#2}\nextLN\relax}% \else \def\lastLN##1{\noexpand\lastLN{#3}}% @@ -717,54 +717,54 @@ \xdef#6{#4C\@LN@column}} \@onlypreamble\@@LN %% 'lineno.sty''s |\@@@LN| does not need any adjustment. -%% -%% 'lineno.sty''s |\@LN{<line>}{<page>}| is reimplemented as -\def \@LN {\@FNLN{LN@P}\LastNumberedPage} -%% ---so `\@LN' really does the same as before, including name spaces. -%% -%% |\@FLN{<line>}{<page>}| is the other special case of the -%% new `\@FNLN'---an `F' precedes the earlier names, and +%% +%% 'lineno.sty''s |\@LN{<line>}{<page>}| is reimplemented as +\def \@LN {\@FNLN{LN@P}\LastNumberedPage} +%% ---so `\@LN' really does the same as before, including name spaces. +%% +%% |\@FLN{<line>}{<page>}| is the other special case of the +%% new `\@FNLN'---an `F' precedes the earlier names, and %% |\FNLN@last@numbered| is the storing macro initialized above: \def \@FLN {\@FNLN{FLN@P}\FNLN@last@numbered} -%% For logging, we make both unexpandable: %% 2010/12/27 +%% For logging, we make both unexpandable: %% 2010/12/27 % \AtBeginDocument{\let\@LN\relax \let\@FLN\relax} %% ... but this way nothing appears in the file!? TODO ... \@onlypreamble\@LN \@onlypreamble\@FLN -%% For reading the `.aux' finally, we do what +%% For reading the `.aux' finally, we do what %% 'lineno' does with `\@LN': \AtEndDocument{\let\@FLN\@gobbletwo} %% -%% ==== Tool for Reusing Global Operations with Macros ==== +%% ==== Tool for Reusing Global Operations with Macros ==== %% %% 2010/12/28 -%% 'lineno.sty' v4 provides list handling (changing lists globally) -%% and global changes of `\NumberedPageCache'. -%% We want to use them in ``main text" mode -%% as well as in ``footnote" mode. -%% To use such an operation on <ln-macro> for <fln-macro>, -%% we `\global\let<ln-macro><fln-macro>', apply the operations, -%% and finally `\global\let<fln-macro><ln-macro>'. -%% However, we are not only interested in how <fln-macro> -%% is changed this way, rather <ln-macro> also is used as input -%% for some operations, and we can choose which <fln-macro> -%% should be used as input. To switch from working on/with -%% <fln-1> to <fln-2> using <ln-macro> with an option -%% to use <fln-1> later again, a tool -%% |\GStoreUse<ln-macro><fln-1><fln-2>| is provided +%% 'lineno.sty' v4 provides list handling (changing lists globally) +%% and global changes of `\NumberedPageCache'. +%% We want to use them in ``main text" mode +%% as well as in ``footnote" mode. +%% To use such an operation on <ln-macro> for <fln-macro>, +%% we `\global\let<ln-macro><fln-macro>', apply the operations, +%% and finally `\global\let<fln-macro><ln-macro>'. +%% However, we are not only interested in how <fln-macro> +%% is changed this way, rather <ln-macro> also is used as input +%% for some operations, and we can choose which <fln-macro> +%% should be used as input. To switch from working on/with +%% <fln-1> to <fln-2> using <ln-macro> with an option +%% to use <fln-1> later again, a tool +%% |\GStoreUse<ln-macro><fln-1><fln-2>| is provided %% (should render later switchings much better readable): \newcommand* \GStoreUse [3]{\global\let#2#1\global\let#1#3} -%% I.e., current content of #1 is stored in #2, then +%% I.e., current content of #1 is stored in #2, then %% #1 attains the content of #3. -%% +%% %% ==== General Settings for Typesetting Stage ==== %% % %% 2011/01/01: %% 2011/01/02: wrong! -%% % With 'ednotes', it turns out that the heading is not quite -%% % correct, 'ednotes'' special `\newlabel' mechanism evaluates -%% % `\getpagewiselinelabel' already for building its note -%% % info macros at the first reading of the `.aux' file. +%% % With 'ednotes', it turns out that the heading is not quite +%% % correct, 'ednotes'' special `\newlabel' mechanism evaluates +%% % `\getpagewiselinelabel' already for building its note +%% % info macros at the first reading of the `.aux' file. %% %% %% 2010/12/27: -%% Oh my dear, it seems that all the switching -%% for the footnote variant of `pagewise' must be global +%% Oh my dear, it seems that all the switching +%% for the footnote variant of `pagewise' must be global %% (I can't find something useful using `\aftergroup' quickly). %% Therefore, I render 'lineno''s |\setpagewisenumbers| %% acting globally: @@ -775,16 +775,16 @@ } %% I just force this, hehe ... \setpagewiselinenumbers -%% As a counterpart to `\c@pagelinenumber', -%% |\c@footnotelinenumber| is reserved for the +%% As a counterpart to `\c@pagelinenumber', +%% |\c@footnotelinenumber| is reserved for the %% absolute footnote line numbers: \newcount\c@footnotelinenumber %% %% 2011/01/01 severe-bug fix, why didn't show up?: -%% |\FNLN@@cache| stores `\NumberedPageCache' +%% |\FNLN@@cache| stores `\NumberedPageCache' %% as from ``main" mode: \let \FNLN@@cache \NumberedPageCache -%% |\FNLN@cache| stores `\NumberedPageCache' -%% as from ``footnote" mode; its initial content is the +%% |\FNLN@cache| stores `\NumberedPageCache' +%% as from ``footnote" mode; its initial content is the %% counterpart or analogue to `\LN@Pfirst': \def \FNLN@cache {\FLN@Pfirst} %% %% 2010/12/28: @@ -802,40 +802,40 @@ \global\let \FNLN@vadjusts \@empty %% %% separation for referencing 2010/12/28: %% Settings for footnote line numbers first resemble -%% `\setpagewiselinenumbers'; but more changes -%% are needed, and results from main text numbering -%% must be stored. -%% Some of the settings are needed \emph{locally} for -%% generating numbers for labels, collected in +%% `\setpagewiselinenumbers'; but more changes +%% are needed, and results from main text numbering +%% must be stored. +%% Some of the settings are needed \emph{locally} for +%% generating numbers for labels, collected in %% |\setgetfootnotelinenumbers|; for this purpose %% nothing must be stored explicitly: -\newcommand* \setgetfootnotelinenumbers {% +\newcommand* \setgetfootnotelinenumbers {% %% Change of `\theLineNumber' is omitted as we are \emph{reading}, -%% not writing a label. +%% not writing a label. \let\c@linenumber\c@footnotelinenumber % \let\makeLineNumber\makeFootnoteLineNumber %% But in fact, |\makeFootnoteLineNumber| and -%% |\makePagewiseLineNumber| will be the same. -%% The difference is made by the choice of -%% |\FNLN@first@numbered| and |\NumberedPageCache| -%% for the line range searches. +%% |\makePagewiseLineNumber| will be the same. +%% The difference is made by the choice of +%% |\FNLN@first@numbered| and |\NumberedPageCache| +%% for the line range searches. \let \FNLN@first@numbered \FLN@Pfirst \let \FNLN@finish \FNLN@add } -%% |\setfootnotelinenumbers| performs all the settings -%% for typesetting footnotes in line numbering mode -%% \emph{globally}, +%% |\setfootnotelinenumbers| performs all the settings +%% for typesetting footnotes in line numbering mode +%% \emph{globally}, %% including storing results from typesetting main text: -\newcommand* \setfootnotelinenumbers {% +\newcommand* \setfootnotelinenumbers {% \globaldefs\@ne %% The previous line also renders `\setgetfootnotelinenumbers' global: \setgetfootnotelinenumbers -%% |\theLineNumber| is used for `\linelabel' entries. +%% |\theLineNumber| is used for `\linelabel' entries. %% `\thePagewiseLineNumber' is replaced by %% |\theFootnoteLineNumber|: \let\theLineNumber\theFootnoteLineNumber %% Logging to `.aux': - \def \FNLN@log {\string\@FLN}% + \def \FNLN@log {\string\@FLN}% %% %% 2010/12/28: %% Starting range search: |\NumberedPageCache| \FNLN@foot@cache @@ -844,16 +844,16 @@ \GStoreUse \@LN@vadjustlist \FNLN@@vadjusts \FNLN@vadjusts \globaldefs\z@ } -%% For switching back to ``main text mode," -%% again some settings may need a local variant---for +%% For switching back to ``main text mode," +%% again some settings may need a local variant---for %% processing line references from footnotes to main text! %% This is the purpose of |\setgetpagewiselinenumbers|: \newcommand* \setgetpagewiselinenumbers {% \let \FNLN@first@numbered \LN@Pfirst \let \FNLN@finish \@gobbletwo } -%% |\unsetfootnotelinenumbers| stores the ``current" -%% page with footnote lines and loads the ``most recent" +%% |\unsetfootnotelinenumbers| stores the ``current" +%% page with footnote lines and loads the ``most recent" %% page with main text lines---and more ...: \newcommand* \unsetfootnotelinenumbers {% \gdef \FNLN@log {\string\@LN}% @@ -864,33 +864,33 @@ \globaldefs\@ne \setgetpagewiselinenumbers \globaldefs\z@ %% v0.53 \setpagewiselinenumbers } -%% |\makeFootnoteLineNumber| actually only copies -%% |\makePagewiseLineNumber|, different results are obtained -%% be changing hooks. The command first calls -%% logging---|\logtheLineNumber|, -%% then generating the ``public" line number---|\getLineNumber| -%% (which in turn only is a copy of |\testNumberedPage| +%% |\makeFootnoteLineNumber| actually only copies +%% |\makePagewiseLineNumber|, different results are obtained +%% be changing hooks. The command first calls +%% logging---|\logtheLineNumber|, +%% then generating the ``public" line number---|\getLineNumber| +%% (which in turn only is a copy of |\testNumberedPage| %% in 'lineno.sty'). \@ifdefinable\makeFootnoteLineNumber {\let \makeFootnoteLineNumber \makePagewiseLineNumber} %% %% ==== Logging ==== -%% |\logtheLineNumber| is redefined to log both -%% main text and footnote line numbers. +%% |\logtheLineNumber| is redefined to log both +%% main text and footnote line numbers. \def \logtheLineNumber {% \protected@write\@auxout{}{% - \FNLN@log{\the\c@linenumber}{\noexpand\the\c@LN@truepage}}} -%% |\FNLN@log| is the hook for the difference, -%% its default expansion |\@LN| is made for + \FNLN@log{\the\c@linenumber}{\noexpand\the\c@LN@truepage}}} +%% |\FNLN@log| is the hook for the difference, +%% its default expansion |\@LN| is made for %% \emph{main text} line numbers: \gdef \FNLN@log {\string\@LN} %% %% ==== ``Public" Line Numbers ==== -%% Fortunately, these commands don't need to know much about -%% name spaces. The interfaces to them are -%% |\NumberedPageCache|---changing globally---and -%% |\FNLN@first@numbered|. Our -%% |\FNLN@cache| is initialized +%% Fortunately, these commands don't need to know much about +%% name spaces. The interfaces to them are +%% |\NumberedPageCache|---changing globally---and +%% |\FNLN@first@numbered|. Our +%% |\FNLN@cache| is initialized %% by analogy to its counterpart `\NumberedPageCache' %% (a minute name space change): \def \FNLN@cache {\FLN@Pfirst} @@ -908,12 +908,12 @@ %% don't need any modification. |\testLastNumberedPage| %% is modified in 'edfnotes.sty'. %% 2011/01/07 %% -%% |\gotNumberedPage| just needs a closing hook +%% |\gotNumberedPage| just needs a closing hook %% `\FNLN@finish' to allow for footnote lines. \renewcommand* \gotNumberedPage [4]{% \oddNumberedPagefalse \ifodd \if@twocolumn #3\else #2\fi\relax\oddNumberedPagetrue\fi - \advance\c@linenumber\@ne + \advance\c@linenumber\@ne \ifcolumnwiselinenumbers \subtractlinenumberoffset{#1}% \else @@ -922,12 +922,12 @@ % \show\FNLN@finish \FNLN@finish{#2}{#3}% } -%% |\FNLN@finish{<page>}{<column>}| gobbles both -%% arguments with \emph{main} text lines, -%% but will add the number of main text lines to +%% |\FNLN@finish{<page>}{<column>}| gobbles both +%% arguments with \emph{main} text lines, +%% but will add the number of main text lines to %% \emph{footnote} line numbers: \global\let \FNLN@finish \@gobbletwo -%% Then it will act as |\FNLN@add|. We run the page info macro +%% Then it will act as |\FNLN@add|. We run the page info macro %% for the same page (column; if defined). \newcommand* \FNLN@add [2]{% \expandafter \let\expandafter \@tempa\csname LN@P#1C#2\endcsname @@ -950,40 +950,40 @@ } %% %% ==== Referencing ==== -%% Now that we are using two separate counters for main text lines -%% and footnote lines (v0.5), correct references to footnote lines +%% Now that we are using two separate counters for main text lines +%% and footnote lines (v0.5), correct references to footnote lines %% using |\linelabel| and `\ref' need further adjustments. %% % %% 'lineno.sty''s `\thePagewiseLineNumber' %% and `\getpagewiselinenumber{<integer>}' %% are generalized and re-implemented %% % by |\theWiseLineNumber| and |\getwiselinenumber| -%% by macros that then serve to implement -%% referring to footnote line numbers. +%% by macros that then serve to implement +%% referring to footnote line numbers. %% -%% |\theWiseLineNumber{<trans>}| leaves a `\protect'ed call +%% |\theWiseLineNumber{<trans>}| leaves a `\protect'ed call %% to a one-parameter macro <trans> in the `.aux' file: -\newcommand* \theWiseLineNumber [1]{\protect #1{\the\c@linenumber}} -%% |\getwiselinenumber{<choice>}{<integer>}| executes <choice> -%% before applying `\testNumberedPage' to <integer>---within +\newcommand* \theWiseLineNumber [1]{\protect #1{\the\c@linenumber}} +%% |\getwiselinenumber{<choice>}{<integer>}| executes <choice> +%% before applying `\testNumberedPage' to <integer>---within %% a local group: \newcommand* \getwiselinenumber [2]{{% -%% Some wisdom is needed to take account of the current +%% Some wisdom is needed to take account of the current %% ``numbering state" from which `\ref' was called. %% \begin{description} %% \item[Referring to main text line:]\leavevmode %% \begin{itemize} -%% \item Unless called from numbered footnote, +%% \item Unless called from numbered footnote, %% no extra care is needed. -%% \item If called from numbered footnote, +%% \item If called from numbered footnote, %% `\setgetpagewiselinenumbers' %% and temporary switching of `\NumberedPageCache' %% is needed. %% \end{itemize} %% \item[Referring to footnote line:]\leavevmode %% \begin{itemize} -%% \item If called from numbered footnote, -%% no extra care is needed. +%% \item If called from numbered footnote, +%% no extra care is needed. %% \item Otherwise, `\setgetfootnotelinenumbers' %% and temporary switching of `\NumberedPageCache' %% is needed. @@ -1007,26 +1007,26 @@ \FNLN@restore@cache }} \let \FNLN@restore@cache \relax -%% |\getpagewiselinenumber| doesn't need any <choice>---we -%% assume that the label was written in the default `pagewise' +%% |\getpagewiselinenumber| doesn't need any <choice>---we +%% assume that the label was written in the default `pagewise' %% mode (but it is difficult, though, `\relax' is essential!): -% \renewcommand* \getpagewiselinenumber {\getwiselinenumber\relax} %!! -%% 2010/12/31, a compatibility problem with 'ednotes'' `\newlabel' -%% mechanism shows up. 'ednotes' ``undefines" `\getpagewiselinenumber' -%% and restores it only `\AtBeginDocument'. We must ensure that -%% 'ednotes' will not override our new version of -%% `\getpagewiselinenumber'. -%% (TODO in my view another motivation to write ``ready" numbers +% \renewcommand* \getpagewiselinenumber {\getwiselinenumber\relax} %!! +%% 2010/12/31, a compatibility problem with 'ednotes'' `\newlabel' +%% mechanism shows up. 'ednotes' ``undefines" `\getpagewiselinenumber' +%% and restores it only `\AtBeginDocument'. We must ensure that +%% 'ednotes' will not override our new version of +%% `\getpagewiselinenumber'. +%% (TODO in my view another motivation to write ``ready" numbers %% without `\getpagewiselinenumbers' directly.) %% -%% We might assume that 'ednotes' (if at all) is loaded directly -%% and loads 'lineno.sty' -%% (that is the usual and recommended way of using 'ednotes') -%% and that this will happen before 'fnlineno.sty' is loaded. -%% But now that we have spent some time understanding the -%% situation, we can deal with the case as well that 'lineno.sty' -%% is loaded first, then 'fnlineno.sty' is loaded, and then 'ednotes'. -%% (I have assumed earlier that 'fnlineno.sty' is loaded after +%% We might assume that 'ednotes' (if at all) is loaded directly +%% and loads 'lineno.sty' +%% (that is the usual and recommended way of using 'ednotes') +%% and that this will happen before 'fnlineno.sty' is loaded. +%% But now that we have spent some time understanding the +%% situation, we can deal with the case as well that 'lineno.sty' +%% is loaded first, then 'fnlineno.sty' is loaded, and then 'ednotes'. +%% (I have assumed earlier that 'fnlineno.sty' is loaded after %% 'lineno.sty' ...) \AtBeginDocument{% \def \getpagewiselinenumber {\getwiselinenumber\relax}% sic! @@ -1034,7 +1034,7 @@ %% For |\thePagewiseLineNumber|, <trans> is `\getpagewiselinenumber': \renewcommand* \thePagewiseLineNumber {% \theWiseLineNumber\getpagewiselinenumber} -%% |\getfootnotelinenumber{<integer>}| considers <integer> +%% |\getfootnotelinenumber{<integer>}| considers <integer> %% the absolute number of a \emph{footnote} line. The <choice> %% therefore is `\setgetfootnotelinenumbers': \newcommand* \getfootnotelinenumber {% @@ -1044,69 +1044,69 @@ %% is called with <trans> being `\getfootnotelinenumber': \newcommand* \theFootnoteLineNumber {% \theWiseLineNumber\getfootnotelinenumber} -%% +%% %% === Leaving the Package File === \endinput %% -%% == Acknowledgements == +%% == Acknowledgements == %% %% 2010/12/19 -%% On the 'texhax' mailing list, Boris Veytsman recommended -%% using Victor \mbox{Eijk}\-hout's \textit{\TeX\ by Topic} to me, -%% and Andrej Lapshin pointed me to David Salomon's work -%% on output routines -%% (TUGboat 1990 and 1994, also available as a book, +%% On the 'texhax' mailing list, Boris Veytsman recommended +%% using Victor \mbox{Eijk}\-hout's \textit{\TeX\ by Topic} to me, +%% and Andrej Lapshin pointed me to David Salomon's work +%% on output routines +%% (TUGboat 1990 and 1994, also available as a book, %% as Ulrich Dirr tells me). -%% It helped me a lot to read about output routines -%% in these works, beyond the \TeX book. -%% The abbreviations \lq OTR\rq\ and \lq MVL\rq\ are +%% It helped me a lot to read about output routines +%% in these works, beyond the \TeX book. +%% The abbreviations \lq OTR\rq\ and \lq MVL\rq\ are %% Salomon's.---And %% added 2010/12/27 -%% recall Christian's work and support -%% by the DFG named at the start of the package file.---And -%% ... the ideas of how to implement -%% (\textit i)~attaching line numbers, -%% (\textit{ii})~`\linelabel', and -%% (\textit{iii})~numbering lines ``pagewise"---so flexibly, -%% compatibly with many other \LaTeX\ packages, still +%% recall Christian's work and support +%% by the DFG named at the start of the package file.---And +%% ... the ideas of how to implement +%% (\textit i)~attaching line numbers, +%% (\textit{ii})~`\linelabel', and +%% (\textit{iii})~numbering lines ``pagewise"---so flexibly, +%% compatibly with many other \LaTeX\ packages, still %% are Stephan's ... -%% +%% %% == VERSION HISTORY == -v0.1 2010/12/08 very first, \linelabel works in footnote +v0.1 2010/12/08 very first, \linelabel works in footnote SENT TO Christian, problems with "long" footnotes v0.2 2010/12/08 corr. "manifoot" - 2010/12/09 moving doc. from .tex to here, + 2010/12/09 moving doc. from .tex to here, different doc. sectioning; - \@footnotetext modified (user feature!); + \@footnotetext modified (user feature!); \@doclearpage NOT modified!; \if@FNLN@placing@ - 2010/12/10 ignore dummy footnote split; - \FNLNpar, \AutoPars, \ExplicitPars, + 2010/12/10 ignore dummy footnote split; + \FNLNpar, \AutoPars, \ExplicitPars, more on limitations 2010/12/11 more trying, almost anew ... JUST STORED v0.3 2010/12/12 new approach, removed much before proceeding - 2010/12/13 -- this was putting \box\footins onto MVL, + 2010/12/13 -- this was putting \box\footins onto MVL, bad with those penalties JUST STORED -v0.4 2010/12/14 another new approach: - typeset footnote on MVL immediately -- +v0.4 2010/12/14 another new approach: + typeset footnote on MVL immediately -- described strategy - 2010/12/15 ... continued, choice of hooking into \output + 2010/12/15 ... continued, choice of hooking into \output (...swap...) - 2010/12/16 ... continued; rearranged sections ... + 2010/12/16 ... continued; rearranged sections ... \FNLN@@fntext vs. ...ltx... - 2010/12/17 success with \pagegoal ...; \GStoreReg etc.; - ...@fntext shortened - 2010/12/18 another two limitations: \pagebreak in fn., - guessed/tested; another note to <register>; + 2010/12/17 success with \pagegoal ...; \GStoreReg etc.; + ...@fntext shortened + 2010/12/18 another two limitations: \pagebreak in fn., + guessed/tested; another note to <register>; ack. Christian; directed -> organized!? SENT TO Christian/Stephan -v0.41 2010/12/19 support of \pagebreak with \if@FNLN@sw@ etc.; +v0.41 2010/12/19 support of \pagebreak with \if@FNLN@sw@ etc.; TODO on lists of <register>s 2010/12/20 debugging: \if...true; \setbox...ft; - \@finalstrut in vmode exported to finstrut.sty; + \@finalstrut in vmode exported to finstrut.sty; notes on how v0.41 still fails with \pagebreak 2010/12/21 additional notes on *two* \pagebreak's @@ -1117,33 +1117,33 @@ v0.5 2010/12/21 restructuring doc., check@latex@ -> check@, 2010/12/24 ... continued ... 2010/12/25 moved this to pwlineno, replaced ... more on \FNLN@typeset, + \setfootnotelinenumbers - 2010/12/26 new summary of implementation, + 2010/12/26 new summary of implementation, rearranged code sections; logging settled v0.51 2010/12/27 "build" settled, typesetting, logging reformated; - ack.s: "recall"; all settings global, + ack.s: "recall"; all settings global, "public" works - JUST STORED, MARGINAL NUMBERS OK, + JUST STORED, MARGINAL NUMBERS OK, \linelabel in footnote broken - [2010/12/28] -v0.52 2010/12/28 own label and vadjust lists for footnotes; - local settings for referencing, + [2010/12/28] +v0.52 2010/12/28 own label and vadjust lists for footnotes; + local settings for referencing, tool and care for global changes (...Cache) (TODO write ready in .aux? needs another run) \linelabel's ok, MARGINAL NOTES MAIN BROKEN -v0.53 2010/12/28 debugging; OK; minor doc. modifications; +v0.53 2010/12/28 debugging; OK; minor doc. modifications; less "limitations"; \\[\smallskipamount] TO CHRISTIAN 2010-12-29 -v0.54 2010/12/31 typo options; \FNLN@text without arg, +v0.54 2010/12/31 typo options; \FNLN@text without arg, \getpagewiselinenumber with ednotes - 2011/01/01 \FNLN@cache, \FNLN@@cache initialized; + 2011/01/01 \FNLN@cache, \FNLN@@cache initialized; doc. "Typesetting Stage" qualification 2011/01/02 that qualification was wrong 2011/01/03 samepage@hook TO CHRISTIAN SAME DAY -v0.55 2011/01/04 samepage@hook emptied here as well; +v0.55 2011/01/04 samepage@hook emptied here as well; 2011/01/06 edited version history - 2011/01/07 note on \if@FNLN@sw@ with v0.5; + 2011/01/07 note on \if@FNLN@sw@ with v0.5; finally without support for samepage@hook! note on \testLastNumberedPage PART OF EDFN RELEASE r0.5 (together with edfnotes v0.2) -v0.55a 2011/02/09 corr. owner; "Limitations" updated; \pagebreak +v0.55a 2011/02/09 corr. owner; "Limitations" updated; \pagebreak diff --git a/Master/texmf-dist/tex/latex/lineno/lineno.sty b/Master/texmf-dist/tex/latex/lineno/lineno.sty index 53a7b5242ab..1b688e0f4d5 100644 --- a/Master/texmf-dist/tex/latex/lineno/lineno.sty +++ b/Master/texmf-dist/tex/latex/lineno/lineno.sty @@ -1,55 +1,56 @@ - \iffalse; awk '/S[H]ELL1/' lineno.sty|sh;exit; - ... see bottom for .tex documentation ... - -Macro file lineno.sty for LaTeX: attach line numbers, refer to them. - \fi -\def\fileversion{v4.41} \def\filedate{2005/11/02} %VERSION - -%%% Copyright 1995--2003 Stephan I. B"ottcher <boettcher@physik.uni-kiel.de>; -%%% Copyright 2002--2005 Uwe L"uck, http://www.contact-ednotes.sty.de.vu -%%% for version 4 and code from former Ednotes bundle -%%% --author-maintained. -%%% -%%% This file can be redistributed and/or modified under -%%% the terms of the LaTeX Project Public License; either + \iffalse; awk '/S[H]ELL1/' lineno.sty|sh;exit; + ... see bottom for .tex documentation ... + +Macro file lineno.sty for LaTeX: attach line numbers, refer to them. + \fi +\def\fileversion{v5.0} \def\filedate{2022/07/30} %VERSION + +%%% Copyright 1995--2003 Stephan I. B"ottcher <boettcher@physik.uni-kiel.de>; +%%% Copyright 2002--2005 Uwe L"uck, http://www.contact-ednotes.sty.de.vu +%%% for version 4 and code from former Ednotes bundle +%%% --author-maintained. +%%% +%%% This file can be redistributed and/or modified under +%%% the terms of the LaTeX Project Public License; either %%% version 1.3a of the License, or any later version. %%% The latest version of this license is in %%% http://www.latex-project.org/lppl.txt -%%% We did our best to help you, but there is NO WARRANTY. -% +%%% We did our best to help you, but there is NO WARRANTY. +% %%% $Id: lineno.sty,v 3.14.2.2 2004/09/13 19:30:39 stephan Exp $ %% was v4.00. -% \title{\texttt{\itshape +% \title{\texttt{\itshape %% %% (UL 2004/10/09:) Italic TT is evil -%% %% ... or nice front page layout!? +%% %% ... or nice front page layout!? %% -% lineno.sty \ \fileversion\ \filedate +% lineno.sty \ \fileversion\ \filedate % \unskip}\\\ \\ -% A \LaTeX\ package to attach +% A \LaTeX\ package to attach % \\ line numbers to paragraphs -% \unskip}\author{% -% Stephan I. B\"ottcher -% \\ Uwe L\"uck -% \unskip}\date{% -% boettcher@physik.uni-kiel.de -% \\ http://contact-ednotes.sty.de.vu +% \unskip}\author{% +% Stephan I. B\"ottcher +% \\ Uwe L\"uck +% \unskip}\date{% +% boettcher@physik.uni-kiel.de +% \\ http://contact-ednotes.sty.de.vu %% \\ stephan@nevis.columbia.edu -%% \\ Stephan.Boettcher@cern.ch +%% \\ Stephan.Boettcher@cern.ch % \\} % % \documentclass[a4paper,12pt]{article}%D -% \usepackage{lineno}%D +% \usepackage{lineno}%D +% \usepackage{hyperref}%D %% %% (New v4.00) -% \catcode`\_\active\let_~ -%% %% Beware math!? (/New v4.00) -% \def~{\verb~} -% \let\lessthan< +% \catcode`\_\active\let_~ +%% %% Beware math!? (/New v4.00) +% \def~{\verb~} +% \let\lessthan< % \catcode`\<\active % \def<#1>{$\langle${\itshape#1}\/$\rangle$} % \catcode`\|\active -%% (New v4.1: \tt star; in box anyway.) +%% (New v4.1: \tt star; in box anyway.) % \def|#1{\ttfamily\string#1} %% \def|#1{{\ttfamily\string#1}} -%% (/New v4.1) +%% (/New v4.1) % \newenvironment{code} % {\par\runninglinenumbers % \modulolinenumbers[1]% @@ -57,13 +58,13 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % \footnotesize % \def\linenumberfont % {\normalfont\tiny\itshape}} -% {} +% {} %% %% (New v4.00) % {\makeatletter \gdef\scs#1{\texttt % {\protect\@backslashchar#1}}} % \def\old{\par\footnotesize} %% %% (/New v4.00) -%% %% (New v4.1) +%% %% (New v4.1) % {\catcode`\/\active % \gdef\path{\begingroup\catcode`\/\active % \let/\slash\dopath} @@ -73,25 +74,25 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % \begin{document}%D %% \DocInput{lineno}%D % \pagewiselinenumbers -% \maketitle +% \maketitle % \pagestyle{headings} % \tableofcontents % \sloppy -% -%% %% New v4.00: `...section{%' + \unskip +% +%% %% New v4.00: `...section{%' + \unskip % \section{% -% Introductions +% Introductions %% %% New v4.00: `s' % \unskip} -% -% (New v4.00) Parts of former first section -% have been rendered separate subsections for package -% version_v4.00. (/New v4.00) -% -% \subsection{% +% +% (New v4.00) Parts of former first section +% have been rendered separate subsections for package +% version_v4.00. (/New v4.00) +% +% \subsection{% % Introduction to versions $\textrm{v}\lessthan4$ -% \unskip} -% +% \unskip} +% % This package provides line numbers on paragraphs. % After \TeX\ has broken a paragraph into lines there will % be line numbers attached to them, with the possibility to @@ -115,8 +116,8 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % precisely refer to passages in the text. It works well % together with ~\marginpar~s, but not too well with displaymath. % ~\footnote~s are a problem, especially when they -% are split, but we may get there. -% (New v4.00 UL) Version v4.00 overcomes the problem, I believe. +% are split, but we may get there. +% (New v4.00 UL) Version v4.00 overcomes the problem, I believe. % (/UL /New v4.00) % % lineno.sty works @@ -127,151 +128,151 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % well, so I can try to fix it. % % \subsection{% -% Introduction to versions v4.00ff. (UL) +% Introduction to versions v4.00ff. (UL) % \unskip} -% +% % ~lineno.sty~ has been maintained by Stephan until version_v3.14. -% From version_v4.00 onwards, maintenance is shifting towards -% Uwe L\"uck (UL), who is the author of v4\dots code and of v4\dots -% changes in documentation. This came about as follows. -% -% Since late 2002, Christian Tapp and Uwe L\"uck have employed -% ~lineno.sty~ for their ~ednotes.sty~, a package supporting +% From version_v4.00 onwards, maintenance is shifting towards +% Uwe L\"uck (UL), who is the author of v4\dots code and of v4\dots +% changes in documentation. This came about as follows. +% +% Since late 2002, Christian Tapp and Uwe L\"uck have employed +% ~lineno.sty~ for their ~ednotes.sty~, a package supporting % critical editions---cf. -% \[\mbox{\tt -% http://ednotes.sty.de.vu +% \[\mbox{\tt +% http://ednotes.sty.de.vu % \unskip}\] -% ---while you find ~ednotes.sty~ and surrounding files in +% ---while you find ~ednotes.sty~ and surrounding files in % CTAN folder \path{macros/latex/contrib/ednotes}. -% -% Soon, some weaknesses of ~lineno.sty~ showed up, mainly since -% Christian's critical editions (using ~ednotes.sty~) needed lots -% of ~\linelabel~s and footnotes. (These weaknesses are due to -% weaknesses of \LaTeX's ~\marginpar~ mechanism that Stephan -% used for ~\linelabel~.) So we changed some ~lineno.sty~ -% definitions in some extra files, which moreover offered new -% features. We sent these files to Stephan, hoping he would take -% the changes into ~lineno.sty~. However, he was too short of time. -% -% Writing a TUGboat article on Ednotes in 2004, we hoped to -% reduce the number of files in the Ednotes bundle and so asked -% Stephan again. Now he generously offered maintenance to me, so -% I could execute the changes on my own. -% -% The improvements are as follows: -% \begin{itemize}\item -% [(i)] Footnotes placement approaches intentions better -% (footnotes formerly liked to pile up at late pages). -% \item -% [(ii)] The number of ~\linelabel~s in one paragraph is no longer -% limited to 18. -% \item -% [(iii)] ~\pagebreak~, ~\nopagebreak~, ~\vspace~, and the star -% and optional versions of ~\\~ work as one would expect +% +% Soon, some weaknesses of ~lineno.sty~ showed up, mainly since +% Christian's critical editions (using ~ednotes.sty~) needed lots +% of ~\linelabel~s and footnotes. (These weaknesses are due to +% weaknesses of \LaTeX's ~\marginpar~ mechanism that Stephan +% used for ~\linelabel~.) So we changed some ~lineno.sty~ +% definitions in some extra files, which moreover offered new +% features. We sent these files to Stephan, hoping he would take +% the changes into ~lineno.sty~. However, he was too short of time. +% +% Writing a TUGboat article on Ednotes in 2004, we hoped to +% reduce the number of files in the Ednotes bundle and so asked +% Stephan again. Now he generously offered maintenance to me, so +% I could execute the changes on my own. +% +% The improvements are as follows: +% \begin{itemize}\item +% [(i)] Footnotes placement approaches intentions better +% (footnotes formerly liked to pile up at late pages). +% \item +% [(ii)] The number of ~\linelabel~s in one paragraph is no longer +% limited to 18. +% \item +% [(iii)] ~\pagebreak~, ~\nopagebreak~, ~\vspace~, and the star +% and optional versions of ~\\~ work as one would expect % (section_\ref{s:MVadj}). %% Added for v4.1 -% \item -% [(iv)] A command is offered which chooses the first line number -% to be printed in the margin +% \item +% [(iv)] A command is offered which chooses the first line number +% to be printed in the margin % (subsection_\ref{ss:Mod}). %% Added for v4.1 -% \item -% [(v)] (New v4.1) \LaTeX\ tabular environments (optionally) -% get line numbers as well, and you can refer to them in the -% usual automatic way. (It may be considered a shortcoming that, -% precisely, \emph{rows} are numbered, not lines.---See -% subsection_\ref{ss:Tab}.) -% \item -% [(vi)] We are moving towards referring to math items -% (subsection_\ref{ss:MathRef} and the hooks in -% subsection_\ref{ss:LL}). -% (/New v4.1) +% \item +% [(v)] (New v4.1) \LaTeX\ tabular environments (optionally) +% get line numbers as well, and you can refer to them in the +% usual automatic way. (It may be considered a shortcoming that, +% precisely, \emph{rows} are numbered, not lines.---See +% subsection_\ref{ss:Tab}.) +% \item +% [(vi)] We are moving towards referring to math items +% (subsection_\ref{ss:MathRef} and the hooks in +% subsection_\ref{ss:LL}). +% (/New v4.1) % \end{itemize} % (Thanks to Stephan for making this possible!) -% -%% Unpublish: -%% You may trace the earlier developments of these changes by -%% requesting our files ~linenox0.sty~, ~linenox1.sty~, and -%% ~lnopatch.sty~. Most of our changes have been in ~linenox0.sty~. -%% Our ~linenox1.sty~ has extended ~linenox0.sty~ for one single -%% purpose in a not very stable way. -%%% (See ~\linenumberpar~ below). -%% ~lnopatch.sty~ has done the first line number thing referred -%% to in case_(iv) up to now. -%% (New v4.1) -%% Case_(v) earlier was provided by our ~edtab02.sty~---now -%% called ~edtable.sty~. -%% (/New v4.1) -% -% Ednotes moreover profits from Stephan's offer with regard -% to the documentation of our code which yielded these -% improvements formerly. This documentation now becomes -% printable, being part of the ~lineno.sty~ documentation. -% -% Of course, Stephan's previous ~lineno.sty~ versions were a great -% and ingenious work and exhibit greatest \TeX pertise. I never -% could have done this. I learnt a lot in studying the code when -% Christian pointed out strange output results and error -% messages, and there are still large portions of ~lineno.sty~ -% which I don't understand (consider only pagewise numbering of -% lines). Fortunately, Stephan has offered future help if -% needed.---My code for attaching line numbers to \emph{tabular -% environments} (as mentioned above, now still in +% +%% Unpublish: +%% You may trace the earlier developments of these changes by +%% requesting our files ~linenox0.sty~, ~linenox1.sty~, and +%% ~lnopatch.sty~. Most of our changes have been in ~linenox0.sty~. +%% Our ~linenox1.sty~ has extended ~linenox0.sty~ for one single +%% purpose in a not very stable way. +%%% (See ~\linenumberpar~ below). +%% ~lnopatch.sty~ has done the first line number thing referred +%% to in case_(iv) up to now. +%% (New v4.1) +%% Case_(v) earlier was provided by our ~edtab02.sty~---now +%% called ~edtable.sty~. +%% (/New v4.1) +% +% Ednotes moreover profits from Stephan's offer with regard +% to the documentation of our code which yielded these +% improvements formerly. This documentation now becomes +% printable, being part of the ~lineno.sty~ documentation. +% +% Of course, Stephan's previous ~lineno.sty~ versions were a great +% and ingenious work and exhibit greatest \TeX pertise. I never +% could have done this. I learnt a lot in studying the code when +% Christian pointed out strange output results and error +% messages, and there are still large portions of ~lineno.sty~ +% which I don't understand (consider only pagewise numbering of +% lines). Fortunately, Stephan has offered future help if +% needed.---My code for attaching line numbers to \emph{tabular +% environments} (as mentioned above, now still in % ~edtable.sty~) %% %% TODO -% developed from macros which Stephan and Christian experimented -% with in December 2002. Stephan built the basics. -% (However, I then became too proud to follow his advice only to +% developed from macros which Stephan and Christian experimented +% with in December 2002. Stephan built the basics. +% (However, I then became too proud to follow his advice only to % use and modify ~longtable.sty~.) -% -% There are some issues concerning use of counters on which I -% don't agree with Stephan and where I would like to change the -% code if ~lineno.sty~ is ``mine'' as Stephan offered. However, -% Stephan is afraid of compatibility problems from which, in -% particular, his wife could suffer in the near future. So he -% demanded that I change as little as possible for my first -% version. Instead of executing changes that I plan I just offer -% my opinions at the single occasions. I hope to get in touch -% this way with users who consider subtle features vital which I -% consider strange. -% -% On the other hand, the sections on improvements of the -% implementation have been blown up very much and may be tiring -% and litte understandable for mere \emph{users}. These users -% may profit from the present presentation just by jumping to -% sections_\ref{s:Opts} and_\ref{s:UserCmds}. There is a user's -% guide ulineno.tex which may be even more helpful, but it has +% +% There are some issues concerning use of counters on which I +% don't agree with Stephan and where I would like to change the +% code if ~lineno.sty~ is ``mine'' as Stephan offered. However, +% Stephan is afraid of compatibility problems from which, in +% particular, his wife could suffer in the near future. So he +% demanded that I change as little as possible for my first +% version. Instead of executing changes that I plan I just offer +% my opinions at the single occasions. I hope to get in touch +% this way with users who consider subtle features vital which I +% consider strange. +% +% On the other hand, the sections on improvements of the +% implementation have been blown up very much and may be tiring +% and litte understandable for mere \emph{users}. These users +% may profit from the present presentation just by jumping to +% sections_\ref{s:Opts} and_\ref{s:UserCmds}. There is a user's +% guide ulineno.tex which may be even more helpful, but it has % not been updated for a while. %% TODO -% +% % \subsection{% -% Availability +% Availability % \unskip} -% -% In case you have found the present file otherwise than from -% CTAN: A recent version and documentation of this package -% should be available from CTAN folder +% +% In case you have found the present file otherwise than from +% CTAN: A recent version and documentation of this package +% should be available from CTAN folder % \path{macros/latex/contrib/lineno}. -% Or mail to one of the addresses at top of file. -% -% \subsection{% +% Or mail to one of the addresses at top of file. +% +% \subsection{% % Introductory code % \unskip} -% +% % This style option is written for \LaTeXe, November 1994 or later, -% since we need the ~\protected@write~ macro. -% -% (New v4.00) And we use ~\newcommand*~ for -% controlling length of user macro arguments, which has been -% available since December 1994. -%% - -\NeedsTeXFormat{LaTeX2e}[1994/12/01] -%% [1994/11/04] -\ProvidesPackage{lineno} - [\filedate\space line numbers on paragraphs \fileversion] -% (/New v4.00) -%% -%% History of versions: +% since we need the ~\protected@write~ macro. +% +% (New v4.00) And we use ~\newcommand*~ for +% controlling length of user macro arguments, which has been +% available since December 1994. +%% + +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +%% [1994/11/04] +\ProvidesPackage{lineno} + [\filedate\space line numbers on paragraphs \fileversion] +% (/New v4.00) +%% +%% History of versions: %% v1.00 1995/03/31 SIB: first release for Petra's interview transcriptions %% v1.01 1995/10/28 SIB: added ~pagewise~ mode -%% v1.02 1995/11/15 SIB: added ~modulo~ option +%% v1.02 1995/11/15 SIB: added ~modulo~ option %% v1.03 1995/12/05 SIB: pagewise: try to reduce the hash-size requirements %% v2.00 1995/12/06 SIB: .. it works, new user interface %% v2.01 1996/09/17 SIB: put into CVS @@ -284,8 +285,8 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. %% v3.02 2000/03/10 SiB: \@LN@output %% v3.03 2000/07/01 SiB: \@LN@ExtraLabelItems, hyperref %% v3.04 2000/12/17 SiB: longtable compatibility. -%% v3.05 2001/01/02 SiB: [fleqn] detection. -%% v3.05a 2001/01/04 SiB: [fleqn] detection reverted for eqnarray. +%% v3.05 2001/01/02 SiB: [fleqn] detection. +%% v3.05a 2001/01/04 SiB: [fleqn] detection reverted for eqnarray. %% v3.06 2001/01/17 SiB: [twocolumn] mode support. %% v3.07 2001/07/30 SiB: [hyperref] option obsoleted. %% v3.08 2001/08/02 SiB: linenomath wrapping for \[ \] @@ -294,138 +295,139 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. %% v3.09 2003/01/14 SIB: hyperref detection fix %% v3.10 2003/04/15 FMi: \MakeLineNo fix for deep boxes %% v3.10a 2003/11/12 Uwe Lück: \lineref typo fix -%% v4.00 2004/09/02 UL: included linenox0, linenox1, lnopatch code with -%% documentation, usually indicated by `New v4.00'; -%% discussions of old code, indicated by `UL'; -%% LPPL v.1 -> LPPL v1.3, `program' -> `file'; -%% first lines with \filedate and \fileversion, -%% according nawk lines; `November 1994 or later', -%% some earlier documentation typos (including a few -%% bad minus signs), { -> {% and } -> \unskip} at -%% line ends (so, e.g., alignment in TOC works); \scs. -%% 2004/09/03 UL: removed everything which indicated that the -%% present file were named `lineno4.sty'. -%% v4.1 2004/09/19 UL: Inserted Stephan's identification line, removed -%% some TODOs and remarks from v4.00. -%% 2004/10/04 UL: Added acknowledgement for Daniel Doherty; -%% `(New v4.00)' with [|\firstlinenumber]; changed -%% TODOs; Refining -> Redefining (\vadjust). +%% v4.00 2004/09/02 UL: included linenox0, linenox1, lnopatch code with +%% documentation, usually indicated by `New v4.00'; +%% discussions of old code, indicated by `UL'; +%% LPPL v.1 -> LPPL v1.3, `program' -> `file'; +%% first lines with \filedate and \fileversion, +%% according nawk lines; `November 1994 or later', +%% some earlier documentation typos (including a few +%% bad minus signs), { -> {% and } -> \unskip} at +%% line ends (so, e.g., alignment in TOC works); \scs. +%% 2004/09/03 UL: removed everything which indicated that the +%% present file were named `lineno4.sty'. +%% v4.1 2004/09/19 UL: Inserted Stephan's identification line, removed +%% some TODOs and remarks from v4.00. +%% 2004/10/04 UL: Added acknowledgement for Daniel Doherty; +%% `(New v4.00)' with [|\firstlinenumber]; changed +%% TODOs; Refining -> Redefining (\vadjust). %% 2004/10/05 UL: ednmath0 -> mathrefs; \catcode`\~ -> \active; -%% \path; refined section on options `mathrefs'; -%% changes in introduction. -%% 2004/10/06 UL: Changed/removed TODOs, e.g., for edtable.sty. -%% 2004/10/11 UL: Reminders: linenox0/1/lnopatch.sty obsolete; +%% \path; refined section on options `mathrefs'; +%% changes in introduction. +%% 2004/10/06 UL: Changed/removed TODOs, e.g., for edtable.sty. +%% 2004/10/11 UL: Reminders: linenox0/1/lnopatch.sty obsolete; %% \tt star in list of commands. -%% 2004/10/12 UL: Corrected blank lines in lineno.tex. -%% 2004/10/19 UL: Fixed minor typos; remark on \if@LN@edtable. -%% v4.1a 2004/11/07 UL: LPPL v1.3a. -%% v4.1b 2004/11/13 UL: Comment on \outputpenalty values. -%% v4.1c 2005/01/10 UL: Contact via http. -%% v4.11 2005/02/20 UL: Error message with \linelabel when not numbering. -%% 2005/03/07 UL: Removed \linelabel from ss:Tab heading, consider -%% marginal line numbers as well, revised ss:Tab. -%% Added a few lines on missing explanations to -%% s:UserCmds. Corrected some code alignments. -%% 2005/03/08 UL: Require recent edtable.sty. -%% - -%% v4.2 2005/03/21 UL: "Physical page" counter works with \include. -%% 2005/04/17 UL: Raised options section above extensions section -%% (v4.00 disabled `displaymath' option); -%% third arg for \@ifundefined{mathindent}; -%% "bunch of options"; -%% 2005/04/24 UL: compatibility with tamefloats; vplref.sty. -%% 2005/04/25 UL: \number -> \the; wondered -> $$; subsec. appbas; -%% CrtlLN sec -> subsec.; \newcommand* wherever ...; -%% doc. on `other output routines' and `addpageno' -%% (this changed from `varioref'). -%% 2005/04/27 UL: =1\relax -> =\@ne, 0\relax ..., \hb@xt@, -%% \ifx\@@par\@@@par -> \ifLineNumbers, typos, -%% \pagestyle{headings}, LaTeX -> \LaTeX. -%% v4.21 2005/04/28 UL: linenomath section: removed wrong \else's, -%% \holding...: \thr@@, \@LN@outer@holdins, \global. -%% v4.22 2005/05/01 UL: \unvbox\@outputbox; \@LN@col without #1, -%% 2005/05/08 UL: global/local \internall..., \resetl... global, -%% shortened discussions of this and of \newcounter. -%% 2005/05/09 UL: corr.: doc. typo, version history, bad lines; -%% percent; \chardef for modulo, -%% \value{firstlinenumber}. -%% v4.3 2005/05/10 UL: \@backslashchar -> \char`\\ in \scs. -%% 2005/05/11 UL: \linenumbers sets ...outer@holdins; tidied up -%% documentation regarding earlier versions. -%% 2005/05/12 UL: `linenomath' without spurious number above; -%% `displaymath' default; edmac homepage -> -%% ednotes.sty.de.vu, \endlinenomath without -%% numbers: no change of \holdinginserts; -%% \linelabel doesn't go to .aux or mark, -%% hyperref detected; undone 2005/05/10 (bad mark). -%% 2005/05/13 UL: Reworked hyperref detection (new subsec.). -%% 2005/05/15 UL: More typo fixes, corrected terrible confusions in -%% the discussion (v4.22/v4.3) of \new/\stepcounter; -%% new subsec. in `Line number ...'; another -%% implementation of `hyperref' detection. -%% 2005/05/16 UL: Final minor changes. -%% v4.31b /06/14 UL: Extended explanation of \firstlinenumbers -%% and package options; \@LN@ifgreat@critical; +%% 2004/10/12 UL: Corrected blank lines in lineno.tex. +%% 2004/10/19 UL: Fixed minor typos; remark on \if@LN@edtable. +%% v4.1a 2004/11/07 UL: LPPL v1.3a. +%% v4.1b 2004/11/13 UL: Comment on \outputpenalty values. +%% v4.1c 2005/01/10 UL: Contact via http. +%% v4.11 2005/02/20 UL: Error message with \linelabel when not numbering. +%% 2005/03/07 UL: Removed \linelabel from ss:Tab heading, consider +%% marginal line numbers as well, revised ss:Tab. +%% Added a few lines on missing explanations to +%% s:UserCmds. Corrected some code alignments. +%% 2005/03/08 UL: Require recent edtable.sty. +%% + +%% v4.2 2005/03/21 UL: "Physical page" counter works with \include. +%% 2005/04/17 UL: Raised options section above extensions section +%% (v4.00 disabled `displaymath' option); +%% third arg for \@ifundefined{mathindent}; +%% "bunch of options"; +%% 2005/04/24 UL: compatibility with tamefloats; vplref.sty. +%% 2005/04/25 UL: \number -> \the; wondered -> $$; subsec. appbas; +%% CrtlLN sec -> subsec.; \newcommand* wherever ...; +%% doc. on `other output routines' and `addpageno' +%% (this changed from `varioref'). +%% 2005/04/27 UL: =1\relax -> =\@ne, 0\relax ..., \hb@xt@, +%% \ifx\@@par\@@@par -> \ifLineNumbers, typos, +%% \pagestyle{headings}, LaTeX -> \LaTeX. +%% v4.21 2005/04/28 UL: linenomath section: removed wrong \else's, +%% \holding...: \thr@@, \@LN@outer@holdins, \global. +%% v4.22 2005/05/01 UL: \unvbox\@outputbox; \@LN@col without #1, +%% 2005/05/08 UL: global/local \internall..., \resetl... global, +%% shortened discussions of this and of \newcounter. +%% 2005/05/09 UL: corr.: doc. typo, version history, bad lines; +%% percent; \chardef for modulo, +%% \value{firstlinenumber}. +%% v4.3 2005/05/10 UL: \@backslashchar -> \char`\\ in \scs. +%% 2005/05/11 UL: \linenumbers sets ...outer@holdins; tidied up +%% documentation regarding earlier versions. +%% 2005/05/12 UL: `linenomath' without spurious number above; +%% `displaymath' default; edmac homepage -> +%% ednotes.sty.de.vu, \endlinenomath without +%% numbers: no change of \holdinginserts; +%% \linelabel doesn't go to .aux or mark, +%% hyperref detected; undone 2005/05/10 (bad mark). +%% 2005/05/13 UL: Reworked hyperref detection (new subsec.). +%% 2005/05/15 UL: More typo fixes, corrected terrible confusions in +%% the discussion (v4.22/v4.3) of \new/\stepcounter; +%% new subsec. in `Line number ...'; another +%% implementation of `hyperref' detection. +%% 2005/05/16 UL: Final minor changes. +%% v4.31b /06/14 UL: Extended explanation of \firstlinenumbers +%% and package options; \@LN@ifgreat@critical; %% \modulolinenumbers*. Sent to Ednotes.news only. -%% v4.31 2005/06/15 UL: \modulolinenumbers* with \firstlinenumber{1}; +%% v4.31 2005/06/15 UL: \modulolinenumbers* with \firstlinenumber{1}; %% " -> ``/''; more doc. on \firstlinenumber . -%% 2005/06/20 UL: Typo fix. -%% 2005/10/01 UL: Warning about \mod...* with pagewise mode. -%% v4.31a /10/02 UL: Minor changes of appearance of doc., e.g., -%% \[ for $$. +%% 2005/06/20 UL: Typo fix. +%% 2005/10/01 UL: Warning about \mod...* with pagewise mode. +%% v4.31a /10/02 UL: Minor changes of appearance of doc., e.g., +%% \[ for $$. %% v4.32b /10/15 UL: Support for \addvspace; removed comments that -%% had been invisible already for some time; -%% made clear with which environments the -%% linenomath environment is not needed. -%% v4.32ab /10/15 UL: Observe \if@nobreak with support for \addvspace. -%% v4.32 2005/10/17 UL: Just made it official and sent it to CTAN. -%% v4.33b /10/23 UL: \if@nobreak\nobreak\fi -> \nobreak . -%% v4.33ab /10/24 UL: \LineNoLaTeXOutput without \@tempswafalse; -%% undid v4.22: \[unv]box\@outputbox (space is OK, -%% \unvbox pushes short columns down); \@LN@kern@z@ . -%% v4.4b 2005/10/24 UL: Another tidying-up of the discussion of -%% \stepcounter{linenumber}; \@LN@screenoff@pen -%% replaces \@LN@kern@z@, \@LN@depthbox . -%% v4.4 2005/10/27 UL: Just made official for CTAN. -%% v4.4a 2005/10/29 UL: Undid change of discussion of -%% \stepcounter{linenumber} (confusion again). -%% v4.41 2005/11/02 UL: Raised \CheckCommand*. -%% +%% had been invisible already for some time; +%% made clear with which environments the +%% linenomath environment is not needed. +%% v4.32ab /10/15 UL: Observe \if@nobreak with support for \addvspace. +%% v4.32 2005/10/17 UL: Just made it official and sent it to CTAN. +%% v4.33b /10/23 UL: \if@nobreak\nobreak\fi -> \nobreak . +%% v4.33ab /10/24 UL: \LineNoLaTeXOutput without \@tempswafalse; +%% undid v4.22: \[unv]box\@outputbox (space is OK, +%% \unvbox pushes short columns down); \@LN@kern@z@ . +%% v4.4b 2005/10/24 UL: Another tidying-up of the discussion of +%% \stepcounter{linenumber}; \@LN@screenoff@pen +%% replaces \@LN@kern@z@, \@LN@depthbox . +%% v4.4 2005/10/27 UL: Just made official for CTAN. +%% v4.4a 2005/10/29 UL: Undid change of discussion of +%% \stepcounter{linenumber} (confusion again). +%% v4.41 2005/11/02 UL: Raised \CheckCommand*. +%% v5.0 2022/07/30 KW: Merge in `linenoamsmath' patches +%% %% Acknowledgements: %% v3.06: Donald Arseneau, pointed to mparhack.sty. %% v3.07+: Frank Mittelbach, points out inconsistencies in the %% user interface. %% v3.10: Frank Mittelbach \MakeLineNo fix for deep boxes -%% v4.00: Daniel Doherty points out clash of \pagewise... with resetting -%% page number. -%% v4.21: Much testing work by Erik Luijten. -%% v4.3: `displaymath' default by Erik Luijten's suggestion. -%% v4.31: \modulolinenumbers* is an idea of Hillel Chayim Yisraeli's. -%% v4.32: Support for \addvspace due to Saravanan M.'s observation. -%% v4.33: Different support for \addvspace due to bug reports by -%% Saravanan M.'s and David Josef Dev. -%% v4.4: David Josef Dev points out that \kern\z@ after a paragraph -%% tends to place its final baseline wrongly. +%% v4.00: Daniel Doherty points out clash of \pagewise... with resetting +%% page number. +%% v4.21: Much testing work by Erik Luijten. +%% v4.3: `displaymath' default by Erik Luijten's suggestion. +%% v4.31: \modulolinenumbers* is an idea of Hillel Chayim Yisraeli's. +%% v4.32: Support for \addvspace due to Saravanan M.'s observation. +%% v4.33: Different support for \addvspace due to bug reports by +%% Saravanan M.'s and David Josef Dev. +%% v4.4: David Josef Dev points out that \kern\z@ after a paragraph +%% tends to place its final baseline wrongly. % % % \section{% % Put the line numbers to the lines % \unskip} -% -% (New v4.00) This section contained the most -% basic package code previously. For various purposes of -% version_4\dots, much of these basics have been to be modified. -% Much of my (UL's) reasoning on these modifications has been to -% be reported. Sorry, the present section has been blown up -% awfully thus and contains ramifications that may be difficult -% to trace. We add some ~\subsection~ commands in order to cope -% with the new situation. (/New v4.00) -% -% \subsection{% +% +% (New v4.00) This section contained the most +% basic package code previously. For various purposes of +% version_4\dots, much of these basics have been to be modified. +% Much of my (UL's) reasoning on these modifications has been to +% be reported. Sorry, the present section has been blown up +% awfully thus and contains ramifications that may be difficult +% to trace. We add some ~\subsection~ commands in order to cope +% with the new situation. (/New v4.00) +% +% \subsection{% % Basic code of \texttt{lineno.sty} \scs{output} -% \unskip}\label{ss:output} -% +% \unskip}\label{ss:output} +% % The line numbers have to be attached by the output % routine. We simply set the ~\interlinepenalty~ to $-100000$. % The output routine will be called after each line in the @@ -433,33 +435,33 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % The ~\linenopenalty~ is small enough to compensate a bunch of % penalties (e.g., with ~\samepage~). % -% (New v3.04) Longtable uses -% ~\penalty~$-30000$. The lineno penalty range was +% (New v3.04) Longtable uses +% ~\penalty~$-30000$. The lineno penalty range was % shrunk to $-188000 \dots -32000$. (/New v3.04) -% (New v4.00) New values are listed below (11111f.). (/New v4.00) +% (New v4.00) New values are listed below (11111f.). (/New v4.00) \newcount\linenopenalty\linenopenalty=-100000 -%% TODO v4.4+: -% (UL) Hm. It is never needed below -% that this is a counter. ~\def\linenopenalty{-100000\relax}~ -% would do. (I guess this consumes more memory, but it -% is more important to save counters than to save memory.) -% I was frightened by ~-\linenopenalty~ below, but indeed -% \TeX\ interprets the string ~--100000~ as 100000. -% Has any user or extension package writer ever called -% ~\linenopenalty=xxx~, or could I really change this?---The -% counter is somewhat faster than the macro. Together with the -% compatibility question this seems to support keeping the -% counter. (???) -%% Note that Stephan chose ~\mathchardef~ below, -%% so his choice above seems to have been deliberate. -%% <- no point, \mathchardef token is fast. -% (/UL) +%% TODO v4.4+: +% (UL) Hm. It is never needed below +% that this is a counter. ~\def\linenopenalty{-100000\relax}~ +% would do. (I guess this consumes more memory, but it +% is more important to save counters than to save memory.) +% I was frightened by ~-\linenopenalty~ below, but indeed +% \TeX\ interprets the string ~--100000~ as 100000. +% Has any user or extension package writer ever called +% ~\linenopenalty=xxx~, or could I really change this?---The +% counter is somewhat faster than the macro. Together with the +% compatibility question this seems to support keeping the +% counter. (???) +%% Note that Stephan chose ~\mathchardef~ below, +%% so his choice above seems to have been deliberate. +%% <- no point, \mathchardef token is fast. +% (/UL) \mathchardef\linenopenaltypar=32000 -% So let's make a hook to ~\output~, the direct way. The \LaTeX\ +% So let's make a hook to ~\output~, the direct way. The \LaTeX\ % macro ~\@reinserts~ puts the footnotes back on the page. % % (New v3.01) ~\@reinserts~ badly @@ -469,7 +471,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % part. Thus, since lineno.sty does not play well % with ~\inserts~ anyway, we can safely experiment % with ~\holdinginserts~, without making things -% much worse. +% much worse. % % Or that's what I thought, but: Just activating % ~\holdinginserts~ while doing the ~\par~ will @@ -484,9 +486,9 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % restart ~\output~. % % Then, again, how do we keep the remaining -% ~\inserts~ while doing further line numbers? +% ~\inserts~ while doing further line numbers? % -% If we find ~\holdinginserts~=$-3$ we activate it again +% If we find ~\holdinginserts~=$-3$ we activate it again % after doing ~\output~. (/New v3.01) % % (New v3.02) To work with @@ -494,51 +496,51 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % called indirectly, instead of being replaced. % When multicol.sty changes ~\output~, it is a % toks register, not the real thing. (/New v3.02) -% -% (New v4.00) Two further complications are added. +% +% (New v4.00) Two further complications are added. %% -%% TODO v4.3+: Or three, ~\@nobreakfalse~ after ~\MakeLineNo~ -%% for getting rid of ~\@LN@nopagebreak~. +%% TODO v4.3+: Or three, ~\@nobreakfalse~ after ~\MakeLineNo~ +%% for getting rid of ~\@LN@nopagebreak~. % \begin{itemize}\item -% [(i)] Problems with footnotes formerly resulted from -% \LaTeX's ~\@reinserts~ in ~\@specialoutput~ which Stephan's -% ~\linelabel~ called via the ~\marginpar~ mechanism. +% [(i)] Problems with footnotes formerly resulted from +% \LaTeX's ~\@reinserts~ in ~\@specialoutput~ which Stephan's +% ~\linelabel~ called via the ~\marginpar~ mechanism. % \item -% [(ii)] \LaTeX\ commands using ~\vadjust~ formerly didn't work -% as one would have hoped. The problem is as follows: -% Printing the line number results from -% a box that the output routine inserts at the place of the -% ~\interlinepenalty~. ~\vadjust~ items appear \emph{above} the -% ~\interlinepenalty~ (\TeX book p._105). So ~\pagebreak~, e.g., -% formerly sent the line number to the next page, while the -% penalty from ~\nopagebreak~ could not tie the following line, -% since it was screened off by the line number box.---Our trick -% is putting the ~\vadjust~ items into a list macro from which -% the output routine transfers them into the vertical list, -% below the line number box. +% [(ii)] \LaTeX\ commands using ~\vadjust~ formerly didn't work +% as one would have hoped. The problem is as follows: +% Printing the line number results from +% a box that the output routine inserts at the place of the +% ~\interlinepenalty~. ~\vadjust~ items appear \emph{above} the +% ~\interlinepenalty~ (\TeX book p._105). So ~\pagebreak~, e.g., +% formerly sent the line number to the next page, while the +% penalty from ~\nopagebreak~ could not tie the following line, +% since it was screened off by the line number box.---Our trick +% is putting the ~\vadjust~ items into a list macro from which +% the output routine transfers them into the vertical list, +% below the line number box. % \end{itemize} -% In this case_(ii), like in case_(i), footnotes would suffer -% if ~\holdinginserts~ were non-positive. Indeed, in both -% cases_(i) and_(ii) we tackle the footnote problem by extending -% that part of Stephan's output routine that is active when -% ~\holdinginserts~ is positive. This extension writes the line -% number ~\newlabel~ to the .aux file (which was formerly done -% under $~\holdinginserts~=-3$) and handles the ~\vadjust~ -% items.---To trigger ~\output~ and its ~\linelabel~ or, resp., -% ~\vadjust~ part, the list of signal penalties started -% immediately before is increased here (first for ~\linelabel~, -% second for postponed ~\vadjust~ items): - -\mathchardef\@Mllbcodepen=11111 -\mathchardef\@Mppvacodepen=11112 - -% (/New v4.00) (New v4.2) David Kastrup urges to use a private -% name instead of ~\the\output~ (LaTeX-L-list). Otherwise an -% ~\output~ routine loaded later and using ~\newtoks\output~ -% again may get lost entirely. So we change use of ~\@LN@output~, -% using it for the former purpose. Reference to what appeared -% with the name of ~\output~ here lasts for a few lines and then -% is given away. +% In this case_(ii), like in case_(i), footnotes would suffer +% if ~\holdinginserts~ were non-positive. Indeed, in both +% cases_(i) and_(ii) we tackle the footnote problem by extending +% that part of Stephan's output routine that is active when +% ~\holdinginserts~ is positive. This extension writes the line +% number ~\newlabel~ to the .aux file (which was formerly done +% under $~\holdinginserts~=-3$) and handles the ~\vadjust~ +% items.---To trigger ~\output~ and its ~\linelabel~ or, resp., +% ~\vadjust~ part, the list of signal penalties started +% immediately before is increased here (first for ~\linelabel~, +% second for postponed ~\vadjust~ items): + +\mathchardef\@Mllbcodepen=11111 +\mathchardef\@Mppvacodepen=11112 + +% (/New v4.00) (New v4.2) David Kastrup urges to use a private +% name instead of ~\the\output~ (LaTeX-L-list). Otherwise an +% ~\output~ routine loaded later and using ~\newtoks\output~ +% again may get lost entirely. So we change use of ~\@LN@output~, +% using it for the former purpose. Reference to what appeared +% with the name of ~\output~ here lasts for a few lines and then +% is given away. \let\@tempa\output \newtoks\output @@ -551,63 +553,63 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % (/New 4.2) \LineNoTest \if@tempswa -%% -%% (UL) Learnt that even in def.s blank line means ~\par~. +%% +%% (UL) Learnt that even in def.s blank line means ~\par~. %% to leave visual space in present file with having a -%% blank line neither in present nor in .tex file, -%% use double comment mark (`%%'). (/UL) -%% +%% blank line neither in present nor in .tex file, +%% use double comment mark (`%%'). (/UL) +%% % (New v4.00) -% We insert recognition of waiting ~\linelabel~ items--- -%% - \ifnum\outputpenalty=-\@Mllbcodepen - \WriteLineNo -%% -% ---and of waiting ~\vadjust~ items: -%% - \else - \ifnum\outputpenalty=-\@Mppvacodepen - \PassVadjustList - \else -%% -%% Now we give control back to Stephan. -% (/New v4.00) (New v4.2) Outsource ``Standard'' output -% ---which occurs so rarely---to subsection_\ref{ss:LLO}: -%% - \LineNoLaTeXOutput -% (/New v4.2) (New v4.00) -% Two new ~\fi~s for the ~\linelabel~ and ~\vadjust~ tests--- -%% - \fi - \fi -%% -% ---and the remaining is -%%%next three lines are -% Stephan's code again: -% (/New v4.00) -%% - \else +% We insert recognition of waiting ~\linelabel~ items--- +%% + \ifnum\outputpenalty=-\@Mllbcodepen + \WriteLineNo +%% +% ---and of waiting ~\vadjust~ items: +%% + \else + \ifnum\outputpenalty=-\@Mppvacodepen + \PassVadjustList + \else +%% +%% Now we give control back to Stephan. +% (/New v4.00) (New v4.2) Outsource ``Standard'' output +% ---which occurs so rarely---to subsection_\ref{ss:LLO}: +%% + \LineNoLaTeXOutput +% (/New v4.2) (New v4.00) +% Two new ~\fi~s for the ~\linelabel~ and ~\vadjust~ tests--- +%% + \fi + \fi +%% +% ---and the remaining is +%%%next three lines are +% Stephan's code again: +% (/New v4.00) +%% + \else \MakeLineNo \fi } - -% (New v4.00) Our new macros -% ~\WriteLineNo~ and ~\PassVadjustList~ will be dealt with in -% sections_\ref{s:LNref} and_\ref{ss:PVadj}. (/New v4.00) -% + +% (New v4.00) Our new macros +% ~\WriteLineNo~ and ~\PassVadjustList~ will be dealt with in +% sections_\ref{s:LNref} and_\ref{ss:PVadj}. (/New v4.00) +% % \subsection{% % \scs{LineNoTest} -% \unskip} -% +% \unskip} +% % The float mechanism inserts ~\interlinepenalty~s during % ~\output~. So carefully reset it before going on. Else % we get doubled line numbers on every float placed in -% horizontal mode, e.g, from ~\linelabel~. +% horizontal mode, e.g, from ~\linelabel~. % % Sorry, neither a ~\linelabel~ nor a ~\marginpar~ should % insert a penalty, else the following linenumber % could go to the next page. Nor should any other -% float. So let us suppress the ~\interlinepenalty~ +% float. So let us suppress the ~\interlinepenalty~ % altogether with the ~\@nobreak~ switch. % % Since (ltspace.dtx, v1.2p)[1996/07/26], the ~\@nobreaktrue~ does @@ -629,469 +631,469 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \def\@LN@nobreaktrue{\let\if@nobreak\iftrue} % renamed v4.33 -% (UL) I thought here were -% another case of the save stack problem explained in \TeX book, -% p._301, namely through both local and global changing -% ~\if@nobreak~. However, ~\@LN@nobreak~ is called during -% ~\@LN@output~ only, while ~\@nobreaktrue~ is called by \LaTeX's -% ~\@startsection~ only. The latter never happens during -% ~\@LN@output~. So there is no local value of ~\if@nobreak~ on -% save stack when ~\@nobreaktrue~ acts, since ~\the\@LN@output~ -% (where ~\@LN@output~ is a new name for the original ~\output~) +% (UL) I thought here were +% another case of the save stack problem explained in \TeX book, +% p._301, namely through both local and global changing +% ~\if@nobreak~. However, ~\@LN@nobreak~ is called during +% ~\@LN@output~ only, while ~\@nobreaktrue~ is called by \LaTeX's +% ~\@startsection~ only. The latter never happens during +% ~\@LN@output~. So there is no local value of ~\if@nobreak~ on +% save stack when ~\@nobreaktrue~ acts, since ~\the\@LN@output~ +% (where ~\@LN@output~ is a new name for the original ~\output~) % is executed within a group (\TeX book p._21). %% %% 2004/09/19 Removed nonsense here according to Stephan 2004/09/04. -%% -% (/UL) +%% +% (/UL) % % \subsection{% % Other output routines (v4.2) -% \unskip}\label{ss:LLO} -% -% I had thought of dealing with bad interference of footnotes -% (and ~\enlargethispage~) with (real) ~\marginpar~s and floats -% \emph{here}. Yet this is done in +% \unskip}\label{ss:LLO} +% +% I had thought of dealing with bad interference of footnotes +% (and ~\enlargethispage~) with (real) ~\marginpar~s and floats +% \emph{here}. Yet this is done in % \[ % ~http://~\mbox{[CTAN]} % ~/macros/latex/contrib/tamefloats/tameflts.sty~ % \] -% now, and I prefer striving for compatibility with the latter. +% now, and I prefer striving for compatibility with the latter. % (See there for expanding on the problem.) -% This requires returning the special absolute value of -% ~\holdinginserts~ that ~lineno.sty~ finds at the end of a newly +% This requires returning the special absolute value of +% ~\holdinginserts~ that ~lineno.sty~ finds at the end of a newly % typeset paragraph---now done in subsection_\ref{ss:calls} -% (~\linenumberpar~). -% The former ~\LineNoHoldInsertsTest~ has been filled into here. -%% ---`3' is replaced by ~\thr@@~ for a while. ~\thr@@~ is -%% useful practice since plain \TeX, but Stephan may have been -%% wise in suspecting that \LaTeX\ once could forsake ~\thr@@~. -%% The same holds for ~\@M=10000~. -% Note: when the following code is invoked, we have -% ~\if@tempswa~_ =_~\iftrue~. -% WARNING: I am still not sure whether the present code is good -% for cooperating with other packages that use ~\holdinginserts~. - -\def\LineNoLaTeXOutput{% +% (~\linenumberpar~). +% The former ~\LineNoHoldInsertsTest~ has been filled into here. +%% ---`3' is replaced by ~\thr@@~ for a while. ~\thr@@~ is +%% useful practice since plain \TeX, but Stephan may have been +%% wise in suspecting that \LaTeX\ once could forsake ~\thr@@~. +%% The same holds for ~\@M=10000~. +% Note: when the following code is invoked, we have +% ~\if@tempswa~_ =_~\iftrue~. +% WARNING: I am still not sure whether the present code is good +% for cooperating with other packages that use ~\holdinginserts~. + +\def\LineNoLaTeXOutput{% \ifnum \holdinginserts=\thr@@ % v4.33 without \@tempswafalse - \global\holdinginserts-\thr@@ - \unvbox\@cclv - \ifnum \outputpenalty=\@M \else \penalty\outputpenalty \fi + \global\holdinginserts-\thr@@ + \unvbox\@cclv + \ifnum \outputpenalty=\@M \else \penalty\outputpenalty \fi \else \if@twocolumn \let\@makecol\@LN@makecol \fi - \the\@LN@output % finally following David Kastrup's advice. - \ifnum \holdinginserts=-\thr@@ - \global\holdinginserts\thr@@ \fi + \the\@LN@output % finally following David Kastrup's advice. + \ifnum \holdinginserts=-\thr@@ + \global\holdinginserts\thr@@ \fi \fi } -% \textit{More on dealing with output routines from other -% packages:} -% Since ~lineno.sty~'s output routine is called at least once -% for each output line, I think it should be in \TeX's -% original ~\output~, while output routines dealing with -% building pages and with floats etc.\ should be filled into -% registers addressed by ~\output~ after ~\newtoks\output~. +% \textit{More on dealing with output routines from other +% packages:} +% Since ~lineno.sty~'s output routine is called at least once +% for each output line, I think it should be in \TeX's +% original ~\output~, while output routines dealing with +% building pages and with floats etc.\ should be filled into +% registers addressed by ~\output~ after ~\newtoks\output~. % Therefore \begin{enumerate} -% \item -% ~tameflts.sty~ should be loaded \emph{after} ~lineno.sty~; -% \item -% if a class changes ~\output~ (APS journal class revtex4, -% e.g.), ~lineno.sty~ should be loaded by ~\RequirePackage~ -% [here presumably following some options in -% brackets]~{lineno}~ \emph{preceding} ~\documentclass~. -% \item -% If you actually maintain such a class, please consider -% loading ~lineno.sty~ on some draft option. The bunch of -% lineno's package options may be a problem, but perhaps the -% purpose of your class is offering only very few of lineno's -% options anyway, maybe just one. -% \end{enumerate} -% The latter may also be needed with classes that don't follow -% David Kastrup's rule on changing ~\output~. -% +% \item +% ~tameflts.sty~ should be loaded \emph{after} ~lineno.sty~; +% \item +% if a class changes ~\output~ (APS journal class revtex4, +% e.g.), ~lineno.sty~ should be loaded by ~\RequirePackage~ +% [here presumably following some options in +% brackets]~{lineno}~ \emph{preceding} ~\documentclass~. +% \item +% If you actually maintain such a class, please consider +% loading ~lineno.sty~ on some draft option. The bunch of +% lineno's package options may be a problem, but perhaps the +% purpose of your class is offering only very few of lineno's +% options anyway, maybe just one. +% \end{enumerate} +% The latter may also be needed with classes that don't follow +% David Kastrup's rule on changing ~\output~. +% % \subsection{% -% \scs{MakeLineNo}: Actually attach line number -% \unskip}\label{ss:MLN} -% +% \scs{MakeLineNo}: Actually attach line number +% \unskip}\label{ss:MLN} +% % We have to return all the page to the current page, and % add a box with the line number, without adding % breakpoints, glue or space. The depth of our line number % should be equal to the previous depth of the page, in % case the page breaks here, and the box has to be moved up -% by that depth. +% by that depth. % % The ~\interlinepenalty~ comes after the ~\vadjust~ from a % ~\linelabel~, so we increment the line number \emph{after} % printing it. The macro ~\makeLineNumber~ produces the % text of the line number, see section \ref{appearance}. -% -% (UL) I needed a while to understand -% the sentence on incrementing. Correctly: writing the -% ~\newlabel~ to the .aux file is triggered by the signal -% penalty that ~\end@float~ inserts via ~\vadjust~. -% However, this could be changed by our new ~\PostponeVadjust~. -% After ~\c@linenumber~ has been introduced as a \LaTeX\ -% counter, it might be preferable that it behaved like standard -% \LaTeX\ counters which are incremented shortly before printing. -% But this may be of little practical relevance in this case, -% as ~\c@linenumber~ is driven in a very non-standard -% way.---However still, this behaviour of ~\c@linenumber~ -% generates a problem with our ~edtable.sty~. -%% \unskip---Before, -%% I thought that Stephan had reported his reasoning incorrectly -%% and rather did this because of his ~\resetlinenumber~ which -%% initializes ~\c@linenumber~ to 1 instead of 0---the latter is -%% usual with \LaTeX\ counters. Cf._additional comment at -%% ~\resetlinenumber~. -% (/UL). +% +% (UL) I needed a while to understand +% the sentence on incrementing. Correctly: writing the +% ~\newlabel~ to the .aux file is triggered by the signal +% penalty that ~\end@float~ inserts via ~\vadjust~. +% However, this could be changed by our new ~\PostponeVadjust~. +% After ~\c@linenumber~ has been introduced as a \LaTeX\ +% counter, it might be preferable that it behaved like standard +% \LaTeX\ counters which are incremented shortly before printing. +% But this may be of little practical relevance in this case, +% as ~\c@linenumber~ is driven in a very non-standard +% way.---However still, this behaviour of ~\c@linenumber~ +% generates a problem with our ~edtable.sty~. +%% \unskip---Before, +%% I thought that Stephan had reported his reasoning incorrectly +%% and rather did this because of his ~\resetlinenumber~ which +%% initializes ~\c@linenumber~ to 1 instead of 0---the latter is +%% usual with \LaTeX\ counters. Cf._additional comment at +%% ~\resetlinenumber~. +% (/UL). % % Finally we put in the natural ~\interlinepenalty~, except -% after the last line. +% after the last line. % -% (New v3.10) Frank Mittelbach points out that box255 may be -% less deep than the last box inside, so he proposes to +% (New v3.10) Frank Mittelbach points out that box255 may be +% less deep than the last box inside, so he proposes to % measure the page depth with ~\boxmaxdepth=\maxdimen~. % (/New v3.10) -% -% (UL, New v4.00) We also resume the matter of -% ~\vadjust~ items that was started in section_\ref{ss:output}. -% -% \TeX\ puts only nonzero interline -% penalties into the vertical list (\TeX book p._105), while -% ~lineno.sty~ formerly replaced the signal interline penalty by -% something closing with an explicit penalty of the value that -% the interline penalty would have without ~lineno.sty~. -% This is usually 0. Now, explicit vertical penalties can be -% very nasty with respect to ~\nopagebreak~, e.g., a low (even -% positive) ~\widowpenalty~ may force a widow where you -% explicitly tried to forbid it by ~\nopagebreak~ -% (see explanation soon below). -% The ~\nopagebreak~ we create here would never work if all -% those zero penalties were present.---On -% the other hand, we cannot just omit Stephan's zero penalties, -% because \TeX\ puts a penalty of 10000 after what ~lineno.sty~ -% inserts (\TeX book p._125). This penalty must be overridden -% to allow page breaks between ordinary lines. To revive -% ~\nopagebreak~, we therefore replace those zero (or low) -% penalties by penalties that the user demanded by -% ~\nopagebreak~.---This mechanism is not perfect and does not -% exactly restore the original \LaTeX\ working of ~\pagebreak~ -% and ~\nopagebreak~. Viz., if there are several vertical -% penalties after a line which were produced by closely sitting -% ~\[no]pagebreak~s, without ~lineno.sty~ the lowest penalty would -% be effective (cf._\TeX book exercise_14.10). Our mechanism, by -% contrast, chooses the \emph{last} user-set penalty of the line -% as the effective one. It would not be very difficult to come -% more close to the original mechanism, but until someone urges -% us we will cling to the present simple way. You may consider an -% advantage of the difference between our mechanism and the -% original one that the user here can actually override low -% penalties by ~\nopagebreak~, which may be what a lay \LaTeX\ -% user would expect. -%% ---Zero glue would do instead of zero -%% penalty! This could make things easier. Maybe next time. -%% <- v4.4: No, problem with column depth. -% (/UL, /New v4.00) +% +% (UL, New v4.00) We also resume the matter of +% ~\vadjust~ items that was started in section_\ref{ss:output}. +% +% \TeX\ puts only nonzero interline +% penalties into the vertical list (\TeX book p._105), while +% ~lineno.sty~ formerly replaced the signal interline penalty by +% something closing with an explicit penalty of the value that +% the interline penalty would have without ~lineno.sty~. +% This is usually 0. Now, explicit vertical penalties can be +% very nasty with respect to ~\nopagebreak~, e.g., a low (even +% positive) ~\widowpenalty~ may force a widow where you +% explicitly tried to forbid it by ~\nopagebreak~ +% (see explanation soon below). +% The ~\nopagebreak~ we create here would never work if all +% those zero penalties were present.---On +% the other hand, we cannot just omit Stephan's zero penalties, +% because \TeX\ puts a penalty of 10000 after what ~lineno.sty~ +% inserts (\TeX book p._125). This penalty must be overridden +% to allow page breaks between ordinary lines. To revive +% ~\nopagebreak~, we therefore replace those zero (or low) +% penalties by penalties that the user demanded by +% ~\nopagebreak~.---This mechanism is not perfect and does not +% exactly restore the original \LaTeX\ working of ~\pagebreak~ +% and ~\nopagebreak~. Viz., if there are several vertical +% penalties after a line which were produced by closely sitting +% ~\[no]pagebreak~s, without ~lineno.sty~ the lowest penalty would +% be effective (cf._\TeX book exercise_14.10). Our mechanism, by +% contrast, chooses the \emph{last} user-set penalty of the line +% as the effective one. It would not be very difficult to come +% more close to the original mechanism, but until someone urges +% us we will cling to the present simple way. You may consider an +% advantage of the difference between our mechanism and the +% original one that the user here can actually override low +% penalties by ~\nopagebreak~, which may be what a lay \LaTeX\ +% user would expect. +%% ---Zero glue would do instead of zero +%% penalty! This could make things easier. Maybe next time. +%% <- v4.4: No, problem with column depth. +% (/UL, /New v4.00) \def\MakeLineNo{% - \@LN@maybe@normalLineNumber % v4.31 + \@LN@maybe@normalLineNumber % v4.31 \boxmaxdepth\maxdimen\setbox\z@\vbox{\unvbox\@cclv}% \@tempdima\dp\z@ \unvbox\z@ \sbox\@tempboxa{\hb@xt@\z@{\makeLineNumber}}% -%% -% (New v4.00) Previously, +%% +% (New v4.00) Previously, % \begin{old}\begin{verbatim} % % \stepcounter{linenumber}% % \end{verbatim} % \end{old} %% %% TODO: Still first `\begin{old}'? -% followed. (Of course, there was no -% comment mark; I put it there to make -% reading the actual code easy.) -% -% (New v4.22: improved) Why not just +% followed. (Of course, there was no +% comment mark; I put it there to make +% reading the actual code easy.) +% +% (New v4.22: improved) Why not just % \[~\global\advance\c@linenumber\@ne~?\] -% ~\stepcounter~ additionally resets ``subordinate'' -% counters, but which could these (usefully) be? -% Again, may be column counters with ~edtable.sty~!? -% -% But then, our ~edtable.sty~ and its ~longtable~ option -% should use it as well. So use a shorthand supporting -% uniformity. You can even use it as a hook for choosing -% ~\global\advance\c@linenumber\@ne~ instead of our choice. -% (/New v4.22) -%% +% ~\stepcounter~ additionally resets ``subordinate'' +% counters, but which could these (usefully) be? +% Again, may be column counters with ~edtable.sty~!? +% +% But then, our ~edtable.sty~ and its ~longtable~ option +% should use it as well. So use a shorthand supporting +% uniformity. You can even use it as a hook for choosing +% ~\global\advance\c@linenumber\@ne~ instead of our choice. +% (/New v4.22) +%% \stepLineNumber -%% -% (New v4.4) Now -%% - \ht\@tempboxa\z@ \@LN@depthbox -%% -% appends the box containing the line number without changing -% ~\prevdepth~---see end of section. -% Now is the time for inserting the $\dots$ (/New v4.4) -%% The line number has now been placed (it may be invisible -%% depending on the modulo feature), so -%% we can insert the -% ~\vadjust~ items. We cannot do this much later, because -% their right place is above the artificial interline -% penalty which Stephan's code will soon insert -% (cf._\TeX book p._105). The next command is just ~\relax~ -% if no ~\vadjust~ items have been accumulated for the -% current line. Otherwise it is a list macro inserting -% the ~\vadjust~ items and finally resetting itself. +%% +% (New v4.4) Now +%% + \ht\@tempboxa\z@ \@LN@depthbox +%% +% appends the box containing the line number without changing +% ~\prevdepth~---see end of section. +% Now is the time for inserting the $\dots$ (/New v4.4) +%% The line number has now been placed (it may be invisible +%% depending on the modulo feature), so +%% we can insert the +% ~\vadjust~ items. We cannot do this much later, because +% their right place is above the artificial interline +% penalty which Stephan's code will soon insert +% (cf._\TeX book p._105). The next command is just ~\relax~ +% if no ~\vadjust~ items have been accumulated for the +% current line. Otherwise it is a list macro inserting +% the ~\vadjust~ items and finally resetting itself. % (This is made in section_\ref{ss:PVadj} below.) -% If the final item is a penalty, it is stored so it can -% compete with other things about page breaking. -%% - \@LN@do@vadjusts - \count@\lastpenalty -%% -% At this place, +% If the final item is a penalty, it is stored so it can +% compete with other things about page breaking. +%% + \@LN@do@vadjusts + \count@\lastpenalty +%% +% At this place, % \begin{old}\begin{verbatim} % % \ifnum\outputpenalty=-\linenopenaltypar\else % \end{verbatim} % \end{old} -% originally followed. We need something \emph{before} the -% ~\else~: -%% - \ifnum\outputpenalty=-\linenopenaltypar - \ifnum\count@=\z@ \else -%% -% So final ~\pagebreak[0]~ or ~\nopagebreak[0]~ has no -% effect---but this will make a difference after headings only, -% where nobody should place such a thing anyway. -%% - \xdef\@LN@parpgbrk{% +% originally followed. We need something \emph{before} the +% ~\else~: +%% + \ifnum\outputpenalty=-\linenopenaltypar + \ifnum\count@=\z@ \else +%% +% So final ~\pagebreak[0]~ or ~\nopagebreak[0]~ has no +% effect---but this will make a difference after headings only, +% where nobody should place such a thing anyway. +%% + \xdef\@LN@parpgbrk{% \penalty\the\count@ \global\let\noexpand\@LN@parpgbrk - \noexpand\@LN@screenoff@pen}% v4.4 -%% -% That penalty will replace former ~\kern\z@~ in + \noexpand\@LN@screenoff@pen}% v4.4 +%% +% That penalty will replace former ~\kern\z@~ in % ~\linenumberpar~, see subsection_\ref{ss:calls}.---A -% few days earlier, I tried to send just a penalty value. -% However, the ~\kern\z@~ in ~\linenumberpar~ is crucial, -% as I then found out. See below.---The final penalty is -% repeated, but this does no harm. (It would not be very -% difficult to avoid the repeating, but it may even be -% less efficient.) It may be repeated due to the previous -% ~\xdef~, but it may be repeated as well below in the -% present macro where artificial interline penalty is to +% few days earlier, I tried to send just a penalty value. +% However, the ~\kern\z@~ in ~\linenumberpar~ is crucial, +% as I then found out. See below.---The final penalty is +% repeated, but this does no harm. (It would not be very +% difficult to avoid the repeating, but it may even be +% less efficient.) It may be repeated due to the previous +% ~\xdef~, but it may be repeated as well below in the +% present macro where artificial interline penalty is to % be overridden. -%% +%% \fi \else -%% -% (/New v4.00) -%% Corrected code alignment with v4.11. +%% +% (/New v4.00) +%% Corrected code alignment with v4.11. \@tempcnta\outputpenalty \advance\@tempcnta -\linenopenalty -%% -% (New v4.00) +%% +% (New v4.00) % \begin{old}\begin{verbatim} % % \penalty\@tempcnta % \end{verbatim} % \end{old} -% followed previously. To give ~\nopagebreak~ a chance, -% we do -%% Corrected code alignment with v4.11. - \penalty \ifnum\count@<\@tempcnta \@tempcnta \else \count@ \fi -%% -% instead.---In ~linenox0.sty~, the ~\else~ thing once was omitted. -% Sergei Mariev's complaint (thanks!) showed that it is vital -% (see comment before ~\MakeLineNo~). -% The remaining ~\fi~ from previous package version closes the -% ~\ifnum\outputpenalty~\dots -% (/New v4.00) -%% +% followed previously. To give ~\nopagebreak~ a chance, +% we do +%% Corrected code alignment with v4.11. + \penalty \ifnum\count@<\@tempcnta \@tempcnta \else \count@ \fi +%% +% instead.---In ~linenox0.sty~, the ~\else~ thing once was omitted. +% Sergei Mariev's complaint (thanks!) showed that it is vital +% (see comment before ~\MakeLineNo~). +% The remaining ~\fi~ from previous package version closes the +% ~\ifnum\outputpenalty~\dots +% (/New v4.00) +%% \fi } -% (New v4.00) +% (New v4.00) -\newcommand\stepLineNumber{\stepcounter{linenumber}} +\newcommand\stepLineNumber{\stepcounter{linenumber}} -% For reason, see use above. (/New v4.00) -%% %% TODO v4.4+: ~\newcommand~ more often!? -% -% (New v4.4) The depth preserving trick is drawn here from -% ~\MakeLineNo~ because it will be used again in +% For reason, see use above. (/New v4.00) +%% %% TODO v4.4+: ~\newcommand~ more often!? +% +% (New v4.4) The depth preserving trick is drawn here from +% ~\MakeLineNo~ because it will be used again in % section_\ref{ss:calls}. -\def\@LN@depthbox{% +\def\@LN@depthbox{% \dp\@tempboxa=\@tempdima - \nointerlineskip \kern-\@tempdima \box\@tempboxa} + \nointerlineskip \kern-\@tempdima \box\@tempboxa} -% (/New v4.4) -% +% (/New v4.4) +% % \section{% -% Control line numbering +% Control line numbering % \unskip} % \subsection{% -% Inserting \scs{output} calls %% own subsec. v4.4. +% Inserting \scs{output} calls %% own subsec. v4.4. % \unskip}\label{ss:calls} % The line numbering is controlled via ~\par~. \LaTeX\ % saved the \TeX-primitive ~\par~ in ~\@@par~. We push it % one level further out, and redefine ~\@@par~ to insert % the ~\interlinepenalty~ needed to trigger the % line numbering. And we need to allow pagebreaks after a -% paragraph. -% +% paragraph. +% % New (2.05beta): the prevgraf test. A paragraph that ends with a % displayed equation, a ~\noindent\par~ or ~wrapfig.sty~ produce empty % paragraphs. These should not get a spurious line number via -% ~\linenopenaltypar~. +% ~\linenopenaltypar~. \let\@@@par\@@par \newcount\linenoprevgraf -% (UL) And needs ~\linenoprevgraf~ -% to be a counter? Perhaps there may be a paragraph having -% thousands of lines, so ~\mathchardef~ doesn't suffice (really??). +% (UL) And needs ~\linenoprevgraf~ +% to be a counter? Perhaps there may be a paragraph having +% thousands of lines, so ~\mathchardef~ doesn't suffice (really??). %% -%% %% TODO: limitations of lines per paragraph elsewhere? -%% %% Signal penalties, e.g.!? ~\deadcycles~!? +%% %% TODO: limitations of lines per paragraph elsewhere? +%% %% Signal penalties, e.g.!? ~\deadcycles~!? %% -% A macro ending on ~\relax~ might suffice, but would be -% somewhat slow. I think I will use ~\mathchardef~ next time. -% Or has any user used ~\linenoprevgraf~? (/UL) +% A macro ending on ~\relax~ might suffice, but would be +% somewhat slow. I think I will use ~\mathchardef~ next time. +% Or has any user used ~\linenoprevgraf~? (/UL) -%% v4.33: changed code alignment for better understanding. -\def\linenumberpar{% - \ifvmode \@@@par \else +%% v4.33: changed code alignment for better understanding. +\def\linenumberpar{% + \ifvmode \@@@par \else \ifinner \@@@par \else - \xdef\@LN@outer@holdins{\the\holdinginserts}% v4.2 + \xdef\@LN@outer@holdins{\the\holdinginserts}% v4.2 \advance \interlinepenalty \linenopenalty \linenoprevgraf \prevgraf - \global \holdinginserts \thr@@ + \global \holdinginserts \thr@@ \@@@par \ifnum\prevgraf>\linenoprevgraf \penalty-\linenopenaltypar \fi -%% -% (New v4.00) +%% +% (New v4.00) % \begin{old}\begin{verbatim} -% % \kern\z@ +% % \kern\z@ % \end{verbatim} % \end{old} -% was here previously. What for? -% According to \TeX book p._125, Stephan's -% interline penalty is changed into 10000. At the end of a -% paragraph, the ~\parskip~ would follow that penalty of 10000, -% so there could be a page break neither at the -% ~\parskip~ nor at the ~\baselineskip~ (\TeX book p._110)---so -% there could never be a page break between two paragraphs. -% So something must screen off the 10000 penalty. -% Indeed, the ~\kern~ is a place to break. +% was here previously. What for? +% According to \TeX book p._125, Stephan's +% interline penalty is changed into 10000. At the end of a +% paragraph, the ~\parskip~ would follow that penalty of 10000, +% so there could be a page break neither at the +% ~\parskip~ nor at the ~\baselineskip~ (\TeX book p._110)---so +% there could never be a page break between two paragraphs. +% So something must screen off the 10000 penalty. +% Indeed, the ~\kern~ is a place to break. % (Stephan once knew this: see `allow pagebreaks' above.) -% -% Formerly, I tried to replace ~\kern\z@~ by +% +% Formerly, I tried to replace ~\kern\z@~ by % \begin{old}\begin{verbatim} -% % \penalty\@LN@parpgpen\relax +% % \penalty\@LN@parpgpen\relax % \end{verbatim} % \end{old} -% ---but this allows a page break after heading. So: -%% - \@LN@parpgbrk -%% -%% After heading, ~\kern\z@~ resulting from previous line -%% (see below) is followed by ~\write~ or ~\penalty10000~, -%% so causes no page break. -% -% These and similar changes were formerly done by ~linenox1.sty~. -% (/New v4.00) -% -% (New v4.4) -% A ~\belowdisplayskip~ may precede the previous when the paragraph -% ends on a display-math; or there may be a ~\topsep~ from a list, etc. -% ~\addvspace~ couldn't take account for it with ~\kern\z@~ -% here. v4.32 therefore moved the space down -- with at least two -% bad consequences. -% Moreover, David Josef Dev observes that ~\kern\z@~ may -% inappropriately yield column depth 0pt. -% For these reasons, we introduce ~\@LN@screenoff@pen~ below. -% (/New v4.4) -%% +% ---but this allows a page break after heading. So: +%% + \@LN@parpgbrk +%% +%% After heading, ~\kern\z@~ resulting from previous line +%% (see below) is followed by ~\write~ or ~\penalty10000~, +%% so causes no page break. +% +% These and similar changes were formerly done by ~linenox1.sty~. +% (/New v4.00) +% +% (New v4.4) +% A ~\belowdisplayskip~ may precede the previous when the paragraph +% ends on a display-math; or there may be a ~\topsep~ from a list, etc. +% ~\addvspace~ couldn't take account for it with ~\kern\z@~ +% here. v4.32 therefore moved the space down -- with at least two +% bad consequences. +% Moreover, David Josef Dev observes that ~\kern\z@~ may +% inappropriately yield column depth 0pt. +% For these reasons, we introduce ~\@LN@screenoff@pen~ below. +% (/New v4.4) +%% \global\holdinginserts\@LN@outer@holdins % v4.2 \advance\interlinepenalty -\linenopenalty - \fi % from \ifinner ... \else - \fi} % from \ifvmode ... \else + \fi % from \ifinner ... \else + \fi} % from \ifvmode ... \else -% (New v4.00, v4.4) Initialize ~\@LN@parpgbrk~, accounting -% for earlier space and for appropriate columndepth. -% We use former ~\MakeLineNo~'s depth-preverving trick -% ~\@LN@depthbox~ again: +% (New v4.00, v4.4) Initialize ~\@LN@parpgbrk~, accounting +% for earlier space and for appropriate columndepth. +% We use former ~\MakeLineNo~'s depth-preverving trick +% ~\@LN@depthbox~ again: -\def\@LN@screenoff@pen{% - \ifdim\lastskip=\z@ - \@tempdima\prevdepth \setbox\@tempboxa\null +\def\@LN@screenoff@pen{% + \ifdim\lastskip=\z@ + \@tempdima\prevdepth \setbox\@tempboxa\null \@LN@depthbox \fi} -\global\let\@LN@parpgbrk\@LN@screenoff@pen +\global\let\@LN@parpgbrk\@LN@screenoff@pen -% (/New v4.4, v4.00) +% (/New v4.4, v4.00) % \subsection{% % Turning on/off %% own subsec. v4.4. % \unskip}\label{ss:OnOff} % The basic commands to enable and disable line numbers. -% ~\@par~ and ~\par~ are only touched, when they are ~\let~ +% ~\@par~ and ~\par~ are only touched, when they are ~\let~ % to ~\@@@par~/~\linenumberpar~. The line number may be % reset to 1 with the star-form, or set by an optional -% argument ~[~<number>~]~. -% -% (New v4.00) We add ~\ifLineNumbers~ etc.\ since -% a number of our new adjustments need to know whether -% linenumbering is active. This just provides a kind of -% shorthand for ~\ifx\@@par\linenumberpar~; moreover it is -% more stable: who knows what may happen to ~\@@par~?---A -% caveat: ~\ifLineNumbers~ may be wrong. E.g., it may be -% ~\iffalse~ where it acts, while a ~\linenumbers~ a few -% lines below---in the same paragraph---brings about that -% the line where the ~\ifLineNumbers~ appears gets a -% marginal number. -%% Better implementation suggested below. -%% -% (New v4.3) Just noticed: Such tricks have been -% disallowed with v4.11, see subsections_\ref{ss:LL} +% argument ~[~<number>~]~. +% +% (New v4.00) We add ~\ifLineNumbers~ etc.\ since +% a number of our new adjustments need to know whether +% linenumbering is active. This just provides a kind of +% shorthand for ~\ifx\@@par\linenumberpar~; moreover it is +% more stable: who knows what may happen to ~\@@par~?---A +% caveat: ~\ifLineNumbers~ may be wrong. E.g., it may be +% ~\iffalse~ where it acts, while a ~\linenumbers~ a few +% lines below---in the same paragraph---brings about that +% the line where the ~\ifLineNumbers~ appears gets a +% marginal number. +%% Better implementation suggested below. +%% +% (New v4.3) Just noticed: Such tricks have been +% disallowed with v4.11, see subsections_\ref{ss:LL} % and_\ref{ss:OnOff}.---Moreover, the switching between -% meanings of ~\linelabel~ for a possible error message -% as of v4.11 is removed. Speed is difficult to esteem -% and also depends on applications. Just use the most -% simple code you find. (/New v4.3) +% meanings of ~\linelabel~ for a possible error message +% as of v4.11 is removed. Speed is difficult to esteem +% and also depends on applications. Just use the most +% simple code you find. (/New v4.3) -\newif\ifLineNumbers \LineNumbersfalse +\newif\ifLineNumbers \LineNumbersfalse -% (/New v4.00) +% (/New v4.00) -\def\linenumbers{% - \LineNumberstrue % v4.00 - \xdef\@LN@outer@holdins{\the\holdinginserts}% v4.3 +\def\linenumbers{% + \LineNumberstrue % v4.00 + \xdef\@LN@outer@holdins{\the\holdinginserts}% v4.3 +%% +% (New v4.3) The previous line is for ~{linenomath}~ +% in a first numbered paragraph. (/New v4.3) %% -% (New v4.3) The previous line is for ~{linenomath}~ -% in a first numbered paragraph. (/New v4.3) -%% \let\@@par\linenumberpar - % \let\linelabel\@LN@linelabel % v4.11, removed v4.3 + % \let\linelabel\@LN@linelabel % v4.11, removed v4.3 \ifx\@par\@@@par\let\@par\linenumberpar\fi \ifx\par\@@@par\let\par\linenumberpar\fi - \@LN@maybe@moduloresume % v4.31 + \@LN@maybe@moduloresume % v4.31 \@ifnextchar[{\resetlinenumber}%] {\@ifstar{\resetlinenumber}{}}% } -\def\nolinenumbers{% +\def\nolinenumbers{% \LineNumbersfalse % v4.00 \let\@@par\@@@par - % \let\linelabel\@LN@LLerror % v4.11, removed v4.3 + % \let\linelabel\@LN@LLerror % v4.11, removed v4.3 \ifx\@par\linenumberpar\let\@par\@@@par\fi \ifx\par\linenumberpar\let\par\@@@par\fi } -% (New v4.00) Moreover, it is useful to switch to -% ~\nolinenumbers~ in ~\@arrayparboxrestore~. We postpone this -% to section_\ref{ss:ReDef} where we'll have an appending macro -% for doing this. (/New v4.00) -% +% (New v4.00) Moreover, it is useful to switch to +% ~\nolinenumbers~ in ~\@arrayparboxrestore~. We postpone this +% to section_\ref{ss:ReDef} where we'll have an appending macro +% for doing this. (/New v4.00) +% % What happens with a display math? Since ~\par~ is not executed, % when breaking the lines before a display, they will not get % line numbers. Sorry, but I do not dare to change @@ -1103,15 +1105,15 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % See the subsection below, for a wrapper environment to make % it work. But that requires to wrap each and every display % in your \LaTeX\ source %%. -%% v4.3: -% (see option ~displaymath~ in subsections_\ref{ss:v3opts} -% and_\ref{ss:display} for some relief [UL]). +%% v4.3: +% (see option ~displaymath~ in subsections_\ref{ss:v3opts} +% and_\ref{ss:display} for some relief [UL]). % % The next two commands are provided to turn on line % numbering in a specific mode. Please note the difference: % for pagewise numbering, ~\linenumbers~ comes first to % inhibit it from seeing optional arguments, since -% re-/presetting the counter is useless. +% re-/presetting the counter is useless. \def\pagewiselinenumbers{\linenumbers\setpagewiselinenumbers} \def\runninglinenumbers{\setrunninglinenumbers\linenumbers} @@ -1119,25 +1121,25 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % Finally, it is a \LaTeX\ style, so we provide for the use % of environments, including the suppression of the % following paragraph's indentation. -% -%% TODO: v4.4+: -% (UL) I am drawing the following -% private thoughts of Stephan's to publicity so that others may -% think about them---or to remind myself of them in an efficient -% way. (/UL) -%% UL changed `%%%' to `% %' below. -%% TODO: add \par to \linenumbers, if called from an environment. %% v4.3 +% +%% TODO: v4.4+: +% (UL) I am drawing the following +% private thoughts of Stephan's to publicity so that others may +% think about them---or to remind myself of them in an efficient +% way. (/UL) +%% UL changed `%%%' to `% %' below. +%% TODO: add \par to \linenumbers, if called from an environment. %% v4.3 %% ToDO: add an \@endpe hack if \linenumbers are turned on -% \begin{old}\begin{verbatim} +% \begin{old}\begin{verbatim} % % TO DO: add \par to \linenumbers, if called from an environment. % % To DO: add an \@endpe hack if \linenumbers are turned on % % in horizontal mode. {\par\parskip\z@\noindent} or % % something. % \end{verbatim} -% \end{old} -% (UL) However, I rather think that ~\linenumbers~ and %% v4.31 -% ~\nolinenumbers~ should execute a ~\par~ already. (Then the -% ~\par~s in the following definitions should be removed.) (/UL) +% \end{old} +% (UL) However, I rather think that ~\linenumbers~ and %% v4.31 +% ~\nolinenumbers~ should execute a ~\par~ already. (Then the +% ~\par~s in the following definitions should be removed.) (/UL) \@namedef{linenumbers*}{\par\linenumbers*} \@namedef{runninglinenumbers*}{\par\runninglinenumbers*} @@ -1154,19 +1156,19 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % Display math % \unskip}\label{ss:DM} % -% Now we tackle the problem to get display math working. +% Now we tackle the problem to get display math working. % There are different options. % \begin{enumerate}\item[ -% 1.] Precede every display math with a ~\par~. +% 1.] Precede every display math with a ~\par~. % Not too good. % \item[ -% 2.] Change ~\interlinepenalty~ and associates globally. +% 2.] Change ~\interlinepenalty~ and associates globally. % Unstable. % \item[ -% 3.] Wrap each display math with a ~{linenomath}~ -% environment. +% 3.] Wrap each display math with a ~{linenomath}~ +% environment. % \end{enumerate} -% We'll go for option 3. See if it works: +% We'll go for option 3. See if it works: % \begin{linenomath} % \begin{equation} % display \ math @@ -1178,7 +1180,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % \begin{eqnarray} % multi && line \\ % display && math \\ -% & +% & % \begin{array}{c} % with \\ % array @@ -1187,7 +1189,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % \end{eqnarray} % \end{linenomath*} % including multline displays. -% +% % First, here are two macros to turn % on linenumbering on paragraphs preceeding displays, with % numbering the lines of the display itself, or without. @@ -1196,34 +1198,34 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % not numbered. Nor does it harm to wrap a display % twice, e.q, in case you have some ~{equation}~s wrapped % explicitely, and later you redefine ~\equation~ to do it -% automatically. -% -% (New v4.3) To avoid the spurious line number above a -% display in vmode, I insert ~\ifhmode~. (/New v4.3) +% automatically. +% +% (New v4.3) To avoid the spurious line number above a +% display in vmode, I insert ~\ifhmode~. (/New v4.3) \newcommand\linenomathNonumbers{% - \ifLineNumbers -%% \ifx\@@par\@@@par\else + \ifLineNumbers +%% \ifx\@@par\@@@par\else \ifnum\interlinepenalty>-\linenopenaltypar - \global\holdinginserts\thr@@ + \global\holdinginserts\thr@@ \advance\interlinepenalty \linenopenalty - \ifhmode % v4.3 + \ifhmode % v4.3 \advance\predisplaypenalty \linenopenalty - \fi + \fi \fi \fi \ignorespaces } \newcommand\linenomathWithnumbers{% - \ifLineNumbers + \ifLineNumbers %% \ifx\@@par\@@@par\else \ifnum\interlinepenalty>-\linenopenaltypar - \global\holdinginserts\thr@@ + \global\holdinginserts\thr@@ \advance\interlinepenalty \linenopenalty - \ifhmode % v4.3 + \ifhmode % v4.3 \advance\predisplaypenalty \linenopenalty - \fi + \fi \advance\postdisplaypenalty \linenopenalty \advance\interdisplaylinepenalty \linenopenalty \fi @@ -1246,11 +1248,11 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \@namedef{linenomath*}{\linenomathWithnumbers}% } -\def\endlinenomath{% - \ifLineNumbers % v4.3 - \global\holdinginserts\@LN@outer@holdins % v4.21 - \fi - \global % v4.21 support for LaTeX2e earlier than 1996/07/26. +\def\endlinenomath{% + \ifLineNumbers % v4.3 + \global\holdinginserts\@LN@outer@holdins % v4.21 + \fi + \global % v4.21 support for LaTeX2e earlier than 1996/07/26. \@ignoretrue } \expandafter\let\csname endlinenomath*\endcsname\endlinenomath @@ -1264,21 +1266,21 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % % \section{% % Line number references -% \unskip}\label{s:LNref} -% \subsection{% -% Internals %% New subsec. v4.3. +% \unskip}\label{s:LNref} +% \subsection{% +% Internals %% New subsec. v4.3. % \unskip} % The only way to get a label to a line number in a % paragraph is to ask the output routine to mark it. % -% (New v4.00) The following two paragraphs don't hold any -% longer, see below. (/New v4.00) +% (New v4.00) The following two paragraphs don't hold any +% longer, see below. (/New v4.00) % \begin{old}\begin{verbatim} % % We use the marginpar mechanism to hook to ~\output~ for a % % second time. Marginpars are floats with number $-1$, we % % fake marginpars with No $-2$. Originally, every negative % % numbered float was considered to be a marginpar. -% % +% % % % The float box number ~\@currbox~ is used to transfer the % % label name in a macro called ~\@LNL@~<box-number>. % \end{verbatim} @@ -1286,14 +1288,14 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % A ~\newlabel~ is written to the aux-file. The reference % is to ~\theLineNumber~, \emph{not} ~\thelinenumber~. % This allows to hook in, as done below for pagewise line -% numbering. +% numbering. % % (New v3.03) The ~\@LN@ExtraLabelItems~ are added for a hook % to keep packages like ~{hyperref}~ happy. (/New v3.03) -% -% (New v4.00) -% We fire the ~\marginpar~ mechanism, so we leave \LaTeX's -% ~\@addmarginpar~ untouched. +% +% (New v4.00) +% We fire the ~\marginpar~ mechanism, so we leave \LaTeX's +% ~\@addmarginpar~ untouched. % \begin{old}\begin{verbatim} % % \let\@LN@addmarginpar\@addmarginpar % % \def\@addmarginpar{% @@ -1308,47 +1310,47 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % % \fi} % \end{verbatim} % \end{old} -% OK, we keep Stephan's ~\@LN@ExtraLabelItems~: -% (/New v4.00) +% OK, we keep Stephan's ~\@LN@ExtraLabelItems~: +% (/New v4.00) \let\@LN@ExtraLabelItems\@empty -% (New v4.00) -% We imitate the ~\marginpar~ mechanism without using the -% ~\@freelist~ boxes. ~\linelabel~ will indeed place a signal -% penalty (~\@Mllbcodepen~, new), and it will put a label into -% some list macro ~\@LN@labellist~. A new part of the output -% routine will take the labels from the list and will write -% ~\newlabel~s to the .aux file. -% +% (New v4.00) +% We imitate the ~\marginpar~ mechanism without using the +% ~\@freelist~ boxes. ~\linelabel~ will indeed place a signal +% penalty (~\@Mllbcodepen~, new), and it will put a label into +% some list macro ~\@LN@labellist~. A new part of the output +% routine will take the labels from the list and will write +% ~\newlabel~s to the .aux file. +% % The following is a version of \LaTeX's ~\@xnext~. \def\@LN@xnext#1\@lt#2\@@#3#4{\def#3{#1}\gdef#4{#2}} -% This takes an item ~#1~ from a list ~#4~ into ~#3~; -% to be used as ~\expandafter\@LN@xnext#4\@@#3#4~. -% Our lists use ~\@lt~ after each item for separating. -% Indeed, there will be another list macro which can -% appear as argument ~#4~, this will be used for moving -% ~\vadjust~ items (section_\ref{ss:PVadj}). -% The list for ~\linelabel~s is the following: - -\global\let\@LN@labellist\@empty - -% The next is the new part of the output routine writing the -% ~\newlabel~ to the .aux file. Since it is no real page output, -% the page is put back to top of the main vertical list. - -\def\WriteLineNo{% - \unvbox\@cclv - \expandafter \@LN@xnext \@LN@labellist \@@ - \@LN@label \@LN@labellist - \protected@write\@auxout{}{\string\newlabel{\@LN@label}% - {{\theLineNumber}{\thepage}\@LN@ExtraLabelItems}}% +% This takes an item ~#1~ from a list ~#4~ into ~#3~; +% to be used as ~\expandafter\@LN@xnext#4\@@#3#4~. +% Our lists use ~\@lt~ after each item for separating. +% Indeed, there will be another list macro which can +% appear as argument ~#4~, this will be used for moving +% ~\vadjust~ items (section_\ref{ss:PVadj}). +% The list for ~\linelabel~s is the following: + +\global\let\@LN@labellist\@empty + +% The next is the new part of the output routine writing the +% ~\newlabel~ to the .aux file. Since it is no real page output, +% the page is put back to top of the main vertical list. + +\def\WriteLineNo{% + \unvbox\@cclv + \expandafter \@LN@xnext \@LN@labellist \@@ + \@LN@label \@LN@labellist + \protected@write\@auxout{}{\string\newlabel{\@LN@label}% + {{\theLineNumber}{\thepage}\@LN@ExtraLabelItems}}% } % (/New v4.00) -% +% % \subsection{% % The \scs{linelabel} command % \unskip}\label{ss:LL} @@ -1360,9 +1362,9 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % \marginpar{\tiny\raggedright % See if it works: This paragraph % starts on page \pageref{demo}, line -% \ref{demo}. +% \ref{demo}. % \unskip}% -% (New v4.11) +% (New v4.11) % \begin{old}\begin{verbatim} % % If you use this command outside a ~\linenumbers~ % % paragraph, you will get references to some bogus @@ -1372,12 +1374,12 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % % or not. A ~\linelabel~ may legally appear earlier than % % ~\linenumbers~. % \end{verbatim} -% \end{old} -% This trick is better not allowed---see subsections_\ref{ss:LL} +% \end{old} +% This trick is better not allowed---see subsections_\ref{ss:LL} % and_\ref{ss:OnOff}. % (/New v4.11) % -% ~\linelabel~ +% ~\linelabel~ % \begin{old}\begin{verbatim} % %, via a fake float number $-2$, %% new mechanism v4.00 % \end{verbatim} @@ -1393,56 +1395,56 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % A ~\linelabel~ is allowed only in outer horizontal mode. % In outer vertical mode we start a paragraph, and ignore % trailing spaces (by fooling ~\@esphack~). -% -% (New v4.00) We aim at relaxing the previous condition. -% We insert a hook ~\@LN@mathhook~ and a shorthand -% ~\@LN@postlabel~ to support the ~mathrefs~ option which -% allows ~\linelabel~ in math mode. % -% The next paragraph is no longer valid. +% (New v4.00) We aim at relaxing the previous condition. +% We insert a hook ~\@LN@mathhook~ and a shorthand +% ~\@LN@postlabel~ to support the ~mathrefs~ option which +% allows ~\linelabel~ in math mode. +% +% The next paragraph is no longer valid. % \begin{old}\begin{verbatim} % % The argument of ~\linelabel~ is put into a macro with a % % name derived from the number of the allocated float box. % % Much of the rest is dummy float setup. % \end{verbatim} % \end{old} -% (/New v4.00) +% (/New v4.00) % -% (New v4.11) -% \begin{old}\begin{verbatim} +% (New v4.11) +% \begin{old}\begin{verbatim} % % \def\linelabel#1{% % \end{verbatim} -% \end{old} -% I forgot ~\linenumbers~ today, costed me hours or so. +% \end{old} +% I forgot ~\linenumbers~ today, costed me hours or so. -\def\@LN@LLerror{\PackageError{lineno}{% - \string\linelabel\space without \string\linenumbers}{% +\def\@LN@LLerror{\PackageError{lineno}{% + \string\linelabel\space without \string\linenumbers}{% Just see documentation. (New feature v4.11)}\@gobble} -% (New v4.3) Here some things have changed for v4.3. -% The previous ~#1~ has been replaced by ~\@gobble~. -% Ensuing, the ~\linelabel~ error message is re-implemented. -% I find it difficult to compare efficiency of slight -% alternatives---so choose an easy one. Explicit switching -% in ~\linenumbers~ and ~\nolinenumbers~ is an additional -% command that may better be avoided. +% (New v4.3) Here some things have changed for v4.3. +% The previous ~#1~ has been replaced by ~\@gobble~. +% Ensuing, the ~\linelabel~ error message is re-implemented. +% I find it difficult to compare efficiency of slight +% alternatives---so choose an easy one. Explicit switching +% in ~\linenumbers~ and ~\nolinenumbers~ is an additional +% command that may better be avoided. -\newcommand\linelabel{% - \ifLineNumbers \expandafter \@LN@linelabel +\newcommand\linelabel{% + \ifLineNumbers \expandafter \@LN@linelabel \else \expandafter \@LN@LLerror \fi} -%%\let\linelabel\@LN@LLerror - -\gdef\@LN@linelabel#1{% -%% -% ~\gdef~ for hyperref ``symbolically''. (/New v4.11) -%% - \ifx\protect\@typeset@protect -%% -% $\gets$ And a ~\linelabel~ should never be replicated in a -% mark or a TOC entry. (/New v4.3) -%% +%%\let\linelabel\@LN@LLerror + +\gdef\@LN@linelabel#1{% +%% +% ~\gdef~ for hyperref ``symbolically''. (/New v4.11) +%% + \ifx\protect\@typeset@protect +%% +% $\gets$ And a ~\linelabel~ should never be replicated in a +% mark or a TOC entry. (/New v4.3) +%% \ifvmode - \ifinner \else + \ifinner \else \leavevmode \@bsphack \@savsk\p@ \fi \else @@ -1452,10 +1454,10 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \ifinner \@parmoderr \else -%% -% (New v4.00) -%% - \@LN@postlabel{#1}% +%% +% (New v4.00) +%% + \@LN@postlabel{#1}% % \begin{old}\begin{verbatim} % % \@floatpenalty -\@Mii % % \@next\@currbox\@freelist @@ -1467,65 +1469,65 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % % \endgroup % % \@ignorefalse \@esphack % \end{verbatim} -% \end{old} -% (/New v4.00) -%% - \@esphack -%% -% (New v4.00) -% The ~\@ignorefalse~ was appropriate before because the -% ~\@Esphack~ in ~\end@float~ set ~\@ignoretrue~. Cf._\LaTeX's -% ~\@xympar~. (/New v4.00) -%% +% \end{old} +% (/New v4.00) +%% + \@esphack +%% +% (New v4.00) +% The ~\@ignorefalse~ was appropriate before because the +% ~\@Esphack~ in ~\end@float~ set ~\@ignoretrue~. Cf._\LaTeX's +% ~\@xympar~. (/New v4.00) +%% \fi \else -%% -% (New v4.00) -%% +%% +% (New v4.00) +%% \@LN@mathhook{#1}% % \begin{old}\begin{verbatim} % % \@parmoderr % \end{verbatim} -% \end{old} -% Instead of complaining, you may just do your job. -% (/New v4.00) -%% +% \end{old} +% Instead of complaining, you may just do your job. +% (/New v4.00) +%% \fi - \fi + \fi } -% (New v4.00) The shorthand just does what happened -% with ~linenox0.sty~ before ~ednmath0.sty~ (New v4.1: -% now ~mathrefs~ option) appeared, and -% the hook is initialized to serve the same purpose. -% So errors come just where Stephan had built them in, -% and this is just the \LaTeX\ ~\marginpar~ behaviour. +% (New v4.00) The shorthand just does what happened +% with ~linenox0.sty~ before ~ednmath0.sty~ (New v4.1: +% now ~mathrefs~ option) appeared, and +% the hook is initialized to serve the same purpose. +% So errors come just where Stephan had built them in, +% and this is just the \LaTeX\ ~\marginpar~ behaviour. \def\@LN@postlabel#1{\g@addto@macro\@LN@labellist{#1\@lt}% - \vadjust{\penalty-\@Mllbcodepen}} + \vadjust{\penalty-\@Mllbcodepen}} \def\@LN@mathhook#1{\@parmoderr} -% (/New v4.00) -% -% \modulolinenumbers[3] +% (/New v4.00) +% +% \modulolinenumbers[3] % \firstlinenumber{1} % \section{% % The appearance of the line numbers % \unskip}\label{appearance} % \subsection{% -% Basic code %% own subsec. v4.2. +% Basic code %% own subsec. v4.2. % \unskip} -% +% % The line numbers are set as ~\tiny\sffamily\arabic{linenumber}~, % $10pt$ left of the text. With options to place it % right of the text, or . . . % % . . . here are the hooks: -\def\makeLineNumberLeft{% +\def\makeLineNumberLeft{% \hss\linenumberfont\LineNumber\hskip\linenumbersep} -\def\makeLineNumberRight{% +\def\makeLineNumberRight{% \linenumberfont\hskip\linenumbersep\hskip\columnwidth \hb@xt@\linenumberwidth{\hss\LineNumber}\hss} @@ -1539,7 +1541,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % Margin switching requires ~pagewise~ numbering mode, but % choosing the left or right margin for the numbers always -% works. +% works. \def\switchlinenumbers{\@ifstar {\let\makeLineNumberOdd\makeLineNumberRight @@ -1588,70 +1590,70 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % Only the running mode counter may be reset, or preset, % for individual paragraphs. The pagewise counter must % give a unique anonymous number for each line. -% -% (New v4.3) ~\newcounter{linenumber}~ -% was the only ~\newcounter~ in the whole package, and -% formerly I was near using ~\newcount~ instead. Yet -% ~\newcounter~ may be quite useful for ~\includeonly~. -% It also supports resetting ``subcounters'', but what -% could these be? Well, ~edtable~ might introduce a -% subcounter for columns. -% (Note that \LaTeX's setting commands would work with -% ~\newcount\c@linenumber~ already, apart from this. -% And perhaps sometimes ~\refstepcounter{linenumber}~ -% wouldn't work---cf._my discussion of ~\stepcounter~ in -% subsection_\ref{ss:MLN}, similarly ~\refstep...~ would -% be quite useless. -% Even the usual redefinitions of ~\thelinenumber~ would -% work. It is nice, on the other hand, that -% ~\thelinenumber~ is predefined here. \LaTeX's -% initialization of the value perhaps just serves making -% clear \LaTeX\ counters should always be changed -% globally.---Shortened and improved the discussion here.) -% (/New v4.3) -% -% (New v4.22) -% ~\c@linenumber~ usually is---globally---incremented by -% ~\stepcounter~ (at present), so resetting it locally would -% raise the save stack problem of \TeX book p._301, moreover -% it would be is useless, there is no hope of keeping the -% values local (but see subsection_\ref{ss:ILN}). So I insert -% ~\global~: (/New v4.22) - -\newcommand*\resetlinenumber[1][\@ne]{% +% +% (New v4.3) ~\newcounter{linenumber}~ +% was the only ~\newcounter~ in the whole package, and +% formerly I was near using ~\newcount~ instead. Yet +% ~\newcounter~ may be quite useful for ~\includeonly~. +% It also supports resetting ``subcounters'', but what +% could these be? Well, ~edtable~ might introduce a +% subcounter for columns. +% (Note that \LaTeX's setting commands would work with +% ~\newcount\c@linenumber~ already, apart from this. +% And perhaps sometimes ~\refstepcounter{linenumber}~ +% wouldn't work---cf._my discussion of ~\stepcounter~ in +% subsection_\ref{ss:MLN}, similarly ~\refstep...~ would +% be quite useless. +% Even the usual redefinitions of ~\thelinenumber~ would +% work. It is nice, on the other hand, that +% ~\thelinenumber~ is predefined here. \LaTeX's +% initialization of the value perhaps just serves making +% clear \LaTeX\ counters should always be changed +% globally.---Shortened and improved the discussion here.) +% (/New v4.3) +% +% (New v4.22) +% ~\c@linenumber~ usually is---globally---incremented by +% ~\stepcounter~ (at present), so resetting it locally would +% raise the save stack problem of \TeX book p._301, moreover +% it would be is useless, there is no hope of keeping the +% values local (but see subsection_\ref{ss:ILN}). So I insert +% ~\global~: (/New v4.22) + +\newcommand*\resetlinenumber[1][\@ne]{% \global % v4.22 \c@runninglinenumber#1\relax} -% (New v4.00) +% (New v4.00) % \begin{old}\begin{verbatim} % % \newcommand\resetlinenumber[1][1]{\c@runninglinenumber#1} % \end{verbatim} % \end{old} -% Added ~\relax~, being quite sure that this does no harm -% and is quite important, as with ~\setcounter~ etc. -% I consider this a bug fix (although perhaps no user has -% ever had a problem with this). (/New v4.00) -% -% (v4.22: I had made much fuss about resetting subordinate +% Added ~\relax~, being quite sure that this does no harm +% and is quite important, as with ~\setcounter~ etc. +% I consider this a bug fix (although perhaps no user has +% ever had a problem with this). (/New v4.00) +% +% (v4.22: I had made much fuss about resetting subordinate % counters here---removed, somewhat postponed.) -% -%% TODO v4.4+: -%% \newcommand*\resetlinenumber[1][\@ne]{% -%% \ifx\c@linenumber\c@runninglinenumber +% +%% TODO v4.4+: +%% \newcommand*\resetlinenumber[1][\@ne]{% +%% \ifx\c@linenumber\c@runninglinenumber %% \global\c@linenumber#1\relax -%% \global\advance\c@linenumber\m@ne -%% \stepLineNumber -%% \else -%% \PackageError{lineno}%% Shorthand!? -%% {You can't reset line number in pagewise mode}% -%% {This should suffice.}% -%% \fi -%% } -% +%% \global\advance\c@linenumber\m@ne +%% \stepLineNumber +%% \else +%% \PackageError{lineno}%% Shorthand!? +%% {You can't reset line number in pagewise mode}% +%% {This should suffice.}% +%% \fi +%% } +% % \subsection{% % Running line numbers -% \unskip} -% +% \unskip} +% % Running mode is easy, ~\LineNumber~ and ~\theLineNumber~ % produce ~\thelinenumber~, which defaults to % ~\arabic{linenumber}~, using the ~\c@runninglinenumber~ @@ -1670,12 +1672,12 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % % \subsection{% % Pagewise line numbers -% \unskip}\label{ss:PW} -% +% \unskip}\label{ss:PW} +% % Difficult, if you think about it. The number has to be % printed when there is no means to know on which page it -% will end up, except through the aux-file. My solution -% is really expensive, but quite robust. +% will end up, except through the aux-file. My solution +% is really expensive, but quite robust. % % With version ~v2.00~ the hashsize requirements are % reduced, because we do not need one controlsequence for @@ -1712,58 +1714,58 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % there might else be in ~\thepage~. \def\logtheLineNumber{\protected@write\@auxout{}{% -%% +%% % (New v4.00) (UL) -% As Daniel Doherty observed, the earlier line +% As Daniel Doherty observed, the earlier line % \begin{old}\begin{verbatim} % % \string\@LN{\the\c@linenumber}{\noexpand\the\c@page}}} % \end{verbatim} % \end{old} -% here may lead into an infinite loop when the user resets -% the page number (think of ~\pagenumbering~, e.g.). -% Stephan and I brief\/ly discussed the matter and decided -% to introduce a ``physical''-page counter to which -% ~\logtheLineNumber~ refers. It was Stephan's idea to use -% ~\cl@page~ for reliably augmenting the ``physical''-page -% counter. However, this relies on the output routine once -% doing ~\stepcounter{page}~. Before Stephan's -% suggestion, I had thought of appending the stepping to -% \LaTeX's ~\@outputpage~.---So the macro definition ends -% as follows. -%% - \string\@LN{\the\c@linenumber}{% -%% -% (New v4.2) -%% \noexpand\number\n@LN@truepage}}} -%% -% The `truepage' counter must start with ~\c@~ so it works -% with ~\include~, and the ~\@addtoreset~ below is needed -% for the same purpose. -%% - \noexpand\the\c@LN@truepage}}} - -%% \newcount\n@LN@truepage +% here may lead into an infinite loop when the user resets +% the page number (think of ~\pagenumbering~, e.g.). +% Stephan and I brief\/ly discussed the matter and decided +% to introduce a ``physical''-page counter to which +% ~\logtheLineNumber~ refers. It was Stephan's idea to use +% ~\cl@page~ for reliably augmenting the ``physical''-page +% counter. However, this relies on the output routine once +% doing ~\stepcounter{page}~. Before Stephan's +% suggestion, I had thought of appending the stepping to +% \LaTeX's ~\@outputpage~.---So the macro definition ends +% as follows. +%% + \string\@LN{\the\c@linenumber}{% +%% +% (New v4.2) +%% \noexpand\number\n@LN@truepage}}} +%% +% The `truepage' counter must start with ~\c@~ so it works +% with ~\include~, and the ~\@addtoreset~ below is needed +% for the same purpose. +%% + \noexpand\the\c@LN@truepage}}} + +%% \newcount\n@LN@truepage %% \g@addto@macro\cl@page{\global\advance\n@LN@truepage\@ne} -\newcount\c@LN@truepage +\newcount\c@LN@truepage \g@addto@macro\cl@page{\global\advance\c@LN@truepage\@ne} \@addtoreset{LN@truepage}{@ckpt} -% (/New v4.2) I had thought of offering more -% features of a \LaTeX\ counter. However, the user should -% better \emph{not} have access to this counter. ~\c@page~ -% should suffice as a pagewise master counter.---To be sure, -% along the present lines the user \emph{can} manipulate -% ~\c@LN@truepage~ by ~\stepcounter{page}~. E.g., she might -% do this in order to manually insert a photograph. Well, -% seems not to harm. -% -% The above usage of ~\g@addto@macro~ and ~\cl@page~ may be -% not as stable as Stephan intended. His proposal used -% ~\xdef~ directly. But he used ~\cl@page~ as well, and who -% knows \dots{} And as to ~\g@addto@macro~, I have introduced -% it for list macros anyway. -% (/UL) (/New v4.00) -% +% (/New v4.2) I had thought of offering more +% features of a \LaTeX\ counter. However, the user should +% better \emph{not} have access to this counter. ~\c@page~ +% should suffice as a pagewise master counter.---To be sure, +% along the present lines the user \emph{can} manipulate +% ~\c@LN@truepage~ by ~\stepcounter{page}~. E.g., she might +% do this in order to manually insert a photograph. Well, +% seems not to harm. +% +% The above usage of ~\g@addto@macro~ and ~\cl@page~ may be +% not as stable as Stephan intended. His proposal used +% ~\xdef~ directly. But he used ~\cl@page~ as well, and who +% knows \dots{} And as to ~\g@addto@macro~, I have introduced +% it for list macros anyway. +% (/UL) (/New v4.00) +% % From the aux-file we get one macro ~\LN@P~<page> for each % page with line numbers on it. This macro calls four other % macros with one argument each. These macros are @@ -1773,7 +1775,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % We need sort of a pointer to the first page with line % numbers, initiallized to point to nothing: -\def\LastNumberedPage{first} +\def\LastNumberedPage{first} \def\LN@Pfirst{\nextLN\relax} % The four dynamic macros are initiallized to reproduce @@ -1786,7 +1788,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % During the end-document run through the aux-files, we % disable ~\@LN~. I may put in a check here later, to give -% a rerun recommendation. +% a rerun recommendation. \AtEndDocument{\let\@LN\@gobbletwo} @@ -1799,7 +1801,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % current page and line number, with the % \emph{pointer-to-the-next-page} pointing to nothing. And % the macro for the previous page will be redefined to point -% to the current one. +% to the current one. % % If the macro for the current page already exists, just % redefine the \emph{last-line-number} entry. @@ -1814,8 +1816,8 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \def\@@LN#1#2#3#4{\ifx#1\relax \ifx#2\relax\gdef#2{#3}\fi - \expandafter\@@@LN\csname LN@P\LastNumberedPage\endcsname#1% - \xdef#1{\lastLN{#3}\firstLN{#3}% + \expandafter\@@@LN\csname LN@P\LastNumberedPage\endcsname#1% + \xdef#1{\lastLN{#3}\firstLN{#3}% \pageLN{#4}{\@LN@column}{#2}\nextLN\relax}% \else \def\lastLN##1{\noexpand\lastLN{#3}}% @@ -1825,7 +1827,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % The previous page macro gets its pointer to the % current one, replacing the ~\relax~ with the cs-token -% ~\LN@P~<page>. +% ~\LN@P~<page>. \def\@@@LN#1#2{{\def\nextLN##1{\noexpand\nextLN\noexpand#2}% \xdef#1{#1}}} @@ -1836,11 +1838,11 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % be a completely different one. We maintain a cache, % which is ~\let~ to the last page's macro. But for now % it is initialized to expand ~\LN@first~, where the poiner -% to the first numbered page has been stored in. +% to the first numbered page has been stored in. \def\NumberedPageCache{\LN@Pfirst} -% To find out on which page the current ~\c@linenumber~ is, +% To find out on which page the current ~\c@linenumber~ is, % we define the four dynamic macros to do something usefull % and execute the current cache macro. ~\lastLN~ is run % first, testing if the line number in question may be on a @@ -1855,7 +1857,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % page, we start over from the beginning. Else, ~\nextLN~ % will be disabled, and ~\pageLN~ will run % ~\gotNumberedPage~ with four arguments: the first line -% number on this column, the page number, the column +% number on this column, the page number, the column % number, and the first line on the page. \def\testFirstNumberedPage#1{\ifnum#1>\c@linenumber @@ -1879,7 +1881,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. } % When we switch to another page, we first have to make -% sure that it is there. If we are done with the last +% sure that it is there. If we are done with the last % page, we probably need to run \TeX\ again, but for the % rest of this run, the cache macro will just return four % zeros. This saves a lot of time, for example if you have @@ -1887,7 +1889,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % the whole page-list would be searched in vain again and % again for the second half of the document. % -% If there is another page, we iterate the search. +% If there is another page, we iterate the search. \def\testNextNumberedPage#1{\ifx#1\relax \global\def\NumberedPageCache{\gotNumberedPage0000}% @@ -1903,10 +1905,10 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % \linelabel{demo2} % \marginpar{\tiny\raggedright % Let's see if it finds the label -% on page \pageref{demo}, +% on page \pageref{demo}, % line \ref{demo}, and back here % on page \pageref{demo2}, line -% \ref{demo2}. +% \ref{demo2}. % \unskip}% % To separate the official hooks from the internals there is % this equivalence, to hook in later for whatever purpose: @@ -1923,7 +1925,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \def\gotNumberedPage#1#2#3#4{\oddNumberedPagefalse \ifodd \if@twocolumn #3\else #2\fi\relax\oddNumberedPagetrue\fi - \advance\c@linenumber\@ne + \advance\c@linenumber\@ne \ifcolumnwiselinenumbers \subtractlinenumberoffset{#1}% \else @@ -1949,7 +1951,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % in the ~\c@linenumber~ counter. This is what gets printed % to the aux-file to make a label: -\def\thePagewiseLineNumber{\protect +\def\thePagewiseLineNumber{\protect \getpagewiselinenumber{\the\c@linenumber}}% % And here is what happens when the label is refered to: @@ -1971,90 +1973,90 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % [MEM:] One macro per page. Great improvement over v1.02, % which had one control sequence per line in % addition. It blew the hash table after some five -% thousand lines. +% thousand lines. % \end{description} % % \subsection{% % Twocolumn mode (New v3.06) % \unskip} % -% Twocolumn mode requires another patch to the ~\output~ -% routine, in order to print a column tag to the .aux +% Twocolumn mode requires another patch to the ~\output~ +% routine, in order to print a column tag to the .aux % file. -\AtBeginDocument{% v4.2, revtex4.cls (e.g.). - % <- TODO v4.4+: Or better in \LineNoLaTeXOutput!? - \let\@LN@orig@makecol\@makecol} +\AtBeginDocument{% v4.2, revtex4.cls (e.g.). + % <- TODO v4.4+: Or better in \LineNoLaTeXOutput!? + \let\@LN@orig@makecol\@makecol} \def\@LN@makecol{% \@LN@orig@makecol \setbox\@outputbox \vbox{% \boxmaxdepth \@maxdepth - \protected@write\@auxout{}{% + \protected@write\@auxout{}{% \string\@LN@col{\if@firstcolumn1\else2\fi}% }% - \box\@outputbox + \box\@outputbox }% \vbox -} %% TODO cf. revtexln.sty. +} %% TODO cf. revtexln.sty. -\def\@LN@col{\def\@LN@column} % v4.22, removed #1. +\def\@LN@col{\def\@LN@column} % v4.22, removed #1. \@LN@col{1} % % \subsection{% -% Numbering modulo $m$, starting at $f$ +% Numbering modulo $m$, starting at $f$ %% Numbering modulo 5 -% \unskip}\label{ss:Mod} -% +% \unskip}\label{ss:Mod} +% % Most users want to have only one in five lines numbered. % ~\LineNumber~ is supposed to produce the outfit of the % line number attached to the line, while ~\thelinenumber~ % is used also for references, which should appear even if -% they are not multiples of five. -% -% (New v4.00) Moreover, some users want to -% control which line number should be printed first. Support -% of this is now introduced here---see ~\firstlinenumber~ -% below.---~numline.sty~ by Michael Jaegermann and -% James Fortune offers controlling which \emph{final} -% line numbers should not be printed. What is -% it good for? We ignore this here until some user demands -% it.---Peter Wilson's ~ledmac.sty~ offers much different -% choices of line numbers to be printed, due to Wayne Sullivan. -% (/New v4.00) -% -% (New v4.22) ~\c@linenumbermodulo~ is rendered a -% fake counter, as discussed since v4.00. So it can -% no longer be set by ~\setcounter~. ~\modulolinenumbers~ -% serves this purpose. Well, does anybody want to do -% what worked with ~\addtocounter~? (Then please tell -% me.)---At least, ~\value~ still works. For the same -% purpose I rename the fake `firstlinenumber' counter -% ~\n@...~ to ~\c@...~. (/New v4.22) +% they are not multiples of five. +% +% (New v4.00) Moreover, some users want to +% control which line number should be printed first. Support +% of this is now introduced here---see ~\firstlinenumber~ +% below.---~numline.sty~ by Michael Jaegermann and +% James Fortune offers controlling which \emph{final} +% line numbers should not be printed. What is +% it good for? We ignore this here until some user demands +% it.---Peter Wilson's ~ledmac.sty~ offers much different +% choices of line numbers to be printed, due to Wayne Sullivan. +% (/New v4.00) +% +% (New v4.22) ~\c@linenumbermodulo~ is rendered a +% fake counter, as discussed since v4.00. So it can +% no longer be set by ~\setcounter~. ~\modulolinenumbers~ +% serves this purpose. Well, does anybody want to do +% what worked with ~\addtocounter~? (Then please tell +% me.)---At least, ~\value~ still works. For the same +% purpose I rename the fake `firstlinenumber' counter +% ~\n@...~ to ~\c@...~. (/New v4.22) % \begin{old}\begin{verbatim} -% % \newcount\c@linenumbermodulo % removed for v4.22 +% % \newcount\c@linenumbermodulo % removed for v4.22 % \end{verbatim} % \end{old} -% -%% Removed for v4.22: -%% (UL) On my question why, e.g., -%% ~\chardef~ would not have sufficed, Stephan couldn't remember -%% exactly; guessed that he wanted to offer \LaTeX\ counter -%% facilities. However, the typical ones don't come this way. -%% So I'm quite sure that I will change this next time. -%% -%% However, I observed at least two times that users gave a very -%% high value to ~\c@linenumbermodulo~ in order to suppress -%% printing of the line number. One of these users preferred an -%% own way of handling line numbers, just wanted to use -%% ~\linelabel~ and ~ednotes.sty~ features. Should we support this? -%% I rather would like to advise them to -%% ~\let\makeLineNumber\relax~. (/UL) -% -% (New v4.00) \par -% ~\themodulolinenumber~ waits for being declared -% ~\LineNumber~ by ~\modulolinenumbers~. (This has -% been so before, no change.) Here is how it -% looked before: +% +%% Removed for v4.22: +%% (UL) On my question why, e.g., +%% ~\chardef~ would not have sufficed, Stephan couldn't remember +%% exactly; guessed that he wanted to offer \LaTeX\ counter +%% facilities. However, the typical ones don't come this way. +%% So I'm quite sure that I will change this next time. +%% +%% However, I observed at least two times that users gave a very +%% high value to ~\c@linenumbermodulo~ in order to suppress +%% printing of the line number. One of these users preferred an +%% own way of handling line numbers, just wanted to use +%% ~\linelabel~ and ~ednotes.sty~ features. Should we support this? +%% I rather would like to advise them to +%% ~\let\makeLineNumber\relax~. (/UL) +% +% (New v4.00) \par +% ~\themodulolinenumber~ waits for being declared +% ~\LineNumber~ by ~\modulolinenumbers~. (This has +% been so before, no change.) Here is how it +% looked before: % \begin{old}\begin{verbatim} % % \def\themodulolinenumber{{\@tempcnta\c@linenumber % % \divide\@tempcnta\c@linenumbermodulo @@ -2062,366 +2064,366 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % % \ifnum\@tempcnta=\c@linenumber\thelinenumber\fi % % }} % \end{verbatim} -% \end{old} -% (UL) This was somewhat slow. This arithmetic -% happens at every line. This time I tend to declare an extra -%% TODO v4.4+ -% line counter (as opposed to my usual recommendations to use -% counters as rarely as possible) which is stepped every line. -% It could be incremented in the same way as ~\c@LN@truepage~ -% is incremented via ~\cl@page~! This is another point in favour -% of ~{linenumber}~ being a \LaTeX\ counter! -% When this new counter equals ~\c@linenumbermodulo~, it is reset, -% and ~\thelinenumber~ is executed.---It gets much slower by my -% support of controlling the first line number below. I should +% \end{old} +% (UL) This was somewhat slow. This arithmetic +% happens at every line. This time I tend to declare an extra +%% TODO v4.4+ +% line counter (as opposed to my usual recommendations to use +% counters as rarely as possible) which is stepped every line. +% It could be incremented in the same way as ~\c@LN@truepage~ +% is incremented via ~\cl@page~! This is another point in favour +% of ~{linenumber}~ being a \LaTeX\ counter! +% When this new counter equals ~\c@linenumbermodulo~, it is reset, +% and ~\thelinenumber~ is executed.---It gets much slower by my +% support of controlling the first line number below. I should % improve this.---On -%% %% TODO v4.4+--pagewise!? -% the other hand, time expense means very little nowadays, -% while the number of \TeX\ counters still is limited. -% -% For the same purpose, moreover, attaching the line number -% box could be intercepted earlier (in ~\MakeLineNo~), -% without changing ~\LineNumber~. However, this may be -% bad for the latter's announcement as a wizard interface +%% %% TODO v4.4+--pagewise!? +% the other hand, time expense means very little nowadays, +% while the number of \TeX\ counters still is limited. +% +% For the same purpose, moreover, attaching the line number +% box could be intercepted earlier (in ~\MakeLineNo~), +% without changing ~\LineNumber~. However, this may be +% bad for the latter's announcement as a wizard interface % in section_\ref{s:UserCmds}. -%% -%% I wonder about Stephan's group. Its only effect is that -%% ~\@tempcnta~ is restored after using it. What for is this? +%% +%% I wonder about Stephan's group. Its only effect is that +%% ~\@tempcnta~ is restored after using it. What for is this? %% I tend to remove the group braces. %% TODO v4.4+ -% (/UL) -% -% Here is the new code. It is very near to my ~lnopatch.sty~ -% code which introduced the first line number feature -% before.---I add starting with a ~\relax~ which is so often -% recommended---without understanding this really. At least, -% it will not harm.---Former group braces appear as -% ~\begingroup~/~\endgroup~ here. +% (/UL) +% +% Here is the new code. It is very near to my ~lnopatch.sty~ +% code which introduced the first line number feature +% before.---I add starting with a ~\relax~ which is so often +% recommended---without understanding this really. At least, +% it will not harm.---Former group braces appear as +% ~\begingroup~/~\endgroup~ here. \def\themodulolinenumber{\relax - \ifnum\c@linenumber<\c@firstlinenumber \else - \begingroup + \ifnum\c@linenumber<\c@firstlinenumber \else + \begingroup \@tempcnta\c@linenumber - \advance\@tempcnta-\c@firstlinenumber + \advance\@tempcnta-\c@firstlinenumber \divide\@tempcnta\c@linenumbermodulo \multiply\@tempcnta\c@linenumbermodulo - \advance\@tempcnta\c@firstlinenumber + \advance\@tempcnta\c@firstlinenumber \ifnum\@tempcnta=\c@linenumber \thelinenumber \fi - \endgroup - \fi + \endgroup + \fi } -% (/New v4.00) -% +% (/New v4.00) +% % The user command to set the modulo counter: -% (New v4.31) \dots\ a star variant is introduced to implement -% Hillel Chayim Yisraeli's idea to print the first line number -% after an interruption of the edited text by some editor's -% text, regardless of the modulo. If it is 1, it is printed only +% (New v4.31) \dots\ a star variant is introduced to implement +% Hillel Chayim Yisraeli's idea to print the first line number +% after an interruption of the edited text by some editor's +% text, regardless of the modulo. If it is 1, it is printed only % with ~\firstlinenumber{1}~. I.e., you use ~\modulolinenumbers*~ -% for the new feature, without the star you get the simpler -% behaviour that we have had so far. And you can switch back -% from the refined behaviour to the simple one by using -% ~\modulolinenumbers~ without the star.---This enhancement -% is accompanied by a new package option ~modulo*~ which just -% executes ~\modulolinenumbers*~ -% (subsection_\ref{ss:v3opts}).---`With ~\firstlinenumber{1}~' -% exactly means: `1' is printed if and only if the last -% ~\firstlinenumber~ before or in the paragraph that follows -% the ``interruption'' has argument `1' (or something -% \emph{expanding} to `1', or (to) something that \TeX\ -% ``reads'' as 1, e.g.: a \TeX\ count register storing -% 1).---At present, this behaviour may be unsatisfactory with -% pagewise line-numbering $\dots$ I'll make an experimental +% for the new feature, without the star you get the simpler +% behaviour that we have had so far. And you can switch back +% from the refined behaviour to the simple one by using +% ~\modulolinenumbers~ without the star.---This enhancement +% is accompanied by a new package option ~modulo*~ which just +% executes ~\modulolinenumbers*~ +% (subsection_\ref{ss:v3opts}).---`With ~\firstlinenumber{1}~' +% exactly means: `1' is printed if and only if the last +% ~\firstlinenumber~ before or in the paragraph that follows +% the ``interruption'' has argument `1' (or something +% \emph{expanding} to `1', or (to) something that \TeX\ +% ``reads'' as 1, e.g.: a \TeX\ count register storing +% 1).---At present, this behaviour may be unsatisfactory with +% pagewise line-numbering $\dots$ I'll make an experimental % extra package if someone complains \dots -\newcommand\modulolinenumbers{% +\newcommand\modulolinenumbers{% \@ifstar - {\def\@LN@maybe@moduloresume{% + {\def\@LN@maybe@moduloresume{% \global\let\@LN@maybe@normalLineNumber - \@LN@normalLineNumber}% - \@LN@modulolinenos}% + \@LN@normalLineNumber}% + \@LN@modulolinenos}% {\let\@LN@maybe@moduloresume\relax \@LN@modulolinenos}% } -\global\let\@LN@maybe@normalLineNumber\relax -\let\@LN@maybe@moduloresume\relax -\gdef\@LN@normalLineNumber{% - \ifnum\c@linenumber=\c@firstlinenumber \else +\global\let\@LN@maybe@normalLineNumber\relax +\let\@LN@maybe@moduloresume\relax +\gdef\@LN@normalLineNumber{% + \ifnum\c@linenumber=\c@firstlinenumber \else \ifnum\c@linenumber>\@ne - \def\LineNumber{\thelinenumber}% - \fi - \fi + \def\LineNumber{\thelinenumber}% + \fi + \fi %% -% ~\def~ instead of ~\let~ enables taking account of a -% redefinition of ~\thelinenumber~ in a present numbering -% environment (e.g.). +% ~\def~ instead of ~\let~ enables taking account of a +% redefinition of ~\thelinenumber~ in a present numbering +% environment (e.g.). %% \global\let\@LN@maybe@normalLineNumber\relax} -% Instead of changing ~\LineNumber~ directly by +% Instead of changing ~\LineNumber~ directly by % ~LN@moduloresume~, these tricks enable ~\modulolinenumbers*~ -% to act as locally as I can make it. I don't know how to -% avoid that the output routine switches back to the normal -% modulo behaviour by a global change. (An ~\aftergroup~ may +% to act as locally as I can make it. I don't know how to +% avoid that the output routine switches back to the normal +% modulo behaviour by a global change. (An ~\aftergroup~ may % fail in admittedly improbable cases.) \newcommand*\@LN@modulolinenos[1][\z@]{% -%% -% The definition of this macro is that of the former -% ~\modulolinenumbers~. (/New v4.31) +%% +% The definition of this macro is that of the former +% ~\modulolinenumbers~. (/New v4.31) %% \let\LineNumber\themodulolinenumber - \ifnum#1>\@ne - \chardef % v4.22, note below + \ifnum#1>\@ne + \chardef % v4.22, note below \c@linenumbermodulo#1\relax - \else\ifnum#1=\@ne + \else\ifnum#1=\@ne % \begin{old}\begin{verbatim} % % \def\LineNumber{\thelinenumber}% % \end{verbatim} -% \end{old} -% (New v4.00) I am putting something here to enable -% ~\firstlinenumber~ with $~\c@linenumbermodulo~=1$. -% With ~lnopatch.sty~, a trick was offered for this purpose. -% It is now obsolete. -% - \def\LineNumber{\@LN@ifgreat\thelinenumber}% -%% -% (/New v4.00) -%% +% \end{old} +% (New v4.00) I am putting something here to enable +% ~\firstlinenumber~ with $~\c@linenumbermodulo~=1$. +% With ~lnopatch.sty~, a trick was offered for this purpose. +% It is now obsolete. +% + \def\LineNumber{\@LN@ifgreat\thelinenumber}% +%% +% (/New v4.00) +%% \fi\fi } -% (New v4.00) The default of ~\@LN@ifgreat~ is +% (New v4.00) The default of ~\@LN@ifgreat~ is \let\@LN@ifgreat\relax -% The previous changes as soon as ~\firstlinenumber~ is used: +% The previous changes as soon as ~\firstlinenumber~ is used: -\newcommand*\firstlinenumber[1]{% - \chardef\c@firstlinenumber#1\relax -%% -% No counter, little values allowed only---OK?---(UL) -% The change is local---OK? The good thing is that -% ~\global\firstlinenumber{~<number>~}~ works. Moreover, +\newcommand*\firstlinenumber[1]{% + \chardef\c@firstlinenumber#1\relax +%% +% No counter, little values allowed only---OK?---(UL) +% The change is local---OK? The good thing is that +% ~\global\firstlinenumber{~<number>~}~ works. Moreover, % ~\modulolinenumbers~ acts locally as well. (/UL) % -% (New v4.31) -%% - \let\@LN@ifgreat\@LN@ifgreat@critical} +% (New v4.31) +%% + \let\@LN@ifgreat\@LN@ifgreat@critical} \def\@LN@ifgreat@critical{% - \ifnum\c@linenumber<\c@firstlinenumber - \expandafter \@gobble - \fi}% + \ifnum\c@linenumber<\c@firstlinenumber + \expandafter \@gobble + \fi}% -% (/New v4.31) -% -% The default -% value of ~\c@firstlinenumber~ %% v4.31 -% is 0. This is best for what one would expect from modulo -% printing. +% (/New v4.31) +% +% The default +% value of ~\c@firstlinenumber~ %% v4.31 +% is 0. This is best for what one would expect from modulo +% printing. \let\c@firstlinenumber=\z@ -% -% For usage and effects of ~\modulolinenumbers~ and %% v4.31 -% ~\firstlinenumbers~, please consult section_\ref{s:UserCmds}. -% Two details on ~\firstlinenumbers~ here: -% (i)_~\firstlinenumber~ acts on a paragraph if and only if -% (a)_the paragraph is broken into lines ``in line-numbering -% mode'' (after ~\linenumbers~, e.g.); -% (b)_it is the last occurrence of a ~\firstlinenumbers~ -% before or in the paragraph. -% (The practical applications of this that I can imagine -% don't seem appealing to me.) -% Cf._the explanation above of how ~\modulolinenumbers~ and -% ~\firstlinenumbers~ interact---for this and for (ii), -% which is concerned with possible arguments for -% ~\firstlinenumbers~. -% -% Note that the line numbers of the present section -% demonstrate the two devices. (/New v4.00) +% +% For usage and effects of ~\modulolinenumbers~ and %% v4.31 +% ~\firstlinenumbers~, please consult section_\ref{s:UserCmds}. +% Two details on ~\firstlinenumbers~ here: +% (i)_~\firstlinenumber~ acts on a paragraph if and only if +% (a)_the paragraph is broken into lines ``in line-numbering +% mode'' (after ~\linenumbers~, e.g.); +% (b)_it is the last occurrence of a ~\firstlinenumbers~ +% before or in the paragraph. +% (The practical applications of this that I can imagine +% don't seem appealing to me.) +% Cf._the explanation above of how ~\modulolinenumbers~ and +% ~\firstlinenumbers~ interact---for this and for (ii), +% which is concerned with possible arguments for +% ~\firstlinenumbers~. +% +% Note that the line numbers of the present section +% demonstrate the two devices. (/New v4.00) %%\setcounter{linenumbermodulo}{5} -\chardef\c@linenumbermodulo=5 % v4.2; ugly? +\chardef\c@linenumbermodulo=5 % v4.2; ugly? \modulolinenumbers[1] -% (New v4.22) The new implementation through ~\chardef~ -% decreases the functionality and raises certain compatibility -% problems. I face this without fear. The maximum modulo value -% is now ~255~. I expect that this suffices for usual applications. -% However, some users have ``abused'' ~lineno.sty~ to get -% ~ednotes.sty~ features without line numbers, so have set the -% modulo to a value beyond the total number of lines in their -% edition. This ought to be replaced by -% ~\let\makeLineNumber\relax~. (/New v4.22) -% -% \section{% +% (New v4.22) The new implementation through ~\chardef~ +% decreases the functionality and raises certain compatibility +% problems. I face this without fear. The maximum modulo value +% is now ~255~. I expect that this suffices for usual applications. +% However, some users have ``abused'' ~lineno.sty~ to get +% ~ednotes.sty~ features without line numbers, so have set the +% modulo to a value beyond the total number of lines in their +% edition. This ought to be replaced by +% ~\let\makeLineNumber\relax~. (/New v4.22) +% +% \section{% % Package options -% \unskip}\label{s:Opts} -% -% (New v4.1) -% The last heading formerly was the heading of what is now -% subsection_\ref{ss:v3opts}. The options declared there were -% said to execute user commands only. This was wrong already -% concerning ~displaymath~ and ~hyperref~. At least, however, -% these options were no or almost no occasion to skip definitions -% or allocations. This is different with the options that we now -% insert. -% -%% (New v4.2) v4.00 moved the ``options'' below the -%% ``extensions''. This was bad with ~\do@mlineno~ in -%% subsection_\ref{ss:v3opts} which is to control -%% subsection_\ref{ss:display}---undone here. (/New v4.2) +% \unskip}\label{s:Opts} +% +% (New v4.1) +% The last heading formerly was the heading of what is now +% subsection_\ref{ss:v3opts}. The options declared there were +% said to execute user commands only. This was wrong already +% concerning ~displaymath~ and ~hyperref~. At least, however, +% these options were no or almost no occasion to skip definitions +% or allocations. This is different with the options that we now +% insert. +% +%% (New v4.2) v4.00 moved the ``options'' below the +%% ``extensions''. This was bad with ~\do@mlineno~ in +%% subsection_\ref{ss:v3opts} which is to control +%% subsection_\ref{ss:display}---undone here. (/New v4.2) % % \subsection{% % Extended referencing to line numbers. (v4.2) % \unskip} % This subsection explains and declares package option ~addpageno~. %% v4.31 -% -% If a line to whose number you refer by ~\ref~ is not on the -% present page, it may be useful to add the number of the page -% on which the line occurs---and perhaps it should not be added -% otherwise. In general, you could use the Standard \LaTeX\ -% package varioref for this. However, the latter usually +% +% If a line to whose number you refer by ~\ref~ is not on the +% present page, it may be useful to add the number of the page +% on which the line occurs---and perhaps it should not be added +% otherwise. In general, you could use the Standard \LaTeX\ +% package varioref for this. However, the latter usually % produces verbose output like `on the preceding page'--- -% unless costumized---, while in critical editions, e.g., one -% may prefer just adding the page number and some mark on the -% left of the line number, irrespectively of how far the page is -% apart etc. To support this, package option ~addpageno~ -% provides a command ~\vpagelineref~ to be used in place of -% ~\ref~. This produces, e.g., `34.15' when referring to line_15 -% on page_34 while the present page is not 34. You can customize -% the outcome, see the package file ~vplref.sty~ where the code -% and further details are. You may conceive of -% ~\vpagelineref~ as a certain customization of varioref's -% ~\vref~. -% -% This implies that option ~addpageno~ requires the files -% ~vplref.sty~ and ~varioref.sty~. ~addpageno~ automatically -% loads both of them. Yet you can also load ~varioref.sty~ -% on your own to use its package options. -% -% Of course, you might better introduce a shorter command name -% for ~\vpagelineref~ for your work, while we cannot predict -% here what shorthand will fit your work. E.g., +% unless costumized---, while in critical editions, e.g., one +% may prefer just adding the page number and some mark on the +% left of the line number, irrespectively of how far the page is +% apart etc. To support this, package option ~addpageno~ +% provides a command ~\vpagelineref~ to be used in place of +% ~\ref~. This produces, e.g., `34.15' when referring to line_15 +% on page_34 while the present page is not 34. You can customize +% the outcome, see the package file ~vplref.sty~ where the code +% and further details are. You may conceive of +% ~\vpagelineref~ as a certain customization of varioref's +% ~\vref~. +% +% This implies that option ~addpageno~ requires the files +% ~vplref.sty~ and ~varioref.sty~. ~addpageno~ automatically +% loads both of them. Yet you can also load ~varioref.sty~ +% on your own to use its package options. +% +% Of course, you might better introduce a shorter command name +% for ~\vpagelineref~ for your work, while we cannot predict +% here what shorthand will fit your work. E.g., % ~\newcommand{\lref}{\vpagelineref}~. -% -% If you really want to add the page number in \emph{any} case, -% use, e.g., some ~\myref~ instead of ~\ref~, after -% \[~newcommand*{\myref}{\pageref{#1}.\ref{#1}}~\] -% or what you like. You don't need the ~addpageno~ option in -% this case. -% -% ~addpageno~ is due to a suggestion by Sergei Mariev. - -\DeclareOption{addpageno}{% - \AtEndOfPackage{\RequirePackage{vplref}[2005/04/25]}} - -% \subsection{% -% \scs{linelabel} in math mode +% +% If you really want to add the page number in \emph{any} case, +% use, e.g., some ~\myref~ instead of ~\ref~, after +% \[~newcommand*{\myref}{\pageref{#1}.\ref{#1}}~\] +% or what you like. You don't need the ~addpageno~ option in +% this case. +% +% ~addpageno~ is due to a suggestion by Sergei Mariev. + +\DeclareOption{addpageno}{% + \AtEndOfPackage{\RequirePackage{vplref}[2005/04/25]}} + +% \subsection{% +% \scs{linelabel} in math mode % \unskip}\label{ss:MathRef} -% -% We have made some first steps towards allowing ~\linelabel~ in -% math mode. Because our code for this is presently experimental, -% we leave it to the user to decide for the experiment by calling -% option ~mathrefs~. We are in a hurry now and thus leave the -% code, explanations, and discussion in the separate package -% ~ednmath0.sty~. Maybe we later find the time to improve the -% code and move the relevant content of ~ednmath0.sty~ to here. -% The optimal situation would be to define ~\linelabel~ from -% the start so it works in math mode, omitting the ~mathrefs~ -% option. -% -% Actually, this package even provides adjustments for analogously -% allowing ~ednotes.sty~ commands in math mode. Loading the package -% is postponed to ~\AtBeginDocument~ when we know whether these -% adjustments are needed. - -\DeclareOption{mathrefs}{\AtBeginDocument - {\RequirePackage{ednmath0}[2004/08/20]}} - -% -% \subsection{% +% +% We have made some first steps towards allowing ~\linelabel~ in +% math mode. Because our code for this is presently experimental, +% we leave it to the user to decide for the experiment by calling +% option ~mathrefs~. We are in a hurry now and thus leave the +% code, explanations, and discussion in the separate package +% ~ednmath0.sty~. Maybe we later find the time to improve the +% code and move the relevant content of ~ednmath0.sty~ to here. +% The optimal situation would be to define ~\linelabel~ from +% the start so it works in math mode, omitting the ~mathrefs~ +% option. +% +% Actually, this package even provides adjustments for analogously +% allowing ~ednotes.sty~ commands in math mode. Loading the package +% is postponed to ~\AtBeginDocument~ when we know whether these +% adjustments are needed. + +\DeclareOption{mathrefs}{\AtBeginDocument + {\RequirePackage{ednmath0}[2004/08/20]}} + +% +% \subsection{% % Arrays, tabular environments (Revised v4.11) -% \unskip}\label{ss:Tab} -% +% \unskip}\label{ss:Tab} +% % This subsection explains and declares package options %% v4.31 % ~edtable~, ~longtable~, and ~nolongtablepatch~. % -% The standard \LaTeX\ tabular environments come as single -% boxes, so the ~lineno.sty~ versions before v4.00 treated them as -% (parts of) single lines, printing (at most) one line number -% beside each and stepping the line number counter once only. -% Moreover, ~\linelabel~s got lost. Of course, tables are -% usually so high that you will want to treat each row like a -% line. (Christian Tapp even desires that the lines of table -% entries belonging to a single row are treated like ordinary -% lines.) Footnotes get lost in such environments as well, which +% The standard \LaTeX\ tabular environments come as single +% boxes, so the ~lineno.sty~ versions before v4.00 treated them as +% (parts of) single lines, printing (at most) one line number +% beside each and stepping the line number counter once only. +% Moreover, ~\linelabel~s got lost. Of course, tables are +% usually so high that you will want to treat each row like a +% line. (Christian Tapp even desires that the lines of table +% entries belonging to a single row are treated like ordinary +% lines.) Footnotes get lost in such environments as well, which % was bad for ~ednotes.sty~. -% -% We provide adjustments to count lines, print their numbers -% etc.\ as desired at least for \emph{some} \LaTeX\ tabular -% environments. (Like with other details, ``some'' is to some -% extent explained in ~edtable.sty~.) We do this similarly as -% with option ~mathrefs~ before. We leave code -% and explanations in the separate package ~edtable.sty~. -% (For wizards: this package provides adjustments for -% ~ednotes.sty~ as well. However, in the present case we don't try -% to avoid them unless ~ednotes.sty~ is loaded.) -% Package option ~edtable~ -% defines---by loading ~edtable.sty~---an environment ~{edtable}~ -% which is able to change some \LaTeX\ tabular environments -% with the desired effects. (v4.11: ~edtable.sty~ v1.3 counts -% \LaTeX's ~{array}~ [etc.\@] as a ``tabular environment'' as -% well.) -% -% The ~{edtable}~ environment doesn't help with ~longtable.sty~, -% however. To make up for this, ~{longtable}~ is adjusted in a -% different way---and this happens only when another ~lineno.sty~ -% option ~longtable~ is called. In this case, option ~edtable~ -% needn't be called explicitly: option ~longtable~ works as if -% ~edtable~ had been called. -% -% Now, we are convinced that vertical spacing around -% ~{longtable}~ works wrongly---see \LaTeX\ bugs database -% tools/3180 and 3485, or see explanations in the package +% +% We provide adjustments to count lines, print their numbers +% etc.\ as desired at least for \emph{some} \LaTeX\ tabular +% environments. (Like with other details, ``some'' is to some +% extent explained in ~edtable.sty~.) We do this similarly as +% with option ~mathrefs~ before. We leave code +% and explanations in the separate package ~edtable.sty~. +% (For wizards: this package provides adjustments for +% ~ednotes.sty~ as well. However, in the present case we don't try +% to avoid them unless ~ednotes.sty~ is loaded.) +% Package option ~edtable~ +% defines---by loading ~edtable.sty~---an environment ~{edtable}~ +% which is able to change some \LaTeX\ tabular environments +% with the desired effects. (v4.11: ~edtable.sty~ v1.3 counts +% \LaTeX's ~{array}~ [etc.\@] as a ``tabular environment'' as +% well.) +% +% The ~{edtable}~ environment doesn't help with ~longtable.sty~, +% however. To make up for this, ~{longtable}~ is adjusted in a +% different way---and this happens only when another ~lineno.sty~ +% option ~longtable~ is called. In this case, option ~edtable~ +% needn't be called explicitly: option ~longtable~ works as if +% ~edtable~ had been called. +% +% Now, we are convinced that vertical spacing around +% ~{longtable}~ works wrongly---see \LaTeX\ bugs database +% tools/3180 and 3485, or see explanations in the package % ~ltabptch.sty~ (which is to be obtained from CTAN folder % \path{macros/latex/ltabptch}). Our conviction is so strong % that the ~longtable~ option loads---after ~longtable.sty~---the % patch package ~ltabptch.sty~. If the user doesn't want this -% (maybe preferring her own arrangement with the vertical -% spacing), she can forbid it by calling ~nolongtablepatch~. -% -% The following code just collects some choices, which are -% then executed in section_\ref{ss:ExOpt}. We use an ~\if...~ -% without ~\newif~ since ~\if...true~ and ~\if...false~ -% would occur at most two times and only within the present -% package. (~\AtEndOfClass{\RequirePackage{edtable}}~ -% could be used instead, I just overlooked this. Now I don't -% change it because it allows to change the version requirement +% (maybe preferring her own arrangement with the vertical +% spacing), she can forbid it by calling ~nolongtablepatch~. +% +% The following code just collects some choices, which are +% then executed in section_\ref{ss:ExOpt}. We use an ~\if...~ +% without ~\newif~ since ~\if...true~ and ~\if...false~ +% would occur at most two times and only within the present +% package. (~\AtEndOfClass{\RequirePackage{edtable}}~ +% could be used instead, I just overlooked this. Now I don't +% change it because it allows to change the version requirement % at one place only.) -\let\if@LN@edtable\iffalse +\let\if@LN@edtable\iffalse \DeclareOption{edtable}{\let\if@LN@edtable\iftrue} -\DeclareOption{longtable}{\let\if@LN@edtable\iftrue +\DeclareOption{longtable}{\let\if@LN@edtable\iftrue \PassOptionsToPackage{longtable}{edtable}} -\DeclareOption{nolongtablepatch}{% +\DeclareOption{nolongtablepatch}{% \PassOptionsToPackage{nolongtablepatch}{edtable}} -% (/New v4.1) -% -% \subsection{% -% Switch among settings +% (/New v4.1) +% +% \subsection{% +% Switch among settings % \unskip}\label{ss:v3opts} -% -% There is a bunch of package options that execute %% v4.2 -%% There is a bunch of package options, all of them executing -%% executing only user commands (see below). %% Cf. start of section. -% user commands only. +% +% There is a bunch of package options that execute %% v4.2 +%% There is a bunch of package options, all of them executing +%% executing only user commands (see below). %% Cf. start of section. +% user commands only. % % Options ~left~ (~right~) put the line numbers on the left % (right) margin. This works in all modes. ~left~ is the @@ -2445,9 +2447,9 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \switchlinenumbers*% \runningpagewiselinenumbers} -% In twocolumn mode, we can switch the line numbers to +% In twocolumn mode, we can switch the line numbers to % the outer margin, and/or start with number 1 in each -% column. Margin switching is covered by the ~switch~ +% column. Margin switching is covered by the ~switch~ % options. \DeclareOption{columnwise}{\setpagewiselinenumbers @@ -2464,7 +2466,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % come to rest. This allows the subtraction of the page % offset, getting the numbers starting with 1 on top of each % page, and margin switching in twoside formats becomes -% possible. The default mode is ~running~. +% possible. The default mode is ~running~. % % The order of declaration of the options is important here % ~pagewise~ must come after ~switch~, to overide running @@ -2482,12 +2484,12 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \DeclareOption{running}{\setrunninglinenumbers} % The option ~modulo~ causes only those linenumbers to be -% printed which are multiples of five. +% printed which are multiples of five. \DeclareOption{modulo}{\modulolinenumbers\relax} -% Option ~modulo*~ modifies ~modulo~ in working like -% ~\modulolinenumbers*~---see section_\ref{s:UserCmds}. +% Option ~modulo*~ modifies ~modulo~ in working like +% ~\modulolinenumbers*~---see section_\ref{s:UserCmds}. \DeclareOption{modulo*}{\modulolinenumbers*\relax} @@ -2501,124 +2503,124 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \DeclareOption{mathlines}{\linenumberdisplaymath} -% ~displaymath~ now calls for wrappers of the standard -% \LaTeX\ display math environment. This was previously +% ~displaymath~ now calls for wrappers of the standard +% \LaTeX\ display math environment. This was previously % done by ~mlineno.sty~. -% -% (New v4.3) Option `displaymath' becomes default according -% to Erik \mbox{Luijten}'s suggestion. I was finally convinced -% of this as soon as I discovered how to avoid a spurious line -% number above ~\begin{linenomath}~ (subsection_\ref{ss:DM}). -% ~\endlinenomath~ provides ~\ignorespaces~, so what could go -% wrong now? +% +% (New v4.3) Option `displaymath' becomes default according +% to Erik \mbox{Luijten}'s suggestion. I was finally convinced +% of this as soon as I discovered how to avoid a spurious line +% number above ~\begin{linenomath}~ (subsection_\ref{ss:DM}). +% ~\endlinenomath~ provides ~\ignorespaces~, so what could go +% wrong now? \DeclareOption{displaymath}{\PackageWarningNoLine{lineno}{% - Option [displaymath] is obsolete -- default now!}} -%% + Option [displaymath] is obsolete -- default now!}} +%% %%\let\do@mlineno\relax %%\DeclareOption{displaymath}{\let\do@mlineno\@empty} -% (/New v4.3) -% +% (/New v4.3) +% % \subsection{% -% Compatibility with \texttt{hyperref} %% own subsec. v4.3. +% Compatibility with \texttt{hyperref} %% own subsec. v4.3. % \unskip} -% The ~hyperref~ package, via ~nameref~, requires three more -% groups in the second argment of a ~\newlabel~. Well, why +% The ~hyperref~ package, via ~nameref~, requires three more +% groups in the second argment of a ~\newlabel~. Well, why % shouldn't it get them? (New v3.07) The presence of the % ~nameref~ package is now detected automatically % ~\AtBeginDocument~. (/New v3.07) (Fixed in v3.09) We try % to be smart, and test ~\AtBeginDocument~ if the ~nameref~ % package is loaded, but ~hyperref~ postpones the loading of % ~nameref~ too, so this is all in vain. -% -% (New v4.3) But we can also test at the first ~\linelabel~. -% Regarding the error-message for misplaced ~\linelabel~ from v4.11: -% previously, ~\linenumbers~ rendered ~\linelabel~ the genuine -% version of ~\linelabel~ from the start on. This doesn't work -% now, since ~\@LN@linelabel~ may change its meaning after the -% first ~\linenumbers~ and before a next one (if there is some). -% (/New v4.3) +% +% (New v4.3) But we can also test at the first ~\linelabel~. +% Regarding the error-message for misplaced ~\linelabel~ from v4.11: +% previously, ~\linenumbers~ rendered ~\linelabel~ the genuine +% version of ~\linelabel~ from the start on. This doesn't work +% now, since ~\@LN@linelabel~ may change its meaning after the +% first ~\linenumbers~ and before a next one (if there is some). +% (/New v4.3) \DeclareOption{hyperref}{\PackageWarningNoLine{lineno}{% - Option [hyperref] is obsolete. + Option [hyperref] is obsolete. \MessageBreak The hyperref package is detected automatically.}} -\AtBeginDocument{% +\AtBeginDocument{% \@ifpackageloaded{nameref}{% -%% -% (New v4.3) ``Global'' is merely ``symbolic'' ~\AtBeginDoc...~. -% If ~nameref~ is not detected here, the next ~\@LN@linelabel~ -% will do almost the same, then globally indeed. %% - \gdef\@LN@ExtraLabelItems{{}{}{}}% +% (New v4.3) ``Global'' is merely ``symbolic'' ~\AtBeginDoc...~. +% If ~nameref~ is not detected here, the next ~\@LN@linelabel~ +% will do almost the same, then globally indeed. +%% + \gdef\@LN@ExtraLabelItems{{}{}{}}% }{% - \global\let\@LN@@linelabel\@LN@linelabel - \gdef\@LN@linelabel{% -%% -% ~\@ifpackageloaded~ is ``preamble only'', its---very -% internal---preamble definition is replicated here: -%% - \expandafter - \ifx\csname ver@nameref.sty\endcsname\relax \else - \gdef\@LN@ExtraLabelItems{{}{}{}}% - \fi -%% -% Now aim at the ``usual'' behaviour: -%% - \global\let\@LN@linelabel\@LN@@linelabel - \global\let\@LN@@linelabel\relax + \global\let\@LN@@linelabel\@LN@linelabel + \gdef\@LN@linelabel{% +%% +% ~\@ifpackageloaded~ is ``preamble only'', its---very +% internal---preamble definition is replicated here: +%% + \expandafter + \ifx\csname ver@nameref.sty\endcsname\relax \else + \gdef\@LN@ExtraLabelItems{{}{}{}}% + \fi +%% +% Now aim at the ``usual'' behaviour: +%% + \global\let\@LN@linelabel\@LN@@linelabel + \global\let\@LN@@linelabel\relax \@LN@linelabel - }% + }% }% -} - -% (/New v4.3) -% -% (New v4.1) -% \subsection{% -% A note on calling so many options -% \unskip} -% -% The number of package options may stimulate worrying about how to -% \emph{enter} all the options that one would like to use---they may -% not fit into one line. Fortunately, you can safely break code lines +} + +% (/New v4.3) +% +% (New v4.1) +% \subsection{% +% A note on calling so many options +% \unskip} +% +% The number of package options may stimulate worrying about how to +% \emph{enter} all the options that one would like to use---they may +% not fit into one line. Fortunately, you can safely break code lines % after the commas separating the option names in the ~\usepackage~ -% command (no comment marks needed). -% -% \subsection{% +% command (no comment marks needed). +% +% \subsection{% % Execute options % \unskip}\label{ss:ExOpt} -% -% We stop declaring options and execute the ones that are +% +% We stop declaring options and execute the ones that are % called by the user. (/New v4.1) \ProcessOptions -% (New v4.1) Now we know whether ~edtable.sty~ is wanted -% and (if it is) with which options it is to be called. +% (New v4.1) Now we know whether ~edtable.sty~ is wanted +% and (if it is) with which options it is to be called. -\if@LN@edtable \RequirePackage{edtable}[2005/03/07] \fi +\if@LN@edtable \RequirePackage{edtable}[2005/03/07] \fi -% (/New v4.1) -% +% (/New v4.1) +% % \section{% -% Former package extensions +% Former package extensions % \label{s:Xt}\unskip} % -% The extensions in this section were previously supplied -% in separate ~.sty~ files. +% The extensions in this section were previously supplied +% in separate ~.sty~ files. % % \subsection{% % $display math$ % \unskip}\label{ss:display} -%% (New v4.32) -% (New v4.3) From now on, you no longer need to type -% the ~{linenomath}~ environment with the ~\[~, ~{equation}~, -% and ~{eqnarray}~ environments---and you no longer need to -% use the former package option ~displaymath~ for this feature. -% (/New v4.3) -%% (/New v4.32) -% +%% (New v4.32) +% (New v4.3) From now on, you no longer need to type +% the ~{linenomath}~ environment with the ~\[~, ~{equation}~, +% and ~{eqnarray}~ environments---and you no longer need to +% use the former package option ~displaymath~ for this feature. +% (/New v4.3) +%% (/New v4.32) +% % The standard \LaTeX\ display math environments are % wrapped in a ~{linenomath}~ environment. % @@ -2632,20 +2634,20 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % (New 3.05a) for ~{eqnarray}~s we rather keep the % old trick. (/New 3.05a) % -% (New 3.08) Wrap ~\[~ and ~\]~ into ~{linenomath}~, +% (New 3.08) Wrap ~\[~ and ~\]~ into ~{linenomath}~, % instead of ~{displaymath}~. Also save the definition -% of ~\equation~, instead of replicating the current +% of ~\equation~, instead of replicating the current % \LaTeX\ definition. (/New 3.08) %%\ifx\do@mlineno\@empty \@ifundefined{mathindent}{ -%% \AtBeginDocument{% +%% \AtBeginDocument{% \let\LN@displaymath\[% \let\LN@enddisplaymath\]% \renewcommand\[{\begin{linenomath}\LN@displaymath}% \renewcommand\]{\LN@enddisplaymath\end{linenomath}}% -% +% \let\LN@equation\equation \let\LN@endequation\endequation \renewenvironment{equation}% @@ -2653,7 +2655,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. {\LN@endequation\endlinenomath}% %% } - }{}% \@ifundefined{mathindent} -- 3rd arg v4.2, was \par! + }{}% \@ifundefined{mathindent} -- 3rd arg v4.2, was \par! %%\AtBeginDocument{% \let\LN@eqnarray\eqnarray @@ -2662,41 +2664,41 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. {\linenomath\LN@eqnarray}% {\LN@endeqnarray\endlinenomath}% %%} - + %%\fi -% (UL) Indeed. The \LaTeX\ macros are saved for -% unnumbered mode, which is detected by ~\linenomath~. -% (/UL) +% (UL) Indeed. The \LaTeX\ macros are saved for +% unnumbered mode, which is detected by ~\linenomath~. +% (/UL) % % \subsection{% % Line numbers in internal vertical mode % \unskip}\label{ss:ILN} % -% The command ~\internallinenumbers~ adds line numbers in +% The command ~\internallinenumbers~ adds line numbers in % internal vertical mode, but with limitations: we assume % fixed baseline skip. % -% (v4.22) v3.10 provided a global (~\global\advance~) -% as well as a local version (star-form, using -% ~\c@internallinenumber~). ~\resetlinenumbers~ acted -% locally and was here used with the global version---save -% stack danger, \TeX book p._301---in v4.00 I -% disabled the global version therefore. Now I find that -% it is better to keep a global version, and the now global -% ~\resetlinenumbers~ is perfect for this. The global version -% allows continuing the ``internal'' numbers in the ensuing -% ``external'' text, and---unless reset by brackets -% argument---continuing the above series of line numbers. -% As with v3.10, the local version always starts with -% line number one. A new ~\@LN@iglobal~ steps ~\global~ly -% in the global version, otherwise it is ~\relax~. -% (I also remove all my stupid discussions as of v4.00. +% (v4.22) v3.10 provided a global (~\global\advance~) +% as well as a local version (star-form, using +% ~\c@internallinenumber~). ~\resetlinenumbers~ acted +% locally and was here used with the global version---save +% stack danger, \TeX book p._301---in v4.00 I +% disabled the global version therefore. Now I find that +% it is better to keep a global version, and the now global +% ~\resetlinenumbers~ is perfect for this. The global version +% allows continuing the ``internal'' numbers in the ensuing +% ``external'' text, and---unless reset by brackets +% argument---continuing the above series of line numbers. +% As with v3.10, the local version always starts with +% line number one. A new ~\@LN@iglobal~ steps ~\global~ly +% in the global version, otherwise it is ~\relax~. +% (I also remove all my stupid discussions as of v4.00. % And I use ~\newcommand~.) (v4.22) -\let\@LN@iglobal\global % v4.22 +\let\@LN@iglobal\global % v4.22 -\newcommand\internallinenumbers{\setrunninglinenumbers +\newcommand\internallinenumbers{\setrunninglinenumbers \let\@@par\internallinenumberpar \ifx\@par\@@@par\let\@par\internallinenumberpar\fi \ifx\par\@@@par\let\par\internallinenumberpar\fi @@ -2715,7 +2717,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \newcount\c@internallinenumber \newcount\c@internallinenumbers -\newcommand\internallinenumberpar{% +\newcommand\internallinenumberpar{% \ifvmode\@@@par\else\ifinner\@@@par\else\@@@par \begingroup \c@internallinenumbers\prevgraf @@ -2724,21 +2726,21 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \ht\@tempboxa\z@ \nobreak\vskip-\prevdepth \nointerlineskip\box\@tempboxa - \endgroup + \endgroup \fi\fi } -\newcommand\makeinternalLinenumbers{% +\newcommand\makeinternalLinenumbers{% \ifnum\c@internallinenumbers>\z@ % v4.2 - \hb@xt@\z@{\makeLineNumber}% - \@LN@iglobal % v4.22 + \hb@xt@\z@{\makeLineNumber}% + \@LN@iglobal % v4.22 \advance\c@linenumber\@ne \advance\c@internallinenumbers\m@ne \expandafter\makeinternalLinenumbers\fi } % TODO v4.4+: star: line numbers right!? cf. lnocapt.sty -% +% % \subsection{% % Line number references with offset % \unskip} @@ -2788,8 +2790,8 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \newcommand*\@linerefadd[2]{\c@linenumber=#1\@@linerefadd\relax \thelinenumber} -%% TODO v4.4+: Insert `LN' in internal command names? -% +%% TODO v4.4+: Insert `LN' in internal command names? +% % \subsection{% % Numbered quotation environments % \unskip} @@ -2797,14 +2799,14 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % The ~{numquote}~ and ~{numquotation}~ % environments are like ~{quote}~ and % ~{quotation}~, except there will be line -% numbers. -% +% numbers. +% % An optional argument gives the number to count % from. A star ~*~ (inside or outside the closing % ~}~) prevent the reset of the line numbers. % Default is to count from one. -% -% (v4.22: A local version using ~\c@internallinenumber~ +% +% (v4.22: A local version using ~\c@internallinenumber~ % might be useful, see subsection_\ref{ss:ILN}.) %% TODO v4.4+ \newcommand\quotelinenumbers @@ -2827,7 +2829,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \newenvironment{numquote*} {\quote\numquotelist*}{\endquote} \newenvironment{numquotation*}{\quotation\numquotelist*}{\endquotation} -% +% % \subsection{% % Frame around a paragraph % \unskip} @@ -2877,238 +2879,294 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \bframesep=\fboxsep \newbox\bframebox - -% -% + +% +% \subsection{% +% \textsf{amsmath} patches +% \unskip}\label{ss:AMSMath} +% +% (New v5.0) Patches ~amsmath~ to work with ~lineno~. These patches used to be +% supplied by the ~linenoamsmath~ package. See ~linenoamsmathdemo.pdf~ for a +% demonstration. +% + +\RequirePackage{etoolbox} + +\newcommand*\linenoamsmath@patch[1]{% + \cspreto{#1}{\linenomath}% + \cspreto{#1*}{\linenomath}% + \csappto{end#1}{\endlinenomath}% + \csappto{end#1*}{\endlinenomath}% +} +\newcount\linenoamsmath@ams@eqpen +\cspreto{math@cr@}{\global\@eqpen\numexpr\@eqpen+\linenoamsmath@ams@eqpen\relax} +\newcommand*\linenoamsmath@patch@ams[1]{% + \cspreto{#1}{% + \linenomath% + \postdisplaypenalty=0% + \global\linenoamsmath@ams@eqpen\interdisplaylinepenalty% + }% + \cspreto{#1*}{% + \linenomath% + \postdisplaypenalty=0% + \global\linenoamsmath@ams@eqpen\interdisplaylinepenalty% + }% + \csappto{end#1}{% + \global\linenoamsmath@ams@eqpen\z@% + \endlinenomath% + }% + \csappto{end#1*}{% + \global\linenoamsmath@ams@eqpen\z@% + \endlinenomath% + }% +} +\linenoamsmath@patch{equation} +\linenoamsmath@patch@ams{multline} +\linenoamsmath@patch@ams{gather} +\linenoamsmath@patch@ams{align} +\linenoamsmath@patch@ams{alignat} +\linenoamsmath@patch@ams{flalign} +\let\linenoamsmath@ams@mmeasure\mmeasure@ +\def\mmeasure@#1{% + \global\linenoamsmath@ams@eqpen\z@% + \begingroup% + \interdisplaylinepenalty=0% + \linenoamsmath@ams@mmeasure{#1\\}% + \endgroup% + \global\linenoamsmath@ams@eqpen\interdisplaylinepenalty% +} + +% +% % \section{% % Move \scs{vadjust} items (New v4.00) -% \unskip}\label{s:MVadj} -% -% This section completes reviving ~\pagebreak~, ~\nopagebreak~, -% ~\vspace~, and the star and optional form of ~\\~. This was -% started in section_\ref{ss:output} and resumed in +% \unskip}\label{s:MVadj} +% +% This section completes reviving ~\pagebreak~, ~\nopagebreak~, +% ~\vspace~, and the star and optional form of ~\\~. This was +% started in section_\ref{ss:output} and resumed in % section_\ref{ss:MLN} and subsection_\ref{ss:calls}. -% The problem was explained in section_\ref{ss:output}: -% ~\vadjust~ items come out at a bad position, and the -% \LaTeX\ commands named before work with ~\vadjust~ indeed. -% Our solution was sketched there as well. -% +% The problem was explained in section_\ref{ss:output}: +% ~\vadjust~ items come out at a bad position, and the +% \LaTeX\ commands named before work with ~\vadjust~ indeed. +% Our solution was sketched there as well. +% % According to the caveat in subsection_\ref{ss:OnOff} concerning -% ~\ifLineNumbers~, the \LaTeX\ commands enumerated may go -% wrong if you switch line numbering inside or at the end of -% a paragraph. +% ~\ifLineNumbers~, the \LaTeX\ commands enumerated may go +% wrong if you switch line numbering inside or at the end of +% a paragraph. %% %% TODO v4.4+ -% +% % \subsection{% % Redefining \scs{vadjust} % \unskip}\label{ss:PVadj} -% -% ~\vadjust~ will temporarily be changed into the following -% command. - -\def\PostponeVadjust#1{% - \global\let\vadjust\@LN@@vadjust -%% -% This undoes a ~\global\let\vadjust\PostponeVadjust~ which will -% start each of the refined \LaTeX\ commands. The ~\global~s -% are most probably superfluous. They might be useful should one -% ~\vadjust~ appear in a group starting after the change of -% ~\vadjust~ into ~\PostponeVadjust~. -% (UL) Even the undoing may be superfluous, cf._discussion -% in section_\ref{ss:ReDef} below. (UL) -%% - \vadjust{\penalty-\@Mppvacodepen}% - \g@addto@macro\@LN@vadjustlist{#1\@lt}% +% +% ~\vadjust~ will temporarily be changed into the following +% command. + +\def\PostponeVadjust#1{% + \global\let\vadjust\@LN@@vadjust +%% +% This undoes a ~\global\let\vadjust\PostponeVadjust~ which will +% start each of the refined \LaTeX\ commands. The ~\global~s +% are most probably superfluous. They might be useful should one +% ~\vadjust~ appear in a group starting after the change of +% ~\vadjust~ into ~\PostponeVadjust~. +% (UL) Even the undoing may be superfluous, cf._discussion +% in section_\ref{ss:ReDef} below. (UL) +%% + \vadjust{\penalty-\@Mppvacodepen}% + \g@addto@macro\@LN@vadjustlist{#1\@lt}% } -\let\@LN@@vadjust\vadjust -\global\let\@LN@vadjustlist\@empty -\global\let\@LN@do@vadjusts\relax - -% These ~\global~s are just to remind that -% all the changes of the strings after ~\let~ should be -% ~\global~ (\TeX book p._301). ~\@LN@vadjustlist~ collects -% the ~\vadjust~ items of a paragraph. ~\PassVadjustList~ -% tears one ~\vadjust~ item for the current line out of -% ~\@LN@vadjustlist~ and puts it into ~\@LN@do@vadjusts~. -% The latter is encountered each line in ~\MakeLineNo~ -% (section_\ref{ss:MLN}), while those \LaTeX\ ~\vadjust~ -% commands will come rather rarely. So I decided that -% ~\@LN@do@vadjust~ is ~\relax~ until a ~\vadjust~ item -% is waiting. In the latter case, ~\@LN@do@vadjusts~ -% is turned into a list macro which resets itself to -% ~\relax~ when the other contents have been placed in -% the vertical list.---~\PassVadjustList~ is invoked by -% the output routine (section_\ref{ss:output}), so the -% ~\box255~ must be put back. - -\def\PassVadjustList{% - \unvbox\@cclv - \expandafter \@LN@xnext \@LN@vadjustlist \@@ - \@tempa \@LN@vadjustlist - \ifx\@LN@do@vadjusts\relax - \gdef\@LN@do@vadjusts{\global\let\@LN@do@vadjusts\relax}% - \fi - \expandafter \g@addto@macro \expandafter \@LN@do@vadjusts - \expandafter {\@tempa}% -} - -% +\let\@LN@@vadjust\vadjust +\global\let\@LN@vadjustlist\@empty +\global\let\@LN@do@vadjusts\relax + +% These ~\global~s are just to remind that +% all the changes of the strings after ~\let~ should be +% ~\global~ (\TeX book p._301). ~\@LN@vadjustlist~ collects +% the ~\vadjust~ items of a paragraph. ~\PassVadjustList~ +% tears one ~\vadjust~ item for the current line out of +% ~\@LN@vadjustlist~ and puts it into ~\@LN@do@vadjusts~. +% The latter is encountered each line in ~\MakeLineNo~ +% (section_\ref{ss:MLN}), while those \LaTeX\ ~\vadjust~ +% commands will come rather rarely. So I decided that +% ~\@LN@do@vadjust~ is ~\relax~ until a ~\vadjust~ item +% is waiting. In the latter case, ~\@LN@do@vadjusts~ +% is turned into a list macro which resets itself to +% ~\relax~ when the other contents have been placed in +% the vertical list.---~\PassVadjustList~ is invoked by +% the output routine (section_\ref{ss:output}), so the +% ~\box255~ must be put back. + +\def\PassVadjustList{% + \unvbox\@cclv + \expandafter \@LN@xnext \@LN@vadjustlist \@@ + \@tempa \@LN@vadjustlist + \ifx\@LN@do@vadjusts\relax + \gdef\@LN@do@vadjusts{\global\let\@LN@do@vadjusts\relax}% + \fi + \expandafter \g@addto@macro \expandafter \@LN@do@vadjusts + \expandafter {\@tempa}% +} + +% % \subsection{% -% Redefining the \LaTeX\ commands +% Redefining the \LaTeX\ commands % \unskip}\label{ss:ReDef} -% -% Now we change ~\pagebreak~ etc.\ -% so that they use ~\PostponeVadjust~ in place of ~\vadjust~. -% We try to do this as independently as possible of the -% implementation of the \LaTeX\ commands to be redefined. -% Therefore, we don't just copy macro definition code from any -% single implementation (say, latest \LaTeX) and insert our -% changes, but attach a conditional -% ~\global\let\vadjust\PostponeVadjust~ -% to their left ends in a way which should work rather -% independantly of their actual code. -% However, ~\vadjust~ should be the primitive again after -% execution of the command. So the ~\global\let...~ may be used -% only if it's guaranteed that a ~\vadjust~ is near.---(UL) -% Sure? In line numbering mode, probably each ~\vadjust~ -% coming from a \LaTeX\ command should be ~\PostponeVadjust~. -% ~\marginpar~s and floats seem to be the only cases which -% are not explicitly dealt with in the present section. -% This would be a way to avoid ~\@LN@nobreaktrue~! -% Of course, the ~\vadjust~s that the present package uses -% then must be replaced by ~\@LN@@vadjust~.---Maybe -% next time. (/UL) -%% %% TODO v4.4+ -% -% The next command and something else will be added to the -% \LaTeX\ commands we are concerned with here. - -\DeclareRobustCommand\@LN@changevadjust{% - \ifvmode\else\ifinner\else - \global\let\vadjust\PostponeVadjust - \fi\fi -} - -% (UL) What about math mode? Math display? Warn? (/UL) +% +% Now we change ~\pagebreak~ etc.\ +% so that they use ~\PostponeVadjust~ in place of ~\vadjust~. +% We try to do this as independently as possible of the +% implementation of the \LaTeX\ commands to be redefined. +% Therefore, we don't just copy macro definition code from any +% single implementation (say, latest \LaTeX) and insert our +% changes, but attach a conditional +% ~\global\let\vadjust\PostponeVadjust~ +% to their left ends in a way which should work rather +% independantly of their actual code. +% However, ~\vadjust~ should be the primitive again after +% execution of the command. So the ~\global\let...~ may be used +% only if it's guaranteed that a ~\vadjust~ is near.---(UL) +% Sure? In line numbering mode, probably each ~\vadjust~ +% coming from a \LaTeX\ command should be ~\PostponeVadjust~. +% ~\marginpar~s and floats seem to be the only cases which +% are not explicitly dealt with in the present section. +% This would be a way to avoid ~\@LN@nobreaktrue~! +% Of course, the ~\vadjust~s that the present package uses +% then must be replaced by ~\@LN@@vadjust~.---Maybe +% next time. (/UL) %% %% TODO v4.4+ -% -% ~\@tempa~ will now become a two place macro which adds first +% +% The next command and something else will be added to the +% \LaTeX\ commands we are concerned with here. + +\DeclareRobustCommand\@LN@changevadjust{% + \ifvmode\else\ifinner\else + \global\let\vadjust\PostponeVadjust + \fi\fi +} + +% (UL) What about math mode? Math display? Warn? (/UL) +%% %% TODO v4.4+ +% +% ~\@tempa~ will now become a two place macro which adds first % argument (single token), enclosed by ~\ifLineNumbers~\,\dots -% ~\fi~ to the left of second argument. As long as we need it, -% we can't use the star form of ~\DeclareRobustCommand~ or -% the like, because AMS-\LaTeX\ uses ~\@tempa~ for ~\@ifstar~. -% (New v4.41) And for the same reason, that ~\CheckCommand*~ +% ~\fi~ to the left of second argument. As long as we need it, +% we can't use the star form of ~\DeclareRobustCommand~ or +% the like, because AMS-\LaTeX\ uses ~\@tempa~ for ~\@ifstar~. +% (New v4.41) And for the same reason, that ~\CheckCommand*~ % had to be raised! (/New v4.41) \CheckCommand*\@parboxrestore{\@arrayparboxrestore\let\\\@normalcr} -\def\@tempa#1#2{% +\def\@tempa#1#2{% \expandafter \def \expandafter#2\expandafter{\expandafter - \ifLineNumbers\expandafter#1\expandafter\fi#2}% -} - -% (UL) This ~\ifLineNumber~ can be fooled by -% ~\linenumbers~ ahead etc. It might be better to place -% a signal penalty in any case and let the output routine -% decide what to do. -%% -%% And when this has been done, remove warnings about this. -% (/UL) -% -% We use the occasion to switch off linenumbers where they -% don't work anyway and where we don't want them, -% especially in footnotes: - -\@tempa\nolinenumbers\@arrayparboxrestore - -% We hope this suffices $\dots$ let's check one thing + \ifLineNumbers\expandafter#1\expandafter\fi#2}% +} + +% (UL) This ~\ifLineNumber~ can be fooled by +% ~\linenumbers~ ahead etc. It might be better to place +% a signal penalty in any case and let the output routine +% decide what to do. +%% +%% And when this has been done, remove warnings about this. +% (/UL) +% +% We use the occasion to switch off linenumbers where they +% don't work anyway and where we don't want them, +% especially in footnotes: + +\@tempa\nolinenumbers\@arrayparboxrestore + +% We hope this suffices $\dots$ let's check one thing % at least: [(New v4.41) see ~\CheckCommand~ above (/New v4.41)] -% -% Now for the main theme of the section. -% The next lines assume that ~\vspace~, ~\pagebreak~, and -% ~\nopagebreak~ use ~\vadjust~ whenever they occur outside -% vertical mode; moreover, that they don't directly read -% an argument. Indeed ~\pagebreak~ and ~\nopagebreak~ first -% call something which tests for a left bracket ahead, -% while ~\vspace~ first tests for a star. - -\@tempa\@LN@changevadjust\vspace -\@tempa\@LN@changevadjust\pagebreak -\@tempa\@LN@changevadjust\nopagebreak - -% ~\\~, however, uses ~\vadjust~ only in star or optional form. -% We relax independency of implementation in assuming -% that ~\@normalcr~ is the fragile version of ~\\~ -% (and we use ~\@ifstar~!). -%% -%% \@ifstar reimplemented 1995/10/16, but seems to be much older. -%% TODO v4.4+: -%% \def\@LN@cr{% -%% \@ifnextchar*{\@LN@changevadjust\@normalcr}% -%% {\@ifnextchar[{\@LN@changevadjust\@normalcr}\@normalcr}% -%% } -%% ---same number of tokens, expansion step less. -%% -% (Using a copy of ~\\~ would be safer, but an ugly repetition -% of ~\protect~.) -%% %% TODO v4.4+ - -\DeclareRobustCommand\\{% - \ifLineNumbers - \expandafter \@LN@cr - \else - \expandafter \@normalcr - \fi -} -\def\@LN@cr{% - \@ifstar{\@LN@changevadjust\@normalcr*}% - {\@ifnextchar[{\@LN@changevadjust\@normalcr}\@normalcr}% -} - -% Moreover we hope that ~\newline~ never leads to a ~\vadjust~, -% although names of some commands invoked by ~\\~ contain -% ~newline~. At last, this seems to have been OK since 1989 or -% even earlier. -% +% +% Now for the main theme of the section. +% The next lines assume that ~\vspace~, ~\pagebreak~, and +% ~\nopagebreak~ use ~\vadjust~ whenever they occur outside +% vertical mode; moreover, that they don't directly read +% an argument. Indeed ~\pagebreak~ and ~\nopagebreak~ first +% call something which tests for a left bracket ahead, +% while ~\vspace~ first tests for a star. + +\@tempa\@LN@changevadjust\vspace +\@tempa\@LN@changevadjust\pagebreak +\@tempa\@LN@changevadjust\nopagebreak + +% ~\\~, however, uses ~\vadjust~ only in star or optional form. +% We relax independency of implementation in assuming +% that ~\@normalcr~ is the fragile version of ~\\~ +% (and we use ~\@ifstar~!). +%% +%% \@ifstar reimplemented 1995/10/16, but seems to be much older. +%% TODO v4.4+: +%% \def\@LN@cr{% +%% \@ifnextchar*{\@LN@changevadjust\@normalcr}% +%% {\@ifnextchar[{\@LN@changevadjust\@normalcr}\@normalcr}% +%% } +%% ---same number of tokens, expansion step less. +%% +% (Using a copy of ~\\~ would be safer, but an ugly repetition +% of ~\protect~.) +%% %% TODO v4.4+ + +\DeclareRobustCommand\\{% + \ifLineNumbers + \expandafter \@LN@cr + \else + \expandafter \@normalcr + \fi +} +\def\@LN@cr{% + \@ifstar{\@LN@changevadjust\@normalcr*}% + {\@ifnextchar[{\@LN@changevadjust\@normalcr}\@normalcr}% +} + +% Moreover we hope that ~\newline~ never leads to a ~\vadjust~, +% although names of some commands invoked by ~\\~ contain +% ~newline~. At last, this seems to have been OK since 1989 or +% even earlier. +% % \modulolinenumbers[1] -% \firstlinenumber{0} -% Let's have a few tests.\vspace*{.5\baselineskip} -% Testing ~\pagebreak~ and ~\nopagebreak~ would be too expensive -% here, but---oops!---we have just experienced a successful -% ~\vspace*{.5\baselineskip}~. A -% ~\\*[.5\baselineskip]~\\*[.5\baselineskip] may look even more -% drastical, but this time we are happy about it. Note that the -% line numbers have moved with the lines. Without our changes, -% one line number\vadjust{\kern.5\baselineskip} would have -% ``anticipated'' the move of the next line, just as you can -% observe it now. -% (/New v4.00) -% -% \switchlinenumbers -% -% \subsection{% -% Reminder on obsoleteness -% \unskip} -% -% (New v4.1) We have completed inclusion of the earlier -% extension packages ~linenox0.sty~, ~linenox1.sty~, and -% ~lnopatch.sty~. If one of them is loaded, though, -% we produce an error message before something weird happens. -% We avoid ~\newif~ because the switchings occur so rarely. - -\AtBeginDocument{% - \let\if@LN@obsolete\iffalse - \@ifpackageloaded{linenox0}{\let\if@LN@obsolete\iftrue}\relax - \@ifpackageloaded{linenox1}{\let\if@LN@obsolete\iftrue}\relax +% \firstlinenumber{0} +% Let's have a few tests.\vspace*{.5\baselineskip} +% Testing ~\pagebreak~ and ~\nopagebreak~ would be too expensive +% here, but---oops!---we have just experienced a successful +% ~\vspace*{.5\baselineskip}~. A +% ~\\*[.5\baselineskip]~\\*[.5\baselineskip] may look even more +% drastical, but this time we are happy about it. Note that the +% line numbers have moved with the lines. Without our changes, +% one line number\vadjust{\kern.5\baselineskip} would have +% ``anticipated'' the move of the next line, just as you can +% observe it now. +% (/New v4.00) +% +% \switchlinenumbers +% +% \subsection{% +% Reminder on obsoleteness +% \unskip} +% +% (New v4.1) We have completed inclusion of the earlier +% extension packages ~linenox0.sty~, ~linenox1.sty~, and +% ~lnopatch.sty~. If one of them is loaded, though, +% we produce an error message before something weird happens. +% We avoid ~\newif~ because the switchings occur so rarely. + +\AtBeginDocument{% + \let\if@LN@obsolete\iffalse + \@ifpackageloaded{linenox0}{\let\if@LN@obsolete\iftrue}\relax + \@ifpackageloaded{linenox1}{\let\if@LN@obsolete\iftrue}\relax \@ifpackageloaded{lnopatch}{\let\if@LN@obsolete\iftrue}\relax - \if@LN@obsolete - \PackageError{lineno}{Obsolete extension package(s)}{% - With lineno.sty version 4.00 or later,\MessageBreak - linenox0/linenox1/lnopatch.sty must no longer be loaded.}% - \fi -} - -% + \if@LN@obsolete + \PackageError{lineno}{Obsolete extension package(s)}{% + With lineno.sty version 4.00 or later,\MessageBreak + linenox0/linenox1/lnopatch.sty must no longer be loaded.}% + \fi +} + +% % \modulolinenumbers[1] % \section{% % The final touch @@ -3120,24 +3178,24 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \endinput -% +% % \section{% % The user commands -% \unskip}\label{s:UserCmds} -% -% The user commands to turn on and off line numbering -% are +% \unskip}\label{s:UserCmds} +% +% The user commands to turn on and off line numbering +% are % \begin{description}\item % [|\linenumbers] \ \par % Turn on line numbering in the current mode. % -% \item +% \item % [|\linenumbers*] \ \par$\qquad$ % and reset the line number to 1. -% \def\NL{<number>]}\item -%% %% Boldface italic occurs here, which is evil. (UL) +% \def\NL{<number>]}\item +%% %% Boldface italic occurs here, which is evil. (UL) % [|\linenumbers[\NL] \ \par$\qquad$ -% and start with <number>. +% and start with <number>. % \item % [|\nolinenumbers] \ \par % Turn off line numbering. @@ -3176,7 +3234,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % [|\rightlinenumbers*] \ \par % Set the line numbers in the left/right margin. With the % star this works for both modes of operation, without -% the star only for the currently selected mode. +% the star only for the currently selected mode. % \item % [|\runningpagewiselinenumbers] \ \par % When using the pagewise line number mode, do not @@ -3196,44 +3254,44 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % retained. <number>=1 turns this off without changing % ~linenumbermodulo~. The counter is initialized to 5. %% -%% %% TODO v4.4+: `counter', he says. Cf._above. +%% %% TODO v4.4+: `counter', he says. Cf._above. %% -%% (New v4.31) +%% (New v4.31) % \item -% [|\modulolinenumbers*[\NL] \ \par -% Like ~\modulolinenumbers~, the only difference being -% that the first line number after a ~\linenumbers~ -% (or ~\runninglinenumbers~, ~\pagewiselinenumbers~, -% ~\quotelinenumbers~) is printed regardless of the -% modulo---yet `1' is printed only after (or \dots) -% ~\firstlinenumber{1}~. -% This also applies to the first line of a -% ~{linenumbers}~ or respective environment. -% See subsection_\ref{ss:Mod} for another explanation. -% The behaviour may be unsatisfactory with pagewise -% line-numbering. -%% (/New v4.31) +% [|\modulolinenumbers*[\NL] \ \par +% Like ~\modulolinenumbers~, the only difference being +% that the first line number after a ~\linenumbers~ +% (or ~\runninglinenumbers~, ~\pagewiselinenumbers~, +% ~\quotelinenumbers~) is printed regardless of the +% modulo---yet `1' is printed only after (or \dots) +% ~\firstlinenumber{1}~. +% This also applies to the first line of a +% ~{linenumbers}~ or respective environment. +% See subsection_\ref{ss:Mod} for another explanation. +% The behaviour may be unsatisfactory with pagewise +% line-numbering. +%% (/New v4.31) %% (New v4.00) % \item -% [|\firstlinenumber] \ \par -% ~\firstlinenumber{~<filino>~}~ brings about that -% (after it) line numbers less than <filino> do -% \emph{not} appear in the margin. Moreover, with -% ~\modulolinenumbers[~<number>~]~, just the line -% numbers which are <filino> plus a multiple of -% <number> are printed.---If you had -% ~\firstlinenumber{~<pos>~}~ with some $\mbox{<pos>}>0$ -% and want to switch to printing multiples of, e.g., -% 4, you best do ~\modulolinenumbers[4]~ and -% ~\firstlinenumber{0}~. (See subsection_\ref{ss:Mod} -% for technical details.) -%% (/New v4.00) +% [|\firstlinenumber] \ \par +% ~\firstlinenumber{~<filino>~}~ brings about that +% (after it) line numbers less than <filino> do +% \emph{not} appear in the margin. Moreover, with +% ~\modulolinenumbers[~<number>~]~, just the line +% numbers which are <filino> plus a multiple of +% <number> are printed.---If you had +% ~\firstlinenumber{~<pos>~}~ with some $\mbox{<pos>}>0$ +% and want to switch to printing multiples of, e.g., +% 4, you best do ~\modulolinenumbers[4]~ and +% ~\firstlinenumber{0}~. (See subsection_\ref{ss:Mod} +% for technical details.) +%% (/New v4.00) % \item % [|\linenumberdisplaymath] \ \par % Number the lines of a display math in a ~{linenomath}~ % environment, but do not in a ~{linenomath*}~ % environment. This is used by the package option -% ~[mathlines]~. +% ~[mathlines]~. % \item % [|\nolinenumberdisplaymath] \ \par % Do not Number the lines of a display math in a @@ -3247,13 +3305,13 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % ~\pageref{~<foo>~}~. % \end{description} % The commands can be used globally, locally within groups -% or as environments. It is important to know that they +% or as environments. It is important to know that they %% -%% %% TODO: \linelabel? others? +%% %% TODO: \linelabel? others? %% % take action only when the ~\par~ is executed. The %% -%% %% TODO: sure? ~\modulo...~, e.g.? well, in a sense ... +%% %% TODO: sure? ~\modulo...~, e.g.? well, in a sense ... %% % ~\end{~<mode>~linenumbers}~ commands provide a ~\par~. % Examples: @@ -3273,32 +3331,32 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % ~\linenumbers~ \\ % <paragraph> ~{\nolinenumbers\par}~ \\ % \end{verse} -% (New v4.00) -% However, the examples containing <paragraph> show what you -% should \emph{not} do, at least if you use ~\pagebreak~, -% ~\nopagebreak~, ~\vspace~, ~\\*~ or -% ~\\[~<space>~]~---cf._section_\ref{s:MVadj}. +% (New v4.00) +% However, the examples containing <paragraph> show what you +% should \emph{not} do, at least if you use ~\pagebreak~, +% ~\nopagebreak~, ~\vspace~, ~\\*~ or +% ~\\[~<space>~]~---cf._section_\ref{s:MVadj}. % -% The same care should be applied to the ``wizard'' devices +% The same care should be applied to the ``wizard'' devices % ~\ifLineNumbers~ (subsection_\ref{ss:OnOff}) and -% ~\PostponeVadjust~ (section_\ref{ss:PVadj}). -% (/New v4.00) -% -% (New v4.11) Oh, and the commands and environments of -% section_{s:Xt} are missing. Sorry, I am in a hurry now. -% May be next time.% %% TODO v4.4+ -% ---And the environments ~{linenomath}~ and ~{linenomath*}~should -% get an own paragraph. In short, each math display, equation, -% or ~{eqnarray}~ should be ``wrapped'' in one of ~{linenomath}~ -% and ~{linenomath*}~. -% +% ~\PostponeVadjust~ (section_\ref{ss:PVadj}). +% (/New v4.00) +% +% (New v4.11) Oh, and the commands and environments of +% section_{s:Xt} are missing. Sorry, I am in a hurry now. +% May be next time.% %% TODO v4.4+ +% ---And the environments ~{linenomath}~ and ~{linenomath*}~should +% get an own paragraph. In short, each math display, equation, +% or ~{eqnarray}~ should be ``wrapped'' in one of ~{linenomath}~ +% and ~{linenomath*}~. +% % \subsection{% % Customization hooks -% \unskip} -% +% \unskip} +% % There are several hooks to customize the appearance of the % line numbers, and some low level hooks for special -% effects. +% effects. % \begin{description}\item % [|\thelinenumber] \ \par % This macro should give the representation of the line @@ -3308,11 +3366,11 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % \item % [|\makeLineNumberLeft] \ \par % This macro is used to attach a line number to the left -% of the text page. This macro should fill an ~\hbox to 0pt~ +% of the text page. This macro should fill an ~\hbox to 0pt~ % which will be placed at the left margin of the % page, with the reference point aligned to the line to % which it should give a number. Please use the macro -% ~\LineNumber~ to refer to the line number. +% ~\LineNumber~ to refer to the line number. % % The default definition is \par$\qquad$ % ~\hss\linenumberfont\LineNumber\hskip\linenumbersep~ @@ -3338,7 +3396,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % number box on the right margin. The distance of the % right edge of the text to the right edge of the line % number is ~\linenumbersep~ + ~\linenumberwidth~. The -% default value is ~10pt~. +% default value is ~10pt~. % \item % [|\theLineNumber] (for wizards) \ \par % This macro is called for printing a ~\newlabel~ entry @@ -3355,55 +3413,54 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % [|\LineNumber] (for wizards) \ \par % This macro is called by ~\makeLineNumber~ to typeset % the line number. This hook is changed by the modulo -% mechanism +% mechanism %% %%%. -% and by ~\firstlinenumber~. -%% %% New v4.00 +% and by ~\firstlinenumber~. +%% %% New v4.00 % \end{description} -%% -%% TODO: \stepLineNumber---another wizard command!? -%% Not sure, may be retreated. +%% +%% TODO: \stepLineNumber---another wizard command!? +%% Not sure, may be retreated. % \end{document}%D ------------------------------------------------------------------------------ %SSTOPP -%% TODO v4.4+: Check for unwanted comment marks in new comments -%% (resulting from manual aligning): search `New v4.2' -%% and/or ` % '! -%% TODO v4.4+: Check for missing comment marks where a paragraph -%% should end/start. Also to prevent empty "code" lines. -%% Especially, new comments at section ends must be -%% followed by comment mark lines. -%% And prevent ~\par~s from blank lines in definitions! -%% See `visual space' above. -%% For proper appearance in lineno.tex, note that a comment -%% in a final code line changes behaviour. -%% TODO v4.4+: Require README for redistribution? -%% TODO v4.4+: Since discussions of code have increased so much, it -%% would be appropriate not to give to this file -%% extension `.sty' (e.g., `dty'!??). ?? Is quickly read though! -%% A .sty extraction may be possible even if the present -%% file is neither a .doc nor a .dtx. (!???) -%% Use awk line below (etc.) for .doc at least; + .ins or so. -%% ^ must not be caps! To escape awk. -%% TODO v4.4+: Underfull lines!? (due to long code quotations) -%% TODO v4.4+: Sometimes paragraph indents may be appropriate. -%% TODO Swap first line (`\iffalse...') with corresponding below. - Or do *not* swap, maybe nawk is more reliable. -%% TODO v4.4+: Ponder Stephan's mail from 2004/09/02. -%% TODO v4.4+: -%% use \@ET@makeLineNumber. -%% plus almost all `(UL)' -%% plus lots of bad boxes messages -%% change v4.3 TODOs when postponed -%% remove {old} environments. +%% TODO v4.4+: Check for unwanted comment marks in new comments +%% (resulting from manual aligning): search `New v4.2' +%% and/or ` % '! +%% TODO v4.4+: Check for missing comment marks where a paragraph +%% should end/start. Also to prevent empty "code" lines. +%% Especially, new comments at section ends must be +%% followed by comment mark lines. +%% And prevent ~\par~s from blank lines in definitions! +%% See `visual space' above. +%% For proper appearance in lineno.tex, note that a comment +%% in a final code line changes behaviour. +%% TODO v4.4+: Require README for redistribution? +%% TODO v4.4+: Since discussions of code have increased so much, it +%% would be appropriate not to give to this file +%% extension `.sty' (e.g., `dty'!??). ?? Is quickly read though! +%% A .sty extraction may be possible even if the present +%% file is neither a .doc nor a .dtx. (!???) +%% Use awk line below (etc.) for .doc at least; + .ins or so. +%% ^ must not be caps! To escape awk. +%% TODO v4.4+: Underfull lines!? (due to long code quotations) +%% TODO v4.4+: Sometimes paragraph indents may be appropriate. +%% TODO Swap first line (`\iffalse...') with corresponding below. + Or do *not* swap, maybe nawk is more reliable. +%% TODO v4.4+: Ponder Stephan's mail from 2004/09/02. +%% TODO v4.4+: +%% use \@ET@makeLineNumber. +%% plus almost all `(UL)' +%% plus lots of bad boxes messages +%% change v4.3 TODOs when postponed +%% remove {old} environments. ------------------------------------------------------------------------------ -# awk command lines for v4.00, mixed with former ones: +# awk command lines for v4.00, mixed with former ones: -echo "Don't bother about unknown 'iffalse'." # SHELL1 +echo "Don't bother about unknown 'iffalse'." # SHELL1 nawk '/A[W]K/' lineno.sty | nawk -f - lineno.sty >lineno.tex; # SHELL1 -latex lineno; latex lineno; latex lineno; latex lineno; # SHELL1 BEGIN{DOC=-1; # AWK DOC A W K BEGINCODE = "\\begin{code}\\begin{verbatim}"; # AWK @@ -3420,19 +3477,19 @@ BEGIN{DOC=-1; # AWK DOC A W K sub("^% *",""); # AWK sub("^% *","% "); # DOC A W K print; next; } # AWK DOC A W K -/%VERSION/ { sub("%VERSION",""); print; next; } # AWK -/%SSTOPP/ { exit } # AWK +/%VERSION/ { sub("%VERSION",""); print; next; } # AWK +/%SSTOPP/ { exit } # AWK DOC<0 { next } # AWK DOC A W K /^-+-$/ { if (!DOC) print ENDCODE; exit } # AWK DOC A W K { if (DOC) { ECNT=DOC=0; print BEGINCODE; } # AWK DOC A W K while (ECNT>0) { print " "; ECNT--; } # AWK DOC A W K print $0; } # AWK DOC A W K -# New v4.00, UL: know nothing about awk; found present solution -# in hours of trial and error. +# New v4.00, UL: know nothing about awk; found present solution +# in hours of trial and error. -% Earlier (should be inhibited by %SSTOPP above and otherwise): -echo "expect errors for unknown commands 'iffalse' and 'fi'";# SHELL0 SHELL#1 +% Earlier (should be inhibited by %SSTOPP above and otherwise): +echo "expect errors for unknown commands 'iffalse' and 'fi'";# SHELL0 SHELL#1 awk '/A[W]K/' lineno.sty | awk -f - lineno.sty >lineno.tex; # SHELL0 latex lineno; latex lineno; latex lineno; latex lineno; # SHELL0 nawk '/A[W]K/' lineno4.sty | nawk -f - lineno4.sty >lineno4.tex; # SHELL#1 @@ -3464,21 +3521,19 @@ DOC<0 { next } # A#WK DOC A W K ------------------------------------------------------------------------------ -If you are looking here because of the two top lines of the file: - -A .tex documentation of this macro file can be obtained by - - sh lineno.sty +If you are looking here because of the two top lines of the file: -under UNIX.--You may find this hint little helpful. One -reason may be that the awk versions to which you have access -don't work suitably. Another reason may be that you don't have -access to UNIX (in some sense). However, a .tex, .dvi, or .pdf -version of such a documentation should be available from CTAN, -in the same folder as the present file. When we typed this, that -folder was /macros/latex/contrib/lineno. If this has changed in -the meantime, a CTAN search should lead you to a folder -containing such a documentation. Or you may get help from one of -the e-mail addresses above. +A .tex documentation of this macro file can be obtained by + sh lineno.sty +under UNIX.--You may find this hint little helpful. One +reason may be that the awk versions to which you have access +don't work suitably. Another reason may be that you don't have +access to UNIX (in some sense). However, a .tex, .dvi, or .pdf +version of such a documentation should be available from CTAN, +in the same folder as the present file. When we typed this, that +folder was /macros/latex/contrib/lineno. If this has changed in +the meantime, a CTAN search should lead you to a folder +containing such a documentation. Or you may get help from one of +the e-mail addresses above. diff --git a/Master/texmf-dist/tex/latex/lineno/vplref.sty b/Master/texmf-dist/tex/latex/lineno/vplref.sty index d3b0697f131..bdff9b45b7a 100644 --- a/Master/texmf-dist/tex/latex/lineno/vplref.sty +++ b/Master/texmf-dist/tex/latex/lineno/vplref.sty @@ -1,74 +1,73 @@ -%% `vplref.sty' -%% -- extended line number referencing with lineno.sty. +%% `vplref.sty' +%% -- extended line number referencing with lineno.sty. \def\filedate{2005/04/25} \def\fileversion{0.2a} -%% Copyright (C) 2004, 2005 Uwe Lueck, -%% http://contact-ednotes.sty.de.vu --author-maintained -%% -- support of lineno.sty for varioref.sty. +%% Copyright (C) 2004, 2005 Uwe Lueck, +%% http://contact-ednotes.sty.de.vu --author-maintained +%% -- support of lineno.sty for varioref.sty. -%% This file can be redistributed and/or modified under -%% the terms of the LaTeX Project Public License; either +%% This file can be redistributed and/or modified under +%% the terms of the LaTeX Project Public License; either %% version 1.3 of the License, or any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt -%% We did our best to help you, but there is NO WARRANTY. +%% We did our best to help you, but there is NO WARRANTY. -%% USAGE: +%% USAGE: % -% \vpagelineref{<label>} expands to +% \vpagelineref{<label>} expands to % -% a) \ref{<label>} +% a) \ref{<label>} % -- if on same page as \linelabel{<label>} -% -% b) \LineWithPage{<label>} -- otherwise. -% -% \LineWithPage{<label>} expands -- by default -- to -% +% +% b) \LineWithPage{<label>} -- otherwise. +% +% \LineWithPage{<label>} expands -- by default -- to +% % \pageref{<label>}.\ref{<label>} -% -% This can be customized by editing -% -% \renewcommand*{\LineWithPage}[1]{\pageref{#1}.\ref{#1}} -% -% in your document preamble, after vplref.sty has been loaded -% (which may have happened through lineno.sty with option -% `addpageno'). +% +% This can be customized by editing +% +% \renewcommand*{\LineWithPage}[1]{\pageref{#1}.\ref{#1}} +% +% in your document preamble, after vplref.sty has been loaded +% (which may have happened through lineno.sty with option +% `addpageno'). -%% IMPLEMENTATION: +%% IMPLEMENTATION: -\NeedsTeXFormat{LaTeX2e}[1994/12/01] %% \Declare...* +\NeedsTeXFormat{LaTeX2e}[1994/12/01] %% \Declare...* \ProvidesPackage{vplref}[\filedate\space v\fileversion \space page-line cross-refs] %% UL 2011/02/13 -\AtBeginDocument{\RequirePackage{lineno,varioref}} +\AtBeginDocument{\RequirePackage{lineno,varioref}} -%% Anderer Ansatz: GPNo (\FirstOnPage) +%% Anderer Ansatz: GPNo (\FirstOnPage) -\DeclareRobustCommand*\vpagelineref[1]{{% -% \def\reftextcurrent{\lineref{#1}}%% First vpageref arg. - \let\reftextfaraway\LineWithPage - \def\reftextafter{\reftextfaraway{#1}}% - \let\reftextbefore\reftextafter - \let\reftextfaceafter\reftextafter - \let\reftextfacebefore\reftextafter -%% <- Looks somewhat stupid, but varioref.sty has its merits -%% as compared with the mechanism in ednotes.sty. - \vpageref[\ref{#1}][]{#1}%% The robust alternative. -%% Here and with \LineWithPage, \lineref seems more appropriate -%% than \ref, but it produces errors when labels have not been -%% defined. This seems to be an incompatibility with lineno.sty. -}} +\DeclareRobustCommand*\vpagelineref[1]{{% +% \def\reftextcurrent{\lineref{#1}}%% First vpageref arg. + \let\reftextfaraway\LineWithPage + \def\reftextafter{\reftextfaraway{#1}}% + \let\reftextbefore\reftextafter + \let\reftextfaceafter\reftextafter + \let\reftextfacebefore\reftextafter +%% <- Looks somewhat stupid, but varioref.sty has its merits +%% as compared with the mechanism in ednotes.sty. + \vpageref[\ref{#1}][]{#1}%% The robust alternative. +%% Here and with \LineWithPage, \lineref seems more appropriate +%% than \ref, but it produces errors when labels have not been +%% defined. This seems to be an incompatibility with lineno.sty. +}} -%% Customizable format for different page: +%% Customizable format for different page: \newcommand*\LineWithPage[1]{\pageref{#1}.\ref{#1}} -\endinput +\endinput -VERSION HISTORY: -v0.1 2004/10/19 First, sent to Sergei Mariev. -v0.11 2004/10/19 Fit to recent varioref version; - sent to Sergei. -v0.2 2005/04/25 \Require... \AtBeginDocument. +VERSION HISTORY: +v0.1 2004/10/19 First, sent to Sergei Mariev. +v0.11 2004/10/19 Fit to recent varioref version; + sent to Sergei. +v0.2 2005/04/25 \Require... \AtBeginDocument. v0.2a 2011/02/13 add. caption to \ProvidesPackage - |