diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..705d0c2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,19 @@ +# Changelog +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. + +- 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-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-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. 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/luamml-patches-amsmath.sty b/luamml-patches-amsmath.sty index 0b09bc7..66ffdbe 100644 --- a/luamml-patches-amsmath.sty +++ b/luamml-patches-amsmath.sty @@ -7,411 +7,415 @@ % 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 - \luamml_annotate:en { - core = 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 - {##} - \luamml_save:nNn {} \displaystyle {mtd} - $ - \__luamml_amsmath_add_last_to_row: - \tabskip \z@skip - & \column@plus - $ - \m@th - \displaystyle - { - {} - ## - } - \luamml_save:nNn {} \displaystyle {mtd} - $ - \__luamml_amsmath_add_last_to_row: - \hfil - \tabskip\alignsep@ - \crcr - \ams@return@opt@arg -} - -\renewcommand \gathered [1] [c] { - \RIfM@ - \else - \nonmatherr@ { \begin {gathered} } - \fi - \luamml_annotate:en { - core = 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 - ## - \luamml_save:nNn {} \displaystyle {mtd} - $ - \__luamml_amsmath_add_last_to_row: - \hfil - \crcr - \ams@return@opt@arg -} - -\cs_set:Npn \endaligned { - \crcr - \__luamml_amsmath_save_inner_table:n \@currenvir - \egroup - \restorecolumn@ - \egroup - \__luamml_amsmath_finalize_inner_table: -} - -% 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 - {##} - \luamml_save:nNn {} \displaystyle {mtd} - $ - } - \__luamml_amsmath_add_box_to_row: - \calc@shift@gather - \set@gather@field - \tabskip\@centering - & - \setboxz@h { - \strut@ - {##} - } - \dim_compare:nNnF {0pt} = { - \box_wd:N \c_zero_int - } { - \__luamml_amsmath_set_tag: - } - \place@tag@gather - \tabskip \iftagsleft@ - \gdisplaywidth@ +\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 - \z@skip - \span \fi - \crcr - #1 -} + \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@ + \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 + } + \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} + } + \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} } + } -\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} } -} -\cs_set:Npn \endgather { - \math@cr - \black@ \totwidth@ - \__luamml_amsmath_finalize_table:n {gather} - \egroup - $$ - \ignorespacesafterend -} + \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 { - & - \hfil - \strut@ - \setboxz@h { - \@lign - $ - \m@th - \displaystyle - {##} - \ifmeasuring@ - \luamml_ignore: - \else - \luamml_save:nNn {} \displaystyle {mtd} - \fi - $ + \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 + } + +% This was lost anyway, as the latex-lab code overwrites +% the definition again. + \PackageInfo{luamml}{patching~\string\maketag@@@} + \cs_set:Npn \maketag@@@ #1 + { + \hbox { + \m@th + \normalfont + #1 + \UseTaggingSocket{math/luamml/mtable/tag/save} + } } - \ifmeasuring@ - \savefieldlength@ - \else - \__luamml_amsmath_add_box_to_row: - \fi - \set@field - \tabskip\z@skip - & - \setboxz@h { - \@lign - $ - \m@th - \displaystyle - { - {} - ## - } - \ifmeasuring@ - \luamml_ignore: + \PackageInfo{luamml}{patching~\string\endalign} +% 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 - \luamml_save:nNn {} \displaystyle {mtd} + $$ \fi - $ + \ignorespacesafterend } - \ifmeasuring@ - \savefieldlength@ - \else - \__luamml_amsmath_add_box_to_row: - \fi - \set@field - \hfil - \tabskip\alignsep@ -} - -\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 - \__luamml_amsmath_set_tag: - \fi - \ifst@rred - \else - \global \@eqnswtrue - \fi - \global \lineht@ \z@ - \cr -} - -\cs_set:Npn \maketag@@@ #1 { - \hbox { - \m@th - \normalfont - #1 - \__luamml_amsmath_save_tag: - } -} - -\cs_set:Npn \endalign { - \math@cr - \black@ \totwidth@ - \__luamml_amsmath_finalize_table:n {align} - \egroup - \ifingather@ - \restorealignstate@ - \egroup - \nonumber - \ifnum0=`{\fi\iffalse}\fi - \else - $$ - \fi - \ignorespacesafterend -} - -% 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 - } -} - -\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} } -} + + \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 + } + } + %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} } + } % 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 { - \luamml_save:nNn {} \displaystyle {mtd} - $ - \__luamml_amsmath_add_last_to_row: -} - -\cs_set:Npn \rendmultline@ { - \iftag@ - \luamml_save:nNn {} \displaystyle {mtd} + \PackageInfo{luamml}{patching~\string\endmultline@math} + \cs_set:Npn \endmultline@math { + \UseTaggingSocket{math/luamml/save/nNn}{{} \displaystyle {mtd}} $ - \__luamml_amsmath_add_last_to_row: - \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 - \__luamml_amsmath_set_tag: - \else - \hskip \multlinegap - \fi - \hfilneg - \math@cr - \__luamml_amsmath_finalize_table:n {multline} - \egroup - $$ -} - -\cs_set:Npn \lendmultline@ { - \hfilneg - \hskip\multlinegap - \math@cr - \__luamml_amsmath_finalize_table:n {multline} - \egroup - $$ -} - -% Finally some slightly different stuff. -% While {matrix} is covered by {array}, we still have {smallmatrix}: -\renewenvironment {smallmatrix} { - \luamml_annotate:en { - core = 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 - ## - \luamml_save:nn {} {mtd} % No \scriptsize here since we want to add the mstyle nodes - $ - \__luamml_amsmath_add_last_to_row: - \hfil - && - \thickspace - \hfil - $ - \m@th - \scriptstyle - ## - \luamml_save:nn {} {mtd} % No \scriptsize here since we want to add the mstyle nodes - $ - \__luamml_amsmath_add_last_to_row: - \hfil - \crcr -}{% - \crcr - \__luamml_amsmath_save_smallmatrix: - \egroup - \egroup - \__luamml_amsmath_finalize_inner_table: - \luamml_annotate:en { - core = false - } { - \, - } -} - -% {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 { - \Uvextensible height~#1 \big@size axis~exact~#2 + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} } - } -} + \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 + $$ + } + \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 + \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. + \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@{}} + } + \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-amstext.sty b/luamml-patches-amstext.sty index 97b1b1f..3f16a86 100644 --- a/luamml-patches-amstext.sty +++ b/luamml-patches-amstext.sty @@ -1,37 +1,29 @@ \ProvidesExplPackage {luamml-patches-amstext} {2024-10-30} {0.2.0} - {Feel free to add a description here} + {patches of amstext commands} -\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 - } +% This is the same definition as in latex-lab-amsmath. It can go with the +% 2025-06-01 release. +\IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24} + {} + { + \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 + }}} } } - \int_if_odd:nT { \int_div_truncate:nn { \l__luamml_flag_int } { 8 } } { - \tag_mc_end: - \tag_struct_end: - } -} diff --git a/luamml-patches-array.sty b/luamml-patches-array.sty deleted file mode 100644 index b08d561..0000000 --- a/luamml-patches-array.sty +++ /dev/null @@ -1,101 +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' } - -\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 - } - \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 {} - } -} diff --git a/luamml-patches-kernel.sty b/luamml-patches-kernel.sty index 38eb28b..bcd3064 100644 --- a/luamml-patches-kernel.sty +++ b/luamml-patches-kernel.sty @@ -1,52 +1,64 @@ \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 - } -} -\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-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 { + $ + \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 + } + } + \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 ~ } { @@ -70,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} -} diff --git a/luamml-patches-lab-math.sty b/luamml-patches-lab-math.sty index 7776576..c74a206 100644 --- a/luamml-patches-lab-math.sty +++ b/luamml-patches-lab-math.sty @@ -1,11 +1,17 @@ \ProvidesExplPackage {luamml-patches-lab-math} {2024-10-30} {0.2.0} {Feel free to add a description here} -\AddToHook{begindocument} { +% 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 +\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@ - \__luamml_amsmath_finalize_table:n {align} + \UseExpandableTaggingSocket{math/luamml/mtable/finalize}{align} \egroup \ifingather@ \restorealignstate@ @@ -16,5 +22,6 @@ $$ \fi \ignorespacesafterend + } } } diff --git a/luamml-patches-mathtools.sty b/luamml-patches-mathtools.sty index 3dc1570..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{}## - \luamml_save:nNn {} \displaystyle {mtd} - $ - \__luamml_amsmath_add_last_to_row: - \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 + } } diff --git a/luamml-structelemwriter.lua b/luamml-structelemwriter.lua index 7c2e549..3087305 100644 --- a/luamml-structelemwriter.lua +++ b/luamml-structelemwriter.lua @@ -6,6 +6,14 @@ 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") + +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 {} + local function escape_name(name) return name end @@ -44,7 +52,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)) @@ -70,7 +78,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,28 +89,27 @@ 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)] 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] @@ -115,7 +122,14 @@ 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 + 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-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, } 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 diff --git a/luamml.dtx b/luamml.dtx index c45dca1..f2c85fd 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} @@ -93,9 +96,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 +106,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 +319,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 +526,447 @@ % \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{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/nn_plug_str } + { + \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/nNn}{luamml} + { + \luamml_save:nNn #1 + } +\AssignSocketPlug{tagsupport/math/luamml/save/nNn}{luamml} +\NewSocketPlug{tagsupport/math/luamml/save/nn}{luamml} + { + \luamml_save:nn #1 + } +\AssignSocketPlug{tagsupport/math/luamml/save/nn}{luamml} +% \end{macrocode} +% +% \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} +\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/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/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/finalizecol}{luamml} +% +% \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}{1} + } +% \end{macrocode} +% \begin{macrocode} +%<*luatex> +\NewSocketPlug{tagsupport/math/luamml/mtable/finalizecol}{luamml} + { + \use:c{__luamml_amsmath_add_#1_to_row:} + } +\AssignSocketPlug{tagsupport/math/luamml/mtable/finalizecol}{luamml} + +% +% \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. +% 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} + } +\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. +% \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} +% +% 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} +\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} + } +% \end{macrocode} +% +% \begin{macrocode} +%<*luatex> +\clist_map_inline:nn + { + align, + align*, + alignat, + alignat*, + xalignat, + 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} +% +% +% \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\c_space_tl 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. +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/hbox_plug_str } + { + \NewSocket{tagsupport/math/luamml/hbox}{2} + \NewSocketPlug{tagsupport/math/luamml/hbox}{default}{#2} + \AssignSocketPlug{tagsupport/math/luamml/hbox}{default} + } +%<*luatex> +\NewSocketPlug{tagsupport/math/luamml/hbox}{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/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}{luamml} + { + \int_if_odd:nT { \int_div_truncate:nn { \l__luamml_flag_int } { 8 } } + { + \tag_mc_begin:n{artifact} + } + } +\AssignSocketPlug{tagsupport/math/luamml/artifact}{luamml} +% +% \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} + +% \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}. -% +% % 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} @@ -549,7 +988,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 } @@ -557,7 +996,6 @@ \__luamml_patch_package:n {amstext} \__luamml_patch_package:n {amsmath} \__luamml_patch_package:n {mathtools} -\__luamml_patch_package:n {array} % % \end{macrocode} 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/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_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..146bbb7 --- /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) /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) /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 +0000025382 00000 n +0000017844 00000 n +0000018694 00000 n +0000020839 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 +0000020648 00000 n +0000020477 00000 n +0000020750 00000 n +0000000000 00000 f +0000020900 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 +0000021021 00000 n +0000021109 00000 n +0000021197 00000 n +0000021297 00000 n +0000021408 00000 n +0000001913 00000 n +0000002067 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 +0000022315 00000 n +0000022426 00000 n +0000022522 00000 n +0000022618 00000 n +0000022739 00000 n +0000002633 00000 n +0000022871 00000 n +0000022992 00000 n +0000023092 00000 n +0000023203 00000 n +0000002704 00000 n +0000002875 00000 n +0000023464 00000 n +0000023575 00000 n +0000023696 00000 n +0000003075 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 +0000024938 00000 n +0000025033 00000 n +0000025138 00000 n +0000025260 00000 n +0000003503 00000 n +0000017560 00000 n +0000017425 00000 n +0000015284 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 +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 +35537 +%%EOF 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..034a986 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 1014 >> +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 +164 0 obj << /O/NSO/NS 13 0 R/lspace(0.278em)/rspace(0) >> endobj -176 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 -199 0 obj +189 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 -<> +196 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<> >> +197 0 obj +<< /Type /Filespec /AFRelationship /Source /Desc (TeX source) /F (tag-AFfile5.tex) /UF /EF<> >> endobj -216 0 obj +201 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 +214 0 obj << /Type /Metadata /Subtype /XML /Length 11693 >> stream @@ -338,19 +372,19 @@ stream endstream endobj -233 0 obj -<< /Length 7848 >> +217 0 obj +<< /Length 8458 >> 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 ET EMC -/mo<> BDC +/Span<>> BDC BT /F20 9.96264 Tf 1 0 0 1 244.283 627.612 Tm [<09C9>]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 +/Span<>> 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 +/Span<>> 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 +/Span<>> 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 +/Span<>> 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 +/Span<>> 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 >> +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 -231 0 obj -<< /ExtGState 1 0 R /Font << /F15 234 0 R /F20 235 0 R /F21 236 0 R /F32 237 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 -239 0 obj +223 0 obj << /Marked true >> endobj +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 [ 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 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 -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 ] >> +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 -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 ] >> +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 -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 ] >> +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 -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 ] >> +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 -244 0 obj -<< /Kids [240 0 R 241 0 R 242 0 R 243 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 +230 0 obj +<< /justify <> +/display <> +/inline <> +/TH-both <> +/TH-row <> +/TH-col <> + >> +endobj 9 0 obj << /Type /Namespace /NS (http://iso.org/pdf/ssn) >> endobj @@ -954,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) >> @@ -969,562 +1050,490 @@ 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 193 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 /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 /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 /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 /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 [<> 167 0 R <> 180 0 R <> 186 0 R 187 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 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) >> +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 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 /mtd /NS 13 0 R /P 200 0 R /K [153 0 R 154 0 R 155 0 R] /ID (ID.0113) >> +<< /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 /S /mi /NS 13 0 R /P 152 0 R /K <> /ID (ID.0114) >> +<< /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 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 /mtd /NS 13 0 R /P 190 0 R /K 157 0 R /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 /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 /A 52 0 R /S /mo /NS 13 0 R /P 156 0 R /K <> /ID (ID.0119) >> +<< /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 156 0 R /K <> /ID (ID.0120) >> +<< /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 /mi /NS 13 0 R /P 156 0 R /K <> /ID (ID.0121) >> +<< /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 /S /mi /NS 13 0 R /P 156 0 R /K <> /ID (ID.0122) >> +<< /Type /StructElem /S /mi /NS 13 0 R /P 159 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 /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 /msup /NS 13 0 R /P 162 0 R /K [164 0 R 165 0 R] /ID (ID.0124) >> -endobj -164 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 163 0 R /K <> /ID (ID.0125) >> +<< /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 /S /mrow /NS 13 0 R /P 163 0 R /K [166 0 R 167 0 R] /ID (ID.0126) >> +<< /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 /A 148 0 R /S /mi /NS 13 0 R /P 165 0 R /K <> /ID (ID.0127) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 162 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 /S /Lbl /NS 11 0 R /P 144 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 /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 /mi /NS 13 0 R /P 168 0 R /ID (ID.0130) >> +<< /Type /StructElem /A 170 0 R /S /mo /NS 13 0 R /P 168 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) >> +171 0 obj +<< /Type /StructElem /S /mn /NS 13 0 R /P 168 0 R /K <> /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) >> +<< /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 168 0 R /K <> /ID (ID.0133) >> +<< /Type /StructElem /S /mn /NS 13 0 R /P 168 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 /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 /A 176 0 R /ActualText /S /mo /NS 13 0 R /P 174 0 R /K <> /ID (ID.0135) >> +<< /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 /mn /NS 13 0 R /P 174 0 R /K <> /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 /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 115 0 R /S /mo /NS 13 0 R /P 174 0 R /K <> /ID (ID.0137) >> +<< /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 174 0 R /K <> /ID (ID.0138) >> +<< /Type /StructElem /S /mtd /NS 13 0 R /P 191 0 R /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 /S /Lbl /NS 11 0 R /P 144 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 192 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 /mn /NS 13 0 R /P 181 0 R /K <> /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 192 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 /mtd /NS 13 0 R /P 192 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 /mtd /NS 13 0 R /P 192 0 R /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 /Lbl /NS 11 0 R /P 144 0 R /K <> /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 /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 /mi /NS 13 0 R /P 187 0 R /ID (ID.0147) >> -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 /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 /mn /NS 13 0 R /P 189 0 R /K <> /ID (ID.0149) >> +<< /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 /mtd /NS 13 0 R /P 207 0 R /K 192 0 R /ID (ID.0150) >> +<< /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 /mi /NS 13 0 R /P 191 0 R /ID (ID.0151) >> +<< /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 /mtd /NS 13 0 R /P 207 0 R /K 194 0 R /ID (ID.0152) >> +<< /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 /mi /NS 13 0 R /P 193 0 R /ID (ID.0153) >> +<< /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 /S /mtd /NS 13 0 R /P 207 0 R /K 196 0 R /ID (ID.0154) >> -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 /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 /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 /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 /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 198 0 R /K [201 0 R 152 0 R 156 0 R 162 0 R 168 0 R] /ID (ID.0158) >> +<< /Type /StructElem /A 201 0 R /S /mo /NS 13 0 R /P 198 0 R /K <> /ID (ID.0146) >> 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) >> +202 0 obj +<< /Type /StructElem /S /mi /NS 13 0 R /P 198 0 R /K <> /ID (ID.0147) >> endobj 203 0 obj -<< /Type /StructElem /S /mtext /NS 13 0 R /P 201 0 R /ID (ID.0160) >> +<< /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 /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) >> +<< /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 202 0 R /S /mtd /NS 13 0 R /P 204 0 R /K 206 0 R /ID (ID.0162) >> +<< /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 /mtext /NS 13 0 R /P 205 0 R /ID (ID.0163) >> +<< /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 /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 /S /mi /NS 13 0 R /P 198 0 R /K <> /ID (ID.0152) >> 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 108 0 R /S /mo /NS 13 0 R /P 198 0 R /K <> /ID (ID.0153) >> endobj 209 0 obj -<< /Type /StructElem /S /mtext /NS 13 0 R /P 208 0 R /ID (ID.0166) >> +<< /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 198 0 R /K <> /ID (ID.0155) >> +endobj +211 0 obj +<< /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 /AF [211 0 R] /S /Formula /NS 11 0 R /P 22 0 R /K 213 0 R /ID (ID.0167) >> +<< /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 /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) >> -endobj -214 0 obj -<< /Type /StructElem /A 148 0 R /S /mi /NS 13 0 R /P 213 0 R /K <> /ID (ID.0169) >> -endobj -215 0 obj -<< /Type /StructElem /A 216 0 R /S /mo /NS 13 0 R /P 213 0 R /K <> /ID (ID.0170) >> -endobj -217 0 obj -<< /Type /StructElem /S /mi /NS 13 0 R /P 213 0 R /K <> /ID (ID.0171) >> -endobj -218 0 obj -<< /Type /StructElem /A 216 0 R /S /mo /NS 13 0 R /P 213 0 R /K <> /ID (ID.0172) >> -endobj -219 0 obj -<< /Type /StructElem /A 115 0 R /S /mo /NS 13 0 R /P 213 0 R /K <> /ID (ID.0173) >> -endobj -220 0 obj -<< /Type /StructElem /A 148 0 R /S /mi /NS 13 0 R /P 213 0 R /K <> /ID (ID.0174) >> -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 198 0 R /K <> /ID (ID.0158) >> 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 229 0 R /ClassMap 230 0 R /ParentTree 6 0 R /RoleMap 7 0 R /K 21 0 R >> endobj -245 0 obj +231 0 obj [ 66 [ 323 ] ] endobj -247 0 obj +233 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 >> +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 -248 0 obj +234 0 obj << /Length 687 >> stream %!PS-Adobe-3.0 Resource-CMap @@ -1560,23 +1569,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 >> +221 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /QTQISS+LMRoman7-Regular /DescendantFonts [ 235 0 R ] /ToUnicode 234 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 >> >> +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 -250 0 obj +236 0 obj [ 1013 [ 569 ] 1404 [ 620 ] 2981 [ 407 ] 4558 [ 668 ] ] endobj -252 0 obj +238 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 >> +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 -253 0 obj +239 0 obj << /Length 772 >> stream %!PS-Adobe-3.0 Resource-CMap @@ -1615,23 +1624,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 >> +220 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ZIIHRW+LatinModernMath-Regular /DescendantFonts [ 240 0 R ] /ToUnicode 239 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 >> >> +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 -255 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 -257 0 obj +243 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 >> +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 -258 0 obj +244 0 obj << /Length 1203 >> stream %!PS-Adobe-3.0 Resource-CMap @@ -1699,23 +1708,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 >> +219 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RHJXIX+LatinModernMath-Regular /DescendantFonts [ 245 0 R ] /ToUnicode 244 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 >> >> +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 -260 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 -262 0 obj +248 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 >> +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 -263 0 obj +249 0 obj << /Length 931 >> stream %!PS-Adobe-3.0 Resource-CMap @@ -1768,292 +1777,282 @@ 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 >> +218 0 obj +<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RYKTJL+LMRoman10-Regular /DescendantFonts [ 250 0 R ] /ToUnicode 249 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 >> >> +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 -238 0 obj -<< /Type /Pages /Count 1 /Kids [ 232 0 R ] >> +222 0 obj +<< /Type /Pages /Count 1 /Kids [ 216 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 >> +251 0 obj +<< /EmbeddedFiles 224 0 R >> endobj -266 0 obj +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 +253 0 obj << /Producer (LuaTeX)/Creator (TeX)/CreationDate (D:20160520090000Z)/ModDate (D:20160520090000Z) /Trapped /False >> endobj xref -0 267 +0 254 0000000002 65535 f -0000026064 00000 n +0000028070 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 +0000053863 00000 n +0000028275 00000 n +0000032099 00000 n +0000034284 00000 n +0000032919 00000 n 0000000012 00000 f -0000030923 00000 n +0000032987 00000 n 0000000014 00000 f -0000030993 00000 n +0000033057 00000 n 0000000020 00000 f -0000031756 00000 n -0000031074 00000 n -0000032034 00000 n -0000031863 00000 n -0000032141 00000 n +0000033820 00000 n +0000033138 00000 n +0000034093 00000 n +0000033922 00000 n +0000034195 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 +0000034345 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 -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 -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 +0000000299 00000 n +0000000486 00000 n +0000001131 00000 n +0000001318 00000 n +0000001800 00000 n +0000001987 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 +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 267 /Root 265 0 R /Info 266 0 R /ID [ <2350CAD05F8A7AF0AA4058486855344F> <2350CAD05F8A7AF0AA4058486855344F> ] >> +<< /Size 254 /Root 252 0 R /Info 253 0 R /ID [ <2350CAD05F8A7AF0AA4058486855344F> <2350CAD05F8A7AF0AA4058486855344F> ] >> startxref -69131 +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 94a71cc..703a9a0 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,16 +127,12 @@ - - (1) - π‘Ž 𝑏 𝑐 - = 𝑑 𝑒 @@ -171,16 +148,12 @@ - = βˆ’ 1 - - (2) - ( 1 @@ -188,34 +161,20 @@ 2 - = 3 ) - - - - - - + + - - (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}