diff -r 8939b8fd8603 -r 069d525f8f1d CookBook/document/lineno.sty --- a/CookBook/document/lineno.sty Wed Mar 18 23:52:51 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3484 +0,0 @@ - \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 ; -%%% 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. -% -%%% $Id: lineno.sty,v 1.1 2006/02/25 18:18:12 wenzelm Exp $ %% was v4.00. -% \title{\texttt{\itshape -%% %% (UL 2004/10/09:) Italic TT is evil -%% %% ... or nice front page layout!? -%% -% lineno.sty \ \fileversion\ \filedate -% \unskip}\\\ \\ -% 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 -%% \\ stephan@nevis.columbia.edu -%% \\ Stephan.Boettcher@cern.ch -% \\} -% -% \documentclass[a4paper,12pt]{article}%D -% \usepackage{lineno}%D -%% %% (New v4.00) -% \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.) -% \def|#1{\ttfamily\string#1} -%% \def|#1{{\ttfamily\string#1}} -%% (/New v4.1) -% \newenvironment{code} -% {\par\runninglinenumbers -% \modulolinenumbers[1]% -% \linenumbersep.3em -% \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) -% {\catcode`\/\active -% \gdef\path{\begingroup\catcode`\/\active -% \let/\slash\dopath} -% \gdef\dopath#1{\slash\unpenalty#1\endgroup}} -%% %% (/New v4.1) -% -% \begin{document}%D -%% \DocInput{lineno}%D -% \pagewiselinenumbers -% \maketitle -% \pagestyle{headings} -% \tableofcontents -% \sloppy -% -%% %% New v4.00: `...section{%' + \unskip -% \section{% -% 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{% -% Introduction to versions $\textrm{v}\lessthan4$ -% \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 -% make references through the \LaTeX\ ~\ref~, ~\pageref~ -% cross reference mechanism. This includes four issues: -% \begin{itemize} -% \item attach a line number on each line, -% \item create references to a line number, -% \item control line numbering mode, -% \item count the lines and print the numbers. -% \end{itemize} -% The first two points are implemented through patches to -% the output routine. The third by redefining ~\par~, ~\@par~ -% and ~\@@par~. The counting is easy, as long as you want -% the line numbers run through the text. If they shall -% start over at the top of each page, the aux-file as well -% as \TeX s memory have to carry a load for each counted line. -% -% I wrote this package for my wife Petra, who needs it for -% transcriptions of interviews. This allows her to -% 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. -% (/UL /New v4.00) -% -% lineno.sty works -% surprisingly well with other packages, for -% example, ~wrapfig.sty~. So please try if it -% works with whatever you need, and if it does, -% please tell me, and if it does not, tell me as -% well, so I can try to fix it. -% -% \subsection{% -% 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 -% critical editions---cf. -% \[\mbox{\tt -% http://ednotes.sty.de.vu -% \unskip}\] -% ---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 -% (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 -% (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) -% \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 -% ~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 -% 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 -% not been updated for a while. %% TODO -% -% \subsection{% -% 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 -% \path{macros/latex/contrib/lineno}. -% 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: -%% 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.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 -%% v2.02 1997/03/17 SIB: add: \@reinserts, for footnotes -%% v2.04 1998/03/09 SIB: add: linenomath environment -%% v2.05 1998/04/26 SIB: add: prevgraf test -%% v2.06 1999/03/02 SIB: LPPL added -%% v3.00 1999/06/11 SiB: include the extension in the main file -%% v3.01 1999/08/28 SiB: \@reinserts -> \holdinginserts -%% 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.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 \[ \] -%% v3.08a 2001/08/04 SiB: linenomath wrapping for \[ \] fixed -%% v3.08b 2002/01/27 SiB: enquotation typo fix -%% 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). -%% 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; -%% \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; -%% \modulolinenumbers*. Sent to Ednotes.news only. -%% 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 $$. -%% 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*. -%% -%% 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. -% -% -% \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{% -% Basic code of \texttt{lineno.sty} \scs{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 -% paragraph, except the last, where we trigger by ~\par~. -% 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 -% shrunk to $-188000 \dots -32000$. (/New v3.04) -% (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) - -\mathchardef\linenopenaltypar=32000 - -% 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 -% screws up split footnotes. The bottom part is -% still on the recent contributions list, and the -% top part will be put back there after the bottom -% part. Thus, since lineno.sty does not play well -% with ~\inserts~ anyway, we can safely experiment -% with ~\holdinginserts~, without making things -% much worse. -% -% Or that's what I thought, but: Just activating -% ~\holdinginserts~ while doing the ~\par~ will -% not do the trick: The ~\output~ routine may be -% called for a real page break before all line -% numbers are done, and how can we get control -% over ~\holdinginserts~ at that point? -% -% Let's try this: When the ~\output~ routine is -% run with ~\holdinginserts=3~ for a real page -% break, then we reset ~\holdinginserts~ and -% restart ~\output~. -% -% Then, again, how do we keep the remaining -% ~\inserts~ while doing further line numbers? -% -% If we find ~\holdinginserts~=$-3$ we activate it again -% after doing ~\output~. (/New v3.01) -% -% (New v3.02) To work with -% multicol.sty, the original output routine is now -% 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. -%% -%% 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. -% \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. -% \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. - -\let\@tempa\output -\newtoks\output -\let\@LN@output\output -\output=\expandafter{\the\@tempa} - -% Now we add two cases to Stephan's output routine. (New v4.00) - -\@tempa={% -% (/New 4.2) - \LineNoTest - \if@tempswa -%% -%% (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) -%% -% (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 - \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) -% -% \subsection{% -% \scs{LineNoTest} -% \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~. -% -% 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~ -% altogether with the ~\@nobreak~ switch. -% -% Since (ltspace.dtx, v1.2p)[1996/07/26], the ~\@nobreaktrue~ does -% it's job globally. We need to do it locally here. - -\def\LineNoTest{% - \let\@@par\@@@par - \ifnum\interlinepenalty<-\linenopenaltypar - \advance\interlinepenalty-\linenopenalty - \@LN@nobreaktrue - \fi - \@tempswatrue - \ifnum\outputpenalty>-\linenopenaltypar\else - \ifnum\outputpenalty>-188000\relax - \@tempswafalse - \fi - \fi - } - -\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~) -% is executed within a group (\TeX book p._21). -%% -%% 2004/09/19 Removed nonsense here according to Stephan 2004/09/04. -%% -% (/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 -% \[ -% ~http://~\mbox{[CTAN]} -% ~/macros/latex/contrib/tamefloats/tameflts.sty~ -% \] -% 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 -% 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{% - \ifnum \holdinginserts=\thr@@ % v4.33 without \@tempswafalse - \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 - \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~. -% 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~. -% -% \subsection{% -% \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. -% -% 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). -% -% Finally we put in the natural ~\interlinepenalty~, except -% 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 -% 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) - -\def\MakeLineNo{% - \@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, -% \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 -% \[~\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) -%% - \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. -% (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, -% \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{% - \penalty\the\count@ - \global\let\noexpand\@LN@parpgbrk - \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 -% be overridden. -%% - \fi - \else -%% -% (/New v4.00) -%% Corrected code alignment with v4.11. - \@tempcnta\outputpenalty - \advance\@tempcnta -\linenopenalty -%% -% (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) -%% - \fi - } - -% (New v4.00) - -\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 -% section_\ref{ss:calls}. - -\def\@LN@depthbox{% - \dp\@tempboxa=\@tempdima - \nointerlineskip \kern-\@tempdima \box\@tempboxa} - -% (/New v4.4) -% -% \section{% -% Control line numbering -% \unskip} -% \subsection{% -% 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. -% -% 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~. - -\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??). -%% -%% %% 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) - -%% v4.33: changed code alignment for better understanding. -\def\linenumberpar{% - \ifvmode \@@@par \else - \ifinner \@@@par \else - \xdef\@LN@outer@holdins{\the\holdinginserts}% v4.2 - \advance \interlinepenalty \linenopenalty - \linenoprevgraf \prevgraf - \global \holdinginserts \thr@@ - \@@@par - \ifnum\prevgraf>\linenoprevgraf - \penalty-\linenopenaltypar - \fi -%% -% (New v4.00) -% \begin{old}\begin{verbatim} -% % \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. -% (Stephan once knew this: see `allow pagebreaks' above.) -% -% Formerly, I tried to replace ~\kern\z@~ by -% \begin{old}\begin{verbatim} -% % \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) -%% - \global\holdinginserts\@LN@outer@holdins % v4.2 - \advance\interlinepenalty -\linenopenalty - \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: - -\def\@LN@screenoff@pen{% - \ifdim\lastskip=\z@ - \@tempdima\prevdepth \setbox\@tempboxa\null - \@LN@depthbox \fi} - -\global\let\@LN@parpgbrk\@LN@screenoff@pen - -% (/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~ -% to ~\@@@par~/~\linenumberpar~. The line number may be -% reset to 1 with the star-form, or set by an optional -% argument ~[~~]~. -% -% (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) - -\newif\ifLineNumbers \LineNumbersfalse - -% (/New v4.00) - -\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) -%% - \let\@@par\linenumberpar - % \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 - \@ifnextchar[{\resetlinenumber}%] - {\@ifstar{\resetlinenumber}{}}% - } - -\def\nolinenumbers{% - \LineNumbersfalse % v4.00 - \let\@@par\@@@par - % \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) -% -% 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 -% ~\interlinepenalty~ globally, nor do I want to redefine -% the display math environments here. -% \begin{displaymath} -% display \ math -% \end{displaymath} -% 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]). -% -% 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. - -\def\pagewiselinenumbers{\linenumbers\setpagewiselinenumbers} -\def\runninglinenumbers{\setrunninglinenumbers\linenumbers} - -% 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: add an \@endpe hack if \linenumbers are turned on -% \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) - -\@namedef{linenumbers*}{\par\linenumbers*} -\@namedef{runninglinenumbers*}{\par\runninglinenumbers*} - -\def\endlinenumbers{\par\@endpetrue} -\let\endrunninglinenumbers\endlinenumbers -\let\endpagewiselinenumbers\endlinenumbers -\expandafter\let\csname endlinenumbers*\endcsname\endlinenumbers -\expandafter\let\csname endrunninglinenumbers*\endcsname\endlinenumbers -\let\endnolinenumbers\endlinenumbers - -% -% \subsection{% -% Display math -% \unskip}\label{ss:DM} -% -% 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~. -% Not too good. -% \item[ -% 2.] Change ~\interlinepenalty~ and associates globally. -% Unstable. -% \item[ -% 3.] Wrap each display math with a ~{linenomath}~ -% environment. -% \end{enumerate} -% We'll go for option 3. See if it works: -% \begin{linenomath} -% \begin{equation} -% display \ math -% \end{equation} -% \end{linenomath} -% The star form ~{linenomath*}~ should also number the lines -% of the display itself, -% \begin{linenomath*} -% \begin{eqnarray} -% multi && line \\ -% display && math \\ -% & -% \begin{array}{c} -% with \\ -% array -% \end{array} -% & -% \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. -% The ~\ifx..~ tests if line numbering is turned on. It -% does not harm to add these wrappers in sections that are -% 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) - -\newcommand\linenomathNonumbers{% - \ifLineNumbers -%% \ifx\@@par\@@@par\else - \ifnum\interlinepenalty>-\linenopenaltypar - \global\holdinginserts\thr@@ - \advance\interlinepenalty \linenopenalty - \ifhmode % v4.3 - \advance\predisplaypenalty \linenopenalty - \fi - \fi - \fi - \ignorespaces - } - -\newcommand\linenomathWithnumbers{% - \ifLineNumbers -%% \ifx\@@par\@@@par\else - \ifnum\interlinepenalty>-\linenopenaltypar - \global\holdinginserts\thr@@ - \advance\interlinepenalty \linenopenalty - \ifhmode % v4.3 - \advance\predisplaypenalty \linenopenalty - \fi - \advance\postdisplaypenalty \linenopenalty - \advance\interdisplaylinepenalty \linenopenalty - \fi - \fi - \ignorespaces - } - -% The ~{linenomath}~ environment has two forms, with and -% without a star. The following two macros define the -% environment, where the stared/non-stared form does/doesn't number the -% lines of the display or vice versa. - -\newcommand\linenumberdisplaymath{% - \def\linenomath{\linenomathWithnumbers}% - \@namedef{linenomath*}{\linenomathNonumbers}% - } - -\newcommand\nolinenumberdisplaymath{% - \def\linenomath{\linenomathNonumbers}% - \@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. - \@ignoretrue -} -\expandafter\let\csname endlinenomath*\endcsname\endlinenomath - -% The default is not to number the lines of a display. But -% the package option ~mathlines~ may be used to switch -% that behavior. - -\nolinenumberdisplaymath - -% -% \section{% -% Line number references -% \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) -% \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@~. -% \end{verbatim} -% \end{old} -% 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. -% -% (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. -% \begin{old}\begin{verbatim} -% % \let\@LN@addmarginpar\@addmarginpar -% % \def\@addmarginpar{% -% % \ifnum\count\@currbox>-2\relax -% % \expandafter\@LN@addmarginpar -% % \else -% % \@cons\@freelist\@currbox -% % \protected@write\@auxout{}{% -% % \string\newlabel -% % {\csname @LNL@\the\@currbox\endcsname}% -% % {{\theLineNumber}{\thepage}\@LN@ExtraLabelItems}}% -% % \fi} -% \end{verbatim} -% \end{old} -% 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. -% -% 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}}% -} - -% (/New v4.00) -% -% \subsection{% -% The \scs{linelabel} command -% \unskip}\label{ss:LL} -% To refer to a place in line ~\ref{~~}~ at page -% ~\pageref{~~}~ you place a ~\linelabel{~~}~ at -% that place. -% -% \linelabel{demo} -% \marginpar{\tiny\raggedright -% See if it works: This paragraph -% starts on page \pageref{demo}, line -% \ref{demo}. -% \unskip}% -% (New v4.11) -% \begin{old}\begin{verbatim} -% % If you use this command outside a ~\linenumbers~ -% % paragraph, you will get references to some bogus -% % line numbers, sorry. But we don't disable the command, -% % because only the ~\par~ at the end of a paragraph may -% % decide whether to print line numbers on this paragraph -% % 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} -% and_\ref{ss:OnOff}. -% (/New v4.11) -% -% ~\linelabel~ -% \begin{old}\begin{verbatim} -% %, via a fake float number $-2$, %% new mechanism v4.00 -% \end{verbatim} -% \end{old} -% puts a -% ~\penalty~ into a ~\vadjust~, which triggers the -% pagebuilder after putting the current line to the main -% vertical list. A ~\write~ is placed on the main vertical -% list, which prints a reference to the current value of -% ~\thelinenumber~ and ~\thepage~ at the time of the -% ~\shipout~. -% -% 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. -% \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.11) -% \begin{old}\begin{verbatim} -% % \def\linelabel#1{% -% \end{verbatim} -% \end{old} -% I forgot ~\linenumbers~ today, costed me hours or so. - -\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. - -\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) -%% - \ifvmode - \ifinner \else - \leavevmode \@bsphack \@savsk\p@ - \fi - \else - \@bsphack - \fi - \ifhmode - \ifinner - \@parmoderr - \else -%% -% (New v4.00) -%% - \@LN@postlabel{#1}% -% \begin{old}\begin{verbatim} -% % \@floatpenalty -\@Mii -% % \@next\@currbox\@freelist -% % {\global\count\@currbox-2% -% % \expandafter\gdef\csname @LNL@\the\@currbox\endcsname{#1}}% -% % {\@floatpenalty\z@ \@fltovf \def\@currbox{\@tempboxa}}% -% % \begingroup -% % \setbox\@currbox \color@vbox \vbox \bgroup \end@float -% % \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) -%% - \fi - \else -%% -% (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) -%% - \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. - -\def\@LN@postlabel#1{\g@addto@macro\@LN@labellist{#1\@lt}% - \vadjust{\penalty-\@Mllbcodepen}} -\def\@LN@mathhook#1{\@parmoderr} - -% (/New v4.00) -% -% \modulolinenumbers[3] -% \firstlinenumber{1} -% \section{% -% The appearance of the line numbers -% \unskip}\label{appearance} -% \subsection{% -% 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{% - \hss\linenumberfont\LineNumber\hskip\linenumbersep} - -\def\makeLineNumberRight{% - \linenumberfont\hskip\linenumbersep\hskip\columnwidth - \hb@xt@\linenumberwidth{\hss\LineNumber}\hss} - -\def\linenumberfont{\normalfont\tiny\sffamily} - -\newdimen\linenumbersep -\newdimen\linenumberwidth - -\linenumberwidth=10pt -\linenumbersep=10pt - -% Margin switching requires ~pagewise~ numbering mode, but -% choosing the left or right margin for the numbers always -% works. - -\def\switchlinenumbers{\@ifstar - {\let\makeLineNumberOdd\makeLineNumberRight - \let\makeLineNumberEven\makeLineNumberLeft}% - {\let\makeLineNumberOdd\makeLineNumberLeft - \let\makeLineNumberEven\makeLineNumberRight}% - } - -\def\setmakelinenumbers#1{\@ifstar - {\let\makeLineNumberRunning#1% - \let\makeLineNumberOdd#1% - \let\makeLineNumberEven#1}% - {\ifx\c@linenumber\c@runninglinenumber - \let\makeLineNumberRunning#1% - \else - \let\makeLineNumberOdd#1% - \let\makeLineNumberEven#1% - \fi}% - } - -\def\leftlinenumbers{\setmakelinenumbers\makeLineNumberLeft} -\def\rightlinenumbers{\setmakelinenumbers\makeLineNumberRight} - -\leftlinenumbers* - -% ~\LineNumber~ is a hook which is used for the modulo stuff. -% It is the command to use for the line number, when you -% customize ~\makeLineNumber~. Use ~\thelinenumber~ to -% change the outfit of the digits. -% -% -% We will implement two modes of operation: -% \begin{itemize} -% \item numbers ~running~ through (parts of) the text -% \item ~pagewise~ numbers starting over with one on top of -% each page. -% \end{itemize} -% Both modes have their own count register, but only one is -% allocated as a \LaTeX\ counter, with the attached -% facilities serving both. - -\newcounter{linenumber} -\newcount\c@pagewiselinenumber -\let\c@runninglinenumber\c@linenumber - -% 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]{% - \global % v4.22 - \c@runninglinenumber#1\relax} - -% (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 -% counters here---removed, somewhat postponed.) -% -%% 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 -%% } -% -% \subsection{% -% Running line numbers -% \unskip} -% -% Running mode is easy, ~\LineNumber~ and ~\theLineNumber~ -% produce ~\thelinenumber~, which defaults to -% ~\arabic{linenumber}~, using the ~\c@runninglinenumber~ -% counter. This is the default mode of operation. - -\def\makeRunningLineNumber{\makeLineNumberRunning} - -\def\setrunninglinenumbers{% - \def\theLineNumber{\thelinenumber}% - \let\c@linenumber\c@runninglinenumber - \let\makeLineNumber\makeRunningLineNumber - } - -\setrunninglinenumbers\resetlinenumber - -% -% \subsection{% -% Pagewise line numbers -% \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. -% -% With version ~v2.00~ the hashsize requirements are -% reduced, because we do not need one controlsequence for -% each line any more. But this costs some computation time -% to find out on which page we are. -% -% ~\makeLineNumber~ gets a hook to log the line and page -% number to the aux-file. Another hook tries to find out -% what the page offset is, and subtracts it from the counter -% ~\c@linenumber~. Additionally, the switch -% ~\ifoddNumberedPage~ is set true for odd numbered pages, -% false otherwise. - -\def\setpagewiselinenumbers{% - \let\theLineNumber\thePagewiseLineNumber - \let\c@linenumber\c@pagewiselinenumber - \let\makeLineNumber\makePagewiseLineNumber - } - -\def\makePagewiseLineNumber{\logtheLineNumber\getLineNumber - \ifoddNumberedPage - \makeLineNumberOdd - \else - \makeLineNumberEven - \fi - } - -% Each numbered line gives a line to the aux file -% \begin{verse} -% ~\@LN{~~}{~~}~ -% \end{verse} -% very similar to the ~\newlabel~ business, except that we need -% an arabic representation of the page number, not what -% there might else be in ~\thepage~. - -\def\logtheLineNumber{\protected@write\@auxout{}{% -%% -% (New v4.00) (UL) -% 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 -%% \g@addto@macro\cl@page{\global\advance\n@LN@truepage\@ne} -\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) -% -% From the aux-file we get one macro ~\LN@P~ for each -% page with line numbers on it. This macro calls four other -% macros with one argument each. These macros are -% dynamically defined to do tests and actions, to find out -% on which page the current line number is located. -% -% We need sort of a pointer to the first page with line -% numbers, initiallized to point to nothing: - -\def\LastNumberedPage{first} -\def\LN@Pfirst{\nextLN\relax} - -% The four dynamic macros are initiallized to reproduce -% themselves in an ~\xdef~ - -\let\lastLN\relax % compare to last line on this page -\let\firstLN\relax % compare to first line on this page -\let\pageLN\relax % get the page number, compute the linenumber -\let\nextLN\relax % move to the next page - -% 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. - -\AtEndDocument{\let\@LN\@gobbletwo} - -% Now, this is the tricky part. First of all, the whole -% definition of ~\@LN~ is grouped, to avoid accumulation -% on the save stack. Somehow ~\csname~~\endcsname~ pushes -% an entry, which stays after an ~\xdef~ to that . -% -% If ~\LN@P~ is undefined, initialize it with the -% 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. -% -% If the macro for the current page already exists, just -% redefine the \emph{last-line-number} entry. -% -% Finally, save the current page number, to get the pointer to the -% following page later. - -\def\@LN#1#2{{\expandafter\@@LN - \csname LN@P#2C\@LN@column\expandafter\endcsname - \csname LN@PO#2\endcsname - {#1}{#2}}} - -\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}% - \pageLN{#4}{\@LN@column}{#2}\nextLN\relax}% - \else - \def\lastLN##1{\noexpand\lastLN{#3}}% - \xdef#1{#1}% - \fi - \xdef\LastNumberedPage{#4C\@LN@column}} - -% The previous page macro gets its pointer to the -% current one, replacing the ~\relax~ with the cs-token -% ~\LN@P~. - -\def\@@@LN#1#2{{\def\nextLN##1{\noexpand\nextLN\noexpand#2}% - \xdef#1{#1}}} - -% Now, to print a line number, we need to find the page, -% where it resides. This will most probably be the page where -% the last one came from, or maybe the next page. However, it can -% 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. - -\def\NumberedPageCache{\LN@Pfirst} - -% 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 -% later page. If so, disable ~\firstLN~, and go on to the -% next page via ~\nextLN~. - -\def\testLastNumberedPage#1{\ifnum#1<\c@linenumber - \let\firstLN\@gobble - \fi} - -% Else, if ~\firstLN~ finds out that we need an earlier -% 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, and the first line on the page. - -\def\testFirstNumberedPage#1{\ifnum#1>\c@linenumber - \def\nextLN##1{\testNextNumberedPage\LN@Pfirst}% - \else - \let\nextLN\@gobble - \def\pageLN{\gotNumberedPage{#1}}% - \fi} - -% We start with ~\pageLN~ disabled and ~\nextLN~ defined to -% continue the search with the next page. - -\long\def \@gobblethree #1#2#3{} - -\def\testNumberedPage{% - \let\lastLN\testLastNumberedPage - \let\firstLN\testFirstNumberedPage - \let\pageLN\@gobblethree - \let\nextLN\testNextNumberedPage - \NumberedPageCache - } - -% When we switch to another page, we first have to make -% 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 -% half of an aux-file from an aborted run, in the next run -% 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. - -\def\testNextNumberedPage#1{\ifx#1\relax - \global\def\NumberedPageCache{\gotNumberedPage0000}% - \PackageWarningNoLine{lineno}% - {Linenumber reference failed, - \MessageBreak rerun to get it right}% - \else - \global\let\NumberedPageCache#1% - \fi - \testNumberedPage - } - -% \linelabel{demo2} -% \marginpar{\tiny\raggedright -% Let's see if it finds the label -% on page \pageref{demo}, -% line \ref{demo}, and back here -% on page \pageref{demo2}, line -% \ref{demo2}. -% \unskip}% -% To separate the official hooks from the internals there is -% this equivalence, to hook in later for whatever purpose: - -\let\getLineNumber\testNumberedPage - -% So, now we got the page where the number is on. We -% establish if we are on an odd or even page, and calculate -% the final line number to be printed. - -\newif\ifoddNumberedPage -\newif\ifcolumnwiselinenumbers -\columnwiselinenumbersfalse - -\def\gotNumberedPage#1#2#3#4{\oddNumberedPagefalse - \ifodd \if@twocolumn #3\else #2\fi\relax\oddNumberedPagetrue\fi - \advance\c@linenumber\@ne - \ifcolumnwiselinenumbers - \subtractlinenumberoffset{#1}% - \else - \subtractlinenumberoffset{#4}% - \fi - } - -% You might want to run the pagewise mode with running line -% numbers, or you might not. It's your choice: - -\def\runningpagewiselinenumbers{% - \let\subtractlinenumberoffset\@gobble - } - -\def\realpagewiselinenumbers{% - \def\subtractlinenumberoffset##1{\advance\c@linenumber-##1\relax}% - } - -\realpagewiselinenumbers - -% For line number references, we need a protected call to -% the whole procedure, with the requested line number stored -% in the ~\c@linenumber~ counter. This is what gets printed -% to the aux-file to make a label: - -\def\thePagewiseLineNumber{\protect - \getpagewiselinenumber{\the\c@linenumber}}% - -% And here is what happens when the label is refered to: - -\def\getpagewiselinenumber#1{{% - \c@linenumber #1\relax\testNumberedPage - \thelinenumber - }} - -% % -% A summary of all per line expenses: -% \begin{description}\item -% [CPU:] The ~\output~ routine is called for each line, -% and the page-search is done. -% \item -% [DISK:] One line of output to the aux-file for each -% numbered line -% \item -% [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. -% \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 -% file. - -\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{}{% - \string\@LN@col{\if@firstcolumn1\else2\fi}% - }% - \box\@outputbox - }% \vbox -} %% TODO cf. revtexln.sty. - -\def\@LN@col{\def\@LN@column} % v4.22, removed #1. -\@LN@col{1} - -% -% \subsection{% -% Numbering modulo $m$, starting at $f$ -%% Numbering modulo 5 -% \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) -% \begin{old}\begin{verbatim} -% % \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: -% \begin{old}\begin{verbatim} -% % \def\themodulolinenumber{{\@tempcnta\c@linenumber -% % \divide\@tempcnta\c@linenumbermodulo -% % \multiply\@tempcnta\c@linenumbermodulo -% % \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 -% 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 -% 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 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. - -\def\themodulolinenumber{\relax - \ifnum\c@linenumber<\c@firstlinenumber \else - \begingroup - \@tempcnta\c@linenumber - \advance\@tempcnta-\c@firstlinenumber - \divide\@tempcnta\c@linenumbermodulo - \multiply\@tempcnta\c@linenumbermodulo - \advance\@tempcnta\c@firstlinenumber - \ifnum\@tempcnta=\c@linenumber \thelinenumber \fi - \endgroup - \fi -} - -% (/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 -% 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 -% extra package if someone complains \dots - -\newcommand\modulolinenumbers{% - \@ifstar - {\def\@LN@maybe@moduloresume{% - \global\let\@LN@maybe@normalLineNumber - \@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 - \ifnum\c@linenumber>\@ne - \def\LineNumber{\thelinenumber}% - \fi - \fi -%% -% ~\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 -% ~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 -% fail in admittedly improbable cases.) - -\newcommand*\@LN@modulolinenos[1][\z@]{% -%% -% 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 - \c@linenumbermodulo#1\relax - \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) -%% - \fi\fi - } - -% (New v4.00) The default of ~\@LN@ifgreat~ is - -\let\@LN@ifgreat\relax - -% 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{~~}~ works. Moreover, -% ~\modulolinenumbers~ acts locally as well. (/UL) -% -% (New v4.31) -%% - \let\@LN@ifgreat\@LN@ifgreat@critical} - -\def\@LN@ifgreat@critical{% - \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. - -\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) - -%%\setcounter{linenumbermodulo}{5} -\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{% -% 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) -% -% \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 -% 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., -% ~\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 -% \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{% -% Arrays, tabular environments (Revised v4.11) -% \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 -% 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 -% ~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 -% at one place only.) - -\let\if@LN@edtable\iffalse - -\DeclareOption{edtable}{\let\if@LN@edtable\iftrue} - -\DeclareOption{longtable}{\let\if@LN@edtable\iftrue - \PassOptionsToPackage{longtable}{edtable}} - -\DeclareOption{nolongtablepatch}{% - \PassOptionsToPackage{nolongtablepatch}{edtable}} - -% (/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. -% -% Options ~left~ (~right~) put the line numbers on the left -% (right) margin. This works in all modes. ~left~ is the -% default. - -\DeclareOption{left}{\leftlinenumbers*} - -\DeclareOption{right}{\rightlinenumbers*} - -% Option ~switch~ (~switch*~) puts the line numbers on the -% outer (inner) margin of the text. This requires running -% the pagewise mode, but we turn off the page offset -% subtraction, getting sort of running numbers again. The -% ~pagewise~ option may restore true pagewise mode later. - -\DeclareOption{switch}{\setpagewiselinenumbers - \switchlinenumbers - \runningpagewiselinenumbers} - -\DeclareOption{switch*}{\setpagewiselinenumbers - \switchlinenumbers*% - \runningpagewiselinenumbers} - -% 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~ -% options. - -\DeclareOption{columnwise}{\setpagewiselinenumbers - \columnwiselinenumberstrue - \realpagewiselinenumbers} - -% The options ~pagewise~ and ~running~ select the major -% linenumber mechanism. ~running~ line numbers refer to a real -% counter value, which can be reset for any paragraph, -% even getting multiple paragraphs on one page starting -% with line number one. ~pagewise~ line numbers get a -% unique hidden number within the document, but with the -% opportunity to establish the page on which they finally -% 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~. -% -% The order of declaration of the options is important here -% ~pagewise~ must come after ~switch~, to overide running -% pagewise mode. ~running~ comes last, to reset the running -% line number mode, e.g, after selecting margin switch mode -% for ~pagewise~ running. Once more, if you specify all -% three of the options ~[switch,pagewise,running]~, the -% result is almost nothing, but if you later say -% ~\pagewiselinenumbers~, you get margin switching, with -% real pagewise line numbers. -% -\DeclareOption{pagewise}{\setpagewiselinenumbers - \realpagewiselinenumbers} - -\DeclareOption{running}{\setrunninglinenumbers} - -% The option ~modulo~ causes only those linenumbers to be -% printed which are multiples of five. - -\DeclareOption{modulo}{\modulolinenumbers\relax} - -% Option ~modulo*~ modifies ~modulo~ in working like -% ~\modulolinenumbers*~---see section_\ref{s:UserCmds}. - -\DeclareOption{modulo*}{\modulolinenumbers*\relax} - -% The package option ~mathlines~ switches the behavior of -% the ~{linenomath}~ environment with its star-form. -% Without this option, the ~{linenomath}~ environment does -% not number the lines of the display, while the star-form -% does. With this option, its just the opposite. -% -%%% 1999-06-10: renamed ~displaymath~ to ~mathlines~. - -\DeclareOption{mathlines}{\linenumberdisplaymath} - -% ~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? - -\DeclareOption{displaymath}{\PackageWarningNoLine{lineno}{% - Option [displaymath] is obsolete -- default now!}} -%% -%%\let\do@mlineno\relax -%%\DeclareOption{displaymath}{\let\do@mlineno\@empty} -% (/New v4.3) -% -% \subsection{% -% 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 -% 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) - -\DeclareOption{hyperref}{\PackageWarningNoLine{lineno}{% - Option [hyperref] is obsolete. - \MessageBreak The hyperref package is detected automatically.}} - -\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{{}{}{}}% - }{% - \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 -% after the commas separating the option names in the ~\usepackage~ -% command (no comment marks needed). -% -% \subsection{% -% Execute options -% \unskip}\label{ss:ExOpt} -% -% 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. - -\if@LN@edtable \RequirePackage{edtable}[2005/03/07] \fi - -% (/New v4.1) -% -% \section{% -% Former package extensions -% \label{s:Xt}\unskip} -% -% 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) -% -% The standard \LaTeX\ display math environments are -% wrapped in a ~{linenomath}~ environment. -% -% (New 3.05) The ~[fleqn]~ option of the standard -% \LaTeX\ classes defines the display math -% environments such that line numbers appear just -% fine. Thus, we need not do any tricks when -% ~[fleqn]~ is loaded, as indicated by presents of -% the ~\mathindent~ register. (/New 3.05) -% -% (New 3.05a) for ~{eqnarray}~s we rather keep the -% old trick. (/New 3.05a) -% -% (New 3.08) Wrap ~\[~ and ~\]~ into ~{linenomath}~, -% instead of ~{displaymath}~. Also save the definition -% of ~\equation~, instead of replicating the current -% \LaTeX\ definition. (/New 3.08) - -%%\ifx\do@mlineno\@empty - \@ifundefined{mathindent}{ - -%% \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}% - {\linenomath\LN@equation}% - {\LN@endequation\endlinenomath}% -%% } - - }{}% \@ifundefined{mathindent} -- 3rd arg v4.2, was \par! - -%%\AtBeginDocument{% - \let\LN@eqnarray\eqnarray - \let\LN@endeqnarray\endeqnarray - \renewenvironment{eqnarray}% - {\linenomath\LN@eqnarray}% - {\LN@endeqnarray\endlinenomath}% -%%} - -%%\fi - -% (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 -% 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. -% And I use ~\newcommand~.) (v4.22) - -\let\@LN@iglobal\global % v4.22 - -\newcommand\internallinenumbers{\setrunninglinenumbers - \let\@@par\internallinenumberpar - \ifx\@par\@@@par\let\@par\internallinenumberpar\fi - \ifx\par\@@@par\let\par\internallinenumberpar\fi - \ifx\@par\linenumberpar\let\@par\internallinenumberpar\fi - \ifx\par\linenumberpar\let\par\internallinenumberpar\fi - \@ifnextchar[{\resetlinenumber}%] - {\@ifstar{\let\c@linenumber\c@internallinenumber - \let\@LN@iglobal\relax % v4.22 - \c@linenumber\@ne}{}}% - } - -\let\endinternallinenumbers\endlinenumbers -\@namedef{internallinenumbers*}{\internallinenumbers*} -\expandafter\let\csname endinternallinenumbers*\endcsname\endlinenumbers - -\newcount\c@internallinenumber -\newcount\c@internallinenumbers - -\newcommand\internallinenumberpar{% - \ifvmode\@@@par\else\ifinner\@@@par\else\@@@par - \begingroup - \c@internallinenumbers\prevgraf - \setbox\@tempboxa\hbox{\vbox{\makeinternalLinenumbers}}% - \dp\@tempboxa\prevdepth - \ht\@tempboxa\z@ - \nobreak\vskip-\prevdepth - \nointerlineskip\box\@tempboxa - \endgroup - \fi\fi - } - -\newcommand\makeinternalLinenumbers{% - \ifnum\c@internallinenumbers>\z@ % v4.2 - \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} -% -% This extension defines macros to refer to line -% numbers with an offset, e.g., to refer to a line -% which cannot be labeled directly (display math). -% This was formerly knows as ~rlineno.sty~. -% -% To refer to a pagewise line number with offset: -% \begin{quote} -% ~\linerefp[~~]{~