diff options
Diffstat (limited to 'macros/latex/contrib/lineno/tex/lineno.sty')
-rw-r--r-- | macros/latex/contrib/lineno/tex/lineno.sty | 152 |
1 files changed, 94 insertions, 58 deletions
diff --git a/macros/latex/contrib/lineno/tex/lineno.sty b/macros/latex/contrib/lineno/tex/lineno.sty index 03958a8589..440cd7bf86 100644 --- a/macros/latex/contrib/lineno/tex/lineno.sty +++ b/macros/latex/contrib/lineno/tex/lineno.sty @@ -3,7 +3,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \fi -\def\fileversion{v5.2} \def\filedate{2023/05/19} %VERSION +\def\fileversion{v5.3} \def\filedate{2023/05/20} %VERSION %%% Copyright 1995--2003 Stephan I. Böttcher %%% Copyright 2002--2005 Uwe Lück for versions 4.x and code from former Ednotes @@ -262,6 +262,8 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \ProvidesPackage{lineno} [\filedate\space line numbers on paragraphs \fileversion] %% +\RequirePackage{etoolbox} +\RequirePackage{kvoptions} %% 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 @@ -388,6 +390,10 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. %% v5.0 2022/07/30 KW: Merge in `linenoamsmath' patches %% v5.1 2023/01/19 KW: Patch `amsmath` with \AddToHook if possible. %% v5.2 2023/05/19 KW: Support `amsmath` option `\allowdisplaybreaks`. +%% v5.3 2023/05/20 KW: Handle special value of \prevdepth=-1000pt. +%% Add package options `sep' and `width' for +%% setting line number separation and width. +%% Add `twocolumn` support for `bframe` env. %% %% Acknowledgements: %% v3.06: Donald Arseneau, pointed to mparhack.sty. @@ -404,6 +410,9 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. %% 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. +%% v5.3: Yukai Chou and Frank Mittelbach for patches to handle special +%% value of \prevdepth=-1000pt, and add `twocolumn` support for +%% `bframe` env. % % % \section{% @@ -602,7 +611,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % horizontal mode, e.g, from ~\linelabel~. % % Sorry, neither a ~\linelabel~ nor a ~\marginpar~ should -% insert a penalty, else the following linenumber +% insert a penalty, else the following line number % could go to the next page. Nor should any other % float. So let us suppress the ~\interlinepenalty~ % altogether with the ~\@nobreak~ switch. @@ -914,10 +923,18 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % (New v4.4) The depth preserving trick is drawn here from % ~\MakeLineNo~ because it will be used again in % section_\ref{ss:calls}. +% (v5.3) Handle special value of ~\prevdepth=-1000pt~. (/v5.3) \def\@LN@depthbox{% - \dp\@tempboxa=\@tempdima - \nointerlineskip \kern-\@tempdima \box\@tempboxa} + \ifdim\@tempdima=-1000pt + % \nointerlineskip is already set so we don't need set it again + % (and we shouldn't back up) + \else + \dp\@tempboxa=\@tempdima + \nointerlineskip + \kern-\@tempdima + \fi + \box\@tempboxa} % (/New v4.4) % @@ -1531,8 +1548,8 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \newdimen\linenumbersep \newdimen\linenumberwidth -\linenumberwidth=10pt \linenumbersep=10pt +\linenumberwidth=10pt % Margin switching requires ~pagewise~ numbering mode, but % choosing the left or right margin for the numbers always @@ -1778,7 +1795,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \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\pageLN\relax % get the page number, compute the line number \let\nextLN\relax % move to the next page % During the end-document run through the aux-files, we @@ -1889,8 +1906,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \def\testNextNumberedPage#1{\ifx#1\relax \global\def\NumberedPageCache{\gotNumberedPage0000}% \PackageWarningNoLine{lineno}% - {Linenumber reference failed, - \MessageBreak rerun to get it right}% + {Line number reference failed, re-run to get it right}% \else \global\let\NumberedPageCache#1% \fi @@ -2312,7 +2328,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % % ~addpageno~ is due to a suggestion by Sergei Mariev. -\DeclareOption{addpageno}{% +\DeclareVoidOption{addpageno}{% \AtEndOfPackage{\RequirePackage{vplref}[2005/04/25]}} % \subsection{% @@ -2335,7 +2351,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % is postponed to ~\AtBeginDocument~ when we know whether these % adjustments are needed. -\DeclareOption{mathrefs}{\AtBeginDocument +\DeclareVoidOption{mathrefs}{\AtBeginDocument {\RequirePackage{ednmath0}[2004/08/20]}} % @@ -2401,12 +2417,12 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \let\if@LN@edtable\iffalse -\DeclareOption{edtable}{\let\if@LN@edtable\iftrue} +\DeclareVoidOption{edtable}{\let\if@LN@edtable\iftrue} -\DeclareOption{longtable}{\let\if@LN@edtable\iftrue +\DeclareVoidOption{longtable}{\let\if@LN@edtable\iftrue \PassOptionsToPackage{longtable}{edtable}} -\DeclareOption{nolongtablepatch}{% +\DeclareVoidOption{nolongtablepatch}{% \PassOptionsToPackage{nolongtablepatch}{edtable}} % (/New v4.1) @@ -2424,9 +2440,9 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % (right) margin. This works in all modes. ~left~ is the % default. -\DeclareOption{left}{\leftlinenumbers*} +\DeclareVoidOption{left}{\leftlinenumbers*} -\DeclareOption{right}{\rightlinenumbers*} +\DeclareVoidOption{right}{\rightlinenumbers*} % Option ~switch~ (~switch*~) puts the line numbers on the % outer (inner) margin of the text. This requires running @@ -2434,25 +2450,25 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % subtraction, getting sort of running numbers again. The % ~pagewise~ option may restore true pagewise mode later. -\DeclareOption{switch}{\setpagewiselinenumbers - \switchlinenumbers - \runningpagewiselinenumbers} +\DeclareVoidOption{switch}{\setpagewiselinenumbers + \switchlinenumbers + \runningpagewiselinenumbers} -\DeclareOption{switch*}{\setpagewiselinenumbers - \switchlinenumbers*% - \runningpagewiselinenumbers} +\DeclareVoidOption{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} +\DeclareVoidOption{columnwise}{\setpagewiselinenumbers + \columnwiselinenumberstrue + \realpagewiselinenumbers} % The options ~pagewise~ and ~running~ select the major -% linenumber mechanism. ~running~ line numbers refer to a real +% line number 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 @@ -2473,20 +2489,20 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % ~\pagewiselinenumbers~, you get margin switching, with % real pagewise line numbers. % -\DeclareOption{pagewise}{\setpagewiselinenumbers - \realpagewiselinenumbers} +\DeclareVoidOption{pagewise}{\setpagewiselinenumbers + \realpagewiselinenumbers} -\DeclareOption{running}{\setrunninglinenumbers} +\DeclareVoidOption{running}{\setrunninglinenumbers} % The option ~modulo~ causes only those linenumbers to be % printed which are multiples of five. -\DeclareOption{modulo}{\modulolinenumbers\relax} +\DeclareVoidOption{modulo}{\modulolinenumbers\relax} % Option ~modulo*~ modifies ~modulo~ in working like % ~\modulolinenumbers*~---see section_\ref{s:UserCmds}. -\DeclareOption{modulo*}{\modulolinenumbers*\relax} +\DeclareVoidOption{modulo*}{\modulolinenumbers*\relax} % The package option ~mathlines~ switches the behavior of % the ~{linenomath}~ environment with its star-form. @@ -2496,7 +2512,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % %%% 1999-06-10: renamed ~displaymath~ to ~mathlines~. -\DeclareOption{mathlines}{\linenumberdisplaymath} +\DeclareVoidOption{mathlines}{\linenumberdisplaymath} % ~displaymath~ now calls for wrappers of the standard % \LaTeX\ display math environment. This was previously @@ -2509,13 +2525,26 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % ~\endlinenomath~ provides ~\ignorespaces~, so what could go % wrong now? -\DeclareOption{displaymath}{\PackageWarningNoLine{lineno}{% - Option [displaymath] is obsolete -- default now!}} -%% +\DeclareVoidOption{displaymath}{% + \PackageWarningNoLine{lineno}{Option [displaymath] is obsolete}} + %%\let\do@mlineno\relax %%\DeclareOption{displaymath}{\let\do@mlineno\@empty} % (/New v4.3) % +% (New v5.3) Options `sep' and `width' set ~\linenumbersep~ (the separation of +% the line number to the text) and ~\linenumberwidth~ (the width of the line +% number box on the right margin) respectively; see section_\ref{s:CustHooks}. + +\DeclareStringOption[\linenumbersep]{sep} +\DeclareStringOption[\linenumberwidth]{width} +\AtBeginDocument{% + \linenumbersep=\lineno@sep% + \linenumberwidth=\lineno@width% +} + +% (/New v5.3) +% % \subsection{% % Compatibility with \texttt{hyperref} %% own subsec. v4.3. % \unskip} @@ -2536,9 +2565,8 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % 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.}} +\DeclareVoidOption{hyperref}{% + \PackageWarningNoLine{lineno}{Option [hyperref] is obsolete}} \AtBeginDocument{% \@ifpackageloaded{nameref}{% @@ -2589,7 +2617,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % We stop declaring options and execute the ones that are % called by the user. (/New v4.1) -\ProcessOptions +\ProcessKeyvalOptions* % (New v4.1) Now we know whether ~edtable.sty~ is wanted % and (if it is) with which options it is to be called. @@ -2717,10 +2745,16 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \begingroup \c@internallinenumbers\prevgraf \setbox\@tempboxa\hbox{\vbox{\makeinternalLinenumbers}}% - \dp\@tempboxa\prevdepth \ht\@tempboxa\z@ - \nobreak\vskip-\prevdepth - \nointerlineskip\box\@tempboxa + \ifdim\prevdepth=-1000pt + % \nointerlineskip is already set so we don't need set it again + % (and we shouldn't back up) + \else + \dp\@tempboxa\prevdepth + \nobreak\vskip-\prevdepth + \nointerlineskip + \fi + \box\@tempboxa \endgroup \fi\fi } @@ -2838,9 +2872,9 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \newenvironment{bframe} {\par - \@tempdima\textwidth + \@tempdima\columnwidth \advance\@tempdima 2\bframesep - \setbox\bframebox\hb@xt@\textwidth{% + \setbox\bframebox\hb@xt@\columnwidth{% \hskip-\bframesep \vrule\@width\bframerule\@height\baselineskip\@depth\bframesep \advance\@tempdima-2\bframerule @@ -2858,10 +2892,12 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \def\makeLineNumber{\copy\bframebox\hss}% } {\par - \kern-\prevdepth + \ifdim\prevdepth=-1000pt \else + \kern-\prevdepth + \fi \kern\bframesep \nointerlineskip - \@tempdima\textwidth + \@tempdima\columnwidth \advance\@tempdima 2\bframesep \hbox{\hskip-\bframesep \vrule\@width\@tempdima\@height\bframerule\@depth\z@}% @@ -2885,7 +2921,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % demonstration. % (/New v5.0) % -% (/New v5.1) ~lineno~ tries to use \LaTeX's hook management system to patch +% (New v5.1) ~lineno~ tries to use \LaTeX's hook management system to patch % ~amsmath~, so that the two packages may be loaded independently. This requires % the October 2020 release of \LaTeX. As a fallback for older releases, ~lineno~ % tests whether ~amsmath~ had already been loaded (by testing for the presence @@ -2893,7 +2929,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % has not been loaded, no patches are applied, and a warning is issued. % (/New v5.1) % -% (/New v5.2) Fix ~lineno~ to work with ~amsmath~'s ~\allowdisplaybreaks~ +% (New v5.2) Fix ~lineno~ to work with ~amsmath~'s ~\allowdisplaybreaks~ % option. A side effect is that now ~\\*~ suppresses a line number on that % line. This is because ~\\*~ prohibits a page break after a given line, and % ~lineno~ basically works by hijacking page breaks. It's probably not possible @@ -2901,16 +2937,14 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % (/New v5.2) % -\RequirePackage{etoolbox} - \ifdefined\AddToHook \def\linenoamsmath@patches#1{\AddToHook{package/amsmath/after}{#1}} \else \ifdefined\endgather \def\linenoamsmath@patches#1{#1} \else - \PackageWarning{lineno}{% - `amsmath' must be loaded before `lineno' for patches to be applied} + \PackageWarningNoLine{lineno}% + {`amsmath' must be loaded before `lineno' for patches to be applied} \def\linenoamsmath@patches#1{\relax} \fi \fi @@ -3181,8 +3215,8 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % \unskip} % % (New v4.1) We have completed inclusion of the earlier -% extension packages ~linenox0.sty~, ~linenox1.sty~, and -% ~lnopatch.sty~. If one of them is loaded, though, +% extension packages ~linenox0.sty~, ~linenox1.sty~, ~lnopatch.sty~, +% and ~linenoamsmath~. If one of them is loaded, though, % we produce an error message before something weird happens. % We avoid ~\newif~ because the switchings occur so rarely. @@ -3191,10 +3225,12 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. \@ifpackageloaded{linenox0}{\let\if@LN@obsolete\iftrue}\relax \@ifpackageloaded{linenox1}{\let\if@LN@obsolete\iftrue}\relax \@ifpackageloaded{lnopatch}{\let\if@LN@obsolete\iftrue}\relax + \@ifpackageloaded{linenoamsmath}{\let\if@LN@obsolete\iftrue}\relax \if@LN@obsolete \PackageError{lineno}{Obsolete extension package(s)}{% - With lineno.sty version 4.00 or later,\MessageBreak - linenox0/linenox1/lnopatch.sty must no longer be loaded.}% + As of \fileversion, `lineno' includes the functionality of \MessageBreak + `linenox0', `linenox1', `lnopatch', and `linenoamsmath'; \MessageBreak + these packages are therefore obsolete and must not be loaded.}% \fi } @@ -3384,7 +3420,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % % \subsection{% % Customization hooks -% \unskip} +% \unskip}\label{s:CustHooks} % % There are several hooks to customize the appearance of the % line numbers, and some low level hooks for special @@ -3412,7 +3448,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % the right margin. % % The default definition is \par$\qquad$ -% ~\linenumberfont\hskip\linenumbersep\hskip\textwidth~ \par$\qquad$ +% ~\linenumberfont\hskip\linenumbersep\hskip\columnwidth~ \par$\qquad$ % ~\hbox to\linenumberwidth{\hss\LineNumber}\hss~ % \item % [|\linenumberfont] \ \par @@ -3421,7 +3457,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them. % \item % [|\linenumbersep] \ \par % This dimension register sets the separation of the -% linenumber to the text. Default value is ~10pt~. +% line number to the text. Default value is ~10pt~. % \item % [|\linenumberwidth] \ \par % This dimension register sets the width of the line |