summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tools/longtable.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/tools/longtable.sty')
-rw-r--r--Master/texmf-dist/tex/latex/tools/longtable.sty115
1 files changed, 97 insertions, 18 deletions
diff --git a/Master/texmf-dist/tex/latex/tools/longtable.sty b/Master/texmf-dist/tex/latex/tools/longtable.sty
index 0da756ace51..aa19b28096a 100644
--- a/Master/texmf-dist/tex/latex/tools/longtable.sty
+++ b/Master/texmf-dist/tex/latex/tools/longtable.sty
@@ -12,7 +12,7 @@
%% reports for it can be opened at https://latex-project.org/bugs/
%% (but please observe conditions on bug reports sent to that address!)
%%
-%% Copyright (C) 1993-2023
+%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -36,14 +36,14 @@
%%
%% File: longtable.dtx Copyright (C) 1990-2020 David Carlisle
\NeedsTeXFormat{LaTeX2e}[1995/06/01]
-\providecommand\DeclareRelease[3]{}
-\providecommand\DeclareCurrentRelease[2]{}
+
+\DeclareRelease{}{1994-06-01}{longtable-2020-01-07.sty}
\DeclareRelease{v4.13}{2020-01-02}{longtable-2020-01-07.sty}
\DeclareCurrentRelease{}{2020-02-07}
\ProvidesPackage{longtable}
- [2023-11-01 v4.19 Multi-page Table package (DPC)]
+ [2024-04-26 v4.20 Multi-page Table package (DPC)]
\def\LT@err{\PackageError{longtable}}
\def\LT@warn{\PackageWarning{longtable}}
\def\LT@final@warn{%
@@ -99,10 +99,16 @@
\if@twocolumn
\LT@err{longtable not in 1-column mode}\@ehc
\fi
+ \UseTaggingSocket{tbl/vmode/begin}%
\begingroup
\@ifnextchar[\LT@array{\LT@array[x]}}
+\ExplSyntaxOn
\def\LT@array[#1]#2{%
- \refstepcounter{table}\stepcounter{LT@tables}%
+ \UseTaggingSocket{tbl/init}
+ \@kernel@refstepcounter{table}\stepcounter{LT@tables}
+ \tl_gset:Ne \@currentHref {table.\cs_if_exist_use:N\theHtable}
+ \tbl_gzero_row_count:
+ \UseTaggingSocket{tbl/longtable/init}
\if l#1%
\LTleft\z@ \LTright\fill
\else\if r#1%
@@ -116,7 +122,8 @@
\def\@tabarray{%
\let\hline\LT@@hl
\LT@@tabarray}%
- \let\\\LT@tabularcr\let\tabularnewline\\%
+ \let\\\LT@tabularcr
+ \let\tabularnewline\\%
\def\newpage{\noalign{\break}}%
\def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
\def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
@@ -142,19 +149,41 @@
\let\@sharp##\let\protect\relax
\begingroup
\@mkpream{#2}%
+ \tbl_count_table_cols:
\xdef\LT@bchunk{%
+ \tbl_inbetween_rows:
\global\advance\c@LT@chunks\@ne
\global\LT@rows\z@\setbox\z@\vbox\bgroup
\LT@setprevdepth
\tabskip\LTleft \noexpand\halign to\hsize\bgroup
- \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}%
+ \tabskip\z@ \@arstrut
+ \UseTaggingSocket{tbl/row/begin}%
+ \tbl_init_cell_data_for_row:
+ \@preamble \tabskip\LTright \cr}%
\endgroup
\expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
\LT@make@row
\m@th\let\par\@empty
- \everycr{}\lineskip\z@\baselineskip\z@
+ \everycr{%
+ \noalign{%
+ \__tbl_trace:n {--longtable-->~chunk~row:~ \the\LT@rows \space
+ row:~ \the\g__tbl_row_int \space
+ column:~ \the\g__tbl_col_int
+ }
+ \tbl_if_row_was_started:T
+ {
+ \UseTaggingSocket{tbl/row/end}
+ \tbl_inbetween_rows:
+ }
+ \int_compare:nNnT \LT@rows < \LTchunksize
+ { \tbl_gincr_row_count: } % next is row about to start
+ }%
+ }%
+ \lineskip\z@\baselineskip\z@
\LT@bchunk}
+\ExplSyntaxOff
\def\LT@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}}
+\ExplSyntaxOn
\def\LT@start{%
\let\LT@start\endgraf
\endgraf\penalty\z@\vskip\LTpre\endgraf
@@ -184,18 +213,23 @@
\else
\ifdim\pageshrink>\z@\pageshrink\z@\fi
\fi
- \global\@colroom\@colht
+ \global\@colroom\@colht
\ifvoid\LT@foot\else
\global\advance\vsize-\ht\LT@foot
\global\advance\@colroom-\ht\LT@foot
\dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@
\maxdepth\z@
\fi
+ \MakeLinkTarget{table}
\ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak
+ \UseTaggingSocket{tbl/longtable/head}
\output{\LT@output}}
+\ExplSyntaxOff
+\ExplSyntaxOn
\def\endlongtable{%
- \crcr
+ \tbl_crcr:n {endlongtable}
\noalign{%
+ \UseTaggingSocket{tbl/longtable/finalize}
\let\LT@entry\LT@entry@chop
\xdef\LT@save@row{\LT@save@row}}%
\LT@echunk
@@ -210,8 +244,8 @@
\fi
\ifx\LT@save@row\LT@@save@row
\else
- \LT@warn{Column \@width s have changed\MessageBreak
- in table \thetable}%
+ \LT@warn{Column~ widths~ have~ changed\MessageBreak
+ in~ table~ \thetable}%
\LT@final@warn
\fi
\endgraf\penalty -\LT@end@pen
@@ -223,7 +257,10 @@
\endgroup
\global\@mparbottom\z@
\endgraf\penalty\z@\addvspace\LTpost
- \ifvoid\footins\else\insert\footins{}\fi}
+ \ifvoid\footins\else\insert\footins{}\fi
+ \UseTaggingSocket{tbl/vmode/end}%
+}
+\ExplSyntaxOff
\def\LT@nofcols#1&{%
\futurelet\@let@token\LT@n@fcols}
\def\LT@n@fcols{%
@@ -241,9 +278,11 @@
{\LT@t@bularcr}}
\let\LT@crcr\crcr
\let\LT@setprevdepth\relax
+\ExplSyntaxOn
\def\LT@t@bularcr{%
\global\advance\LT@rows\@ne
\ifnum\LT@rows=\LTchunksize
+ \tbl_count_missing_cells:n {echunk}
\gdef\LT@setprevdepth{%
\prevdepth\z@
\global\let\LT@setprevdepth\relax}%
@@ -252,6 +291,7 @@
\ifnum0=`{}\fi
\expandafter\LT@LL@FM@cr
\fi}
+\ExplSyntaxOff
\def\LT@xtabularcr{%
\@ifnextchar[\LT@argtabularcr\LT@ntabularcr}
\def\LT@ntabularcr{%
@@ -370,6 +410,7 @@
\noalign{\ifnum0=`}\fi
\penalty\@M
\futurelet\@let@token\LT@@hline}
+\ExplSyntaxOn
\def\LT@@hline{%
\ifx\@let@token\hline
\global\let\@gtempa\@gobble
@@ -381,11 +422,16 @@
\ifnum0=`{\fi}%
\multispan\LT@cols
\unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
- \noalign{\LT@sep}%
+ \noalign{
+ \tbl_gdecr_row_count:
+ \LT@sep}
\multispan\LT@cols
\unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
- \noalign{\penalty\@M}%
+ \noalign{
+ \tbl_gdecr_row_count:
+ \penalty\@M}
\@gtempa}
+\ExplSyntaxOff
\def\LT@caption{%
\noalign\bgroup
\@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n}
@@ -411,10 +457,11 @@
\fi
\endgraf\vskip\baselineskip}%
\hss}}}
+\ExplSyntaxOn
\def\LT@output{%
\ifnum\outputpenalty <-\@Mi
\ifnum\outputpenalty > -\LT@end@pen
- \LT@err{floats and marginpars not allowed in a longtable}\@ehc
+ \LT@err{floats~ and~ marginpars~ not~ allowed~ in~ a~ longtable}\@ehc
\else
\setbox\z@\vbox{\unvbox\@cclv}%
\ifdim \ht\LT@lastfoot>\ht\LT@foot
@@ -430,24 +477,50 @@
\fi
\fi
\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi
+ \UseTaggingSocket{tbl/longtable/foot}
\fi
\else
\setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
+ \UseTaggingSocket{tbl/longtable/foot}
\@makecol
\@outputpage
\global\vsize\@colroom
\copy\LT@head\nobreak
\fi}
+\ExplSyntaxOff
+\ExplSyntaxOn
\def\LT@end@hd@ft#1{%
+ \tbl_if_row_was_started:TF
+ {
+ \tbl_count_missing_cells:n {head/foot}
+ \int_step_inline:nn
+ { \LT@rows + 1 }
+ {
+ \seq_gput_left:ce
+ {g__tbl_\cs_to_str:N #1 _rows_seq }
+ { \int_eval:n {\g__tbl_row_int + 1 - ##1 } }
+ }
+ \int_gset:Nn \LT@rows { \LTchunksize }
+ }
+
+ {
+ \crcr
+ \noalign{
+ \tbl_gdecr_row_count: % undo the increment
+ \int_gset:Nn \LT@rows { \LTchunksize }
+ }
+ }
\LT@echunk
\ifx\LT@start\endgraf
\LT@err
- {Longtable head or foot not at start of table}%
- {Increase LTchunksize}%
+ {Longtable~ head~ or~ foot~ not~ at~ start~ of~ table}%
+ {Increase~ LTchunksize}%
\fi
\setbox#1\box\z@
+ \__tbl_trace:n {-->>~ Saving~\noexpand#1}
\LT@get@widths
\LT@bchunk}
+\ExplSyntaxOff
\def\endfirsthead{\LT@end@hd@ft\LT@firsthead}
\def\endhead{\LT@end@hd@ft\LT@head}
\def\endfoot{\LT@end@hd@ft\LT@foot}
@@ -472,6 +545,12 @@
\long\def\LT@p@ftntext#1{%
\edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}%
\global\LT@p@ftn\expandafter{\@tempa{#1}}}%
+\ExplSyntaxOn
+ \seq_new:N \g__tbl_LT@firsthead_rows_seq
+ \seq_new:N \g__tbl_LT@head_rows_seq
+ \seq_new:N \g__tbl_LT@lastfoot_rows_seq
+ \seq_new:N \g__tbl_LT@foot_rows_seq
+\ExplSyntaxOff
\endinput
%%
%% End of file `longtable.sty'.