[latex3-commits] [git/LaTeX3-latex3-latex2e] math-tagging-experiments-fmi1: use a newer version of the blockenv stuff (d22f5f36)

Frank Mittelbach frank.mittelbach at latex-project.org
Fri Feb 24 17:21:54 CET 2023


Repository : https://github.com/latex3/latex2e
On branch  : math-tagging-experiments-fmi1
Link       : https://github.com/latex3/latex2e/commit/d22f5f361c3b3b2576fa29b5dc4474f03d63fb15

>---------------------------------------------------------------

commit d22f5f361c3b3b2576fa29b5dc4474f03d63fb15
Author: Frank Mittelbach <frank.mittelbach at latex-project.org>
Date:   Fri Feb 24 17:21:54 2023 +0100

    use a newer version of the blockenv stuff


>---------------------------------------------------------------

d22f5f361c3b3b2576fa29b5dc4474f03d63fb15
 required/latex-lab/l3lists2.sty                    | 216 ++++++++++---
 .../testfiles-mathtagging/mathcapture-011.tlg      |  10 +-
 .../testfiles-mathtagging/mathcapture-tag-001.tpf  | 342 +++++++++++----------
 .../latex-lab/testfiles-mathtagging/mtag-004.lvt   | 106 +++++++
 .../latex-lab/testfiles-mathtagging/mtag-004.tlg   |  55 ++++
 5 files changed, 510 insertions(+), 219 deletions(-)

diff --git a/required/latex-lab/l3lists2.sty b/required/latex-lab/l3lists2.sty
index b94440d3..5985fd73 100644
--- a/required/latex-lab/l3lists2.sty
+++ b/required/latex-lab/l3lists2.sty
@@ -34,10 +34,10 @@
 %% 
 %% File: l3lists2.dtx (C) Copyright 2021-2023 LaTeX Project
 
-\def\ltlistsversion{v0.9c}
-\def\ltlistsdate{2023/02/12}
+\def\ltlistsversion{v0.9d}
+\def\ltlistsdate{2023/02/17}
 
-\ProvidesPackage {l3lists2}[2022-08-07 v0.01 beta list refactoring]
+\ProvidesPackage {l3lists2}[\ltlistsdate\space \ltlistsversion\space beta list refactoring]
 \RequirePackage{xtemplate}
 \ExplSyntaxOn
 \def\@doendpe{\@endpetrue
@@ -60,6 +60,7 @@
 \def\@endpefalse{\global\let\if at endpe\iffalse}
 \DeclareObjectType{blockenv}{1}
 \DeclareObjectType{block}{1}
+\DeclareObjectType{para}{1}
 \DeclareObjectType{list}{1}
 \DeclareObjectType{item}{1}
 \DeclareTemplateInterface{blockenv}{display}{1}
@@ -73,8 +74,10 @@
   max-levels     : tokenlist = 3,
   setup-code     : tokenlist ,
   block-instance : tokenlist = displayblock ,
-  para-flattened : boolean = false ,
+  para-instance  : tokenlist ,
   inner-instance : tokenlist ,
+  para-flattened : boolean = false ,
+  final-code     : tokenlist = \ignorespaces ,
 }
 \DeclareTemplateInterface{block}{display}{1}
 {
@@ -82,7 +85,7 @@
   beginsep        : skip = \topsep ,
   begin-par-skip  : skip = \partopsep ,
   par-skip        : skip = \parsep ,
-  end-skip        : skip = \KeyValue{beginsep} ,
+  end-skip        : skip = \KeyValue{beginsep} ,                % conflict with name below
   end-par-skip    : skip = \KeyValue{begin-par-skip} ,
   beginpenalty    : integer = \UseName{@beginparpenalty} ,
   endpenalty      : integer = \UseName{@endparpenalty} ,
@@ -90,6 +93,18 @@
   rightmargin     : length = \rightmargin ,
   parindent       : length = \listparindent ,
 }
