diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/tools/longtable.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/tools/longtable.sty | 115 |
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'. |