From ff7ad4f7b4cd62a5c249f65de0849ac99b504ab6 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Fri, 29 Nov 2024 14:16:46 +0100 Subject: [PATCH 01/57] use structnum instead of label when using stashed structure --- CHANGELOG.md | 12 ++++++++++++ luamml-structelemwriter.lua | 6 ++---- 2 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..392524f --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,12 @@ +# Changelog +All notable changes to the `tagpdf` package since the +2021-04-22 will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +this project uses date-based 'snapshot' version identifiers. +## [Unreleased] + +### Changed + +- Ulrike Fischer, 2024-11-29 + luamml-structelemwriter.lua: use structnum instead of label when stashing. diff --git a/luamml-structelemwriter.lua b/luamml-structelemwriter.lua index 7c2e549..36881e1 100644 --- a/luamml-structelemwriter.lua +++ b/luamml-structelemwriter.lua @@ -81,10 +81,8 @@ local function write_elem(tree, stash) table.sort(attrs) if stash then - stash_cnt = stash_cnt + 1 - stash = '__luamml_stashed_' .. stash_cnt - tree[':struct'] = stash - stash = ', stash, label = ' .. stash + tree[':structnum'] = get_ltx().tag.get_struct_num_next() + stash = ', stash, ' end local attr_flag = i ~= 0 and ', attribute=' .. attributes[table.concat(attrs)] From 3c70bd11efe484eab046b71ec30fc52d5dd62b5a Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Fri, 29 Nov 2024 14:29:59 +0100 Subject: [PATCH 02/57] correct typo --- luamml-array.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/luamml-array.lua b/luamml-array.lua index 9a7b358..f1fd7c5 100644 --- a/luamml-array.lua +++ b/luamml-array.lua @@ -54,7 +54,7 @@ end local saved_array -funcid = luatexbase.new_luafunction'__luamml_array_finalize_array:' +funcid = luatexbase.new_luafunction'__luamml_array_save_array:' token.set_lua('__luamml_array_save_array:', funcid) lua.get_functions_table()[funcid] = function() -- TODO: Error handling etc. From 13b820a339e55cd05214812302c9c0bad4eb6f66 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Fri, 29 Nov 2024 16:45:29 +0100 Subject: [PATCH 03/57] setup sockets for array patches --- luamml-patches-array.sty | 131 +++++++++++---------------------------- 1 file changed, 37 insertions(+), 94 deletions(-) diff --git a/luamml-patches-array.sty b/luamml-patches-array.sty index b08d561..9e83552 100644 --- a/luamml-patches-array.sty +++ b/luamml-patches-array.sty @@ -3,99 +3,42 @@ \lua_now:n { require'luamml-array' } -\cs_set:Npn \@classz { - \@classx - \@tempcnta \count@ - \prepnext@tok - \@addtopreamble { - \ifcase \@chnum - \hfil - \hskip 1sp - \d@llarbegin - \cs_if_eq:NNTF \d@llarbegin \begingroup { - \insert@column - \d@llarend - } { - \__luamml_array_init_col: - \insert@column - \luamml_save:nn {} {mtd} - \d@llarend - \__luamml_array_finalize_col:w 0~ - } - \do@row@strut - \hfil - \or - \hskip 1sp - \d@llarbegin - \cs_if_eq:NNTF \d@llarbegin \begingroup { - \insert@column - \d@llarend - } { - \__luamml_array_init_col: - \insert@column - \luamml_save:nn {} {mtd} - \d@llarend - \__luamml_array_finalize_col:w 1~ - } - \do@row@strut - \hfil - \or - \hfil - \hskip 1sp - \d@llarbegin - \cs_if_eq:NNTF \d@llarbegin \begingroup { - \insert@column - \d@llarend - } { - \__luamml_array_init_col: - \insert@column - \luamml_save:nn {} {mtd} - \d@llarend - \__luamml_array_finalize_col:w 2~ - } - \do@row@strut - \or - \setbox \ar@mcellbox \vbox \@startpbox { \@nextchar } - \insert@pcolumn - \@endpbox - \ar@align@mcell - \do@row@strut - \or - \vtop \@startpbox { \@nextchar } - \insert@pcolumn - \@endpbox - \do@row@strut - \or - \vbox \@startpbox { \@nextchar } - \insert@pcolumn - \@endpbox - \do@row@strut - \fi +\str_if_exist:cF { l__socket_tagsupport/math/luamml/array/save_plug_str } + { + \NewSocket{tagsupport/math/luamml/array/save}{0} + \NewSocket{tagsupport/math/luamml/array/finalize}{0} + \NewSocket{tagsupport/math/luamml/array/initcol}{0} + \NewSocket{tagsupport/math/luamml/array/savecol}{0} + \NewSocket{tagsupport/math/luamml/array/finalizecol}{1} } - \prepnext@tok -} -\IfPackageAtLeastTF {array} {2023/12/11} { - \cs_set:Npn \endarray { - \tbl_crcr:n{endarray} - \__luamml_array_save_array: - \egroup - \UseTaggingSocket{tbl/finalize} - \tbl_restore_outer_cell_data: - \egroup - \mode_if_math:T { \__luamml_array_finalize_array: } - \@arrayright - \gdef \@preamble {} - } -} { - \cs_new_eq:NN \insert@pcolumn \insert@column - \cs_set:Npn \endarray { - \crcr - \__luamml_array_save_array: - \egroup - \egroup - \mode_if_math:T { \__luamml_array_finalize_array: } - \@arrayright - \gdef \@preamble {} - } -} +\NewSocketPlug{tagsupport/math/luamml/array/save}{default} + { + \__luamml_array_save_array: + } + +\NewSocketPlug{tagsupport/math/luamml/array/finalize}{default} + { + \mode_if_math:T { \__luamml_array_finalize_array: } + } + +\NewSocketPlug{tagsupport/math/luamml/array/initcol}{default} + { + \__luamml_array_init_col: + } + +\NewSocketPlug{tagsupport/math/luamml/array/savecol}{default} + { + \luamml_save:nn {} {mtd} + } + +\NewSocketPlug{tagsupport/math/luamml/array/finalizecol}{default} + { + \__luamml_array_finalize_col:w #1~ + } + +\AssignSocketPlug{tagsupport/math/luamml/array/save}{default} +\AssignSocketPlug{tagsupport/math/luamml/array/finalize}{default} +\AssignSocketPlug{tagsupport/math/luamml/array/initcol}{default} +\AssignSocketPlug{tagsupport/math/luamml/array/savecol}{default} +\AssignSocketPlug{tagsupport/math/luamml/array/finalizecol}{default} From 872900b0766b3b35c39c28e9b1372c47d0106a4e Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Tue, 3 Dec 2024 00:27:11 +0100 Subject: [PATCH 04/57] add default plug --- luamml-patches-array.sty | 1 + 1 file changed, 1 insertion(+) diff --git a/luamml-patches-array.sty b/luamml-patches-array.sty index 9e83552..f169fd9 100644 --- a/luamml-patches-array.sty +++ b/luamml-patches-array.sty @@ -10,6 +10,7 @@ \NewSocket{tagsupport/math/luamml/array/initcol}{0} \NewSocket{tagsupport/math/luamml/array/savecol}{0} \NewSocket{tagsupport/math/luamml/array/finalizecol}{1} + \AssignSocketPlug{tagsupport/math/luamml/array/finalizecol}{noop} } \NewSocketPlug{tagsupport/math/luamml/array/save}{default} From af3b7108cce84b012f445d749f8815d12d76b5ed Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Tue, 3 Dec 2024 00:43:15 +0100 Subject: [PATCH 05/57] add plug for mbox in math --- CHANGELOG.md | 2 ++ luamml.dtx | 54 +++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 49 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 392524f..92c0112 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] ### Changed +- Ulrike Fischer, 2024-03-03 + luamml.dtx: add plug for mbox socket to correctly annotate them in math. - Ulrike Fischer, 2024-11-29 luamml-structelemwriter.lua: use structnum instead of label when stashing. diff --git a/luamml.dtx b/luamml.dtx index c45dca1..7efd364 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -93,9 +93,9 @@ % } % \end{verbatim} % produces a |TeX| element in the output instead of trying to import \TeX~as a mathematical expression. -% +% % It it possible to add a structure around the construct, stash that structure -% and then to tell \cmd{luamml_annotate:en} to insert it later inside the math. +% and then to tell \cmd{luamml_annotate:en} to insert it later inside the math. % For this the keys \texttt{struct} (which takes a label as argument) or \texttt{structnum} % (which takes a structure number) can be used. For example % \begin{verbatim} @@ -103,12 +103,12 @@ % \tagstructbegin{tag=mtext,stash}\tagmcbegin{} % \luamml_annotate:en{nucleus=true,structnum=\tag_get:n{struct_num}} % {\mbox{some~text~with~\emph{structure}}} -% \tagmcend\tagstructend +% \tagmcend\tagstructend % $ % \end{verbatim} -% Such a construction should check that the flag for structure elements has actually +% Such a construction should check that the flag for structure elements has actually % been set to avoid orphaned structures if the stashed structure is ignored. -% +% % More about the table structure is explained in an appendix. % % \section{Features \& Limitations} @@ -316,7 +316,7 @@ % written by a previous formula. Therefore this has to be called separately % for every formula or it must expand to different values to be useful. % The value is fully expanded when the file is written. -% +% % Only complete formulas get written into files (so formulas where % \cs{luamml_process:} or \cs{luamml_structelem:} are in effect). % @@ -523,11 +523,51 @@ % \end{macrocode} % \end{macro} % +% \subsection{Sockets} +% In various places luamml has to add code to kernel commands. This is done through +% sockets which are predeclared in lttagging. % +% \subsubsection{mbox} +% This socket annotates an \cs{mbox} inside math. +% We test for the socket until the release 2025-06-01. +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/mbox_plug_str } + { + \NewSocket{tagsupport/math/luamml/mbox}{2} + \NewSocketPlug{tagsupport/math/luamml/mbox}{default}{#2} + \AssignSocketPlug{tagsupport/math/luamml/mbox}{default} + } +%<*luatex> +\NewSocketPlug{tagsupport/math/luamml/mbox}{luamml} + { + \bool_lazy_and:nnTF + { \mode_if_math_p: } + { \int_if_odd_p:n { \int_div_truncate:nn { \l__luamml_flag_int } { 8 } } } + { + \tag_struct_begin:n + { + tag=mtext, + stash, + } + \tag_mc_begin:n {} + \luamml_annotate:en + { + nucleus = true, + structnum=\tag_get:n{struct_num} + } + { #2 } + \tag_mc_end: + \tag_struct_end: + } + { #2 } + } +\AssignSocketPlug{tagsupport/math/luamml/mbox}{luamml} +% +% \end{macrocode} % \subsection{Patching} % For some packages, we ship with patches to make them more compatible and to % demonstrate how other code can be patched to work with \texttt{luamml}. -% +% % These are either loaded directly if the packages are loaded or delayed using % \LaTeX's hook system otherwise. % \begin{macro}{\__luamml_patch_package:nn, \__luamml_patch_package:n} From 957c8ff8033ec63900bd873aa151d2d11f6fa5ea Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Tue, 3 Dec 2024 14:19:15 +0100 Subject: [PATCH 06/57] rename socket --- luamml.dtx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/luamml.dtx b/luamml.dtx index 7efd364..5134062 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -528,17 +528,17 @@ % sockets which are predeclared in lttagging. % % \subsubsection{mbox} -% This socket annotates an \cs{mbox} inside math. +% This socket annotates an \cs{hbox} inside box command use in math. % We test for the socket until the release 2025-06-01. % \begin{macrocode} -\str_if_exist:cF { l__socket_tagsupport/math/luamml/mbox_plug_str } +\str_if_exist:cF { l__socket_tagsupport/math/luamml/hbox_plug_str } { - \NewSocket{tagsupport/math/luamml/mbox}{2} - \NewSocketPlug{tagsupport/math/luamml/mbox}{default}{#2} - \AssignSocketPlug{tagsupport/math/luamml/mbox}{default} + \NewSocket{tagsupport/math/luamml/hbox}{2} + \NewSocketPlug{tagsupport/math/luamml/hbox}{default}{#2} + \AssignSocketPlug{tagsupport/math/luamml/hbox}{default} } %<*luatex> -\NewSocketPlug{tagsupport/math/luamml/mbox}{luamml} +\NewSocketPlug{tagsupport/math/luamml/hbox}{luamml} { \bool_lazy_and:nnTF { \mode_if_math_p: } @@ -561,7 +561,7 @@ } { #2 } } -\AssignSocketPlug{tagsupport/math/luamml/mbox}{luamml} +\AssignSocketPlug{tagsupport/math/luamml/hbox}{luamml} % % \end{macrocode} % \subsection{Patching} From eb4dd9561c5573e01fb64f1f5607be610557698a Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Tue, 3 Dec 2024 16:33:37 +0100 Subject: [PATCH 07/57] handle text command as in latex-lab --- luamml-patches-amstext.sty | 56 +++++++++++++++----------------------- 1 file changed, 22 insertions(+), 34 deletions(-) diff --git a/luamml-patches-amstext.sty b/luamml-patches-amstext.sty index 97b1b1f..a5ea9b7 100644 --- a/luamml-patches-amstext.sty +++ b/luamml-patches-amstext.sty @@ -1,37 +1,25 @@ \ProvidesExplPackage {luamml-patches-amstext} {2024-10-30} {0.2.0} {Feel free to add a description here} -\int_new:N \g__luamml_amsmath_text_struct_int -\cs_set:Npn \textdef@ #1 #2 #3 { - \int_if_odd:nTF { \int_div_truncate:nn { \l__luamml_flag_int } { 8 } } { - \int_gincr:N \g__luamml_amsmath_text_struct_int - \tag_struct_begin:n { - tag = mtext/mathml, - stash, - label = __luamml_amsmath_text_ \int_use:N \g__luamml_amsmath_text_struct_int - } - \tag_mc_begin:n { - tag = mtext - } - \AnnotateFormula { - nucleus = true, - struct = "__luamml_amsmath_text_ \int_use:N \g__luamml_amsmath_text_struct_int" - } - } { - \use:n - } - { - \hbox { - { - \everymath {#1} - \let \f@size #2 - \selectfont - #3 - } - } - } - \int_if_odd:nT { \int_div_truncate:nn { \l__luamml_flag_int } { 8 } } { - \tag_mc_end: - \tag_struct_end: - } -} +% This is the same definition as in latex-lab-amsmath. It can go with the +% 2025-06-01 release. + +\sys_if_engine_luatex:T + { + \def\text@#1{ + \tag_socket_use:nnn {math/luamml/hbox}{} + {{% + \ifcase\mathstyle + \hbox{{#1}}\or + \hbox{{#1}}\or + \hbox{{#1}}\or + \hbox{{#1}}\or + \hbox{{\let\f@size\sf@size\selectfont#1}}\or + \hbox{{\let\f@size\sf@size\selectfont#1}}\or + \hbox{{\let\f@size\ssf@size\selectfont#1}}\or + \hbox{{\let\f@size\ssf@size\selectfont#1}}\or + \ERROR + \fi + \check@mathfonts + }}} + } From a3e75978e659f8b7ed52cf99d1b8332760b79a07 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Tue, 3 Dec 2024 17:12:11 +0100 Subject: [PATCH 08/57] update testfiles --- testfiles-lua/cases.mlt | 27 +- testfiles-lua/test_struct.pvt | 26 +- testfiles-lua/test_struct.tpf | 1485 +++++++++++++++++---------------- 3 files changed, 781 insertions(+), 757 deletions(-) diff --git a/testfiles-lua/cases.mlt b/testfiles-lua/cases.mlt index 3db10ea..ff6f1a5 100644 --- a/testfiles-lua/cases.mlt +++ b/testfiles-lua/cases.mlt @@ -1,15 +1,21 @@ \DocumentMetadata{ uncompress, pdfversion = 2.0, - testphase = phase-I, + testphase = {phase-III,table,math}, } \input{regression-test} \documentclass{article} -\usepackage[l3build]{luamml-demo} +\usepackage{unicode-math} \begin{document} -\tagstructbegin{tag=Document} -\LuaMMLTagAF{} { +\ExplSyntaxOn +\luamml_set_filename:n { + \jobname .mml + } +\luamml_process: +\luamml_begin_single_file: +\ExplSyntaxOff + \[ \left(\begin{matrix} 1 & 0 & 0 \\ @@ -22,18 +28,17 @@ 2 & \mbox{else} \end{cases} \] -} -\LuaMMLTagAF{} { + \[ x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}. \] -} -\LuaMMLTagAF{} { + \[ \sum_a\underline c\dot bc' \] -} -Es gilt \LuaMMLTagAF{}{$\sin(x)-\sin(x+2\pi)=0$}. -\tagstructend +Es gilt $\sin(x)-\sin(x+2\pi)=0$. +\ExplSyntaxOn +\luamml_end_single_file: +\ExplSyntaxOff \end{document} diff --git a/testfiles-lua/test_struct.pvt b/testfiles-lua/test_struct.pvt index c1a0f8c..793a989 100644 --- a/testfiles-lua/test_struct.pvt +++ b/testfiles-lua/test_struct.pvt @@ -4,24 +4,16 @@ \DocumentMetadata{ uncompress, pdfversion = 2.0, - testphase = phase-I, + testphase = {phase-III,math,table}, } \input{regression-test} \documentclass{article} -\usepackage[structelem]{luamml-demo} - \usepackage{unicode-math} - +\tagpdfsetup{math/mathml/structelem} \begin{document} -\tagstructbegin{tag=Document} -\tagstructbegin{tag=P} -\tagmcbegin{tag=P} hello -\tagmcend -\tagstructend -\LuaMMLTagAF{} { \[ \begin{pmatrix} 1 & 0 & 0 \\ @@ -34,26 +26,22 @@ hello 2 & \text{else} \end{cases} \] -} -\LuaMMLTagAF{} { + \[ x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}. \] -} -\LuaMMLTagAF{} { + \[ \sum_a\underline c\dot bc' \] -} -\LuaMMLTagAF{} { \begin{align} abc&=def & e^{\mathrm{i}\pi}&=-1\\ \Big(1+2&=3\Big)\\ 5 \end{align} -} -Es gilt \LuaMMLTagAF{}{$\sin(x)-\sin(x+2\pi)=0$}. -\tagstructend + +Es gilt $\sin(x)-\sin(x+2\pi)=0$. + \end{document} diff --git a/testfiles-lua/test_struct.tpf b/testfiles-lua/test_struct.tpf index c895313..520c6ad 100644 --- a/testfiles-lua/test_struct.tpf +++ b/testfiles-lua/test_struct.tpf @@ -1,110 +1,144 @@ %PDF-2.0 %ΜΥΑΤΕΨΠΔΖ -49 0 obj -<< /O/NSO/NS 13 0 R/displaystyle(true)/scriptlevel(0) >> -endobj -52 0 obj -<< /O/NSO/NS 13 0 R/lspace(0.278em)/rspace(0.278em) >> -endobj -80 0 obj -<< /O/NSO/NS 13 0 R/display(block) >> -endobj -83 0 obj -<< /O/NSO/NS 13 0 R/fence(true)/lspace(0)/rspace(0)/symmetric(true) >> -endobj -85 0 obj -<< /O/NSO/NS 13 0 R/width(-4.981pt) >> -endobj -87 0 obj -<< /O/NSO/NS 13 0 R/lspace(+4.981pt)/width(+9.963pt) >> -endobj -102 0 obj -<< /O/NSO/NS 13 0 R/width(1.196pt) >> -endobj -103 0 obj -<> +22 0 obj +<< /Type /EmbeddedFile /Subtype /application#2Fmathml+xml /Params<> /Length 130 >> stream -(100010001)={1ifΒ π‘Ž=𝑏2else + π‘Ž = 𝑏 endstream endobj +23 0 obj +<< /Type /Filespec /AFRelationship /Supplement /Desc (mathml-1) /F (mathml-1.xml) /UF /EF<> >> +endobj 24 0 obj -<< /Type /Filespec /AFRelationship /Supplement /F (test.xml) /UF /EF<> >> +<< /Type /EmbeddedFile /Subtype /application#2Fmathml+xml /Params<> /Length 496 >> +stream + π‘₯ = βˆ’ 𝑏 Β± 𝑏 2 βˆ’ 4 π‘Ž 𝑐 2 π‘Ž . +endstream endobj -112 0 obj +25 0 obj +<< /Type /Filespec /AFRelationship /Supplement /Desc (mathml-2) /F (mathml-2.xml) /UF /EF<> >> +endobj +26 0 obj +<< /Type /EmbeddedFile /Subtype /application#2Fmathml+xml /Params<> /Length 333 >> +stream + βˆ‘ π‘Ž 𝑐 _ 𝑏 . 𝑐 β€² +endstream +endobj +27 0 obj +<< /Type /Filespec /AFRelationship /Supplement /Desc (mathml-3) /F (mathml-3.xml) /UF /EF<> >> +endobj +28 0 obj +<< /Type /EmbeddedFile /Subtype /application#2Fmathml+xml /Params<> /Length 1062 >> +stream + π‘Ž 𝑏 𝑐 = 𝑑 𝑒 𝑓 𝑒 i πœ‹ = βˆ’ 1 ( 1 + 2 = 3 ) 5 +endstream +endobj +29 0 obj +<< /Type /Filespec /AFRelationship /Supplement /Desc (mathml-4) /F (mathml-4.xml) /UF /EF<> >> +endobj +30 0 obj +<< /Type /EmbeddedFile /Subtype /application#2Fmathml+xml /Params<> /Length 530 >> +stream + sin ( π‘₯ ) βˆ’ sin ( π‘₯ + 2 πœ‹ ) = 0 +endstream +endobj +31 0 obj +<< /Type /Filespec /AFRelationship /Supplement /Desc (mathml-5) /F (mathml-5.xml) /UF /EF<> >> +endobj +38 0 obj +<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<> /Length 172 >> +stream +\begin {equation*}\begin {pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end {pmatrix} = \begin {cases} 1 & \text {if $a=b$} \\ 2 & \text {else} \end {cases}\end {equation*} +endstream +endobj +39 0 obj +<< /Type /Filespec /AFRelationship /Source /Desc (TeX source) /F (tag-AFfile1.tex) /UF /EF<> >> +endobj +64 0 obj +<< /O/NSO/NS 13 0 R/lspace(0.278em)/rspace(0.278em) >> +endobj +72 0 obj +<< /O/NSO/NS 13 0 R/display(block) >> +endobj +75 0 obj +<< /O/NSO/NS 13 0 R/fence(true)/lspace(0)/rspace(0)/symmetric(true) >> +endobj +77 0 obj +<< /O/NSO/NS 13 0 R/width(-4.981pt) >> +endobj +79 0 obj +<< /O/NSO/NS 13 0 R/lspace(+4.981pt)/width(+9.963pt) >> +endobj +94 0 obj +<< /O/NSO/NS 13 0 R/width(1.196pt) >> +endobj +97 0 obj +<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<> /Length 73 >> +stream +\begin {equation*}x = \frac {-b \pm \sqrt {b^2-4ac}}{2a}.\end {equation*} +endstream +endobj +98 0 obj +<< /Type /Filespec /AFRelationship /Source /Desc (TeX source) /F (tag-AFfile2.tex) /UF /EF<> >> +endobj +105 0 obj << /O/NSO/NS 13 0 R/lspace(0)/rspace(0.222em) >> endobj -115 0 obj +108 0 obj << /O/NSO/NS 13 0 R/lspace(0.222em)/rspace(0.222em) >> endobj -129 0 obj +122 0 obj << /O/NSO/NS 13 0 R/lspace(0)/rspace(0) >> endobj -130 0 obj -<> +125 0 obj +<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<> /Length 61 >> stream -π‘₯=βˆ’π‘Β±π‘2βˆ’4π‘Žπ‘2π‘Ž. +\begin {equation*}\sum _a\underline c\dot bc'\end {equation*} endstream endobj -104 0 obj -<< /Type /Filespec /AFRelationship /Supplement /F (test.xml) /UF /EF<> >> +126 0 obj +<< /Type /Filespec /AFRelationship /Source /Desc (TeX source) /F (tag-AFfile3.tex) /UF /EF<> >> endobj -136 0 obj +130 0 obj << /O/NSO/NS 13 0 R/lspace(0)/movablelimits(true)/rspace(0.167em) >> endobj -144 0 obj +138 0 obj << /O/NSO/NS 13 0 R/stretchy(true) >> endobj -148 0 obj +142 0 obj << /O/NSO/NS 13 0 R/mathvariant(normal) >> endobj -149 0 obj -<> +145 0 obj +<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<> /Length 85 >> stream -βˆ‘π‘Žπ‘_𝑏.𝑐′ +\begin {align}abc&=def & e^{\mathrm {i}\pi }&=-1\\ \Big (1+2&=3\Big )\\ 5\end {align} endstream endobj -131 0 obj -<< /Type /Filespec /AFRelationship /Supplement /F (test.xml) /UF /EF<> >> +146 0 obj +<< /Type /Filespec /AFRelationship /Source /Desc (TeX source) /F (tag-AFfile4.tex) /UF /EF<> >> endobj -171 0 obj +166 0 obj << /O/NSO/NS 13 0 R/lspace(0.278em)/rspace(0) >> endobj -176 0 obj +172 0 obj << /O/NSO/NS 13 0 R/fence(true)/lspace(0)/maxsize(17.861pt)/minsize(17.861pt)/rspace(0)/symmetric(true) >> endobj -199 0 obj +197 0 obj << /O/NSO/NS 13 0 R/columnalign(right left right left)/columnspacing(0 .8em 0)/displaystyle(true) >> endobj -202 0 obj -<< /O/NSO/NS 13 0 R/intent(:equationlabel) >> -endobj -210 0 obj -<> +204 0 obj +<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<> /Length 27 >> stream -(1)π‘Žπ‘π‘=𝑑𝑒𝑓𝑒iπœ‹=βˆ’1(2)(1+2=3)(3)5 +$\sin (x)-\sin (x+2\pi )=0$ endstream endobj -150 0 obj -<< /Type /Filespec /AFRelationship /Supplement /F (test.xml) /UF /EF<> >> +205 0 obj +<< /Type /Filespec /AFRelationship /Source /Desc (TeX source) /F (tag-AFfile5.tex) /UF /EF<> >> endobj -216 0 obj +209 0 obj << /O/NSO/NS 13 0 R/lspace(0)/rspace(0)/stretchy(false) >> endobj -229 0 obj -<> -stream -sin(π‘₯)βˆ’sin(π‘₯+2πœ‹)=0 -endstream -endobj -211 0 obj -<< /Type /Filespec /AFRelationship /Supplement /F (test.xml) /UF /EF<> >> -endobj -230 0 obj +222 0 obj << /Type /Metadata /Subtype /XML /Length 11693 >> stream @@ -338,13 +372,13 @@ stream endstream endobj -233 0 obj -<< /Length 7848 >> +225 0 obj +<< /Length 8308 >> stream /opacity1 gs /Artifact BMC EMC -/P<> BDC +/text<> BDC BT /F15 9.96264 Tf 1 0 0 1 148.712 657.235 Tm [<003F0032004800480051>]TJ @@ -358,9 +392,9 @@ BT 1 0 0 1 244.283 610.196 Tm [<09C7>]TJ ET EMC -/Artifact BMC +/Formula<> BDC EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 253.001 635.915 Tm [<0012>]TJ @@ -368,7 +402,7 @@ ET EMC /Artifact BMC EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 267.945 635.915 Tm [<0011>]TJ @@ -376,7 +410,7 @@ ET EMC /Artifact BMC EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 282.889 635.915 Tm [<0011>]TJ @@ -384,7 +418,11 @@ ET EMC /Artifact BMC EMC -/mn<> BDC +/Formula<> BDC +EMC +/Artifact BMC +EMC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 253.001 623.96 Tm [<0011>]TJ @@ -392,7 +430,7 @@ ET EMC /Artifact BMC EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 267.945 623.96 Tm [<0012>]TJ @@ -400,7 +438,7 @@ ET EMC /Artifact BMC EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 282.889 623.96 Tm [<0011>]TJ @@ -408,7 +446,11 @@ ET EMC /Artifact BMC EMC -/mn<> BDC +/Formula<> BDC +EMC +/Artifact BMC +EMC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 253.001 612.005 Tm [<0011>]TJ @@ -416,7 +458,7 @@ ET EMC /Artifact BMC EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 267.945 612.005 Tm [<0011>]TJ @@ -424,7 +466,7 @@ ET EMC /Artifact BMC EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 282.889 612.005 Tm [<0012>]TJ @@ -432,7 +474,7 @@ ET EMC /Artifact BMC EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 287.87 627.612 Tm [<09CC>]TJ @@ -440,13 +482,13 @@ BT 1 0 0 1 287.87 610.196 Tm [<09CA>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 299.355 623.861 Tm [<001E>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 309.873 623.861 Tm [<09D3>]TJ @@ -454,7 +496,7 @@ ET EMC /Artifact BMC EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 318.859 630.655 Tm [<0012>]TJ @@ -462,25 +504,25 @@ ET EMC /Artifact BMC EMC -/mtext<> BDC +/mtext<> BDC BT /F15 9.96264 Tf 1 0 0 1 333.803 630.655 Tm [<004200370067>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 342.939 630.655 Tm [<0510>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 350.977 630.655 Tm [<001E>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 361.495 630.655 Tm [<0511>]TJ @@ -488,7 +530,7 @@ ET EMC /Artifact BMC EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 318.859 616.309 Tm [<0013>]TJ @@ -496,7 +538,7 @@ ET EMC /Artifact BMC EMC -/mtext<> BDC +/mtext<> BDC BT /F15 9.96264 Tf 1 0 0 1 333.803 616.309 Tm [<0032004800620032>]TJ @@ -504,37 +546,37 @@ ET EMC /Artifact BMC EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 259.389 584.175 Tm [<0527>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 267.855 584.175 Tm [<001E>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 279.569 590.92 Tm [<0A37>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 287.319 590.92 Tm [<0511>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 293.947 590.92 Tm [<0A3B>]TJ ET EMC -/Artifact BMC +/Formula<> BDC BT /F20 9.96264 Tf 1 0 0 1 303.912 599.651 Tm [<0C05>]TJ @@ -544,109 +586,109 @@ q [] 0 d 0 J 0.398 w 0 0 m 35.684 0 l S Q EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 312.21 590.92 Tm [<0511>]TJ ET EMC -/mn<> BDC +/mn<> BDC BT /F21 6.97385 Tf 1 0 0 1 316.624 593.799 Tm [<03F5>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 323.364 590.92 Tm [<0A37>]TJ ET EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 333.329 590.92 Tm [<0015>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 338.31 590.92 Tm [<0510>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 343.58 590.92 Tm [<0512>]TJ ET EMC -/Artifact BMC +/Formula<> BDC q 1 0 0 1 279.569 586.666 cm [] 0 d 0 J 0.398 w 0 0 m 68.325 0 l S Q EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 308.605 577.341 Tm [<0013>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 313.587 577.341 Tm [<0510>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 349.089 584.175 Tm [<000F>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 289.257 554.287 Tm [<0C02>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F21 6.97385 Tf 1 0 0 1 294.289 543.827 Tm [<057C>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 305.304 554.287 Tm [<0512>]TJ ET EMC -/Artifact BMC +/Formula<> BDC q 1 0 0 1 305.304 552.783 cm [] 0 d 0 J 0.398 w 0 0 m 4.314 0 l S Q EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 313.902 556.718 Tm [<06FE>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 309.618 554.287 Tm [<0511>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 314.031 554.287 Tm [<0512>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F21 6.97385 Tf 1 0 0 1 318.594 557.904 Tm [<0BA5>]TJ @@ -654,19 +696,21 @@ ET EMC /Artifact BMC EMC -/mi<> BDC +/Formula<> BDC +EMC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 231.386 514.437 Tm [<0510>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 236.656 514.437 Tm [<0511>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 241.07 514.437 Tm [<0512>]TJ @@ -674,25 +718,25 @@ ET EMC /Artifact BMC EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 248.151 514.437 Tm [<001E>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 258.669 514.437 Tm [<0513>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 264.089 514.437 Tm [<0514>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 268.731 514.437 Tm [<0515>]TJ @@ -700,19 +744,19 @@ ET EMC /Artifact BMC EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 356.481 514.437 Tm [<0514>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F32 6.97385 Tf 1 0 0 1 361.124 518.053 Tm [<0042>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F21 6.97385 Tf 1 0 0 1 363.377 518.053 Tm [<11CE>]TJ @@ -720,49 +764,55 @@ ET EMC /Artifact BMC EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 371.36 514.437 Tm [<001E>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 381.879 514.437 Tm [<0A37>]TJ ET EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 389.63 514.437 Tm [<0012>]TJ ET EMC /Artifact BMC +EMC +/Lbl<> BDC BT /F15 9.96264 Tf 1 0 0 1 464.747 514.437 Tm [<005500520056>]TJ ET EMC -/mo<> BDC +/Artifact BMC +EMC +/Formula<> BDC +EMC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 216.637 493.954 Tm [<0997>]TJ ET EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 223.242 493.954 Tm [<0012>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 230.437 493.954 Tm [<000C>]TJ ET EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 240.402 493.954 Tm [<0013>]TJ @@ -770,134 +820,153 @@ ET EMC /Artifact BMC EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 248.151 493.954 Tm [<001E>]TJ ET EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 258.669 493.954 Tm [<0014>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 263.65 493.954 Tm [<0998>]TJ ET EMC /Artifact BMC +EMC +/Lbl<> BDC BT /F15 9.96264 Tf 1 0 0 1 464.747 493.954 Tm [<0055006B0056>]TJ ET EMC -/mn<> BDC +/Artifact BMC +EMC +/Formula<> BDC +EMC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 240.402 473.67 Tm [<0016>]TJ ET EMC /Artifact BMC +EMC +/Lbl<> BDC BT /F15 9.96264 Tf 1 0 0 1 464.747 473.67 Tm [<0055006A0056>]TJ +ET +EMC +/text<> BDC +BT +/F15 9.96264 Tf 1 0 0 1 148.712 451.752 Tm [<003100620067003B0042004800690067>]TJ ET EMC -/mi<> BDC +/Formula<> BDC +EMC +/mi<> BDC BT /F15 9.96264 Tf 1 0 0 1 180.453 451.752 Tm [<00620042004D>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 192.687 451.752 Tm [<0009>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 196.563 451.752 Tm [<0527>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 202.262 451.752 Tm [<000A>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 208.351 451.752 Tm [<0A37>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F15 9.96264 Tf 1 0 0 1 218.316 451.752 Tm [<00620042004D>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 230.55 451.752 Tm [<0009>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 234.425 451.752 Tm [<0527>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 242.338 451.752 Tm [<000C>]TJ ET EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 252.303 451.752 Tm [<0013>]TJ ET EMC -/mi<> BDC +/mi<> BDC BT /F20 9.96264 Tf 1 0 0 1 257.284 451.752 Tm [<117A>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 263.212 451.752 Tm [<000A>]TJ ET EMC -/mo<> BDC +/mo<> BDC BT /F20 9.96264 Tf 1 0 0 1 269.854 451.752 Tm [<001E>]TJ ET EMC -/mn<> BDC +/mn<> BDC BT /F20 9.96264 Tf 1 0 0 1 280.373 451.752 Tm [<0011>]TJ ET EMC /Artifact BMC +EMC +/text<> BDC BT /F15 9.96264 Tf 1 0 0 1 285.354 451.752 Tm [<0058>]TJ ET EMC /Artifact BMC +EMC +/Artifact BMC BT /F15 9.96264 Tf 1 0 0 1 303.133 89.365 Tm [<0052>]TJ @@ -907,40 +976,52 @@ EMC EMC endstream endobj -232 0 obj -<< /Type /Page /Contents 233 0 R /Resources 231 0 R /MediaBox [ 0 0 612 792 ] /StructParents 0/Tabs /S /Parent 238 0 R >> +224 0 obj +<< /Type /Page /Contents 225 0 R /Resources 223 0 R /MediaBox [ 0 0 612 792 ] /StructParents 0/Tabs /S /Parent 230 0 R >> endobj -231 0 obj -<< /ExtGState 1 0 R /Font << /F15 234 0 R /F20 235 0 R /F21 236 0 R /F32 237 0 R >> >> +223 0 obj +<< /ExtGState 1 0 R /Font << /F15 226 0 R /F20 227 0 R /F21 228 0 R /F32 229 0 R >> >> endobj 1 0 obj << /opacity1 <> >> endobj -239 0 obj +231 0 obj << /Marked true >> endobj +232 0 obj +<< /Names[(l3ef0001) 23 0 R (l3ef0002) 25 0 R (l3ef0003) 27 0 R (l3ef0004) 29 0 R (l3ef0005) 31 0 R] >> +endobj 6 0 obj -<< /Nums [0 [ 23 0 R 82 0 R 27 0 R 29 0 R 31 0 R 33 0 R 35 0 R 37 0 R 39 0 R 41 0 R 43 0 R 93 0 R 94 0 R 96 0 R 45 0 R 54 0 R 56 0 R 57 0 R 58 0 R 72 0 R 74 0 R 107 0 R 108 0 R 111 0 R 113 0 R 114 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 126 0 R 127 0 R 128 0 R 135 0 R 137 0 R 139 0 R 143 0 R 142 0 R 146 0 R 147 0 R 153 0 R 154 0 R 155 0 R 158 0 R 159 0 R 160 0 R 161 0 R 164 0 R 166 0 R 167 0 R 170 0 R 172 0 R 173 0 R 175 0 R 177 0 R 178 0 R 179 0 R 182 0 R 183 0 R 184 0 R 190 0 R 214 0 R 215 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R 227 0 R 228 0 R] +<< /Nums [0 [ 35 0 R 74 0 R 37 0 R 41 0 R 43 0 R 45 0 R 37 0 R 47 0 R 49 0 R 51 0 R 37 0 R 53 0 R 55 0 R 57 0 R 85 0 R 86 0 R 88 0 R 59 0 R 60 0 R 62 0 R 63 0 R 65 0 R 68 0 R 69 0 R 100 0 R 101 0 R 104 0 R 106 0 R 107 0 R 96 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 96 0 R 119 0 R 120 0 R 121 0 R 129 0 R 131 0 R 133 0 R 124 0 R 137 0 R 136 0 R 140 0 R 141 0 R 144 0 R 148 0 R 149 0 R 150 0 R 153 0 R 154 0 R 155 0 R 156 0 R 159 0 R 161 0 R 162 0 R 165 0 R 167 0 R 168 0 R 169 0 R 144 0 R 171 0 R 173 0 R 174 0 R 175 0 R 178 0 R 179 0 R 180 0 R 185 0 R 144 0 R 187 0 R 194 0 R 202 0 R 203 0 R 207 0 R 208 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 202 0 R] ] >> endobj -240 0 obj -<< /Limits [(ID.0002) (ID.0051)]/Names [(ID.0002) 21 0 R (ID.0003) 22 0 R (ID.0004) 23 0 R (ID.0005) 25 0 R (ID.0006) 26 0 R (ID.0007) 27 0 R (ID.0008) 28 0 R (ID.0009) 29 0 R (ID.0010) 30 0 R (ID.0011) 31 0 R (ID.0012) 32 0 R (ID.0013) 33 0 R (ID.0014) 34 0 R (ID.0015) 35 0 R (ID.0016) 36 0 R (ID.0017) 37 0 R (ID.0018) 38 0 R (ID.0019) 39 0 R (ID.0020) 40 0 R (ID.0021) 41 0 R (ID.0022) 42 0 R (ID.0023) 43 0 R (ID.0024) 44 0 R (ID.0025) 45 0 R (ID.0026) 46 0 R (ID.0027) 47 0 R (ID.0028) 48 0 R (ID.0029) 50 0 R (ID.0030) 51 0 R (ID.0031) 53 0 R (ID.0032) 54 0 R (ID.0033) 55 0 R (ID.0034) 56 0 R (ID.0035) 57 0 R (ID.0036) 58 0 R (ID.0037) 59 0 R (ID.0038) 60 0 R (ID.0039) 61 0 R (ID.0040) 62 0 R (ID.0041) 63 0 R (ID.0042) 64 0 R (ID.0043) 65 0 R (ID.0044) 66 0 R (ID.0045) 67 0 R (ID.0046) 68 0 R (ID.0047) 69 0 R (ID.0048) 70 0 R (ID.0049) 71 0 R (ID.0050) 72 0 R (ID.0051) 73 0 R ] >> +233 0 obj +<< /Limits [(ID.0002) (ID.0051)]/Names [(ID.0002) 21 0 R (ID.0003) 32 0 R (ID.0004) 33 0 R (ID.0005) 34 0 R (ID.0006) 35 0 R (ID.0007) 36 0 R (ID.0008) 37 0 R (ID.0009) 40 0 R (ID.0010) 41 0 R (ID.0011) 42 0 R (ID.0012) 43 0 R (ID.0013) 44 0 R (ID.0014) 45 0 R (ID.0015) 46 0 R (ID.0016) 47 0 R (ID.0017) 48 0 R (ID.0018) 49 0 R (ID.0019) 50 0 R (ID.0020) 51 0 R (ID.0021) 52 0 R (ID.0022) 53 0 R (ID.0023) 54 0 R (ID.0024) 55 0 R (ID.0025) 56 0 R (ID.0026) 57 0 R (ID.0027) 58 0 R (ID.0028) 59 0 R (ID.0029) 60 0 R (ID.0030) 61 0 R (ID.0031) 62 0 R (ID.0032) 63 0 R (ID.0033) 65 0 R (ID.0034) 66 0 R (ID.0035) 67 0 R (ID.0036) 68 0 R (ID.0037) 69 0 R (ID.0038) 70 0 R (ID.0039) 71 0 R (ID.0040) 73 0 R (ID.0041) 74 0 R (ID.0042) 76 0 R (ID.0043) 78 0 R (ID.0044) 80 0 R (ID.0045) 81 0 R (ID.0046) 82 0 R (ID.0047) 83 0 R (ID.0048) 84 0 R (ID.0049) 85 0 R (ID.0050) 86 0 R (ID.0051) 87 0 R ] >> endobj -241 0 obj -<< /Limits [(ID.0052) (ID.0101)]/Names [(ID.0052) 74 0 R (ID.0053) 75 0 R (ID.0054) 76 0 R (ID.0055) 77 0 R (ID.0056) 78 0 R (ID.0057) 79 0 R (ID.0058) 81 0 R (ID.0059) 82 0 R (ID.0060) 84 0 R (ID.0061) 86 0 R (ID.0062) 88 0 R (ID.0063) 89 0 R (ID.0064) 90 0 R (ID.0065) 91 0 R (ID.0066) 92 0 R (ID.0067) 93 0 R (ID.0068) 94 0 R (ID.0069) 95 0 R (ID.0070) 96 0 R (ID.0071) 97 0 R (ID.0072) 98 0 R (ID.0073) 99 0 R (ID.0074) 100 0 R (ID.0075) 101 0 R (ID.0076) 105 0 R (ID.0077) 106 0 R (ID.0078) 107 0 R (ID.0079) 108 0 R (ID.0080) 109 0 R (ID.0081) 110 0 R (ID.0082) 111 0 R (ID.0083) 113 0 R (ID.0084) 114 0 R (ID.0085) 116 0 R (ID.0086) 117 0 R (ID.0087) 118 0 R (ID.0088) 119 0 R (ID.0089) 120 0 R (ID.0090) 121 0 R (ID.0091) 122 0 R (ID.0092) 123 0 R (ID.0093) 124 0 R (ID.0094) 125 0 R (ID.0095) 126 0 R (ID.0096) 127 0 R (ID.0097) 128 0 R (ID.0098) 132 0 R (ID.0099) 133 0 R (ID.0100) 134 0 R (ID.0101) 135 0 R ] >> +234 0 obj +<< /Limits [(ID.0052) (ID.0101)]/Names [(ID.0052) 88 0 R (ID.0053) 89 0 R (ID.0054) 90 0 R (ID.0055) 91 0 R (ID.0056) 92 0 R (ID.0057) 93 0 R (ID.0058) 95 0 R (ID.0059) 96 0 R (ID.0060) 99 0 R (ID.0061) 100 0 R (ID.0062) 101 0 R (ID.0063) 102 0 R (ID.0064) 103 0 R (ID.0065) 104 0 R (ID.0066) 106 0 R (ID.0067) 107 0 R (ID.0068) 109 0 R (ID.0069) 110 0 R (ID.0070) 111 0 R (ID.0071) 112 0 R (ID.0072) 113 0 R (ID.0073) 114 0 R (ID.0074) 115 0 R (ID.0075) 116 0 R (ID.0076) 117 0 R (ID.0077) 118 0 R (ID.0078) 119 0 R (ID.0079) 120 0 R (ID.0080) 121 0 R (ID.0081) 123 0 R (ID.0082) 124 0 R (ID.0083) 127 0 R (ID.0084) 128 0 R (ID.0085) 129 0 R (ID.0086) 131 0 R (ID.0087) 132 0 R (ID.0088) 133 0 R (ID.0089) 134 0 R (ID.0090) 135 0 R (ID.0091) 136 0 R (ID.0092) 137 0 R (ID.0093) 139 0 R (ID.0094) 140 0 R (ID.0095) 141 0 R (ID.0096) 143 0 R (ID.0097) 144 0 R (ID.0098) 147 0 R (ID.0099) 148 0 R (ID.0100) 149 0 R (ID.0101) 150 0 R ] >> endobj -242 0 obj -<< /Limits [(ID.0102) (ID.0151)]/Names [(ID.0102) 137 0 R (ID.0103) 138 0 R (ID.0104) 139 0 R (ID.0105) 140 0 R (ID.0106) 141 0 R (ID.0107) 142 0 R (ID.0108) 143 0 R (ID.0109) 145 0 R (ID.0110) 146 0 R (ID.0111) 147 0 R (ID.0112) 151 0 R (ID.0113) 152 0 R (ID.0114) 153 0 R (ID.0115) 154 0 R (ID.0116) 155 0 R (ID.0117) 156 0 R (ID.0118) 157 0 R (ID.0119) 158 0 R (ID.0120) 159 0 R (ID.0121) 160 0 R (ID.0122) 161 0 R (ID.0123) 162 0 R (ID.0124) 163 0 R (ID.0125) 164 0 R (ID.0126) 165 0 R (ID.0127) 166 0 R (ID.0128) 167 0 R (ID.0129) 168 0 R (ID.0130) 169 0 R (ID.0131) 170 0 R (ID.0132) 172 0 R (ID.0133) 173 0 R (ID.0134) 174 0 R (ID.0135) 175 0 R (ID.0136) 177 0 R (ID.0137) 178 0 R (ID.0138) 179 0 R (ID.0139) 180 0 R (ID.0140) 181 0 R (ID.0141) 182 0 R (ID.0142) 183 0 R (ID.0143) 184 0 R (ID.0144) 185 0 R (ID.0145) 186 0 R (ID.0146) 187 0 R (ID.0147) 188 0 R (ID.0148) 189 0 R (ID.0149) 190 0 R (ID.0150) 191 0 R (ID.0151) 192 0 R ] >> +235 0 obj +<< /Limits [(ID.0102) (ID.0151)]/Names [(ID.0102) 151 0 R (ID.0103) 152 0 R (ID.0104) 153 0 R (ID.0105) 154 0 R (ID.0106) 155 0 R (ID.0107) 156 0 R (ID.0108) 157 0 R (ID.0109) 158 0 R (ID.0110) 159 0 R (ID.0111) 160 0 R (ID.0112) 161 0 R (ID.0113) 162 0 R (ID.0114) 163 0 R (ID.0115) 164 0 R (ID.0116) 165 0 R (ID.0117) 167 0 R (ID.0118) 168 0 R (ID.0119) 169 0 R (ID.0120) 170 0 R (ID.0121) 171 0 R (ID.0122) 173 0 R (ID.0123) 174 0 R (ID.0124) 175 0 R (ID.0125) 176 0 R (ID.0126) 177 0 R (ID.0127) 178 0 R (ID.0128) 179 0 R (ID.0129) 180 0 R (ID.0130) 181 0 R (ID.0131) 182 0 R (ID.0132) 183 0 R (ID.0133) 184 0 R (ID.0134) 185 0 R (ID.0135) 186 0 R (ID.0136) 187 0 R (ID.0137) 188 0 R (ID.0138) 189 0 R (ID.0139) 190 0 R (ID.0140) 191 0 R (ID.0141) 192 0 R (ID.0142) 193 0 R (ID.0143) 194 0 R (ID.0144) 195 0 R (ID.0145) 196 0 R (ID.0146) 198 0 R (ID.0147) 199 0 R (ID.0148) 200 0 R (ID.0149) 201 0 R (ID.0150) 202 0 R (ID.0151) 203 0 R ] >> endobj -243 0 obj -<< /Limits [(ID.0152) (ID.0182)]/Names [(ID.0152) 193 0 R (ID.0153) 194 0 R (ID.0154) 195 0 R (ID.0155) 196 0 R (ID.0156) 197 0 R (ID.0157) 198 0 R (ID.0158) 200 0 R (ID.0159) 201 0 R (ID.0160) 203 0 R (ID.0161) 204 0 R (ID.0162) 205 0 R (ID.0163) 206 0 R (ID.0164) 207 0 R (ID.0165) 208 0 R (ID.0166) 209 0 R (ID.0167) 212 0 R (ID.0168) 213 0 R (ID.0169) 214 0 R (ID.0170) 215 0 R (ID.0171) 217 0 R (ID.0172) 218 0 R (ID.0173) 219 0 R (ID.0174) 220 0 R (ID.0175) 221 0 R (ID.0176) 222 0 R (ID.0177) 223 0 R (ID.0178) 224 0 R (ID.0179) 225 0 R (ID.0180) 226 0 R (ID.0181) 227 0 R (ID.0182) 228 0 R ] >> +236 0 obj +<< /Limits [(ID.0152) (ID.0166)]/Names [(ID.0152) 206 0 R (ID.0153) 207 0 R (ID.0154) 208 0 R (ID.0155) 210 0 R (ID.0156) 211 0 R (ID.0157) 212 0 R (ID.0158) 213 0 R (ID.0159) 214 0 R (ID.0160) 215 0 R (ID.0161) 216 0 R (ID.0162) 217 0 R (ID.0163) 218 0 R (ID.0164) 219 0 R (ID.0165) 220 0 R (ID.0166) 221 0 R ] >> endobj -244 0 obj -<< /Kids [240 0 R 241 0 R 242 0 R 243 0 R] >> +237 0 obj +<< /Kids [233 0 R 234 0 R 235 0 R 236 0 R] >> endobj 7 0 obj << /Artifact /NonStruct /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 /list /L /itemize /L /enumerate /L /description /L /quote /BlockQuote /quotation /BlockQuote /verbatim /P /item /LI /itemlabel /Lbl /itembody /LBody /footnote /Note /footnotemark /Lbl /footnotelabel /Lbl /text-unit /Part /text /P /theorem-like /Sect /codeline /Span /float /Note /figures /Sect /tables /Sect >> endobj +238 0 obj +<< /justify <> +/display <> +/inline <> +/TH-both <> +/TH-row <> +/TH-col <> + >> +endobj 9 0 obj << /Type /Namespace /NS (http://iso.org/pdf/ssn) >> endobj @@ -969,562 +1050,514 @@ endobj [ 9 0 R 11 0 R 13 0 R 15 0 R 17 0 R 19 0 R ] endobj 21 0 obj -<< /Type /StructElem /S /Document /NS 11 0 R /P 5 0 R /K 22 0 R /ID (ID.0002) >> -endobj -22 0 obj -<< /Type /StructElem /S /Document /NS 11 0 R /P 21 0 R /K [23 0 R 25 0 R 105 0 R 132 0 R 151 0 R 212 0 R] /ID (ID.0003) >> -endobj -23 0 obj -<< /Type /StructElem /S /P /NS 11 0 R /P 22 0 R /K <> /ID (ID.0004) >> -endobj -25 0 obj -<< /Type /StructElem /AF [24 0 R] /S /Formula /NS 11 0 R /P 22 0 R /K 79 0 R /ID (ID.0005) >> -endobj -26 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 89 0 R /K 27 0 R /ID (ID.0006) >> -endobj -27 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 26 0 R /K <> /ID (ID.0007) >> -endobj -28 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 89 0 R /K 29 0 R /ID (ID.0008) >> -endobj -29 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 28 0 R /K <> /ID (ID.0009) >> -endobj -30 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 89 0 R /K 31 0 R /ID (ID.0010) >> -endobj -31 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 30 0 R /K <> /ID (ID.0011) >> +<< /Type /StructElem /S /Document /NS 11 0 R /P 5 0 R /K [34 0 R 36 0 R 95 0 R 123 0 R 143 0 R 201 0 R] /ID (ID.0002) >> endobj 32 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 90 0 R /K 33 0 R /ID (ID.0012) >> +<< /Type /StructElem /S /Artifact /NS 15 0 R /P 5 0 R /ID (ID.0003) >> endobj 33 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 32 0 R /K <> /ID (ID.0013) >> +<< /Type /StructElem /S /Artifact /NS 15 0 R /P 5 0 R /ID (ID.0004) >> endobj 34 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 90 0 R /K 35 0 R /ID (ID.0014) >> +<< /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 35 0 R /ID (ID.0005) >> endobj 35 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 34 0 R /K <> /ID (ID.0015) >> +<< /Type /StructElem /C /justify /S /text /NS 15 0 R /P 34 0 R /K <> /ID (ID.0006) >> endobj 36 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 90 0 R /K 37 0 R /ID (ID.0016) >> +<< /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 37 0 R /ID (ID.0007) >> endobj 37 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 36 0 R /K <> /ID (ID.0017) >> -endobj -38 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 91 0 R /K 39 0 R /ID (ID.0018) >> -endobj -39 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 38 0 R /K <> /ID (ID.0019) >> +<< /Type /StructElem /C /display /AF [23 0 R 39 0 R] /T /S /Formula /NS 11 0 R /P 36 0 R /K [<> <> <> 71 0 R] /ID (ID.0008) >> endobj 40 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 91 0 R /K 41 0 R /ID (ID.0020) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 81 0 R /K 41 0 R /ID (ID.0009) >> endobj 41 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 40 0 R /K <> /ID (ID.0021) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 40 0 R /K <> /ID (ID.0010) >> endobj 42 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 91 0 R /K 43 0 R /ID (ID.0022) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 81 0 R /K 43 0 R /ID (ID.0011) >> endobj 43 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 42 0 R /K <> /ID (ID.0023) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 42 0 R /K <> /ID (ID.0012) >> endobj 44 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 99 0 R /K 45 0 R /ID (ID.0024) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 81 0 R /K 45 0 R /ID (ID.0013) >> endobj 45 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 44 0 R /K <> /ID (ID.0025) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 44 0 R /K <> /ID (ID.0014) >> endobj 46 0 obj -<< /Type /StructElem /S /Artifact /NS 13 0 R /P 5 0 R /K [ 47 0 R] /ID (ID.0026) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 82 0 R /K 47 0 R /ID (ID.0015) >> endobj 47 0 obj -<< /Type /StructElem /S /math /NS 13 0 R /P 46 0 R /K 48 0 R /ID (ID.0027) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 46 0 R /K <> /ID (ID.0016) >> endobj 48 0 obj -<< /Type /StructElem /A 49 0 R /S /mstyle /NS 13 0 R /P 47 0 R /K [50 0 R 51 0 R 53 0 R] /ID (ID.0028) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 82 0 R /K 49 0 R /ID (ID.0017) >> +endobj +49 0 obj +<< /Type /StructElem /S /mn /NS 13 0 R /P 48 0 R /K <> /ID (ID.0018) >> endobj 50 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 48 0 R /ID (ID.0029) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 82 0 R /K 51 0 R /ID (ID.0019) >> endobj 51 0 obj -<< /Type /StructElem /A 52 0 R /S /mo /NS 13 0 R /P 48 0 R /ID (ID.0030) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 50 0 R /K <> /ID (ID.0020) >> +endobj +52 0 obj +<< /Type /StructElem /S /mtd /NS 13 0 R /P 83 0 R /K 53 0 R /ID (ID.0021) >> endobj 53 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 48 0 R /ID (ID.0031) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 52 0 R /K <> /ID (ID.0022) >> endobj 54 0 obj -<< /Type /StructElem /S /mtext /NS 13 0 R /P 69 0 R /K [<> 55 0 R] /ID (ID.0032) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 83 0 R /K 55 0 R /ID (ID.0023) >> endobj 55 0 obj -<< /Type /StructElem /S /math /NS 13 0 R /P 54 0 R /K [56 0 R 57 0 R 58 0 R] /ID (ID.0033) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 54 0 R /K <> /ID (ID.0024) >> endobj 56 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 55 0 R /K <> /ID (ID.0034) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 83 0 R /K 57 0 R /ID (ID.0025) >> endobj 57 0 obj -<< /Type /StructElem /A 52 0 R /S /mo /NS 13 0 R /P 55 0 R /K <> /ID (ID.0035) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 56 0 R /K <> /ID (ID.0026) >> endobj 58 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 55 0 R /K <> /ID (ID.0036) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 91 0 R /K 59 0 R /ID (ID.0027) >> endobj 59 0 obj -<< /Type /StructElem /S /Artifact /NS 13 0 R /P 5 0 R /K [ 60 0 R] /ID (ID.0037) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 58 0 R /K <> /ID (ID.0028) >> endobj 60 0 obj -<< /Type /StructElem /S /math /NS 13 0 R /P 59 0 R /K [61 0 R 62 0 R 63 0 R] /ID (ID.0038) >> +<< /Type /StructElem /S /mtext /NS 13 0 R /P 66 0 R /K [<> 61 0 R] /ID (ID.0029) >> endobj 61 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 60 0 R /ID (ID.0039) >> +<< /Type /StructElem /S /math /NS 13 0 R /P 60 0 R /K [62 0 R 63 0 R 65 0 R] /ID (ID.0030) >> endobj 62 0 obj -<< /Type /StructElem /A 52 0 R /S /mo /NS 13 0 R /P 60 0 R /ID (ID.0040) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 61 0 R /K <> /ID (ID.0031) >> endobj 63 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 60 0 R /ID (ID.0041) >> -endobj -64 0 obj -<< /Type /StructElem /S /Artifact /NS 13 0 R /P 5 0 R /K [ 65 0 R] /ID (ID.0042) >> +<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 61 0 R /K <> /ID (ID.0032) >> endobj 65 0 obj -<< /Type /StructElem /S /math /NS 13 0 R /P 64 0 R /K [66 0 R 67 0 R 68 0 R] /ID (ID.0043) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 61 0 R /K <> /ID (ID.0033) >> endobj 66 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 65 0 R /ID (ID.0044) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 91 0 R /K 60 0 R /ID (ID.0034) >> endobj 67 0 obj -<< /Type /StructElem /A 52 0 R /S /mo /NS 13 0 R /P 65 0 R /ID (ID.0045) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 92 0 R /K 68 0 R /ID (ID.0035) >> endobj 68 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 65 0 R /ID (ID.0046) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 67 0 R /K <> /ID (ID.0036) >> endobj 69 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 99 0 R /K [54 0 R 70 0 R] /ID (ID.0047) >> +<< /Type /StructElem /S /mtext /NS 13 0 R /P 70 0 R /K <> /ID (ID.0037) >> endobj 70 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 69 0 R /ID (ID.0048) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 92 0 R /K 69 0 R /ID (ID.0038) >> endobj 71 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 100 0 R /K 72 0 R /ID (ID.0049) >> -endobj -72 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 71 0 R /K <> /ID (ID.0050) >> +<< /Type /StructElem /A 72 0 R /S /math /NS 13 0 R /P 37 0 R /K [73 0 R 86 0 R 87 0 R] /ID (ID.0039) >> endobj 73 0 obj -<< /Type /StructElem /S /Artifact /NS 13 0 R /P 5 0 R /ID (ID.0051) >> +<< /Type /StructElem /S /mrow /NS 13 0 R /P 71 0 R /K [74 0 R 76 0 R 78 0 R 84 0 R 85 0 R] /ID (ID.0040) >> endobj 74 0 obj -<< /Type /StructElem /S /mtext /NS 13 0 R /P 77 0 R /K <> /ID (ID.0052) >> -endobj -75 0 obj -<< /Type /StructElem /S /Artifact /NS 13 0 R /P 5 0 R /ID (ID.0053) >> +<< /Type /StructElem /A 75 0 R /ActualText /S /mo /NS 13 0 R /P 73 0 R /K <> /ID (ID.0041) >> endobj 76 0 obj -<< /Type /StructElem /S /Artifact /NS 13 0 R /P 5 0 R /ID (ID.0054) >> -endobj -77 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 100 0 R /K [74 0 R 78 0 R] /ID (ID.0055) >> +<< /Type /StructElem /A 77 0 R /S /mspace /NS 13 0 R /P 73 0 R /ID (ID.0042) >> endobj 78 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 77 0 R /ID (ID.0056) >> +<< /Type /StructElem /A 79 0 R /S /mpadded /NS 13 0 R /P 73 0 R /K 80 0 R /ID (ID.0043) >> endobj -79 0 obj -<< /Type /StructElem /A 80 0 R /S /math /NS 13 0 R /P 25 0 R /K [81 0 R 94 0 R 95 0 R] /ID (ID.0057) >> +80 0 obj +<< /Type /StructElem /S /mtable /NS 13 0 R /P 78 0 R /K [81 0 R 82 0 R 83 0 R] /ID (ID.0044) >> endobj 81 0 obj -<< /Type /StructElem /S /mrow /NS 13 0 R /P 79 0 R /K [82 0 R 84 0 R 86 0 R 92 0 R 93 0 R] /ID (ID.0058) >> +<< /Type /StructElem /S /mtr /NS 13 0 R /P 80 0 R /K [40 0 R 42 0 R 44 0 R] /ID (ID.0045) >> endobj 82 0 obj -<< /Type /StructElem /A 83 0 R /ActualText /S /mo /NS 13 0 R /P 81 0 R /K <> /ID (ID.0059) >> +<< /Type /StructElem /S /mtr /NS 13 0 R /P 80 0 R /K [46 0 R 48 0 R 50 0 R] /ID (ID.0046) >> +endobj +83 0 obj +<< /Type /StructElem /S /mtr /NS 13 0 R /P 80 0 R /K [52 0 R 54 0 R 56 0 R] /ID (ID.0047) >> endobj 84 0 obj -<< /Type /StructElem /A 85 0 R /S /mspace /NS 13 0 R /P 81 0 R /ID (ID.0060) >> +<< /Type /StructElem /A 77 0 R /S /mspace /NS 13 0 R /P 73 0 R /ID (ID.0048) >> +endobj +85 0 obj +<< /Type /StructElem /A 75 0 R /ActualText /S /mo /NS 13 0 R /P 73 0 R /K <> /ID (ID.0049) >> endobj 86 0 obj -<< /Type /StructElem /A 87 0 R /S /mpadded /NS 13 0 R /P 81 0 R /K 88 0 R /ID (ID.0061) >> +<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 71 0 R /K <> /ID (ID.0050) >> +endobj +87 0 obj +<< /Type /StructElem /S /mrow /NS 13 0 R /P 71 0 R /K [88 0 R 89 0 R 93 0 R] /ID (ID.0051) >> endobj 88 0 obj -<< /Type /StructElem /S /mtable /NS 13 0 R /P 86 0 R /K [89 0 R 90 0 R 91 0 R] /ID (ID.0062) >> +<< /Type /StructElem /A 75 0 R /ActualText /S /mo /NS 13 0 R /P 87 0 R /K <> /ID (ID.0052) >> endobj 89 0 obj -<< /Type /StructElem /S /mtr /NS 13 0 R /P 88 0 R /K [26 0 R 28 0 R 30 0 R] /ID (ID.0063) >> +<< /Type /StructElem /A 79 0 R /S /mpadded /NS 13 0 R /P 87 0 R /K 90 0 R /ID (ID.0053) >> endobj 90 0 obj -<< /Type /StructElem /S /mtr /NS 13 0 R /P 88 0 R /K [32 0 R 34 0 R 36 0 R] /ID (ID.0064) >> +<< /Type /StructElem /S /mtable /NS 13 0 R /P 89 0 R /K [91 0 R 92 0 R] /ID (ID.0054) >> endobj 91 0 obj -<< /Type /StructElem /S /mtr /NS 13 0 R /P 88 0 R /K [38 0 R 40 0 R 42 0 R] /ID (ID.0065) >> +<< /Type /StructElem /S /mtr /NS 13 0 R /P 90 0 R /K [58 0 R 66 0 R] /ID (ID.0055) >> endobj 92 0 obj -<< /Type /StructElem /A 85 0 R /S /mspace /NS 13 0 R /P 81 0 R /ID (ID.0066) >> +<< /Type /StructElem /S /mtr /NS 13 0 R /P 90 0 R /K [67 0 R 70 0 R] /ID (ID.0056) >> endobj 93 0 obj -<< /Type /StructElem /A 83 0 R /ActualText /S /mo /NS 13 0 R /P 81 0 R /K <> /ID (ID.0067) >> -endobj -94 0 obj -<< /Type /StructElem /A 52 0 R /S /mo /NS 13 0 R /P 79 0 R /K <> /ID (ID.0068) >> +<< /Type /StructElem /A 94 0 R /S /mspace /NS 13 0 R /P 87 0 R /ID (ID.0057) >> endobj 95 0 obj -<< /Type /StructElem /S /mrow /NS 13 0 R /P 79 0 R /K [96 0 R 97 0 R 101 0 R] /ID (ID.0069) >> +<< /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 96 0 R /ID (ID.0058) >> endobj 96 0 obj -<< /Type /StructElem /A 83 0 R /ActualText /S /mo /NS 13 0 R /P 95 0 R /K <> /ID (ID.0070) >> -endobj -97 0 obj -<< /Type /StructElem /A 87 0 R /S /mpadded /NS 13 0 R /P 95 0 R /K 98 0 R /ID (ID.0071) >> -endobj -98 0 obj -<< /Type /StructElem /S /mtable /NS 13 0 R /P 97 0 R /K [99 0 R 100 0 R] /ID (ID.0072) >> +<< /Type /StructElem /C /display /AF [25 0 R 98 0 R] /T /S /Formula /NS 11 0 R /P 95 0 R /K [<> <> 99 0 R] /ID (ID.0059) >> endobj 99 0 obj -<< /Type /StructElem /S /mtr /NS 13 0 R /P 98 0 R /K [44 0 R 69 0 R] /ID (ID.0073) >> +<< /Type /StructElem /A 72 0 R /S /math /NS 13 0 R /P 96 0 R /K [100 0 R 101 0 R 102 0 R 121 0 R] /ID (ID.0060) >> endobj 100 0 obj -<< /Type /StructElem /S /mtr /NS 13 0 R /P 98 0 R /K [71 0 R 77 0 R] /ID (ID.0074) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 99 0 R /K <> /ID (ID.0061) >> endobj 101 0 obj -<< /Type /StructElem /A 102 0 R /S /mspace /NS 13 0 R /P 95 0 R /ID (ID.0075) >> +<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 99 0 R /K <> /ID (ID.0062) >> endobj -105 0 obj -<< /Type /StructElem /AF [104 0 R] /S /Formula /NS 11 0 R /P 22 0 R /K 106 0 R /ID (ID.0076) >> +102 0 obj +<< /Type /StructElem /S /mfrac /NS 13 0 R /P 99 0 R /K [103 0 R 118 0 R] /ID (ID.0063) >> +endobj +103 0 obj +<< /Type /StructElem /S /mrow /NS 13 0 R /P 102 0 R /K [104 0 R 106 0 R 107 0 R 109 0 R] /ID (ID.0064) >> +endobj +104 0 obj +<< /Type /StructElem /A 105 0 R /S /mo /NS 13 0 R /P 103 0 R /K <> /ID (ID.0065) >> endobj 106 0 obj -<< /Type /StructElem /A 80 0 R /S /math /NS 13 0 R /P 105 0 R /K [107 0 R 108 0 R 109 0 R 128 0 R] /ID (ID.0077) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 103 0 R /K <> /ID (ID.0066) >> endobj 107 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 106 0 R /K <> /ID (ID.0078) >> -endobj -108 0 obj -<< /Type /StructElem /A 52 0 R /S /mo /NS 13 0 R /P 106 0 R /K <> /ID (ID.0079) >> +<< /Type /StructElem /A 108 0 R /S /mo /NS 13 0 R /P 103 0 R /K <> /ID (ID.0067) >> endobj 109 0 obj -<< /Type /StructElem /S /mfrac /NS 13 0 R /P 106 0 R /K [110 0 R 125 0 R] /ID (ID.0080) >> +<< /Type /StructElem /S /msqrt /NS 13 0 R /P 103 0 R /K 110 0 R /ID (ID.0068) >> endobj 110 0 obj -<< /Type /StructElem /S /mrow /NS 13 0 R /P 109 0 R /K [111 0 R 113 0 R 114 0 R 116 0 R] /ID (ID.0081) >> +<< /Type /StructElem /S /mrow /NS 13 0 R /P 109 0 R /K [111 0 R 114 0 R 115 0 R 116 0 R 117 0 R] /ID (ID.0069) >> endobj 111 0 obj -<< /Type /StructElem /A 112 0 R /S /mo /NS 13 0 R /P 110 0 R /K <> /ID (ID.0082) >> +<< /Type /StructElem /S /msup /NS 13 0 R /P 110 0 R /K [112 0 R 113 0 R] /ID (ID.0070) >> +endobj +112 0 obj +<< /Type /StructElem /S /mi /NS 13 0 R /P 111 0 R /K <> /ID (ID.0071) >> endobj 113 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 110 0 R /K <> /ID (ID.0083) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 111 0 R /K <> /ID (ID.0072) >> endobj 114 0 obj -<< /Type /StructElem /A 115 0 R /S /mo /NS 13 0 R /P 110 0 R /K <> /ID (ID.0084) >> +<< /Type /StructElem /A 108 0 R /S /mo /NS 13 0 R /P 110 0 R /K <> /ID (ID.0073) >> +endobj +115 0 obj +<< /Type /StructElem /S /mn /NS 13 0 R /P 110 0 R /K <> /ID (ID.0074) >> endobj 116 0 obj -<< /Type /StructElem /S /msqrt /NS 13 0 R /P 110 0 R /K 117 0 R /ID (ID.0085) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 110 0 R /K <> /ID (ID.0075) >> endobj 117 0 obj -<< /Type /StructElem /S /mrow /NS 13 0 R /P 116 0 R /K [118 0 R 121 0 R 122 0 R 123 0 R 124 0 R] /ID (ID.0086) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 110 0 R /K <> /ID (ID.0076) >> endobj 118 0 obj -<< /Type /StructElem /S /msup /NS 13 0 R /P 117 0 R /K [119 0 R 120 0 R] /ID (ID.0087) >> +<< /Type /StructElem /S /mrow /NS 13 0 R /P 102 0 R /K [119 0 R 120 0 R] /ID (ID.0077) >> endobj 119 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 118 0 R /K <> /ID (ID.0088) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 118 0 R /K <> /ID (ID.0078) >> endobj 120 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 118 0 R /K <> /ID (ID.0089) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 118 0 R /K <> /ID (ID.0079) >> endobj 121 0 obj -<< /Type /StructElem /A 115 0 R /S /mo /NS 13 0 R /P 117 0 R /K <> /ID (ID.0090) >> -endobj -122 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 117 0 R /K <> /ID (ID.0091) >> +<< /Type /StructElem /A 122 0 R /S /mo /NS 13 0 R /P 99 0 R /K <> /ID (ID.0080) >> endobj 123 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 117 0 R /K <> /ID (ID.0092) >> +<< /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 124 0 R /ID (ID.0081) >> endobj 124 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 117 0 R /K <> /ID (ID.0093) >> -endobj -125 0 obj -<< /Type /StructElem /S /mrow /NS 13 0 R /P 109 0 R /K [126 0 R 127 0 R] /ID (ID.0094) >> -endobj -126 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 125 0 R /K <> /ID (ID.0095) >> +<< /Type /StructElem /C /display /AF [27 0 R 126 0 R] /T /S /Formula /NS 11 0 R /P 123 0 R /K [<> 127 0 R] /ID (ID.0082) >> endobj 127 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 125 0 R /K <> /ID (ID.0096) >> +<< /Type /StructElem /A 72 0 R /S /math /NS 13 0 R /P 124 0 R /K [128 0 R 132 0 R 135 0 R 139 0 R] /ID (ID.0083) >> endobj 128 0 obj -<< /Type /StructElem /A 129 0 R /S /mo /NS 13 0 R /P 106 0 R /K <> /ID (ID.0097) >> +<< /Type /StructElem /S /munder /NS 13 0 R /P 127 0 R /K [129 0 R 131 0 R] /ID (ID.0084) >> +endobj +129 0 obj +<< /Type /StructElem /A 130 0 R /S /mo /NS 13 0 R /P 128 0 R /K <> /ID (ID.0085) >> +endobj +131 0 obj +<< /Type /StructElem /S /mi /NS 13 0 R /P 128 0 R /K <> /ID (ID.0086) >> endobj 132 0 obj -<< /Type /StructElem /AF [131 0 R] /S /Formula /NS 11 0 R /P 22 0 R /K 133 0 R /ID (ID.0098) >> +<< /Type /StructElem /S /munder /NS 13 0 R /P 127 0 R /K [133 0 R 134 0 R] /ID (ID.0087) >> endobj 133 0 obj -<< /Type /StructElem /A 80 0 R /S /math /NS 13 0 R /P 132 0 R /K [134 0 R 138 0 R 141 0 R 145 0 R] /ID (ID.0099) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 132 0 R /K <> /ID (ID.0088) >> endobj 134 0 obj -<< /Type /StructElem /S /munder /NS 13 0 R /P 133 0 R /K [135 0 R 137 0 R] /ID (ID.0100) >> +<< /Type /StructElem /S /mo /NS 13 0 R /P 132 0 R /ID (ID.0089) >> endobj 135 0 obj -<< /Type /StructElem /A 136 0 R /S /mo /NS 13 0 R /P 134 0 R /K <> /ID (ID.0101) >> +<< /Type /StructElem /S /mover /NS 13 0 R /P 127 0 R /K [136 0 R 137 0 R] /ID (ID.0090) >> +endobj +136 0 obj +<< /Type /StructElem /S /mi /NS 13 0 R /P 135 0 R /K <> /ID (ID.0091) >> endobj 137 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 134 0 R /K <> /ID (ID.0102) >> -endobj -138 0 obj -<< /Type /StructElem /S /munder /NS 13 0 R /P 133 0 R /K [139 0 R 140 0 R] /ID (ID.0103) >> +<< /Type /StructElem /A 138 0 R /ActualText /S /mo /NS 13 0 R /P 135 0 R /K <> /ID (ID.0092) >> endobj 139 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 138 0 R /K <> /ID (ID.0104) >> +<< /Type /StructElem /S /msup /NS 13 0 R /P 127 0 R /K [140 0 R 141 0 R] /ID (ID.0093) >> endobj 140 0 obj -<< /Type /StructElem /S /mo /NS 13 0 R /P 138 0 R /ID (ID.0105) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 139 0 R /K <> /ID (ID.0094) >> endobj 141 0 obj -<< /Type /StructElem /S /mover /NS 13 0 R /P 133 0 R /K [142 0 R 143 0 R] /ID (ID.0106) >> -endobj -142 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 141 0 R /K <> /ID (ID.0107) >> +<< /Type /StructElem /A 142 0 R /S /mi /NS 13 0 R /P 139 0 R /K <> /ID (ID.0095) >> endobj 143 0 obj -<< /Type /StructElem /A 144 0 R /ActualText /S /mo /NS 13 0 R /P 141 0 R /K <> /ID (ID.0108) >> +<< /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 144 0 R /ID (ID.0096) >> endobj -145 0 obj -<< /Type /StructElem /S /msup /NS 13 0 R /P 133 0 R /K [146 0 R 147 0 R] /ID (ID.0109) >> -endobj -146 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 145 0 R /K <> /ID (ID.0110) >> +144 0 obj +<< /Type /StructElem /C /display /AF [29 0 R 146 0 R] /T /S /Formula /NS 11 0 R /P 143 0 R /K [<> 169 0 R <> 185 0 R <> 194 0 R 195 0 R] /ID (ID.0097) >> endobj 147 0 obj -<< /Type /StructElem /A 148 0 R /S /mi /NS 13 0 R /P 145 0 R /K <> /ID (ID.0111) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 198 0 R /K [148 0 R 149 0 R 150 0 R] /ID (ID.0098) >> +endobj +148 0 obj +<< /Type /StructElem /S /mi /NS 13 0 R /P 147 0 R /K <> /ID (ID.0099) >> +endobj +149 0 obj +<< /Type /StructElem /S /mi /NS 13 0 R /P 147 0 R /K <> /ID (ID.0100) >> +endobj +150 0 obj +<< /Type /StructElem /S /mi /NS 13 0 R /P 147 0 R /K <> /ID (ID.0101) >> endobj 151 0 obj -<< /Type /StructElem /AF [150 0 R] /S /Formula /NS 11 0 R /P 22 0 R /K 197 0 R /ID (ID.0112) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 198 0 R /K [152 0 R 153 0 R 154 0 R 155 0 R 156 0 R] /ID (ID.0102) >> endobj 152 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 200 0 R /K [153 0 R 154 0 R 155 0 R] /ID (ID.0113) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 151 0 R /ID (ID.0103) >> endobj 153 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 152 0 R /K <> /ID (ID.0114) >> +<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 151 0 R /K <> /ID (ID.0104) >> endobj 154 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 152 0 R /K <> /ID (ID.0115) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 151 0 R /K <> /ID (ID.0105) >> endobj 155 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 152 0 R /K <> /ID (ID.0116) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 151 0 R /K <> /ID (ID.0106) >> endobj 156 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 200 0 R /K [157 0 R 158 0 R 159 0 R 160 0 R 161 0 R] /ID (ID.0117) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 151 0 R /K <> /ID (ID.0107) >> endobj 157 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 156 0 R /ID (ID.0118) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 198 0 R /K 158 0 R /ID (ID.0108) >> endobj 158 0 obj -<< /Type /StructElem /A 52 0 R /S /mo /NS 13 0 R /P 156 0 R /K <> /ID (ID.0119) >> +<< /Type /StructElem /S /msup /NS 13 0 R /P 157 0 R /K [159 0 R 160 0 R] /ID (ID.0109) >> endobj 159 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 156 0 R /K <> /ID (ID.0120) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 158 0 R /K <> /ID (ID.0110) >> endobj 160 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 156 0 R /K <> /ID (ID.0121) >> +<< /Type /StructElem /S /mrow /NS 13 0 R /P 158 0 R /K [161 0 R 162 0 R] /ID (ID.0111) >> endobj 161 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 156 0 R /K <> /ID (ID.0122) >> +<< /Type /StructElem /A 142 0 R /S /mi /NS 13 0 R /P 160 0 R /K <> /ID (ID.0112) >> endobj 162 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 200 0 R /K 163 0 R /ID (ID.0123) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 160 0 R /K <> /ID (ID.0113) >> endobj 163 0 obj -<< /Type /StructElem /S /msup /NS 13 0 R /P 162 0 R /K [164 0 R 165 0 R] /ID (ID.0124) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 198 0 R /K [164 0 R 165 0 R 167 0 R 168 0 R] /ID (ID.0114) >> endobj 164 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 163 0 R /K <> /ID (ID.0125) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 163 0 R /ID (ID.0115) >> endobj 165 0 obj -<< /Type /StructElem /S /mrow /NS 13 0 R /P 163 0 R /K [166 0 R 167 0 R] /ID (ID.0126) >> -endobj -166 0 obj -<< /Type /StructElem /A 148 0 R /S /mi /NS 13 0 R /P 165 0 R /K <> /ID (ID.0127) >> +<< /Type /StructElem /A 166 0 R /S /mo /NS 13 0 R /P 163 0 R /K <> /ID (ID.0116) >> endobj 167 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 165 0 R /K <> /ID (ID.0128) >> +<< /Type /StructElem /A 166 0 R /S /mo /NS 13 0 R /P 163 0 R /K <> /ID (ID.0117) >> endobj 168 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 200 0 R /K [169 0 R 170 0 R 172 0 R 173 0 R] /ID (ID.0129) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 163 0 R /K <> /ID (ID.0118) >> endobj 169 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 168 0 R /ID (ID.0130) >> +<< /Type /StructElem /S /Lbl /NS 11 0 R /P 144 0 R /K <> /ID (ID.0119) >> endobj 170 0 obj -<< /Type /StructElem /A 171 0 R /S /mo /NS 13 0 R /P 168 0 R /K <> /ID (ID.0131) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 199 0 R /K [171 0 R 173 0 R 174 0 R 175 0 R] /ID (ID.0120) >> endobj -172 0 obj -<< /Type /StructElem /A 171 0 R /S /mo /NS 13 0 R /P 168 0 R /K <> /ID (ID.0132) >> +171 0 obj +<< /Type /StructElem /A 172 0 R /ActualText /S /mo /NS 13 0 R /P 170 0 R /K <> /ID (ID.0121) >> endobj 173 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 168 0 R /K <> /ID (ID.0133) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 170 0 R /K <> /ID (ID.0122) >> endobj 174 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 204 0 R /K [175 0 R 177 0 R 178 0 R 179 0 R] /ID (ID.0134) >> +<< /Type /StructElem /A 108 0 R /S /mo /NS 13 0 R /P 170 0 R /K <> /ID (ID.0123) >> endobj 175 0 obj -<< /Type /StructElem /A 176 0 R /ActualText /S /mo /NS 13 0 R /P 174 0 R /K <> /ID (ID.0135) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 170 0 R /K <> /ID (ID.0124) >> +endobj +176 0 obj +<< /Type /StructElem /S /mtd /NS 13 0 R /P 199 0 R /K [177 0 R 178 0 R 179 0 R 180 0 R] /ID (ID.0125) >> endobj 177 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 174 0 R /K <> /ID (ID.0136) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 176 0 R /ID (ID.0126) >> endobj 178 0 obj -<< /Type /StructElem /A 115 0 R /S /mo /NS 13 0 R /P 174 0 R /K <> /ID (ID.0137) >> +<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 176 0 R /K <> /ID (ID.0127) >> endobj 179 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 174 0 R /K <> /ID (ID.0138) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 176 0 R /K <> /ID (ID.0128) >> endobj 180 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 204 0 R /K [181 0 R 182 0 R 183 0 R 184 0 R] /ID (ID.0139) >> +<< /Type /StructElem /A 172 0 R /ActualText /S /mo /NS 13 0 R /P 176 0 R /K <> /ID (ID.0129) >> endobj 181 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 180 0 R /ID (ID.0140) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 199 0 R /K 182 0 R /ID (ID.0130) >> endobj 182 0 obj -<< /Type /StructElem /A 52 0 R /S /mo /NS 13 0 R /P 180 0 R /K <> /ID (ID.0141) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 181 0 R /ID (ID.0131) >> endobj 183 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 180 0 R /K <> /ID (ID.0142) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 199 0 R /K 184 0 R /ID (ID.0132) >> endobj 184 0 obj -<< /Type /StructElem /A 176 0 R /ActualText /S /mo /NS 13 0 R /P 180 0 R /K <> /ID (ID.0143) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 183 0 R /ID (ID.0133) >> endobj 185 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 204 0 R /K 186 0 R /ID (ID.0144) >> +<< /Type /StructElem /S /Lbl /NS 11 0 R /P 144 0 R /K <> /ID (ID.0134) >> endobj 186 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 185 0 R /ID (ID.0145) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 200 0 R /K 187 0 R /ID (ID.0135) >> endobj 187 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 204 0 R /K 188 0 R /ID (ID.0146) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 186 0 R /K <> /ID (ID.0136) >> endobj 188 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 187 0 R /ID (ID.0147) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 200 0 R /K 189 0 R /ID (ID.0137) >> endobj 189 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 207 0 R /K 190 0 R /ID (ID.0148) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 188 0 R /ID (ID.0138) >> endobj 190 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 189 0 R /K <> /ID (ID.0149) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 200 0 R /K 191 0 R /ID (ID.0139) >> endobj 191 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 207 0 R /K 192 0 R /ID (ID.0150) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 190 0 R /ID (ID.0140) >> endobj 192 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 191 0 R /ID (ID.0151) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 200 0 R /K 193 0 R /ID (ID.0141) >> endobj 193 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 207 0 R /K 194 0 R /ID (ID.0152) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 192 0 R /ID (ID.0142) >> endobj 194 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 193 0 R /ID (ID.0153) >> +<< /Type /StructElem /S /Lbl /NS 11 0 R /P 144 0 R /K <> /ID (ID.0143) >> endobj 195 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 207 0 R /K 196 0 R /ID (ID.0154) >> +<< /Type /StructElem /A 72 0 R /S /math /NS 13 0 R /P 144 0 R /K 196 0 R /ID (ID.0144) >> endobj 196 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 195 0 R /ID (ID.0155) >> -endobj -197 0 obj -<< /Type /StructElem /A 80 0 R /S /math /NS 13 0 R /P 151 0 R /K 198 0 R /ID (ID.0156) >> +<< /Type /StructElem /A 197 0 R /S /mtable /NS 13 0 R /P 195 0 R /K [198 0 R 199 0 R 200 0 R] /ID (ID.0145) >> endobj 198 0 obj -<< /Type /StructElem /A 199 0 R /S /mtable /NS 13 0 R /P 197 0 R /K [200 0 R 204 0 R 207 0 R] /ID (ID.0157) >> +<< /Type /StructElem /S /mtr /NS 13 0 R /P 196 0 R /K [147 0 R 151 0 R 157 0 R 163 0 R] /ID (ID.0146) >> +endobj +199 0 obj +<< /Type /StructElem /S /mtr /NS 13 0 R /P 196 0 R /K [170 0 R 176 0 R 181 0 R 183 0 R] /ID (ID.0147) >> endobj 200 0 obj -<< /Type /StructElem /S /mtr /NS 13 0 R /P 198 0 R /K [201 0 R 152 0 R 156 0 R 162 0 R 168 0 R] /ID (ID.0158) >> +<< /Type /StructElem /S /mtr /NS 13 0 R /P 196 0 R /K [186 0 R 188 0 R 190 0 R 192 0 R] /ID (ID.0148) >> endobj 201 0 obj -<< /Type /StructElem /A 202 0 R /S /mtd /NS 13 0 R /P 200 0 R /K 203 0 R /ID (ID.0159) >> +<< /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 202 0 R /ID (ID.0149) >> +endobj +202 0 obj +<< /Type /StructElem /C /justify /S /text /NS 15 0 R /P 201 0 R /K [<> 203 0 R <> ] /ID (ID.0150) >> endobj 203 0 obj -<< /Type /StructElem /S /mtext /NS 13 0 R /P 201 0 R /ID (ID.0160) >> -endobj -204 0 obj -<< /Type /StructElem /S /mtr /NS 13 0 R /P 198 0 R /K [205 0 R 174 0 R 180 0 R 185 0 R 187 0 R] /ID (ID.0161) >> -endobj -205 0 obj -<< /Type /StructElem /A 202 0 R /S /mtd /NS 13 0 R /P 204 0 R /K 206 0 R /ID (ID.0162) >> +<< /Type /StructElem /C /inline /AF [31 0 R 205 0 R] /T /S /Formula /NS 11 0 R /P 202 0 R /K [<> 206 0 R] /ID (ID.0151) >> endobj 206 0 obj -<< /Type /StructElem /S /mtext /NS 13 0 R /P 205 0 R /ID (ID.0163) >> +<< /Type /StructElem /S /math /NS 13 0 R /P 203 0 R /K [207 0 R 208 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R] /ID (ID.0152) >> endobj 207 0 obj -<< /Type /StructElem /S /mtr /NS 13 0 R /P 198 0 R /K [208 0 R 189 0 R 191 0 R 193 0 R 195 0 R] /ID (ID.0164) >> +<< /Type /StructElem /A 142 0 R /S /mi /NS 13 0 R /P 206 0 R /K <> /ID (ID.0153) >> endobj 208 0 obj -<< /Type /StructElem /A 202 0 R /S /mtd /NS 13 0 R /P 207 0 R /K 209 0 R /ID (ID.0165) >> +<< /Type /StructElem /A 209 0 R /S /mo /NS 13 0 R /P 206 0 R /K <> /ID (ID.0154) >> endobj -209 0 obj -<< /Type /StructElem /S /mtext /NS 13 0 R /P 208 0 R /ID (ID.0166) >> +210 0 obj +<< /Type /StructElem /S /mi /NS 13 0 R /P 206 0 R /K <> /ID (ID.0155) >> +endobj +211 0 obj +<< /Type /StructElem /A 209 0 R /S /mo /NS 13 0 R /P 206 0 R /K <> /ID (ID.0156) >> endobj 212 0 obj -<< /Type /StructElem /AF [211 0 R] /S /Formula /NS 11 0 R /P 22 0 R /K 213 0 R /ID (ID.0167) >> +<< /Type /StructElem /A 108 0 R /S /mo /NS 13 0 R /P 206 0 R /K <> /ID (ID.0157) >> endobj 213 0 obj -<< /Type /StructElem /S /math /NS 13 0 R /P 212 0 R /K [214 0 R 215 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R 227 0 R 228 0 R] /ID (ID.0168) >> +<< /Type /StructElem /A 142 0 R /S /mi /NS 13 0 R /P 206 0 R /K <> /ID (ID.0158) >> endobj 214 0 obj -<< /Type /StructElem /A 148 0 R /S /mi /NS 13 0 R /P 213 0 R /K <> /ID (ID.0169) >> +<< /Type /StructElem /A 209 0 R /S /mo /NS 13 0 R /P 206 0 R /K <> /ID (ID.0159) >> endobj 215 0 obj -<< /Type /StructElem /A 216 0 R /S /mo /NS 13 0 R /P 213 0 R /K <> /ID (ID.0170) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 206 0 R /K <> /ID (ID.0160) >> +endobj +216 0 obj +<< /Type /StructElem /A 108 0 R /S /mo /NS 13 0 R /P 206 0 R /K <> /ID (ID.0161) >> endobj 217 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 213 0 R /K <> /ID (ID.0171) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 206 0 R /K <> /ID (ID.0162) >> endobj 218 0 obj -<< /Type /StructElem /A 216 0 R /S /mo /NS 13 0 R /P 213 0 R /K <> /ID (ID.0172) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 206 0 R /K <> /ID (ID.0163) >> endobj 219 0 obj -<< /Type /StructElem /A 115 0 R /S /mo /NS 13 0 R /P 213 0 R /K <> /ID (ID.0173) >> +<< /Type /StructElem /A 209 0 R /S /mo /NS 13 0 R /P 206 0 R /K <> /ID (ID.0164) >> endobj 220 0 obj -<< /Type /StructElem /A 148 0 R /S /mi /NS 13 0 R /P 213 0 R /K <> /ID (ID.0174) >> +<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 206 0 R /K <> /ID (ID.0165) >> endobj 221 0 obj -<< /Type /StructElem /A 216 0 R /S /mo /NS 13 0 R /P 213 0 R /K <> /ID (ID.0175) >> -endobj -222 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 213 0 R /K <> /ID (ID.0176) >> -endobj -223 0 obj -<< /Type /StructElem /A 115 0 R /S /mo /NS 13 0 R /P 213 0 R /K <> /ID (ID.0177) >> -endobj -224 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 213 0 R /K <> /ID (ID.0178) >> -endobj -225 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 213 0 R /K <> /ID (ID.0179) >> -endobj -226 0 obj -<< /Type /StructElem /A 216 0 R /S /mo /NS 13 0 R /P 213 0 R /K <> /ID (ID.0180) >> -endobj -227 0 obj -<< /Type /StructElem /A 52 0 R /S /mo /NS 13 0 R /P 213 0 R /K <> /ID (ID.0181) >> -endobj -228 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 213 0 R /K <> /ID (ID.0182) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 206 0 R /K <> /ID (ID.0166) >> endobj 5 0 obj -<< /Type /StructTreeRoot /Namespaces 8 0 R /IDTree 244 0 R /ParentTree 6 0 R /RoleMap 7 0 R /K 21 0 R >> +<< /Type /StructTreeRoot /Namespaces 8 0 R /IDTree 237 0 R /ClassMap 238 0 R /ParentTree 6 0 R /RoleMap 7 0 R /K 21 0 R >> endobj -245 0 obj +239 0 obj [ 66 [ 323 ] ] endobj -247 0 obj +241 0 obj << /Subtype /CIDFontType0C /Length 592 >> [BINARY STREAM] endobj -246 0 obj -<< /Type /FontDescriptor /FontName /QTQISS+LMRoman7-Regular /Flags 4 /FontBBox [ -483 -292 1562 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 108 /XHeight 431 /FontFile3 247 0 R >> +240 0 obj +<< /Type /FontDescriptor /FontName /QTQISS+LMRoman7-Regular /Flags 4 /FontBBox [ -483 -292 1562 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 108 /XHeight 431 /FontFile3 241 0 R >> endobj -248 0 obj +242 0 obj << /Length 687 >> stream %!PS-Adobe-3.0 Resource-CMap @@ -1560,23 +1593,23 @@ end %%EOF endstream endobj -237 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /QTQISS+LMRoman7-Regular /DescendantFonts [ 249 0 R ] /ToUnicode 248 0 R >> +229 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /QTQISS+LMRoman7-Regular /DescendantFonts [ 243 0 R ] /ToUnicode 242 0 R >> endobj -249 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /QTQISS+LMRoman7-Regular /FontDescriptor 246 0 R /W 245 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +243 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /QTQISS+LMRoman7-Regular /FontDescriptor 240 0 R /W 239 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -250 0 obj +244 0 obj [ 1013 [ 569 ] 1404 [ 620 ] 2981 [ 407 ] 4558 [ 668 ] ] endobj -252 0 obj +246 0 obj << /Subtype /CIDFontType0C /Length 1102 >> [BINARY STREAM] endobj -251 0 obj -<< /Type /FontDescriptor /FontName /ZIIHRW+LatinModernMath-Regular /Flags 4 /FontBBox [ -1042 -3060 4082 3560 ] /Ascent 806 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 113 /XHeight 431 /FontFile3 252 0 R >> +245 0 obj +<< /Type /FontDescriptor /FontName /ZIIHRW+LatinModernMath-Regular /Flags 4 /FontBBox [ -1042 -3060 4082 3560 ] /Ascent 806 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 113 /XHeight 431 /FontFile3 246 0 R >> endobj -253 0 obj +247 0 obj << /Length 772 >> stream %!PS-Adobe-3.0 Resource-CMap @@ -1615,23 +1648,23 @@ end %%EOF endstream endobj -236 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ZIIHRW+LatinModernMath-Regular /DescendantFonts [ 254 0 R ] /ToUnicode 253 0 R >> +228 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ZIIHRW+LatinModernMath-Regular /DescendantFonts [ 248 0 R ] /ToUnicode 247 0 R >> endobj -254 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ZIIHRW+LatinModernMath-Regular /FontDescriptor 251 0 R /W 250 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +248 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ZIIHRW+LatinModernMath-Regular /FontDescriptor 245 0 R /W 244 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -255 0 obj +249 0 obj [ 9 [ 389 389 ] 12 [ 778 ] 15 [ 278 ] 17 [ 500 500 500 500 500 500 ] 30 [ 778 ] 1296 [ 529 429 433 520 466 490 ] 1319 [ 572 ] 1790 [ 0 ] 2455 [ 663 663 ] 2503 [ 875 875 875 875 875 875 ] 2515 [ 902 ] 2615 [ 778 ] 2619 [ 778 ] 3074 [ 1444 ] 3077 [ 833 ] 4474 [ 570 ] ] endobj -257 0 obj +251 0 obj << /Subtype /CIDFontType0C /Length 4088 >> [BINARY STREAM] endobj -256 0 obj -<< /Type /FontDescriptor /FontName /RHJXIX+LatinModernMath-Regular /Flags 4 /FontBBox [ -1042 -3060 4082 3560 ] /Ascent 806 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 257 0 R >> +250 0 obj +<< /Type /FontDescriptor /FontName /RHJXIX+LatinModernMath-Regular /Flags 4 /FontBBox [ -1042 -3060 4082 3560 ] /Ascent 806 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 251 0 R >> endobj -258 0 obj +252 0 obj << /Length 1203 >> stream %!PS-Adobe-3.0 Resource-CMap @@ -1699,23 +1732,23 @@ end %%EOF endstream endobj -235 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RHJXIX+LatinModernMath-Regular /DescendantFonts [ 259 0 R ] /ToUnicode 258 0 R >> +227 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RHJXIX+LatinModernMath-Regular /DescendantFonts [ 253 0 R ] /ToUnicode 252 0 R >> endobj -259 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RHJXIX+LatinModernMath-Regular /FontDescriptor 256 0 R /W 255 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +253 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RHJXIX+LatinModernMath-Regular /FontDescriptor 250 0 R /W 249 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -260 0 obj +254 0 obj [ 49 [ 681 444 ] 55 [ 306 ] 59 [ 500 ] 63 [ 556 ] 66 [ 278 ] 72 [ 278 ] 77 [ 556 ] 81 [ 500 500 ] 85 [ 389 389 ] 88 [ 278 ] 98 [ 394 ] 103 [ 333 ] 105 [ 389 500 500 ] ] endobj -262 0 obj +256 0 obj << /Subtype /CIDFontType0C /Length 2411 >> [BINARY STREAM] endobj -261 0 obj -<< /Type /FontDescriptor /FontName /RYKTJL+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 262 0 R >> +255 0 obj +<< /Type /FontDescriptor /FontName /RYKTJL+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 256 0 R >> endobj -263 0 obj +257 0 obj << /Length 931 >> stream %!PS-Adobe-3.0 Resource-CMap @@ -1768,292 +1801,290 @@ end %%EOF endstream endobj -234 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RYKTJL+LMRoman10-Regular /DescendantFonts [ 264 0 R ] /ToUnicode 263 0 R >> +226 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RYKTJL+LMRoman10-Regular /DescendantFonts [ 258 0 R ] /ToUnicode 257 0 R >> endobj -264 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RYKTJL+LMRoman10-Regular /FontDescriptor 261 0 R /W 260 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +258 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RYKTJL+LMRoman10-Regular /FontDescriptor 255 0 R /W 254 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -238 0 obj -<< /Type /Pages /Count 1 /Kids [ 232 0 R ] >> +230 0 obj +<< /Type /Pages /Count 1 /Kids [ 224 0 R ] >> endobj -265 0 obj -<< /Type /Catalog /Pages 238 0 R /MarkInfo 239 0 R/Lang (en)/Metadata 230 0 R/StructTreeRoot 5 0 R >> +259 0 obj +<< /EmbeddedFiles 232 0 R >> endobj -266 0 obj +260 0 obj +<< /Type /Catalog /Pages 230 0 R /Names 259 0 R /MarkInfo 231 0 R/Lang (en)/Metadata 222 0 R/StructTreeRoot 5 0 R >> +endobj +261 0 obj << /Producer (LuaTeX)/Creator (TeX)/CreationDate (D:20160520090000Z)/ModDate (D:20160520090000Z) /Trapped /False >> endobj xref -0 267 +0 262 0000000002 65535 f -0000026064 00000 n +0000027968 00000 n 0000000003 00000 f 0000000004 00000 f 0000000010 00000 f -0000053379 00000 n -0000026148 00000 n -0000030276 00000 n -0000032230 00000 n -0000030855 00000 n -0000000012 00000 f -0000030923 00000 n -0000000014 00000 f -0000030993 00000 n -0000000020 00000 f -0000031756 00000 n -0000031074 00000 n -0000032034 00000 n -0000031863 00000 n +0000054820 00000 n +0000028173 00000 n 0000032141 00000 n +0000034336 00000 n +0000032961 00000 n +0000000012 00000 f +0000033029 00000 n +0000000014 00000 f +0000033099 00000 n +0000000020 00000 f +0000033862 00000 n +0000033180 00000 n +0000034140 00000 n +0000033969 00000 n +0000034247 00000 n 0000000000 00000 f -0000032291 00000 n -0000032390 00000 n -0000032531 00000 n -0000001687 00000 n -0000032653 00000 n -0000032765 00000 n -0000032860 00000 n -0000032983 00000 n -0000033078 00000 n -0000033201 00000 n -0000033296 00000 n -0000033419 00000 n -0000033514 00000 n -0000033637 00000 n -0000033732 00000 n -0000033855 00000 n -0000033950 00000 n -0000034073 00000 n -0000034168 00000 n -0000034291 00000 n -0000034386 00000 n -0000034509 00000 n -0000034604 00000 n -0000034728 00000 n -0000034823 00000 n -0000034947 00000 n -0000035049 00000 n -0000035145 00000 n +0000034397 00000 n 0000000020 00000 n -0000035270 00000 n -0000035354 00000 n -0000000093 00000 n -0000035449 00000 n -0000035533 00000 n -0000035669 00000 n -0000035781 00000 n -0000035905 00000 n -0000036040 00000 n -0000036164 00000 n -0000036266 00000 n -0000036378 00000 n -0000036462 00000 n -0000036557 00000 n -0000036641 00000 n -0000036743 00000 n -0000036855 00000 n -0000036939 00000 n -0000037034 00000 n -0000037118 00000 n -0000037222 00000 n -0000037306 00000 n -0000037402 00000 n -0000037526 00000 n -0000037615 00000 n -0000037742 00000 n -0000037831 00000 n -0000037920 00000 n -0000038025 00000 n -0000038109 00000 n -0000000164 00000 n -0000038232 00000 n -0000038358 00000 n -0000000218 00000 n -0000038515 00000 n -0000000305 00000 n -0000038614 00000 n -0000000360 00000 n -0000038724 00000 n -0000038838 00000 n -0000038949 00000 n -0000039060 00000 n -0000039171 00000 n -0000039270 00000 n -0000039428 00000 n -0000039563 00000 n -0000039676 00000 n -0000039834 00000 n -0000039944 00000 n -0000040052 00000 n -0000040156 00000 n -0000040261 00000 n -0000000432 00000 n -0000000487 00000 n -0000002601 00000 n -0000040362 00000 n -0000040477 00000 n -0000040613 00000 n -0000040739 00000 n -0000040876 00000 n -0000040986 00000 n -0000041111 00000 n -0000001839 00000 n -0000041249 00000 n -0000041375 00000 n -0000001905 00000 n -0000041513 00000 n -0000041613 00000 n -0000041746 00000 n -0000041855 00000 n -0000041981 00000 n -0000042107 00000 n -0000042245 00000 n -0000042371 00000 n -0000042497 00000 n -0000042623 00000 n -0000042732 00000 n -0000042858 00000 n -0000042984 00000 n -0000001977 00000 n -0000002037 00000 n -0000003366 00000 n -0000043122 00000 n -0000043237 00000 n -0000043373 00000 n -0000043484 00000 n -0000002754 00000 n -0000043622 00000 n -0000043748 00000 n -0000043859 00000 n -0000043985 00000 n -0000044071 00000 n -0000044181 00000 n -0000044307 00000 n -0000002840 00000 n -0000044468 00000 n -0000044577 00000 n -0000044703 00000 n -0000002895 00000 n -0000002955 00000 n -0000005140 00000 n -0000044841 00000 n -0000044956 00000 n -0000045072 00000 n -0000045198 00000 n -0000045324 00000 n -0000045450 00000 n -0000045582 00000 n -0000045668 00000 n -0000045805 00000 n -0000045931 00000 n -0000046057 00000 n -0000046183 00000 n -0000046281 00000 n -0000046390 00000 n -0000046516 00000 n -0000046625 00000 n -0000046763 00000 n +0000000299 00000 n +0000000486 00000 n +0000001131 00000 n +0000001318 00000 n +0000001800 00000 n +0000001987 00000 n +0000003198 00000 n +0000003385 00000 n +0000004064 00000 n +0000034536 00000 n +0000034625 00000 n +0000034714 00000 n +0000034815 00000 n +0000034952 00000 n +0000035053 00000 n +0000004251 00000 n +0000004566 00000 n +0000035339 00000 n +0000035434 00000 n +0000035557 00000 n +0000035652 00000 n +0000035775 00000 n +0000035870 00000 n +0000035993 00000 n +0000036088 00000 n +0000036211 00000 n +0000036306 00000 n +0000036429 00000 n +0000036524 00000 n +0000036647 00000 n +0000036742 00000 n +0000036866 00000 n +0000036961 00000 n +0000037085 00000 n +0000037180 00000 n +0000037304 00000 n +0000037399 00000 n +0000037523 00000 n +0000037659 00000 n +0000037771 00000 n +0000037895 00000 n +0000004766 00000 n +0000038030 00000 n +0000038154 00000 n +0000038249 00000 n +0000038344 00000 n +0000038468 00000 n +0000038595 00000 n +0000038690 00000 n +0000004837 00000 n +0000038813 00000 n +0000038939 00000 n +0000004891 00000 n +0000039096 00000 n +0000004978 00000 n +0000039195 00000 n +0000005033 00000 n +0000039305 00000 n +0000039419 00000 n +0000039530 00000 n +0000039641 00000 n +0000039752 00000 n +0000039851 00000 n +0000040009 00000 n +0000040144 00000 n +0000040256 00000 n +0000040414 00000 n +0000040524 00000 n +0000040631 00000 n +0000040735 00000 n +0000040839 00000 n +0000005105 00000 n +0000040938 00000 n +0000041039 00000 n +0000005159 00000 n +0000005375 00000 n +0000041291 00000 n +0000041425 00000 n +0000041550 00000 n +0000041686 00000 n +0000041795 00000 n +0000041920 00000 n +0000005575 00000 n +0000042058 00000 n +0000042184 00000 n +0000005641 00000 n +0000042322 00000 n +0000042422 00000 n +0000042555 00000 n +0000042664 00000 n +0000042790 00000 n +0000042916 00000 n +0000043054 00000 n +0000043180 00000 n +0000043306 00000 n +0000043432 00000 n +0000043541 00000 n +0000043667 00000 n +0000043793 00000 n +0000005713 00000 n +0000043930 00000 n +0000044033 00000 n +0000005773 00000 n +0000005978 00000 n +0000044253 00000 n +0000044389 00000 n +0000044500 00000 n +0000006181 00000 n +0000044638 00000 n +0000044764 00000 n +0000044875 00000 n +0000045001 00000 n +0000045087 00000 n +0000045197 00000 n +0000045323 00000 n +0000006267 00000 n +0000045484 00000 n +0000045593 00000 n +0000045719 00000 n +0000006322 00000 n +0000045857 00000 n +0000045960 00000 n +0000006382 00000 n +0000006611 00000 n +0000046263 00000 n +0000046379 00000 n +0000046505 00000 n +0000046631 00000 n +0000046757 00000 n 0000046889 00000 n -0000047013 00000 n -0000047099 00000 n -0000003519 00000 n -0000047237 00000 n -0000047375 00000 n -0000047501 00000 n -0000047625 00000 n -0000003585 00000 n -0000047786 00000 n -0000047912 00000 n -0000048050 00000 n -0000048176 00000 n -0000048300 00000 n -0000048386 00000 n -0000048523 00000 n -0000048649 00000 n -0000048810 00000 n -0000048908 00000 n -0000048994 00000 n -0000049092 00000 n -0000049178 00000 n -0000049276 00000 n -0000049402 00000 n -0000049500 00000 n -0000049586 00000 n -0000049684 00000 n -0000049770 00000 n -0000049868 00000 n -0000049954 00000 n -0000050064 00000 n -0000003709 00000 n -0000050195 00000 n -0000050327 00000 n -0000003827 00000 n -0000050437 00000 n +0000046975 00000 n +0000047112 00000 n +0000047238 00000 n +0000047364 00000 n +0000047490 00000 n +0000047588 00000 n +0000047697 00000 n +0000047823 00000 n +0000047932 00000 n +0000048070 00000 n +0000048196 00000 n +0000048320 00000 n +0000048406 00000 n +0000006814 00000 n +0000048544 00000 n +0000048682 00000 n +0000048808 00000 n +0000048935 00000 n +0000049059 00000 n +0000006880 00000 n +0000049220 00000 n +0000049346 00000 n +0000049484 00000 n +0000049610 00000 n +0000049734 00000 n +0000049820 00000 n +0000049957 00000 n +0000050083 00000 n +0000050244 00000 n +0000050342 00000 n +0000050428 00000 n 0000050526 00000 n -0000050658 00000 n -0000050768 00000 n -0000050857 00000 n -0000050989 00000 n -0000051099 00000 n -0000003890 00000 n -0000005975 00000 n -0000051188 00000 n -0000051303 00000 n -0000051508 00000 n -0000051646 00000 n -0000005293 00000 n -0000051784 00000 n -0000051910 00000 n -0000052048 00000 n -0000052186 00000 n -0000052324 00000 n -0000052462 00000 n -0000052588 00000 n -0000052726 00000 n -0000052852 00000 n -0000052978 00000 n -0000053116 00000 n -0000053253 00000 n -0000005369 00000 n -0000006128 00000 n -0000025960 00000 n -0000025821 00000 n -0000017912 00000 n -0000068455 00000 n -0000064186 00000 n -0000057862 00000 n -0000055180 00000 n -0000068815 00000 n -0000026111 00000 n -0000026779 00000 n -0000027691 00000 n -0000028631 00000 n -0000029593 00000 n -0000030213 00000 n -0000053500 00000 n -0000054209 00000 n -0000053532 00000 n -0000054432 00000 n -0000055336 00000 n -0000055538 00000 n -0000056798 00000 n -0000055611 00000 n -0000057029 00000 n -0000058025 00000 n -0000058234 00000 n -0000062692 00000 n -0000058519 00000 n -0000062922 00000 n -0000064349 00000 n -0000064558 00000 n -0000067240 00000 n -0000064744 00000 n -0000067463 00000 n -0000068612 00000 n -0000068879 00000 n -0000068998 00000 n +0000050612 00000 n +0000050739 00000 n +0000050837 00000 n +0000050963 00000 n +0000051061 00000 n +0000051147 00000 n +0000051245 00000 n +0000051331 00000 n +0000051429 00000 n +0000051515 00000 n +0000051642 00000 n +0000051752 00000 n +0000007004 00000 n +0000051883 00000 n +0000052007 00000 n +0000052131 00000 n +0000052255 00000 n +0000052358 00000 n +0000052545 00000 n +0000007122 00000 n +0000007293 00000 n +0000052744 00000 n +0000052949 00000 n +0000053087 00000 n +0000007496 00000 n +0000053225 00000 n +0000053351 00000 n +0000053489 00000 n +0000053627 00000 n +0000053765 00000 n +0000053903 00000 n +0000054029 00000 n +0000054167 00000 n +0000054293 00000 n +0000054419 00000 n +0000054557 00000 n +0000054694 00000 n +0000007572 00000 n +0000027864 00000 n +0000027725 00000 n +0000019356 00000 n +0000069914 00000 n +0000065645 00000 n +0000059321 00000 n +0000056639 00000 n +0000070274 00000 n +0000028015 00000 n +0000028052 00000 n +0000028919 00000 n +0000029831 00000 n +0000030784 00000 n +0000031746 00000 n +0000032078 00000 n +0000032720 00000 n +0000054959 00000 n +0000055668 00000 n +0000054991 00000 n +0000055891 00000 n +0000056795 00000 n +0000056997 00000 n +0000058257 00000 n +0000057070 00000 n +0000058488 00000 n +0000059484 00000 n +0000059693 00000 n +0000064151 00000 n +0000059978 00000 n +0000064381 00000 n +0000065808 00000 n +0000066017 00000 n +0000068699 00000 n +0000066203 00000 n +0000068922 00000 n +0000070071 00000 n +0000070338 00000 n +0000070384 00000 n +0000070518 00000 n trailer -<< /Size 267 /Root 265 0 R /Info 266 0 R /ID [ <2350CAD05F8A7AF0AA4058486855344F> <2350CAD05F8A7AF0AA4058486855344F> ] >> +<< /Size 262 /Root 260 0 R /Info 261 0 R /ID [ <2350CAD05F8A7AF0AA4058486855344F> <2350CAD05F8A7AF0AA4058486855344F> ] >> startxref -69131 +70651 %%EOF From 80ec1995de6f492fea3c349eec2582f9e35ecfca Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Wed, 4 Dec 2024 18:32:11 +0100 Subject: [PATCH 09/57] update testfiles --- testfiles-lua/cases.mlr | 5 +---- testfiles-lua/test_xml.mlr | 28 ---------------------------- testfiles-lua/test_xml.mlt | 27 +++++++++++++-------------- 3 files changed, 14 insertions(+), 46 deletions(-) diff --git a/testfiles-lua/cases.mlr b/testfiles-lua/cases.mlr index ab7b075..35edb39 100644 --- a/testfiles-lua/cases.mlr +++ b/testfiles-lua/cases.mlr @@ -106,9 +106,6 @@ . - - 𝑏 - βˆ‘ @@ -120,7 +117,7 @@ 𝑏 - _ + . 𝑐 diff --git a/testfiles-lua/test_xml.mlr b/testfiles-lua/test_xml.mlr index 94a71cc..bc4dd76 100644 --- a/testfiles-lua/test_xml.mlr +++ b/testfiles-lua/test_xml.mlr @@ -1,20 +1,3 @@ - - - π‘Ž - = - 𝑏 - - - - π‘Ž - = - 𝑏 - - - π‘Ž - = - 𝑏 - π‘Ž = @@ -80,7 +63,6 @@ = 𝑏 - @@ -89,7 +71,6 @@ else - @@ -146,9 +127,6 @@ - - (1) - π‘Ž 𝑏 @@ -178,9 +156,6 @@ - - (2) - ( 1 @@ -201,9 +176,6 @@ - - (3) - 5 diff --git a/testfiles-lua/test_xml.mlt b/testfiles-lua/test_xml.mlt index ff1a82b..004279b 100644 --- a/testfiles-lua/test_xml.mlt +++ b/testfiles-lua/test_xml.mlt @@ -1,17 +1,21 @@ \DocumentMetadata{ uncompress, pdfversion = 2.0, - testphase = phase-I, + testphase = {phase-III,table,math}, } \input{regression-test} \documentclass{article} -\usepackage[l3build]{luamml-demo} - \usepackage{unicode-math} \begin{document} -\tagstructbegin{tag=Document} -\LuaMMLTagAF{} { +\ExplSyntaxOn +\luamml_set_filename:n { + \jobname .mml + } +\luamml_process: +\luamml_begin_single_file: +\ExplSyntaxOff + \[ \begin{pmatrix} 1 & 0 & 0 \\ @@ -24,26 +28,21 @@ 2 & \text{else} \end{cases} \] -} -\LuaMMLTagAF{} { + \[ x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}. \] -} -\LuaMMLTagAF{} { + \[ \sum_a\underline c\dot bc' \] -} -\LuaMMLTagAF{} { \begin{align} abc&=def & e^{\mathrm{i}\pi}&=-1\\ \Big(1+2&=3\Big)\\ 5 \end{align} -} -Es gilt \LuaMMLTagAF{}{$\sin(x)-\sin(x+2\pi)=0$}. -\tagstructend +Es gilt $\sin(x)-\sin(x+2\pi)=0$. + \end{document} From 13c4c7e17310ef7fbcab35aba5f19603793fac5e Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Wed, 4 Dec 2024 19:41:39 +0100 Subject: [PATCH 10/57] correct handling of roots with degree --- luamml-convert.lua | 3 +- testfiles-lua/test_sqrt-xml.mlr | 33 ++ testfiles-lua/test_sqrt-xml.mlt | 28 + testfiles-lua/test_sqrt.pvt | 22 + testfiles-lua/test_sqrt.tpf | 990 ++++++++++++++++++++++++++++++++ 5 files changed, 1075 insertions(+), 1 deletion(-) create mode 100644 testfiles-lua/test_sqrt-xml.mlr create mode 100644 testfiles-lua/test_sqrt-xml.mlt create mode 100644 testfiles-lua/test_sqrt.pvt create mode 100644 testfiles-lua/test_sqrt.tpf diff --git a/luamml-convert.lua b/luamml-convert.lua index fe529de..abb6615 100644 --- a/luamml-convert.lua +++ b/luamml-convert.lua @@ -370,7 +370,8 @@ local function radical_to_table(radical, sub, cur_style, text_families) elem, core = {[0] = 'msqrt', nucleus, }, nil elseif kind == 'uroot' then -- FIXME: Check that this is really a root - elem, core = {[0] = 'msqrt', nucleus, kernel_to_table(radical.degree, 7, text_families)}, nil + -- UF 2024-12-04: force use of only one return value + elem, core = {[0] = 'mroot', nucleus, (kernel_to_table(radical.degree, 7, text_families))}, nil elseif kind == 'uunderdelimiter' then elem, core = {[0] = 'munder', left, nucleus}, left elseif kind == 'uoverdelimiter' then diff --git a/testfiles-lua/test_sqrt-xml.mlr b/testfiles-lua/test_sqrt-xml.mlr new file mode 100644 index 0000000..361f864 --- /dev/null +++ b/testfiles-lua/test_sqrt-xml.mlr @@ -0,0 +1,33 @@ + + + π‘₯ + + + + + + π‘₯ + + + + + 2 + + + π‘₯ + = + + + + 𝑦 + 2 + + 3 + + + + + + 𝑦 + 3 + + diff --git a/testfiles-lua/test_sqrt-xml.mlt b/testfiles-lua/test_sqrt-xml.mlt new file mode 100644 index 0000000..36a3751 --- /dev/null +++ b/testfiles-lua/test_sqrt-xml.mlt @@ -0,0 +1,28 @@ +\DocumentMetadata{ + uncompress, + pdfversion = 2.0, + testphase = {phase-III,table,math}, +} +\input{regression-test} +\documentclass{article} +\usepackage{unicode-math} + +\begin{document} +\ExplSyntaxOn +\luamml_set_filename:n { + \jobname .mml + } +\luamml_process: +\luamml_begin_single_file: +\ExplSyntaxOff + +$ \sqrt{x} $ + +$ \sqrt{\sqrt{x}} + 2 $ + +$ x = \sqrt{\sqrt[3]{y^2}} $ + +$\sqrt[3]{y}$ +\end{document} + + diff --git a/testfiles-lua/test_sqrt.pvt b/testfiles-lua/test_sqrt.pvt new file mode 100644 index 0000000..c299491 --- /dev/null +++ b/testfiles-lua/test_sqrt.pvt @@ -0,0 +1,22 @@ +\ExplSyntaxOn +\sys_gset_rand_seed:n{42} +\ExplSyntaxOff +\DocumentMetadata{ + uncompress, + pdfversion = 2.0, + testphase = {phase-III,math,table}, +} +\input{regression-test} +\documentclass{article} +\usepackage{unicode-math} +\tagpdfsetup{math/mathml/structelem} +\begin{document} + +$ \sqrt{x} $ + +$ \sqrt{\sqrt{x}} + 2 $ + +$ x = \sqrt{\sqrt[3]{y^2}} $ + +$\sqrt[3]{y}$ +\end{document} diff --git a/testfiles-lua/test_sqrt.tpf b/testfiles-lua/test_sqrt.tpf new file mode 100644 index 0000000..5b360d5 --- /dev/null +++ b/testfiles-lua/test_sqrt.tpf @@ -0,0 +1,990 @@ +%PDF-2.0 +%ΜΥΑΤΕΨΠΔΖ +22 0 obj +<< /Type /EmbeddedFile /Subtype /application#2Fmathml+xml /Params<> /Length 88 >> +stream + π‘₯ +endstream +endobj +23 0 obj +<< /Type /Filespec /AFRelationship /Supplement /Desc (mathml-1) /F (mathml-1.xml) /UF /EF<> >> +endobj +24 0 obj +<< /Type /EmbeddedFile /Subtype /application#2Fmathml+xml /Params<> /Length 161 >> +stream + π‘₯ + 2 +endstream +endobj +25 0 obj +<< /Type /Filespec /AFRelationship /Supplement /Desc (mathml-2) /F (mathml-2.xml) /UF /EF<> >> +endobj +26 0 obj +<< /Type /EmbeddedFile /Subtype /application#2Fmathml+xml /Params<> /Length 201 >> +stream + π‘₯ = 𝑦 2 3 +endstream +endobj +27 0 obj +<< /Type /Filespec /AFRelationship /Supplement /Desc (mathml-3) /F (mathml-3.xml) /UF /EF<> >> +endobj +28 0 obj +<< /Type /EmbeddedFile /Subtype /application#2Fmathml+xml /Params<> /Length 99 >> +stream + 𝑦 3 +endstream +endobj +29 0 obj +<< /Type /Filespec /AFRelationship /Supplement /Desc (mathml-4) /F (mathml-4.xml) /UF /EF<> >> +endobj +35 0 obj +<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<> /Length 11 >> +stream +$\sqrt {x}$ +endstream +endobj +36 0 obj +<< /Type /Filespec /AFRelationship /Source /Desc (TeX source) /F (tag-AFfile1.tex) /UF /EF<> >> +endobj +43 0 obj +<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<> /Length 23 >> +stream +$\sqrt {\sqrt {x}} + 2$ +endstream +endobj +44 0 obj +<< /Type /Filespec /AFRelationship /Source /Desc (TeX source) /F (tag-AFfile2.tex) /UF /EF<> >> +endobj +50 0 obj +<< /O/NSO/NS 13 0 R/lspace(0.222em)/rspace(0.222em) >> +endobj +55 0 obj +<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<> /Length 28 >> +stream +$x = \sqrt {\sqrt [3]{y^2}}$ +endstream +endobj +56 0 obj +<< /Type /Filespec /AFRelationship /Source /Desc (TeX source) /F (tag-AFfile3.tex) /UF /EF<> >> +endobj +60 0 obj +<< /O/NSO/NS 13 0 R/lspace(0.278em)/rspace(0.278em) >> +endobj +70 0 obj +<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<> /Length 14 >> +stream +$\sqrt [3]{y}$ +endstream +endobj +71 0 obj +<< /Type /Filespec /AFRelationship /Source /Desc (TeX source) /F (tag-AFfile4.tex) /UF /EF<> >> +endobj +76 0 obj +<< /Type /Metadata /Subtype /XML /Length 11691 >> +stream + + + + + + + + XMP Media Management Schema + xmpMM + http://ns.adobe.com/xap/1.0/mm/ + + + + OriginalDocumentID + URI + internal + The common identifier for all versions and renditions of a document. + + + + + + PDF/A Identification Schema + pdfaid + http://www.aiim.org/pdfa/ns/id/ + + + + year + Integer + internal + Year of standard + + + rev + Integer + internal + Revision year of standard + + + + + + PDF/UA Universal Accessibility Schema + pdfuaid + http://www.aiim.org/pdfua/ns/id/ + + + + part + Integer + internal + Part of ISO 14289 standard + + + rev + Integer + internal + Revision of ISO 14289 standard + + + + + + PDF/X ID Schema + pdfxid + http://www.npes.org/pdfx/ns/id/ + + + + GTS_PDFXVersion + Text + internal + ID of PDF/X standard + + + + + + PRISM Basic Metadata + prism + http://prismstandard.org/namespaces/basic/3.0/ + + + + complianceProfile + Text + internal + PRISM specification compliance profile to which this document adheres + + + publicationName + Text + external + Publication name + + + aggregationType + Text + external + Publication type + + + bookEdition + Text + external + Edition of the book in which the document was published + + + volume + Text + external + Publication volume number + + + number + Text + external + Publication issue number within a volume + + + pageRange + Text + external + Page range for the document within the print version of its publication + + + issn + Text + external + ISSN for the printed publication in which the document was published + + + eIssn + Text + external + ISSN for the electronic publication in which the document was published + + + isbn + Text + external + ISBN for the publication in which the document was published + + + doi + Text + external + Digital Object Identifier for the document + + + url + URL + external + URL at which the document can be found + + + byteCount + Integer + internal + Approximate file size in octets + + + pageCount + Integer + internal + Number of pages in the print version of the document + + + subtitle + Text + external + Document's subtitle + + + + + + + luahbtex-NN.NN.NN + 2.0 + + + Text + + + + + en + + + + + 2016-05-20T09:00:00Z + + + application/pdf + test_sqrt.tex + LaTeX + 2016-05-20T09:00:00Z + 2016-05-20T09:00:00Z + 2016-05-20T09:00:00Z + uuid:d1433a12-c113-44c0-8c00-afe828e37deb + uuid:0a57c455-157a-4141-8c19-6237d832fc80 + three + 1 + + + + +endstream +endobj +79 0 obj +<< /Length 2081 >> +stream +/opacity1 gs +/Artifact BMC +EMC +/Formula<> BDC +BT +/F20 9.96264 Tf +1 0 0 1 148.712 664.413 Tm [<0C05>]TJ +ET +q +1 0 0 1 157.011 664.613 cm +[] 0 d 0 J 0.398 w 0 0 m 5.699 0 l S +Q +EMC +/mi<> BDC +BT +/F20 9.96264 Tf +1 0 0 1 157.011 657.235 Tm [<0527>]TJ +ET +EMC +/Artifact BMC +EMC +/Formula<> BDC +BT +/F20 9.96264 Tf +1 0 0 1 148.712 644.986 Tm [<0C09>]TJ +ET +q +1 0 0 1 158.675 653.255 cm +[] 0 d 0 J 0.398 w 0 0 m 13.998 0 l S +Q +BT +/F20 9.96264 Tf +1 0 0 1 158.675 651.412 Tm [<0C05>]TJ +ET +q +1 0 0 1 166.974 651.611 cm +[] 0 d 0 J 0.398 w 0 0 m 5.699 0 l S +Q +EMC +/mi<> BDC +BT +/F20 9.96264 Tf +1 0 0 1 166.974 644.234 Tm [<0527>]TJ +ET +EMC +/mo<> BDC +BT +/F20 9.96264 Tf +1 0 0 1 174.886 644.234 Tm [<000C>]TJ +ET +EMC +/mn<> BDC +BT +/F20 9.96264 Tf +1 0 0 1 184.851 644.234 Tm [<0013>]TJ +ET +EMC +/Artifact BMC +EMC +/Formula<> BDC +EMC +/mi<> BDC +BT +/F20 9.96264 Tf +1 0 0 1 148.712 627.309 Tm [<0527>]TJ +ET +EMC +/mo<> BDC +BT +/F20 9.96264 Tf +1 0 0 1 157.178 627.309 Tm [<001E>]TJ +ET +EMC +/Formula<> BDC +BT +/F20 9.96264 Tf +1 0 0 1 167.697 628.648 Tm [<0C0A>]TJ +ET +q +1 0 0 1 177.659 639.905 cm +[] 0 d 0 J 0.398 w 0 0 m 20.272 0 l S +Q +EMC +/mn<> BDC +BT +/F22 4.98132 Tf +1 0 0 1 180.429 631.686 Tm [<0258>]TJ +ET +EMC +/Formula<> BDC +BT +/F20 9.96264 Tf +1 0 0 1 178.282 628 Tm [<0C09>]TJ +ET +q +1 0 0 1 188.244 636.269 cm +[] 0 d 0 J 0.398 w 0 0 m 9.687 0 l S +Q +EMC +/mi<> BDC +BT +/F20 9.96264 Tf +1 0 0 1 188.244 627.309 Tm [<0528>]TJ +ET +EMC +/mn<> BDC +BT +/F21 6.97385 Tf +1 0 0 1 193.405 630.188 Tm [<03F5>]TJ +ET +EMC +/Artifact BMC +EMC +/Formula<> BDC +EMC +/mn<> BDC +BT +/F22 4.98132 Tf +1 0 0 1 151.482 616.792 Tm [<0258>]TJ +ET +EMC +/Formula<> BDC +BT +/F20 9.96264 Tf +1 0 0 1 149.335 620.379 Tm [<0C05>]TJ +ET +q +1 0 0 1 157.634 620.578 cm +[] 0 d 0 J 0.398 w 0 0 m 4.882 0 l S +Q +EMC +/mi<> BDC +BT +/F20 9.96264 Tf +1 0 0 1 157.634 614.167 Tm [<0528>]TJ +ET +EMC +/Artifact BMC +EMC +/Artifact BMC +BT +/F15 9.96264 Tf +1 0 0 1 303.133 89.365 Tm [<0052>]TJ +ET +EMC +/Artifact BMC +EMC +endstream +endobj +78 0 obj +<< /Type /Page /Contents 79 0 R /Resources 77 0 R /MediaBox [ 0 0 612 792 ] /StructParents 0/Tabs /S /Parent 84 0 R >> +endobj +77 0 obj +<< /ExtGState 1 0 R /Font << /F20 80 0 R /F22 81 0 R /F21 82 0 R /F15 83 0 R >> >> +endobj +1 0 obj +<< /opacity1 <> >> +endobj +85 0 obj +<< /Marked true >> +endobj +86 0 obj +<< /Names[(l3ef0001) 23 0 R (l3ef0002) 25 0 R (l3ef0003) 27 0 R (l3ef0004) 29 0 R] >> +endobj +6 0 obj +<< /Nums [0 [ 34 0 R 39 0 R 42 0 R 48 0 R 49 0 R 51 0 R 54 0 R 58 0 R 59 0 R 54 0 R 66 0 R 54 0 R 64 0 R 65 0 R 69 0 R 75 0 R 69 0 R 74 0 R] +] >> +endobj +87 0 obj +<< /Limits [(ID.002) (ID.038)]/Names [(ID.002) 21 0 R (ID.003) 30 0 R (ID.004) 31 0 R (ID.005) 32 0 R (ID.006) 33 0 R (ID.007) 34 0 R (ID.008) 37 0 R (ID.009) 38 0 R (ID.010) 39 0 R (ID.011) 40 0 R (ID.012) 41 0 R (ID.013) 42 0 R (ID.014) 45 0 R (ID.015) 46 0 R (ID.016) 47 0 R (ID.017) 48 0 R (ID.018) 49 0 R (ID.019) 51 0 R (ID.020) 52 0 R (ID.021) 53 0 R (ID.022) 54 0 R (ID.023) 57 0 R (ID.024) 58 0 R (ID.025) 59 0 R (ID.026) 61 0 R (ID.027) 62 0 R (ID.028) 63 0 R (ID.029) 64 0 R (ID.030) 65 0 R (ID.031) 66 0 R (ID.032) 67 0 R (ID.033) 68 0 R (ID.034) 69 0 R (ID.035) 72 0 R (ID.036) 73 0 R (ID.037) 74 0 R (ID.038) 75 0 R ] >> +endobj +88 0 obj +<< /Kids [87 0 R] >> +endobj +7 0 obj +<< /Artifact /NonStruct /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 /list /L /itemize /L /enumerate /L /description /L /quote /BlockQuote /quotation /BlockQuote /verbatim /P /item /LI /itemlabel /Lbl /itembody /LBody /footnote /Note /footnotemark /Lbl /footnotelabel /Lbl /text-unit /Part /text /P /theorem-like /Sect /codeline /Span /float /Note /figures /Sect /tables /Sect >> +endobj +89 0 obj +<< /justify <> +/inline <> +/TH-both <> +/TH-row <> +/TH-col <> + >> +endobj +9 0 obj +<< /Type /Namespace /NS (http://iso.org/pdf/ssn) >> +endobj +11 0 obj +<< /Type /Namespace /NS (http://iso.org/pdf2/ssn) >> +endobj +13 0 obj +<< /Type /Namespace /NS (http://www.w3.org/1998/Math/MathML) >> +endobj +16 0 obj +<< /title [/Title 11 0 R] /part [/Title 11 0 R] /section [/H1 11 0 R] /subsection [/H2 11 0 R] /subsubsection [/H3 11 0 R] /paragraph [/H4 11 0 R] /subparagraph [/H5 11 0 R] /list [/L 11 0 R] /itemize [/L 11 0 R] /enumerate [/L 11 0 R] /description [/L 11 0 R] /quote [/BlockQuote 9 0 R] /quotation [/BlockQuote 9 0 R] /verbatim [/P 11 0 R] /item [/LI 11 0 R] /itemlabel [/Lbl 11 0 R] /itembody [/LBody 11 0 R] /footnote [/FENote 11 0 R] /footnotemark [/Lbl 11 0 R] /footnotelabel [/Lbl 11 0 R] /text-unit [/Part 11 0 R] /text [/P 11 0 R] /theorem-like [/Sect 11 0 R] /codeline [/Sub 11 0 R] /float [/Aside 11 0 R] /figures [/Sect 11 0 R] /tables [/Sect 11 0 R] >> +endobj +15 0 obj +<< /Type /Namespace /NS (https://www.latex-project.org/ns/dflt/2022) /RoleMapNS 16 0 R >> +endobj +18 0 obj +<< /chapter [/H1 11 0 R] /section [/H2 11 0 R] /subsection [/H3 11 0 R] /subsubsection [/H4 11 0 R] /paragraph [/H5 11 0 R] /subparagraph [/H6 11 0 R] >> +endobj +17 0 obj +<< /Type /Namespace /NS (https://www.latex-project.org/ns/book/2022) /RoleMapNS 18 0 R >> +endobj +19 0 obj +<< /Type /Namespace /NS (data:,C9B55C18-275C-494E-C10F-E4B83CD03F23) >> +endobj +8 0 obj +[ 9 0 R 11 0 R 13 0 R 15 0 R 17 0 R 19 0 R ] +endobj +21 0 obj +<< /Type /StructElem /S /Document /NS 11 0 R /P 5 0 R /K [32 0 R 40 0 R 52 0 R 67 0 R] /ID (ID.002) >> +endobj +30 0 obj +<< /Type /StructElem /S /Artifact /NS 15 0 R /P 5 0 R /ID (ID.003) >> +endobj +31 0 obj +<< /Type /StructElem /S /Artifact /NS 15 0 R /P 5 0 R /ID (ID.004) >> +endobj +32 0 obj +<< /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 33 0 R /ID (ID.005) >> +endobj +33 0 obj +<< /Type /StructElem /C /justify /S /text /NS 15 0 R /P 32 0 R /K [ 34 0 R ] /ID (ID.006) >> +endobj +34 0 obj +<< /Type /StructElem /C /inline /AF [23 0 R 36 0 R] /T /S /Formula /NS 11 0 R /P 33 0 R /K [<> 37 0 R] /ID (ID.007) >> +endobj +37 0 obj +<< /Type /StructElem /S /math /NS 13 0 R /P 34 0 R /K 38 0 R /ID (ID.008) >> +endobj +38 0 obj +<< /Type /StructElem /S /msqrt /NS 13 0 R /P 37 0 R /K 39 0 R /ID (ID.009) >> +endobj +39 0 obj +<< /Type /StructElem /S /mi /NS 13 0 R /P 38 0 R /K <> /ID (ID.010) >> +endobj +40 0 obj +<< /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 41 0 R /ID (ID.011) >> +endobj +41 0 obj +<< /Type /StructElem /C /justify /S /text /NS 15 0 R /P 40 0 R /K [ 42 0 R ] /ID (ID.012) >> +endobj +42 0 obj +<< /Type /StructElem /C /inline /AF [25 0 R 44 0 R] /T /S /Formula /NS 11 0 R /P 41 0 R /K [<> 45 0 R] /ID (ID.013) >> +endobj +45 0 obj +<< /Type /StructElem /S /math /NS 13 0 R /P 42 0 R /K [46 0 R 49 0 R 51 0 R] /ID (ID.014) >> +endobj +46 0 obj +<< /Type /StructElem /S /msqrt /NS 13 0 R /P 45 0 R /K 47 0 R /ID (ID.015) >> +endobj +47 0 obj +<< /Type /StructElem /S /msqrt /NS 13 0 R /P 46 0 R /K 48 0 R /ID (ID.016) >> +endobj +48 0 obj +<< /Type /StructElem /S /mi /NS 13 0 R /P 47 0 R /K <> /ID (ID.017) >> +endobj +49 0 obj +<< /Type /StructElem /A 50 0 R /S /mo /NS 13 0 R /P 45 0 R /K <> /ID (ID.018) >> +endobj +51 0 obj +<< /Type /StructElem /S /mn /NS 13 0 R /P 45 0 R /K <> /ID (ID.019) >> +endobj +52 0 obj +<< /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 53 0 R /ID (ID.020) >> +endobj +53 0 obj +<< /Type /StructElem /C /justify /S /text /NS 15 0 R /P 52 0 R /K [ 54 0 R ] /ID (ID.021) >> +endobj +54 0 obj +<< /Type /StructElem /C /inline /AF [27 0 R 56 0 R] /T /S /Formula /NS 11 0 R /P 53 0 R /K [<> <> <> 57 0 R] /ID (ID.022) >> +endobj +57 0 obj +<< /Type /StructElem /S /math /NS 13 0 R /P 54 0 R /K [58 0 R 59 0 R 61 0 R] /ID (ID.023) >> +endobj +58 0 obj +<< /Type /StructElem /S /mi /NS 13 0 R /P 57 0 R /K <> /ID (ID.024) >> +endobj +59 0 obj +<< /Type /StructElem /A 60 0 R /S /mo /NS 13 0 R /P 57 0 R /K <> /ID (ID.025) >> +endobj +61 0 obj +<< /Type /StructElem /S /msqrt /NS 13 0 R /P 57 0 R /K 62 0 R /ID (ID.026) >> +endobj +62 0 obj +<< /Type /StructElem /S /mroot /NS 13 0 R /P 61 0 R /K [63 0 R 66 0 R] /ID (ID.027) >> +endobj +63 0 obj +<< /Type /StructElem /S /msup /NS 13 0 R /P 62 0 R /K [64 0 R 65 0 R] /ID (ID.028) >> +endobj +64 0 obj +<< /Type /StructElem /S /mi /NS 13 0 R /P 63 0 R /K <> /ID (ID.029) >> +endobj +65 0 obj +<< /Type /StructElem /S /mn /NS 13 0 R /P 63 0 R /K <> /ID (ID.030) >> +endobj +66 0 obj +<< /Type /StructElem /S /mn /NS 13 0 R /P 62 0 R /K <> /ID (ID.031) >> +endobj +67 0 obj +<< /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 68 0 R /ID (ID.032) >> +endobj +68 0 obj +<< /Type /StructElem /C /justify /S /text /NS 15 0 R /P 67 0 R /K [ 69 0 R ] /ID (ID.033) >> +endobj +69 0 obj +<< /Type /StructElem /C /inline /AF [29 0 R 71 0 R] /T /S /Formula /NS 11 0 R /P 68 0 R /K [<> <> 72 0 R] /ID (ID.034) >> +endobj +72 0 obj +<< /Type /StructElem /S /math /NS 13 0 R /P 69 0 R /K 73 0 R /ID (ID.035) >> +endobj +73 0 obj +<< /Type /StructElem /S /mroot /NS 13 0 R /P 72 0 R /K [74 0 R 75 0 R] /ID (ID.036) >> +endobj +74 0 obj +<< /Type /StructElem /S /mi /NS 13 0 R /P 73 0 R /K <> /ID (ID.037) >> +endobj +75 0 obj +<< /Type /StructElem /S /mn /NS 13 0 R /P 73 0 R /K <> /ID (ID.038) >> +endobj +5 0 obj +<< /Type /StructTreeRoot /Namespaces 8 0 R /IDTree 88 0 R /ClassMap 89 0 R /ParentTree 6 0 R /RoleMap 7 0 R /K 21 0 R >> +endobj +90 0 obj +[ 82 [ 500 ] ] +endobj +92 0 obj +<< /Subtype /CIDFontType0C /Length 574 >> +[BINARY STREAM] +endobj +91 0 obj +<< /Type /FontDescriptor /FontName /JFRMQG+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 92 0 R >> +endobj +93 0 obj +<< /Length 692 >> +stream +%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-JFRMQG-LMRoman10-Regular-0) +%%Title: (TeX-JFRMQG-LMRoman10-Regular-0 TeX JFRMQG-LMRoman10-Regular 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (JFRMQG-LMRoman10-Regular) +/Supplement 0 +>> def +/CMapName /TeX-Identity-JFRMQG-LMRoman10-Regular def +/CMapType 2 def +1 begincodespacerange +<0000> +endcodespacerange +0 beginbfrange +endbfrange +1 beginbfchar +<0052> <0031> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF +endstream +endobj +83 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /JFRMQG+LMRoman10-Regular /DescendantFonts [ 94 0 R ] /ToUnicode 93 0 R >> +endobj +94 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /JFRMQG+LMRoman10-Regular /FontDescriptor 91 0 R /W 90 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +endobj +95 0 obj +[ 1013 [ 569 ] ] +endobj +97 0 obj +<< /Subtype /CIDFontType0C /Length 702 >> +[BINARY STREAM] +endobj +96 0 obj +<< /Type /FontDescriptor /FontName /MGWLKY+LatinModernMath-Regular /Flags 4 /FontBBox [ -1042 -3060 4082 3560 ] /Ascent 806 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 113 /XHeight 431 /FontFile3 97 0 R >> +endobj +98 0 obj +<< /Length 722 >> +stream +%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-MGWLKY-LatinModernMath-Regular-0) +%%Title: (TeX-MGWLKY-LatinModernMath-Regular-0 TeX MGWLKY-LatinModernMath-Regular 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (MGWLKY-LatinModernMath-Regular) +/Supplement 0 +>> def +/CMapName /TeX-Identity-MGWLKY-LatinModernMath-Regular def +/CMapType 2 def +1 begincodespacerange +<0000> +endcodespacerange +0 beginbfrange +endbfrange +1 beginbfchar +<03F5> <0032> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF +endstream +endobj +82 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /MGWLKY+LatinModernMath-Regular /DescendantFonts [ 99 0 R ] /ToUnicode 98 0 R >> +endobj +99 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /MGWLKY+LatinModernMath-Regular /FontDescriptor 96 0 R /W 95 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +endobj +100 0 obj +[ 600 [ 681 ] ] +endobj +102 0 obj +<< /Subtype /CIDFontType0C /Length 743 >> +[BINARY STREAM] +endobj +101 0 obj +<< /Type /FontDescriptor /FontName /DPSGTM+LatinModernMath-Regular /Flags 4 /FontBBox [ -1042 -3060 4082 3560 ] /Ascent 806 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 153 /XHeight 431 /FontFile3 102 0 R >> +endobj +103 0 obj +<< /Length 722 >> +stream +%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-DPSGTM-LatinModernMath-Regular-0) +%%Title: (TeX-DPSGTM-LatinModernMath-Regular-0 TeX DPSGTM-LatinModernMath-Regular 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (DPSGTM-LatinModernMath-Regular) +/Supplement 0 +>> def +/CMapName /TeX-Identity-DPSGTM-LatinModernMath-Regular def +/CMapType 2 def +1 begincodespacerange +<0000> +endcodespacerange +0 beginbfrange +endbfrange +1 beginbfchar +<0258> <0033> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF +endstream +endobj +81 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /DPSGTM+LatinModernMath-Regular /DescendantFonts [ 104 0 R ] /ToUnicode 103 0 R >> +endobj +104 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /DPSGTM+LatinModernMath-Regular /FontDescriptor 101 0 R /W 100 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +endobj +105 0 obj +[ 12 [ 778 ] 19 [ 500 ] 30 [ 778 ] 1319 [ 572 490 ] 3077 [ 833 ] 3081 [ 1000 1000 ] ] +endobj +107 0 obj +<< /Subtype /CIDFontType0C /Length 1511 >> +[BINARY STREAM] +endobj +106 0 obj +<< /Type /FontDescriptor /FontName /NDJELI+LatinModernMath-Regular /Flags 4 /FontBBox [ -1042 -3060 4082 3560 ] /Ascent 806 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 107 0 R >> +endobj +108 0 obj +<< /Length 828 >> +stream +%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-NDJELI-LatinModernMath-Regular-0) +%%Title: (TeX-NDJELI-LatinModernMath-Regular-0 TeX NDJELI-LatinModernMath-Regular 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (NDJELI-LatinModernMath-Regular) +/Supplement 0 +>> def +/CMapName /TeX-Identity-NDJELI-LatinModernMath-Regular def +/CMapType 2 def +1 begincodespacerange +<0000> +endcodespacerange +0 beginbfrange +endbfrange +8 beginbfchar +<000C> <002B> +<0013> <0032> +<001E> <003D> +<0527> +<0528> +<0C05> <221A> +<0C09> <221A> +<0C0A> <221A> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF +endstream +endobj +80 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /NDJELI+LatinModernMath-Regular /DescendantFonts [ 109 0 R ] /ToUnicode 108 0 R >> +endobj +109 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /NDJELI+LatinModernMath-Regular /FontDescriptor 106 0 R /W 105 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +endobj +84 0 obj +<< /Type /Pages /Count 1 /Kids [ 78 0 R ] >> +endobj +110 0 obj +<< /EmbeddedFiles 86 0 R >> +endobj +111 0 obj +<< /Type /Catalog /Pages 84 0 R /Names 110 0 R /MarkInfo 85 0 R/Lang (en)/Metadata 76 0 R/StructTreeRoot 5 0 R >> +endobj +112 0 obj +<< /Producer (LuaTeX)/Creator (TeX)/CreationDate (D:20160520090000Z)/ModDate (D:20160520090000Z) /Trapped /False >> +endobj +xref +0 113 +0000000002 65535 f +0000017659 00000 n +0000000003 00000 f +0000000004 00000 f +0000000010 00000 f +0000025392 00000 n +0000017844 00000 n +0000018694 00000 n +0000020849 00000 n +0000019474 00000 n +0000000012 00000 f +0000019542 00000 n +0000000014 00000 f +0000019612 00000 n +0000000020 00000 f +0000020375 00000 n +0000019693 00000 n +0000020653 00000 n +0000020482 00000 n +0000020760 00000 n +0000000000 00000 f +0000020910 00000 n +0000000020 00000 n +0000000257 00000 n +0000000444 00000 n +0000000754 00000 n +0000000941 00000 n +0000001291 00000 n +0000001478 00000 n +0000001726 00000 n +0000021031 00000 n +0000021119 00000 n +0000021207 00000 n +0000021307 00000 n +0000021418 00000 n +0000001913 00000 n +0000002067 00000 n +0000021610 00000 n +0000021705 00000 n +0000021801 00000 n +0000021922 00000 n +0000022022 00000 n +0000022133 00000 n +0000002267 00000 n +0000002433 00000 n +0000022325 00000 n +0000022436 00000 n +0000022532 00000 n +0000022628 00000 n +0000022749 00000 n +0000002633 00000 n +0000022881 00000 n +0000023002 00000 n +0000023102 00000 n +0000023213 00000 n +0000002704 00000 n +0000002875 00000 n +0000023474 00000 n +0000023585 00000 n +0000023706 00000 n +0000003075 00000 n +0000023838 00000 n +0000023934 00000 n +0000024039 00000 n +0000024143 00000 n +0000024265 00000 n +0000024387 00000 n +0000024509 00000 n +0000024609 00000 n +0000024720 00000 n +0000003146 00000 n +0000003303 00000 n +0000024948 00000 n +0000025043 00000 n +0000025148 00000 n +0000025270 00000 n +0000003503 00000 n +0000017560 00000 n +0000017425 00000 n +0000015284 00000 n +0000034805 00000 n +0000031616 00000 n +0000029375 00000 n +0000027191 00000 n +0000035176 00000 n +0000017706 00000 n +0000017742 00000 n +0000018006 00000 n +0000018657 00000 n +0000019273 00000 n +0000025529 00000 n +0000026218 00000 n +0000025560 00000 n +0000026439 00000 n +0000027345 00000 n +0000027545 00000 n +0000028364 00000 n +0000027578 00000 n +0000028593 00000 n +0000029535 00000 n +0000029741 00000 n +0000030602 00000 n +0000029774 00000 n +0000030833 00000 n +0000031778 00000 n +0000031987 00000 n +0000033686 00000 n +0000032090 00000 n +0000033916 00000 n +0000034967 00000 n +0000035238 00000 n +0000035283 00000 n +0000035414 00000 n +trailer +<< /Size 113 /Root 111 0 R /Info 112 0 R /ID [ <2350CAD05F8A7AF0AA4058486855344F> <2350CAD05F8A7AF0AA4058486855344F> ] >> +startxref +35547 +%%EOF From 20a2572e1273c88e65d95c4e082018a34ef8e95c Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Wed, 4 Dec 2024 19:46:17 +0100 Subject: [PATCH 11/57] what fails?? --- testfiles-lua/{test_struct.pvt => test_struct.lvt} | 0 testfiles-lua/{test_struct.tpf => test_struct.tlg} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename testfiles-lua/{test_struct.pvt => test_struct.lvt} (100%) rename testfiles-lua/{test_struct.tpf => test_struct.tlg} (100%) diff --git a/testfiles-lua/test_struct.pvt b/testfiles-lua/test_struct.lvt similarity index 100% rename from testfiles-lua/test_struct.pvt rename to testfiles-lua/test_struct.lvt diff --git a/testfiles-lua/test_struct.tpf b/testfiles-lua/test_struct.tlg similarity index 100% rename from testfiles-lua/test_struct.tpf rename to testfiles-lua/test_struct.tlg From 1cd6cc4da42b27a666290ec29e7f9eb68558cfdb Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Mon, 9 Dec 2024 11:57:59 +0100 Subject: [PATCH 12/57] add artifact socket --- luamml.dtx | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/luamml.dtx b/luamml.dtx index 5134062..9fdea4c 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -564,6 +564,28 @@ \AssignSocketPlug{tagsupport/math/luamml/hbox}{luamml} % % \end{macrocode} +% +% \subsubsection{Artifact characters} +% Unicode characters like a root sign should be marked as artifacts +% to avoid duplication e.g. in derivation if mathml +% structure elements are used that imply the meaning. +% We test for the socket until the release 2025-06-01. +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/artifact_plug_str } + { + \NewSocket{tagsupport/math/luamml/artifact}{0} + } +%<*luatex> +\NewSocketPlug{tagsupport/math/luamml/artifact}{default} + { + \int_if_odd:nT { \int_div_truncate:nn { \l__luamml_flag_int } { 8 } } + { + \tag_mc_begin:n{artifact} + } + } +\AssignSocketPlug{tagsupport/math/luamml/hbox}{luamml} +% +% \end{macrocode} % \subsection{Patching} % For some packages, we ship with patches to make them more compatible and to % demonstrate how other code can be patched to work with \texttt{luamml}. From 04da7fc19890e16130818b57e4fd2ba0378f41ac Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Mon, 9 Dec 2024 11:58:23 +0100 Subject: [PATCH 13/57] docu and spaces --- luamml.dtx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/luamml.dtx b/luamml.dtx index 9fdea4c..db97f80 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -527,8 +527,8 @@ % In various places luamml has to add code to kernel commands. This is done through % sockets which are predeclared in lttagging. % -% \subsubsection{mbox} -% This socket annotates an \cs{hbox} inside box command use in math. +% \subsubsection{Horizontal boxes} +% This socket annotates an \cs{hbox} inside box commands used in math. % We test for the socket until the release 2025-06-01. % \begin{macrocode} \str_if_exist:cF { l__socket_tagsupport/math/luamml/hbox_plug_str } @@ -566,8 +566,8 @@ % \end{macrocode} % % \subsubsection{Artifact characters} -% Unicode characters like a root sign should be marked as artifacts -% to avoid duplication e.g. in derivation if mathml +% Unicode characters like a root sign should be marked as artifacts +% to avoid duplication e.g. in derivation if mathml % structure elements are used that imply the meaning. % We test for the socket until the release 2025-06-01. % \begin{macrocode} @@ -578,7 +578,7 @@ %<*luatex> \NewSocketPlug{tagsupport/math/luamml/artifact}{default} { - \int_if_odd:nT { \int_div_truncate:nn { \l__luamml_flag_int } { 8 } } + \int_if_odd:nT { \int_div_truncate:nn { \l__luamml_flag_int } { 8 } } { \tag_mc_begin:n{artifact} } From 1e3b5a81d57bfe2177854121d072b1992fe8c596 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Mon, 9 Dec 2024 11:59:43 +0100 Subject: [PATCH 14/57] correct name --- luamml.dtx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/luamml.dtx b/luamml.dtx index db97f80..498444f 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -583,7 +583,7 @@ \tag_mc_begin:n{artifact} } } -\AssignSocketPlug{tagsupport/math/luamml/hbox}{luamml} +\AssignSocketPlug{tagsupport/math/luamml/artifact}{default} % % \end{macrocode} % \subsection{Patching} From c53fb2a9562052419ae1dc746d04f2122aea4bc0 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Mon, 9 Dec 2024 16:05:33 +0100 Subject: [PATCH 15/57] correct extension --- testfiles-lua/{test_struct.lvt => test_struct.pvt} | 0 testfiles-lua/{test_struct.tlg => test_struct.tpf} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename testfiles-lua/{test_struct.lvt => test_struct.pvt} (100%) rename testfiles-lua/{test_struct.tlg => test_struct.tpf} (100%) diff --git a/testfiles-lua/test_struct.lvt b/testfiles-lua/test_struct.pvt similarity index 100% rename from testfiles-lua/test_struct.lvt rename to testfiles-lua/test_struct.pvt diff --git a/testfiles-lua/test_struct.tlg b/testfiles-lua/test_struct.tpf similarity index 100% rename from testfiles-lua/test_struct.tlg rename to testfiles-lua/test_struct.tpf From a2fa1d4dcf1f016a3521d490db76a9bba1e02635 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Wed, 11 Dec 2024 15:02:56 +0100 Subject: [PATCH 16/57] move actualtext to the mc-chunk --- CHANGELOG.md | 3 +++ luamml-structelemwriter.lua | 17 +++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92c0112..9b2213f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] ### Changed +- Ulrike Fischer, 2024-11-29 + luamml-structelemwriter.lua: moved the actualtext for e.g. stretched braces from the structure element to the mc-chunk. + - Ulrike Fischer, 2024-03-03 luamml.dtx: add plug for mbox socket to correctly annotate them in math. diff --git a/luamml-structelemwriter.lua b/luamml-structelemwriter.lua index 36881e1..957c29f 100644 --- a/luamml-structelemwriter.lua +++ b/luamml-structelemwriter.lua @@ -70,7 +70,7 @@ local function write_elem(tree, stash) return tex.runtoks(function() return tex.sprint(struct_use_num, '{', tree[':structnum'], '}') end) - end + end if not tree[0] then print('ERR', require'inspect'(tree)) end local i = 0 for attr, val in next, tree do if type(attr) == 'string' and not string.find(attr, ':') and attr ~= 'xmlns' then @@ -81,7 +81,7 @@ local function write_elem(tree, stash) table.sort(attrs) if stash then - tree[':structnum'] = get_ltx().tag.get_struct_num_next() + tree[':structnum'] = get_ltx().tag.get_struct_num_next() stash = ', stash, ' end @@ -89,18 +89,19 @@ local function write_elem(tree, stash) tex.sprint(struct_begin, '{tag=' .. tree[0] .. '/mathml') if stash then tex.sprint(stash) end if attr_flag then tex.sprint(attr_flag) end - if tree[':actual'] then - tex.sprint(', actualtext = {') - tex.cprint(12, tree[':actual']) - tex.sprint'}' - end tex.sprint'}' for j = 1, i do attrs[j] = nil end if tree[':nodes'] then local n = tree[':nodes'] tex.runtoks(function() - tex.sprint{mc_begin, string.format('{tag=%s}', tree[0])} + if tree[':actual'] then + tex.sprint(mc_begin,'{tag=Span,actualtext=') + tex.cprint(12,tree[':actual']) + tex.sprint('}') + else + tex.sprint{mc_begin, string.format('{tag=%s}', tree[0])} + end -- NOTE: This will also flush all previous sprint's... That's often annoying, but in this case actually intentional. end) local mct, mcc = tex.attribute[mc_type], tex.attribute[mc_cnt] From dc22fa31a4ae754e3e298e99507f6ce3bf536cc1 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Wed, 11 Dec 2024 15:08:23 +0100 Subject: [PATCH 17/57] update test --- testfiles-lua/test_struct.tpf | 460 +++++++++++++++++----------------- 1 file changed, 230 insertions(+), 230 deletions(-) diff --git a/testfiles-lua/test_struct.tpf b/testfiles-lua/test_struct.tpf index 520c6ad..4149ac6 100644 --- a/testfiles-lua/test_struct.tpf +++ b/testfiles-lua/test_struct.tpf @@ -373,7 +373,7 @@ stream endstream endobj 225 0 obj -<< /Length 8308 >> +<< /Length 8458 >> stream /opacity1 gs /Artifact BMC @@ -384,7 +384,7 @@ BT 1 0 0 1 148.712 657.235 Tm [<003F0032004800480051>]TJ ET EMC -/mo<> BDC +/Span<>> BDC BT /F20 9.96264 Tf 1 0 0 1 244.283 627.612 Tm [<09C9>]TJ @@ -474,7 +474,7 @@ ET EMC /Artifact BMC EMC -/mo<> BDC +/Span<>> BDC BT /F20 9.96264 Tf 1 0 0 1 287.87 627.612 Tm [<09CC>]TJ @@ -488,7 +488,7 @@ BT 1 0 0 1 299.355 623.861 Tm [<001E>]TJ ET EMC -/mo<> BDC +/Span<>> BDC BT /F20 9.96264 Tf 1 0 0 1 309.873 623.861 Tm [<09D3>]TJ @@ -670,7 +670,7 @@ q [] 0 d 0 J 0.398 w 0 0 m 4.314 0 l S Q EMC -/mo<> BDC +/Span<>> BDC BT /F20 9.96264 Tf 1 0 0 1 313.902 556.718 Tm [<06FE>]TJ @@ -794,7 +794,7 @@ EMC EMC /Formula<> BDC EMC -/mo<> BDC +/Span<>> BDC BT /F20 9.96264 Tf 1 0 0 1 216.637 493.954 Tm [<0997>]TJ @@ -832,7 +832,7 @@ BT 1 0 0 1 258.669 493.954 Tm [<0014>]TJ ET EMC -/mo<> BDC +/Span<>> BDC BT /F20 9.96264 Tf 1 0 0 1 263.65 493.954 Tm [<0998>]TJ @@ -1167,7 +1167,7 @@ endobj << /Type /StructElem /S /mrow /NS 13 0 R /P 71 0 R /K [74 0 R 76 0 R 78 0 R 84 0 R 85 0 R] /ID (ID.0040) >> endobj 74 0 obj -<< /Type /StructElem /A 75 0 R /ActualText /S /mo /NS 13 0 R /P 73 0 R /K <> /ID (ID.0041) >> +<< /Type /StructElem /A 75 0 R /S /mo /NS 13 0 R /P 73 0 R /K <> /ID (ID.0041) >> endobj 76 0 obj << /Type /StructElem /A 77 0 R /S /mspace /NS 13 0 R /P 73 0 R /ID (ID.0042) >> @@ -1191,7 +1191,7 @@ endobj << /Type /StructElem /A 77 0 R /S /mspace /NS 13 0 R /P 73 0 R /ID (ID.0048) >> endobj 85 0 obj -<< /Type /StructElem /A 75 0 R /ActualText /S /mo /NS 13 0 R /P 73 0 R /K <> /ID (ID.0049) >> +<< /Type /StructElem /A 75 0 R /S /mo /NS 13 0 R /P 73 0 R /K <> /ID (ID.0049) >> endobj 86 0 obj << /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 71 0 R /K <> /ID (ID.0050) >> @@ -1200,7 +1200,7 @@ endobj << /Type /StructElem /S /mrow /NS 13 0 R /P 71 0 R /K [88 0 R 89 0 R 93 0 R] /ID (ID.0051) >> endobj 88 0 obj -<< /Type /StructElem /A 75 0 R /ActualText /S /mo /NS 13 0 R /P 87 0 R /K <> /ID (ID.0052) >> +<< /Type /StructElem /A 75 0 R /S /mo /NS 13 0 R /P 87 0 R /K <> /ID (ID.0052) >> endobj 89 0 obj << /Type /StructElem /A 79 0 R /S /mpadded /NS 13 0 R /P 87 0 R /K 90 0 R /ID (ID.0053) >> @@ -1320,7 +1320,7 @@ endobj << /Type /StructElem /S /mi /NS 13 0 R /P 135 0 R /K <> /ID (ID.0091) >> endobj 137 0 obj -<< /Type /StructElem /A 138 0 R /ActualText /S /mo /NS 13 0 R /P 135 0 R /K <> /ID (ID.0092) >> +<< /Type /StructElem /A 138 0 R /S /mo /NS 13 0 R /P 135 0 R /K <> /ID (ID.0092) >> endobj 139 0 obj << /Type /StructElem /S /msup /NS 13 0 R /P 127 0 R /K [140 0 R 141 0 R] /ID (ID.0093) >> @@ -1407,7 +1407,7 @@ endobj << /Type /StructElem /S /mtd /NS 13 0 R /P 199 0 R /K [171 0 R 173 0 R 174 0 R 175 0 R] /ID (ID.0120) >> endobj 171 0 obj -<< /Type /StructElem /A 172 0 R /ActualText /S /mo /NS 13 0 R /P 170 0 R /K <> /ID (ID.0121) >> +<< /Type /StructElem /A 172 0 R /S /mo /NS 13 0 R /P 170 0 R /K <> /ID (ID.0121) >> endobj 173 0 obj << /Type /StructElem /S /mn /NS 13 0 R /P 170 0 R /K <> /ID (ID.0122) >> @@ -1431,7 +1431,7 @@ endobj << /Type /StructElem /S /mn /NS 13 0 R /P 176 0 R /K <> /ID (ID.0128) >> endobj 180 0 obj -<< /Type /StructElem /A 172 0 R /ActualText /S /mo /NS 13 0 R /P 176 0 R /K <> /ID (ID.0129) >> +<< /Type /StructElem /A 172 0 R /S /mo /NS 13 0 R /P 176 0 R /K <> /ID (ID.0129) >> endobj 181 0 obj << /Type /StructElem /S /mtd /NS 13 0 R /P 199 0 R /K 182 0 R /ID (ID.0130) >> @@ -1822,27 +1822,27 @@ endobj xref 0 262 0000000002 65535 f -0000027968 00000 n +0000028118 00000 n 0000000003 00000 f 0000000004 00000 f 0000000010 00000 f -0000054820 00000 n -0000028173 00000 n -0000032141 00000 n -0000034336 00000 n -0000032961 00000 n +0000054832 00000 n +0000028323 00000 n +0000032291 00000 n +0000034486 00000 n +0000033111 00000 n 0000000012 00000 f -0000033029 00000 n +0000033179 00000 n 0000000014 00000 f -0000033099 00000 n +0000033249 00000 n 0000000020 00000 f -0000033862 00000 n -0000033180 00000 n -0000034140 00000 n -0000033969 00000 n -0000034247 00000 n -0000000000 00000 f +0000034012 00000 n +0000033330 00000 n +0000034290 00000 n +0000034119 00000 n 0000034397 00000 n +0000000000 00000 f +0000034547 00000 n 0000000020 00000 n 0000000299 00000 n 0000000486 00000 n @@ -1853,238 +1853,238 @@ xref 0000003198 00000 n 0000003385 00000 n 0000004064 00000 n -0000034536 00000 n -0000034625 00000 n -0000034714 00000 n -0000034815 00000 n -0000034952 00000 n -0000035053 00000 n +0000034686 00000 n +0000034775 00000 n +0000034864 00000 n +0000034965 00000 n +0000035102 00000 n +0000035203 00000 n 0000004251 00000 n 0000004566 00000 n -0000035339 00000 n -0000035434 00000 n -0000035557 00000 n -0000035652 00000 n -0000035775 00000 n -0000035870 00000 n -0000035993 00000 n -0000036088 00000 n -0000036211 00000 n -0000036306 00000 n -0000036429 00000 n -0000036524 00000 n -0000036647 00000 n -0000036742 00000 n -0000036866 00000 n -0000036961 00000 n -0000037085 00000 n -0000037180 00000 n -0000037304 00000 n -0000037399 00000 n -0000037523 00000 n -0000037659 00000 n -0000037771 00000 n -0000037895 00000 n +0000035489 00000 n +0000035584 00000 n +0000035707 00000 n +0000035802 00000 n +0000035925 00000 n +0000036020 00000 n +0000036143 00000 n +0000036238 00000 n +0000036361 00000 n +0000036456 00000 n +0000036579 00000 n +0000036674 00000 n +0000036797 00000 n +0000036892 00000 n +0000037016 00000 n +0000037111 00000 n +0000037235 00000 n +0000037330 00000 n +0000037454 00000 n +0000037549 00000 n +0000037673 00000 n +0000037809 00000 n +0000037921 00000 n +0000038045 00000 n 0000004766 00000 n -0000038030 00000 n -0000038154 00000 n -0000038249 00000 n -0000038344 00000 n -0000038468 00000 n -0000038595 00000 n -0000038690 00000 n +0000038180 00000 n +0000038304 00000 n +0000038399 00000 n +0000038494 00000 n +0000038618 00000 n +0000038745 00000 n +0000038840 00000 n 0000004837 00000 n -0000038813 00000 n -0000038939 00000 n +0000038963 00000 n +0000039089 00000 n 0000004891 00000 n -0000039096 00000 n +0000039223 00000 n 0000004978 00000 n -0000039195 00000 n +0000039322 00000 n 0000005033 00000 n -0000039305 00000 n -0000039419 00000 n -0000039530 00000 n -0000039641 00000 n -0000039752 00000 n -0000039851 00000 n -0000040009 00000 n -0000040144 00000 n -0000040256 00000 n -0000040414 00000 n -0000040524 00000 n -0000040631 00000 n -0000040735 00000 n -0000040839 00000 n +0000039432 00000 n +0000039546 00000 n +0000039657 00000 n +0000039768 00000 n +0000039879 00000 n +0000039978 00000 n +0000040113 00000 n +0000040248 00000 n +0000040360 00000 n +0000040495 00000 n +0000040605 00000 n +0000040712 00000 n +0000040816 00000 n +0000040920 00000 n 0000005105 00000 n -0000040938 00000 n -0000041039 00000 n +0000041019 00000 n +0000041120 00000 n 0000005159 00000 n 0000005375 00000 n -0000041291 00000 n -0000041425 00000 n -0000041550 00000 n -0000041686 00000 n -0000041795 00000 n -0000041920 00000 n +0000041372 00000 n +0000041506 00000 n +0000041631 00000 n +0000041767 00000 n +0000041876 00000 n +0000042001 00000 n 0000005575 00000 n -0000042058 00000 n -0000042184 00000 n +0000042139 00000 n +0000042265 00000 n 0000005641 00000 n -0000042322 00000 n -0000042422 00000 n -0000042555 00000 n -0000042664 00000 n -0000042790 00000 n -0000042916 00000 n -0000043054 00000 n -0000043180 00000 n -0000043306 00000 n -0000043432 00000 n -0000043541 00000 n -0000043667 00000 n -0000043793 00000 n +0000042403 00000 n +0000042503 00000 n +0000042636 00000 n +0000042745 00000 n +0000042871 00000 n +0000042997 00000 n +0000043135 00000 n +0000043261 00000 n +0000043387 00000 n +0000043513 00000 n +0000043622 00000 n +0000043748 00000 n +0000043874 00000 n 0000005713 00000 n -0000043930 00000 n -0000044033 00000 n +0000044011 00000 n +0000044114 00000 n 0000005773 00000 n 0000005978 00000 n -0000044253 00000 n -0000044389 00000 n -0000044500 00000 n +0000044334 00000 n +0000044470 00000 n +0000044581 00000 n 0000006181 00000 n -0000044638 00000 n -0000044764 00000 n -0000044875 00000 n -0000045001 00000 n -0000045087 00000 n -0000045197 00000 n -0000045323 00000 n +0000044719 00000 n +0000044845 00000 n +0000044956 00000 n +0000045082 00000 n +0000045168 00000 n +0000045278 00000 n +0000045404 00000 n 0000006267 00000 n -0000045484 00000 n -0000045593 00000 n -0000045719 00000 n +0000045542 00000 n +0000045651 00000 n +0000045777 00000 n 0000006322 00000 n -0000045857 00000 n -0000045960 00000 n +0000045915 00000 n +0000046018 00000 n 0000006382 00000 n 0000006611 00000 n -0000046263 00000 n -0000046379 00000 n -0000046505 00000 n -0000046631 00000 n -0000046757 00000 n -0000046889 00000 n -0000046975 00000 n -0000047112 00000 n -0000047238 00000 n -0000047364 00000 n -0000047490 00000 n -0000047588 00000 n -0000047697 00000 n -0000047823 00000 n -0000047932 00000 n -0000048070 00000 n -0000048196 00000 n -0000048320 00000 n -0000048406 00000 n +0000046321 00000 n +0000046437 00000 n +0000046563 00000 n +0000046689 00000 n +0000046815 00000 n +0000046947 00000 n +0000047033 00000 n +0000047170 00000 n +0000047296 00000 n +0000047422 00000 n +0000047548 00000 n +0000047646 00000 n +0000047755 00000 n +0000047881 00000 n +0000047990 00000 n +0000048128 00000 n +0000048254 00000 n +0000048378 00000 n +0000048464 00000 n 0000006814 00000 n -0000048544 00000 n -0000048682 00000 n -0000048808 00000 n -0000048935 00000 n -0000049059 00000 n +0000048602 00000 n +0000048740 00000 n +0000048866 00000 n +0000048993 00000 n +0000049117 00000 n 0000006880 00000 n -0000049220 00000 n -0000049346 00000 n -0000049484 00000 n -0000049610 00000 n -0000049734 00000 n -0000049820 00000 n -0000049957 00000 n -0000050083 00000 n -0000050244 00000 n -0000050342 00000 n -0000050428 00000 n -0000050526 00000 n -0000050612 00000 n -0000050739 00000 n -0000050837 00000 n -0000050963 00000 n -0000051061 00000 n -0000051147 00000 n -0000051245 00000 n -0000051331 00000 n -0000051429 00000 n -0000051515 00000 n -0000051642 00000 n -0000051752 00000 n +0000049255 00000 n +0000049381 00000 n +0000049519 00000 n +0000049645 00000 n +0000049769 00000 n +0000049855 00000 n +0000049992 00000 n +0000050118 00000 n +0000050256 00000 n +0000050354 00000 n +0000050440 00000 n +0000050538 00000 n +0000050624 00000 n +0000050751 00000 n +0000050849 00000 n +0000050975 00000 n +0000051073 00000 n +0000051159 00000 n +0000051257 00000 n +0000051343 00000 n +0000051441 00000 n +0000051527 00000 n +0000051654 00000 n +0000051764 00000 n 0000007004 00000 n -0000051883 00000 n -0000052007 00000 n -0000052131 00000 n -0000052255 00000 n -0000052358 00000 n -0000052545 00000 n +0000051895 00000 n +0000052019 00000 n +0000052143 00000 n +0000052267 00000 n +0000052370 00000 n +0000052557 00000 n 0000007122 00000 n 0000007293 00000 n -0000052744 00000 n -0000052949 00000 n -0000053087 00000 n +0000052756 00000 n +0000052961 00000 n +0000053099 00000 n 0000007496 00000 n -0000053225 00000 n -0000053351 00000 n -0000053489 00000 n -0000053627 00000 n -0000053765 00000 n -0000053903 00000 n -0000054029 00000 n -0000054167 00000 n -0000054293 00000 n -0000054419 00000 n -0000054557 00000 n -0000054694 00000 n +0000053237 00000 n +0000053363 00000 n +0000053501 00000 n +0000053639 00000 n +0000053777 00000 n +0000053915 00000 n +0000054041 00000 n +0000054179 00000 n +0000054305 00000 n +0000054431 00000 n +0000054569 00000 n +0000054706 00000 n 0000007572 00000 n -0000027864 00000 n -0000027725 00000 n +0000028014 00000 n +0000027875 00000 n 0000019356 00000 n -0000069914 00000 n -0000065645 00000 n -0000059321 00000 n -0000056639 00000 n -0000070274 00000 n -0000028015 00000 n -0000028052 00000 n -0000028919 00000 n -0000029831 00000 n -0000030784 00000 n -0000031746 00000 n -0000032078 00000 n -0000032720 00000 n -0000054959 00000 n -0000055668 00000 n -0000054991 00000 n -0000055891 00000 n -0000056795 00000 n -0000056997 00000 n -0000058257 00000 n -0000057070 00000 n -0000058488 00000 n -0000059484 00000 n -0000059693 00000 n -0000064151 00000 n -0000059978 00000 n -0000064381 00000 n -0000065808 00000 n -0000066017 00000 n -0000068699 00000 n -0000066203 00000 n -0000068922 00000 n -0000070071 00000 n -0000070338 00000 n -0000070384 00000 n -0000070518 00000 n +0000069926 00000 n +0000065657 00000 n +0000059333 00000 n +0000056651 00000 n +0000070286 00000 n +0000028165 00000 n +0000028202 00000 n +0000029069 00000 n +0000029981 00000 n +0000030934 00000 n +0000031896 00000 n +0000032228 00000 n +0000032870 00000 n +0000054971 00000 n +0000055680 00000 n +0000055003 00000 n +0000055903 00000 n +0000056807 00000 n +0000057009 00000 n +0000058269 00000 n +0000057082 00000 n +0000058500 00000 n +0000059496 00000 n +0000059705 00000 n +0000064163 00000 n +0000059990 00000 n +0000064393 00000 n +0000065820 00000 n +0000066029 00000 n +0000068711 00000 n +0000066215 00000 n +0000068934 00000 n +0000070083 00000 n +0000070350 00000 n +0000070396 00000 n +0000070530 00000 n trailer << /Size 262 /Root 260 0 R /Info 261 0 R /ID [ <2350CAD05F8A7AF0AA4058486855344F> <2350CAD05F8A7AF0AA4058486855344F> ] >> startxref -70651 +70663 %%EOF From 88ab616a78059ecd4f8353026f2646727da66a47 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Thu, 23 Jan 2025 18:44:57 +0100 Subject: [PATCH 18/57] move \__luamml_amsmath_finalize_table:n into socket --- luamml-patches-amsmath.sty | 9 +++++---- luamml-patches-lab-math.sty | 4 +++- luamml.dtx | 23 +++++++++++++++++++++++ 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index 0b09bc7..68f68a8 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -160,7 +160,7 @@ \cs_set:Npn \endgather { \math@cr \black@ \totwidth@ - \__luamml_amsmath_finalize_table:n {gather} + \UseExpandableTaggingSocket{math/luamml/mtable/finalize} {gather} \egroup $$ \ignorespacesafterend @@ -258,7 +258,7 @@ \cs_set:Npn \endalign { \math@cr \black@ \totwidth@ - \__luamml_amsmath_finalize_table:n {align} + \UseTaggingSocket{math/luamml/mtable/finalize} {align} \egroup \ifingather@ \restorealignstate@ @@ -334,7 +334,7 @@ \fi \hfilneg \math@cr - \__luamml_amsmath_finalize_table:n {multline} + \UseExpandableTaggingSocket {math/luamml/mtable/finalize} {multline} \egroup $$ } @@ -343,7 +343,8 @@ \hfilneg \hskip\multlinegap \math@cr - \__luamml_amsmath_finalize_table:n {multline} + \UseExpandableTaggingSocket {math/luamml/mtable/finalize} {multline} + %\__luamml_amsmath_finalize_table:n {multline} \egroup $$ } diff --git a/luamml-patches-lab-math.sty b/luamml-patches-lab-math.sty index 7776576..f329911 100644 --- a/luamml-patches-lab-math.sty +++ b/luamml-patches-lab-math.sty @@ -1,11 +1,13 @@ \ProvidesExplPackage {luamml-patches-lab-math} {2024-10-30} {0.2.0} {Feel free to add a description here} +% This definition is identical to the one in latex-lab-math. +% The redefinition and the whole patch file can be removed in 2025-06-01 \AddToHook{begindocument} { \cs_set:Npn \common@align@ending { \math@cr \black@ \totwidth@ - \__luamml_amsmath_finalize_table:n {align} + \UseExpandableTaggingSocket{math/luamml/mtable/finalize}{align} \egroup \ifingather@ \restorealignstate@ diff --git a/luamml.dtx b/luamml.dtx index 498444f..0f98744 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -527,6 +527,29 @@ % In various places luamml has to add code to kernel commands. This is done through % sockets which are predeclared in lttagging. % +% \subsubsection{amsmath alignments} +% +% This socket finalize the \texttt{mtable} in alignments like align or gather. +% It takes an argument, the environment. +% It should be used normally with \cs{UseExpandableTaggingSocket}. +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/mtable/finalize_plug_str } + { + \NewSocket{tagsupport/math/luamml/mtable/finalize}{1} + \AssignSocketPlug{tagsupport/math/luamml/mtable/finalize}{noop} + } +% \end{macrocode} +% +% \begin{macrocode} +%<*luatex> +\NewSocketPlug{tagsupport/math/luamml/mtable/finalize}{luamml} + { + \__luamml_amsmath_finalize_table:n {#1} + } +% +% \end{macrocode} +% +% % \subsubsection{Horizontal boxes} % This socket annotates an \cs{hbox} inside box commands used in math. % We test for the socket until the release 2025-06-01. From 2fda593fae2e38378d60838f1a70f29747f822e2 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Thu, 23 Jan 2025 19:50:35 +0100 Subject: [PATCH 19/57] forgot to activate the plug --- luamml.dtx | 1 + 1 file changed, 1 insertion(+) diff --git a/luamml.dtx b/luamml.dtx index 0f98744..c492c10 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -546,6 +546,7 @@ { \__luamml_amsmath_finalize_table:n {#1} } +\AssignSocketPlug{tagsupport/math/luamml/mtable/finalize}{luamml} % % \end{macrocode} % From 57e29caf9c4693e85f4fd8ace0acf8bafd9485c1 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Fri, 24 Jan 2025 14:46:28 +0100 Subject: [PATCH 20/57] suppress patch if latex-lab-math is new enough --- luamml-patches-lab-math.sty | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/luamml-patches-lab-math.sty b/luamml-patches-lab-math.sty index f329911..c74a206 100644 --- a/luamml-patches-lab-math.sty +++ b/luamml-patches-lab-math.sty @@ -1,9 +1,13 @@ \ProvidesExplPackage {luamml-patches-lab-math} {2024-10-30} {0.2.0} {Feel free to add a description here} -% This definition is identical to the one in latex-lab-math. +% This definition is identical to the one in latex-lab-math. % The redefinition and the whole patch file can be removed in 2025-06-01 -\AddToHook{begindocument} { +\IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24} + {} + { + \AddToHook{begindocument} { + \PackageInfo{luamml}{patching~\string\common@align@ending} \cs_set:Npn \common@align@ending { \math@cr \black@ \totwidth@ @@ -18,5 +22,6 @@ $$ \fi \ignorespacesafterend + } } } From cf0a3d4434080f8e8a2da5deda3e745e4c893f7f Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Fri, 24 Jan 2025 14:55:30 +0100 Subject: [PATCH 21/57] avoid warning about missing tag in gather --- luamml-patches-amsmath.sty | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index 68f68a8..b9556d1 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -134,12 +134,14 @@ \strut@ {##} } - \dim_compare:nNnF {0pt} = { + \dim_compare:nNnTF {0pt} = { \box_wd:N \c_zero_int - } { + } + { \place@tag@gather } + { + \place@tag@gather \__luamml_amsmath_set_tag: } - \place@tag@gather \tabskip \iftagsleft@ \gdisplaywidth@ \else @@ -230,7 +232,7 @@ \omit \kern -\alignsep@ \iftag@ - \setboxz@h { + \setboxz@h { \@lign \strut@ { \make@display@tag } From 7e000a0db1c04b076ba5b935801d7ca9db760015 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Tue, 28 Jan 2025 00:20:06 +0100 Subject: [PATCH 22/57] use sockets for math phantoms --- luamml-patches-kernel.sty | 52 ++++++++++++++++++----------------- luamml.dtx | 57 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 24 deletions(-) diff --git a/luamml-patches-kernel.sty b/luamml-patches-kernel.sty index 38eb28b..304cf26 100644 --- a/luamml-patches-kernel.sty +++ b/luamml-patches-kernel.sty @@ -22,30 +22,34 @@ } } -\cs_set:Npn \mathph@nt #1 #2 { - \setbox \z@ = \hbox { - $ - \m@th - #1 - {#2} - \luamml_save:nNn {mathphant} #1 {mphantom} - $ - } - \luamml_annotate:nen {1} { - nucleus = true, - core = {[0] = 'mpadded', - \ifh@\else - width = 0, - \fi - \ifv@\else - height = 0, depth = 0, - \fi - consume_label'mathphant', - } - } { - \finph@nt - } -} +\IfPackageAtLeastTF{latex-lab-testphase-text}{2025-01-27} + {} + { + \cs_set:Npn \mathph@nt #1 #2 { + \setbox \z@ = \hbox { + $ + \m@th + #1 + {#2} + \luamml_save:nNn {mathphant} #1 {mphantom} + $ + } + \luamml_annotate:nen {1} { + nucleus = true, + core = {[0] = 'mpadded', + \ifh@\else + width = 0, + \fi + \ifv@\else + height = 0, depth = 0, + \fi + consume_label'mathphant', + } + } { + \finph@nt + } + } + } \@ifpackageloaded {unicode-math} {} { \cs_new:Npn \__luamml_kernel_define_character:Nnn #1#2#3 { diff --git a/luamml.dtx b/luamml.dtx index c492c10..2494975 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -527,6 +527,25 @@ % In various places luamml has to add code to kernel commands. This is done through % sockets which are predeclared in lttagging. % +% \subsubsection{Save socket} +% This socket is a wrapper around the \cs{luamml_save:nNn} command +% It should provided until 2025-06-01 +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/save_plug_str } + { + \NewSocket{tagsupport/math/luamml/save}{1} + \AssignSocketPlug{tagsupport/math/luamml/save}{noop} + } +% \end{macrocode} +% +% \begin{macrocode} +\NewSocketPlug{tagsupport/math/luamml/save}{luamml} + { + \luamml_save:nNn #1 + } +\AssignSocketPlug{tagsupport/math/luamml/save}{luamml} +% \end{macrocode} +% % \subsubsection{amsmath alignments} % % This socket finalize the \texttt{mtable} in alignments like align or gather. @@ -610,6 +629,44 @@ \AssignSocketPlug{tagsupport/math/luamml/artifact}{default} % % \end{macrocode} +% +% \subsubsection{Math phantom socket} +% This socket is used around \cs{finph@nt}. +% It should provided until 2025-06-01 +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/finph@nt_plug_str } + { + \NewSocket{tagsupport/math/luamml/finph@nt}{2} + \NewSocketPlug{tagsupport/math/luamml/finph@nt}{default}{#2} + \AssignSocketPlug{tagsupport/math/luamml/finph@nt}{default} + } +% \end{macrocode} +% +% \begin{macrocode} +%<*luatex> +\NewSocketPlug{tagsupport/math/luamml/finph@nt}{luamml} + { + \luamml_annotate:nen {1} + { + nucleus = true, + core = + { + [0] = 'mpadded', + \ifh@\else + width = 0, + \fi + \ifv@\else + height = 0, depth = 0, + \fi + consume_label'mathphant', + } + } + { #2 } + } +\AssignSocketPlug{tagsupport/math/luamml/finph@nt}{luamml} +% +% \end{macrocode} +% % \subsection{Patching} % For some packages, we ship with patches to make them more compatible and to % demonstrate how other code can be patched to work with \texttt{luamml}. From 6b34c205426197c1aa9acbb572fdfa6fffb3369f Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Tue, 28 Jan 2025 00:23:17 +0100 Subject: [PATCH 23/57] add message --- luamml-patches-kernel.sty | 1 + 1 file changed, 1 insertion(+) diff --git a/luamml-patches-kernel.sty b/luamml-patches-kernel.sty index 304cf26..01c936e 100644 --- a/luamml-patches-kernel.sty +++ b/luamml-patches-kernel.sty @@ -25,6 +25,7 @@ \IfPackageAtLeastTF{latex-lab-testphase-text}{2025-01-27} {} { + \PackageInfo{luamml}{patching~\string\mathph@nt} \cs_set:Npn \mathph@nt #1 #2 { \setbox \z@ = \hbox { $ From 585c5c75e3ba38128f22077af5b49feaa9ebb895 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Tue, 28 Jan 2025 12:40:09 +0100 Subject: [PATCH 24/57] move smash patches into sockets --- luamml-patches-kernel.sty | 44 ++++++++++++++++++++------------------- luamml.dtx | 32 +++++++++++++++++++++++++++- 2 files changed, 54 insertions(+), 22 deletions(-) diff --git a/luamml-patches-kernel.sty b/luamml-patches-kernel.sty index 01c936e..36824a8 100644 --- a/luamml-patches-kernel.sty +++ b/luamml-patches-kernel.sty @@ -1,30 +1,32 @@ \ProvidesExplPackage {luamml-patches-kernel} {2024-10-30} {0.2.0} {Feel free to add a description here} -\cs_set:Npn \mathsm@sh #1 #2 { - \setbox \z@ \hbox { - $ - \m@th #1 { - #2 - } - \luamml_save:nNn {mathsmash} #1 {mpadded} - \luamml_pdf_write: - $ - } - \luamml_annotate:nen {2} { - nucleus = true, - core = consume_label('mathsmash', function(padded) - padded.height, padded.depth = 0, 0~ - end), - } { - {} - \finsm@sh - } -} -\IfPackageAtLeastTF{latex-lab-testphase-text}{2025-01-27} +\IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24} {} { + \PackageInfo{luamml}{patching~\string\mathsm@sh} + \cs_set:Npn \mathsm@sh #1 #2 { + \setbox \z@ \hbox { + $ + \m@th #1 { + #2 + } + \luamml_save:nNn {mathsmash} #1 {mpadded} + \luamml_pdf_write: + $ + } + \luamml_annotate:nen {2} { + nucleus = true, + core = consume_label('mathsmash', function(padded) + padded.height, padded.depth = 0, 0~ + end), + } { + {} + \finsm@sh + } + } + \PackageInfo{luamml}{patching~\string\mathph@nt} \cs_set:Npn \mathph@nt #1 #2 { \setbox \z@ = \hbox { diff --git a/luamml.dtx b/luamml.dtx index 2494975..dfaa1c6 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -666,7 +666,37 @@ \AssignSocketPlug{tagsupport/math/luamml/finph@nt}{luamml} % % \end{macrocode} -% + +% \subsubsection{Math smash socket} +% This socket is used around \cs{finsm@sh}. +% It should provided until 2025-06-01 +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/finsm@sh_plug_str } + { + \NewSocket{tagsupport/math/luamml/finsm@sh}{2} + \NewSocketPlug{tagsupport/math/luamml/finsm@sh}{default}{#2} + \AssignSocketPlug{tagsupport/math/luamml/finsm@sh}{default} + } +% \end{macrocode} +% +% \begin{macrocode} +%<*luatex> +\NewSocketPlug{tagsupport/math/luamml/finsm@sh}{luamml} + { + \luamml_annotate:nen {2} + { + nucleus = true, + core = + consume_label('mathsmash', + function(padded) + padded.height, padded.depth = 0, 0~ + end), + } + { #2 } + } +\AssignSocketPlug{tagsupport/math/luamml/finsm@sh}{luamml} +% +% \end{macrocode} % \subsection{Patching} % For some packages, we ship with patches to make them more compatible and to % demonstrate how other code can be patched to work with \texttt{luamml}. From d3eb2bffdfa825122d4edf4cdaa9af7ffcaccb3c Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Tue, 28 Jan 2025 15:36:05 +0100 Subject: [PATCH 25/57] guard amstext patch --- luamml-patches-amstext.sty | 44 +++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/luamml-patches-amstext.sty b/luamml-patches-amstext.sty index a5ea9b7..3f16a86 100644 --- a/luamml-patches-amstext.sty +++ b/luamml-patches-amstext.sty @@ -1,25 +1,29 @@ \ProvidesExplPackage {luamml-patches-amstext} {2024-10-30} {0.2.0} - {Feel free to add a description here} + {patches of amstext commands} % This is the same definition as in latex-lab-amsmath. It can go with the % 2025-06-01 release. - -\sys_if_engine_luatex:T +\IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24} + {} { - \def\text@#1{ - \tag_socket_use:nnn {math/luamml/hbox}{} - {{% - \ifcase\mathstyle - \hbox{{#1}}\or - \hbox{{#1}}\or - \hbox{{#1}}\or - \hbox{{#1}}\or - \hbox{{\let\f@size\sf@size\selectfont#1}}\or - \hbox{{\let\f@size\sf@size\selectfont#1}}\or - \hbox{{\let\f@size\ssf@size\selectfont#1}}\or - \hbox{{\let\f@size\ssf@size\selectfont#1}}\or - \ERROR - \fi - \check@mathfonts - }}} - } + \PackageInfo{luamml}{patching~\string\text@} + \sys_if_engine_luatex:T + { + \def\text@#1{ + \tag_socket_use:nnn {math/luamml/hbox}{} + {{% + \ifcase\mathstyle + \hbox{{#1}}\or + \hbox{{#1}}\or + \hbox{{#1}}\or + \hbox{{#1}}\or + \hbox{{\let\f@size\sf@size\selectfont#1}}\or + \hbox{{\let\f@size\sf@size\selectfont#1}}\or + \hbox{{\let\f@size\ssf@size\selectfont#1}}\or + \hbox{{\let\f@size\ssf@size\selectfont#1}}\or + \ERROR + \fi + \check@mathfonts + }}} + } + } From bb3d4736a611d89a4c581502384d3dc94bcb8ca6 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Tue, 28 Jan 2025 16:29:19 +0100 Subject: [PATCH 26/57] move array sockets into main file --- luamml-patches-array.sty | 45 --------------- luamml.dtx | 117 ++++++++++++++++++++++++++++++++------- 2 files changed, 98 insertions(+), 64 deletions(-) delete mode 100644 luamml-patches-array.sty diff --git a/luamml-patches-array.sty b/luamml-patches-array.sty deleted file mode 100644 index f169fd9..0000000 --- a/luamml-patches-array.sty +++ /dev/null @@ -1,45 +0,0 @@ -\ProvidesExplPackage {luamml-patches-array} {2024-10-30} {0.2.0} - {Feel free to add a description here} - -\lua_now:n { require'luamml-array' } - -\str_if_exist:cF { l__socket_tagsupport/math/luamml/array/save_plug_str } - { - \NewSocket{tagsupport/math/luamml/array/save}{0} - \NewSocket{tagsupport/math/luamml/array/finalize}{0} - \NewSocket{tagsupport/math/luamml/array/initcol}{0} - \NewSocket{tagsupport/math/luamml/array/savecol}{0} - \NewSocket{tagsupport/math/luamml/array/finalizecol}{1} - \AssignSocketPlug{tagsupport/math/luamml/array/finalizecol}{noop} - } - -\NewSocketPlug{tagsupport/math/luamml/array/save}{default} - { - \__luamml_array_save_array: - } - -\NewSocketPlug{tagsupport/math/luamml/array/finalize}{default} - { - \mode_if_math:T { \__luamml_array_finalize_array: } - } - -\NewSocketPlug{tagsupport/math/luamml/array/initcol}{default} - { - \__luamml_array_init_col: - } - -\NewSocketPlug{tagsupport/math/luamml/array/savecol}{default} - { - \luamml_save:nn {} {mtd} - } - -\NewSocketPlug{tagsupport/math/luamml/array/finalizecol}{default} - { - \__luamml_array_finalize_col:w #1~ - } - -\AssignSocketPlug{tagsupport/math/luamml/array/save}{default} -\AssignSocketPlug{tagsupport/math/luamml/array/finalize}{default} -\AssignSocketPlug{tagsupport/math/luamml/array/initcol}{default} -\AssignSocketPlug{tagsupport/math/luamml/array/savecol}{default} -\AssignSocketPlug{tagsupport/math/luamml/array/finalizecol}{default} diff --git a/luamml.dtx b/luamml.dtx index dfaa1c6..9ccb9c8 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -37,6 +37,9 @@ \usepackage{csquotes,luacolor} \MakeShortVerb{\|} \RecordChanges +\ProvideDocElement[printtype=\textit{socket},idxtype=socket,idxgroup=Sockets]{Socket}{socketdecl} +\ProvideDocElement[printtype=\textit{plug},idxtype=plug,idxgroup=Plugs]{Plug}{plugdecl} + \begin{document} \tracingmathml2 \DocInput{luamml.dtx} @@ -535,7 +538,7 @@ { \NewSocket{tagsupport/math/luamml/save}{1} \AssignSocketPlug{tagsupport/math/luamml/save}{noop} - } + } % \end{macrocode} % % \begin{macrocode} @@ -545,7 +548,84 @@ } \AssignSocketPlug{tagsupport/math/luamml/save}{luamml} % \end{macrocode} -% +% +% \subsection{socket plugs for the array package} +% +% The socket declaration can go with the 2025-06-01 release +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/array/save_plug_str } + { + \NewSocket{tagsupport/math/luamml/array/save}{0} + \NewSocket{tagsupport/math/luamml/array/finalize}{0} + \NewSocket{tagsupport/math/luamml/array/initcol}{0} + \NewSocket{tagsupport/math/luamml/array/savecol}{0} + \NewSocket{tagsupport/math/luamml/array/finalizecol}{1} + \AssignSocketPlug{tagsupport/math/luamml/array/finalizecol}{noop} + } +% \end{macrocode} +% +% The luamml support makes only sense with luatex. +% \begin{macrocode} +%<*luatex> +\AddToHook{package/array/after}{\lua_now:n { require'luamml-array' }} +% \end{macrocode} +% \begin{plugdecl}{tagsupport/math/luamml/array/save} +% The socket of this plug is used in \cs{endarray}. +% \begin{macrocode} +\NewSocketPlug{tagsupport/math/luamml/array/save}{luamml} + { + \__luamml_array_save_array: + } +% \end{macrocode} +% \end{plugdecl} +% +% \begin{plugdecl}{tagsupport/math/luamml/array/finalize} +% This socket of this plug is used in \cs{endarray}. +% \begin{macrocode} +\NewSocketPlug{tagsupport/math/luamml/array/finalize}{luamml} + { + \mode_if_math:T { \__luamml_array_finalize_array: } + } +% \end{macrocode} +% \end{plugdecl} +% +% \begin{plugdecl}{tagsupport/math/luamml/array/initcol} +% The socket of this plug is used in \cs{@classz}. +% \begin{macrocode} +\NewSocketPlug{tagsupport/math/luamml/array/initcol}{luamml} + { + \__luamml_array_init_col: + } +% \end{macrocode} +% \end{plugdecl} +% +% \begin{plugdecl}{tagsupport/math/luamml/array/savecol} +% The socket of this plug is used in \cs{@classz}. +% \begin{macrocode} +\NewSocketPlug{tagsupport/math/luamml/array/savecol}{luamml} + { + \luamml_save:nn {} {mtd} + } +% \end{macrocode} +% \end{plugdecl} +% +% \begin{plugdecl}{tagsupport/math/luamml/array/finalizecol} +% The socket of this plug is used used in \cs{@classz}. +% \begin{macrocode} +\NewSocketPlug{tagsupport/math/luamml/array/finalizecol}{luamml} + { + \__luamml_array_finalize_col:w #1~ + } +% \end{macrocode} +% \end{plugdecl} +% \begin{macrocode} +\AssignSocketPlug{tagsupport/math/luamml/array/save}{luamml} +\AssignSocketPlug{tagsupport/math/luamml/array/finalize}{luamml} +\AssignSocketPlug{tagsupport/math/luamml/array/initcol}{luamml} +\AssignSocketPlug{tagsupport/math/luamml/array/savecol}{luamml} +\AssignSocketPlug{tagsupport/math/luamml/array/finalizecol}{luamml} +% +% \end{macrocode} % \subsubsection{amsmath alignments} % % This socket finalize the \texttt{mtable} in alignments like align or gather. @@ -619,19 +699,19 @@ \NewSocket{tagsupport/math/luamml/artifact}{0} } %<*luatex> -\NewSocketPlug{tagsupport/math/luamml/artifact}{default} +\NewSocketPlug{tagsupport/math/luamml/artifact}{luamml} { \int_if_odd:nT { \int_div_truncate:nn { \l__luamml_flag_int } { 8 } } { \tag_mc_begin:n{artifact} } } -\AssignSocketPlug{tagsupport/math/luamml/artifact}{default} +\AssignSocketPlug{tagsupport/math/luamml/artifact}{luamml} % % \end{macrocode} % % \subsubsection{Math phantom socket} -% This socket is used around \cs{finph@nt}. +% This socket is used around \cs{finph@nt}. % It should provided until 2025-06-01 % \begin{macrocode} \str_if_exist:cF { l__socket_tagsupport/math/luamml/finph@nt_plug_str } @@ -639,17 +719,17 @@ \NewSocket{tagsupport/math/luamml/finph@nt}{2} \NewSocketPlug{tagsupport/math/luamml/finph@nt}{default}{#2} \AssignSocketPlug{tagsupport/math/luamml/finph@nt}{default} - } + } % \end{macrocode} % % \begin{macrocode} %<*luatex> \NewSocketPlug{tagsupport/math/luamml/finph@nt}{luamml} { - \luamml_annotate:nen {1} + \luamml_annotate:nen {1} { nucleus = true, - core = + core = { [0] = 'mpadded', \ifh@\else @@ -661,14 +741,14 @@ consume_label'mathphant', } } - { #2 } + { #2 } } \AssignSocketPlug{tagsupport/math/luamml/finph@nt}{luamml} % -% \end{macrocode} +% \end{macrocode} % \subsubsection{Math smash socket} -% This socket is used around \cs{finsm@sh}. +% This socket is used around \cs{finsm@sh}. % It should provided until 2025-06-01 % \begin{macrocode} \str_if_exist:cF { l__socket_tagsupport/math/luamml/finsm@sh_plug_str } @@ -676,27 +756,27 @@ \NewSocket{tagsupport/math/luamml/finsm@sh}{2} \NewSocketPlug{tagsupport/math/luamml/finsm@sh}{default}{#2} \AssignSocketPlug{tagsupport/math/luamml/finsm@sh}{default} - } + } % \end{macrocode} % % \begin{macrocode} %<*luatex> \NewSocketPlug{tagsupport/math/luamml/finsm@sh}{luamml} { - \luamml_annotate:nen {2} + \luamml_annotate:nen {2} { nucleus = true, - core = - consume_label('mathsmash', + core = + consume_label('mathsmash', function(padded) padded.height, padded.depth = 0, 0~ end), } - { #2 } + { #2 } } \AssignSocketPlug{tagsupport/math/luamml/finsm@sh}{luamml} % -% \end{macrocode} +% \end{macrocode} % \subsection{Patching} % For some packages, we ship with patches to make them more compatible and to % demonstrate how other code can be patched to work with \texttt{luamml}. @@ -722,7 +802,7 @@ % \end{macrocode} % \end{macro} % -% We currently provide minimal patching for the kernel, \pkg{amsmath} and \pkg{array}. +% We currently provide minimal patching for the kernel, \pkg{amsmath}. % Currently only the kernel code supports pdf\TeX, but it's planned to extend this. % \begin{macrocode} \RequirePackage { luamml-patches-kernel } @@ -730,7 +810,6 @@ \__luamml_patch_package:n {amstext} \__luamml_patch_package:n {amsmath} \__luamml_patch_package:n {mathtools} -\__luamml_patch_package:n {array} % % \end{macrocode} From fb80000eb8f47b4a5ed9e8c80cfbe12603fde3d5 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Wed, 29 Jan 2025 12:41:42 +0100 Subject: [PATCH 27/57] use generic socket for saving --- luamml.dtx | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/luamml.dtx b/luamml.dtx index 9ccb9c8..a8161aa 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -530,35 +530,40 @@ % In various places luamml has to add code to kernel commands. This is done through % sockets which are predeclared in lttagging. % -% \subsubsection{Save socket} -% This socket is a wrapper around the \cs{luamml_save:nNn} command -% It should provided until 2025-06-01 +% \subsubsection{Save sockets} +% These sockets are wrappers around the \cs{luamml_save:...} commands +% They should be provided until 2025-06-01 % \begin{macrocode} -\str_if_exist:cF { l__socket_tagsupport/math/luamml/save_plug_str } +\str_if_exist:cF { l__socket_tagsupport/math/luamml/save/nn_plug_str } { - \NewSocket{tagsupport/math/luamml/save}{1} - \AssignSocketPlug{tagsupport/math/luamml/save}{noop} + \NewSocket{tagsupport/math/luamml/save/nn}{1} + \AssignSocketPlug{tagsupport/math/luamml/save/nn}{noop} + \NewSocket{tagsupport/math/luamml/save/nNn}{1} + \AssignSocketPlug{tagsupport/math/luamml/save/nNn}{noop} } % \end{macrocode} % % \begin{macrocode} -\NewSocketPlug{tagsupport/math/luamml/save}{luamml} +\NewSocketPlug{tagsupport/math/luamml/save/nNn}{luamml} { \luamml_save:nNn #1 } -\AssignSocketPlug{tagsupport/math/luamml/save}{luamml} +\NewSocketPlug{tagsupport/math/luamml/save/nn}{luamml} + { + \luamml_save:nn #1 + } +\AssignSocketPlug{tagsupport/math/luamml/save/nn}{luamml} % \end{macrocode} % % \subsection{socket plugs for the array package} % % The socket declaration can go with the 2025-06-01 release % \begin{macrocode} -\str_if_exist:cF { l__socket_tagsupport/math/luamml/array/save_plug_str } +\str_if_exist:cF { l__socket_tagsupport/math/luamml/array/finalize_plug_str } { \NewSocket{tagsupport/math/luamml/array/save}{0} \NewSocket{tagsupport/math/luamml/array/finalize}{0} \NewSocket{tagsupport/math/luamml/array/initcol}{0} - \NewSocket{tagsupport/math/luamml/array/savecol}{0} \NewSocket{tagsupport/math/luamml/array/finalizecol}{1} \AssignSocketPlug{tagsupport/math/luamml/array/finalizecol}{noop} } @@ -599,15 +604,6 @@ % \end{macrocode} % \end{plugdecl} % -% \begin{plugdecl}{tagsupport/math/luamml/array/savecol} -% The socket of this plug is used in \cs{@classz}. -% \begin{macrocode} -\NewSocketPlug{tagsupport/math/luamml/array/savecol}{luamml} - { - \luamml_save:nn {} {mtd} - } -% \end{macrocode} -% \end{plugdecl} % % \begin{plugdecl}{tagsupport/math/luamml/array/finalizecol} % The socket of this plug is used used in \cs{@classz}. From b970df3c9e8bc89e653b6f2c654f8aae9b12d1f5 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Wed, 29 Jan 2025 14:35:26 +0100 Subject: [PATCH 28/57] assign socket --- luamml.dtx | 1 + 1 file changed, 1 insertion(+) diff --git a/luamml.dtx b/luamml.dtx index a8161aa..1b75b60 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -548,6 +548,7 @@ { \luamml_save:nNn #1 } +\AssignSocketPlug{tagsupport/math/luamml/save/nNn}{luamml} \NewSocketPlug{tagsupport/math/luamml/save/nn}{luamml} { \luamml_save:nn #1 From 06986af907c1d96f4abf54d66c1337227aae9e50 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Wed, 29 Jan 2025 19:49:16 +0100 Subject: [PATCH 29/57] remove stray assigment --- luamml.dtx | 1 - 1 file changed, 1 deletion(-) diff --git a/luamml.dtx b/luamml.dtx index 1b75b60..e5de0f5 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -619,7 +619,6 @@ \AssignSocketPlug{tagsupport/math/luamml/array/save}{luamml} \AssignSocketPlug{tagsupport/math/luamml/array/finalize}{luamml} \AssignSocketPlug{tagsupport/math/luamml/array/initcol}{luamml} -\AssignSocketPlug{tagsupport/math/luamml/array/savecol}{luamml} \AssignSocketPlug{tagsupport/math/luamml/array/finalizecol}{luamml} % % \end{macrocode} From a727a3a30983deb2e5ba8b5dce06e786c170dbe5 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Fri, 31 Jan 2025 01:01:39 +0100 Subject: [PATCH 30/57] more sockets --- luamml-patches-amsmath.sty | 39 ++++++++++------------------------- luamml.dtx | 42 +++++++++++++++++++++++++++++++++++++- 2 files changed, 52 insertions(+), 29 deletions(-) diff --git a/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index b9556d1..04c97f5 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -15,11 +15,7 @@ \nonmatherr@ { \begin { \@currenvir } } \fi \savecolumn@ % Assumption: called inside a group - \luamml_annotate:en { - core = false - } { - \alignedspace@left - } + \UseTaggingSocket{ math/luamml/annotate/false } {}{ \alignedspace@left } \ams@start@box {#1} \bgroup \maxfields@ #2 \relax \ifnum \maxfields@ > \m@ne @@ -44,7 +40,7 @@ {##} \luamml_save:nNn {} \displaystyle {mtd} $ - \__luamml_amsmath_add_last_to_row: + \UseTaggingSocket{math/luamml/mtable/finalizecol} \tabskip \z@skip & \column@plus $ @@ -56,7 +52,7 @@ } \luamml_save:nNn {} \displaystyle {mtd} $ - \__luamml_amsmath_add_last_to_row: + \UseTaggingSocket{math/luamml/mtable/finalizecol} \hfil \tabskip\alignsep@ \crcr @@ -68,11 +64,7 @@ \else \nonmatherr@ { \begin {gathered} } \fi - \luamml_annotate:en { - core = false - } { - \alignedspace@left - } + \UseTaggingSocket{ math/luamml/annotate/false } {}{ \alignedspace@left } \ams@start@box {#1} \bgroup \Let@ \chardef \dspbrk@context \@ne @@ -87,7 +79,7 @@ ## \luamml_save:nNn {} \displaystyle {mtd} $ - \__luamml_amsmath_add_last_to_row: + \UseTaggingSocket{math/luamml/mtable/finalizecol} \hfil \crcr \ams@return@opt@arg @@ -302,14 +294,14 @@ \cs_set:Npn \endmultline@math { \luamml_save:nNn {} \displaystyle {mtd} $ - \__luamml_amsmath_add_last_to_row: + \UseTaggingSocket{math/luamml/mtable/finalizecol} } \cs_set:Npn \rendmultline@ { \iftag@ \luamml_save:nNn {} \displaystyle {mtd} $ - \__luamml_amsmath_add_last_to_row: + \UseTaggingSocket{math/luamml/mtable/finalizecol} \let \endmultline@math \relax \ifshifttag@ \hskip \multlinegap @@ -354,12 +346,7 @@ % Finally some slightly different stuff. % While {matrix} is covered by {array}, we still have {smallmatrix}: \renewenvironment {smallmatrix} { - \luamml_annotate:en { - core = false - } { - \null - \, - } + \UseTaggingSocket{ math/luamml/annotate/false } {} { \null\, } \vcenter \bgroup \Let@ \restore@math@cr @@ -375,7 +362,7 @@ ## \luamml_save:nn {} {mtd} % No \scriptsize here since we want to add the mstyle nodes $ - \__luamml_amsmath_add_last_to_row: + \UseTaggingSocket{math/luamml/mtable/finalizecol} \hfil && \thickspace @@ -386,7 +373,7 @@ ## \luamml_save:nn {} {mtd} % No \scriptsize here since we want to add the mstyle nodes $ - \__luamml_amsmath_add_last_to_row: + \UseTaggingSocket{math/luamml/mtable/finalizecol} \hfil \crcr }{% @@ -395,11 +382,7 @@ \egroup \egroup \__luamml_amsmath_finalize_inner_table: - \luamml_annotate:en { - core = false - } { - \, - } + \UseTaggingSocket{ math/luamml/annotate/false } {}{ \, } } % {cases} is defined by the kernel, but we patch the overwritten version by amsmath. diff --git a/luamml.dtx b/luamml.dtx index e5de0f5..5dde284 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -556,7 +556,27 @@ \AssignSocketPlug{tagsupport/math/luamml/save/nn}{luamml} % \end{macrocode} % -% \subsection{socket plugs for the array package} +% \subsubsection{sockets to annotate content} +% +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/annotate/false_plug_str } + { + \NewSocket{tagsupport/math/luamml/annotate/false}{2} + \NewSocketPlug{tagsupport/math/luamml/annotate/false}{default}{#2} + \AssignSocketPlug{tagsupport/math/luamml/annotate/false}{default} + } +%<*luatex> +\NewSocketPlug{tagsupport/math/luamml/annotate/false}{luamml} + { + \luamml_annotate:en { core = false } + { + #2 + } + } +\AssignSocketPlug{tagsupport/math/luamml/annotate/false}{luamml} +% +% \end{macrocode} +% \subsubsection{socket plugs for the array package} % % The socket declaration can go with the 2025-06-01 release % \begin{macrocode} @@ -624,6 +644,26 @@ % \end{macrocode} % \subsubsection{amsmath alignments} % +% This socket is used at the end of alignment cells and adds the content to +% the current row. +% +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/mtable/finalizecol_plug_str } + { + \NewSocket{tagsupport/math/luamml/mtable/finalizecol}{0} + } +% \end{macrocode} +% \begin{macrocode} +%<*luatex> +\NewSocketPlug{tagsupport/math/luamml/mtable/finalizecol}{luamml} + { + \__luamml_amsmath_add_last_to_row: + } +\AssignSocketPlug{tagsupport/math/luamml/mtable/finalizecol}{luamml} + +% +% \end{macrocode} +% % This socket finalize the \texttt{mtable} in alignments like align or gather. % It takes an argument, the environment. % It should be used normally with \cs{UseExpandableTaggingSocket}. From c5ee5114fb3c778ee5c02065e5da171690b0813f Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Fri, 31 Jan 2025 16:50:49 +0100 Subject: [PATCH 31/57] exchange commands by sockets --- luamml-patches-amsmath.sty | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index 04c97f5..9a8ccee 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -38,7 +38,7 @@ \m@th \displaystyle {##} - \luamml_save:nNn {} \displaystyle {mtd} + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} $ \UseTaggingSocket{math/luamml/mtable/finalizecol} \tabskip \z@skip @@ -50,7 +50,7 @@ {} ## } - \luamml_save:nNn {} \displaystyle {mtd} + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} $ \UseTaggingSocket{math/luamml/mtable/finalizecol} \hfil @@ -77,7 +77,7 @@ \m@th \displaystyle ## - \luamml_save:nNn {} \displaystyle {mtd} + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} $ \UseTaggingSocket{math/luamml/mtable/finalizecol} \hfil @@ -114,7 +114,7 @@ \m@th \displaystyle {##} - \luamml_save:nNn {} \displaystyle {mtd} + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} $ } \__luamml_amsmath_add_box_to_row: @@ -174,7 +174,7 @@ \ifmeasuring@ \luamml_ignore: \else - \luamml_save:nNn {} \displaystyle {mtd} + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} \fi $ } @@ -198,7 +198,7 @@ \ifmeasuring@ \luamml_ignore: \else - \luamml_save:nNn {} \displaystyle {mtd} + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} \fi $ } @@ -360,7 +360,8 @@ \m@th \scriptstyle ## - \luamml_save:nn {} {mtd} % No \scriptsize here since we want to add the mstyle nodes + % No \scriptsize here since we want to add the mstyle nodes + \UseTaggingSocket{math/luamml/save/nn}{ {} {mtd}} $ \UseTaggingSocket{math/luamml/mtable/finalizecol} \hfil @@ -371,7 +372,8 @@ \m@th \scriptstyle ## - \luamml_save:nn {} {mtd} % No \scriptsize here since we want to add the mstyle nodes + % No \scriptsize here since we want to add the mstyle nodes + \UseTaggingSocket{math/luamml/save/nn}{ {} {mtd}} $ \UseTaggingSocket{math/luamml/mtable/finalizecol} \hfil From e1741b13d58aee0c386a19017e6d84663db800e5 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Fri, 31 Jan 2025 19:48:05 +0100 Subject: [PATCH 32/57] more sockets, start to move amsmath env --- luamml-patches-amsmath.sty | 70 ++++++++++++++++++++++---------------- luamml.dtx | 28 +++++++++++++-- 2 files changed, 65 insertions(+), 33 deletions(-) diff --git a/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index 9a8ccee..5adedcd 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -40,7 +40,7 @@ {##} \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} $ - \UseTaggingSocket{math/luamml/mtable/finalizecol} + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} \tabskip \z@skip & \column@plus $ @@ -52,7 +52,7 @@ } \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} $ - \UseTaggingSocket{math/luamml/mtable/finalizecol} + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} \hfil \tabskip\alignsep@ \crcr @@ -79,7 +79,7 @@ ## \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} $ - \UseTaggingSocket{math/luamml/mtable/finalizecol} + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} \hfil \crcr \ams@return@opt@arg @@ -117,7 +117,7 @@ \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} $ } - \__luamml_amsmath_add_box_to_row: + \UseTaggingSocket{math/luamml/mtable/finalizecol}{box} \calc@shift@gather \set@gather@field \tabskip\@centering @@ -132,7 +132,7 @@ { \place@tag@gather } { \place@tag@gather - \__luamml_amsmath_set_tag: + \UseTaggingSocket{math/luamml/mtable/tag/set} } \tabskip \iftagsleft@ \gdisplaywidth@ @@ -150,15 +150,18 @@ { \luamml_ignore: } { \__luamml_amsmath_original_gmeasure:n {#1} } } - -\cs_set:Npn \endgather { - \math@cr - \black@ \totwidth@ - \UseExpandableTaggingSocket{math/luamml/mtable/finalize} {gather} - \egroup - $$ - \ignorespacesafterend -} +\IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24} + {} + { \PackageInfo{luamml}{patching~\string\endgather} + \cs_set:Npn \endgather { + \math@cr + \black@ \totwidth@ + \UseExpandableTaggingSocket{math/luamml/mtable/finalize} {gather} + \egroup + $$ + \ignorespacesafterend + } + } % align and friends \cs_set:Npn \align@preamble { @@ -181,7 +184,7 @@ \ifmeasuring@ \savefieldlength@ \else - \__luamml_amsmath_add_box_to_row: + \UseTaggingSocket{math/luamml/mtable/finalizecol}{box} \fi \set@field \tabskip\z@skip @@ -205,7 +208,7 @@ \ifmeasuring@ \savefieldlength@ \else - \__luamml_amsmath_add_box_to_row: + \UseTaggingSocket{math/luamml/mtable/finalizecol}{box} \fi \set@field \hfil @@ -230,7 +233,7 @@ { \make@display@tag } } \place@tag - \__luamml_amsmath_set_tag: + \UseTaggingSocket{math/luamml/mtable/tag/set} \fi \ifst@rred \else @@ -240,14 +243,21 @@ \cr } -\cs_set:Npn \maketag@@@ #1 { - \hbox { - \m@th - \normalfont - #1 - \__luamml_amsmath_save_tag: - } -} +% This was lost anyway, as the latex-lab code overwrites +% the definition again. +\IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24} + {} + { \PackageInfo{luamml}{patching~\string\maketag@@@} + \cs_set:Npn \maketag@@@ #1 + { + \hbox { + \m@th + \normalfont + #1 + \UseTaggingSocket{math/luamml/mtable/tag/save} + } + } + } \cs_set:Npn \endalign { \math@cr @@ -294,14 +304,14 @@ \cs_set:Npn \endmultline@math { \luamml_save:nNn {} \displaystyle {mtd} $ - \UseTaggingSocket{math/luamml/mtable/finalizecol} + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} } \cs_set:Npn \rendmultline@ { \iftag@ \luamml_save:nNn {} \displaystyle {mtd} $ - \UseTaggingSocket{math/luamml/mtable/finalizecol} + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} \let \endmultline@math \relax \ifshifttag@ \hskip \multlinegap @@ -322,7 +332,7 @@ \hskip \multlinetaggap \make@display@tag \fi - \__luamml_amsmath_set_tag: + \UseTaggingSocket{math/luamml/mtable/tag/set} \else \hskip \multlinegap \fi @@ -363,7 +373,7 @@ % No \scriptsize here since we want to add the mstyle nodes \UseTaggingSocket{math/luamml/save/nn}{ {} {mtd}} $ - \UseTaggingSocket{math/luamml/mtable/finalizecol} + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} \hfil && \thickspace @@ -375,7 +385,7 @@ % No \scriptsize here since we want to add the mstyle nodes \UseTaggingSocket{math/luamml/save/nn}{ {} {mtd}} $ - \UseTaggingSocket{math/luamml/mtable/finalizecol} + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} \hfil \crcr }{% diff --git a/luamml.dtx b/luamml.dtx index 5dde284..b0ae894 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -650,14 +650,14 @@ % \begin{macrocode} \str_if_exist:cF { l__socket_tagsupport/math/luamml/mtable/finalizecol_plug_str } { - \NewSocket{tagsupport/math/luamml/mtable/finalizecol}{0} + \NewSocket{tagsupport/math/luamml/mtable/finalizecol}{1} } % \end{macrocode} % \begin{macrocode} %<*luatex> \NewSocketPlug{tagsupport/math/luamml/mtable/finalizecol}{luamml} { - \__luamml_amsmath_add_last_to_row: + \use:c{__luamml_amsmath_add_#1_to_row:} } \AssignSocketPlug{tagsupport/math/luamml/mtable/finalizecol}{luamml} @@ -685,7 +685,29 @@ % % \end{macrocode} % -% +% These sockets save and set tags and labels in alignments. +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/mtable/tag/save_plug_str } + { + \NewSocket{tagsupport/math/luamml/mtable/tag/save}{0} + \NewSocket{tagsupport/math/luamml/mtable/tag/set}{0} + } +% \end{macrocode} +% \begin{macrocode} +%<*luatex> +\NewSocketPlug{tagsupport/math/luamml/mtable/tag/save}{luamml} + { + \__luamml_amsmath_save_tag: + } +\AssignSocketPlug{tagsupport/math/luamml/mtable/tag/save}{luamml} +\NewSocketPlug{tagsupport/math/luamml/mtable/tag/set}{luamml} + { + \__luamml_amsmath_set_tag: + } +\AssignSocketPlug{tagsupport/math/luamml/mtable/tag/set}{luamml} + +% +% \end{macrocode} % \subsubsection{Horizontal boxes} % This socket annotates an \cs{hbox} inside box commands used in math. % We test for the socket until the release 2025-06-01. From bdd3cd74800ac0b070150230557bea86fbaf7ad1 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Sat, 1 Feb 2025 01:15:22 +0100 Subject: [PATCH 33/57] moving gathered --- luamml-patches-amsmath.sty | 88 ++++++++++++++++++++------------------ 1 file changed, 46 insertions(+), 42 deletions(-) diff --git a/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index 5adedcd..e4e5a6d 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -58,32 +58,36 @@ \crcr \ams@return@opt@arg } - -\renewcommand \gathered [1] [c] { - \RIfM@ - \else - \nonmatherr@ { \begin {gathered} } - \fi - \UseTaggingSocket{ math/luamml/annotate/false } {}{ \alignedspace@left } - \ams@start@box {#1} \bgroup - \Let@ - \chardef \dspbrk@context \@ne - \restore@math@cr - \spread@equation - \ialign \bgroup - \hfil - \strut@ - $ - \m@th - \displaystyle - ## - \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} - $ - \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} - \hfil - \crcr - \ams@return@opt@arg -} +\IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24} + {} + { + \PackageInfo{luamml}{patching~gathered} + \renewcommand \gathered [1] [c] { + \RIfM@ + \else + \nonmatherr@ { \begin {gathered} } + \fi + \UseTaggingSocket{ math/luamml/annotate/false } {}{ \alignedspace@left } + \ams@start@box {#1} \bgroup + \Let@ + \chardef \dspbrk@context \@ne + \restore@math@cr + \spread@equation + \ialign \bgroup + \hfil + \strut@ + $ + \m@th + \displaystyle + ## + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \hfil + \crcr + \ams@return@opt@arg + } + } \cs_set:Npn \endaligned { \crcr @@ -257,22 +261,22 @@ \UseTaggingSocket{math/luamml/mtable/tag/save} } } - } - -\cs_set:Npn \endalign { - \math@cr - \black@ \totwidth@ - \UseTaggingSocket{math/luamml/mtable/finalize} {align} - \egroup - \ifingather@ - \restorealignstate@ - \egroup - \nonumber - \ifnum0=`{\fi\iffalse}\fi - \else - $$ - \fi - \ignorespacesafterend +% this handled in latex-lab through \common@align@ending + \cs_set:Npn \endalign { + \math@cr + \black@ \totwidth@ + \UseTaggingSocket{math/luamml/mtable/finalize} {align} + \egroup + \ifingather@ + \restorealignstate@ + \egroup + \nonumber + \ifnum0=`{\fi\iffalse}\fi + \else + $$ + \fi + \ignorespacesafterend + } } % For a more interesting one, let's consider multline: From ece360295acd59aa6bf218ad3a4224d50d16fad9 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Sat, 1 Feb 2025 23:57:08 +0100 Subject: [PATCH 34/57] inner table sockets --- luamml-patches-amsmath.sty | 8 ++++---- luamml.dtx | 30 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index e4e5a6d..ea4c8a4 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -91,11 +91,11 @@ \cs_set:Npn \endaligned { \crcr - \__luamml_amsmath_save_inner_table:n \@currenvir + \UseExpandableTaggingSocket{math/luamml/mtable/innertable/save} \egroup \restorecolumn@ \egroup - \__luamml_amsmath_finalize_inner_table: + \UseTaggingSocket{math/luamml/mtable/innertable/finalize} } % gather @@ -394,10 +394,10 @@ \crcr }{% \crcr - \__luamml_amsmath_save_smallmatrix: + \UseExpandableTaggingSocket{math/luamml/mtable/smallmatrix/save} \egroup \egroup - \__luamml_amsmath_finalize_inner_table: + \UseTaggingSocket{math/luamml/mtable/innertable/finalize} \UseTaggingSocket{ math/luamml/annotate/false } {}{ \, } } diff --git a/luamml.dtx b/luamml.dtx index b0ae894..71f17d1 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -663,6 +663,36 @@ % % \end{macrocode} +% +% These sockets save an inner table +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/mtable/innertable/save_plug_str } + { + \NewSocket{tagsupport/math/luamml/mtable/innertable/save}{0} + \NewSocket{tagsupport/math/luamml/mtable/smallmatrix/save}{0} + \NewSocket{tagsupport/math/luamml/mtable/innertable/finalize}{0} + } +% \end{macrocode} +% \begin{macrocode} +%<*luatex> +\NewSocketPlug{tagsupport/math/luamml/mtable/innertable/save}{luamml} + { + \__luamml_amsmath_save_inner_table:n \@currenvir + } +\AssignSocketPlug{tagsupport/math/luamml/mtable/innertable/save}{luamml} +\NewSocketPlug{tagsupport/math/luamml/mtable/smallmatrix/save}{luamml} + { + \__luamml_amsmath_save_smallmatrix: + } +\AssignSocketPlug{tagsupport/math/luamml/mtable/smallmatrix/save}{luamml} +\NewSocketPlug{tagsupport/math/luamml/mtable/innertable/finalize}{luamml} + { + \__luamml_amsmath_finalize_inner_table: + } +\AssignSocketPlug{tagsupport/math/luamml/mtable/innertable/finalize}{luamml} +% +% \end{macrocode} + % % This socket finalize the \texttt{mtable} in alignments like align or gather. % It takes an argument, the environment. From cfeb4083325145b513afb15342d5c460ffd83083 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Sun, 2 Feb 2025 00:49:24 +0100 Subject: [PATCH 35/57] move aligned commands to latex-lab --- luamml-patches-amsmath.sty | 122 ++++++++++++++++++------------------- 1 file changed, 61 insertions(+), 61 deletions(-) diff --git a/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index ea4c8a4..8443d64 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -7,60 +7,60 @@ % But they are almost identical to the original and only % add luamml commands in appropriate places, so they would % mostly disappear if there were enough hooks in amsmath. - -% aligned and friends -\cs_set:Npn \start@aligned #1#2 { - \RIfM@ - \else - \nonmatherr@ { \begin { \@currenvir } } - \fi - \savecolumn@ % Assumption: called inside a group - \UseTaggingSocket{ math/luamml/annotate/false } {}{ \alignedspace@left } - \ams@start@box {#1} \bgroup - \maxfields@ #2 \relax - \ifnum \maxfields@ > \m@ne - \multiply \maxfields@ \tw@ - \let \math@cr@@@ \math@cr@@@alignedat - \alignsep@ \z@skip - \else - \let \math@cr@@@ \math@cr@@@aligned - \alignsep@ \minalignsep - \fi - \Let@ \chardef \dspbrk@context \@ne - \default@tag - \spread@equation % no-op if already called - \global \column@ \z@ - \ialign \bgroup - & \column@plus - \hfil - \strut@ - $ - \m@th - \displaystyle - {##} - \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} - $ - \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} - \tabskip \z@skip - & \column@plus - $ - \m@th - \displaystyle - { - {} - ## - } - \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} - $ - \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} - \hfil - \tabskip\alignsep@ - \crcr - \ams@return@opt@arg -} \IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24} {} { + \PackageInfo{luamml}{patching~\string\start@aligned} + % aligned and friends + \cs_set:Npn \start@aligned #1#2 { + \RIfM@ + \else + \nonmatherr@ { \begin { \@currenvir } } + \fi + \savecolumn@ % Assumption: called inside a group + \UseTaggingSocket{ math/luamml/annotate/false } {}{ \alignedspace@left } + \ams@start@box {#1} \bgroup + \maxfields@ #2 \relax + \ifnum \maxfields@ > \m@ne + \multiply \maxfields@ \tw@ + \let \math@cr@@@ \math@cr@@@alignedat + \alignsep@ \z@skip + \else + \let \math@cr@@@ \math@cr@@@aligned + \alignsep@ \minalignsep + \fi + \Let@ \chardef \dspbrk@context \@ne + \default@tag + \spread@equation % no-op if already called + \global \column@ \z@ + \ialign \bgroup + & \column@plus + \hfil + \strut@ + $ + \m@th + \displaystyle + {##} + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \tabskip \z@skip + & \column@plus + $ + \m@th + \displaystyle + { + {} + ## + } + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \hfil + \tabskip\alignsep@ + \crcr + \ams@return@opt@arg + } \PackageInfo{luamml}{patching~gathered} \renewcommand \gathered [1] [c] { \RIfM@ @@ -87,16 +87,16 @@ \crcr \ams@return@opt@arg } - } - -\cs_set:Npn \endaligned { - \crcr - \UseExpandableTaggingSocket{math/luamml/mtable/innertable/save} - \egroup - \restorecolumn@ - \egroup - \UseTaggingSocket{math/luamml/mtable/innertable/finalize} -} + \PackageInfo{luamml}{patching~\string\endaligned} + \cs_set:Npn \endaligned { + \crcr + \UseExpandableTaggingSocket{math/luamml/mtable/innertable/save} + \egroup + \restorecolumn@ + \egroup + \UseTaggingSocket{math/luamml/mtable/innertable/finalize} + } + } % gather \cs_set:Npn \gather@ #1 { From 3d4d7ecd22cd774d6cabf05158746eae60d6d0eb Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Sun, 2 Feb 2025 01:27:50 +0100 Subject: [PATCH 36/57] move smallmatrix patch --- luamml-patches-amsmath.sty | 88 ++++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 41 deletions(-) diff --git a/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index 8443d64..1bb3d91 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -359,47 +359,53 @@ % Finally some slightly different stuff. % While {matrix} is covered by {array}, we still have {smallmatrix}: -\renewenvironment {smallmatrix} { - \UseTaggingSocket{ math/luamml/annotate/false } {} { \null\, } - \vcenter \bgroup - \Let@ - \restore@math@cr - \default@tag - \baselineskip 6 \ex@ - \lineskip 1.5 \ex@ - \lineskiplimit \lineskip - \ialign \bgroup - \hfil - $ - \m@th - \scriptstyle - ## - % No \scriptsize here since we want to add the mstyle nodes - \UseTaggingSocket{math/luamml/save/nn}{ {} {mtd}} - $ - \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} - \hfil - && - \thickspace - \hfil - $ - \m@th - \scriptstyle - ## - % No \scriptsize here since we want to add the mstyle nodes - \UseTaggingSocket{math/luamml/save/nn}{ {} {mtd}} - $ - \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} - \hfil - \crcr -}{% - \crcr - \UseExpandableTaggingSocket{math/luamml/mtable/smallmatrix/save} - \egroup - \egroup - \UseTaggingSocket{math/luamml/mtable/innertable/finalize} - \UseTaggingSocket{ math/luamml/annotate/false } {}{ \, } -} + +\IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24} + {} + { \PackageInfo{luamml}{patching~smallmatrix} + + \renewenvironment {smallmatrix} { + \UseTaggingSocket{ math/luamml/annotate/false } {} { \null\, } + \vcenter \bgroup + \Let@ + \restore@math@cr + \default@tag + \baselineskip 6 \ex@ + \lineskip 1.5 \ex@ + \lineskiplimit \lineskip + \ialign \bgroup + \hfil + $ + \m@th + \scriptstyle + ## + % No \scriptsize here since we want to add the mstyle nodes + \UseTaggingSocket{math/luamml/save/nn}{ {} {mtd}} + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \hfil + && + \thickspace + \hfil + $ + \m@th + \scriptstyle + ## + % No \scriptsize here since we want to add the mstyle nodes + \UseTaggingSocket{math/luamml/save/nn}{ {} {mtd}} + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \hfil + \crcr + }{% + \crcr + \UseExpandableTaggingSocket{math/luamml/mtable/smallmatrix/save} + \egroup + \egroup + \UseTaggingSocket{math/luamml/mtable/innertable/finalize} + \UseTaggingSocket{ math/luamml/annotate/false } {}{ \, } + } + } % {cases} is defined by the kernel, but we patch the overwritten version by amsmath. \cs_set:Npn \env@cases { From 5c8cf1b013bffa2e68a98bc3d0a65c8595cb5fb8 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Sun, 2 Feb 2025 20:41:23 +0100 Subject: [PATCH 37/57] move gather commands to latex-lab --- luamml-patches-amsmath.sty | 131 ++++++++++++++++++------------------- 1 file changed, 65 insertions(+), 66 deletions(-) diff --git a/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index 1bb3d91..bc23b5d 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -9,7 +9,7 @@ % mostly disappear if there were enough hooks in amsmath. \IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24} {} - { + { \PackageInfo{luamml}{patching~\string\start@aligned} % aligned and friends \cs_set:Npn \start@aligned #1#2 { @@ -61,7 +61,7 @@ \crcr \ams@return@opt@arg } - \PackageInfo{luamml}{patching~gathered} + \PackageInfo{luamml}{patching~gathered} \renewcommand \gathered [1] [c] { \RIfM@ \else @@ -87,7 +87,7 @@ \crcr \ams@return@opt@arg } - \PackageInfo{luamml}{patching~\string\endaligned} + \PackageInfo{luamml}{patching~\string\endaligned} \cs_set:Npn \endaligned { \crcr \UseExpandableTaggingSocket{math/luamml/mtable/innertable/save} @@ -96,67 +96,66 @@ \egroup \UseTaggingSocket{math/luamml/mtable/innertable/finalize} } - } + \PackageInfo{luamml}{patching~\string\gather@} + \cs_set:Npn \gather@ #1 { + \ingather@true + \let \split \insplit@ + \let \tag \tag@in@align + \let \label \label@in@display + \chardef \dspbrk@context \z@ + \intertext@ \displ@y@ \Let@ + \let \math@cr@@@ \math@cr@@@gather + \gmeasure@ {#1} + \global \shifttag@false + \tabskip \z@skip + \global \row@ \@ne + \halign to \displaywidth \bgroup + \strut@ + \setboxz@h { + $ + \m@th + \displaystyle + {##} + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} + $ + } + \UseTaggingSocket{math/luamml/mtable/finalizecol}{box} + \calc@shift@gather + \set@gather@field + \tabskip\@centering + & + \setboxz@h { + \strut@ + {##} + } + \dim_compare:nNnTF {0pt} = { + \box_wd:N \c_zero_int + } + { \place@tag@gather } + { + \place@tag@gather + \UseTaggingSocket{math/luamml/mtable/tag/set} + } + \tabskip \iftagsleft@ + \gdisplaywidth@ + \else + \z@skip + \span \fi + \crcr + #1 + } +% in latex lab, add the luamml_ignore to \measuring@true instead. + \PackageInfo{luamml}{patching~\string\gmeasure@} + \cs_new_eq:NN \__luamml_amsmath_original_gmeasure:n \gmeasure@ + \cs_set:Npn \gmeasure@ #1 { + \exp_last_unbraced:Nno + \use_ii_i:nn + { \luamml_ignore: } + { \__luamml_amsmath_original_gmeasure:n {#1} } + } -% gather -\cs_set:Npn \gather@ #1 { - \ingather@true - \let \split \insplit@ - \let \tag \tag@in@align - \let \label \label@in@display - \chardef \dspbrk@context \z@ - \intertext@ \displ@y@ \Let@ - \let \math@cr@@@ \math@cr@@@gather - \gmeasure@ {#1} - \global \shifttag@false - \tabskip \z@skip - \global \row@ \@ne - \halign to \displaywidth \bgroup - \strut@ - \setboxz@h { - $ - \m@th - \displaystyle - {##} - \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} - $ - } - \UseTaggingSocket{math/luamml/mtable/finalizecol}{box} - \calc@shift@gather - \set@gather@field - \tabskip\@centering - & - \setboxz@h { - \strut@ - {##} - } - \dim_compare:nNnTF {0pt} = { - \box_wd:N \c_zero_int - } - { \place@tag@gather } - { - \place@tag@gather - \UseTaggingSocket{math/luamml/mtable/tag/set} - } - \tabskip \iftagsleft@ - \gdisplaywidth@ - \else - \z@skip - \span \fi - \crcr - #1 -} -\cs_new_eq:NN \__luamml_amsmath_original_gmeasure:n \gmeasure@ -\cs_set:Npn \gmeasure@ #1 { - \exp_last_unbraced:Nno - \use_ii_i:nn - { \luamml_ignore: } - { \__luamml_amsmath_original_gmeasure:n {#1} } -} -\IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24} - {} - { \PackageInfo{luamml}{patching~\string\endgather} + \PackageInfo{luamml}{patching~\string\endgather} \cs_set:Npn \endgather { \math@cr \black@ \totwidth@ @@ -252,7 +251,7 @@ \IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24} {} { \PackageInfo{luamml}{patching~\string\maketag@@@} - \cs_set:Npn \maketag@@@ #1 + \cs_set:Npn \maketag@@@ #1 { \hbox { \m@th @@ -261,7 +260,7 @@ \UseTaggingSocket{math/luamml/mtable/tag/save} } } -% this handled in latex-lab through \common@align@ending +% this handled in latex-lab through \common@align@ending \cs_set:Npn \endalign { \math@cr \black@ \totwidth@ @@ -392,7 +391,7 @@ \scriptstyle ## % No \scriptsize here since we want to add the mstyle nodes - \UseTaggingSocket{math/luamml/save/nn}{ {} {mtd}} + \UseTaggingSocket{math/luamml/save/nn}{ {} {mtd}} $ \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} \hfil @@ -405,7 +404,7 @@ \UseTaggingSocket{math/luamml/mtable/innertable/finalize} \UseTaggingSocket{ math/luamml/annotate/false } {}{ \, } } - } + } % {cases} is defined by the kernel, but we patch the overwritten version by amsmath. \cs_set:Npn \env@cases { From 36cfb020d21d2a0f4bc3fdf89985f61a2374967f Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Mon, 3 Feb 2025 00:31:57 +0100 Subject: [PATCH 38/57] use sockets --- luamml-patches-amsmath.sty | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index bc23b5d..ee173f3 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -305,14 +305,14 @@ % Less luckily, \endmultline@math sometimes get overwritten for the last line. % But that isn't a problem since we want special behavior there anyway. \cs_set:Npn \endmultline@math { - \luamml_save:nNn {} \displaystyle {mtd} + \UseTaggingSocket{math/luamml/save/nNn}{{} \displaystyle {mtd}} $ \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} } \cs_set:Npn \rendmultline@ { \iftag@ - \luamml_save:nNn {} \displaystyle {mtd} + \UseTaggingSocket{math/luamml/save/nNn}{{} \displaystyle {mtd}} $ \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} \let \endmultline@math \relax @@ -402,7 +402,7 @@ \egroup \egroup \UseTaggingSocket{math/luamml/mtable/innertable/finalize} - \UseTaggingSocket{ math/luamml/annotate/false } {}{ \, } + \UseTaggingSocket{math/luamml/annotate/false} {}{ \, } } } From 28d2b57997dd39ed95919211bb1b2cf67a808212 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Tue, 4 Feb 2025 01:09:22 +0100 Subject: [PATCH 39/57] move align commands to latex-lab --- luamml-patches-amsmath.sty | 159 +++++++++++++++++++------------------ 1 file changed, 80 insertions(+), 79 deletions(-) diff --git a/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index ee173f3..ffe1a05 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -164,88 +164,89 @@ $$ \ignorespacesafterend } - } + % align and friends -\cs_set:Npn \align@preamble { - & - \hfil - \strut@ - \setboxz@h { - \@lign - $ - \m@th - \displaystyle - {##} - \ifmeasuring@ - \luamml_ignore: - \else - \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} - \fi - $ - } - \ifmeasuring@ - \savefieldlength@ - \else - \UseTaggingSocket{math/luamml/mtable/finalizecol}{box} - \fi - \set@field - \tabskip\z@skip - & - \setboxz@h { - \@lign - $ - \m@th - \displaystyle - { - {} - ## - } - \ifmeasuring@ - \luamml_ignore: - \else - \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} - \fi - $ - } - \ifmeasuring@ - \savefieldlength@ - \else - \UseTaggingSocket{math/luamml/mtable/finalizecol}{box} - \fi - \set@field - \hfil - \tabskip\alignsep@ + \PackageInfo{luamml}{patching~\string\align@preamble} + \cs_set:Npn \align@preamble { + & + \hfil + \strut@ + \setboxz@h { + \@lign + $ + \m@th + \displaystyle + {##} + \ifmeasuring@ + \luamml_ignore: + \else + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} + \fi + $ + } + \ifmeasuring@ + \savefieldlength@ + \else + \UseTaggingSocket{math/luamml/mtable/finalizecol}{box} + \fi + \set@field + \tabskip\z@skip + & + \setboxz@h { + \@lign + $ + \m@th + \displaystyle + { + {} + ## + } + \ifmeasuring@ + \luamml_ignore: + \else + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} + \fi + $ + } + \ifmeasuring@ + \savefieldlength@ + \else + \UseTaggingSocket{math/luamml/mtable/finalizecol}{box} + \fi + \set@field + \hfil + \tabskip\alignsep@ + } + \PackageInfo{luamml}{patching~\string\math@cr@@@align} + \cs_set:Npn \math@cr@@@align { + \ifst@rred + \nonumber + \fi + \if@eqnsw + \global \tag@true + \fi + \global \advance \row@ \@ne + \add@amps \maxfields@ + \omit + \kern -\alignsep@ + \iftag@ + \setboxz@h { + \@lign + \strut@ + { \make@display@tag } + } + \place@tag + \UseTaggingSocket{math/luamml/mtable/tag/set} + \fi + \ifst@rred + \else + \global \@eqnswtrue + \fi + \global \lineht@ \z@ + \cr + } } - -\cs_set:Npn \math@cr@@@align { - \ifst@rred - \nonumber - \fi - \if@eqnsw - \global \tag@true - \fi - \global \advance \row@ \@ne - \add@amps \maxfields@ - \omit - \kern -\alignsep@ - \iftag@ - \setboxz@h { - \@lign - \strut@ - { \make@display@tag } - } - \place@tag - \UseTaggingSocket{math/luamml/mtable/tag/set} - \fi - \ifst@rred - \else - \global \@eqnswtrue - \fi - \global \lineht@ \z@ - \cr -} - % This was lost anyway, as the latex-lab code overwrites % the definition again. \IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24} From 37a9ce1b992c253d0dc6f8fc3dbe7a263ba874f3 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Wed, 5 Feb 2025 14:40:25 +0100 Subject: [PATCH 40/57] ensure latex catcode --- luamml-structelemwriter.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/luamml-structelemwriter.lua b/luamml-structelemwriter.lua index 957c29f..d681ff5 100644 --- a/luamml-structelemwriter.lua +++ b/luamml-structelemwriter.lua @@ -6,6 +6,8 @@ local struct_end = token.create'tag_struct_end:' local mc_begin = token.create'tag_mc_begin:n' local mc_end = token.create'tag_mc_end:' +local catlatex = luatexbase.registernumber("catcodetable@latex") + local function escape_name(name) return name end @@ -44,7 +46,7 @@ local attributes = setmetatable({}, {__index = function(t, k) local attr_name = string.format('luamml_attr_%i', attribute_counter) t[k] = attr_name tex.runtoks(function() - tex.sprint(string.format('\\tagpdfsetup{newattribute={%s}{/O/NSO/NS %i 0 R', + tex.sprint(catlatex,string.format('\\tagpdfsetup{newattribute={%s}{/O/NSO/NS %i 0 R', attr_name, mathml_ns_obj or get_mathml_ns_obj())) -- tex.sprint(string.format('\\tagpdfsetup{newattribute={%s}{/O/MathML-3', -- attr_name)) From cca4a39d898f459eea6e8bc1f6ff27e636070d2d Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Wed, 5 Feb 2025 23:45:11 +0100 Subject: [PATCH 41/57] ignore element with status tex:ignore --- luamml-structelemwriter.lua | 2 +- luamml-xmlwriter.lua | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/luamml-structelemwriter.lua b/luamml-structelemwriter.lua index d681ff5..deda960 100644 --- a/luamml-structelemwriter.lua +++ b/luamml-structelemwriter.lua @@ -116,7 +116,7 @@ local function write_elem(tree, stash) end) end for _, elem in ipairs(tree) do - if type(elem) ~= 'string' then + if type(elem) ~= 'string' and not elem['tex:ignore'] then write_elem(elem) end end diff --git a/luamml-xmlwriter.lua b/luamml-xmlwriter.lua index 6880074..ad67845 100644 --- a/luamml-xmlwriter.lua +++ b/luamml-xmlwriter.lua @@ -48,7 +48,9 @@ local function write_elem(tree, indent) out = out .. escape_text(elem) is_string = true else - out = out .. write_elem(elem, inner_indent) + if not elem['tex:ignore'] then + out = out .. write_elem(elem, inner_indent) + end is_string = nil end end From 18e85d016adb57fe837ae5ce756793a26459856c Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Thu, 6 Feb 2025 01:17:22 +0100 Subject: [PATCH 42/57] move lbl into mtext, WIPgit add -p --- luamml-structelemwriter.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/luamml-structelemwriter.lua b/luamml-structelemwriter.lua index deda960..35454af 100644 --- a/luamml-structelemwriter.lua +++ b/luamml-structelemwriter.lua @@ -117,6 +117,10 @@ local function write_elem(tree, stash) end for _, elem in ipairs(tree) do if type(elem) ~= 'string' and not elem['tex:ignore'] then + if elem['intent']==':equationlabel' and lastlblstructnum then + elem[1][#elem+1]={[':structnum']= lastlblstructnum} + lastlblstructnum=nil + end write_elem(elem) end end From 5c8d99818b1bbd837d3c7c955ff6745f797c4f6b Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Thu, 6 Feb 2025 16:58:09 +0100 Subject: [PATCH 43/57] add support for Lbl in math aligments --- luamml-structelemwriter.lua | 14 ++++++++--- luamml.dtx | 50 +++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 4 deletions(-) diff --git a/luamml-structelemwriter.lua b/luamml-structelemwriter.lua index 35454af..372f548 100644 --- a/luamml-structelemwriter.lua +++ b/luamml-structelemwriter.lua @@ -8,6 +8,9 @@ local mc_end = token.create'tag_mc_end:' local catlatex = luatexbase.registernumber("catcodetable@latex") +ltx.__tag.struct.luamml = ltx.__tag.struct.luamml or {} +ltx.__tag.struct.luamml.labels = ltx.__tag.struct.luamml.labels or {} + local function escape_name(name) return name end @@ -117,10 +120,13 @@ local function write_elem(tree, stash) end for _, elem in ipairs(tree) do if type(elem) ~= 'string' and not elem['tex:ignore'] then - if elem['intent']==':equationlabel' and lastlblstructnum then - elem[1][#elem+1]={[':structnum']= lastlblstructnum} - lastlblstructnum=nil - end + if elem['intent']==':equationlabel' and ltx.__tag.struct.luamml.labels then + if #ltx.__tag.struct.luamml.labels > 0 then + -- print("CHECK LABEL STRUCTURE: ",table.serialize(elem), table.serialize(ltx.__tag.struct.luamml.labels)) + local num= table.remove(ltx.__tag.struct.luamml.labels,1) + elem[1][#elem+1]={[':structnum']= num} + end + end write_elem(elem) end end diff --git a/luamml.dtx b/luamml.dtx index 71f17d1..204b4ec 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -715,6 +715,7 @@ % % \end{macrocode} % +% \subsubsection{Tags and labels} % These sockets save and set tags and labels in alignments. % \begin{macrocode} \str_if_exist:cF { l__socket_tagsupport/math/luamml/mtable/tag/save_plug_str } @@ -738,6 +739,55 @@ % % \end{macrocode} +% +% If math structure elements are created the Lbl-structure of a tag +% must be moved inside the math structure, typically as an additional column in an +% \texttt{mtable} with an intent \texttt{:equationlabel}. +% +% The luamml-code handles this by stashing the Lbl-structure, storing the +% structure number in an array and reusing it once it creates the math structure elements. +% +% This should only be done for specific environments, we define +% a constant to test: +% \begin{macrocode} +%<*luatex> +\clist_map_inline:nn + { + align, + alignat, + xalignat, + xxalignat, + flalign, + gather, + %multline, % NO + %equation, % NO + } + {\tl_const:cn { c__luamml_label_#1_tl}{}} +% \end{macrocode} +% +% +% \begin{macrocode} +\NewSocketPlug{tagsupport/math/display/tag/begin}{luamml} + { + \tag_mc_end: + \bool_lazy_and:nnTF + { \tl_if_exist_p:c { c__luamml_label_ \@currenvir _tl } } + { \int_if_odd_p:n { \int_div_truncate:nn { \l__luamml_flag_int } { 8 } } } + { + \typeout{Stash~and~move~\@currenvir~Lbl} + \tag_struct_begin:n {tag=Lbl,stash} + \directlua{table.insert(ltx.__tag.struct.luamml.labels,\tag_get:n{struct_num})} + } + { + \tag_struct_begin:n {tag=Lbl} + } + \tag_mc_begin:n {} + } +\AssignSocketPlug{tagsupport/math/display/tag/begin}{luamml} +% +% \end{macrocode} +% +% % \subsubsection{Horizontal boxes} % This socket annotates an \cs{hbox} inside box commands used in math. % We test for the socket until the release 2025-06-01. From 29212f284c28d3cf70eafc601c3543430422027b Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Fri, 7 Feb 2025 01:06:46 +0100 Subject: [PATCH 44/57] move multline code --- luamml-patches-amsmath.sty | 54 ++++++++++++++++++++------------------ luamml.dtx | 23 +++++++++++++++- 2 files changed, 51 insertions(+), 26 deletions(-) diff --git a/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index ffe1a05..e62b6b6 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -246,12 +246,10 @@ \global \lineht@ \z@ \cr } -} + % This was lost anyway, as the latex-lab code overwrites % the definition again. -\IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24} - {} - { \PackageInfo{luamml}{patching~\string\maketag@@@} + \PackageInfo{luamml}{patching~\string\maketag@@@} \cs_set:Npn \maketag@@@ #1 { \hbox { @@ -261,6 +259,7 @@ \UseTaggingSocket{math/luamml/mtable/tag/save} } } + \PackageInfo{luamml}{patching~\string\endalign} % this handled in latex-lab through \common@align@ending \cs_set:Npn \endalign { \math@cr @@ -277,29 +276,34 @@ \fi \ignorespacesafterend } -} + + \PackageInfo{luamml}{patching~\string\multline@} + % For a more interesting one, let's consider multline: + \cs_new_eq:NN \__luamml_amsmath_original_multline:n \multline@ + \cs_set:Npn \multline@ #1 { + \__luamml_amsmath_original_multline:n { + \ifmeasuring@ \else + \UseTaggingSocket{math/luamml/mtable/aligncol} {left} + \fi + #1 + \ifmeasuring@ \else + \UseTaggingSocket{math/luamml/mtable/aligncol} {right} + \fi + } + } -% For a more interesting one, let's consider multline: -\cs_new_eq:NN \__luamml_amsmath_original_multline:n \multline@ -\cs_set:Npn \multline@ #1 { - \__luamml_amsmath_original_multline:n { - \ifmeasuring@ \else - \__luamml_amsmath_set_row_columnalign:n {left} - \fi - #1 - \ifmeasuring@ \else - \__luamml_amsmath_set_row_columnalign:n {right} - \fi - } -} + %this is not move to latex-lab as the luamml_ignore is inserting with + % \measuringtrue + \PackageInfo{luamml}{patching~\string\mmeasure@} + \cs_new_eq:NN \__luamml_amsmath_original_mmeasure:n \mmeasure@ + \cs_set:Npn \mmeasure@ #1 { + \exp_last_unbraced:Nno + \use_ii_i:nn + { \luamml_ignore: } + { \__luamml_amsmath_original_mmeasure:n {#1} } + } + } % end package test -\cs_new_eq:NN \__luamml_amsmath_original_mmeasure:n \mmeasure@ -\cs_set:Npn \mmeasure@ #1 { - \exp_last_unbraced:Nno - \use_ii_i:nn - { \luamml_ignore: } - { \__luamml_amsmath_original_mmeasure:n {#1} } -} % Luckily, {multline} uses \endmultline@math in exactly % the spot where we have to set the flag. diff --git a/luamml.dtx b/luamml.dtx index 204b4ec..20b8360 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -692,7 +692,7 @@ \AssignSocketPlug{tagsupport/math/luamml/mtable/innertable/finalize}{luamml} % % \end{macrocode} - +% % % This socket finalize the \texttt{mtable} in alignments like align or gather. % It takes an argument, the environment. @@ -714,6 +714,27 @@ \AssignSocketPlug{tagsupport/math/luamml/mtable/finalize}{luamml} % % \end{macrocode} +% +% This socket adds attributes for the alignment in \texttt{multline}. +% It takes an argument, the alignment. +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/mtable/aligncol_plug_str } + { + \NewSocket{tagsupport/math/luamml/mtable/aligncol}{1} + \AssignSocketPlug{tagsupport/math/luamml/mtable/aligncol}{noop} + } +% \end{macrocode} +% +% \begin{macrocode} +%<*luatex> +\NewSocketPlug{tagsupport/math/luamml/mtable/aligncol}{luamml} + { + \__luamml_amsmath_set_row_columnalign:n {#1} + } +\AssignSocketPlug{tagsupport/math/luamml/mtable/aligncol}{luamml} +% +% \end{macrocode} + % % \subsubsection{Tags and labels} % These sockets save and set tags and labels in alignments. From 11ed5ffcbe382f60d879f56ad6fa4b1d944d44c2 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Fri, 7 Feb 2025 16:30:15 +0100 Subject: [PATCH 45/57] finish moving multline --- luamml-patches-amsmath.sty | 110 +++++++++++++++++-------------------- 1 file changed, 51 insertions(+), 59 deletions(-) diff --git a/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index e62b6b6..c100ee5 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -302,72 +302,64 @@ { \luamml_ignore: } { \__luamml_amsmath_original_mmeasure:n {#1} } } - } % end package test - - % Luckily, {multline} uses \endmultline@math in exactly % the spot where we have to set the flag. % Less luckily, \endmultline@math sometimes get overwritten for the last line. % But that isn't a problem since we want special behavior there anyway. -\cs_set:Npn \endmultline@math { - \UseTaggingSocket{math/luamml/save/nNn}{{} \displaystyle {mtd}} - $ - \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} -} - -\cs_set:Npn \rendmultline@ { - \iftag@ + \PackageInfo{luamml}{patching~\string\endmultline@math} + \cs_set:Npn \endmultline@math { \UseTaggingSocket{math/luamml/save/nNn}{{} \displaystyle {mtd}} $ \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} - \let \endmultline@math \relax - \ifshifttag@ - \hskip \multlinegap - \llap { - \vtop { - \raise@tag - \normalbaselines - \setbox \@ne \null - \dp \@ne \lineht@ - \box \@ne - \hbox { - \strut@ - \make@display@tag + } + \PackageInfo{luamml}{patching~\string\rendmultline@} + \cs_set:Npn \rendmultline@ { + \iftag@ + \UseTaggingSocket{math/luamml/save/nNn}{{} \displaystyle {mtd}} + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \let \endmultline@math \relax + \ifshifttag@ + \hskip \multlinegap + \llap { + \vtop { + \raise@tag + \normalbaselines + \setbox \@ne \null + \dp \@ne \lineht@ + \box \@ne + \hbox { + \strut@ + \make@display@tag + } + } } - } - } - \else - \hskip \multlinetaggap - \make@display@tag - \fi - \UseTaggingSocket{math/luamml/mtable/tag/set} - \else - \hskip \multlinegap - \fi - \hfilneg - \math@cr - \UseExpandableTaggingSocket {math/luamml/mtable/finalize} {multline} - \egroup - $$ -} - -\cs_set:Npn \lendmultline@ { - \hfilneg - \hskip\multlinegap - \math@cr - \UseExpandableTaggingSocket {math/luamml/mtable/finalize} {multline} - %\__luamml_amsmath_finalize_table:n {multline} - \egroup - $$ -} - -% Finally some slightly different stuff. -% While {matrix} is covered by {array}, we still have {smallmatrix}: - -\IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24} - {} - { \PackageInfo{luamml}{patching~smallmatrix} - + \else + \hskip \multlinetaggap + \make@display@tag + \fi + \UseTaggingSocket{math/luamml/mtable/tag/set} + \else + \hskip \multlinegap + \fi + \hfilneg + \math@cr + \UseExpandableTaggingSocket {math/luamml/mtable/finalize} {multline} + \egroup + $$ + } + \PackageInfo{luamml}{patching~\string\lendmultline@} + \cs_set:Npn \lendmultline@ { + \hfilneg + \hskip\multlinegap + \math@cr + \UseExpandableTaggingSocket {math/luamml/mtable/finalize} {multline} + %\__luamml_amsmath_finalize_table:n {multline} + \egroup + $$ + } + + \PackageInfo{luamml}{patching~smallmatrix} \renewenvironment {smallmatrix} { \UseTaggingSocket{ math/luamml/annotate/false } {} { \null\, } \vcenter \bgroup @@ -409,7 +401,7 @@ \UseTaggingSocket{math/luamml/mtable/innertable/finalize} \UseTaggingSocket{math/luamml/annotate/false} {}{ \, } } - } + } %end package test % {cases} is defined by the kernel, but we patch the overwritten version by amsmath. \cs_set:Npn \env@cases { From d6f438a532f06cc378e429af3d674072f78c8a71 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Fri, 7 Feb 2025 16:44:52 +0100 Subject: [PATCH 46/57] move cases --- luamml-patches-amsmath.sty | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index c100ee5..6baf949 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -401,17 +401,17 @@ \UseTaggingSocket{math/luamml/mtable/innertable/finalize} \UseTaggingSocket{math/luamml/annotate/false} {}{ \, } } + + % {cases} is defined by the kernel, but we patch the overwritten version by amsmath. + \PackageInfo{luamml}{patching~\string\env@cases} + \cs_set:Npn \env@cases { + \let \@ifnextchar \new@ifnextchar + \left \lbrace + \def \arraystretch {1.2} + \array {@{}l@{\quad \luamml_ignore:}l@{}} + } } %end package test -% {cases} is defined by the kernel, but we patch the overwritten version by amsmath. -\cs_set:Npn \env@cases { - \let \@ifnextchar \new@ifnextchar - \left \lbrace - \def \arraystretch {1.2} - \array {@{}l@{\quad \luamml_ignore:}l@{}} -} - - \cs_set:Npn \bBigg@ #1 #2 { { \ensuremath { From b0149a45a36eaa012e5f260e5352fe235fa5a37c Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Fri, 7 Feb 2025 17:13:23 +0100 Subject: [PATCH 47/57] move mathtool patch --- luamml-patches-mathtools.sty | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/luamml-patches-mathtools.sty b/luamml-patches-mathtools.sty index 3dc1570..76a9685 100644 --- a/luamml-patches-mathtools.sty +++ b/luamml-patches-mathtools.sty @@ -25,9 +25,9 @@ \MH_fi: \ialign\bgroup \hfil\strut@$\m@th\displaystyle{}## - \luamml_save:nNn {} \displaystyle {mtd} + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} $ - \__luamml_amsmath_add_last_to_row: + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} \hfil \crcr \hfilneg From f8a3d35aa152a305bd7f09d5c5446b67b37ab8a0 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Fri, 7 Feb 2025 17:40:27 +0100 Subject: [PATCH 48/57] move mathtool patch --- luamml-patches-mathtools.sty | 67 +++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/luamml-patches-mathtools.sty b/luamml-patches-mathtools.sty index 76a9685..e520190 100644 --- a/luamml-patches-mathtools.sty +++ b/luamml-patches-mathtools.sty @@ -1,35 +1,38 @@ \ProvidesExplPackage {luamml-patches-mathtools} {2024-10-26} {0.2.0} {Feel free to add a description here} - -\RequirePackage{luamml-patches-amsmath} -% see https://github.com/latex3/tagging-project/issues/734 -\renewcommand*\MT_mult_internal:n [1]{ - \MH_if_boolean:nF {outer_mult}{\alignedspace@left} %<-- requires amsmath 2016/11/05 - \MT_next: - \bgroup - \Let@ - \def\l_MT_multline_lastline_fint{0 } - \chardef\dspbrk@context\@ne \restore@math@cr - \MH_let:NwN \math@cr@@\MT_mult_mathcr_atat:w - \MH_let:NwN \shoveleft\MT_shoveleft:wn - \MH_let:NwN \shoveright\MT_shoveright:wn - \spread@equation - \MH_set_boolean_F:n {mult_firstline} - \MT_measure_mult:n {#1} - \MH_if_dim:w \l_MT_multwidth_dim<\l_MT_multline_measure_fdim - \MH_setlength:dn \l_MT_multwidth_dim{\l_MT_multline_measure_fdim} - \fi - \MH_set_boolean_T:n {mult_firstline} - \MH_if_num:w \l_MT_multline_lastline_fint=\@ne - \MH_let:NwN \math@cr@@ \MT_mult_firstandlast_mathcr:w - \MH_fi: - \ialign\bgroup - \hfil\strut@$\m@th\displaystyle{}## - \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} - $ - \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} - \hfil - \crcr - \hfilneg - #1 +\IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24} + {} + { + \RequirePackage{luamml-patches-amsmath} + % see https://github.com/latex3/tagging-project/issues/734 + \renewcommand*\MT_mult_internal:n [1]{ + \MH_if_boolean:nF {outer_mult}{\alignedspace@left} %<-- requires amsmath 2016/11/05 + \MT_next: + \bgroup + \Let@ + \def\l_MT_multline_lastline_fint{0 } + \chardef\dspbrk@context\@ne \restore@math@cr + \MH_let:NwN \math@cr@@\MT_mult_mathcr_atat:w + \MH_let:NwN \shoveleft\MT_shoveleft:wn + \MH_let:NwN \shoveright\MT_shoveright:wn + \spread@equation + \MH_set_boolean_F:n {mult_firstline} + \MT_measure_mult:n {#1} + \MH_if_dim:w \l_MT_multwidth_dim<\l_MT_multline_measure_fdim + \MH_setlength:dn \l_MT_multwidth_dim{\l_MT_multline_measure_fdim} + \fi + \MH_set_boolean_T:n {mult_firstline} + \MH_if_num:w \l_MT_multline_lastline_fint=\@ne + \MH_let:NwN \math@cr@@ \MT_mult_firstandlast_mathcr:w + \MH_fi: + \ialign\bgroup + \hfil\strut@$\m@th\displaystyle{}## + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \hfil + \crcr + \hfilneg + #1 + } } From 398aa189fe6104b1579efa925af6bfd183e690fe Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Sat, 8 Feb 2025 11:40:49 +0100 Subject: [PATCH 49/57] tag rows with no tag with an empty mtd --- luamml-amsmath.lua | 9 +++++---- luamml-table.lua | 7 +++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/luamml-amsmath.lua b/luamml-amsmath.lua index 2b74265..26b157b 100644 --- a/luamml-amsmath.lua +++ b/luamml-amsmath.lua @@ -3,6 +3,7 @@ local make_root = require'luamml-convert'.make_root local save_result = require'luamml-tex'.save_result local store_column = require'luamml-table'.store_column local store_tag = require'luamml-table'.store_tag +local store_notag = require'luamml-table'.store_notag local get_table = require'luamml-table'.get_table local set_row_attribute = require'luamml-table'.set_row_attribute local to_text = require'luamml-lr' @@ -125,9 +126,9 @@ funcid = luatexbase.new_luafunction'__luamml_amsmath_set_tag:' token.set_lua('__luamml_amsmath_set_tag:', funcid, 'protected') lua.get_functions_table()[funcid] = function() if not last_tag then - texio.write_nl'WARNING: Tag extraction failed' - return + store_notag({[0] = 'mtd',''}) + else + store_tag({[0] = 'mtd', last_tag}) + last_tag = nil end - store_tag({[0] = 'mtd', last_tag}) - last_tag = nil end diff --git a/luamml-table.lua b/luamml-table.lua index 4fb553a..2333104 100644 --- a/luamml-table.lua +++ b/luamml-table.lua @@ -63,6 +63,12 @@ local function store_tag(xml) last_tag = nil end +local function store_notag(xml) + local mml_row = store_get_row() + xml.intent = ':noequationlabel' + table.insert(mml_row, 1, xml) +end + local function set_row_attribute(name, value) local mml_row = store_get_row() mml_row[name] = value @@ -105,6 +111,7 @@ return { store_column = store_column, store_column_xml = store_column_xml, store_tag = store_tag, + store_notag = store_notag, set_row_attribute = set_row_attribute, get_table = get_table, } From ecde594cd3b8d68a2d90cc8069078670d5ce06a7 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Sun, 9 Feb 2025 18:33:43 +0100 Subject: [PATCH 50/57] correct and clean up label handling --- luamml.dtx | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/luamml.dtx b/luamml.dtx index 20b8360..3426b45 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -775,13 +775,32 @@ \clist_map_inline:nn { align, + align*, alignat, + alignat*, xalignat, - xxalignat, + xalignat*, +% \end{macrocode} +% there is never a tag/label in xxalignat, so does it make sense to add a label column? +% Left out for now. +% \begin{macrocode} + %xxalignat, flalign, + flalign*, gather, + gather*, +% \end{macrocode} +% equation and multline have at most one tag, so we do not use a label column +% but rely on the external Lbl for now. +% \begin{macrocode} %multline, % NO + %multline*, % NO %equation, % NO + %equation*, % NO +% \end{macrocode} +% split has never a numbering so is ignored +% \begin{macrocode} + %split, % NO } {\tl_const:cn { c__luamml_label_#1_tl}{}} % \end{macrocode} @@ -795,7 +814,7 @@ { \tl_if_exist_p:c { c__luamml_label_ \@currenvir _tl } } { \int_if_odd_p:n { \int_div_truncate:nn { \l__luamml_flag_int } { 8 } } } { - \typeout{Stash~and~move~\@currenvir~Lbl} + %\typeout{Stash~and~move~\@currenvir\c_space_tl Lbl} \tag_struct_begin:n {tag=Lbl,stash} \directlua{table.insert(ltx.__tag.struct.luamml.labels,\tag_get:n{struct_num})} } From 8f864361a909f42ec2522eb4b6f1bb934b8e51e7 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Sun, 9 Feb 2025 22:58:59 +0100 Subject: [PATCH 51/57] provide missing socket --- luamml.dtx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/luamml.dtx b/luamml.dtx index 3426b45..a5579e0 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -771,6 +771,14 @@ % This should only be done for specific environments, we define % a constant to test: % \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/mtable/tag/begin_plug_str } + { + \NewSocket{tagsupport/math/display/tag/begin}{0} + \NewSocket{tagsupport/math/display/tag/end}{0} + } +% \end{macrocode} +% +% \begin{macrocode} %<*luatex> \clist_map_inline:nn { From 7bca165095d8fbb7b02cc406af5082cab9271de2 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Sun, 9 Feb 2025 23:35:02 +0100 Subject: [PATCH 52/57] correct socket name --- luamml.dtx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/luamml.dtx b/luamml.dtx index a5579e0..f2c85fd 100644 --- a/luamml.dtx +++ b/luamml.dtx @@ -771,7 +771,7 @@ % This should only be done for specific environments, we define % a constant to test: % \begin{macrocode} -\str_if_exist:cF { l__socket_tagsupport/math/luamml/mtable/tag/begin_plug_str } +\str_if_exist:cF { l__socket_tagsupport/math/display/tag/begin_plug_str } { \NewSocket{tagsupport/math/display/tag/begin}{0} \NewSocket{tagsupport/math/display/tag/end}{0} From f68f45f2c869c918074964cfe4cdad33e57aa6d8 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Mon, 10 Feb 2025 17:01:36 +0100 Subject: [PATCH 53/57] more clean up --- luamml-patches-amsmath.sty | 18 +++++++++--------- luamml-patches-kernel.sty | 9 +++++---- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index 6baf949..66ffdbe 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -410,12 +410,12 @@ \def \arraystretch {1.2} \array {@{}l@{\quad \luamml_ignore:}l@{}} } - } %end package test - -\cs_set:Npn \bBigg@ #1 #2 { - { - \ensuremath { - \Uvextensible height~#1 \big@size axis~exact~#2 - } - } -} + \PackageInfo{luamml}{patching~\string\bBigg@} + \cs_set:Npn \bBigg@ #1 #2 { + { + \ensuremath { + \Uvextensible height~#1 \big@size axis~exact~#2 + } + } + } +} %end package test diff --git a/luamml-patches-kernel.sty b/luamml-patches-kernel.sty index 36824a8..bcd3064 100644 --- a/luamml-patches-kernel.sty +++ b/luamml-patches-kernel.sty @@ -52,8 +52,13 @@ \finph@nt } } + \IfFileLoadedT {latex-lab-math.ltx} { + \RequirePackage{luamml-patches-lab-math} + } } +% This is not moved to latex-lab for now. It doesn't work properly with structure elements +% active: the content is outside of the math. \@ifpackageloaded {unicode-math} {} { \cs_new:Npn \__luamml_kernel_define_character:Nnn #1#2#3 { \cs_set:cpx { \cs_to_str:N #1 ~ } { @@ -77,7 +82,3 @@ \__luamml_kernel_define_character:Nnn \longleftrightarrow {3} {27f7} \__luamml_kernel_define_character:Nnn \longmapsto {4} {27fc} } - -\IfFileLoadedT {latex-lab-math.ltx} { - \RequirePackage{luamml-patches-lab-math} -} From 6fcc97573533de7f27556b10cf418ab00aff709d Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Tue, 11 Feb 2025 09:36:08 +0100 Subject: [PATCH 54/57] ensure that lua table exist --- luamml-structelemwriter.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/luamml-structelemwriter.lua b/luamml-structelemwriter.lua index 372f548..3087305 100644 --- a/luamml-structelemwriter.lua +++ b/luamml-structelemwriter.lua @@ -8,6 +8,9 @@ local mc_end = token.create'tag_mc_end:' local catlatex = luatexbase.registernumber("catcodetable@latex") +ltx = ltx or {} +ltx.__tag = ltx.__tag or {} +ltx.__tag.struct = ltx.__tag.struct or {} ltx.__tag.struct.luamml = ltx.__tag.struct.luamml or {} ltx.__tag.struct.luamml.labels = ltx.__tag.struct.luamml.labels or {} From 8da22d184e9bd84617b8e75c95b9119c73a511f2 Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Tue, 11 Feb 2025 09:40:56 +0100 Subject: [PATCH 55/57] update test, NS change --- testfiles-lua/test_sqrt.tpf | 146 ++++++++++++++++++------------------ 1 file changed, 73 insertions(+), 73 deletions(-) diff --git a/testfiles-lua/test_sqrt.tpf b/testfiles-lua/test_sqrt.tpf index 5b360d5..146bbb7 100644 --- a/testfiles-lua/test_sqrt.tpf +++ b/testfiles-lua/test_sqrt.tpf @@ -513,13 +513,13 @@ endobj << /title [/Title 11 0 R] /part [/Title 11 0 R] /section [/H1 11 0 R] /subsection [/H2 11 0 R] /subsubsection [/H3 11 0 R] /paragraph [/H4 11 0 R] /subparagraph [/H5 11 0 R] /list [/L 11 0 R] /itemize [/L 11 0 R] /enumerate [/L 11 0 R] /description [/L 11 0 R] /quote [/BlockQuote 9 0 R] /quotation [/BlockQuote 9 0 R] /verbatim [/P 11 0 R] /item [/LI 11 0 R] /itemlabel [/Lbl 11 0 R] /itembody [/LBody 11 0 R] /footnote [/FENote 11 0 R] /footnotemark [/Lbl 11 0 R] /footnotelabel [/Lbl 11 0 R] /text-unit [/Part 11 0 R] /text [/P 11 0 R] /theorem-like [/Sect 11 0 R] /codeline [/Sub 11 0 R] /float [/Aside 11 0 R] /figures [/Sect 11 0 R] /tables [/Sect 11 0 R] >> endobj 15 0 obj -<< /Type /Namespace /NS (https://www.latex-project.org/ns/dflt/2022) /RoleMapNS 16 0 R >> +<< /Type /Namespace /NS (https://www.latex-project.org/ns/dflt) /RoleMapNS 16 0 R >> endobj 18 0 obj << /chapter [/H1 11 0 R] /section [/H2 11 0 R] /subsection [/H3 11 0 R] /subsubsection [/H4 11 0 R] /paragraph [/H5 11 0 R] /subparagraph [/H6 11 0 R] >> endobj 17 0 obj -<< /Type /Namespace /NS (https://www.latex-project.org/ns/book/2022) /RoleMapNS 18 0 R >> +<< /Type /Namespace /NS (https://www.latex-project.org/ns/book) /RoleMapNS 18 0 R >> endobj 19 0 obj << /Type /Namespace /NS (data:,C9B55C18-275C-494E-C10F-E4B83CD03F23) >> @@ -875,10 +875,10 @@ xref 0000000003 00000 f 0000000004 00000 f 0000000010 00000 f -0000025392 00000 n +0000025382 00000 n 0000017844 00000 n 0000018694 00000 n -0000020849 00000 n +0000020839 00000 n 0000019474 00000 n 0000000012 00000 f 0000019542 00000 n @@ -887,11 +887,11 @@ xref 0000000020 00000 f 0000020375 00000 n 0000019693 00000 n -0000020653 00000 n -0000020482 00000 n -0000020760 00000 n +0000020648 00000 n +0000020477 00000 n +0000020750 00000 n 0000000000 00000 f -0000020910 00000 n +0000020900 00000 n 0000000020 00000 n 0000000257 00000 n 0000000444 00000 n @@ -900,91 +900,91 @@ xref 0000001291 00000 n 0000001478 00000 n 0000001726 00000 n -0000021031 00000 n -0000021119 00000 n -0000021207 00000 n -0000021307 00000 n -0000021418 00000 n +0000021021 00000 n +0000021109 00000 n +0000021197 00000 n +0000021297 00000 n +0000021408 00000 n 0000001913 00000 n 0000002067 00000 n -0000021610 00000 n -0000021705 00000 n -0000021801 00000 n -0000021922 00000 n -0000022022 00000 n -0000022133 00000 n +0000021600 00000 n +0000021695 00000 n +0000021791 00000 n +0000021912 00000 n +0000022012 00000 n +0000022123 00000 n 0000002267 00000 n 0000002433 00000 n -0000022325 00000 n -0000022436 00000 n -0000022532 00000 n -0000022628 00000 n -0000022749 00000 n +0000022315 00000 n +0000022426 00000 n +0000022522 00000 n +0000022618 00000 n +0000022739 00000 n 0000002633 00000 n -0000022881 00000 n -0000023002 00000 n -0000023102 00000 n -0000023213 00000 n +0000022871 00000 n +0000022992 00000 n +0000023092 00000 n +0000023203 00000 n 0000002704 00000 n 0000002875 00000 n -0000023474 00000 n -0000023585 00000 n -0000023706 00000 n +0000023464 00000 n +0000023575 00000 n +0000023696 00000 n 0000003075 00000 n -0000023838 00000 n -0000023934 00000 n -0000024039 00000 n -0000024143 00000 n -0000024265 00000 n -0000024387 00000 n -0000024509 00000 n -0000024609 00000 n -0000024720 00000 n +0000023828 00000 n +0000023924 00000 n +0000024029 00000 n +0000024133 00000 n +0000024255 00000 n +0000024377 00000 n +0000024499 00000 n +0000024599 00000 n +0000024710 00000 n 0000003146 00000 n 0000003303 00000 n -0000024948 00000 n -0000025043 00000 n -0000025148 00000 n -0000025270 00000 n +0000024938 00000 n +0000025033 00000 n +0000025138 00000 n +0000025260 00000 n 0000003503 00000 n 0000017560 00000 n 0000017425 00000 n 0000015284 00000 n -0000034805 00000 n -0000031616 00000 n -0000029375 00000 n -0000027191 00000 n -0000035176 00000 n +0000034795 00000 n +0000031606 00000 n +0000029365 00000 n +0000027181 00000 n +0000035166 00000 n 0000017706 00000 n 0000017742 00000 n 0000018006 00000 n 0000018657 00000 n 0000019273 00000 n -0000025529 00000 n -0000026218 00000 n -0000025560 00000 n -0000026439 00000 n -0000027345 00000 n -0000027545 00000 n -0000028364 00000 n -0000027578 00000 n -0000028593 00000 n -0000029535 00000 n -0000029741 00000 n -0000030602 00000 n -0000029774 00000 n -0000030833 00000 n -0000031778 00000 n -0000031987 00000 n -0000033686 00000 n -0000032090 00000 n -0000033916 00000 n -0000034967 00000 n -0000035238 00000 n -0000035283 00000 n -0000035414 00000 n +0000025519 00000 n +0000026208 00000 n +0000025550 00000 n +0000026429 00000 n +0000027335 00000 n +0000027535 00000 n +0000028354 00000 n +0000027568 00000 n +0000028583 00000 n +0000029525 00000 n +0000029731 00000 n +0000030592 00000 n +0000029764 00000 n +0000030823 00000 n +0000031768 00000 n +0000031977 00000 n +0000033676 00000 n +0000032080 00000 n +0000033906 00000 n +0000034957 00000 n +0000035228 00000 n +0000035273 00000 n +0000035404 00000 n trailer << /Size 113 /Root 111 0 R /Info 112 0 R /ID [ <2350CAD05F8A7AF0AA4058486855344F> <2350CAD05F8A7AF0AA4058486855344F> ] >> startxref -35547 +35537 %%EOF From 4bed8d523ba8024f7ca2110b3cdeff1997ea37cf Mon Sep 17 00:00:00 2001 From: Ulrike Fischer Date: Tue, 11 Feb 2025 09:53:43 +0100 Subject: [PATCH 56/57] update testfiles (empty mi, NS) --- testfiles-lua/test_struct.tpf | 896 +++++++++++++++---------------- testfiles-lua/test_structnum.tpf | 138 ++--- testfiles-lua/test_xml.mlr | 23 +- 3 files changed, 506 insertions(+), 551 deletions(-) diff --git a/testfiles-lua/test_struct.tpf b/testfiles-lua/test_struct.tpf index 4149ac6..034a986 100644 --- a/testfiles-lua/test_struct.tpf +++ b/testfiles-lua/test_struct.tpf @@ -28,9 +28,9 @@ endobj << /Type /Filespec /AFRelationship /Supplement /Desc (mathml-3) /F (mathml-3.xml) /UF /EF<> >> endobj 28 0 obj -<< /Type /EmbeddedFile /Subtype /application#2Fmathml+xml /Params<> /Length 1062 >> +<< /Type /EmbeddedFile /Subtype /application#2Fmathml+xml /Params<> /Length 1014 >> stream - π‘Ž 𝑏 𝑐 = 𝑑 𝑒 𝑓 𝑒 i πœ‹ = βˆ’ 1 ( 1 + 2 = 3 ) 5 + π‘Ž 𝑏 𝑐 = 𝑑 𝑒 𝑓 𝑒 i πœ‹ = βˆ’ 1 ( 1 + 2 = 3 ) 5 endstream endobj 29 0 obj @@ -117,28 +117,28 @@ endobj 146 0 obj << /Type /Filespec /AFRelationship /Source /Desc (TeX source) /F (tag-AFfile4.tex) /UF /EF<> >> endobj -166 0 obj +164 0 obj << /O/NSO/NS 13 0 R/lspace(0.278em)/rspace(0) >> endobj -172 0 obj +170 0 obj << /O/NSO/NS 13 0 R/fence(true)/lspace(0)/maxsize(17.861pt)/minsize(17.861pt)/rspace(0)/symmetric(true) >> endobj -197 0 obj +189 0 obj << /O/NSO/NS 13 0 R/columnalign(right left right left)/columnspacing(0 .8em 0)/displaystyle(true) >> endobj -204 0 obj +196 0 obj << /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<> /Length 27 >> stream $\sin (x)-\sin (x+2\pi )=0$ endstream endobj -205 0 obj -<< /Type /Filespec /AFRelationship /Source /Desc (TeX source) /F (tag-AFfile5.tex) /UF /EF<> >> +197 0 obj +<< /Type /Filespec /AFRelationship /Source /Desc (TeX source) /F (tag-AFfile5.tex) /UF /EF<> >> endobj -209 0 obj +201 0 obj << /O/NSO/NS 13 0 R/lspace(0)/rspace(0)/stretchy(false) >> endobj -222 0 obj +214 0 obj << /Type /Metadata /Subtype /XML /Length 11693 >> stream @@ -372,7 +372,7 @@ stream endstream endobj -225 0 obj +217 0 obj << /Length 8458 >> stream /opacity1 gs @@ -976,44 +976,44 @@ EMC EMC endstream endobj -224 0 obj -<< /Type /Page /Contents 225 0 R /Resources 223 0 R /MediaBox [ 0 0 612 792 ] /StructParents 0/Tabs /S /Parent 230 0 R >> +216 0 obj +<< /Type /Page /Contents 217 0 R /Resources 215 0 R /MediaBox [ 0 0 612 792 ] /StructParents 0/Tabs /S /Parent 222 0 R >> endobj -223 0 obj -<< /ExtGState 1 0 R /Font << /F15 226 0 R /F20 227 0 R /F21 228 0 R /F32 229 0 R >> >> +215 0 obj +<< /ExtGState 1 0 R /Font << /F15 218 0 R /F20 219 0 R /F21 220 0 R /F32 221 0 R >> >> endobj 1 0 obj << /opacity1 <> >> endobj -231 0 obj +223 0 obj << /Marked true >> endobj -232 0 obj +224 0 obj << /Names[(l3ef0001) 23 0 R (l3ef0002) 25 0 R (l3ef0003) 27 0 R (l3ef0004) 29 0 R (l3ef0005) 31 0 R] >> endobj 6 0 obj -<< /Nums [0 [ 35 0 R 74 0 R 37 0 R 41 0 R 43 0 R 45 0 R 37 0 R 47 0 R 49 0 R 51 0 R 37 0 R 53 0 R 55 0 R 57 0 R 85 0 R 86 0 R 88 0 R 59 0 R 60 0 R 62 0 R 63 0 R 65 0 R 68 0 R 69 0 R 100 0 R 101 0 R 104 0 R 106 0 R 107 0 R 96 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 96 0 R 119 0 R 120 0 R 121 0 R 129 0 R 131 0 R 133 0 R 124 0 R 137 0 R 136 0 R 140 0 R 141 0 R 144 0 R 148 0 R 149 0 R 150 0 R 153 0 R 154 0 R 155 0 R 156 0 R 159 0 R 161 0 R 162 0 R 165 0 R 167 0 R 168 0 R 169 0 R 144 0 R 171 0 R 173 0 R 174 0 R 175 0 R 178 0 R 179 0 R 180 0 R 185 0 R 144 0 R 187 0 R 194 0 R 202 0 R 203 0 R 207 0 R 208 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 202 0 R] +<< /Nums [0 [ 35 0 R 74 0 R 37 0 R 41 0 R 43 0 R 45 0 R 37 0 R 47 0 R 49 0 R 51 0 R 37 0 R 53 0 R 55 0 R 57 0 R 85 0 R 86 0 R 88 0 R 59 0 R 60 0 R 62 0 R 63 0 R 65 0 R 68 0 R 69 0 R 100 0 R 101 0 R 104 0 R 106 0 R 107 0 R 96 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 96 0 R 119 0 R 120 0 R 121 0 R 129 0 R 131 0 R 133 0 R 124 0 R 137 0 R 136 0 R 140 0 R 141 0 R 144 0 R 148 0 R 149 0 R 150 0 R 152 0 R 153 0 R 154 0 R 155 0 R 158 0 R 160 0 R 161 0 R 163 0 R 165 0 R 166 0 R 167 0 R 144 0 R 169 0 R 171 0 R 172 0 R 173 0 R 175 0 R 176 0 R 177 0 R 180 0 R 144 0 R 182 0 R 186 0 R 194 0 R 195 0 R 199 0 R 200 0 R 202 0 R 203 0 R 204 0 R 205 0 R 206 0 R 207 0 R 208 0 R 209 0 R 210 0 R 211 0 R 212 0 R 213 0 R 194 0 R] ] >> endobj -233 0 obj +225 0 obj << /Limits [(ID.0002) (ID.0051)]/Names [(ID.0002) 21 0 R (ID.0003) 32 0 R (ID.0004) 33 0 R (ID.0005) 34 0 R (ID.0006) 35 0 R (ID.0007) 36 0 R (ID.0008) 37 0 R (ID.0009) 40 0 R (ID.0010) 41 0 R (ID.0011) 42 0 R (ID.0012) 43 0 R (ID.0013) 44 0 R (ID.0014) 45 0 R (ID.0015) 46 0 R (ID.0016) 47 0 R (ID.0017) 48 0 R (ID.0018) 49 0 R (ID.0019) 50 0 R (ID.0020) 51 0 R (ID.0021) 52 0 R (ID.0022) 53 0 R (ID.0023) 54 0 R (ID.0024) 55 0 R (ID.0025) 56 0 R (ID.0026) 57 0 R (ID.0027) 58 0 R (ID.0028) 59 0 R (ID.0029) 60 0 R (ID.0030) 61 0 R (ID.0031) 62 0 R (ID.0032) 63 0 R (ID.0033) 65 0 R (ID.0034) 66 0 R (ID.0035) 67 0 R (ID.0036) 68 0 R (ID.0037) 69 0 R (ID.0038) 70 0 R (ID.0039) 71 0 R (ID.0040) 73 0 R (ID.0041) 74 0 R (ID.0042) 76 0 R (ID.0043) 78 0 R (ID.0044) 80 0 R (ID.0045) 81 0 R (ID.0046) 82 0 R (ID.0047) 83 0 R (ID.0048) 84 0 R (ID.0049) 85 0 R (ID.0050) 86 0 R (ID.0051) 87 0 R ] >> endobj -234 0 obj +226 0 obj << /Limits [(ID.0052) (ID.0101)]/Names [(ID.0052) 88 0 R (ID.0053) 89 0 R (ID.0054) 90 0 R (ID.0055) 91 0 R (ID.0056) 92 0 R (ID.0057) 93 0 R (ID.0058) 95 0 R (ID.0059) 96 0 R (ID.0060) 99 0 R (ID.0061) 100 0 R (ID.0062) 101 0 R (ID.0063) 102 0 R (ID.0064) 103 0 R (ID.0065) 104 0 R (ID.0066) 106 0 R (ID.0067) 107 0 R (ID.0068) 109 0 R (ID.0069) 110 0 R (ID.0070) 111 0 R (ID.0071) 112 0 R (ID.0072) 113 0 R (ID.0073) 114 0 R (ID.0074) 115 0 R (ID.0075) 116 0 R (ID.0076) 117 0 R (ID.0077) 118 0 R (ID.0078) 119 0 R (ID.0079) 120 0 R (ID.0080) 121 0 R (ID.0081) 123 0 R (ID.0082) 124 0 R (ID.0083) 127 0 R (ID.0084) 128 0 R (ID.0085) 129 0 R (ID.0086) 131 0 R (ID.0087) 132 0 R (ID.0088) 133 0 R (ID.0089) 134 0 R (ID.0090) 135 0 R (ID.0091) 136 0 R (ID.0092) 137 0 R (ID.0093) 139 0 R (ID.0094) 140 0 R (ID.0095) 141 0 R (ID.0096) 143 0 R (ID.0097) 144 0 R (ID.0098) 147 0 R (ID.0099) 148 0 R (ID.0100) 149 0 R (ID.0101) 150 0 R ] >> endobj -235 0 obj -<< /Limits [(ID.0102) (ID.0151)]/Names [(ID.0102) 151 0 R (ID.0103) 152 0 R (ID.0104) 153 0 R (ID.0105) 154 0 R (ID.0106) 155 0 R (ID.0107) 156 0 R (ID.0108) 157 0 R (ID.0109) 158 0 R (ID.0110) 159 0 R (ID.0111) 160 0 R (ID.0112) 161 0 R (ID.0113) 162 0 R (ID.0114) 163 0 R (ID.0115) 164 0 R (ID.0116) 165 0 R (ID.0117) 167 0 R (ID.0118) 168 0 R (ID.0119) 169 0 R (ID.0120) 170 0 R (ID.0121) 171 0 R (ID.0122) 173 0 R (ID.0123) 174 0 R (ID.0124) 175 0 R (ID.0125) 176 0 R (ID.0126) 177 0 R (ID.0127) 178 0 R (ID.0128) 179 0 R (ID.0129) 180 0 R (ID.0130) 181 0 R (ID.0131) 182 0 R (ID.0132) 183 0 R (ID.0133) 184 0 R (ID.0134) 185 0 R (ID.0135) 186 0 R (ID.0136) 187 0 R (ID.0137) 188 0 R (ID.0138) 189 0 R (ID.0139) 190 0 R (ID.0140) 191 0 R (ID.0141) 192 0 R (ID.0142) 193 0 R (ID.0143) 194 0 R (ID.0144) 195 0 R (ID.0145) 196 0 R (ID.0146) 198 0 R (ID.0147) 199 0 R (ID.0148) 200 0 R (ID.0149) 201 0 R (ID.0150) 202 0 R (ID.0151) 203 0 R ] >> +227 0 obj +<< /Limits [(ID.0102) (ID.0151)]/Names [(ID.0102) 151 0 R (ID.0103) 152 0 R (ID.0104) 153 0 R (ID.0105) 154 0 R (ID.0106) 155 0 R (ID.0107) 156 0 R (ID.0108) 157 0 R (ID.0109) 158 0 R (ID.0110) 159 0 R (ID.0111) 160 0 R (ID.0112) 161 0 R (ID.0113) 162 0 R (ID.0114) 163 0 R (ID.0115) 165 0 R (ID.0116) 166 0 R (ID.0117) 167 0 R (ID.0118) 168 0 R (ID.0119) 169 0 R (ID.0120) 171 0 R (ID.0121) 172 0 R (ID.0122) 173 0 R (ID.0123) 174 0 R (ID.0124) 175 0 R (ID.0125) 176 0 R (ID.0126) 177 0 R (ID.0127) 178 0 R (ID.0128) 179 0 R (ID.0129) 180 0 R (ID.0130) 181 0 R (ID.0131) 182 0 R (ID.0132) 183 0 R (ID.0133) 184 0 R (ID.0134) 185 0 R (ID.0135) 186 0 R (ID.0136) 187 0 R (ID.0137) 188 0 R (ID.0138) 190 0 R (ID.0139) 191 0 R (ID.0140) 192 0 R (ID.0141) 193 0 R (ID.0142) 194 0 R (ID.0143) 195 0 R (ID.0144) 198 0 R (ID.0145) 199 0 R (ID.0146) 200 0 R (ID.0147) 202 0 R (ID.0148) 203 0 R (ID.0149) 204 0 R (ID.0150) 205 0 R (ID.0151) 206 0 R ] >> endobj -236 0 obj -<< /Limits [(ID.0152) (ID.0166)]/Names [(ID.0152) 206 0 R (ID.0153) 207 0 R (ID.0154) 208 0 R (ID.0155) 210 0 R (ID.0156) 211 0 R (ID.0157) 212 0 R (ID.0158) 213 0 R (ID.0159) 214 0 R (ID.0160) 215 0 R (ID.0161) 216 0 R (ID.0162) 217 0 R (ID.0163) 218 0 R (ID.0164) 219 0 R (ID.0165) 220 0 R (ID.0166) 221 0 R ] >> +228 0 obj +<< /Limits [(ID.0152) (ID.0158)]/Names [(ID.0152) 207 0 R (ID.0153) 208 0 R (ID.0154) 209 0 R (ID.0155) 210 0 R (ID.0156) 211 0 R (ID.0157) 212 0 R (ID.0158) 213 0 R ] >> endobj -237 0 obj -<< /Kids [233 0 R 234 0 R 235 0 R 236 0 R] >> +229 0 obj +<< /Kids [225 0 R 226 0 R 227 0 R 228 0 R] >> endobj 7 0 obj << /Artifact /NonStruct /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 /list /L /itemize /L /enumerate /L /description /L /quote /BlockQuote /quotation /BlockQuote /verbatim /P /item /LI /itemlabel /Lbl /itembody /LBody /footnote /Note /footnotemark /Lbl /footnotelabel /Lbl /text-unit /Part /text /P /theorem-like /Sect /codeline /Span /float /Note /figures /Sect /tables /Sect >> endobj -238 0 obj +230 0 obj << /justify <> /display <> /inline <> @@ -1035,13 +1035,13 @@ endobj << /title [/Title 11 0 R] /part [/Title 11 0 R] /section [/H1 11 0 R] /subsection [/H2 11 0 R] /subsubsection [/H3 11 0 R] /paragraph [/H4 11 0 R] /subparagraph [/H5 11 0 R] /list [/L 11 0 R] /itemize [/L 11 0 R] /enumerate [/L 11 0 R] /description [/L 11 0 R] /quote [/BlockQuote 9 0 R] /quotation [/BlockQuote 9 0 R] /verbatim [/P 11 0 R] /item [/LI 11 0 R] /itemlabel [/Lbl 11 0 R] /itembody [/LBody 11 0 R] /footnote [/FENote 11 0 R] /footnotemark [/Lbl 11 0 R] /footnotelabel [/Lbl 11 0 R] /text-unit [/Part 11 0 R] /text [/P 11 0 R] /theorem-like [/Sect 11 0 R] /codeline [/Sub 11 0 R] /float [/Aside 11 0 R] /figures [/Sect 11 0 R] /tables [/Sect 11 0 R] >> endobj 15 0 obj -<< /Type /Namespace /NS (https://www.latex-project.org/ns/dflt/2022) /RoleMapNS 16 0 R >> +<< /Type /Namespace /NS (https://www.latex-project.org/ns/dflt) /RoleMapNS 16 0 R >> endobj 18 0 obj << /chapter [/H1 11 0 R] /section [/H2 11 0 R] /subsection [/H3 11 0 R] /subsubsection [/H4 11 0 R] /paragraph [/H5 11 0 R] /subparagraph [/H6 11 0 R] >> endobj 17 0 obj -<< /Type /Namespace /NS (https://www.latex-project.org/ns/book/2022) /RoleMapNS 18 0 R >> +<< /Type /Namespace /NS (https://www.latex-project.org/ns/book) /RoleMapNS 18 0 R >> endobj 19 0 obj << /Type /Namespace /NS (data:,C9B55C18-275C-494E-C10F-E4B83CD03F23) >> @@ -1050,7 +1050,7 @@ endobj [ 9 0 R 11 0 R 13 0 R 15 0 R 17 0 R 19 0 R ] endobj 21 0 obj -<< /Type /StructElem /S /Document /NS 11 0 R /P 5 0 R /K [34 0 R 36 0 R 95 0 R 123 0 R 143 0 R 201 0 R] /ID (ID.0002) >> +<< /Type /StructElem /S /Document /NS 11 0 R /P 5 0 R /K [34 0 R 36 0 R 95 0 R 123 0 R 143 0 R 193 0 R] /ID (ID.0002) >> endobj 32 0 obj << /Type /StructElem /S /Artifact /NS 15 0 R /P 5 0 R /ID (ID.0003) >> @@ -1062,88 +1062,88 @@ endobj << /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 35 0 R /ID (ID.0005) >> endobj 35 0 obj -<< /Type /StructElem /C /justify /S /text /NS 15 0 R /P 34 0 R /K <> /ID (ID.0006) >> +<< /Type /StructElem /C /justify /S /text /NS 15 0 R /P 34 0 R /K <> /ID (ID.0006) >> endobj 36 0 obj << /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 37 0 R /ID (ID.0007) >> endobj 37 0 obj -<< /Type /StructElem /C /display /AF [23 0 R 39 0 R] /T /S /Formula /NS 11 0 R /P 36 0 R /K [<> <> <> 71 0 R] /ID (ID.0008) >> +<< /Type /StructElem /C /display /AF [23 0 R 39 0 R] /T /S /Formula /NS 11 0 R /P 36 0 R /K [<> <> <> 71 0 R] /ID (ID.0008) >> endobj 40 0 obj << /Type /StructElem /S /mtd /NS 13 0 R /P 81 0 R /K 41 0 R /ID (ID.0009) >> endobj 41 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 40 0 R /K <> /ID (ID.0010) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 40 0 R /K <> /ID (ID.0010) >> endobj 42 0 obj << /Type /StructElem /S /mtd /NS 13 0 R /P 81 0 R /K 43 0 R /ID (ID.0011) >> endobj 43 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 42 0 R /K <> /ID (ID.0012) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 42 0 R /K <> /ID (ID.0012) >> endobj 44 0 obj << /Type /StructElem /S /mtd /NS 13 0 R /P 81 0 R /K 45 0 R /ID (ID.0013) >> endobj 45 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 44 0 R /K <> /ID (ID.0014) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 44 0 R /K <> /ID (ID.0014) >> endobj 46 0 obj << /Type /StructElem /S /mtd /NS 13 0 R /P 82 0 R /K 47 0 R /ID (ID.0015) >> endobj 47 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 46 0 R /K <> /ID (ID.0016) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 46 0 R /K <> /ID (ID.0016) >> endobj 48 0 obj << /Type /StructElem /S /mtd /NS 13 0 R /P 82 0 R /K 49 0 R /ID (ID.0017) >> endobj 49 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 48 0 R /K <> /ID (ID.0018) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 48 0 R /K <> /ID (ID.0018) >> endobj 50 0 obj << /Type /StructElem /S /mtd /NS 13 0 R /P 82 0 R /K 51 0 R /ID (ID.0019) >> endobj 51 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 50 0 R /K <> /ID (ID.0020) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 50 0 R /K <> /ID (ID.0020) >> endobj 52 0 obj << /Type /StructElem /S /mtd /NS 13 0 R /P 83 0 R /K 53 0 R /ID (ID.0021) >> endobj 53 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 52 0 R /K <> /ID (ID.0022) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 52 0 R /K <> /ID (ID.0022) >> endobj 54 0 obj << /Type /StructElem /S /mtd /NS 13 0 R /P 83 0 R /K 55 0 R /ID (ID.0023) >> endobj 55 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 54 0 R /K <> /ID (ID.0024) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 54 0 R /K <> /ID (ID.0024) >> endobj 56 0 obj << /Type /StructElem /S /mtd /NS 13 0 R /P 83 0 R /K 57 0 R /ID (ID.0025) >> endobj 57 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 56 0 R /K <> /ID (ID.0026) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 56 0 R /K <> /ID (ID.0026) >> endobj 58 0 obj << /Type /StructElem /S /mtd /NS 13 0 R /P 91 0 R /K 59 0 R /ID (ID.0027) >> endobj 59 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 58 0 R /K <> /ID (ID.0028) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 58 0 R /K <> /ID (ID.0028) >> endobj 60 0 obj -<< /Type /StructElem /S /mtext /NS 13 0 R /P 66 0 R /K [<> 61 0 R] /ID (ID.0029) >> +<< /Type /StructElem /S /mtext /NS 13 0 R /P 66 0 R /K [<> 61 0 R] /ID (ID.0029) >> endobj 61 0 obj << /Type /StructElem /S /math /NS 13 0 R /P 60 0 R /K [62 0 R 63 0 R 65 0 R] /ID (ID.0030) >> endobj 62 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 61 0 R /K <> /ID (ID.0031) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 61 0 R /K <> /ID (ID.0031) >> endobj 63 0 obj -<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 61 0 R /K <> /ID (ID.0032) >> +<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 61 0 R /K <> /ID (ID.0032) >> endobj 65 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 61 0 R /K <> /ID (ID.0033) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 61 0 R /K <> /ID (ID.0033) >> endobj 66 0 obj << /Type /StructElem /S /mtd /NS 13 0 R /P 91 0 R /K 60 0 R /ID (ID.0034) >> @@ -1152,10 +1152,10 @@ endobj << /Type /StructElem /S /mtd /NS 13 0 R /P 92 0 R /K 68 0 R /ID (ID.0035) >> endobj 68 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 67 0 R /K <> /ID (ID.0036) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 67 0 R /K <> /ID (ID.0036) >> endobj 69 0 obj -<< /Type /StructElem /S /mtext /NS 13 0 R /P 70 0 R /K <> /ID (ID.0037) >> +<< /Type /StructElem /S /mtext /NS 13 0 R /P 70 0 R /K <> /ID (ID.0037) >> endobj 70 0 obj << /Type /StructElem /S /mtd /NS 13 0 R /P 92 0 R /K 69 0 R /ID (ID.0038) >> @@ -1167,7 +1167,7 @@ endobj << /Type /StructElem /S /mrow /NS 13 0 R /P 71 0 R /K [74 0 R 76 0 R 78 0 R 84 0 R 85 0 R] /ID (ID.0040) >> endobj 74 0 obj -<< /Type /StructElem /A 75 0 R /S /mo /NS 13 0 R /P 73 0 R /K <> /ID (ID.0041) >> +<< /Type /StructElem /A 75 0 R /S /mo /NS 13 0 R /P 73 0 R /K <> /ID (ID.0041) >> endobj 76 0 obj << /Type /StructElem /A 77 0 R /S /mspace /NS 13 0 R /P 73 0 R /ID (ID.0042) >> @@ -1191,16 +1191,16 @@ endobj << /Type /StructElem /A 77 0 R /S /mspace /NS 13 0 R /P 73 0 R /ID (ID.0048) >> endobj 85 0 obj -<< /Type /StructElem /A 75 0 R /S /mo /NS 13 0 R /P 73 0 R /K <> /ID (ID.0049) >> +<< /Type /StructElem /A 75 0 R /S /mo /NS 13 0 R /P 73 0 R /K <> /ID (ID.0049) >> endobj 86 0 obj -<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 71 0 R /K <> /ID (ID.0050) >> +<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 71 0 R /K <> /ID (ID.0050) >> endobj 87 0 obj << /Type /StructElem /S /mrow /NS 13 0 R /P 71 0 R /K [88 0 R 89 0 R 93 0 R] /ID (ID.0051) >> endobj 88 0 obj -<< /Type /StructElem /A 75 0 R /S /mo /NS 13 0 R /P 87 0 R /K <> /ID (ID.0052) >> +<< /Type /StructElem /A 75 0 R /S /mo /NS 13 0 R /P 87 0 R /K <> /ID (ID.0052) >> endobj 89 0 obj << /Type /StructElem /A 79 0 R /S /mpadded /NS 13 0 R /P 87 0 R /K 90 0 R /ID (ID.0053) >> @@ -1221,16 +1221,16 @@ endobj << /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 96 0 R /ID (ID.0058) >> endobj 96 0 obj -<< /Type /StructElem /C /display /AF [25 0 R 98 0 R] /T /S /Formula /NS 11 0 R /P 95 0 R /K [<> <> 99 0 R] /ID (ID.0059) >> +<< /Type /StructElem /C /display /AF [25 0 R 98 0 R] /T /S /Formula /NS 11 0 R /P 95 0 R /K [<> <> 99 0 R] /ID (ID.0059) >> endobj 99 0 obj << /Type /StructElem /A 72 0 R /S /math /NS 13 0 R /P 96 0 R /K [100 0 R 101 0 R 102 0 R 121 0 R] /ID (ID.0060) >> endobj 100 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 99 0 R /K <> /ID (ID.0061) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 99 0 R /K <> /ID (ID.0061) >> endobj 101 0 obj -<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 99 0 R /K <> /ID (ID.0062) >> +<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 99 0 R /K <> /ID (ID.0062) >> endobj 102 0 obj << /Type /StructElem /S /mfrac /NS 13 0 R /P 99 0 R /K [103 0 R 118 0 R] /ID (ID.0063) >> @@ -1239,13 +1239,13 @@ endobj << /Type /StructElem /S /mrow /NS 13 0 R /P 102 0 R /K [104 0 R 106 0 R 107 0 R 109 0 R] /ID (ID.0064) >> endobj 104 0 obj -<< /Type /StructElem /A 105 0 R /S /mo /NS 13 0 R /P 103 0 R /K <> /ID (ID.0065) >> +<< /Type /StructElem /A 105 0 R /S /mo /NS 13 0 R /P 103 0 R /K <> /ID (ID.0065) >> endobj 106 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 103 0 R /K <> /ID (ID.0066) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 103 0 R /K <> /ID (ID.0066) >> endobj 107 0 obj -<< /Type /StructElem /A 108 0 R /S /mo /NS 13 0 R /P 103 0 R /K <> /ID (ID.0067) >> +<< /Type /StructElem /A 108 0 R /S /mo /NS 13 0 R /P 103 0 R /K <> /ID (ID.0067) >> endobj 109 0 obj << /Type /StructElem /S /msqrt /NS 13 0 R /P 103 0 R /K 110 0 R /ID (ID.0068) >> @@ -1257,40 +1257,40 @@ endobj << /Type /StructElem /S /msup /NS 13 0 R /P 110 0 R /K [112 0 R 113 0 R] /ID (ID.0070) >> endobj 112 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 111 0 R /K <> /ID (ID.0071) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 111 0 R /K <> /ID (ID.0071) >> endobj 113 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 111 0 R /K <> /ID (ID.0072) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 111 0 R /K <> /ID (ID.0072) >> endobj 114 0 obj -<< /Type /StructElem /A 108 0 R /S /mo /NS 13 0 R /P 110 0 R /K <> /ID (ID.0073) >> +<< /Type /StructElem /A 108 0 R /S /mo /NS 13 0 R /P 110 0 R /K <> /ID (ID.0073) >> endobj 115 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 110 0 R /K <> /ID (ID.0074) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 110 0 R /K <> /ID (ID.0074) >> endobj 116 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 110 0 R /K <> /ID (ID.0075) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 110 0 R /K <> /ID (ID.0075) >> endobj 117 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 110 0 R /K <> /ID (ID.0076) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 110 0 R /K <> /ID (ID.0076) >> endobj 118 0 obj << /Type /StructElem /S /mrow /NS 13 0 R /P 102 0 R /K [119 0 R 120 0 R] /ID (ID.0077) >> endobj 119 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 118 0 R /K <> /ID (ID.0078) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 118 0 R /K <> /ID (ID.0078) >> endobj 120 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 118 0 R /K <> /ID (ID.0079) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 118 0 R /K <> /ID (ID.0079) >> endobj 121 0 obj -<< /Type /StructElem /A 122 0 R /S /mo /NS 13 0 R /P 99 0 R /K <> /ID (ID.0080) >> +<< /Type /StructElem /A 122 0 R /S /mo /NS 13 0 R /P 99 0 R /K <> /ID (ID.0080) >> endobj 123 0 obj << /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 124 0 R /ID (ID.0081) >> endobj 124 0 obj -<< /Type /StructElem /C /display /AF [27 0 R 126 0 R] /T /S /Formula /NS 11 0 R /P 123 0 R /K [<> 127 0 R] /ID (ID.0082) >> +<< /Type /StructElem /C /display /AF [27 0 R 126 0 R] /T /S /Formula /NS 11 0 R /P 123 0 R /K [<> 127 0 R] /ID (ID.0082) >> endobj 127 0 obj << /Type /StructElem /A 72 0 R /S /math /NS 13 0 R /P 124 0 R /K [128 0 R 132 0 R 135 0 R 139 0 R] /ID (ID.0083) >> @@ -1299,16 +1299,16 @@ endobj << /Type /StructElem /S /munder /NS 13 0 R /P 127 0 R /K [129 0 R 131 0 R] /ID (ID.0084) >> endobj 129 0 obj -<< /Type /StructElem /A 130 0 R /S /mo /NS 13 0 R /P 128 0 R /K <> /ID (ID.0085) >> +<< /Type /StructElem /A 130 0 R /S /mo /NS 13 0 R /P 128 0 R /K <> /ID (ID.0085) >> endobj 131 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 128 0 R /K <> /ID (ID.0086) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 128 0 R /K <> /ID (ID.0086) >> endobj 132 0 obj << /Type /StructElem /S /munder /NS 13 0 R /P 127 0 R /K [133 0 R 134 0 R] /ID (ID.0087) >> endobj 133 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 132 0 R /K <> /ID (ID.0088) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 132 0 R /K <> /ID (ID.0088) >> endobj 134 0 obj << /Type /StructElem /S /mo /NS 13 0 R /P 132 0 R /ID (ID.0089) >> @@ -1317,247 +1317,223 @@ endobj << /Type /StructElem /S /mover /NS 13 0 R /P 127 0 R /K [136 0 R 137 0 R] /ID (ID.0090) >> endobj 136 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 135 0 R /K <> /ID (ID.0091) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 135 0 R /K <> /ID (ID.0091) >> endobj 137 0 obj -<< /Type /StructElem /A 138 0 R /S /mo /NS 13 0 R /P 135 0 R /K <> /ID (ID.0092) >> +<< /Type /StructElem /A 138 0 R /S /mo /NS 13 0 R /P 135 0 R /K <> /ID (ID.0092) >> endobj 139 0 obj << /Type /StructElem /S /msup /NS 13 0 R /P 127 0 R /K [140 0 R 141 0 R] /ID (ID.0093) >> endobj 140 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 139 0 R /K <> /ID (ID.0094) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 139 0 R /K <> /ID (ID.0094) >> endobj 141 0 obj -<< /Type /StructElem /A 142 0 R /S /mi /NS 13 0 R /P 139 0 R /K <> /ID (ID.0095) >> +<< /Type /StructElem /A 142 0 R /S /mi /NS 13 0 R /P 139 0 R /K <> /ID (ID.0095) >> endobj 143 0 obj << /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 144 0 R /ID (ID.0096) >> endobj 144 0 obj -<< /Type /StructElem /C /display /AF [29 0 R 146 0 R] /T /S /Formula /NS 11 0 R /P 143 0 R /K [<> 169 0 R <> 185 0 R <> 194 0 R 195 0 R] /ID (ID.0097) >> +<< /Type /StructElem /C /display /AF [29 0 R 146 0 R] /T /S /Formula /NS 11 0 R /P 143 0 R /K [<> 167 0 R <> 180 0 R <> 186 0 R 187 0 R] /ID (ID.0097) >> endobj 147 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 198 0 R /K [148 0 R 149 0 R 150 0 R] /ID (ID.0098) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 190 0 R /K [148 0 R 149 0 R 150 0 R] /ID (ID.0098) >> endobj 148 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 147 0 R /K <> /ID (ID.0099) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 147 0 R /K <> /ID (ID.0099) >> endobj 149 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 147 0 R /K <> /ID (ID.0100) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 147 0 R /K <> /ID (ID.0100) >> endobj 150 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 147 0 R /K <> /ID (ID.0101) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 147 0 R /K <> /ID (ID.0101) >> endobj 151 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 198 0 R /K [152 0 R 153 0 R 154 0 R 155 0 R 156 0 R] /ID (ID.0102) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 190 0 R /K [152 0 R 153 0 R 154 0 R 155 0 R] /ID (ID.0102) >> endobj 152 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 151 0 R /ID (ID.0103) >> +<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 151 0 R /K <> /ID (ID.0103) >> endobj 153 0 obj -<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 151 0 R /K <> /ID (ID.0104) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 151 0 R /K <> /ID (ID.0104) >> endobj 154 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 151 0 R /K <> /ID (ID.0105) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 151 0 R /K <> /ID (ID.0105) >> endobj 155 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 151 0 R /K <> /ID (ID.0106) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 151 0 R /K <> /ID (ID.0106) >> endobj 156 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 151 0 R /K <> /ID (ID.0107) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 190 0 R /K 157 0 R /ID (ID.0107) >> endobj 157 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 198 0 R /K 158 0 R /ID (ID.0108) >> +<< /Type /StructElem /S /msup /NS 13 0 R /P 156 0 R /K [158 0 R 159 0 R] /ID (ID.0108) >> endobj 158 0 obj -<< /Type /StructElem /S /msup /NS 13 0 R /P 157 0 R /K [159 0 R 160 0 R] /ID (ID.0109) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 157 0 R /K <> /ID (ID.0109) >> endobj 159 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 158 0 R /K <> /ID (ID.0110) >> +<< /Type /StructElem /S /mrow /NS 13 0 R /P 157 0 R /K [160 0 R 161 0 R] /ID (ID.0110) >> endobj 160 0 obj -<< /Type /StructElem /S /mrow /NS 13 0 R /P 158 0 R /K [161 0 R 162 0 R] /ID (ID.0111) >> +<< /Type /StructElem /A 142 0 R /S /mi /NS 13 0 R /P 159 0 R /K <> /ID (ID.0111) >> endobj 161 0 obj -<< /Type /StructElem /A 142 0 R /S /mi /NS 13 0 R /P 160 0 R /K <> /ID (ID.0112) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 159 0 R /K <> /ID (ID.0112) >> endobj 162 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 160 0 R /K <> /ID (ID.0113) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 190 0 R /K [163 0 R 165 0 R 166 0 R] /ID (ID.0113) >> endobj 163 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 198 0 R /K [164 0 R 165 0 R 167 0 R 168 0 R] /ID (ID.0114) >> -endobj -164 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 163 0 R /ID (ID.0115) >> +<< /Type /StructElem /A 164 0 R /S /mo /NS 13 0 R /P 162 0 R /K <> /ID (ID.0114) >> endobj 165 0 obj -<< /Type /StructElem /A 166 0 R /S /mo /NS 13 0 R /P 163 0 R /K <> /ID (ID.0116) >> +<< /Type /StructElem /A 164 0 R /S /mo /NS 13 0 R /P 162 0 R /K <> /ID (ID.0115) >> +endobj +166 0 obj +<< /Type /StructElem /S /mn /NS 13 0 R /P 162 0 R /K <> /ID (ID.0116) >> endobj 167 0 obj -<< /Type /StructElem /A 166 0 R /S /mo /NS 13 0 R /P 163 0 R /K <> /ID (ID.0117) >> +<< /Type /StructElem /S /Lbl /NS 11 0 R /P 144 0 R /K <> /ID (ID.0117) >> endobj 168 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 163 0 R /K <> /ID (ID.0118) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 191 0 R /K [169 0 R 171 0 R 172 0 R 173 0 R] /ID (ID.0118) >> endobj 169 0 obj -<< /Type /StructElem /S /Lbl /NS 11 0 R /P 144 0 R /K <> /ID (ID.0119) >> -endobj -170 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 199 0 R /K [171 0 R 173 0 R 174 0 R 175 0 R] /ID (ID.0120) >> +<< /Type /StructElem /A 170 0 R /S /mo /NS 13 0 R /P 168 0 R /K <> /ID (ID.0119) >> endobj 171 0 obj -<< /Type /StructElem /A 172 0 R /S /mo /NS 13 0 R /P 170 0 R /K <> /ID (ID.0121) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 168 0 R /K <> /ID (ID.0120) >> +endobj +172 0 obj +<< /Type /StructElem /A 108 0 R /S /mo /NS 13 0 R /P 168 0 R /K <> /ID (ID.0121) >> endobj 173 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 170 0 R /K <> /ID (ID.0122) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 168 0 R /K <> /ID (ID.0122) >> endobj 174 0 obj -<< /Type /StructElem /A 108 0 R /S /mo /NS 13 0 R /P 170 0 R /K <> /ID (ID.0123) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 191 0 R /K [175 0 R 176 0 R 177 0 R] /ID (ID.0123) >> endobj 175 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 170 0 R /K <> /ID (ID.0124) >> +<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 174 0 R /K <> /ID (ID.0124) >> endobj 176 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 199 0 R /K [177 0 R 178 0 R 179 0 R 180 0 R] /ID (ID.0125) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 174 0 R /K <> /ID (ID.0125) >> endobj 177 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 176 0 R /ID (ID.0126) >> +<< /Type /StructElem /A 170 0 R /S /mo /NS 13 0 R /P 174 0 R /K <> /ID (ID.0126) >> endobj 178 0 obj -<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 176 0 R /K <> /ID (ID.0127) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 191 0 R /ID (ID.0127) >> endobj 179 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 176 0 R /K <> /ID (ID.0128) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 191 0 R /ID (ID.0128) >> endobj 180 0 obj -<< /Type /StructElem /A 172 0 R /S /mo /NS 13 0 R /P 176 0 R /K <> /ID (ID.0129) >> +<< /Type /StructElem /S /Lbl /NS 11 0 R /P 144 0 R /K <> /ID (ID.0129) >> endobj 181 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 199 0 R /K 182 0 R /ID (ID.0130) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 192 0 R /K 182 0 R /ID (ID.0130) >> endobj 182 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 181 0 R /ID (ID.0131) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 181 0 R /K <> /ID (ID.0131) >> endobj 183 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 199 0 R /K 184 0 R /ID (ID.0132) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 192 0 R /ID (ID.0132) >> endobj 184 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 183 0 R /ID (ID.0133) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 192 0 R /ID (ID.0133) >> endobj 185 0 obj -<< /Type /StructElem /S /Lbl /NS 11 0 R /P 144 0 R /K <> /ID (ID.0134) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 192 0 R /ID (ID.0134) >> endobj 186 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 200 0 R /K 187 0 R /ID (ID.0135) >> +<< /Type /StructElem /S /Lbl /NS 11 0 R /P 144 0 R /K <> /ID (ID.0135) >> endobj 187 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 186 0 R /K <> /ID (ID.0136) >> +<< /Type /StructElem /A 72 0 R /S /math /NS 13 0 R /P 144 0 R /K 188 0 R /ID (ID.0136) >> endobj 188 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 200 0 R /K 189 0 R /ID (ID.0137) >> -endobj -189 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 188 0 R /ID (ID.0138) >> +<< /Type /StructElem /A 189 0 R /S /mtable /NS 13 0 R /P 187 0 R /K [190 0 R 191 0 R 192 0 R] /ID (ID.0137) >> endobj 190 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 200 0 R /K 191 0 R /ID (ID.0139) >> +<< /Type /StructElem /S /mtr /NS 13 0 R /P 188 0 R /K [147 0 R 151 0 R 156 0 R 162 0 R] /ID (ID.0138) >> endobj 191 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 190 0 R /ID (ID.0140) >> +<< /Type /StructElem /S /mtr /NS 13 0 R /P 188 0 R /K [168 0 R 174 0 R 178 0 R 179 0 R] /ID (ID.0139) >> endobj 192 0 obj -<< /Type /StructElem /S /mtd /NS 13 0 R /P 200 0 R /K 193 0 R /ID (ID.0141) >> +<< /Type /StructElem /S /mtr /NS 13 0 R /P 188 0 R /K [181 0 R 183 0 R 184 0 R 185 0 R] /ID (ID.0140) >> endobj 193 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 192 0 R /ID (ID.0142) >> +<< /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 194 0 R /ID (ID.0141) >> endobj 194 0 obj -<< /Type /StructElem /S /Lbl /NS 11 0 R /P 144 0 R /K <> /ID (ID.0143) >> +<< /Type /StructElem /C /justify /S /text /NS 15 0 R /P 193 0 R /K [<> 195 0 R <> ] /ID (ID.0142) >> endobj 195 0 obj -<< /Type /StructElem /A 72 0 R /S /math /NS 13 0 R /P 144 0 R /K 196 0 R /ID (ID.0144) >> -endobj -196 0 obj -<< /Type /StructElem /A 197 0 R /S /mtable /NS 13 0 R /P 195 0 R /K [198 0 R 199 0 R 200 0 R] /ID (ID.0145) >> +<< /Type /StructElem /C /inline /AF [31 0 R 197 0 R] /T /S /Formula /NS 11 0 R /P 194 0 R /K [<> 198 0 R] /ID (ID.0143) >> endobj 198 0 obj -<< /Type /StructElem /S /mtr /NS 13 0 R /P 196 0 R /K [147 0 R 151 0 R 157 0 R 163 0 R] /ID (ID.0146) >> +<< /Type /StructElem /S /math /NS 13 0 R /P 195 0 R /K [199 0 R 200 0 R 202 0 R 203 0 R 204 0 R 205 0 R 206 0 R 207 0 R 208 0 R 209 0 R 210 0 R 211 0 R 212 0 R 213 0 R] /ID (ID.0144) >> endobj 199 0 obj -<< /Type /StructElem /S /mtr /NS 13 0 R /P 196 0 R /K [170 0 R 176 0 R 181 0 R 183 0 R] /ID (ID.0147) >> +<< /Type /StructElem /A 142 0 R /S /mi /NS 13 0 R /P 198 0 R /K <> /ID (ID.0145) >> endobj 200 0 obj -<< /Type /StructElem /S /mtr /NS 13 0 R /P 196 0 R /K [186 0 R 188 0 R 190 0 R 192 0 R] /ID (ID.0148) >> -endobj -201 0 obj -<< /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 202 0 R /ID (ID.0149) >> +<< /Type /StructElem /A 201 0 R /S /mo /NS 13 0 R /P 198 0 R /K <> /ID (ID.0146) >> endobj 202 0 obj -<< /Type /StructElem /C /justify /S /text /NS 15 0 R /P 201 0 R /K [<> 203 0 R <> ] /ID (ID.0150) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 198 0 R /K <> /ID (ID.0147) >> endobj 203 0 obj -<< /Type /StructElem /C /inline /AF [31 0 R 205 0 R] /T /S /Formula /NS 11 0 R /P 202 0 R /K [<> 206 0 R] /ID (ID.0151) >> +<< /Type /StructElem /A 201 0 R /S /mo /NS 13 0 R /P 198 0 R /K <> /ID (ID.0148) >> +endobj +204 0 obj +<< /Type /StructElem /A 108 0 R /S /mo /NS 13 0 R /P 198 0 R /K <> /ID (ID.0149) >> +endobj +205 0 obj +<< /Type /StructElem /A 142 0 R /S /mi /NS 13 0 R /P 198 0 R /K <> /ID (ID.0150) >> endobj 206 0 obj -<< /Type /StructElem /S /math /NS 13 0 R /P 203 0 R /K [207 0 R 208 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R] /ID (ID.0152) >> +<< /Type /StructElem /A 201 0 R /S /mo /NS 13 0 R /P 198 0 R /K <> /ID (ID.0151) >> endobj 207 0 obj -<< /Type /StructElem /A 142 0 R /S /mi /NS 13 0 R /P 206 0 R /K <> /ID (ID.0153) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 198 0 R /K <> /ID (ID.0152) >> endobj 208 0 obj -<< /Type /StructElem /A 209 0 R /S /mo /NS 13 0 R /P 206 0 R /K <> /ID (ID.0154) >> +<< /Type /StructElem /A 108 0 R /S /mo /NS 13 0 R /P 198 0 R /K <> /ID (ID.0153) >> +endobj +209 0 obj +<< /Type /StructElem /S /mn /NS 13 0 R /P 198 0 R /K <> /ID (ID.0154) >> endobj 210 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 206 0 R /K <> /ID (ID.0155) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 198 0 R /K <> /ID (ID.0155) >> endobj 211 0 obj -<< /Type /StructElem /A 209 0 R /S /mo /NS 13 0 R /P 206 0 R /K <> /ID (ID.0156) >> +<< /Type /StructElem /A 201 0 R /S /mo /NS 13 0 R /P 198 0 R /K <> /ID (ID.0156) >> endobj 212 0 obj -<< /Type /StructElem /A 108 0 R /S /mo /NS 13 0 R /P 206 0 R /K <> /ID (ID.0157) >> +<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 198 0 R /K <> /ID (ID.0157) >> endobj 213 0 obj -<< /Type /StructElem /A 142 0 R /S /mi /NS 13 0 R /P 206 0 R /K <> /ID (ID.0158) >> -endobj -214 0 obj -<< /Type /StructElem /A 209 0 R /S /mo /NS 13 0 R /P 206 0 R /K <> /ID (ID.0159) >> -endobj -215 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 206 0 R /K <> /ID (ID.0160) >> -endobj -216 0 obj -<< /Type /StructElem /A 108 0 R /S /mo /NS 13 0 R /P 206 0 R /K <> /ID (ID.0161) >> -endobj -217 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 206 0 R /K <> /ID (ID.0162) >> -endobj -218 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 206 0 R /K <> /ID (ID.0163) >> -endobj -219 0 obj -<< /Type /StructElem /A 209 0 R /S /mo /NS 13 0 R /P 206 0 R /K <> /ID (ID.0164) >> -endobj -220 0 obj -<< /Type /StructElem /A 64 0 R /S /mo /NS 13 0 R /P 206 0 R /K <> /ID (ID.0165) >> -endobj -221 0 obj -<< /Type /StructElem /S /mn /NS 13 0 R /P 206 0 R /K <> /ID (ID.0166) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 198 0 R /K <> /ID (ID.0158) >> endobj 5 0 obj -<< /Type /StructTreeRoot /Namespaces 8 0 R /IDTree 237 0 R /ClassMap 238 0 R /ParentTree 6 0 R /RoleMap 7 0 R /K 21 0 R >> +<< /Type /StructTreeRoot /Namespaces 8 0 R /IDTree 229 0 R /ClassMap 230 0 R /ParentTree 6 0 R /RoleMap 7 0 R /K 21 0 R >> endobj -239 0 obj +231 0 obj [ 66 [ 323 ] ] endobj -241 0 obj +233 0 obj << /Subtype /CIDFontType0C /Length 592 >> [BINARY STREAM] endobj -240 0 obj -<< /Type /FontDescriptor /FontName /QTQISS+LMRoman7-Regular /Flags 4 /FontBBox [ -483 -292 1562 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 108 /XHeight 431 /FontFile3 241 0 R >> +232 0 obj +<< /Type /FontDescriptor /FontName /QTQISS+LMRoman7-Regular /Flags 4 /FontBBox [ -483 -292 1562 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 108 /XHeight 431 /FontFile3 233 0 R >> endobj -242 0 obj +234 0 obj << /Length 687 >> stream %!PS-Adobe-3.0 Resource-CMap @@ -1593,23 +1569,23 @@ end %%EOF endstream endobj -229 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /QTQISS+LMRoman7-Regular /DescendantFonts [ 243 0 R ] /ToUnicode 242 0 R >> +221 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /QTQISS+LMRoman7-Regular /DescendantFonts [ 235 0 R ] /ToUnicode 234 0 R >> endobj -243 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /QTQISS+LMRoman7-Regular /FontDescriptor 240 0 R /W 239 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +235 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /QTQISS+LMRoman7-Regular /FontDescriptor 232 0 R /W 231 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -244 0 obj +236 0 obj [ 1013 [ 569 ] 1404 [ 620 ] 2981 [ 407 ] 4558 [ 668 ] ] endobj -246 0 obj +238 0 obj << /Subtype /CIDFontType0C /Length 1102 >> [BINARY STREAM] endobj -245 0 obj -<< /Type /FontDescriptor /FontName /ZIIHRW+LatinModernMath-Regular /Flags 4 /FontBBox [ -1042 -3060 4082 3560 ] /Ascent 806 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 113 /XHeight 431 /FontFile3 246 0 R >> +237 0 obj +<< /Type /FontDescriptor /FontName /ZIIHRW+LatinModernMath-Regular /Flags 4 /FontBBox [ -1042 -3060 4082 3560 ] /Ascent 806 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 113 /XHeight 431 /FontFile3 238 0 R >> endobj -247 0 obj +239 0 obj << /Length 772 >> stream %!PS-Adobe-3.0 Resource-CMap @@ -1648,23 +1624,23 @@ end %%EOF endstream endobj -228 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ZIIHRW+LatinModernMath-Regular /DescendantFonts [ 248 0 R ] /ToUnicode 247 0 R >> +220 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ZIIHRW+LatinModernMath-Regular /DescendantFonts [ 240 0 R ] /ToUnicode 239 0 R >> endobj -248 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ZIIHRW+LatinModernMath-Regular /FontDescriptor 245 0 R /W 244 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +240 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ZIIHRW+LatinModernMath-Regular /FontDescriptor 237 0 R /W 236 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -249 0 obj +241 0 obj [ 9 [ 389 389 ] 12 [ 778 ] 15 [ 278 ] 17 [ 500 500 500 500 500 500 ] 30 [ 778 ] 1296 [ 529 429 433 520 466 490 ] 1319 [ 572 ] 1790 [ 0 ] 2455 [ 663 663 ] 2503 [ 875 875 875 875 875 875 ] 2515 [ 902 ] 2615 [ 778 ] 2619 [ 778 ] 3074 [ 1444 ] 3077 [ 833 ] 4474 [ 570 ] ] endobj -251 0 obj +243 0 obj << /Subtype /CIDFontType0C /Length 4088 >> [BINARY STREAM] endobj -250 0 obj -<< /Type /FontDescriptor /FontName /RHJXIX+LatinModernMath-Regular /Flags 4 /FontBBox [ -1042 -3060 4082 3560 ] /Ascent 806 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 251 0 R >> +242 0 obj +<< /Type /FontDescriptor /FontName /RHJXIX+LatinModernMath-Regular /Flags 4 /FontBBox [ -1042 -3060 4082 3560 ] /Ascent 806 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 243 0 R >> endobj -252 0 obj +244 0 obj << /Length 1203 >> stream %!PS-Adobe-3.0 Resource-CMap @@ -1732,23 +1708,23 @@ end %%EOF endstream endobj -227 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RHJXIX+LatinModernMath-Regular /DescendantFonts [ 253 0 R ] /ToUnicode 252 0 R >> +219 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RHJXIX+LatinModernMath-Regular /DescendantFonts [ 245 0 R ] /ToUnicode 244 0 R >> endobj -253 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RHJXIX+LatinModernMath-Regular /FontDescriptor 250 0 R /W 249 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +245 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RHJXIX+LatinModernMath-Regular /FontDescriptor 242 0 R /W 241 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -254 0 obj +246 0 obj [ 49 [ 681 444 ] 55 [ 306 ] 59 [ 500 ] 63 [ 556 ] 66 [ 278 ] 72 [ 278 ] 77 [ 556 ] 81 [ 500 500 ] 85 [ 389 389 ] 88 [ 278 ] 98 [ 394 ] 103 [ 333 ] 105 [ 389 500 500 ] ] endobj -256 0 obj +248 0 obj << /Subtype /CIDFontType0C /Length 2411 >> [BINARY STREAM] endobj -255 0 obj -<< /Type /FontDescriptor /FontName /RYKTJL+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 256 0 R >> +247 0 obj +<< /Type /FontDescriptor /FontName /RYKTJL+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 248 0 R >> endobj -257 0 obj +249 0 obj << /Length 931 >> stream %!PS-Adobe-3.0 Resource-CMap @@ -1801,48 +1777,48 @@ end %%EOF endstream endobj -226 0 obj -<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RYKTJL+LMRoman10-Regular /DescendantFonts [ 258 0 R ] /ToUnicode 257 0 R >> +218 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RYKTJL+LMRoman10-Regular /DescendantFonts [ 250 0 R ] /ToUnicode 249 0 R >> endobj -258 0 obj -<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RYKTJL+LMRoman10-Regular /FontDescriptor 255 0 R /W 254 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> +250 0 obj +<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RYKTJL+LMRoman10-Regular /FontDescriptor 247 0 R /W 246 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >> endobj -230 0 obj -<< /Type /Pages /Count 1 /Kids [ 224 0 R ] >> +222 0 obj +<< /Type /Pages /Count 1 /Kids [ 216 0 R ] >> endobj -259 0 obj -<< /EmbeddedFiles 232 0 R >> +251 0 obj +<< /EmbeddedFiles 224 0 R >> endobj -260 0 obj -<< /Type /Catalog /Pages 230 0 R /Names 259 0 R /MarkInfo 231 0 R/Lang (en)/Metadata 222 0 R/StructTreeRoot 5 0 R >> +252 0 obj +<< /Type /Catalog /Pages 222 0 R /Names 251 0 R /MarkInfo 223 0 R/Lang (en)/Metadata 214 0 R/StructTreeRoot 5 0 R >> endobj -261 0 obj +253 0 obj << /Producer (LuaTeX)/Creator (TeX)/CreationDate (D:20160520090000Z)/ModDate (D:20160520090000Z) /Trapped /False >> endobj xref -0 262 +0 254 0000000002 65535 f -0000028118 00000 n +0000028070 00000 n 0000000003 00000 f 0000000004 00000 f 0000000010 00000 f -0000054832 00000 n -0000028323 00000 n -0000032291 00000 n -0000034486 00000 n -0000033111 00000 n +0000053863 00000 n +0000028275 00000 n +0000032099 00000 n +0000034284 00000 n +0000032919 00000 n 0000000012 00000 f -0000033179 00000 n +0000032987 00000 n 0000000014 00000 f -0000033249 00000 n +0000033057 00000 n 0000000020 00000 f -0000034012 00000 n -0000033330 00000 n -0000034290 00000 n -0000034119 00000 n -0000034397 00000 n +0000033820 00000 n +0000033138 00000 n +0000034093 00000 n +0000033922 00000 n +0000034195 00000 n 0000000000 00000 f -0000034547 00000 n +0000034345 00000 n 0000000020 00000 n 0000000299 00000 n 0000000486 00000 n @@ -1850,241 +1826,233 @@ xref 0000001318 00000 n 0000001800 00000 n 0000001987 00000 n -0000003198 00000 n -0000003385 00000 n -0000004064 00000 n -0000034686 00000 n -0000034775 00000 n -0000034864 00000 n -0000034965 00000 n -0000035102 00000 n -0000035203 00000 n -0000004251 00000 n -0000004566 00000 n -0000035489 00000 n -0000035584 00000 n -0000035707 00000 n -0000035802 00000 n -0000035925 00000 n -0000036020 00000 n -0000036143 00000 n -0000036238 00000 n -0000036361 00000 n -0000036456 00000 n -0000036579 00000 n -0000036674 00000 n -0000036797 00000 n -0000036892 00000 n -0000037016 00000 n -0000037111 00000 n -0000037235 00000 n -0000037330 00000 n -0000037454 00000 n -0000037549 00000 n -0000037673 00000 n -0000037809 00000 n -0000037921 00000 n -0000038045 00000 n -0000004766 00000 n -0000038180 00000 n -0000038304 00000 n -0000038399 00000 n -0000038494 00000 n -0000038618 00000 n -0000038745 00000 n -0000038840 00000 n -0000004837 00000 n -0000038963 00000 n -0000039089 00000 n -0000004891 00000 n -0000039223 00000 n -0000004978 00000 n -0000039322 00000 n -0000005033 00000 n -0000039432 00000 n -0000039546 00000 n -0000039657 00000 n -0000039768 00000 n -0000039879 00000 n -0000039978 00000 n -0000040113 00000 n -0000040248 00000 n -0000040360 00000 n -0000040495 00000 n -0000040605 00000 n -0000040712 00000 n -0000040816 00000 n -0000040920 00000 n -0000005105 00000 n -0000041019 00000 n -0000041120 00000 n -0000005159 00000 n -0000005375 00000 n -0000041372 00000 n -0000041506 00000 n -0000041631 00000 n -0000041767 00000 n -0000041876 00000 n -0000042001 00000 n -0000005575 00000 n -0000042139 00000 n -0000042265 00000 n -0000005641 00000 n -0000042403 00000 n -0000042503 00000 n -0000042636 00000 n -0000042745 00000 n -0000042871 00000 n -0000042997 00000 n -0000043135 00000 n -0000043261 00000 n -0000043387 00000 n -0000043513 00000 n -0000043622 00000 n -0000043748 00000 n -0000043874 00000 n -0000005713 00000 n -0000044011 00000 n -0000044114 00000 n -0000005773 00000 n -0000005978 00000 n -0000044334 00000 n -0000044470 00000 n -0000044581 00000 n -0000006181 00000 n -0000044719 00000 n -0000044845 00000 n -0000044956 00000 n -0000045082 00000 n -0000045168 00000 n -0000045278 00000 n -0000045404 00000 n -0000006267 00000 n -0000045542 00000 n -0000045651 00000 n -0000045777 00000 n -0000006322 00000 n -0000045915 00000 n -0000046018 00000 n -0000006382 00000 n -0000006611 00000 n -0000046321 00000 n -0000046437 00000 n -0000046563 00000 n -0000046689 00000 n -0000046815 00000 n -0000046947 00000 n -0000047033 00000 n -0000047170 00000 n -0000047296 00000 n -0000047422 00000 n -0000047548 00000 n -0000047646 00000 n -0000047755 00000 n -0000047881 00000 n -0000047990 00000 n -0000048128 00000 n -0000048254 00000 n -0000048378 00000 n -0000048464 00000 n -0000006814 00000 n -0000048602 00000 n -0000048740 00000 n -0000048866 00000 n -0000048993 00000 n -0000049117 00000 n -0000006880 00000 n +0000003150 00000 n +0000003337 00000 n +0000004016 00000 n +0000034484 00000 n +0000034573 00000 n +0000034662 00000 n +0000034763 00000 n +0000034900 00000 n +0000035001 00000 n +0000004203 00000 n +0000004518 00000 n +0000035287 00000 n +0000035382 00000 n +0000035505 00000 n +0000035600 00000 n +0000035723 00000 n +0000035818 00000 n +0000035941 00000 n +0000036036 00000 n +0000036159 00000 n +0000036254 00000 n +0000036377 00000 n +0000036472 00000 n +0000036595 00000 n +0000036690 00000 n +0000036814 00000 n +0000036909 00000 n +0000037033 00000 n +0000037128 00000 n +0000037252 00000 n +0000037347 00000 n +0000037471 00000 n +0000037607 00000 n +0000037719 00000 n +0000037843 00000 n +0000004718 00000 n +0000037978 00000 n +0000038102 00000 n +0000038197 00000 n +0000038292 00000 n +0000038416 00000 n +0000038543 00000 n +0000038638 00000 n +0000004789 00000 n +0000038761 00000 n +0000038887 00000 n +0000004843 00000 n +0000039021 00000 n +0000004930 00000 n +0000039120 00000 n +0000004985 00000 n +0000039230 00000 n +0000039344 00000 n +0000039455 00000 n +0000039566 00000 n +0000039677 00000 n +0000039776 00000 n +0000039911 00000 n +0000040046 00000 n +0000040158 00000 n +0000040293 00000 n +0000040403 00000 n +0000040510 00000 n +0000040614 00000 n +0000040718 00000 n +0000005057 00000 n +0000040817 00000 n +0000040918 00000 n +0000005111 00000 n +0000005327 00000 n +0000041170 00000 n +0000041304 00000 n +0000041429 00000 n +0000041565 00000 n +0000041674 00000 n +0000041799 00000 n +0000005527 00000 n +0000041937 00000 n +0000042063 00000 n +0000005593 00000 n +0000042201 00000 n +0000042301 00000 n +0000042434 00000 n +0000042543 00000 n +0000042669 00000 n +0000042795 00000 n +0000042933 00000 n +0000043059 00000 n +0000043185 00000 n +0000043311 00000 n +0000043420 00000 n +0000043546 00000 n +0000043672 00000 n +0000005665 00000 n +0000043809 00000 n +0000043912 00000 n +0000005725 00000 n +0000005930 00000 n +0000044132 00000 n +0000044268 00000 n +0000044379 00000 n +0000006133 00000 n +0000044517 00000 n +0000044643 00000 n +0000044754 00000 n +0000044880 00000 n +0000044966 00000 n +0000045076 00000 n +0000045202 00000 n +0000006219 00000 n +0000045340 00000 n +0000045449 00000 n +0000045575 00000 n +0000006274 00000 n +0000045713 00000 n +0000045816 00000 n +0000006334 00000 n +0000006563 00000 n +0000046119 00000 n +0000046235 00000 n +0000046361 00000 n +0000046487 00000 n +0000046613 00000 n +0000046737 00000 n +0000046874 00000 n +0000047000 00000 n +0000047126 00000 n +0000047252 00000 n +0000047350 00000 n +0000047459 00000 n +0000047585 00000 n +0000047694 00000 n +0000047832 00000 n +0000047958 00000 n +0000048074 00000 n +0000006766 00000 n +0000048212 00000 n +0000048350 00000 n +0000048476 00000 n +0000048603 00000 n +0000048727 00000 n +0000006832 00000 n +0000048865 00000 n +0000048991 00000 n +0000049129 00000 n 0000049255 00000 n -0000049381 00000 n -0000049519 00000 n -0000049645 00000 n -0000049769 00000 n -0000049855 00000 n -0000049992 00000 n -0000050118 00000 n -0000050256 00000 n -0000050354 00000 n -0000050440 00000 n -0000050538 00000 n -0000050624 00000 n -0000050751 00000 n -0000050849 00000 n -0000050975 00000 n -0000051073 00000 n -0000051159 00000 n -0000051257 00000 n -0000051343 00000 n -0000051441 00000 n -0000051527 00000 n -0000051654 00000 n -0000051764 00000 n -0000007004 00000 n -0000051895 00000 n -0000052019 00000 n -0000052143 00000 n -0000052267 00000 n -0000052370 00000 n -0000052557 00000 n -0000007122 00000 n -0000007293 00000 n -0000052756 00000 n -0000052961 00000 n -0000053099 00000 n -0000007496 00000 n -0000053237 00000 n -0000053363 00000 n -0000053501 00000 n -0000053639 00000 n -0000053777 00000 n -0000053915 00000 n -0000054041 00000 n -0000054179 00000 n -0000054305 00000 n -0000054431 00000 n -0000054569 00000 n -0000054706 00000 n -0000007572 00000 n -0000028014 00000 n -0000027875 00000 n -0000019356 00000 n -0000069926 00000 n -0000065657 00000 n -0000059333 00000 n -0000056651 00000 n -0000070286 00000 n -0000028165 00000 n -0000028202 00000 n -0000029069 00000 n -0000029981 00000 n -0000030934 00000 n -0000031896 00000 n -0000032228 00000 n -0000032870 00000 n -0000054971 00000 n -0000055680 00000 n -0000055003 00000 n -0000055903 00000 n -0000056807 00000 n -0000057009 00000 n -0000058269 00000 n -0000057082 00000 n -0000058500 00000 n -0000059496 00000 n -0000059705 00000 n -0000064163 00000 n -0000059990 00000 n -0000064393 00000 n -0000065820 00000 n -0000066029 00000 n -0000068711 00000 n -0000066215 00000 n -0000068934 00000 n -0000070083 00000 n -0000070350 00000 n -0000070396 00000 n -0000070530 00000 n +0000049371 00000 n +0000049508 00000 n +0000049634 00000 n +0000049772 00000 n +0000049859 00000 n +0000049946 00000 n +0000050073 00000 n +0000050171 00000 n +0000050297 00000 n +0000050384 00000 n +0000050471 00000 n +0000050558 00000 n +0000050685 00000 n +0000050795 00000 n +0000006956 00000 n +0000050926 00000 n +0000051050 00000 n +0000051174 00000 n +0000051298 00000 n +0000051401 00000 n +0000051588 00000 n +0000007074 00000 n +0000007245 00000 n +0000051787 00000 n +0000051992 00000 n +0000052130 00000 n +0000007448 00000 n +0000052268 00000 n +0000052394 00000 n +0000052532 00000 n +0000052670 00000 n +0000052808 00000 n +0000052946 00000 n +0000053072 00000 n +0000053210 00000 n +0000053336 00000 n +0000053462 00000 n +0000053600 00000 n +0000053737 00000 n +0000007524 00000 n +0000027966 00000 n +0000027827 00000 n +0000019308 00000 n +0000068957 00000 n +0000064688 00000 n +0000058364 00000 n +0000055682 00000 n +0000069317 00000 n +0000028117 00000 n +0000028154 00000 n +0000029021 00000 n +0000029933 00000 n +0000030886 00000 n +0000031848 00000 n +0000032036 00000 n +0000032678 00000 n +0000054002 00000 n +0000054711 00000 n +0000054034 00000 n +0000054934 00000 n +0000055838 00000 n +0000056040 00000 n +0000057300 00000 n +0000056113 00000 n +0000057531 00000 n +0000058527 00000 n +0000058736 00000 n +0000063194 00000 n +0000059021 00000 n +0000063424 00000 n +0000064851 00000 n +0000065060 00000 n +0000067742 00000 n +0000065246 00000 n +0000067965 00000 n +0000069114 00000 n +0000069381 00000 n +0000069427 00000 n +0000069561 00000 n trailer -<< /Size 262 /Root 260 0 R /Info 261 0 R /ID [ <2350CAD05F8A7AF0AA4058486855344F> <2350CAD05F8A7AF0AA4058486855344F> ] >> +<< /Size 254 /Root 252 0 R /Info 253 0 R /ID [ <2350CAD05F8A7AF0AA4058486855344F> <2350CAD05F8A7AF0AA4058486855344F> ] >> startxref -70663 +69694 %%EOF diff --git a/testfiles-lua/test_structnum.tpf b/testfiles-lua/test_structnum.tpf index 6cd2230..57f1ccb 100644 --- a/testfiles-lua/test_structnum.tpf +++ b/testfiles-lua/test_structnum.tpf @@ -17,10 +17,10 @@ endobj << /Type /Filespec /AFRelationship /Source /Desc (TeX source) /F (tag-AFfile1.tex) /UF /EF<> >> endobj 36 0 obj -<< /O/NSO/NS130R/lspace(0.278em)/rspace(0.278em) >> +<< /O/NSO/NS 13 0 R/lspace(0.278em)/rspace(0.278em) >> endobj 39 0 obj -<< /O/NSO/NS130R/width(9.963pt) >> +<< /O/NSO/NS 13 0 R/width(9.963pt) >> endobj 40 0 obj << /Type /Metadata /Subtype /XML /Length 16669 >> @@ -421,16 +421,16 @@ endobj [ 23 0 R ] endobj 50 0 obj -<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<> /Length 33 >> +<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<> /Length 115 >> stream -PDF standard A-4F requires a file +The document was declared to be of type PDF/A-4f but hasn't any attachments. LaTeX therefore added this dummy file. endstream endobj 51 0 obj -<< /Type /Filespec /AFRelationship /Unspecified /Desc (note about PDF/A-4F) /F (readme.txt) /UF /EF<> >> +<< /Type /Filespec /AFRelationship /Unspecified /Desc (note about PDF/A-4F) /F (pdf-A4f.txt) /UF /EF<> >> endobj 52 0 obj -<< /Names[(readme) 51 0 R] >> +<< /Names[(pdf-A4f) 51 0 R] >> endobj 6 0 obj << /Nums [0 [ 34 0 R 35 0 R 37 0 R 31 0 R 32 0 R] @@ -463,13 +463,13 @@ endobj << /title [/Title 11 0 R] /part [/Title 11 0 R] /section [/H1 11 0 R] /subsection [/H2 11 0 R] /subsubsection [/H3 11 0 R] /paragraph [/H4 11 0 R] /subparagraph [/H5 11 0 R] /list [/L 11 0 R] /itemize [/L 11 0 R] /enumerate [/L 11 0 R] /description [/L 11 0 R] /quote [/BlockQuote 9 0 R] /quotation [/BlockQuote 9 0 R] /verbatim [/P 11 0 R] /item [/LI 11 0 R] /itemlabel [/Lbl 11 0 R] /itembody [/LBody 11 0 R] /footnote [/FENote 11 0 R] /footnotemark [/Lbl 11 0 R] /footnotelabel [/Lbl 11 0 R] /text-unit [/Part 11 0 R] /text [/P 11 0 R] /theorem-like [/Sect 11 0 R] /codeline [/Sub 11 0 R] /float [/Aside 11 0 R] /figures [/Sect 11 0 R] /tables [/Sect 11 0 R] >> endobj 15 0 obj -<< /Type /Namespace /NS (https://www.latex-project.org/ns/dflt/2022) /RoleMapNS 16 0 R >> +<< /Type /Namespace /NS (https://www.latex-project.org/ns/dflt) /RoleMapNS 16 0 R >> endobj 18 0 obj << /chapter [/H1 11 0 R] /section [/H2 11 0 R] /subsection [/H3 11 0 R] /subsubsection [/H4 11 0 R] /paragraph [/H5 11 0 R] /subparagraph [/H6 11 0 R] >> endobj 17 0 obj -<< /Type /Namespace /NS (https://www.latex-project.org/ns/book/2022) /RoleMapNS 18 0 R >> +<< /Type /Namespace /NS (https://www.latex-project.org/ns/book) /RoleMapNS 18 0 R >> endobj 19 0 obj << /Type /Namespace /NS (data:,C9B55C18-275C-494E-C10F-E4B83CD03F23) >> @@ -704,80 +704,80 @@ endobj xref 0 73 0000000002 65535 f -0000021934 00000 n +0000021940 00000 n 0000000003 00000 f 0000000004 00000 f 0000000010 00000 f -0000026429 00000 n -0000022448 00000 n -0000022823 00000 n -0000024880 00000 n -0000023505 00000 n +0000026513 00000 n +0000022542 00000 n +0000022917 00000 n +0000024964 00000 n +0000023599 00000 n 0000000012 00000 f -0000023573 00000 n +0000023667 00000 n 0000000014 00000 f -0000023643 00000 n +0000023737 00000 n 0000000020 00000 f -0000024406 00000 n -0000023724 00000 n -0000024684 00000 n -0000024513 00000 n -0000024791 00000 n +0000024500 00000 n +0000023818 00000 n +0000024773 00000 n +0000024602 00000 n +0000024875 00000 n 0000000000 00000 f -0000024941 00000 n +0000025025 00000 n 0000000020 00000 n 0000003353 00000 n -0000025039 00000 n -0000025127 00000 n -0000025215 00000 n -0000025315 00000 n -0000025426 00000 n +0000025123 00000 n +0000025211 00000 n +0000025299 00000 n +0000025399 00000 n +0000025510 00000 n 0000003586 00000 n 0000003921 00000 n -0000025577 00000 n -0000025711 00000 n -0000025832 00000 n -0000025957 00000 n -0000026078 00000 n +0000025661 00000 n +0000025795 00000 n +0000025916 00000 n +0000026041 00000 n +0000026162 00000 n 0000004121 00000 n -0000026210 00000 n -0000026331 00000 n -0000004189 00000 n -0000004240 00000 n -0000021847 00000 n -0000021712 00000 n -0000020999 00000 n -0000035068 00000 n -0000032552 00000 n -0000029052 00000 n -0000035434 00000 n -0000021981 00000 n -0000022017 00000 n -0000022044 00000 n -0000022213 00000 n -0000022402 00000 n -0000022519 00000 n -0000022786 00000 n -0000023402 00000 n -0000026566 00000 n -0000028012 00000 n -0000026654 00000 n -0000028235 00000 n -0000029205 00000 n -0000029404 00000 n -0000031438 00000 n -0000029542 00000 n -0000031659 00000 n -0000032706 00000 n -0000032906 00000 n -0000034022 00000 n -0000032954 00000 n -0000034250 00000 n -0000035228 00000 n -0000035496 00000 n -0000035540 00000 n +0000026294 00000 n +0000026415 00000 n +0000004192 00000 n +0000004246 00000 n +0000021853 00000 n +0000021718 00000 n +0000021005 00000 n +0000035152 00000 n +0000032636 00000 n +0000029136 00000 n +0000035518 00000 n +0000021987 00000 n +0000022023 00000 n +0000022050 00000 n +0000022301 00000 n +0000022495 00000 n +0000022613 00000 n +0000022880 00000 n +0000023496 00000 n +0000026650 00000 n +0000028096 00000 n +0000026738 00000 n +0000028319 00000 n +0000029289 00000 n +0000029488 00000 n +0000031522 00000 n +0000029626 00000 n +0000031743 00000 n +0000032790 00000 n +0000032990 00000 n +0000034106 00000 n +0000033038 00000 n +0000034334 00000 n +0000035312 00000 n +0000035580 00000 n +0000035624 00000 n trailer << /Size 73 /Root 72 0 R /ID [ <2350CAD05F8A7AF0AA4058486855344F> <2350CAD05F8A7AF0AA4058486855344F> ] >> startxref -35690 +35774 %%EOF diff --git a/testfiles-lua/test_xml.mlr b/testfiles-lua/test_xml.mlr index bc4dd76..703a9a0 100644 --- a/testfiles-lua/test_xml.mlr +++ b/testfiles-lua/test_xml.mlr @@ -133,7 +133,6 @@ 𝑐 - = 𝑑 𝑒 @@ -149,7 +148,6 @@ - = βˆ’ 1 @@ -163,31 +161,20 @@ 2 - = 3 ) - - - - - - + + 5 - - - - - - - - - + + + From 5ae44ec6c626e2675f1d73757fe5512f0d7f7409 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20Fabian=20Kr=C3=BCger?= Date: Mon, 17 Feb 2025 08:47:12 +0100 Subject: [PATCH 57/57] Changelog update --- CHANGELOG.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b2213f..705d0c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,13 @@ # Changelog -All notable changes to the `tagpdf` package since the -2021-04-22 will be documented in this file. +All notable changes to the `luamml` package since the +2025-02-17 will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## 2025-02-17 + ### Changed - Ulrike Fischer, 2024-11-29 luamml-structelemwriter.lua: moved the actualtext for e.g. stretched braces from the structure element to the mc-chunk.