[latex3-commits] [latex3/luamml] structnum: add support for \tag_struct_use_num:n (eb5278e)

github at latex-project.org github at latex-project.org
Fri Nov 1 13:06:28 CET 2024


Repository : https://github.com/latex3/luamml
On branch  : structnum
Link       : https://github.com/latex3/luamml/commit/eb5278e478fb3f5f3a81c1c4f62cc4fd6bd655be

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

commit eb5278e478fb3f5f3a81c1c4f62cc4fd6bd655be
Author: Ulrike Fischer <fischer at troubleshooting-tex.de>
Date:   Fri Nov 1 13:06:28 2024 +0100

    add support for \tag_struct_use_num:n


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

eb5278e478fb3f5f3a81c1c4f62cc4fd6bd655be
 luamml-structelemwriter.lua      |   6 +
 luamml-tex-annotate.lua          |  12 +
 luamml.dtx                       |  18 +-
 testfiles-lua/test_structnum.pvt |  29 ++
 testfiles-lua/test_structnum.tpf | 782 +++++++++++++++++++++++++++++++++++++++
 5 files changed, 846 insertions(+), 1 deletion(-)

diff --git a/luamml-structelemwriter.lua b/luamml-structelemwriter.lua
index 97a90ac..7c2e549 100644
--- a/luamml-structelemwriter.lua
+++ b/luamml-structelemwriter.lua
@@ -1,5 +1,6 @@
 local struct_begin = token.create'tag_struct_begin: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 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'], '}')
     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
   local i = 0
   for attr, val in next, tree do if type(attr) == 'string' and not string.find(attr, ':') and attr ~= 'xmlns' then
diff --git a/luamml-tex-annotate.lua b/luamml-tex-annotate.lua
index 050a00a..958b3ee 100644
--- a/luamml-tex-annotate.lua
+++ b/luamml-tex-annotate.lua
@@ -83,6 +83,18 @@ local function annotate()
           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
       tex.error'Unable to annotate nucleus of node without nucleus'
     end
diff --git a/luamml.dtx b/luamml.dtx
index 651185a..c45dca1 100644
--- a/luamml.dtx
+++ b/luamml.dtx
@@ -93,7 +93,23 @@
 % }
 % \end{verbatim}
 % 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}
 % Currently all mathematical expressions which purely contain Unicode encoded math mode material without embedded non-math should get converted successfully.
diff --git a/testfiles-lua/test_structnum.pvt b/testfiles-lua/test_structnum.pvt
new file mode 100644
index 0000000..c9dc413
--- /dev/null
+++ b/testfiles-lua/test_structnum.pvt
@@ -0,0 +1,29 @@
+\ExplSyntaxOn
+\sys_gset_rand_seed:n{42}
+\ExplSyntaxOff
+\input{regression-test}
+\DocumentMetadata{
+ lang=en,
+ testphase={phase-III,math},
+ pdfversion=2.0,
+ pdfstandard=ua-2,
+ pdfstandard=a-4f,
+ uncompress
+}
+
+\documentclass{article}
+\usepackage{luamml}
+\usepackage{unicode-math}
+
+\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}
+
diff --git a/testfiles-lua/test_structnum.tpf b/testfiles-lua/test_structnum.tpf
new file mode 100644
index 0000000..1411fa3
--- /dev/null
+++ b/testfiles-lua/test_structnum.tpf
@@ -0,0 +1,782 @@
+%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 16667 >>      
+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-1.18.0</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:e4893c9d-70ea-461b-8e2e-53943b5e796b</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>>
+ >>
+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 /AF [30 0 R] /T <FEFF006D006100740068> /Alt <FEFF004C006100540065005800200066006F0072006D0075006C006100200073007400610072007400730020005C0062006500670069006E0020007B006D006100740068007D00200061003D0062005C00710075006100640020005C0074006100670073007400720075006300740062006500670069006E0020007B007400610067003D006D0074006500780074002C00730074006100730068007D005C007400610067006D00630062006500670069006E0020007B007D005C006C00750061006D006D006C005F0061006E006E006F0074006100740065003A0065006E0020007B006E00750063006C006500750073003D0074007200750065002C007300740072007500630074006E0075006D003D005C007400610067005F006700650074003A006E0020007B007300740072007500630074005F006E0075006D007D007D007B005C006D0062006F00780020007B0073006F006D006500200074006500780074002000770069007400680020005C0065006D007000680020007B007300740072007500630074007500720065007D007D007D005C007400610067006D00630065006E00640020005C0074006100670073007400720075006300740065006E006400200020005C0065006E00640020007B006D006100740068007D0020004C006100540065005800200066006F0072006D0075006C006100200065006E006400730020> /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 
+0000021932 00000 n 
+0000000003 00000 f 
+0000000004 00000 f 
+0000000010 00000 f 
+0000027417 00000 n 
+0000022446 00000 n 
+0000022821 00000 n 
+0000024839 00000 n 
+0000023464 00000 n 
+0000000012 00000 f 
+0000023532 00000 n 
+0000000014 00000 f 
+0000023602 00000 n 
+0000000020 00000 f 
+0000024365 00000 n 
+0000023683 00000 n 
+0000024643 00000 n 
+0000024472 00000 n 
+0000024750 00000 n 
+0000000000 00000 f 
+0000024900 00000 n 
+0000000020 00000 n 
+0000003353 00000 n 
+0000024998 00000 n 
+0000025086 00000 n 
+0000025174 00000 n 
+0000025274 00000 n 
+0000025385 00000 n 
+0000003586 00000 n 
+0000003921 00000 n 
+0000026565 00000 n 
+0000026699 00000 n 
+0000026820 00000 n 
+0000026945 00000 n 
+0000027066 00000 n 
+0000004121 00000 n 
+0000027198 00000 n 
+0000027319 00000 n 
+0000004189 00000 n 
+0000004240 00000 n 
+0000021845 00000 n 
+0000021710 00000 n 
+0000020997 00000 n 
+0000036056 00000 n 
+0000033540 00000 n 
+0000030040 00000 n 
+0000036422 00000 n 
+0000021979 00000 n 
+0000022015 00000 n 
+0000022042 00000 n 
+0000022211 00000 n 
+0000022400 00000 n 
+0000022517 00000 n 
+0000022784 00000 n 
+0000023400 00000 n 
+0000027554 00000 n 
+0000029000 00000 n 
+0000027642 00000 n 
+0000029223 00000 n 
+0000030193 00000 n 
+0000030392 00000 n 
+0000032426 00000 n 
+0000030530 00000 n 
+0000032647 00000 n 
+0000033694 00000 n 
+0000033894 00000 n 
+0000035010 00000 n 
+0000033942 00000 n 
+0000035238 00000 n 
+0000036216 00000 n 
+0000036484 00000 n 
+0000036528 00000 n 
+trailer
+<< /Size 73 /Root 72 0 R >>
+startxref
+36678
+%%EOF





More information about the latex3-commits mailing list.