summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/lineno/tex/lineno.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/lineno/tex/lineno.sty')
-rw-r--r--macros/latex/contrib/lineno/tex/lineno.sty152
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