+\DeclareTemplateInterface{para}{std}{1}
+{
+  indent-width          : length = \parindent ,
+  start-skip            : skip = 0pt  ,
+  left-skip             : skip = 0pt ,
+  right-skip            : skip = 0pt ,
+  end-skip              : skip = \fill ,
+  fixed-word-spaces     : boolean = false ,
+  final-hyphen-demerits : integer = 5000 ,
+  cr-cmd                : tokenlist = \@normalcr ,
+  para-class            : tokenlist = justify ,
+}
 \DeclareTemplateInterface{list}{std}{1}     % optional
 {
   counter         : tokenlist = ,
@@ -155,64 +170,37 @@
   { \UseInstance{blockenv}{displayblockflattened} {#1} }
   { \endblockenv }
 \RenewDocumentEnvironment{center} { !O{} }
-{
-  \displayblockflattened [#1]
-  \centering
-  \tl_set:Nn \l_tag_para_attr_class_tl {center}
-}
-{ \enddisplayblockflattened }
+{ \UseInstance{blockenv}{center}{#1} }
+{ \endblockenv }
 \RenewDocumentEnvironment{flushright} { !O{} }
-{
-  \displayblockflattened [#1]
-  \raggedleft
-  \tl_set:Nn \l_tag_para_attr_class_tl {raggedleft}
-}
-{ \enddisplayblockflattened }
+{ \UseInstance{blockenv}{flushright}{#1} }
+{ \endblockenv }
 \RenewDocumentEnvironment{flushleft} { !O{} }
-{
-  \displayblockflattened [#1]
-  \raggedright
-  \tl_set:Nn \l_tag_para_attr_class_tl {raggedright}
-}
-{ \enddisplayblockflattened }
-\tl_new:N\l_tag_para_attr_class_tl
-\tl_set:Nn \l_tag_para_attr_class_tl {justify}
-\tag_if_active:T
-{
-  \tagpdfsetup
-      {
-        newattribute = {justify}    {/O /Layout /TextAlign/Justify},
-        newattribute = {center}     {/O /Layout /TextAlign/Center},
-        newattribute = {raggedright}{/O /Layout /TextAlign/Start},
-        newattribute = {raggedleft} {/O /Layout /TextAlign/End},
-      }
-}
+{ \UseInstance{blockenv}{flushleft}{#1} }
+{ \endblockenv }
 \RenewDocumentEnvironment{quote}{ !O{} }
   { \UseInstance{blockenv}{quote} {#1} }
   { \endblockenv }
 \RenewDocumentEnvironment{quotation}{ !O{} }
   { \UseInstance{blockenv}{quotation} {#1} }
   { \endblockenv }
-\newcommand\@setupverbinvisiblespace{}
-\tag_if_active:T {
-  \bool_if:NF\g__tag_mode_lua_bool
-   {
-     \renewcommand\@setupverbinvisiblespace{\def\@xobeysp{\nobreakspace\pdffakespace}}
-   }
-}
 \RenewDocumentEnvironment{verbatim}{ !O{} }
   { \UseInstance{blockenv}{verbatim} {#1}
-    \tagpdfsetup{paratag=Code}% oder schneller: \tl_set:Nn\l__tag_para_tag_tl{Code}
-    \@newverbatim\@setupverbinvisiblespace \frenchspacing \@vobeyspaces \@xverbatim
+    \@xverbatim
   }
   { \endblockenv }
 \RenewDocumentEnvironment{verbatim*}{ !O{} }
   { \UseInstance{blockenv}{verbatim} {#1}
-    \tagpdfsetup{paratag=Code}% oder schneller: \tl_set:Nn\l__tag_para_tag_tl{Code}
-    \@newverbatim\@setupverbvisiblespace
-    \frenchspacing\@vobeyspaces\@sxverbatim
+    \@sxverbatim
   }
   { \endblockenv }
+\newcommand\@setupverbinvisiblespace{}
+\tag_if_active:T {
+  \bool_if:NF\g__tag_mode_lua_bool
+   {
+     \renewcommand\@setupverbinvisiblespace{\def\@xobeysp{\nobreakspace\pdffakespace}}
+   }
+}
 \def\@newverbatim{%
   \language\l at nohyphenation
   \@tempswafalse
@@ -226,6 +214,9 @@
   \let\do\@makeother \dospecials
   \obeylines \verbatim at font \@noligs
   \everypar \expandafter{\the\everypar \unpenalty}%
+  \tagpdfsetup{paratag=Code}%   oder faster: \tl_set:Nn\l__tag_para_tag_tl{Code}
+  \@setupverbinvisiblespace
+  \frenchspacing \@vobeyspaces
 }
 \RenewDocumentEnvironment{itemize}{!O{}}
   { \UseInstance{blockenv}{itemize} {#1} }
@@ -267,6 +258,22 @@
   { \endblockenv }
 \cs_new:Npn \g_block_nesting_depth_int { \@listdepth }  % a fake int
                                                         % for now
+\DeclareTemplateCode{para}{std}{1}
+{
+  indent-width      = \parindent ,
+  start-skip        = \l__par_start_skip ,              % name??
+  left-skip         = \leftskip  ,
+  right-skip        = \rightskip  ,
+  end-skip          = \parfillskip ,
+  fixed-word-spaces = \l__par_fixed_word_spaces_bool ,  % name??
+  final-hyphen-demerits = \finalhyphendemerits ,
+  cr-cmd                = \\ ,
+  para-class            = \l_tag_para_attr_class_tl ,
+}
+{
+  \tl_if_empty:nF {#1} { \SetTemplateKeys{para}{std}{#1} }
+  \skip_set:Nn \@rightskip \rightskip
+}
 \DeclareTemplateCode{blockenv}{display}{1}
 {
   env-name       = \l__block_env_name_tl ,
@@ -278,8 +285,10 @@
   max-levels     = \l__block_max_levels_tl ,
   setup-code     = \l__block_setup_code_tl ,
   block-instance = \l__block_block_instance_tl ,
-  para-flattened = \l__block_flattened_bool ,
+  para-instance  = \l__block_para_instance_tl ,
   inner-instance = \l__block_inner_instance_tl ,
+  para-flattened = \l__block_flattened_bool ,
+  final-code     = \l__block_final_code_tl ,
 }
 {
   \__block_debug_typeout:n{\l__block_env_name_tl -env-start}
@@ -307,6 +316,11 @@
               { \l__block_block_instance_tl - \int_use:N
                 \g_block_nesting_depth_int }
               {#1}
+  \tl_if_empty:NF \l__block_para_instance_tl
+    {
+      \__block_debug_typeout:n{use~ para~ instance:~ \l__block_para_instance_tl }
+      \UseInstance{para}{ \l__block_para_instance_tl } {}
+    }
   \tl_if_empty:NF \l__block_inner_instance_tl
     {
       \__block_debug_typeout:n{use~ instance:~ \l__block_inner_instance_tl
@@ -320,7 +334,7 @@
                   }
                   {#1}
     }
-  \ignorespaces
+  \l__block_final_code_tl
 }
 \newcounter{maxblocklevels}
 \setcounter{maxblocklevels}{6}
@@ -745,6 +759,48 @@
   para-flattened = true ,
   inner-instance = ,
 }
+\DeclareInstance{blockenv}{center}{display}
+{
+  env-name       = center,
+  tag-name       = ,
+  tag-class      = ,
+  tagging-recipe = basic,
+  level-counter  = ,
+  level-increase = false,
+  setup-code     = ,
+  block-instance = displayblock ,
+  para-flattened = true ,
+  para-instance  = center ,
+  inner-instance = ,
+}
+\DeclareInstance{blockenv}{flushleft}{display}
+{
+  env-name       = flushleft,
+  tag-name       = ,
+  tag-class      = ,
+  tagging-recipe = basic,
+  level-counter  = ,
+  level-increase = false,
+  setup-code     = ,
+  block-instance = displayblock ,
+  para-flattened = true ,
+  para-instance  = raggedright ,
+  inner-instance = ,
+}
+\DeclareInstance{blockenv}{flushright}{display}
+{
+  env-name       = flushleft,
+  tag-name       = ,
+  tag-class      = ,
+  tagging-recipe = basic,
+  level-counter  = ,
+  level-increase = false,
+  setup-code     = ,
+  block-instance = displayblock ,
+  para-flattened = true ,
+  para-instance  = raggedleft ,
+  inner-instance = ,
+}
 \tag_if_active:T {
   \tagpdfsetup{add-new-tag={tag=quote,role=BlockQuote}}
   \tagpdfsetup{add-new-tag={tag=quotation,role=BlockQuote}}
@@ -787,6 +843,7 @@
   setup-code     = ,
   block-instance = displayblock ,
   inner-instance = ,
+  final-code     = \@newverbatim ,
 }
 \DeclareInstance{blockenv}{itemize}{display}
 {
@@ -923,8 +980,6 @@
 \DeclareInstance{list}{description}{std} {
   item-instance = description ,
 }
-  %
-
 \DeclareInstance{item}{basic}{std}
   {
     label-align = right ,
@@ -933,6 +988,65 @@
   {
     label-format = \normalfont\bfseries #1 ,
   }
+\tag_if_active:T
+{
+  \tagpdfsetup
+      {
+        newattribute = {justify}    {/O /Layout /TextAlign/Justify},
+        newattribute = {center}     {/O /Layout /TextAlign/Center},
+        newattribute = {raggedright}{/O /Layout /TextAlign/Start},
+        newattribute = {raggedleft} {/O /Layout /TextAlign/End},
+      }
+}
+\DeclareInstance{para}{center}{std}
+{
+  indent-width          = 0pt ,
+  start-skip            = 0pt ,
+  left-skip             = \@flushglue ,
+  right-skip            = \@flushglue ,
+  end-skip              = \z at skip ,
+  final-hyphen-demerits = 0 ,
+  cr-cmd                = \@centercr ,
+  para-class            = center ,
+}
+\DeclareInstance{para}{raggedright}{std}
+{
+  indent-width          = 0pt ,
+  start-skip            = 0pt ,
+  left-skip             = \z at skip ,
+  right-skip            = \@flushglue ,
+  end-skip              = \z at skip ,
+  final-hyphen-demerits = 0 ,
+  cr-cmd                = \@centercr ,
+  para-class            = raggedright ,
+}
+\DeclareInstance{para}{raggedleft}{std}
+{
+  indent-width          = 0pt ,
+  start-skip            = 0pt ,
+  left-skip             = \@flushglue ,
+  right-skip            = \z at skip ,
+  end-skip              = \z at skip ,
+  final-hyphen-demerits = 0 ,
+  cr-cmd                = \@centercr ,
+  para-class            = raggedleft ,
+}
+\DeclareInstance{para}{justify}{std}
+{
+  start-skip            = 0pt ,
+  left-skip             = \z at skip ,
+  right-skip            = \z at skip ,
+  end-skip              = \@flushglue ,
+  final-hyphen-demerits =  5000 ,
+  cr-cmd                = \@normalcr ,
+  para-class            = justify ,
+}
+\DeclareRobustCommand\centering  {\UseInstance{para}{center}{}}
+\DeclareRobustCommand\raggedleft {\UseInstance{para}{raggedleft}{}}
+\DeclareRobustCommand\raggedright{\UseInstance{para}{raggedright}{}}
+\DeclareRobustCommand\justifying {\UseInstance{para}{justify}{}}
+
+\justifying
 
 \tag_if_active:T {
   \cs_set:Npn \__block_beginpar_vmode: { \tagstructbegin{tag=\tpara} }
diff --git a/required/latex-lab/testfiles-mathtagging/mathcapture-011.tlg b/required/latex-lab/testfiles-mathtagging/mathcapture-011.tlg
index c1c0caab..622cde86 100644
--- a/required/latex-lab/testfiles-mathtagging/mathcapture-011.tlg
+++ b/required/latex-lab/testfiles-mathtagging/mathcapture-011.tlg
@@ -1,19 +1,19 @@
 This is a generated file for the l3build validation system.
 Don't change this file in any respect.
-(amsmath.sty
+(../amsmath.sty
 Package: amsmath ....-..-.. v... AMS math features
 \@mathmargin=\skip...
 For additional information on amsmath, use the `?' option.
-(amstext.sty
+(../amstext.sty
 Package: amstext ....-..-.. v... AMS text
-(amsgen.sty
+(../amsgen.sty
 File: amsgen.sty ....-..-.. v... generic functions
 \@emptytoks=\toks...
 \ex@=\dimen...
-)) (amsbsy.sty
+)) (../amsbsy.sty
 Package: amsbsy ....-..-.. v... Bold Symbols
 \pmbraise@=\dimen...
-) (amsopn.sty
+) (../amsopn.sty
 Package: amsopn ....-..-.. v... operator names
 )
 \inf at bad=\count...
diff --git a/required/latex-lab/testfiles-mathtagging/mathcapture-tag-001.tpf b/required/latex-lab/testfiles-mathtagging/mathcapture-tag-001.tpf
index 9bb9239a..8556fb90 100644
--- a/required/latex-lab/testfiles-mathtagging/mathcapture-tag-001.tpf
+++ b/required/latex-lab/testfiles-mathtagging/mathcapture-tag-001.tpf
@@ -1,12 +1,12 @@
 %PDF-1.5
 %ÐÔÅØ
-11 0 obj
+12 0 obj
 << /MCID 0  >>
 endobj
-14 0 obj
+15 0 obj
 << /MCID 1  >>
 endobj
-16 0 obj
+17 0 obj
 <<
 /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20160520) >>
 /Length 217       
@@ -15,46 +15,46 @@ stream
 \begin {align} A_1 &= N_0 (\lambda ; \Omega ') - \phi ( \lambda ; \Omega ') \\ A_2 &= \phi (\lambda ; \Omega ') \phi (\lambda ; \Omega ) \\ \intertext {and finally} A_3 &= \mathcal {N} (\lambda ; \omega ) \end {align}
 endstream
 endobj
-17 0 obj
-<< /Type /Filespec /AFRelationship /Unspecified /F <FEFF007400610067002D0041004600660069006C00650034002E007400780074> /UF <FEFF007400610067002D0041004600660069006C00650034002E007400780074> /EF<</F 16 0 R/UF 16 0 R>> >>
+18 0 obj
+<< /Type /Filespec /AFRelationship /Unspecified /F <FEFF007400610067002D0041004600660069006C00650031002E007400780074> /UF <FEFF007400610067002D0041004600660069006C00650031002E007400780074> /EF<</F 17 0 R/UF 17 0 R>> >>
 endobj
-19 0 obj
+20 0 obj
 << /MCID 2  >>
 endobj
-21 0 obj
+22 0 obj
 << /MCID 3  >>
 endobj
-22 0 obj
+23 0 obj
 << /MCID 4  >>
 endobj
-24 0 obj
+25 0 obj
 << /MCID 5  >>
 endobj
-26 0 obj
+27 0 obj
 << /MCID 6  >>
 endobj
-27 0 obj
+28 0 obj
 << /MCID 7  >>
 endobj
-29 0 obj
+30 0 obj
 << /MCID 8  >>
 endobj
-31 0 obj
+33 0 obj
 << /MCID 9  >>
 endobj
-32 0 obj
+34 0 obj
 << /MCID 10  >>
 endobj
-33 0 obj
+35 0 obj
 << /MCID 11  >>
 endobj
-35 0 obj
+37 0 obj
 << /MCID 12  >>
 endobj
-36 0 obj
+38 0 obj
 << /MCID 13  >>
 endobj
-37 0 obj
+39 0 obj
 <<
 /Type /Metadata /Subtype /XML
 /Length 10297     
@@ -264,7 +264,7 @@ stream
 <?xpacket end="w"?>
 endstream
 endobj
-39 0 obj
+41 0 obj
 <<
 /Length 2290      
 >>
@@ -331,94 +331,106 @@ ET
 EMC
 endstream
 endobj
-12 0 obj
+13 0 obj
 <<
 /Type /Page
-/Contents 39 0 R
-/Resources 38 0 R
+/Contents 41 0 R
+/Resources 40 0 R
 /MediaBox [0 0 612 792]
 /Tabs /S /StructParents 0 
-/Parent 46 0 R
+/Parent 48 0 R
 >>
 endobj
-38 0 obj
+40 0 obj
 <<
-/Properties <</l3pdf1 11 0 R /l3pdf2 14 0 R /l3pdf3 19 0 R /l3pdf4 21 0 R /l3pdf5 22 0 R /l3pdf6 24 0 R /l3pdf7 26 0 R /l3pdf8 27 0 R /l3pdf9 29 0 R /l3pdf10 31 0 R /l3pdf11 32 0 R /l3pdf12 33 0 R /l3pdf13 35 0 R /l3pdf14 36 0 R >>/ExtGState 1 0 R 
-/Font << /F24 40 0 R /F36 41 0 R /F27 42 0 R /F23 43 0 R /F29 44 0 R /F30 45 0 R >>
+/Properties <</l3pdf1 12 0 R /l3pdf2 15 0 R /l3pdf3 20 0 R /l3pdf4 22 0 R /l3pdf5 23 0 R /l3pdf6 25 0 R /l3pdf7 27 0 R /l3pdf8 28 0 R /l3pdf9 30 0 R /l3pdf10 33 0 R /l3pdf11 34 0 R /l3pdf12 35 0 R /l3pdf13 37 0 R /l3pdf14 38 0 R >>/ExtGState 1 0 R 
+/Font << /F24 42 0 R /F36 43 0 R /F27 44 0 R /F23 45 0 R /F29 46 0 R /F30 47 0 R >>
 /ProcSet [ /PDF /Text ]
 >>
 endobj
 1 0 obj
 << /opacity1 <</ca 1/CA 1>>  >>
 endobj
-47 0 obj
+49 0 obj
 << /Marked true  >>
 endobj
 6 0 obj
-<< /Nums [0 [ 10 0 R 13 0 R 18 0 R 20 0 R 18 0 R 23 0 R 25 0 R 23 0 R 28 0 R 30 0 R 28 0 R 15 0 R 34 0 R 15 0 R ]
+<< /Nums [0 [ 11 0 R 14 0 R 19 0 R 21 0 R 19 0 R 24 0 R 26 0 R 24 0 R 29 0 R 32 0 R 29 0 R 16 0 R 36 0 R 16 0 R ]
 ] >>
 endobj
+50 0 obj
+<< /Limits [(ID.001) (ID.013)]/Names [(ID.001) 9 0 R (ID.002) 10 0 R (ID.003) 11 0 R (ID.004) 14 0 R (ID.005) 16 0 R (ID.006) 19 0 R (ID.007) 21 0 R (ID.008) 24 0 R (ID.009) 26 0 R (ID.010) 29 0 R (ID.011) 31 0 R (ID.012) 32 0 R (ID.013) 36 0 R ] >>
+endobj
+51 0 obj
+<< /Kids [50 0 R] >>
+endobj
 7 0 obj
-<< /DocumentFragment /Art /Aside /Note /H7 /H6 /H8 /H6 /H9 /H6 /H10 /H6 /Title /P /FENote /Note /Sub /Span /Em /Span /Strong /Span /title /P /part /P /section /H1 /subsection /H2 /subsubsection /H3 /paragraph /H4 /subparagraph /H5 /itemize /L /enumerate /L /description /L /item /LI /itemlabel /Lbl /itembody /LBody /footnote /Note /footnotemark /Lbl /footnotelabel /Lbl /list /L /quote /Figure /quotation /Figure /verbatim /Figure  >>
+<< /DocumentFragment /Art /Aside /Note /H7 /H6 /H8 /H6 /H9 /H6 /H10 /H6 /Title /P /FENote /Note /Sub /Span /Em /Span /Strong /Span /title /P /part /P /section /H1 /subsection /H2 /subsubsection /H3 /paragraph /H4 /subparagraph /H5 /itemize /L /enumerate /L /description /L /item /LI /itemlabel /Lbl /itembody /LBody /footnote /Note /footnotemark /Lbl /footnotelabel /Lbl /list /L /quote /BlockQuote /quotation /BlockQuote /verbatim /Div /tpara /Part  >>
 endobj
-48 0 obj
+52 0 obj
 << /justify <</O/Layout/TextAlign/Justify>> >>
 endobj
 9 0 obj
-<<  /Type /StructElem /S /Document /P 5 0 R /K 10 0 R >>
+<<  /Type /StructElem /S /Document /P 5 0 R /K 10 0 R /ID (ID.001) >>
 endobj
 10 0 obj
-<<  /Type /StructElem /S /P /P 9 0 R /K [<</Type /MCR /Pg 12 0 R/MCID 0>> 13 0 R] /C /justify >>
+<<  /Type /StructElem /S /tpara /P 9 0 R /K 11 0 R /ID (ID.002) >>
 endobj
-13 0 obj
-<<  /Type /StructElem /S /Formula /P 10 0 R /K [<</Type /MCR /Pg 12 0 R/MCID 1>> 15 0 R] /Alt <FEFF0041005F003100200026003D0020004E005F003000200028005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020002D0020005C007000680069002000280020005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020005C005C00200041005F003200200026003D0020005C00700068006900200028005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020005C00700068006900200028005C006C0061006D0062006400610020003B0020005C004F006D006500670061002000290020005C005C0020005C0069006E00740065007200740065007800740020007B0061006E0064002000660069006E0061006C006C0079007D00200041005F003300200026003D0020005C006D00610074006800630061006C0020007B004E007D00200028005C006C0061006D0062006400610020003B0020005C006F006D00650067006100200029> >>
+11 0 obj
+<<  /Type /StructElem /S /P /P 10 0 R /K [<</Type /MCR /Pg 13 0 R/MCID 0>> 14 0 R 16 0 R] /C /justify /ID (ID.003) >>
 endobj
-15 0 obj
-<<  /Type /StructElem /S /Formula /P 13 0 R /K [18 0 R 23 0 R 28 0 R <</Type /MCR /Pg 12 0 R/MCID 11>> 34 0 R <</Type /MCR /Pg 12 0 R/MCID 13>>] /Alt <FEFF005C0062006500670069006E0020007B0061006C00690067006E007D00200041005F003100200026003D0020004E005F003000200028005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020002D0020005C007000680069002000280020005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020005C005C00200041005F003200200026003D0020005C00700068006900200028005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020005C00700068006900200028005C006C0061006D0062006400610020003B0020005C004F006D006500670061002000290020005C005C0020005C0069006E00740065007200740065007800740020007B0061006E0064002000660069006E0061006C006C0079007D00200041005F003300200026003D0020005C006D00610074006800630061006C0020007B004E007D00200028005C006C0061006D0062006400610020003B0020005C006F006D006500670061002000290020005C0065006E00640020007B0061006C00690067006E007D> /AF [17 0 R] >>
+14 0 obj
+<<  /Type /StructElem /S /Formula /P 11 0 R /K <</Type /MCR /Pg 13 0 R/MCID 1>> /Alt <FEFF0041005F003100200026003D0020004E005F003000200028005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020002D0020005C007000680069002000280020005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020005C005C00200041005F003200200026003D0020005C00700068006900200028005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020005C00700068006900200028005C006C0061006D0062006400610020003B0020005C004F006D006500670061002000290020005C005C0020005C0069006E00740065007200740065007800740020007B0061006E0064002000660069006E0061006C006C0079007D00200041005F003300200026003D0020005C006D00610074006800630061006C0020007B004E007D00200028005C006C0061006D0062006400610020003B0020005C006F006D00650067006100200029> /ID (ID.004) >>
 endobj
-18 0 obj
-<<  /Type /StructElem /S /Formula /P 15 0 R /K [<</Type /MCR /Pg 12 0 R/MCID 2>> 20 0 R <</Type /MCR /Pg 12 0 R/MCID 4>>] /T <FEFF0061006C00690067006E0020002800700061007200740029> /Alt <FEFF0041005F003100200026003D0020004E005F003000200028005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020002D0020005C007000680069002000280020005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020> >>
+16 0 obj
+<<  /Type /StructElem /S /Formula /P 11 0 R /K [19 0 R 24 0 R 29 0 R <</Type /MCR /Pg 13 0 R/MCID 11>> 36 0 R <</Type /MCR /Pg 13 0 R/MCID 13>>] /Alt <FEFF005C0062006500670069006E0020007B0061006C00690067006E007D00200041005F003100200026003D0020004E005F003000200028005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020002D0020005C007000680069002000280020005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020005C005C00200041005F003200200026003D0020005C00700068006900200028005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020005C00700068006900200028005C006C0061006D0062006400610020003B0020005C004F006D006500670061002000290020005C005C0020005C0069006E00740065007200740065007800740020007B0061006E0064002000660069006E0061006C006C0079007D00200041005F003300200026003D0020005C006D00610074006800630061006C0020007B004E007D00200028005C006C0061006D0062006400610020003B0020005C006F006D006500670061002000290020005C0065006E00640020007B0061006C00690067006E007D> /AF [18 0 R] /ID (ID.005) >>
 endobj
-20 0 obj
-<<  /Type /StructElem /S /Lbl /P 18 0 R /K <</Type /MCR /Pg 12 0 R/MCID 3>> >>
+19 0 obj
+<<  /Type /StructElem /S /Formula /P 16 0 R /K [<</Type /MCR /Pg 13 0 R/MCID 2>> 21 0 R <</Type /MCR /Pg 13 0 R/MCID 4>>] /T <FEFF0061006C00690067006E0020002800700061007200740029> /Alt <FEFF0041005F003100200026003D0020004E005F003000200028005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020002D0020005C007000680069002000280020005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020> /ID (ID.006) >>
 endobj
-23 0 obj
-<<  /Type /StructElem /S /Formula /P 15 0 R /K [<</Type /MCR /Pg 12 0 R/MCID 5>> 25 0 R <</Type /MCR /Pg 12 0 R/MCID 7>>] /T <FEFF0061006C00690067006E0020002800700061007200740029> /Alt <FEFF00200041005F003200200026003D0020005C00700068006900200028005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020005C00700068006900200028005C006C0061006D0062006400610020003B0020005C004F006D006500670061002000290020> >>
+21 0 obj
+<<  /Type /StructElem /S /Lbl /P 19 0 R /K <</Type /MCR /Pg 13 0 R/MCID 3>> /ID (ID.007) >>
 endobj
-25 0 obj
-<<  /Type /StructElem /S /Lbl /P 23 0 R /K <</Type /MCR /Pg 12 0 R/MCID 6>> >>
+24 0 obj
+<<  /Type /StructElem /S /Formula /P 16 0 R /K [<</Type /MCR /Pg 13 0 R/MCID 5>> 26 0 R <</Type /MCR /Pg 13 0 R/MCID 7>>] /T <FEFF0061006C00690067006E0020002800700061007200740029> /Alt <FEFF00200041005F003200200026003D0020005C00700068006900200028005C006C0061006D0062006400610020003B0020005C004F006D0065006700610020002700290020005C00700068006900200028005C006C0061006D0062006400610020003B0020005C004F006D006500670061002000290020> /ID (ID.008) >>
 endobj
-28 0 obj
-<<  /Type /StructElem /S /Formula /P 15 0 R /K [<</Type /MCR /Pg 12 0 R/MCID 8>> 30 0 R <</Type /MCR /Pg 12 0 R/MCID 10>>] /T <FEFF0061006C00690067006E0020002800700061007200740029> /Alt <FEFF0020005C0069006E00740065007200740065007800740020007B0061006E0064002000660069006E0061006C006C0079007D00200041005F003300200026003D0020005C006D00610074006800630061006C0020007B004E007D00200028005C006C0061006D0062006400610020003B0020005C006F006D00650067006100200029> >>
+26 0 obj
+<<  /Type /StructElem /S /Lbl /P 24 0 R /K <</Type /MCR /Pg 13 0 R/MCID 6>> /ID (ID.009) >>
 endobj
-30 0 obj
-<<  /Type /StructElem /S /P /P 28 0 R /K <</Type /MCR /Pg 12 0 R/MCID 9>> /C /justify >>
+29 0 obj
+<<  /Type /StructElem /S /Formula /P 16 0 R /K [<</Type /MCR /Pg 13 0 R/MCID 8>> 31 0 R <</Type /MCR /Pg 13 0 R/MCID 10>>] /T <FEFF0061006C00690067006E0020002800700061007200740029> /Alt <FEFF0020005C0069006E00740065007200740065007800740020007B0061006E0064002000660069006E0061006C006C0079007D00200041005F003300200026003D0020005C006D00610074006800630061006C0020007B004E007D00200028005C006C0061006D0062006400610020003B0020005C006F006D00650067006100200029> /ID (ID.010) >>
 endobj
-34 0 obj
-<<  /Type /StructElem /S /Lbl /P 15 0 R /K <</Type /MCR /Pg 12 0 R/MCID 12>> >>
+31 0 obj
+<<  /Type /StructElem /S /tpara /P 29 0 R /K 32 0 R /ID (ID.011) >>
+endobj
+32 0 obj
+<<  /Type /StructElem /S /P /P 31 0 R /K <</Type /MCR /Pg 13 0 R/MCID 9>> /C /justify /ID (ID.012) >>
+endobj
+36 0 obj
+<<  /Type /StructElem /S /Lbl /P 16 0 R /K <</Type /MCR /Pg 13 0 R/MCID 12>> /ID (ID.013) >>
 endobj
 5 0 obj
-<<  /Type /StructTreeRoot /K 9 0 R /ParentTree 6 0 R /RoleMap 7 0 R /ClassMap 48 0 R /Namespaces 8 0 R >>
+<<  /Type /StructTreeRoot /K 9 0 R /IDTree 51 0 R /ParentTree 6 0 R /RoleMap 7 0 R /ClassMap 52 0 R /Namespaces 8 0 R >>
 endobj
-49 0 obj
+53 0 obj
 [777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 820.5]
 endobj
-50 0 obj
+54 0 obj
 [329.4]
 endobj
-51 0 obj
+55 0 obj
 [569.5 569.5 569.5 569.5]
 endobj
-52 0 obj
+56 0 obj
 [583.3 602.6 494 437.5 570 517 571.4 437.2 540.3 595.8 625.7 651.4 622.5 466.3 591.4 828.1 517 362.8 654.2 1000 1000 1000 1000 277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8 500 530.9 750 758.5 714.7 827.9 738.2 643.1 786.3 831.3 439.6 554.5 849.3 680.6 970.1 803.5]
 endobj
-53 0 obj
+57 0 obj
 [1]
 endobj
-54 0 obj
+58 0 obj
 [722.2 583.3 555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8]
 endobj
-55 0 obj
+59 0 obj
 <<
 /Length1 1460
 /Length2 6887
@@ -427,7 +439,7 @@ endobj
 >>
 [BINARY STREAM]
 endobj
-56 0 obj
+60 0 obj
 <<
 /Type /FontDescriptor
 /FontName /LIWCYG+CMMI10
@@ -440,10 +452,10 @@ endobj
 /StemV 72
 /XHeight 431
 /CharSet (/A/N/lambda/omega/phi)
-/FontFile 55 0 R
+/FontFile 59 0 R
 >>
 endobj
-57 0 obj
+61 0 obj
 <<
 /Length1 1681
 /Length2 11691
@@ -452,7 +464,7 @@ endobj
 >>
 [BINARY STREAM]
 endobj
-58 0 obj
+62 0 obj
 <<
 /Type /FontDescriptor
 /FontName /EILPOL+CMR10
@@ -465,10 +477,10 @@ endobj
 /StemV 69
 /XHeight 431
 /CharSet (/Omega/a/d/e/equal/fi/l/m/n/o/one/parenleft/parenright/s/semicolon/t/three/two/x/y)
-/FontFile 57 0 R
+/FontFile 61 0 R
 >>
 endobj
-59 0 obj
+63 0 obj
 <<
 /Length1 1408
 /Length2 6427
@@ -477,7 +489,7 @@ endobj
 >>
 [BINARY STREAM]
 endobj
-60 0 obj
+64 0 obj
 <<
 /Type /FontDescriptor
 /FontName /SYGXDD+CMR7
@@ -490,10 +502,10 @@ endobj
 /StemV 79
 /XHeight 431
 /CharSet (/one/three/two/zero)
-/FontFile 59 0 R
+/FontFile 63 0 R
 >>
 endobj
-61 0 obj
+65 0 obj
 <<
 /Length1 1393
 /Length2 6123
@@ -502,7 +514,7 @@ endobj
 >>
 [BINARY STREAM]
 endobj
-62 0 obj
+66 0 obj
 <<
 /Type /FontDescriptor
 /FontName /WGGNIM+CMSY10
@@ -515,10 +527,10 @@ endobj
 /StemV 40
 /XHeight 431
 /CharSet (/N/minus)
-/FontFile 61 0 R
+/FontFile 65 0 R
 >>
 endobj
-63 0 obj
+67 0 obj
 <<
 /Length1 1372
 /Length2 5926
@@ -527,7 +539,7 @@ endobj
 >>
 [BINARY STREAM]
 endobj
-64 0 obj
+68 0 obj
 <<
 /Type /FontDescriptor
 /FontName /NSJEOL+CMSY7
@@ -540,10 +552,10 @@ endobj
 /StemV 49
 /XHeight 431
 /CharSet (/prime)
-/FontFile 63 0 R
+/FontFile 67 0 R
 >>
 endobj
-65 0 obj
+69 0 obj
 <<
 /Length1 839
 /Length2 980
@@ -552,7 +564,7 @@ endobj
 >>
 [BINARY STREAM]
 endobj
-66 0 obj
+70 0 obj
 <<
 /Type /FontDescriptor
 /FontName /FRJGEQ+DummySpace
@@ -565,10 +577,10 @@ endobj
 /StemV 0
 /XHeight 400
 /CharSet (/space)
-/FontFile 65 0 R
+/FontFile 69 0 R
 >>
 endobj
-67 0 obj
+71 0 obj
 <<
 /Length 1535      
 >>
@@ -673,19 +685,19 @@ end
 %%EOF
 endstream
 endobj
-42 0 obj
+44 0 obj
 <<
 /Type /Font
 /Subtype /Type1
 /BaseFont /LIWCYG+CMMI10
-/FontDescriptor 56 0 R
+/FontDescriptor 60 0 R
 /FirstChar 21
 /LastChar 78
-/Widths 52 0 R
-/ToUnicode 67 0 R
+/Widths 56 0 R
+/ToUnicode 71 0 R
 >>
 endobj
-68 0 obj
+72 0 obj
 <<
 /Length 1724      
 >>
@@ -807,19 +819,19 @@ end
 %%EOF
 endstream
 endobj
-40 0 obj
+42 0 obj
 <<
 /Type /Font
 /Subtype /Type1
 /BaseFont /EILPOL+CMR10
-/FontDescriptor 58 0 R
+/FontDescriptor 62 0 R
 /FirstChar 10
 /LastChar 121
-/Widths 54 0 R
-/ToUnicode 68 0 R
+/Widths 58 0 R
+/ToUnicode 72 0 R
 >>
 endobj
-69 0 obj
+73 0 obj
 <<
 /Length 1719      
 >>
@@ -941,19 +953,19 @@ end
 %%EOF
 endstream
 endobj
-43 0 obj
+45 0 obj
 <<
 /Type /Font
 /Subtype /Type1
 /BaseFont /SYGXDD+CMR7
-/FontDescriptor 60 0 R
+/FontDescriptor 64 0 R
 /FirstChar 48
 /LastChar 51
-/Widths 51 0 R
-/ToUnicode 69 0 R
+/Widths 55 0 R
+/ToUnicode 73 0 R
 >>
 endobj
-70 0 obj
+74 0 obj
 <<
 /Length 2050      
 >>
@@ -1098,19 +1110,19 @@ end
 %%EOF
 endstream
 endobj
-45 0 obj
+47 0 obj
 <<
 /Type /Font
 /Subtype /Type1
 /BaseFont /WGGNIM+CMSY10
-/FontDescriptor 62 0 R
+/FontDescriptor 66 0 R
 /FirstChar 0
 /LastChar 78
-/Widths 49 0 R
-/ToUnicode 70 0 R
+/Widths 53 0 R
+/ToUnicode 74 0 R
 >>
 endobj
-71 0 obj
+75 0 obj
 <<
 /Length 2045      
 >>
@@ -1255,19 +1267,19 @@ end
 %%EOF
 endstream
 endobj
-44 0 obj
+46 0 obj
 <<
 /Type /Font
 /Subtype /Type1
 /BaseFont /NSJEOL+CMSY7
-/FontDescriptor 64 0 R
+/FontDescriptor 68 0 R
 /FirstChar 48
 /LastChar 48
-/Widths 50 0 R
-/ToUnicode 71 0 R
+/Widths 54 0 R
+/ToUnicode 75 0 R
 >>
 endobj
-72 0 obj
+76 0 obj
 <<
 /Length 1334      
 >>
@@ -1358,120 +1370,124 @@ end
 %%EOF
 endstream
 endobj
-41 0 obj
+43 0 obj
 <<
 /Type /Font
 /Subtype /Type1
 /BaseFont /FRJGEQ+DummySpace
-/FontDescriptor 66 0 R
+/FontDescriptor 70 0 R
 /FirstChar 32
 /LastChar 32
-/Widths 53 0 R
-/ToUnicode 72 0 R
+/Widths 57 0 R
+/ToUnicode 76 0 R
 >>
 endobj
-46 0 obj
+48 0 obj
 <<
 /Type /Pages
 /Count 1
-/Kids [12 0 R]
+/Kids [13 0 R]
 >>
 endobj
-73 0 obj
+77 0 obj
 <<
 /Type /Catalog
-/Pages 46 0 R
-/MarkInfo 47 0 R/Lang (en-US)/Metadata 37 0 R/StructTreeRoot 5 0 R
+/Pages 48 0 R
+/MarkInfo 49 0 R/Lang (en-US)/Metadata 39 0 R/StructTreeRoot 5 0 R
 >>
 endobj
-74 0 obj
+78 0 obj
 <<
 /Producer (pdfTeX)/Creator (TeX)/CreationDate (D:20010101205959-00'00')/ModDate (D:20010101205959-00'00')
 /Trapped /False
 >>
 endobj
 xref
-0 75
+0 79
 0000000002 65535 f 
 0000014289 00000 n 
 0000000003 00000 f 
 0000000004 00000 f 
 0000000008 00000 f 
-0000018903 00000 n 
+0000019533 00000 n 
 0000014372 00000 n 
-0000014506 00000 n 
+0000014809 00000 n 
 0000000000 00000 f 
-0000015020 00000 n 
-0000015092 00000 n 
+0000015341 00000 n 
+0000015426 00000 n 
+0000015509 00000 n 
 0000000015 00000 n 
 0000013775 00000 n 
-0000015205 00000 n 
+0000015643 00000 n 
 0000000046 00000 n 
-0000016081 00000 n 
+0000016523 00000 n 
 0000000077 00000 n 
 0000000429 00000 n 
-0000017138 00000 n 
-0000000664 00000 n 
 0000017593 00000 n 
+0000000664 00000 n 
+0000018061 00000 n 
 0000000695 00000 n 
 0000000726 00000 n 
-0000017688 00000 n 
+0000018169 00000 n 
 0000000757 00000 n 
-0000018135 00000 n 
+0000018629 00000 n 
 0000000788 00000 n 
 0000000819 00000 n 
-0000018230 00000 n 
+0000018737 00000 n 
 0000000850 00000 n 
-0000018702 00000 n 
+0000019222 00000 n 
+0000019306 00000 n 
 0000000881 00000 n 
 0000000912 00000 n 
 0000000944 00000 n 
-0000018807 00000 n 
+0000019424 00000 n 
 0000000976 00000 n 
 0000001008 00000 n 
 0000001040 00000 n 
 0000013910 00000 n 
 0000011426 00000 n 
-0000072244 00000 n 
-0000080256 00000 n 
-0000070303 00000 n 
-0000074180 00000 n 
-0000078706 00000 n 
-0000076445 00000 n 
-0000080418 00000 n 
+0000072889 00000 n 
+0000080901 00000 n 
+0000070948 00000 n 
+0000074825 00000 n 
+0000079351 00000 n 
+0000077090 00000 n 
+0000081063 00000 n 
 0000014336 00000 n 
-0000014957 00000 n 
-0000019024 00000 n 
-0000019477 00000 n 
-0000019501 00000 n 
-0000019543 00000 n 
-0000019867 00000 n 
-0000019887 00000 n 
-0000020509 00000 n 
-0000028954 00000 n 
-0000029193 00000 n 
-0000042664 00000 n 
-0000042961 00000 n 
-0000050894 00000 n 
-0000051127 00000 n 
-0000058741 00000 n 
-0000058967 00000 n 
-0000066363 00000 n 
-0000066586 00000 n 
-0000068501 00000 n 
-0000068709 00000 n 
-0000070461 00000 n 
-0000072402 00000 n 
-0000074336 00000 n 
-0000076602 00000 n 
-0000078863 00000 n 
-0000080477 00000 n 
-0000080595 00000 n 
+0000014506 00000 n 
+0000014772 00000 n 
+0000015278 00000 n 
+0000019669 00000 n 
+0000020122 00000 n 
+0000020146 00000 n 
+0000020188 00000 n 
+0000020512 00000 n 
+0000020532 00000 n 
+0000021154 00000 n 
+0000029599 00000 n 
+0000029838 00000 n 
+0000043309 00000 n 
+0000043606 00000 n 
+0000051539 00000 n 
+0000051772 00000 n 
+0000059386 00000 n 
+0000059612 00000 n 
+0000067008 00000 n 
+0000067231 00000 n 
+0000069146 00000 n 
+0000069354 00000 n 
+0000071106 00000 n 
+0000073047 00000 n 
+0000074981 00000 n 
+0000077247 00000 n 
+0000079508 00000 n 
+0000081122 00000 n 
+0000081240 00000 n 
 trailer
-<< /Size 75
-/Root 73 0 R
-/Info 74 0 R
+<< /Size 79
+/Root 77 0 R
+/Info 78 0 R
 /ID [<9BD18DF3359C1216B83ADB4AA401CC9A> <9BD18DF3359C1216B83ADB4AA401CC9A>] >>
 startxref
-80739
+81384
 %%EOF
diff --git a/required/latex-lab/testfiles-mathtagging/mtag-004.lvt b/required/latex-lab/testfiles-mathtagging/mtag-004.lvt
new file mode 100644
index 00000000..fda13293
--- /dev/null
+++ b/required/latex-lab/testfiles-mathtagging/mtag-004.lvt
@@ -0,0 +1,106 @@
+\DocumentMetadata{uncompress,testphase={phase-II,math},pdfversion=2.0,
+  debug={
+%  para,
+  log=vvv
+  }
+}
+
+
+\documentclass
+%[leqno]
+{article}
+
+\usepackage{iftex}
+\ifluatex
+ \usepackage{unicode-math}
+\fi 
+
+%\usepackage{hyperref}
+\usepackage{l3lists2}
+
+\DebugBlocksOn
+
+\input{regression-test}
+
+
+%\showoutput
+
+\ExplSyntaxOn
+\math_processor:n
+  {
+    \TYPE {-----------------------------------}
+    \TYPE { Math~env~#1 }
+    \TYPE {\unexpanded{#2}}
+  }
+\ExplSyntaxOff
+
+%\showoutput
+
+\pdfglyphtounicode{summationdisplay}{2211}
+
+
+\newtheorem{lemma}{Lemma}
+
+\begin{document}
+
+\START
+
+
+\begin{lemma}
+A lemma
+\[a=b\]
+\end{lemma}
+
+
+\end{document}
+
+
+aaa $X$ bbb
+\begin{gather}
+  a=b
+%  a+b \\ bb = z \\ X \notag \\ \sum_{i=1}^n ccc
+\end{gather}
+%%%\ShowTagging{struct-stack}
+zzzz
+
+
+\begin{equation} (a+b)^2 = a^2+2ab+b^2 \end{equation}
+\[  \sin^2\eta+\cos^2\eta = 1  \]
+
+\begin{multline}
+ \text{First line of a multline}
+  \\
+ \text{Centered Middle line}        \\
+ \shoveright{\text{A right Middle}} \\
+ \text{Another centered Middle}     \\
+ \text{Yet another centered Middle} \\
+ \shoveleft{\text{A left Middle}}   \\
+ \text{Last line of the multline}
+\end{multline}
+
+%------------------------------------
+\subsection*{11-2-6}
+
+\begin{multline}  \tag{2}
+  \sum_{t \in \mathbf{T}} \int_a^t
+    \biggl\lbrace \int_a^t f(t - x)^2 \,
+            g(y)^2 \,dx \biggr\rbrace \,dy \\
+  = \sum_{t \notin \mathbf{T}} \int_t^a
+      \biggl\lbrace g(y)^2 \int_t^a
+        f(x)^2 \,dx \biggr\rbrace \,dy
+\end{multline}
+
+\begin{gather}
+ a+b \\ bb = z \\ X \notag \\
+\sum_{i=1}^n ccc
+\end{gather}
+
+\begin{align}
+  x^2+y^2 &= z^2 \label{eq:A}            \\
+  x^3+y^3 &= z^3 \notag                  \\
+  x^4+y^4 &= r^4 \tag{$*$}               \\
+  x^5+y^5 &= r^5 \tag*{$*$}              \\
+  x^6+y^6 &= r^6 \tag{\ref{eq:A}$'$}
+\end{align}
+
+
diff --git a/required/latex-lab/testfiles-mathtagging/mtag-004.tlg b/required/latex-lab/testfiles-mathtagging/mtag-004.tlg
new file mode 100644
index 00000000..b9c534bb
--- /dev/null
+++ b/required/latex-lab/testfiles-mathtagging/mtag-004.tlg
@@ -0,0 +1,55 @@
+This is a generated file for the l3build validation system.
+Don't change this file in any respect.
+==> list-env-start
+==> use instance: list-1
+Package tagpdf Info: The rule between parent 'Document (from Document/pdf2)' 
+(tagpdf)             and child 'Part (from tpara/user)' is '1 (0..n)'
+Package tagpdf Info: The rule between parent 'Part (inherited from Document)' 
+(tagpdf)             and child 'L (from list/user)' is '1 (0..n)'
+==> use instance: legacy
+==> template:list:std
+==> template:list:std end
+Package tagpdf Info: The rule between parent 'L (from list/user)' 
+(tagpdf)             and child 'LI (from LI/pdf2)' is '1 (0..n)'
+==> template:item:std
+==> item with optional
+Package tagpdf Info: The rule between parent 'LI (from LI/pdf2)' 
+(tagpdf)             and child 'Lbl (from Lbl/pdf2)' is '1 (0..n)'
+Package tagpdf Info: The rule between parent 'Lbl (from Lbl/pdf2)' 
+(tagpdf)             and child 'MC (from MC/)' is '1 (0..n)'
+Package tagpdf Info: closing structure 5 tagged /Lbl
+Package tagpdf Info: The rule between parent 'LI (from LI/pdf2)' 
+(tagpdf)             and child 'LBody (from LBody/pdf2)' is '1 (0..n)'
+==> item everypar on input line ...
+Package tagpdf Info: The rule between parent 'LBody (from LBody/pdf2)' 
+(tagpdf)             and child 'Part (from tpara/user)' is '1 (0..n)'
+Package tagpdf Info: The rule between parent 'Part (inherited from LBody)' 
+(tagpdf)             and child 'P (from P/pdf2)' is '1 (0..n)'
+Package tagpdf Info: The rule between parent 'P (from P/pdf2)' 
+(tagpdf)             and child 'MC (from MC/)' is '1 (0..n)'
+-----------------------------------
+Math env equation*
+a=b
+Package tagpdf Info: closing structure 8 tagged /P
+Package tagpdf Info: The rule between parent 'Part (inherited from LBody)' 
+(tagpdf)             and child 'Formula (from Formula/pdf2)' is '1 (0..n)'
+====>first-result=macro:->a=b
+====>first-tmpmathcontent=macro:->
+====>formula has no subparts
+Package tagpdf Info: The rule between parent 'Formula (from Formula/pdf2)' 
+(tagpdf)             and child 'MC (from MC/)' is '1 (0..n)'
+Package tagpdf Info: closing structure 9 tagged /Formula
+==> blockenv common ending
+Package tagpdf Info: closing structure 7 tagged /tpara
+==> Structure-end P at list-end on input line ...
+Package tagpdf Info: closing structure 6 tagged /LBody
+Package tagpdf Info: closing structure 4 tagged /LI
+Package tagpdf Info: closing structure 3 tagged /list
+==> flattened=false
+==> Structure-end tpara after list on input line ...
+Package tagpdf Info: closing structure 2 tagged /tpara
+The sequence \g__tag_mc_main_marks_seq is empty
+> .
+[1
+] (mtag-004.aux)
+Package tagpdf Info: closing structure 1 tagged /Document





More information about the latex3-commits mailing list.