add support for \tag_struct_use_num:n (#4)

add support for \tag_struct_use_num:n
This commit is contained in:
Ulrike Fischer 2024-11-21 06:28:30 +01:00 committed by GitHub
parent 4849ee4373
commit 43825dcac4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 854 additions and 1 deletions

1
.github/tl_packages vendored
View File

@ -34,6 +34,7 @@ l3backend
l3build l3build
l3kernel l3kernel
l3packages l3packages
l3experimental
latex latex
latex-fonts latex-fonts
latex-lab latex-lab

View File

@ -1,5 +1,6 @@
local struct_begin = token.create'tag_struct_begin:n' local struct_begin = token.create'tag_struct_begin:n'
local struct_use = token.create'tag_struct_use:n' local struct_use = token.create'tag_struct_use:n'
local struct_use_num = token.create'tag_struct_use_num:n'
local struct_end = token.create'tag_struct_end:' local struct_end = token.create'tag_struct_end:'
local mc_begin = token.create'tag_mc_begin:n' local mc_begin = token.create'tag_mc_begin:n'
@ -65,6 +66,11 @@ local function write_elem(tree, stash)
return tex.sprint(struct_use, '{', tree[':struct'], '}') return tex.sprint(struct_use, '{', tree[':struct'], '}')
end) end)
end end
if tree[':structnum'] then
return tex.runtoks(function()
return tex.sprint(struct_use_num, '{', tree[':structnum'], '}')
end)
end
if not tree[0] then print('ERR', require'inspect'(tree)) end if not tree[0] then print('ERR', require'inspect'(tree)) end
local i = 0 local i = 0
for attr, val in next, tree do if type(attr) == 'string' and not string.find(attr, ':') and attr ~= 'xmlns' then for attr, val in next, tree do if type(attr) == 'string' and not string.find(attr, ':') and attr ~= 'xmlns' then

View File

@ -83,6 +83,18 @@ local function annotate()
end end
end end
end end
if annotation.structnum ~= nil then
local saved = props.mathml_filter
local structnum = annotation.structnum
function props.mathml_filter(mml, core)
mml[':structnum'] = structnum
if saved then
return saved(mml, core)
else
return mml, core
end
end
end
else else
tex.error'Unable to annotate nucleus of node without nucleus' tex.error'Unable to annotate nucleus of node without nucleus'
end end

View File

@ -93,7 +93,23 @@
% } % }
% \end{verbatim} % \end{verbatim}
% produces a |<mi>TeX</mi>| element in the output instead of trying to import \TeX~as a mathematical expression. % produces a |<mi>TeX</mi>| element in the output instead of trying to import \TeX~as a mathematical expression.
% The table structure is explained in an appendix. %
% 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.
% 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}
% $a = b \quad
% \tagstructbegin{tag=mtext,stash}\tagmcbegin{}
% \luamml_annotate:en{nucleus=true,structnum=\tag_get:n{struct_num}}
% {\mbox{some~text~with~\emph{structure}}}
% \tagmcend\tagstructend
% $
% \end{verbatim}
% 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} % \section{Features \& Limitations}
% Currently all mathematical expressions which purely contain Unicode encoded math mode material without embedded non-math should get converted successfully. % Currently all mathematical expressions which purely contain Unicode encoded math mode material without embedded non-math should get converted successfully.

View File

@ -0,0 +1,35 @@
\ExplSyntaxOn
\sys_gset_rand_seed:n{42}
\ExplSyntaxOff
\DocumentMetadata{
lang=en,
testphase={phase-III,math},
pdfversion=2.0,
pdfstandard=ua-2,
pdfstandard=a-4f,
uncompress
}
\input{regression-test}
\documentclass{article}
\usepackage{unicode-math}
% suppress writing of luamml-mathml
\tagpdfsetup{math/mathml/luamml/write=false} %
% suppress mathml-AF reading
\tagpdfsetup{math/mathml/sources=} %
\tagpdfsetup{math/mathml/AF=false}
\begin{document}
\ExplSyntaxOn
\luamml_structelem:
$a = b \quad
\tagstructbegin{tag=mtext,stash}\tagmcbegin{}
\luamml_annotate:en{nucleus=true,structnum=\tag_get:n{struct_num}}
{\mbox{some~text~with~\emph{structure}}}
\tagmcend\tagstructend
$
\ExplSyntaxOff
\end{document}

