From a2cb14c79c7bddbc66ccb34a824d2140e3d464bf Mon Sep 17 00:00:00 2001 From: Frank Mittelbach Date: Tue, 10 Dec 2024 15:55:47 +0100 Subject: [PATCH] Tagging gh762 (spacing after math displays) (#1573) * WIP, just some tests * aproaches to solve tagging 762 * WIP * one test * and a bit more doc (WIP) * WIP * drop the debugging * test + doc * another test + changelog * one more * and another six * placeholder in ltnews * Update required/latex-lab/latex-lab-math.dtx Co-authored-by: Joseph Wright * a real ltnews entry --------- Co-authored-by: Joseph Wright --- base/doc/ltnews41.tex | 51 +- required/latex-lab/changes.txt | 12 +- required/latex-lab/latex-lab-block.dtx | 46 +- required/latex-lab/latex-lab-math.dtx | 46 +- required/latex-lab/testfiles-LM/LM-3-3.tlg | 10 +- .../blocks-description-01b.luatex.tlg | 8 +- .../blocks-description-01b.tlg | 8 +- .../blocks-description-03.luatex.tlg | 2 +- .../testfiles-block/blocks-description-03.tlg | 2 +- .../blocks-itemize-02.luatex.tlg | 2 +- .../testfiles-block/blocks-itemize-02.tlg | 2 +- .../math-suspended-gh661.tlg | 1 + .../testfiles-math/math-suspended-gh661.tlg | 1 + .../testfiles-math/mathcapture-016.tlg | 1 + .../testfiles-math/mtag-005-intertext.tlg | 2 + .../latex-lab/testfiles-math/mtag-tlc3.tlg | 5 +- .../latex-lab/testfiles-math/tagging-762.lvt | 184 ++++++ .../latex-lab/testfiles-math/tagging-762.tlg | 553 ++++++++++++++++++ .../testfiles-table-pdftex/table-016-math.tlg | 6 + required/latex-lab/update-math-all.sh | 1 + 20 files changed, 905 insertions(+), 38 deletions(-) create mode 100644 required/latex-lab/testfiles-math/tagging-762.lvt create mode 100644 required/latex-lab/testfiles-math/tagging-762.tlg diff --git a/base/doc/ltnews41.tex b/base/doc/ltnews41.tex index 85be7ba21..ee1914c56 100644 --- a/base/doc/ltnews41.tex +++ b/base/doc/ltnews41.tex @@ -73,12 +73,19 @@ {github issue#1 #2}% )}% \par\smallskip} -%% But Chris has to mostly disable \href for his TEXPAD app: -%% \def\href #1#2{#2} % Only For Chris' deficient TeX engine % simple solution right now (just link to the first issue if there are more) \def\getfirstgithubissue#1 #2\relax{#1} + +\providecommand\taggingissue[2][]{\ifhmode\unskip\fi + \quad\penalty500\strut\nobreak\hfill + \mbox{\small\slshape(% + \href{https://github.com/latex3/tagging-project/issues/\getfirstgithubissue#2 \relax}% + {tagging-project issue#1 #2}% + )}% + \par\smallskip} + \providecommand\sxissue[1]{\ifhmode\unskip \else % githubissue preceding @@ -180,6 +187,44 @@ \section{Replacement for the legacy mark mechanism} +\section{News from Tagged PDF project} + +\emph{to write} + +\subsection{Fixing the spacing after display math} + +When \LaTeX{} produces an accessible (tagged) PDF it has to add +structure data into the PDF to mark (i.e., tag) individual +elements. If the \pdfTeX{} engine is used this has to be done with the +help of \cs{pdfliteral}s which are whatsit nodes like +\cs{special} or \cs{write}. This means that they should be added only in +places, where these extra nodes are not affecting the spacing\Dash \TeX{} +can't, for example, look backwards past such a whatsit node so +consecutive spaces that are normally collapsed into one, suddenly +appear both, if such a node separates them. + +The situation is especially complicated with math displays, because +there \TeX{} adds penalties and spaces with low-level procedures, that +are not directly accessible from the macro level, and the tagging +structures have to appear somewhere in the middle of that to ensure +that the formula and the PDF structures are not separated by page +break. Because of this it is necessary to use some fairly complex +methods (essentially disable \TeX's mechanisms and reprogram them on +the macro level) to get the structure data in the right places. + +Our first attempt in doing that was slightly faulty and resulted in +some cases in an extra space (an additional \cs{parskip} space when +there shouldn't be one). This has now corrected and the gymnastics to +achieve this are rather an \enquote{interesting} study in obfuscated +\TeX{} coding. + +In \LuaTeX{} the situation is much better because there the structures can +be added later when the formula processing has already finished. +% +\taggingissue{762} + + + \section{New or improved commands} \section{Code improvements} @@ -249,8 +294,6 @@ \subsection{Fix the use of \texttt{localmathalpabets}} \githubissue[s]{1101 1028} - - %\section{Changes to packages in the \pkg{amsmath} category} %\section{Changes to packages in the \pkg{graphics} category} diff --git a/required/latex-lab/changes.txt b/required/latex-lab/changes.txt index 300e2f0c8..b4672a9b0 100644 --- a/required/latex-lab/changes.txt +++ b/required/latex-lab/changes.txt @@ -1,7 +1,15 @@ +2024-12-01 Frank Mittelbach + + * latex-lab-block.dtx (subsection{Handling \tn{par} after the end of the list}): + Handle \parskip after $$display correctly (tagging/762) + + * latex-lab-math.dtx (subsection{Content grabbing}): + Handle \parskip after $$display correctly (tagging/762) + 2024-11-26 Ulrike Fischer - * latex-lab-math.dtx: changed handling of math/mathml/structelem to handle + * latex-lab-math.dtx: changed handling of math/mathml/structelem to handle fakemath better(tagging/764) - * latex-lab-math.dtx: made all main math sockets tagging sockets and + * latex-lab-math.dtx: made all main math sockets tagging sockets and assign the plugs directly. * disable para tagging also in $$-display (tagging/765) diff --git a/required/latex-lab/latex-lab-block.dtx b/required/latex-lab/latex-lab-block.dtx index 2399d1562..7dd6accf2 100644 --- a/required/latex-lab/latex-lab-block.dtx +++ b/required/latex-lab/latex-lab-block.dtx @@ -9,8 +9,8 @@ % % https://www.latex-project.org/lppl.txt % -\def\ltlabblockdate{2024-11-25} -\def\ltlabblockversion{0.8w} +\def\ltlabblockdate{2024-12-01} +\def\ltlabblockversion{0.8x} %<*driver> \documentclass[kernel]{l3doc} \usepackage{amstext} @@ -765,6 +765,25 @@ \def\@doendpe{\@endpetrue \def\par { +% \end{macrocode} +% If we are processing a \verb=$$= math display and we encounter a real +% \cs{par} after it, we need to add a \cs{parskip} when tagging is +% done, because the one +% added by \TeX{} is always canceled by the processing in +% \cs{__math_tag_dollardollar_display_end:} in that case. This is +% signaled by the global legacy switch \texttt{@domathendpe} which is set +% to true in that case. Once the skip is applied we set it to +% false. If there is no \cs{par} at all, it will be reset in +% \cs{everypar} when the next paragraph starts. +% \changes{v0.8x}{2024/12/01}{Handle \cs{parskip} after \texttt{\$\$} +% display (tagging/762)} +% \begin{macrocode} + \if@domathendpe +% \typeout{------->~ add~ another~ parskip~ that~ is~ +% not~ canceled:~ \the\parskip } + \skip_vertical:n { \tex_parskip:D } + \@domathendpefalse + \fi \@restorepar \clubpenalty\@clubpenalty % \end{macrocode} @@ -787,6 +806,14 @@ \everypar{{\setbox\z@\lastbox} \everypar{} \@endpefalse +% \end{macrocode} +% Not sure what is faster: testing for the status of the switch or +% setting it unconditionally to false (globally), probably roughly the same, +% so we set it always: +% \begin{macrocode} +% \if@domathendpe + \@domathendpefalse +% \fi } } % \end{macrocode} @@ -800,6 +827,21 @@ % \end{macro} % % +% \begin{macro}{\if@domathendpe,\@domathendpefalse,\@domathendpetrue} +% Signal that special paragraph handling after a math display is required. +% \changes{v0.8x}{2024/12/01}{Handle \cs{parskip} after \texttt{\$\$} +% display (tagging/762)} +% \begin{macrocode} +\newif\if@domathendpe +\def\@domathendpefalse{\global\let\if@domathendpe\iffalse} +\def\@domathendpetrue {\global\let\if@domathendpe\iftrue} +% \end{macrocode} +% \end{macro} +% +% +% +% +% % \subsection{Object and template interfaces} % % diff --git a/required/latex-lab/latex-lab-math.dtx b/required/latex-lab/latex-lab-math.dtx index 7ff1e7427..f53c69185 100644 --- a/required/latex-lab/latex-lab-math.dtx +++ b/required/latex-lab/latex-lab-math.dtx @@ -19,8 +19,8 @@ % for those people who are interested or want to report an issue. % % -\def\ltlabmathdate{2024-11-26} -\def\ltlabmathversion{0.6j} +\def\ltlabmathdate{2024-12-01} +\def\ltlabmathversion{0.6k} % %<*driver> \documentclass{l3doc} @@ -1991,30 +1991,54 @@ % \ShowTagging{struct-stack} \para_raw_end: % \end{macrocode} -% The \cs{postdisplaypenalty} was temporarily set to 10000 inside -% the display and the \cs{belowdisplayskip} and the +% The \cs{postdisplaypenalty} was temporarily set +% to 10000 inside the display and the \cs{belowdisplayskip} and the % \cs{belowdisplayshortskip} was negated, so whatever was inserted -% it should have been a negative skip. Whatever skip was added we -% pick it ups value up here, so that we can correct the spacing -% after the tagging code was inserted. +% it should have been a negative skip. Whatever +% was added, we pick up the value up, so that we can correct +% the spacing after the tagging code was inserted. % \begin{macrocode} \l_@@_tmpa_skip \lastskip \tag_socket_use:n{math/display/formula/end} % \end{macrocode} -% Now we add a skip without indroducing a page break possibility, +% Now we add a skip without introducing a page break possibility, % that should bring the current vertical position back to the point % where \TeX{} would add the penalty and the \enquote{below skip}. % \changes{v0.6f}{2024-09-30}{Correct logic for inserting below skips % after displays (tagging/721)} % \begin{macrocode} \nobreak - \skip_vertical:n { -\l_@@_tmpa_skip } % remove the negative belowdisplayskip + \skip_vertical:n { -\l_@@_tmpa_skip } % \end{macrocode} -% Then we finally add the real stuff: +% Then we finally add the real stuff: the true \cs{postdisplaypenalty} +% and then negated value of skip we saved from above. It may look +% strange that we have two identical negated skips next to each +% other, but if you think about it, that is correct: the first +% cancels the \enquote{below skip} that \TeX{} had added and the +% second puts the same amount after the penalty (which is where it +% should be). % \begin{macrocode} \penalty \postdisplaypenalty \skip_vertical:n { -\l_@@_tmpa_skip } % insert the correct skip - \@doendpe % this has no \end{...} to take care of it +% \end{macrocode} +% As we are now in vertical mode the situation is different from +% the way \TeX{} would handle things after a display: \TeX{} would +% internally switch to horizontal mode without adding a +% \cs{parskip}. But this is not possible to do on the macro +% level. Therefore we have to neutralize the upcoming \cs{parskip} +% since we can't prevent it from being set. +% \changes{v0.6k}{2024/12/01}{Handle \cs{parskip} after \texttt{\$\$} +% display correctly (tagging/762)} +% \begin{macrocode} +% \typeout{------->~ add~ negative~ parskip~ (to~ cancel~ the~ +% one~ that~ TeX~ will~ add)} + \skip_vertical:n { -\tex_parskip:D } +% \end{macrocode} +% +% We also set the \texttt{@domathendpetrue} flag to signal that the +% \begin{macrocode} + \@domathendpetrue + \@doendpe % this has no \end{...} to take care of it } % \end{macrocode} diff --git a/required/latex-lab/testfiles-LM/LM-3-3.tlg b/required/latex-lab/testfiles-LM/LM-3-3.tlg index e2b0ed8b7..a6ffc6bb0 100644 --- a/required/latex-lab/testfiles-LM/LM-3-3.tlg +++ b/required/latex-lab/testfiles-LM/LM-3-3.tlg @@ -515,6 +515,11 @@ Package tagpdf Info: Parent-Child 'P' --> 'MC'. (tagpdf) Rolemapped from: 'P' --> 'MC' on line ... Package tagpdf Info: closing structure 79 tagged /text Package tagpdf Info: closing structure 78 tagged /text-unit +The sequence \g__tag_mc_main_marks_seq contains the items (without outer braces): +> {e+} +> {5} +> {9}. +[1] Package tagpdf Info: closing structure 75 tagged /Sect Package tagpdf Info: Parent-Child 'Sect' --> 'Sect'. (tagpdf) Relation is 1 (='0..n') @@ -556,11 +561,6 @@ Package tagpdf Info: Parent-Child 'P' --> 'MC'. (tagpdf) Rolemapped from: 'P' --> 'MC' on line ... Package tagpdf Info: closing structure 85 tagged /text Package tagpdf Info: closing structure 84 tagged /text-unit -The sequence \g__tag_mc_main_marks_seq contains the items (without outer braces): -> {e+} -> {5} -> {9}. -[1] Package tagpdf Info: closing structure 81 tagged /Sect Package tagpdf Info: Parent-Child 'Sect' --> 'Sect'. (tagpdf) Relation is 1 (='0..n') diff --git a/required/latex-lab/testfiles-block/blocks-description-01b.luatex.tlg b/required/latex-lab/testfiles-block/blocks-description-01b.luatex.tlg index d013d84c4..eba74c2a6 100644 --- a/required/latex-lab/testfiles-block/blocks-description-01b.luatex.tlg +++ b/required/latex-lab/testfiles-block/blocks-description-01b.luatex.tlg @@ -399,7 +399,7 @@ The sequence \g__tag_struct_tag_stack_seq contains the items (without outer brac l. ... \typeout{-->A}\ShowTagging{struct-stack} \show\par > \par=macro: -->\@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . +->\if@domathendpe \skip_vertical:n {\tex_parskip:D }\@domathendpefalse \fi \@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . l. ......out{-->A}\ShowTagging{struct-stack}\show\par ===> @endpe: true ==> blockenv common ending on input line ... @@ -421,7 +421,7 @@ The sequence \g__tag_struct_tag_stack_seq contains the items (without outer brac l. ... \typeout{-->B}\ShowTagging{struct-stack} \show\par > \par=macro: -->\@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . +->\if@domathendpe \skip_vertical:n {\tex_parskip:D }\@domathendpefalse \fi \@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . l. ......out{-->B}\ShowTagging{struct-stack}\show\par ===> @endpe: true Package tagpdf Info: closing structure 22 tagged /text-unit @@ -467,7 +467,7 @@ The sequence \g__tag_struct_tag_stack_seq contains the items (without outer brac l. ... \typeout{-->C}\ShowTagging{struct-stack} \show\par > \par=macro: -->\@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . +->\if@domathendpe \skip_vertical:n {\tex_parskip:D }\@domathendpefalse \fi \@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . l. ......out{-->C}\ShowTagging{struct-stack}\show\par ===> @endpe: false ==> blockenv common ending on input line ... @@ -485,7 +485,7 @@ The sequence \g__tag_struct_tag_stack_seq contains the items (without outer brac l. ... \typeout{-->D}\ShowTagging{struct-stack} \show\par > \par=macro: -->\@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . +->\if@domathendpe \skip_vertical:n {\tex_parskip:D }\@domathendpefalse \fi \@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . l. ......out{-->D}\ShowTagging{struct-stack}\show\par ===> @endpe: true ==> flattened=false on input line ... diff --git a/required/latex-lab/testfiles-block/blocks-description-01b.tlg b/required/latex-lab/testfiles-block/blocks-description-01b.tlg index 1ed1df9ef..7fbf86085 100644 --- a/required/latex-lab/testfiles-block/blocks-description-01b.tlg +++ b/required/latex-lab/testfiles-block/blocks-description-01b.tlg @@ -399,7 +399,7 @@ The sequence \g__tag_struct_tag_stack_seq contains the items (without outer brac l. ... \typeout{-->A}\ShowTagging{struct-stack} \show\par > \par=macro: -->\@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . +->\if@domathendpe \skip_vertical:n {\tex_parskip:D }\@domathendpefalse \fi \@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . l. ......t{-->A}\ShowTagging{struct-stack}\show\par ===> @endpe: true ==> blockenv common ending on input line ... @@ -421,7 +421,7 @@ The sequence \g__tag_struct_tag_stack_seq contains the items (without outer brac l. ... \typeout{-->B}\ShowTagging{struct-stack} \show\par > \par=macro: -->\@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . +->\if@domathendpe \skip_vertical:n {\tex_parskip:D }\@domathendpefalse \fi \@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . l. ......t{-->B}\ShowTagging{struct-stack}\show\par ===> @endpe: true Package tagpdf Info: closing structure 22 tagged /text-unit @@ -467,7 +467,7 @@ The sequence \g__tag_struct_tag_stack_seq contains the items (without outer brac l. ... \typeout{-->C}\ShowTagging{struct-stack} \show\par > \par=macro: -->\@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . +->\if@domathendpe \skip_vertical:n {\tex_parskip:D }\@domathendpefalse \fi \@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . l. ......t{-->C}\ShowTagging{struct-stack}\show\par ===> @endpe: false ==> blockenv common ending on input line ... @@ -485,7 +485,7 @@ The sequence \g__tag_struct_tag_stack_seq contains the items (without outer brac l. ... \typeout{-->D}\ShowTagging{struct-stack} \show\par > \par=macro: -->\@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . +->\if@domathendpe \skip_vertical:n {\tex_parskip:D }\@domathendpefalse \fi \@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . l. ......t{-->D}\ShowTagging{struct-stack}\show\par ===> @endpe: true ==> flattened=false on input line ... diff --git a/required/latex-lab/testfiles-block/blocks-description-03.luatex.tlg b/required/latex-lab/testfiles-block/blocks-description-03.luatex.tlg index 4b45494d2..258891096 100644 --- a/required/latex-lab/testfiles-block/blocks-description-03.luatex.tlg +++ b/required/latex-lab/testfiles-block/blocks-description-03.luatex.tlg @@ -107,7 +107,7 @@ The sequence \g__tag_struct_tag_stack_seq contains the items (without outer brac l. ... \typeout{-->B}\ShowTagging{struct-stack} \show\par > \par=macro: -->\@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . +->\if@domathendpe \skip_vertical:n {\tex_parskip:D }\@domathendpefalse \fi \@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . l. ......out{-->B}\ShowTagging{struct-stack}\show\par ==> flattened=false on input line ... ==> Structure-end text-unit after displayblock on input line ... diff --git a/required/latex-lab/testfiles-block/blocks-description-03.tlg b/required/latex-lab/testfiles-block/blocks-description-03.tlg index 8c937b8bb..fc1315151 100644 --- a/required/latex-lab/testfiles-block/blocks-description-03.tlg +++ b/required/latex-lab/testfiles-block/blocks-description-03.tlg @@ -107,7 +107,7 @@ The sequence \g__tag_struct_tag_stack_seq contains the items (without outer brac l. ... \typeout{-->B}\ShowTagging{struct-stack} \show\par > \par=macro: -->\@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . +->\if@domathendpe \skip_vertical:n {\tex_parskip:D }\@domathendpefalse \fi \@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . l. ......t{-->B}\ShowTagging{struct-stack}\show\par ==> flattened=false on input line ... ==> Structure-end text-unit after displayblock on input line ... diff --git a/required/latex-lab/testfiles-block/blocks-itemize-02.luatex.tlg b/required/latex-lab/testfiles-block/blocks-itemize-02.luatex.tlg index da4779be2..48b72138a 100644 --- a/required/latex-lab/testfiles-block/blocks-itemize-02.luatex.tlg +++ b/required/latex-lab/testfiles-block/blocks-itemize-02.luatex.tlg @@ -63,7 +63,7 @@ The sequence \g__tag_struct_tag_stack_seq contains the items (without outer brac l. ...\typeout{-->A}\ShowTagging{struct-stack} \show\par\makeatletter\typeout{==... > \par=macro: -->\@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . +->\if@domathendpe \skip_vertical:n {\tex_parskip:D }\@domathendpefalse \fi \@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . l. ......out{-->A}\ShowTagging{struct-stack}\show\par \makeatletter\typeout{==>@... ==>@endpe true diff --git a/required/latex-lab/testfiles-block/blocks-itemize-02.tlg b/required/latex-lab/testfiles-block/blocks-itemize-02.tlg index 663a35ce1..14068a1aa 100644 --- a/required/latex-lab/testfiles-block/blocks-itemize-02.tlg +++ b/required/latex-lab/testfiles-block/blocks-itemize-02.tlg @@ -63,7 +63,7 @@ The sequence \g__tag_struct_tag_stack_seq contains the items (without outer brac l. ...\typeout{-->A}\ShowTagging{struct-stack} \show\par\makeatletter\typeout{... > \par=macro: -->\@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . +->\if@domathendpe \skip_vertical:n {\tex_parskip:D }\@domathendpefalse \fi \@restorepar \clubpenalty \@clubpenalty \__kernel_displayblock_doendpe: \@endpefalse \everypar {}\par . l. ......t{-->A}\ShowTagging{struct-stack}\show\par \makeatletter\typeout{==>@... ==>@endpe true diff --git a/required/latex-lab/testfiles-math-luatex/math-suspended-gh661.tlg b/required/latex-lab/testfiles-math-luatex/math-suspended-gh661.tlg index d617cf6c2..84d0f5762 100644 --- a/required/latex-lab/testfiles-math-luatex/math-suspended-gh661.tlg +++ b/required/latex-lab/testfiles-math-luatex/math-suspended-gh661.tlg @@ -141,6 +141,7 @@ Completed box being shipped out [1] ...\glue 6.0 plus 3.0 minus 3.0 ...\penalty 0 ...\glue 6.0 plus 3.0 minus 3.0 +...\glue 0.0 plus -1.0 ...\glue(\parskip) 0.0 plus 1.0 ...\glue(\parskip) 0.0 ...\glue(\baselineskip) 7.69446 diff --git a/required/latex-lab/testfiles-math/math-suspended-gh661.tlg b/required/latex-lab/testfiles-math/math-suspended-gh661.tlg index 32b304ee8..972eacf90 100644 --- a/required/latex-lab/testfiles-math/math-suspended-gh661.tlg +++ b/required/latex-lab/testfiles-math/math-suspended-gh661.tlg @@ -151,6 +151,7 @@ Completed box being shipped out [1] ...\glue 6.0 plus 3.0 minus 3.0 ...\penalty 0 ...\glue 6.0 plus 3.0 minus 3.0 +...\glue 0.0 plus -1.0 ...\glue(\parskip) 0.0 plus 1.0 ...\glue(\parskip) 0.0 ...\glue(\baselineskip) 7.6955 diff --git a/required/latex-lab/testfiles-math/mathcapture-016.tlg b/required/latex-lab/testfiles-math/mathcapture-016.tlg index 2278ef0e1..021a1cb2c 100644 --- a/required/latex-lab/testfiles-math/mathcapture-016.tlg +++ b/required/latex-lab/testfiles-math/mathcapture-016.tlg @@ -100,6 +100,7 @@ Completed box being shipped out [1] ...\glue 10.0 plus 2.0 minus 5.0 ...\penalty 0 ...\glue 10.0 plus 2.0 minus 5.0 +...\glue 0.0 plus -1.0 ...\glue(\parskip) 0.0 plus 1.0 ...\glue(\parskip) 0.0 ...\glue(\baselineskip) 4.27946 diff --git a/required/latex-lab/testfiles-math/mtag-005-intertext.tlg b/required/latex-lab/testfiles-math/mtag-005-intertext.tlg index 16df30ddf..36156cf16 100644 --- a/required/latex-lab/testfiles-math/mtag-005-intertext.tlg +++ b/required/latex-lab/testfiles-math/mtag-005-intertext.tlg @@ -208,6 +208,8 @@ Completed box being shipped out [1] ...\glue 10.0 plus 2.0 minus 5.0 ...\penalty 0 ...\glue 10.0 plus 2.0 minus 5.0 +...\glue 0.0 plus -1.0 +...\glue 0.0 plus 1.0 ...\glue -3.60004 ...\glue 0.0 plus 1.0fil ...\glue 0.0 plus -1.0fil diff --git a/required/latex-lab/testfiles-math/mtag-tlc3.tlg b/required/latex-lab/testfiles-math/mtag-tlc3.tlg index db8ac7a51..0a37803eb 100644 --- a/required/latex-lab/testfiles-math/mtag-tlc3.tlg +++ b/required/latex-lab/testfiles-math/mtag-tlc3.tlg @@ -153,13 +153,13 @@ f &= g \label {eq:1A} \\ f' &= g' \label {eq:1B} \\ \mathcal {L}f &= \mathcal {L ====>tmpmathcontent=macro:-> \mathcal {L}f &= \mathcal {L}g \label {eq:1C} ====>result=macro:-> \mathcal {L}f &= \mathcal {L}g \label {eq:1C} ====>tmpmathcontent=macro:-> +[3] ----------------------------------- Math env align f &= g \label {eq:2A} \\ f' &= g' \label {eq:2B} \\ \mathcal {L}f &= \mathcal {L}g + K \label {eq:2C} ====>first-result=macro:->f &= g \label {eq:2A} ====>first-tmpmathcontent=macro:-> f' &= g' \label {eq:2B} \\ \mathcal {L}f &= \mathcal {L}g + K \label {eq:2C} ====>formula has subparts -[3] ====>result=macro:-> f' &= g' \label {eq:2B} ====>tmpmathcontent=macro:-> \mathcal {L}f &= \mathcal {L}g + K \label {eq:2C} ====>result=macro:-> \mathcal {L}f &= \mathcal {L}g + K \label {eq:2C} @@ -369,13 +369,13 @@ Math env gather* ====>tmpmathcontent=macro:-> \aunderbrace ['1'] {\smash [b]{(a+b)}}\nolimits ^2 = \aunderbrace ['1,[5pt]1'] {\smash [b]{\; a^2+2ab+b^2}} ====>result=macro:-> \aunderbrace ['1'] {\smash [b]{(a+b)}}\nolimits ^2 = \aunderbrace ['1,[5pt]1'] {\smash [b]{\; a^2+2ab+b^2}} ====>tmpmathcontent=macro:-> +[7] ----------------------------------- Math env multline* f(x)=a_0+a_1x+a_2x^2+ \overbrace [B]{a_3x^3 + a_4x^4 + \dots + a_{i-1}x^{i-1} + \enspace } ^{\text {some explanation}} \\ \overbrace [e]{\enspace a_ix^i + a_{i+1}x^{i+1}} + \dots + a_{n-1}x^{n-1} ====>first-result=macro:->f(x)=a_0+a_1x+a_2x^2+ \overbrace [B]{a_3x^3 + a_4x^4 + \dots + a_{i-1}x^{i-1} + \enspace } ^{\text {some explanation}} ====>first-tmpmathcontent=macro:-> \overbrace [e]{\enspace a_ix^i + a_{i+1}x^{i+1}} + \dots + a_{n-1}x^{n-1} ====>formula has subparts -[7] ====>result=macro:-> \overbrace [e]{\enspace a_ix^i + a_{i+1}x^{i+1}} + \dots + a_{n-1}x^{n-1} ====>tmpmathcontent=macro:-> Overfull \hbox (9.0542pt too wide) detected at line 434 @@ -546,3 +546,4 @@ Overfull \hbox (9.0542pt too wide) detected at line 434 [15] [16] [17] +[18] diff --git a/required/latex-lab/testfiles-math/tagging-762.lvt b/required/latex-lab/testfiles-math/tagging-762.lvt new file mode 100644 index 000000000..644022c57 --- /dev/null +++ b/required/latex-lab/testfiles-math/tagging-762.lvt @@ -0,0 +1,184 @@ +\DocumentMetadata{ testphase = { phase-III, math }} + +\documentclass{article} + +\input{regression-test} + +\usepackage{amsmath} + + +\parskip=77pt + +\begin{document} +\START +Some Text +$$A$$ % not really supported but ... +% +More + +WWW +$$B$$ + +XXX + +\showoutput + +AAAA +\begin{align} + a& =b +\end{align} +BBBB +\begin{align} + x& =y +\end{align} + +abc +\begin{itemize} +\item A +\end{itemize} +def +\begin{itemize} +\item B +\end{itemize} + +xyz + +\newpage +\OMIT +\end{document} + + +%%%% Some notes on the approach ... + + +\ExplSyntaxOn +\makeatletter + +% Its a bit complicated, at least I wasn't able to figure out a +% simpler approach. strategy 1 changes the parskip (which makes +% perhaps a bit better tracing output). strategy 2 uses a negative +% skip up front and if necessary cancels that again so if the real +% parskip comes along it survives. +% +% Both use a boolean to do this, so it makes all \@doendpe a tiny +% bit slower. Alternative would be to implement 1 or 2 in a +% separate macro but then this needs to also have its own recursion +% out of any grouping, not sure that is worth it. + +\newif\if@domathendpe +\def\@domathendpefalse{\global\let\if@domathendpe\iffalse} +\def\@domathendpetrue {\global\let\if@domathendpe\iftrue} + +\def\@doendpe{\@endpetrue +% \if@domathendpe +% \saved@parskip\parskip +% \typeout{------->~ saving~ parskip:~ \the\parskip} +% \parskip \z@ +% \fi + \def\par + { +% +% strategy 1 +% \if@domathendpe +% \parskip \saved@parskip +% \typeout{------->~ restoring~ parskip~in~par:~ \the\parskip} +% \@domathendpefalse +% \fi +% +% strategy 2 + \if@domathendpe + \typeout{------->~ cancel~ the~ negatice~ parskip~(so~ + upcoming~ parskip~ takes~ effect):~ \the\parskip } + \skip_vertical:n { \tex_parskip:D } + \@domathendpefalse + \fi + \@restorepar + \clubpenalty\@clubpenalty +% \end{macrocode} +% At this point we add the tagging code that closes an open +% \struct{text-unit}, \struct{text} tag combination, +% if necessary: +% \begin{macrocode} + \__kernel_displayblock_doendpe: +% \end{macrocode} +% +% The standard \cs{par} command (\cs{par_end:}) acts on +% \texttt{@endpe} and attempts to close a still open \texttt{text-unit} +% and this would be wrong if it was already closed above. So we +% have to reset the switch to false first. +% \begin{macrocode} + \@endpefalse + \everypar{} + \par + } + \everypar{{\setbox\z@\lastbox} + \everypar{} + \@endpefalse +% +% strategy 1 +% \if@domathendpe +% \parskip \saved@parskip +% \typeout{------->~ restoring~ parskip~in~everypar:~ \the\parskip} +% \@domathendpefalse +% \fi +% +% strategy 2 + \if@domathendpe + \@domathendpefalse + \fi + } +} + + +\cs_set_protected:Npn \__math_tag_dollardollar_display_end: + { + % \typeout{== tag dollarldollar display end} + % \ShowTagging{struct-stack} + \para_raw_end: +% \end{macrocode} +% TODO why is that needed? where is para-tagging disabled? +% \begin{macrocode} + \tagpdfparaOn +% \end{macrocode} +% The \cs{postdisplaypenalty} was temporarily set to 10000 inside +% the display and the \cs{belowdisplayskip} and the +% \cs{belowdisplayshortskip} was negated, so whatever was inserted +% it should have been a negative skip. Whatever skip was added we +% pick it ups value up here, so that we can correct the spacing +% after the tagging code was inserted. +% \begin{macrocode} + \l__math_tmpa_skip \lastskip + \tag_socket_use:n{math/display/formula/end} +% \end{macrocode} +% Now we add a skip without indroducing a page break possibility, +% that should bring the current vertical position back to the point +% where \TeX{} would add the penalty and the \enquote{below skip}. +% \changes{v0.6f}{2024-09-30}{Correct logic for inserting below skips +% after displays (tagging/721)} +% \begin{macrocode} + \nobreak + \skip_vertical:n { -\l__math_tmpa_skip } % remove the negative belowdisplayskip +% \end{macrocode} +% Then we finally add the real stuff: +% \begin{macrocode} + \penalty \postdisplaypenalty + \skip_vertical:n { -\l__math_tmpa_skip } % insert the correct skip +% +% \begin{macrocode} +% +% strategy 1 +% \@domathendpetrue +% +% +% strategy 2 + \@domathendpetrue + \skip_vertical:n { -\tex_parskip:D } + \typeout{------->~ negative~ parskip~(to~ cancel~ upcoming~ one)} + \@doendpe % this has no \end{...} to take care of it +} + + +\newskip \saved@parskip + +\makeatother +\ExplSyntaxOff diff --git a/required/latex-lab/testfiles-math/tagging-762.tlg b/required/latex-lab/testfiles-math/tagging-762.tlg new file mode 100644 index 000000000..d3c8fdb65 --- /dev/null +++ b/required/latex-lab/testfiles-math/tagging-762.tlg @@ -0,0 +1,553 @@ +This is a generated file for the l3build validation system. +Don't change this file in any respect. +====>first-result=macro:->A +====>first-tmpmathcontent=macro:-> +====>formula has no subparts +====>first-result=macro:->B +====>first-tmpmathcontent=macro:-> +====>formula has no subparts +====>first-result=macro:->a& =b +====>first-tmpmathcontent=macro:-> +====>formula has no subparts +====>first-result=macro:->x& =y +====>first-tmpmathcontent=macro:-> +====>formula has no subparts +Completed box being shipped out [1] +\vbox(633.0+0.0)x407.0 +.\hbox(0.0+0.0)x0.0 +..\pdfinterwordspaceon +.\hbox(0.0+0.0)x0.0 +..\kern -72.26999 +..\vbox(0.0+0.0)x0.0, glue set 72.26999fil +...\kern -72.26999 +...\hbox(0.0+0.0)x0.0 +....\glue 0.0 plus 1.0fil minus 1.0fil +...\glue 0.0 plus 1.0fil minus 1.0fil +.\glue 16.0 +.\vbox(617.0+0.0)x345.0, shifted 62.0 +..\vbox(12.0+0.0)x345.0, glue set 12.0fil +...\glue 0.0 plus 1.0fil +...\pdfrunninglinkoff +...\pdfliteral page{/Artifact BMC} +...\marks4{b-,18,-1,} +...\marks4{b+,18,-1,} +...\hbox(0.0+0.0)x345.0 +....\hbox(0.0+0.0)x345.0 +...\pdfliteral page{EMC} +...\marks4{e-,18,21,} +...\marks4{e+,18,21,} +...\pdfrunninglinkon +..\glue 25.0 +..\glue(\lineskip) 0.0 +..\vbox(550.0+0.0)x345.0, glue set >20000.0fil +...\hbox(0.0+0.0)x0.0 +...\write-{} +...\glue(\topskip) 3.1128 +...\hbox(6.8872+0.0)x345.0, glue set 283.34473fil +....\write1{\new@label@record{mcid-1}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{1}{tagmcid}{\__property_code_tagmcid: }}} +....\pdfliteral shipout page{/text <> BDC} +....\hbox(0.0+0.0)x15.0 +....\T1/cmr/m/n/10 S +....\T1/cmr/m/n/10 o +....\T1/cmr/m/n/10 m +....\T1/cmr/m/n/10 e +....\glue 3.33252 plus 1.66626 minus 1.11084 +....\T1/cmr/m/n/10 T +....\kern-0.83313 +....\T1/cmr/m/n/10 e +....\T1/cmr/m/n/10 x +....\T1/cmr/m/n/10 t +....\penalty 10000 +....\glue(\parfillskip) 0.0 plus 1.0fil +....\glue(\rightskip) 0.0 +...\marks4{b-,1,6,text,,,} +...\marks4{b+,1,6,text,,,} +...\penalty 10000 +...\glue(\abovedisplayshortskip) 0.0 plus 3.0 +...\glue(\baselineskip) 5.16669 +...\hbox(6.83331+0.0)x7.50002, shifted 168.75, display +....\pdfliteral page{EMC} +....\write1{\new@label@record{mcid-2}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{2}{tagmcid}{\__property_code_tagmcid: }}} +....\pdfliteral shipout page{/Formula <> BDC} +....\OML/cmm/m/it/10 A +...\marks4{e-,1,6,} +...\marks4{e+,1,6,} +...\marks4{b-,2,7,Formula,,,} +...\marks4{b+,2,7,Formula,,,} +...\penalty 10000 +...\glue(\belowdisplayshortskip) -6.0 plus -3.0 minus -3.0 +...\pdfliteral page{EMC} +...\marks4{e-,2,7,} +...\marks4{e+,2,7,} +...\penalty 10000 +...\glue 6.0 plus 3.0 minus 3.0 +...\penalty 0 +...\glue 6.0 plus 3.0 minus 3.0 +...\glue -77.0 +...\glue(\parskip) 77.0 +...\glue(\parskip) 0.0 +...\glue(\baselineskip) 5.1128 +...\hbox(6.8872+0.0)x345.0, glue set 322.47772fil +....\write1{\new@label@record{mcid-3}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{3}{tagmcid}{\__property_code_tagmcid: }}} +....\pdfliteral shipout page{/text <> BDC} +....\T1/cmr/m/n/10 M +....\T1/cmr/m/n/10 o +....\T1/cmr/m/n/10 r +....\T1/cmr/m/n/10 e +....\pdfliteral page{EMC} +....\penalty 10000 +....\glue(\parfillskip) 0.0 plus 1.0fil +....\glue(\rightskip) 0.0 +...\marks4{b-,3,8,text,,,} +...\marks4{b+,3,8,text,,,} +...\marks4{e-,3,8,} +...\marks4{e+,3,8,} +...\glue(\parskip) 77.0 +...\glue(\parskip) 0.0 +...\glue(\baselineskip) 5.1128 +...\hbox(6.8872+0.0)x345.0, glue set 299.1742fil +....\write1{\new@label@record{mcid-4}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{4}{tagmcid}{\__property_code_tagmcid: }}} +....\pdfliteral shipout page{/text <> BDC} +....\hbox(0.0+0.0)x15.0 +....\T1/cmr/m/n/10 W +....\T1/cmr/m/n/10 W +....\T1/cmr/m/n/10 W +....\penalty 10000 +....\glue(\parfillskip) 0.0 plus 1.0fil +....\glue(\rightskip) 0.0 +...\marks4{b-,4,10,text,,,} +...\marks4{b+,4,10,text,,,} +...\penalty 10000 +...\glue(\abovedisplayshortskip) 0.0 plus 3.0 +...\glue(\baselineskip) 5.16669 +...\hbox(6.83331+0.0)x8.0868, shifted 168.4566, display +....\pdfliteral page{EMC} +....\write1{\new@label@record{mcid-5}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{5}{tagmcid}{\__property_code_tagmcid: }}} +....\pdfliteral shipout page{/Formula <> BDC} +....\OML/cmm/m/it/10 B +....\kern0.50172 +...\marks4{e-,4,10,} +...\marks4{e+,4,10,} +...\marks4{b-,5,11,Formula,,,} +...\marks4{b+,5,11,Formula,,,} +...\penalty 10000 +...\glue(\belowdisplayshortskip) -6.0 plus -3.0 minus -3.0 +...\pdfliteral page{EMC} +...\marks4{e-,5,11,} +...\marks4{e+,5,11,} +...\penalty 10000 +...\glue 6.0 plus 3.0 minus 3.0 +...\penalty 0 +...\glue 6.0 plus 3.0 minus 3.0 +...\glue -77.0 +...\glue 77.0 +...\glue(\parskip) 77.0 +...\glue(\parskip) 0.0 +...\glue(\baselineskip) 5.1128 +...\hbox(6.8872+0.0)x345.0, glue set 307.5055fil +....\write1{\new@label@record{mcid-6}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{6}{tagmcid}{\__property_code_tagmcid: }}} +....\pdfliteral shipout page{/text <> BDC} +....\hbox(0.0+0.0)x15.0 +....\T1/cmr/m/n/10 X +....\T1/cmr/m/n/10 X +....\T1/cmr/m/n/10 X +....\pdfliteral page{EMC} +....\penalty 10000 +....\glue(\parfillskip) 0.0 plus 1.0fil +....\glue(\rightskip) 0.0 +...\marks4{b-,6,13,text,,,} +...\marks4{b+,6,13,text,,,} +...\marks4{e-,6,13,} +...\marks4{e+,6,13,} +...\glue(\parskip) 77.0 +...\glue(\parskip) 0.0 +...\glue(\baselineskip) 5.1128 +...\hbox(6.8872+0.0)x345.0, glue set 296.6748fil +....\write1{\new@label@record{mcid-7}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{7}{tagmcid}{\__property_code_tagmcid: }}} +....\pdfliteral shipout page{/text <> BDC} +....\hbox(0.0+0.0)x15.0 +....\T1/cmr/m/n/10 A +....\T1/cmr/m/n/10 A +....\T1/cmr/m/n/10 A +....\T1/cmr/m/n/10 A +....\glue 3.33252 plus 1.66458 minus 1.11194 +....\pdfliteral page{EMC} +....\write1{\new@label@record{mcid-8}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{8}{tagmcid}{\__property_code_tagmcid: }}} +....\pdfliteral shipout page{/Formula <> BDC} +....\penalty 10000 +....\glue(\parfillskip) 0.0 plus 1.0fil +....\glue(\rightskip) 0.0 +...\marks4{b-,7,15,text,,,} +...\marks4{b+,7,15,text,,,} +...\marks4{e-,7,15,} +...\marks4{e+,7,15,} +...\marks4{b-,8,16,Formula,,,} +...\marks4{b+,8,16,Formula,,,} +...\penalty 10000 +...\glue(\abovedisplayskip) 10.0 plus 2.0 minus 5.0 +...\glue -3.0 +...\glue 0.0 +...\glue(\baselineskip) 6.60004 +...\hbox(8.39996+3.60004)x345.0, display +....\glue(\tabskip) 161.04462 +....\hbox(8.39996+3.60004)x5.28589 +.....\glue 0.0 plus 1.0fil +.....\hbox(8.39996+3.60004)x0.0 +......\vbox(8.39996+3.60004)x0.0 +.......\kern 0.0 +.......\hbox(8.39996+3.60004)x0.0 +........\rule(8.39996+3.60004)x0.0 +.....\hbox(4.30554+0.0)x5.28589 +......\mathon +......\OML/cmm/m/it/10 a +......\mathoff +....\glue(\tabskip) 0.0 +....\hbox(8.39996+3.60004)x17.62488 +.....\hbox(6.94444+0.0)x17.62488 +......\mathon +......\hbox(6.94444+0.0)x17.62488 +.......\hbox(0.0+0.0)x0.0 +.......\glue(\thickmuskip) 2.77771 plus 2.77771 +.......\OT1/cmr/m/n/10 = +.......\glue(\thickmuskip) 2.77771 plus 2.77771 +.......\OML/cmm/m/it/10 b +......\mathoff +.....\glue 0.0 plus 1.0fil +....\glue(\tabskip) 161.04462 +....\hbox(8.39996+3.60004)x0.0 +.....\kern -161.04462 +.....\kern 161.04462 +.....\hbox(8.39996+3.60004)x0.0, glue set - 12.77466fil +......\glue 0.0 plus 1.0fil minus 1.0fil +......\hbox(8.39996+3.60004)x12.77466 +.......\hbox(8.39996+3.60004)x0.0 +........\vbox(8.39996+3.60004)x0.0 +.........\kern 0.0 +.........\hbox(8.39996+3.60004)x0.0 +..........\rule(8.39996+3.60004)x0.0 +.......\pdfliteral page{EMC} +.......\marks4{e-,8,16,} +.......\marks4{e+,8,16,} +.......\write1{\new@label@record{mcid-9}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{9}{tagmcid}{\__property_code_tagmcid: }}} +.......\pdfliteral shipout page{/Lbl <> BDC} +.......\marks4{b-,9,17,Lbl,,,} +.......\marks4{b+,9,17,Lbl,,,} +.......\hbox(7.49817+2.49939)x12.77466 +........\T1/cmr/m/n/10 ( +........\T1/cmr/m/n/10 1 +........\kern 0.0 +........\T1/cmr/m/n/10 ) +.......\pdfliteral page{EMC} +.......\marks4{e-,9,17,} +.......\marks4{e+,9,17,} +.......\write1{\new@label@record{mcid-10}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{10}{tagmcid}{\__property_code_tagmcid: }}} +.......\pdfliteral shipout page{/Formula <> BDC} +.......\marks4{b-,10,16,Formula,,,} +.......\marks4{b+,10,16,Formula,,,} +....\glue(\tabskip) 0.0 +...\penalty 10000 +...\glue 0.0 +...\penalty 10000 +...\glue(\belowdisplayskip) -10.0 plus -2.0 minus -5.0 +...\pdfliteral page{EMC} +...\marks4{e-,10,16,} +...\marks4{e+,10,16,} +...\penalty 10000 +...\glue 10.0 plus 2.0 minus 5.0 +...\penalty 0 +...\glue 10.0 plus 2.0 minus 5.0 +...\glue -77.0 +...\glue(\parskip) 77.0 +...\glue(\parskip) 0.0 +...\glue(\baselineskip) 1.51276 +...\hbox(6.8872+0.0)x345.0, glue set 313.34106fil +....\write1{\new@label@record{mcid-11}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{11}{tagmcid}{\__property_code_tagmcid: }}} +....\pdfliteral shipout page{/text <> BDC} +....\T1/cmr/m/n/10 B +....\T1/cmr/m/n/10 B +....\T1/cmr/m/n/10 B +....\T1/cmr/m/n/10 B +....\glue 3.33252 plus 1.66458 minus 1.11194 +....\pdfliteral page{EMC} +....\write1{\new@label@record{mcid-12}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{12}{tagmcid}{\__property_code_tagmcid: }}} +....\pdfliteral shipout page{/Formula <> BDC} +....\penalty 10000 +....\glue(\parfillskip) 0.0 plus 1.0fil +....\glue(\rightskip) 0.0 +...\marks4{b-,11,18,text,,,} +...\marks4{b+,11,18,text,,,} +...\marks4{e-,11,18,} +...\marks4{e+,11,18,} +...\marks4{b-,12,19,Formula,,,} +...\marks4{b+,12,19,Formula,,,} +...\penalty 10000 +...\glue(\abovedisplayskip) 10.0 plus 2.0 minus 5.0 +...\glue -3.0 +...\glue 0.0 +...\glue(\baselineskip) 6.60004 +...\hbox(8.39996+3.60004)x345.0, display +....\glue(\tabskip) 160.34496 +....\hbox(8.39996+3.60004)x5.71527 +.....\glue 0.0 plus 1.0fil +.....\hbox(8.39996+3.60004)x0.0 +......\vbox(8.39996+3.60004)x0.0 +.......\kern 0.0 +.......\hbox(8.39996+3.60004)x0.0 +........\rule(8.39996+3.60004)x0.0 +.....\hbox(4.30554+0.0)x5.71527 +......\mathon +......\OML/cmm/m/it/10 x +......\mathoff +....\glue(\tabskip) 0.0 +....\hbox(8.39996+3.60004)x18.59482 +.....\hbox(4.30554+1.94444)x18.59482 +......\mathon +......\hbox(4.30554+1.94444)x18.59482 +.......\hbox(0.0+0.0)x0.0 +.......\glue(\thickmuskip) 2.77771 plus 2.77771 +.......\OT1/cmr/m/n/10 = +.......\glue(\thickmuskip) 2.77771 plus 2.77771 +.......\OML/cmm/m/it/10 y +.......\kern0.35878 +......\mathoff +.....\glue 0.0 plus 1.0fil +....\glue(\tabskip) 160.34496 +....\hbox(8.39996+3.60004)x0.0 +.....\kern -160.34496 +.....\kern 160.34496 +.....\hbox(8.39996+3.60004)x0.0, glue set - 12.77466fil +......\glue 0.0 plus 1.0fil minus 1.0fil +......\hbox(8.39996+3.60004)x12.77466 +.......\hbox(8.39996+3.60004)x0.0 +........\vbox(8.39996+3.60004)x0.0 +.........\kern 0.0 +.........\hbox(8.39996+3.60004)x0.0 +..........\rule(8.39996+3.60004)x0.0 +.......\pdfliteral page{EMC} +.......\marks4{e-,12,19,} +.......\marks4{e+,12,19,} +.......\write1{\new@label@record{mcid-13}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{13}{tagmcid}{\__property_code_tagmcid: }}} +.......\pdfliteral shipout page{/Lbl <> BDC} +.......\marks4{b-,13,20,Lbl,,,} +.......\marks4{b+,13,20,Lbl,,,} +.......\hbox(7.49817+2.49939)x12.77466 +........\T1/cmr/m/n/10 ( +........\T1/cmr/m/n/10 2 +........\kern 0.0 +........\T1/cmr/m/n/10 ) +.......\pdfliteral page{EMC} +.......\marks4{e-,13,20,} +.......\marks4{e+,13,20,} +.......\write1{\new@label@record{mcid-14}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{14}{tagmcid}{\__property_code_tagmcid: }}} +.......\pdfliteral shipout page{/Formula <> BDC} +.......\marks4{b-,14,19,Formula,,,} +.......\marks4{b+,14,19,Formula,,,} +....\glue(\tabskip) 0.0 +...\penalty 10000 +...\glue 0.0 +...\penalty 10000 +...\glue(\belowdisplayskip) -10.0 plus -2.0 minus -5.0 +...\pdfliteral page{EMC} +...\marks4{e-,14,19,} +...\marks4{e+,14,19,} +...\penalty 10000 +...\glue 10.0 plus 2.0 minus 5.0 +...\penalty 0 +...\glue 10.0 plus 2.0 minus 5.0 +...\glue -77.0 +...\glue 77.0 +...\glue(\parskip) 77.0 +...\glue(\parskip) 0.0 +...\glue(\baselineskip) 1.51276 +...\hbox(6.8872+0.0)x345.0, glue set 314.72595fil +....\write1{\new@label@record{mcid-15}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{15}{tagmcid}{\__property_code_tagmcid: }}} +....\pdfliteral shipout page{/text <> BDC} +....\hbox(0.0+0.0)x15.0 +....\T1/cmr/m/n/10 a +....\T1/cmr/m/n/10 b +....\kern0.27771 +....\T1/cmr/m/n/10 c +....\pdfliteral page{EMC} +....\penalty 10000 +....\glue(\parfillskip) 0.0 plus 1.0fil +....\glue(\rightskip) 0.0 +...\marks4{b-,15,22,text,,,} +...\marks4{b+,15,22,text,,,} +...\marks4{e-,15,22,} +...\marks4{e+,15,22,} +...\kern 0.0 +...\hbox(0.0+0.0)x0.0 +...\glue 0.0 +...\glue 0.0 plus 0.0001fil +..\pdfrunninglinkoff +..\pdfliteral page{/Artifact BMC} +..\marks4{b-,19,-1,} +..\marks4{b+,19,-1,} +..\glue(\baselineskip) 23.5849 +..\hbox(6.4151+0.0)x345.0 +...\hbox(6.4151+0.0)x345.0, glue set 170.00061fil +....\glue 0.0 plus 1.0fil +....\T1/cmr/m/n/10 1 +....\glue 0.0 plus 1.0fil +..\pdfliteral page{EMC} +..\marks4{e-,19,21,} +..\marks4{e+,19,21,} +..\pdfrunninglinkon +.\kern 0.0 +.\kern 0.0 +Completed box being shipped out [2] +\vbox(633.0+0.0)x407.0 +.\hbox(0.0+0.0)x0.0 +..\kern -72.26999 +..\vbox(0.0+0.0)x0.0, glue set 72.26999fil +...\kern -72.26999 +...\hbox(0.0+0.0)x0.0 +....\glue 0.0 plus 1.0fil minus 1.0fil +...\glue 0.0 plus 1.0fil minus 1.0fil +.\glue 16.0 +.\vbox(617.0+0.0)x345.0, shifted 62.0 +..\vbox(12.0+0.0)x345.0, glue set 12.0fil +...\glue 0.0 plus 1.0fil +...\pdfrunninglinkoff +...\pdfliteral page{/Artifact BMC} +...\marks4{b-,24,-1,} +...\marks4{b+,24,-1,} +...\hbox(0.0+0.0)x345.0 +....\hbox(0.0+0.0)x345.0 +...\pdfliteral page{EMC} +...\marks4{e-,24,2,} +...\marks4{e+,24,2,} +...\pdfrunninglinkon +..\glue 25.0 +..\glue(\lineskip) 0.0 +..\vbox(550.0+0.0)x345.0, glue set 248.9734fil +...\hbox(0.0+0.0)x0.0 +...\glue(\topskip) 3.1128 +...\hbox(6.8872+0.0)x320.0061, glue set 312.50793fil, shifted 24.9939 +....\hbox(4.37393+0.0)x0.0 +.....\glue -24.9939 +.....\hbox(4.37393+0.0)x19.99512, glue set 14.99634fil +......\glue 0.0 plus 1.0fil minus 1.0fil +......\hbox(4.37393+0.0)x4.99878 +.......\write1{\new@label@record{mcid-16}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{16}{tagmcid}{\__property_code_tagmcid: }}} +.......\pdfliteral shipout page{/Lbl <> BDC} +.......\marks4{b-,16,25,Lbl,,,} +.......\marks4{b+,16,25,Lbl,,,} +.......\hbox(0.0+0.0)x0.0 +.......\TS1/cmr/m/n/10 ^^88 +.......\pdfliteral page{EMC} +.......\marks4{e-,16,25,} +.......\marks4{e+,16,25,} +.....\glue 4.99878 +....\write1{\new@label@record{mcid-17}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{17}{tagmcid}{\__property_code_tagmcid: }}} +....\pdfliteral shipout page{/text <> BDC} +....\penalty 0 +....\T1/cmr/m/n/10 A +....\pdfliteral page{EMC} +....\penalty 10000 +....\glue(\parfillskip) 0.0 plus 1.0fil +....\glue(\rightskip) 0.0 +...\marks4{b-,17,28,text,,,} +...\marks4{b+,17,28,text,,,} +...\marks4{e-,17,28,} +...\marks4{e+,17,28,} +...\penalty -51 +...\glue 8.0 plus 2.0 minus 4.0 +...\glue(\parskip) 77.0 +...\glue(\parskip) 0.0 +...\glue(\baselineskip) 5.1128 +...\hbox(6.8872+0.0)x345.0, glue set 331.94763fil +....\write1{\new@label@record{mcid-20}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{20}{tagmcid}{\__property_code_tagmcid: }}} +....\pdfliteral shipout page{/text <> BDC} +....\T1/cmr/m/n/10 d +....\T1/cmr/m/n/10 e +....\T1/cmr/m/n/10 f +....\pdfliteral page{EMC} +....\penalty 10000 +....\glue(\parfillskip) 0.0 plus 1.0fil +....\glue(\rightskip) 0.0 +...\marks4{b-,20,29,text,,,} +...\marks4{b+,20,29,text,,,} +...\marks4{e-,20,29,} +...\marks4{e+,20,29,} +...\penalty -51 +...\glue 85.0 plus 2.0 minus 4.0 +...\glue -85.0 plus -2.0 minus -4.0 +...\glue 81.0 minus 3.0 +...\glue(\parskip) 4.0 plus 2.0 minus 1.0 +...\glue(\parskip) 0.0 +...\glue(\baselineskip) 5.1128 +...\hbox(6.8872+0.0)x320.0061, glue set 312.9245fil, shifted 24.9939 +....\hbox(4.37393+0.0)x0.0 +.....\glue -24.9939 +.....\hbox(4.37393+0.0)x19.99512, glue set 14.99634fil +......\glue 0.0 plus 1.0fil minus 1.0fil +......\hbox(4.37393+0.0)x4.99878 +.......\write1{\new@label@record{mcid-21}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{21}{tagmcid}{\__property_code_tagmcid: }}} +.......\pdfliteral shipout page{/Lbl <> BDC} +.......\marks4{b-,21,32,Lbl,,,} +.......\marks4{b+,21,32,Lbl,,,} +.......\hbox(0.0+0.0)x0.0 +.......\TS1/cmr/m/n/10 ^^88 +.......\pdfliteral page{EMC} +.......\marks4{e-,21,32,} +.......\marks4{e+,21,32,} +.....\glue 4.99878 +....\write1{\new@label@record{mcid-22}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{22}{tagmcid}{\__property_code_tagmcid: }}} +....\pdfliteral shipout page{/text <> BDC} +....\penalty 0 +....\T1/cmr/m/n/10 B +....\pdfliteral page{EMC} +....\penalty 10000 +....\glue(\parfillskip) 0.0 plus 1.0fil +....\glue(\rightskip) 0.0 +...\marks4{b-,22,35,text,,,} +...\marks4{b+,22,35,text,,,} +...\marks4{e-,22,35,} +...\marks4{e+,22,35,} +...\penalty -51 +...\glue 8.0 plus 2.0 minus 4.0 +...\glue(\parskip) 77.0 +...\glue(\parskip) 0.0 +...\glue(\baselineskip) 7.6955 +...\hbox(4.3045+1.94397)x345.0, glue set 315.00366fil +....\write1{\new@label@record{mcid-23}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{23}{tagmcid}{\__property_code_tagmcid: }}} +....\pdfliteral shipout page{/text <> BDC} +....\hbox(0.0+0.0)x15.0 +....\T1/cmr/m/n/10 x +....\T1/cmr/m/n/10 y +....\T1/cmr/m/n/10 z +....\pdfliteral page{EMC} +....\penalty 10000 +....\glue(\parfillskip) 0.0 plus 1.0fil +....\glue(\rightskip) 0.0 +...\marks4{b-,23,37,text,,,} +...\marks4{b+,23,37,text,,,} +...\marks4{e-,23,37,} +...\marks4{e+,23,37,} +...\glue -1.94397 +...\glue 0.0 plus 1.0fil +...\glue 0.0 plus -1.0fil +...\kern 0.0 +...\hbox(0.0+0.0)x0.0 +...\glue 0.0 plus 1.0fil +...\glue 0.0 +...\glue 0.0 plus 0.0001fil +..\pdfrunninglinkoff +..\pdfliteral page{/Artifact BMC} +..\marks4{b-,25,-1,} +..\marks4{b+,25,-1,} +..\glue(\baselineskip) 23.5849 +..\hbox(6.4151+0.0)x345.0 +...\hbox(6.4151+0.0)x345.0, glue set 170.00061fil +....\glue 0.0 plus 1.0fil +....\T1/cmr/m/n/10 2 +....\glue 0.0 plus 1.0fil +..\pdfliteral page{EMC} +..\marks4{e-,25,2,} +..\marks4{e+,25,2,} +..\pdfrunninglinkon +.\kern 0.0 +.\kern -633.0 +.\hbox(0.0+0.0)x0.0 +.\kern 633.0 diff --git a/required/latex-lab/testfiles-table-pdftex/table-016-math.tlg b/required/latex-lab/testfiles-table-pdftex/table-016-math.tlg index 58c0882fd..4c32aeb74 100644 --- a/required/latex-lab/testfiles-table-pdftex/table-016-math.tlg +++ b/required/latex-lab/testfiles-table-pdftex/table-016-math.tlg @@ -305,6 +305,8 @@ Completed box being shipped out [1] ...\glue 6.5 plus 3.5 minus 3.0 ...\penalty 0 ...\glue 6.5 plus 3.5 minus 3.0 +...\glue 0.0 plus -1.0 +...\glue 0.0 plus 1.0 ...\write1{\new@label@record{mcid-10}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{10}{tagmcid}{\__property_code_tagmcid: }}} ...\pdfliteral shipout page{/Formula <> BDC} ...\marks4{b-,10,19,Formula,,,} @@ -428,6 +430,8 @@ Completed box being shipped out [1] ...\glue 6.5 plus 3.5 minus 3.0 ...\penalty 0 ...\glue 6.5 plus 3.5 minus 3.0 +...\glue 0.0 plus -1.0 +...\glue 0.0 plus 1.0 ...\write1{\new@label@record{mcid-13}{{tagabspage}{\__property_code_tagabspage: }{tagmcabs}{13}{tagmcid}{\__property_code_tagmcid: }}} ...\pdfliteral shipout page{/Formula <> BDC} ...\marks4{b-,13,22,Formula,,,} @@ -551,6 +555,8 @@ Completed box being shipped out [1] ...\glue 6.5 plus 3.5 minus 3.0 ...\penalty 0 ...\glue 6.5 plus 3.5 minus 3.0 +...\glue 0.0 plus -1.0 +...\glue 0.0 plus 1.0 ...\glue -6.0 ...\glue 0.0 plus 1.0fil ...\glue 0.0 plus -1.0fil diff --git a/required/latex-lab/update-math-all.sh b/required/latex-lab/update-math-all.sh index 1870b9742..b929764bd 100644 --- a/required/latex-lab/update-math-all.sh +++ b/required/latex-lab/update-math-all.sh @@ -1,5 +1,6 @@ l3build save -cconfig-math \ + math-suspended-gh661 \ mathcapture-001 \ mathcapture-002 \ mathcapture-003 \