View File

@ -0,0 +1,783 @@
%PDF-2.0
%ÌÕÁÔÅØÐÄÆ
22 0 obj
<< /N 3 /Length 3268 >>
[BINARY STREAM]
endobj
23 0 obj
<< /Type /OutputIntent /S /GTS_PDFA1 /DestOutputProfile 22 0 R /OutputConditionIdentifier (IEC\040sRGB) /Info (IEC\04061966-2.1\040Default\040RGB\040colour\040space\040-\040sRGB) /RegistryName (http://www.iec.ch) >>
endobj
29 0 obj
<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<</ModDate (D:20160520) >> /Length 192 >>
stream
$a=b\quad \tagstructbegin {tag=mtext,stash}\tagmcbegin {}\luamml_annotate:en {nucleus=true,structnum=\tag_get:n {struct_num}}{\mbox {some text with \emph {structure}}}\tagmcend \tagstructend $
endstream
endobj
30 0 obj
<< /Type /Filespec /AFRelationship /Source /Desc (TeX source) /F (tag-AFfile1.tex) /UF <FEFF007400610067002D0041004600660069006C00650031002E007400650078> /EF<</F 29 0 R/UF 29 0 R>> >>
endobj
36 0 obj
<< /O/NSO/NS130R/lspace(0.278em)/rspace(0.278em) >>
endobj
39 0 obj
<< /O/NSO/NS130R/width(9.963pt) >>
endobj
40 0 obj
<< /Type /Metadata /Subtype /XML /Length 16669 >>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/"
xmlns:pdfuaid="http://www.aiim.org/pdfua/ns/id/"
xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/"
xmlns:pdfxid="http://www.npes.org/pdfx/ns/id/"
xmlns:prism="http://prismstandard.org/namespaces/basic/3.0/"
xmlns:stFnt="http://ns.adobe.com/xap/1.0/sType/Font#"
xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"
xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"
xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#"
xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#"
xmlns:pdfaType="http://www.aiim.org/pdfa/ns/type#"
xmlns:pdfaField="http://www.aiim.org/pdfa/ns/field#"
xmlns:pdfd="http://pdfa.org/declarations/">
<pdfaExtension:schemas>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<pdfaSchema:schema>XMP Media Management Schema</pdfaSchema:schema>
<pdfaSchema:prefix>xmpMM</pdfaSchema:prefix>
<pdfaSchema:namespaceURI>http://ns.adobe.com/xap/1.0/mm/</pdfaSchema:namespaceURI>
<pdfaSchema:property>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>OriginalDocumentID</pdfaProperty:name>
<pdfaProperty:valueType>URI</pdfaProperty:valueType>
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>The common identifier for all versions and renditions of a document.</pdfaProperty:description>
</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaSchema:schema>PDF/A Identification Schema</pdfaSchema:schema>
<pdfaSchema:prefix>pdfaid</pdfaSchema:prefix>
<pdfaSchema:namespaceURI>http://www.aiim.org/pdfa/ns/id/</pdfaSchema:namespaceURI>
<pdfaSchema:property>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>year</pdfaProperty:name>
<pdfaProperty:valueType>Integer</pdfaProperty:valueType>
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>Year of standard</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>rev</pdfaProperty:name>
<pdfaProperty:valueType>Integer</pdfaProperty:valueType>
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>Revision year of standard</pdfaProperty:description>
</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaSchema:schema>PDF/UA Universal Accessibility Schema</pdfaSchema:schema>
<pdfaSchema:prefix>pdfuaid</pdfaSchema:prefix>
<pdfaSchema:namespaceURI>http://www.aiim.org/pdfua/ns/id/</pdfaSchema:namespaceURI>
<pdfaSchema:property>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>part</pdfaProperty:name>
<pdfaProperty:valueType>Integer</pdfaProperty:valueType>
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>Part of ISO 14289 standard</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>rev</pdfaProperty:name>
<pdfaProperty:valueType>Integer</pdfaProperty:valueType>
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>Revision of ISO 14289 standard</pdfaProperty:description>
</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaSchema:schema>PDF/X ID Schema</pdfaSchema:schema>
<pdfaSchema:prefix>pdfxid</pdfaSchema:prefix>
<pdfaSchema:namespaceURI>http://www.npes.org/pdfx/ns/id/</pdfaSchema:namespaceURI>
<pdfaSchema:property>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>GTS_PDFXVersion</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>ID of PDF/X standard</pdfaProperty:description>
</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaSchema:schema>PRISM Basic Metadata</pdfaSchema:schema>
<pdfaSchema:prefix>prism</pdfaSchema:prefix>
<pdfaSchema:namespaceURI>http://prismstandard.org/namespaces/basic/3.0/</pdfaSchema:namespaceURI>
<pdfaSchema:property>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>complianceProfile</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>PRISM specification compliance profile to which this document adheres</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>publicationName</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
<pdfaProperty:description>Publication name</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>aggregationType</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
<pdfaProperty:description>Publication type</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>bookEdition</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
<pdfaProperty:description>Edition of the book in which the document was published</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>volume</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
<pdfaProperty:description>Publication volume number</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>number</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
<pdfaProperty:description>Publication issue number within a volume</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>pageRange</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
<pdfaProperty:description>Page range for the document within the print version of its publication</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>issn</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
<pdfaProperty:description>ISSN for the printed publication in which the document was published</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>eIssn</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
<pdfaProperty:description>ISSN for the electronic publication in which the document was published</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>isbn</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
<pdfaProperty:description>ISBN for the publication in which the document was published</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>doi</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
<pdfaProperty:description>Digital Object Identifier for the document</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>url</pdfaProperty:name>
<pdfaProperty:valueType>URL</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
<pdfaProperty:description>URL at which the document can be found</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>byteCount</pdfaProperty:name>
<pdfaProperty:valueType>Integer</pdfaProperty:valueType>
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>Approximate file size in octets</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>pageCount</pdfaProperty:name>
<pdfaProperty:valueType>Integer</pdfaProperty:valueType>
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>Number of pages in the print version of the document</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>subtitle</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
<pdfaProperty:description>Document's subtitle</pdfaProperty:description>
</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaSchema:schema>PDF Declarations Schema</pdfaSchema:schema>
<pdfaSchema:prefix>pdfd</pdfaSchema:prefix>
<pdfaSchema:namespaceURI>http://pdfa.org/declarations/</pdfaSchema:namespaceURI>
<pdfaSchema:property>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>declarations</pdfaProperty:name>
<pdfaProperty:valueType>Bag declaration</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
<pdfaProperty:description>An unordered array of PDF Declaration entries, where each PDF Declaration representing a statement of conformance with an identified external standard or profile, along with optional information identifying the nature of the claim.</pdfaProperty:description>
</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
<pdfaSchema:valueType>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<pdfaType:type>claim</pdfaType:type>
<pdfaType:namespaceURI>http://pdfa.org/declarations/</pdfaType:namespaceURI>
<pdfaType:prefix>pdfd</pdfaType:prefix>
<pdfaType:description>A structure describing properties of an individualclaim.</pdfaType:description>
<pdfaType:field>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<pdfaField:name>claimReport</pdfaField:name>
<pdfaField:valueType>Text</pdfaField:valueType>
<pdfaField:description>A URL to a report containing details of the specific conformance claim.</pdfaField:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaField:name>claimCredentials</pdfaField:name>
<pdfaField:valueType>Text</pdfaField:valueType>
<pdfaField:description>The claimant's credentials.</pdfaField:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaField:name>claimDate</pdfaField:name>
<pdfaField:valueType>Text</pdfaField:valueType>
<pdfaField:description>A date identifying when the claim was made.</pdfaField:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaField:name>claimBy</pdfaField:name>
<pdfaField:valueType>Text</pdfaField:valueType>
<pdfaField:description>The name of the organization and/or individual and/or software making the claim.</pdfaField:description>
</rdf:li>
</rdf:Seq>
</pdfaType:field>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaType:type>declaration</pdfaType:type>
<pdfaType:namespaceURI>http://pdfa.org/declarations/</pdfaType:namespaceURI>
<pdfaType:prefix>pdfd</pdfaType:prefix>
<pdfaType:description>A structure describing a single PDF Declaration asserting conformance with an externally-identified standard or profile.</pdfaType:description>
<pdfaType:field>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<pdfaField:name>conformsTo</pdfaField:name>
<pdfaField:valueType>Text</pdfaField:valueType>
<pdfaField:description>A property containing a URI specifying the standard or profile by the PDF Declaration. This property is intended to mirror the Dublin Core property dc:conformsTo.</pdfaField:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaField:name>claimData</pdfaField:name>
<pdfaField:valueType>Bag claim</pdfaField:valueType>
<pdfaField:description>An unordered array of claim data, where each claim identifies the nature of the claim.</pdfaField:description>
</rdf:li>
</rdf:Seq>
</pdfaType:field>
</rdf:li>
</rdf:Seq>
</pdfaSchema:valueType>
</rdf:li>
</rdf:Bag>
</pdfaExtension:schemas>
<pdf:Producer>luahbtex-NN.NN.NN</pdf:Producer>
<pdf:PDFVersion>2.0</pdf:PDFVersion>
<pdfaid:part>4</pdfaid:part>
<pdfaid:conformance>F</pdfaid:conformance>
<pdfaid:rev>2020</pdfaid:rev>
<pdfuaid:part>2</pdfuaid:part>
<pdfuaid:rev>2024</pdfuaid:rev>
<pdfd:declarations>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<pdfd:conformsTo>http://pdfa.org/declarations/wtpdf#accessibility1.0</pdfd:conformsTo>
<pdfd:claimData>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<pdfd:claimBy>LaTeX Project</pdfd:claimBy>
<pdfd:claimDate>2016-05-20</pdfd:claimDate>
</rdf:li>
</rdf:Bag>
</pdfd:claimData>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfd:conformsTo>http://pdfa.org/declarations/wtpdf#reuse1.0</pdfd:conformsTo>
<pdfd:claimData>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<pdfd:claimBy>LaTeX Project</pdfd:claimBy>
<pdfd:claimDate>2016-05-20</pdfd:claimDate>
</rdf:li>
</rdf:Bag>
</pdfd:claimData>
</rdf:li>
</rdf:Bag>
</pdfd:declarations>
<dc:type>
<rdf:Bag>
<rdf:li>Text</rdf:li>
</rdf:Bag>
</dc:type>
<dc:language>
<rdf:Bag>
<rdf:li>en</rdf:li>
</rdf:Bag>
</dc:language>
<dc:date>
<rdf:Seq>
<rdf:li>2016-05-20T09:00:00Z</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>test_structnum.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
<xmp:CreateDate>2016-05-20T09:00:00Z</xmp:CreateDate>
<xmp:ModifyDate>2016-05-20T09:00:00Z</xmp:ModifyDate>
<xmp:MetadataDate>2016-05-20T09:00:00Z</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:2b6fecb9-b74a-4265-883d-138c87e7152f</xmpMM:DocumentID>
<xmpMM:InstanceID>uuid:0a57c455-157a-4141-8c19-6237d832fc80</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>
endstream
endobj
43 0 obj
<< /Length 653 >>
stream
/opacity1 gs
/Artifact BMC
EMC
/mi<</MCID 0>> BDC
BT
/F20 9.96264 Tf
1 0 0 1 148.712 657.235 Tm [<0510>]TJ
ET
EMC
/mo<</MCID 1>> BDC
BT
/F20 9.96264 Tf
1 0 0 1 156.75 657.235 Tm [<001E>]TJ
ET
EMC
/mi<</MCID 2>> BDC
BT
/F20 9.96264 Tf
1 0 0 1 167.268 657.235 Tm [<0511>]TJ
ET
EMC
/mtext<</MCID 3>> BDC
BT
/F15 9.96264 Tf
1 0 0 1 181.505 657.235 Tm [<00620051004B0032006700690032007400690067007200420069003F0067>]TJ
ET
EMC
/Em<</MCID 4>> BDC
BT
/F32 9.96264 Tf
1 0 0 1 249.898 657.235 Tm [<006200690060006D002B0069006D0060>51<0032>]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
42 0 obj
<< /Type /Page /Contents 43 0 R /Resources 41 0 R /MediaBox [ 0 0 612 792 ] /StructParents 0/Tabs /S /Parent 47 0 R >>
endobj
41 0 obj
<< /ExtGState 1 0 R /Font << /F20 44 0 R /F15 45 0 R /F32 46 0 R >> >>
endobj
1 0 obj
<< /opacity1 <</ca 1/CA 1>> >>
endobj
48 0 obj
<< /Marked true >>
endobj
49 0 obj
[ 23 0 R ]
endobj
50 0 obj
<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20160520) >> /Length 33 >>
stream
PDF standard A-4F requires a file
endstream
endobj
51 0 obj
<< /Type /Filespec /AFRelationship /Unspecified /Desc (note about PDF/A-4F) /F (readme.txt) /UF <FEFF0072006500610064006D0065002E007400780074> /EF<</F 50 0 R/UF 50 0 R>> >>
endobj
52 0 obj
<< /Names[(readme) 51 0 R] >>
endobj
6 0 obj
<< /Nums [0 [ 34 0 R 35 0 R 37 0 R 31 0 R 32 0 R]
] >>
endobj
53 0 obj
<< /Limits [(ID.002) (ID.014)]/Names [(ID.002) 21 0 R (ID.003) 24 0 R (ID.004) 25 0 R (ID.005) 26 0 R (ID.006) 27 0 R (ID.007) 28 0 R (ID.008) 31 0 R (ID.009) 32 0 R (ID.010) 33 0 R (ID.011) 34 0 R (ID.012) 35 0 R (ID.013) 37 0 R (ID.014) 38 0 R ] >>
endobj
54 0 obj
<< /Kids [53 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
55 0 obj
<< /justify <</O/Layout/TextAlign/Justify>>
/inline <</O/Layout/Placement/Inline>>
>>
endobj
9 0 obj
<< /Type /Namespace /NS (http://iso.org/pdf/ssn) >>
endobj
11 0 obj
<< /Type /Namespace /NS (http://iso.org/pdf2/ssn) >>
endobj
13 0 obj
<< /Type /Namespace /NS (http://www.w3.org/1998/Math/MathML) >>
endobj
16 0 obj
<< /title [/Title 11 0 R] /part [/Title 11 0 R] /section [/H1 11 0 R] /subsection [/H2 11 0 R] /subsubsection [/H3 11 0 R] /paragraph [/H4 11 0 R] /subparagraph [/H5 11 0 R] /list [/L 11 0 R] /itemize [/L 11 0 R] /enumerate [/L 11 0 R] /description [/L 11 0 R] /quote [/BlockQuote 9 0 R] /quotation [/BlockQuote 9 0 R] /verbatim [/P 11 0 R] /item [/LI 11 0 R] /itemlabel [/Lbl 11 0 R] /itembody [/LBody 11 0 R] /footnote [/FENote 11 0 R] /footnotemark [/Lbl 11 0 R] /footnotelabel [/Lbl 11 0 R] /text-unit [/Part 11 0 R] /text [/P 11 0 R] /theorem-like [/Sect 11 0 R] /codeline [/Sub 11 0 R] /float [/Aside 11 0 R] /figures [/Sect 11 0 R] /tables [/Sect 11 0 R] >>
endobj
15 0 obj
<< /Type /Namespace /NS (https://www.latex-project.org/ns/dflt/2022) /RoleMapNS 16 0 R >>
endobj
18 0 obj
<< /chapter [/H1 11 0 R] /section [/H2 11 0 R] /subsection [/H3 11 0 R] /subsubsection [/H4 11 0 R] /paragraph [/H5 11 0 R] /subparagraph [/H6 11 0 R] >>
endobj
17 0 obj
<< /Type /Namespace /NS (https://www.latex-project.org/ns/book/2022) /RoleMapNS 18 0 R >>
endobj
19 0 obj
<< /Type /Namespace /NS (data:,C9B55C18-275C-494E-C10F-E4B83CD03F23) >>
endobj
8 0 obj
[ 9 0 R 11 0 R 13 0 R 15 0 R 17 0 R 19 0 R ]
endobj
21 0 obj
<< /Type /StructElem /S /Document /NS 11 0 R /P 5 0 R /K 26 0 R /ID (ID.002) >>
endobj
24 0 obj
<< /Type /StructElem /S /Artifact /NS 15 0 R /P 5 0 R /ID (ID.003) >>
endobj
25 0 obj
<< /Type /StructElem /S /Artifact /NS 15 0 R /P 5 0 R /ID (ID.004) >>
endobj
26 0 obj
<< /Type /StructElem /S /text-unit /NS 15 0 R /P 21 0 R /K 27 0 R /ID (ID.005) >>
endobj
27 0 obj
<< /Type /StructElem /C /justify /S /text /NS 15 0 R /P 26 0 R /K [ 28 0 R ] /ID (ID.006) >>
endobj
28 0 obj
<< /Type /StructElem /C /inline /AF [30 0 R] /T <FEFF006D006100740068> /S /Formula /NS 11 0 R /P 27 0 R /K [ 33 0 R] /ID (ID.007) >>
endobj
31 0 obj
<< /Type /StructElem /S /mtext /NS 13 0 R /P 33 0 R /K [<</Type /MCR /Pg 42 0 R /MCID 3>> 32 0 R ] /ID (ID.008) >>
endobj
32 0 obj
<< /Type /StructElem /S /Em /NS 11 0 R /P 31 0 R /K <</Type /MCR /Pg 42 0 R /MCID 4>> /ID (ID.009) >>
endobj
33 0 obj
<< /Type /StructElem /S /math /NS 13 0 R /P 28 0 R /K [34 0 R 35 0 R 37 0 R 38 0 R 31 0 R] /ID (ID.010) >>
endobj
34 0 obj
<< /Type /StructElem /S /mi /NS 13 0 R /P 33 0 R /K <</Type /MCR /Pg 42 0 R /MCID 0>> /ID (ID.011) >>
endobj
35 0 obj
<< /Type /StructElem /A 36 0 R /S /mo /NS 13 0 R /P 33 0 R /K <</Type /MCR /Pg 42 0 R /MCID 1>> /ID (ID.012) >>
endobj
37 0 obj
<< /Type /StructElem /S /mi /NS 13 0 R /P 33 0 R /K <</Type /MCR /Pg 42 0 R /MCID 2>> /ID (ID.013) >>
endobj
38 0 obj
<< /Type /StructElem /A 39 0 R /S /mspace /NS 13 0 R /P 33 0 R /ID (ID.014) >>
endobj
5 0 obj
<< /Type /StructTreeRoot /Namespaces 8 0 R /IDTree 54 0 R /ClassMap 55 0 R /ParentTree 6 0 R /RoleMap 7 0 R /K 21 0 R >>
endobj
56 0 obj
[ 43 [ 460 ] 50 [ 460 ] 96 [ 422 ] 98 [ 409 ] 105 [ 332 ] 109 [ 537 ] ]
endobj
58 0 obj
<< /Subtype /CIDFontType0C /Length 1274 >>
[BINARY STREAM]
endobj
57 0 obj
<< /Type /FontDescriptor /FontName /ADNFRA+LMRoman10-Italic /Flags 4 /FontBBox [ -458 -290 1386 1125 ] /Ascent 1125 /CapHeight 683 /Descent -290 /ItalicAngle -15 /StemV 102 /XHeight 431 /FontFile3 58 0 R >>
endobj
59 0 obj
<< /Length 757 >>
stream
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (TeX-ADNFRA-LMRoman10-Italic-0)
%%Title: (TeX-ADNFRA-LMRoman10-Italic-0 TeX ADNFRA-LMRoman10-Italic 0)
%%Version: 1.000
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<< /Registry (TeX)
/Ordering (ADNFRA-LMRoman10-Italic)
/Supplement 0
>> def
/CMapName /TeX-Identity-ADNFRA-LMRoman10-Italic def
/CMapType 2 def
1 begincodespacerange
<0000> <FFFF>
endcodespacerange
0 beginbfrange
endbfrange
6 beginbfchar
<002B> <0063>
<0032> <0065>
<0060> <0072>
<0062> <0073>
<0069> <0074>
<006D> <0075>
endbfchar
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF
endstream
endobj
46 0 obj
<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ADNFRA+LMRoman10-Italic /DescendantFonts [ 60 0 R ] /ToUnicode 59 0 R >>
endobj
60 0 obj
<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ADNFRA+LMRoman10-Italic /FontDescriptor 57 0 R /W 56 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
61 0 obj
[ 50 [ 444 ] 63 [ 556 ] 66 [ 278 ] 75 [ 833 ] 81 [ 500 500 ] 98 [ 394 ] 103 [ 333 ] 105 [ 389 ] 114 [ 722 ] 116 [ 528 ] ]
endobj
63 0 obj
<< /Subtype /CIDFontType0C /Length 1812 >>
[BINARY STREAM]
endobj
62 0 obj
<< /Type /FontDescriptor /FontName /GZYIXU+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 63 0 R >>
endobj
64 0 obj
<< /Length 833 >>
stream
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (TeX-GZYIXU-LMRoman10-Regular-0)
%%Title: (TeX-GZYIXU-LMRoman10-Regular-0 TeX GZYIXU-LMRoman10-Regular 0)
%%Version: 1.000
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<< /Registry (TeX)
/Ordering (GZYIXU-LMRoman10-Regular)
/Supplement 0
>> def
/CMapName /TeX-Identity-GZYIXU-LMRoman10-Regular def
/CMapType 2 def
1 begincodespacerange
<0000> <FFFF>
endcodespacerange
0 beginbfrange
endbfrange
11 beginbfchar
<0032> <0065>
<003F> <0068>
<0042> <0069>
<004B> <006D>
<0051> <006F>
<0052> <0031>
<0062> <0073>
<0067> <0020>
<0069> <0074>
<0072> <0077>
<0074> <0078>
endbfchar
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF
endstream
endobj
45 0 obj
<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GZYIXU+LMRoman10-Regular /DescendantFonts [ 65 0 R ] /ToUnicode 64 0 R >>
endobj
65 0 obj
<< /Type /Font /Subtype /CIDFontType0 /BaseFont /GZYIXU+LMRoman10-Regular /FontDescriptor 62 0 R /W 61 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
66 0 obj
[ 30 [ 778 ] 1296 [ 529 429 ] ]
endobj
68 0 obj
<< /Subtype /CIDFontType0C /Length 984 >>
[BINARY STREAM]
endobj
67 0 obj
<< /Type /FontDescriptor /FontName /NFEDYW+LatinModernMath-Regular /Flags 4 /FontBBox [ -1042 -3060 4082 3560 ] /Ascent 806 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 68 0 R >>
endobj
69 0 obj
<< /Length 758 >>
stream
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (TeX-NFEDYW-LatinModernMath-Regular-0)
%%Title: (TeX-NFEDYW-LatinModernMath-Regular-0 TeX NFEDYW-LatinModernMath-Regular 0)
%%Version: 1.000
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<< /Registry (TeX)
/Ordering (NFEDYW-LatinModernMath-Regular)
/Supplement 0
>> def
/CMapName /TeX-Identity-NFEDYW-LatinModernMath-Regular def
/CMapType 2 def
1 begincodespacerange
<0000> <FFFF>
endcodespacerange
0 beginbfrange
endbfrange
3 beginbfchar
<001E> <003D>
<0510> <D835DC4E>
<0511> <D835DC4F>
endbfchar
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF
endstream
endobj
44 0 obj
<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /NFEDYW+LatinModernMath-Regular /DescendantFonts [ 70 0 R ] /ToUnicode 69 0 R >>
endobj
70 0 obj
<< /Type /Font /Subtype /CIDFontType0 /BaseFont /NFEDYW+LatinModernMath-Regular /FontDescriptor 67 0 R /W 66 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
47 0 obj
<< /Type /Pages /Count 1 /Kids [ 42 0 R ] >>
endobj
71 0 obj
<< /EmbeddedFiles 52 0 R >>
endobj
72 0 obj
<< /Type /Catalog /Pages 47 0 R /Names 71 0 R /MarkInfo 48 0 R/OutputIntents 49 0 R/Lang (en)/Metadata 40 0 R/StructTreeRoot 5 0 R >>
endobj
xref
0 73
0000000002 65535 f
0000021934 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
0000000012 00000 f
0000023573 00000 n
0000000014 00000 f
0000023643 00000 n
0000000020 00000 f
0000024406 00000 n
0000023724 00000 n
0000024684 00000 n
0000024513 00000 n
0000024791 00000 n
0000000000 00000 f
0000024941 00000 n
0000000020 00000 n
0000003353 00000 n
0000025039 00000 n
0000025127 00000 n
0000025215 00000 n
0000025315 00000 n
0000025426 00000 n
0000003586 00000 n
0000003921 00000 n
0000025577 00000 n
0000025711 00000 n
0000025832 00000 n
0000025957 00000 n
0000026078 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
trailer
<< /Size 73 /Root 72 0 R /ID [ <2350CAD05F8A7AF0AA4058486855344F> <2350CAD05F8A7AF0AA4058486855344F> ] >>
startxref
35690
%%EOF