From c4f56ee6b7239047ecfcd32987c06f2562982967 Mon Sep 17 00:00:00 2001 From: Deyan Ginev Date: Sun, 18 Jan 2026 18:43:48 -0500 Subject: [PATCH 1/4] include ltx:abstract, ltx:acknowledgements in TOC by default --- lib/LaTeXML.pm | 6 +-- .../Engine/latex_constructs.pool.ltxml | 21 ++++++-- lib/LaTeXML/Package/JHEP.cls.ltxml | 5 +- lib/LaTeXML/Package/OmniBus.cls.ltxml | 1 - lib/LaTeXML/Package/aa_support.sty.ltxml | 2 +- lib/LaTeXML/Package/aas_support.sty.ltxml | 1 - .../Package/elsart_support_core.sty.ltxml | 5 +- lib/LaTeXML/Package/iopart_support.sty.ltxml | 1 - lib/LaTeXML/Package/jheppub.sty.ltxml | 1 - lib/LaTeXML/Package/llncs.cls.ltxml | 1 - lib/LaTeXML/Package/revtex4_support.sty.ltxml | 7 ++- lib/LaTeXML/Package/sv_support.sty.ltxml | 3 +- lib/LaTeXML/Post/CrossRef.pm | 20 +++---- lib/LaTeXML/Post/Scan.pm | 54 ++++++++++++++----- .../resources/RelaxNG/LaTeXML-structure.rnc | 4 +- .../resources/RelaxNG/LaTeXML-structure.rng | 2 + lib/LaTeXML/resources/RelaxNG/LaTeXML.model | 4 +- .../XSLT/LaTeXML-structure-xhtml.xsl | 5 +- 18 files changed, 88 insertions(+), 55 deletions(-) diff --git a/lib/LaTeXML.pm b/lib/LaTeXML.pm index 1fe43bf0e2..0fab8a5b9c 100644 --- a/lib/LaTeXML.pm +++ b/lib/LaTeXML.pm @@ -366,7 +366,7 @@ sub convert { $serialized = Encode::encode('UTF-8', $serialized); } } else { # fragment case $serialized = $result->toString(1, 1); - } } + } } elsif ($$opts{format} =~ /^html/) { if (ref($result) =~ /^LaTeXML::(Post::)?Document$/) { $serialized = $result->getDocument->toStringHTML; } @@ -666,8 +666,8 @@ sub convert_post { sub check_TOC { my ($self, $document) = @_; if (!$document->findnode('//ltx:TOC[@lists="toc"]')) { - my @s = (qw(ltx:part ltx:chapter ltx:section ltx:subsection ltx:subsubsection - ltx:paragraph ltx:subparagraph ltx:appendix ltx:index ltx:bibliography)); + my @s = (qw(ltx:abstract ltx:part ltx:chapter ltx:section ltx:subsection ltx:subsubsection + ltx:paragraph ltx:subparagraph ltx:appendix ltx:index ltx:acknowledgements ltx:bibliography)); $document->prependNodes($document->getDocumentElement, ['ltx:TOC', { lists => 'toc', scope => 'global', select => join(' | ', @s), class => 'ltx_nodisplay' }]); } diff --git a/lib/LaTeXML/Engine/latex_constructs.pool.ltxml b/lib/LaTeXML/Engine/latex_constructs.pool.ltxml index 1b763a7ec6..8f5e376611 100644 --- a/lib/LaTeXML/Engine/latex_constructs.pool.ltxml +++ b/lib/LaTeXML/Engine/latex_constructs.pool.ltxml @@ -718,13 +718,24 @@ DefConstructorI('\tableofcontents', undef, "#name", properties => sub { my $td = CounterValue('tocdepth')->valueOf + 1; - my @s = (qw(ltx:part ltx:chapter ltx:section ltx:subsection ltx:subsubsection + my @s = (qw(ltx:abstract ltx:part ltx:chapter ltx:section ltx:subsection ltx:subsubsection ltx:paragraph ltx:subparagraph)); $td = $#s if $#s < $td; @s = map { $s[$_] } 0 .. $td; - push(@s, (qw(ltx:appendix ltx:index ltx:bibliography))) if @s; + push(@s, (qw(ltx:appendix ltx:index ltx:acknowledgements ltx:bibliography))) if @s; (select => join(' | ', @s), name => DigestText(T_CS('\contentsname'))); }); +# Ensure we add the TOC-relevant attributes to the relevant elements. +Tag('ltx:abstract', afterOpen => sub { + my ($document, $node, $thing) = @_; + $document->setAttribute($node, inlist => 'toc'); + GenerateID($document, $node, $thing, 'abstract'); + return; }); +Tag('ltx:acknowledgements', autoClose => 1, afterOpen => sub { + my ($document, $node, $thing) = @_; + $document->setAttribute($node, inlist => 'toc'); + GenerateID($document, $node, $thing, 'acknowledgements'); + return; }); #DefMacroI('\listfigurename', undef, 'List of Figures'); DefConstructorI('\listoffigures', undef, @@ -4071,8 +4082,9 @@ DefConstructorI('\endthebibliography', undef, sub { locked => 1); Let('\saved@endthebibliography', '\endthebibliography'); # auto close the bibliography and contained biblist. -Tag('ltx:biblist', autoClose => 1); -Tag('ltx:bibliography', autoClose => 1); +Tag('ltx:biblist', autoClose => 1); +Tag('ltx:bibliography', autoClose => 1, + afterOpen => sub { $_[1]->setAttribute('inlist', 'toc'); }); # Since SOME people seem to write bibliographies w/o \bibitem, # just blank lines between apparent entries, @@ -6008,4 +6020,3 @@ EOL #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1; - diff --git a/lib/LaTeXML/Package/JHEP.cls.ltxml b/lib/LaTeXML/Package/JHEP.cls.ltxml index 5f7734c7eb..d310d50830 100644 --- a/lib/LaTeXML/Package/JHEP.cls.ltxml +++ b/lib/LaTeXML/Package/JHEP.cls.ltxml @@ -61,7 +61,6 @@ DefMacro('\keywords{}', '\@add@frontmatter{ltx:keywords}{#1}'); DefConstructor('\acknowledgments', "", properties => sub { (name => Digest(T_CS('\acknowlname'))); }); DefConstructor('\endacknowledgments', ""); -Tag("ltx:acknowledgements", autoClose => 1); #====================================================================== DefPrimitiveI('\hash', undef, '#'); @@ -133,7 +132,7 @@ DefEnvironment('{floatingtable}[]', DefConstructor('\href Semiverbatim Semiverbatim', "#2", enterHorizontal => 1, - properties => sub { (href => ComposeURL((LookupValue('BASE_URL') || ''), $_[1])); }); + properties => sub { (href => ComposeURL((LookupValue('BASE_URL') || ''), $_[1])); }); DefMacro('\JHEPspecialurl Semiverbatim', ''); # ??? DefMacro('\base Semiverbatim', ''); @@ -310,5 +309,3 @@ DefMacro('\acknowlname', 'Acknowledgments'); 1; __END__ - - diff --git a/lib/LaTeXML/Package/OmniBus.cls.ltxml b/lib/LaTeXML/Package/OmniBus.cls.ltxml index f60a29272d..5960c7baaa 100644 --- a/lib/LaTeXML/Package/OmniBus.cls.ltxml +++ b/lib/LaTeXML/Package/OmniBus.cls.ltxml @@ -226,7 +226,6 @@ Let('\abst', '\abstract'); DefConstructor('\acknowledgments', "", properties => sub { (name => Digest(T_CS('\acknowledgmentsname'))); }); DefConstructor('\endacknowledgments', ""); -Tag("ltx:acknowledgements", autoClose => 1); DefMacro('\acknowledgmentsname', 'Acknowledgements'); Let('\acknowledgements', '\acknowledgments'); diff --git a/lib/LaTeXML/Package/aa_support.sty.ltxml b/lib/LaTeXML/Package/aa_support.sty.ltxml index eedf9e8406..c68032d1a3 100644 --- a/lib/LaTeXML/Package/aa_support.sty.ltxml +++ b/lib/LaTeXML/Package/aa_support.sty.ltxml @@ -135,7 +135,7 @@ DefConstructor('\endacknowledgements', ""); DefConstructor('\acknowledgement', "", properties => sub { (name => Digest(T_CS('\acknowledgmentsname'))); }); DefConstructor('\endacknowledgement', ""); -Tag("ltx:acknowledgements", autoClose => 1); + DefMacro('\acknowledgmentsname', 'Acknowledgements'); DefMacro('\ackname', 'Acknowledgements'); diff --git a/lib/LaTeXML/Package/aas_support.sty.ltxml b/lib/LaTeXML/Package/aas_support.sty.ltxml index 526d71b775..a8dae0e37c 100644 --- a/lib/LaTeXML/Package/aas_support.sty.ltxml +++ b/lib/LaTeXML/Package/aas_support.sty.ltxml @@ -226,7 +226,6 @@ DefEnvironment('{interactive}{}{}', '#body'); # 2.9 Acknowledgements # acts like \section{Acknowledgements}, rather than container. -Tag("ltx:acknowledgements", autoClose => 1); DefConstructor('\acknowledgements', ""); Let('\acknowledgments', '\acknowledgements'); diff --git a/lib/LaTeXML/Package/elsart_support_core.sty.ltxml b/lib/LaTeXML/Package/elsart_support_core.sty.ltxml index 95d2ad4190..bb570a4abb 100644 --- a/lib/LaTeXML/Package/elsart_support_core.sty.ltxml +++ b/lib/LaTeXML/Package/elsart_support_core.sty.ltxml @@ -63,7 +63,7 @@ DefMacro('\runtitle{}', Tokens()); DefMacro('\subtitle{}', '\@add@frontmatter{ltx:subtitle}{#1}'); DefMacro('\ead Optional:email Semiverbatim', - '\@add@to@frontmatter{ltx:creator}{\@@@email{#1}{#2}}'); + '\@add@to@frontmatter{ltx:creator}{\@@@email{#1}{#2}}'); DefConstructor('\@@@email{}{}', "^ #2"); DefMacro('\sep', '\unskip,\space'); @@ -122,7 +122,6 @@ Let('\ESpagenumber', '\arabic'); DefConstructor('\ack', ""); DefConstructor('\endack', ""); -Tag("ltx:acknowledgements", autoClose => 1); #====================================================================== # 6 Keywords @@ -147,7 +146,7 @@ DefMacro('\UK', '\@keyword@cut\@UK'); DefMacro('\@keyword XUntil:\@keyword@cut', '\@add@frontmatter{ltx:classification}[scheme=keywords]{#1}'); DefMacro('\@PACS XUntil:\@keyword@cut', '\@add@frontmatter{ltx:classification}[scheme=PACS]{#1}'); -DefMacro('\@MSC {} XUntil:\@keyword@cut', '\@add@frontmatter{ltx:classification}[scheme={#1 MSC}]{#2}'); +DefMacro('\@MSC {} XUntil:\@keyword@cut', '\@add@frontmatter{ltx:classification}[scheme={#1 MSC}]{#2}'); DefMacro('\@JEL XUntil:\@keyword@cut', '\@add@frontmatter{ltx:classification}[scheme=JEL]{#1}'); DefMacro('\@UK XUntil:\@keyword@cut', '\@add@frontmatter{ltx:classification}[scheme=UK]{#1}'); DefConstructor('\@keyword@cut', ''); diff --git a/lib/LaTeXML/Package/iopart_support.sty.ltxml b/lib/LaTeXML/Package/iopart_support.sty.ltxml index 25d19c1d23..b78f9a8f8f 100644 --- a/lib/LaTeXML/Package/iopart_support.sty.ltxml +++ b/lib/LaTeXML/Package/iopart_support.sty.ltxml @@ -248,7 +248,6 @@ DefMacro('\endrefs', '\end{thebibliography}'); DefConstructor('\ack', ""); # name? DefConstructor('\ackn', ""); -Tag("ltx:acknowledgements", autoClose => 1); #====================================================================== # Abbreviations diff --git a/lib/LaTeXML/Package/jheppub.sty.ltxml b/lib/LaTeXML/Package/jheppub.sty.ltxml index f3e1e9bbd1..490a122a3c 100644 --- a/lib/LaTeXML/Package/jheppub.sty.ltxml +++ b/lib/LaTeXML/Package/jheppub.sty.ltxml @@ -57,7 +57,6 @@ DefMacro('\acknowledgmentsname', 'Acknowledgements'); DefConstructor('\acknowledgments', "", properties => sub { (name => Digest(T_CS('\acknowledgmentsname'))); }); DefConstructor('\endacknowledgments', ""); -Tag("ltx:acknowledgements", autoClose => 1); DefConditional('\ifaffil', undef); DefConditional('\ifnotoc', undef); diff --git a/lib/LaTeXML/Package/llncs.cls.ltxml b/lib/LaTeXML/Package/llncs.cls.ltxml index f69db87243..5b867a8626 100644 --- a/lib/LaTeXML/Package/llncs.cls.ltxml +++ b/lib/LaTeXML/Package/llncs.cls.ltxml @@ -53,7 +53,6 @@ DefConstructor('\acknowledgements', "", DefMacro('\acknowledgement', '\acknowledgements'); DefConstructor('\endacknowledgements', ""); DefConstructor('\endacknowledgement', ""); -Tag("ltx:acknowledgements", autoClose => 1); DefConstructor('\url Semiverbatim', "#1"); diff --git a/lib/LaTeXML/Package/revtex4_support.sty.ltxml b/lib/LaTeXML/Package/revtex4_support.sty.ltxml index 86ad617e10..ebb76a875c 100644 --- a/lib/LaTeXML/Package/revtex4_support.sty.ltxml +++ b/lib/LaTeXML/Package/revtex4_support.sty.ltxml @@ -103,7 +103,6 @@ DefConstructor('\endacknowledgments', ""); DefMacro('\acknowledgmentsname', 'Acknowledgements'); Let('\acknowledgements', '\acknowledgments'); Let('\endacknowledgements', '\endacknowledgments'); -Tag("ltx:acknowledgements", autoClose => 1); # Extra stuff DefMacro('\thesection', '\Roman{section}'); # Apparently the desired style. @@ -134,7 +133,7 @@ DefConstructor('\endnotemark[]', "" . "#tags" . "", - mode => 'restricted_horizontal', enterHorizontal => 1, + mode => 'restricted_horizontal', enterHorizontal => 1, properties => sub { ($_[1] ? (mark => $_[1]) @@ -162,10 +161,10 @@ DefConstructor('\text{}', "#1", mode => 'restricted_horizontal', locked => 1); # RevTeX3 (obsolete in RevTeX4) -DefConstructor('\bm{}', '#1', bounded => 1, requireMath => 1, font => { forcebold => 1 }); +DefConstructor('\bm{}', '#1', bounded => 1, requireMath => 1, font => { forcebold => 1 }); DefConstructor('\bbox{}', '#1', bounded => 1, requireMath => 1, font => { forcebold => 1 }, - locked => 1); + locked => 1); DefConstructor('\pmb{}', '#1', bounded => 1, requireMath => 1, font => { forcebold => 1, family => 'blackboard', series => 'medium', shape => 'upright' }); diff --git a/lib/LaTeXML/Package/sv_support.sty.ltxml b/lib/LaTeXML/Package/sv_support.sty.ltxml index 1f86e960f2..8d59b90530 100644 --- a/lib/LaTeXML/Package/sv_support.sty.ltxml +++ b/lib/LaTeXML/Package/sv_support.sty.ltxml @@ -82,7 +82,6 @@ DefConstructor('\acknowledgements', "", DefMacro('\acknowledgement', '\acknowledgements'); DefConstructor('\endacknowledgements', ""); DefConstructor('\endacknowledgement', ""); -Tag("ltx:acknowledgements", autoClose => 1); DefMacro('\noteaddname', 'Note added in proof'); DefMacro('\notename', 'Note'); @@ -232,7 +231,7 @@ DefMacro('\qed', '\ltx@qed'); DefConstructor('\ltx@qed', "?#isMath(\x{220E})(\x{220E})", enterHorizontal => 1, - reversion => '\qed'); + reversion => '\qed'); Let('\smartqed', '\qed'); Let('\squareforqed', '\qed'); diff --git a/lib/LaTeXML/Post/CrossRef.pm b/lib/LaTeXML/Post/CrossRef.pm index 72cbc3a0ce..224eaa77d3 100644 --- a/lib/LaTeXML/Post/CrossRef.pm +++ b/lib/LaTeXML/Post/CrossRef.pm @@ -129,7 +129,7 @@ sub fill_in_relations { $doc->addNavigation($child_rel => $child_id); } else { # Else, consider it as some sort of sidebar. $doc->addNavigation('sidebar' => $child_id); } } - } } + } } return; } sub findPreviousPage { @@ -200,10 +200,10 @@ sub getChildPages { # To make it more extensible, it really should be integrated into the database? # Eg. "sectional" things might mark their entries specially? my $normaltoctypes = { map { ($_ => 1) } # CONSTANT - qw (ltx:document ltx:part ltx:chapter + qw (ltx:document ltx:abstract ltx:part ltx:chapter ltx:section ltx:subsection ltx:subsubsection ltx:paragraph ltx:subparagraph - ltx:index ltx:bibliography ltx:glossary ltx:appendix) }; + ltx:index ltx:bibliography ltx:glossary ltx:acknowledgementsltx:appendix) }; sub fill_in_tocs { my ($self, $doc) = @_; @@ -346,7 +346,7 @@ sub fill_in_refs { if (!$ref->textContent) { $doc->addNodes($ref, $label); # Just to reassure (?) readers. $ref->setAttribute(broken => 1); } - } } } + } } } if ($id) { $n++; @@ -365,7 +365,7 @@ sub fill_in_refs { $doc->addNodes($ref, $self->generateRef($doc, $id, $show, $is_nameref)); } if (my $entry = $$self{db}->lookup("ID:$id")) { $ref->setAttribute(stub => 1) if $entry->getValue('stub'); } - } } + } } Debug("Filled in $n refs") if $LaTeXML::DEBUG{crossref}; return; } @@ -384,7 +384,7 @@ sub fill_in_RDFa_refs { $ref->setAttribute($key . 'idref' => $id); } else { $self->note_missing('warn', "Target for $key Label", $label); - } } } + } } } if ($id) { $n++; if (!$ref->getAttribute($key)) { @@ -393,7 +393,7 @@ sub fill_in_RDFa_refs { $ref->setAttribute($key => $url); } } else { $ref->setAttribute($key => '#' . $id); } } - } } } + } } } set_RDFa_prefixes($doc->getDocument, {}); # what prefixes?? Debug("Filled in $n RDFa refs") if $LaTeXML::DEBUG{crossref}; return; } @@ -424,7 +424,7 @@ sub fill_in_mathlinks { $sym->setAttribute(href => $self->generateURL($doc, $id)); if (my $tag = $entry->getValue('tag:short') || $entry->getValue('description')) { $sym->setAttribute(title => getTextContent($doc, $tag)); } - } } } + } } } Debug("Filled in $n math links") if $LaTeXML::DEBUG{crossref}; return; } @@ -559,7 +559,7 @@ sub make_bibcite { $self->note_missing('warn', 'Entry for citation', $key); push(@data, { key => $key, refnum => [$key], title => [$key], year => [], attr => { idref => $key, title => $key, class => "ltx_missing_citation" } }); - } } + } } my $checkdups = ($show =~ /author/i) && ($show =~ /(year|number)/i); my @refs = (); my $saveshow = $show; @@ -939,7 +939,7 @@ sub copy_resources { if (my $src = pathname_find($url, paths => $paths)) { # AND if file exists there. my $dst = $doc->checkDestination($url); pathname_copy($src, $dst); - } } } + } } } return; } # ================================================================================ diff --git a/lib/LaTeXML/Post/Scan.pm b/lib/LaTeXML/Post/Scan.pm index 25bcca3c6a..1440465199 100644 --- a/lib/LaTeXML/Post/Scan.pm +++ b/lib/LaTeXML/Post/Scan.pm @@ -23,18 +23,20 @@ sub new { my $self = $class->SUPER::new(%options); $$self{db} = $options{db}; $$self{handlers} = {}; - $self->registerHandler('ltx:document' => \§ion_handler); - $self->registerHandler('ltx:part' => \§ion_handler); - $self->registerHandler('ltx:chapter' => \§ion_handler); - $self->registerHandler('ltx:section' => \§ion_handler); - $self->registerHandler('ltx:appendix' => \§ion_handler); - $self->registerHandler('ltx:subsection' => \§ion_handler); - $self->registerHandler('ltx:subsubsection' => \§ion_handler); - $self->registerHandler('ltx:paragraph' => \§ion_handler); - $self->registerHandler('ltx:subparagraph' => \§ion_handler); - $self->registerHandler('ltx:bibliography' => \§ion_handler); - $self->registerHandler('ltx:index' => \§ion_handler); - $self->registerHandler('ltx:glossary' => \§ion_handler); + $self->registerHandler('ltx:document' => \§ion_handler); + $self->registerHandler('ltx:abstract' => \&abstract_handler); + $self->registerHandler('ltx:part' => \§ion_handler); + $self->registerHandler('ltx:chapter' => \§ion_handler); + $self->registerHandler('ltx:section' => \§ion_handler); + $self->registerHandler('ltx:appendix' => \§ion_handler); + $self->registerHandler('ltx:subsection' => \§ion_handler); + $self->registerHandler('ltx:subsubsection' => \§ion_handler); + $self->registerHandler('ltx:paragraph' => \§ion_handler); + $self->registerHandler('ltx:subparagraph' => \§ion_handler); + $self->registerHandler('ltx:bibliography' => \§ion_handler); + $self->registerHandler('ltx:index' => \§ion_handler); + $self->registerHandler('ltx:glossary' => \§ion_handler); + $self->registerHandler('ltx:acknowledgements' => \&ack_handler); $self->registerHandler('ltx:table' => \&captioned_handler); $self->registerHandler('ltx:figure' => \&captioned_handler); @@ -295,6 +297,34 @@ sub section_handler { $self->scanChildren($doc, $node, $id || $parent_id); return; } +sub abstract_handler { + my ($self, $doc, $node, $tag, $parent_id) = @_; + my $id = $node->getAttribute('xml:id'); + if ($id) { + my $name = $node->getAttribute('name') || "Abstract"; + $$self{db}->register("ID:$id", + $self->addCommon($doc, $node, $tag, $parent_id), + primary => 1, + title => $name, + toctitle => $name, + children => []); + $self->addAsChild($id, $parent_id); } + return; } + +sub ack_handler { + my ($self, $doc, $node, $tag, $parent_id) = @_; + my $id = $node->getAttribute('xml:id'); + if ($id) { + my $name = $node->getAttribute('name') || "Acknowledgements"; + $$self{db}->register("ID:$id", + $self->addCommon($doc, $node, $tag, $parent_id), + primary => 1, + title => $name, + toctitle => $name, + children => []); + $self->addAsChild($id, $parent_id); } + return; } + sub captioned_handler { my ($self, $doc, $node, $tag, $parent_id) = @_; my $id = $node->getAttribute('xml:id'); diff --git a/lib/LaTeXML/resources/RelaxNG/LaTeXML-structure.rnc b/lib/LaTeXML/resources/RelaxNG/LaTeXML-structure.rnc index 0e340f8b1f..46b1c30ed3 100644 --- a/lib/LaTeXML/resources/RelaxNG/LaTeXML-structure.rnc +++ b/lib/LaTeXML/resources/RelaxNG/LaTeXML-structure.rnc @@ -508,7 +508,7 @@ abstract = element abstract { abstract_attributes, abstract_model } ## Attributes for \elementref{abstract}. -abstract_attributes = Common.attributes, FrontMatter.attributes +abstract_attributes = Common.attributes, FrontMatter.attributes, Labelled.attributes ## Content model for \elementref{abstract}. abstract_model = Block.model @@ -520,7 +520,7 @@ acknowledgements = element acknowledgements { acknowledgements_attributes, acknowledgements_model } ## Attributes for \elementref{acknowledgements}. -acknowledgements_attributes = Common.attributes, FrontMatter.attributes +acknowledgements_attributes = Common.attributes, FrontMatter.attributes, Labelled.attributes ## Content model for \elementref{acknowledgements}. acknowledgements_model = Inline.model diff --git a/lib/LaTeXML/resources/RelaxNG/LaTeXML-structure.rng b/lib/LaTeXML/resources/RelaxNG/LaTeXML-structure.rng index 15d24eb339..19e752fc0b 100644 --- a/lib/LaTeXML/resources/RelaxNG/LaTeXML-structure.rng +++ b/lib/LaTeXML/resources/RelaxNG/LaTeXML-structure.rng @@ -936,6 +936,7 @@ Commonly useful values are specified, but is open-ended to support extension.Attributes for \elementref{abstract}. + Content model for \elementref{abstract}. @@ -953,6 +954,7 @@ Commonly useful values are specified, but is open-ended to support extension.Attributes for \elementref{acknowledgements}. + Content model for \elementref{acknowledgements}. diff --git a/lib/LaTeXML/resources/RelaxNG/LaTeXML.model b/lib/LaTeXML/resources/RelaxNG/LaTeXML.model index 5febc8dcfc..5b0336bfcf 100644 --- a/lib/LaTeXML/resources/RelaxNG/LaTeXML.model +++ b/lib/LaTeXML/resources/RelaxNG/LaTeXML.model @@ -107,8 +107,8 @@ ltx:XMTok{!aria:*,!xml:*,*:*,about,aboutidref,aboutlabelref,align,aria:activedes ltx:XMWrap{!aria:*,!xml:*,*:*,about,aboutidref,aboutlabelref,align,aria:activedescendant,aria:atomic,aria:autocomplete,aria:braillelabel,aria:brailleroledescription,aria:busy,aria:checked,aria:colcount,aria:colindex,aria:colindextext,aria:colspan,aria:controls,aria:current,aria:describedby,aria:description,aria:details,aria:disabled,aria:dropeffectDeprecated,aria:errormessage,aria:expanded,aria:flowto,aria:grabbedDeprecated,aria:haspopup,aria:hidden,aria:invalid,aria:keyshortcuts,aria:label,aria:labelledby,aria:level,aria:live,aria:modal,aria:multiline,aria:multiselectable,aria:orientation,aria:owns,aria:placeholder,aria:posinset,aria:pressed,aria:readonly,aria:relevant,aria:required,aria:role,aria:roledescription,aria:rowcount,aria:rowindex,aria:rowindextext,aria:rowspan,aria:selected,aria:setsize,aria:sort,aria:valuemax,aria:valuemin,aria:valuenow,aria:valuetext,backgroundcolor,class,content,cssstyle,datatype,decl_id,depth,enclose,float,fragid,framecolor,framed,height,href,lpadding,meaning,name,omcd,possibleFunction,prefix,property,rel,resource,resourceidref,resourcelabelref,rev,role,rpadding,rule,scriptpos,style,typeof,vattach,vocab,width,xml:id,xml:lang,xoffset,yoffset}(ltx:ERROR,ltx:XMApp,ltx:XMArg,ltx:XMArray,ltx:XMDual,ltx:XMHint,ltx:XMRef,ltx:XMText,ltx:XMTok,ltx:XMWrap) ltx:XMath{!aria:*,!xml:*,*:*,about,aboutidref,aboutlabelref,aria:activedescendant,aria:atomic,aria:autocomplete,aria:braillelabel,aria:brailleroledescription,aria:busy,aria:checked,aria:colcount,aria:colindex,aria:colindextext,aria:colspan,aria:controls,aria:current,aria:describedby,aria:description,aria:details,aria:disabled,aria:dropeffectDeprecated,aria:errormessage,aria:expanded,aria:flowto,aria:grabbedDeprecated,aria:haspopup,aria:hidden,aria:invalid,aria:keyshortcuts,aria:label,aria:labelledby,aria:level,aria:live,aria:modal,aria:multiline,aria:multiselectable,aria:orientation,aria:owns,aria:placeholder,aria:posinset,aria:pressed,aria:readonly,aria:relevant,aria:required,aria:role,aria:roledescription,aria:rowcount,aria:rowindex,aria:rowindextext,aria:rowspan,aria:selected,aria:setsize,aria:sort,aria:valuemax,aria:valuemin,aria:valuenow,aria:valuetext,class,content,cssstyle,datatype,fragid,prefix,property,rel,resource,resourceidref,resourcelabelref,rev,typeof,vocab,xml:id,xml:lang}(ltx:ERROR,ltx:XMApp,ltx:XMArg,ltx:XMArray,ltx:XMDual,ltx:XMHint,ltx:XMRef,ltx:XMText,ltx:XMTok,ltx:XMWrap) ltx:_CaptureBlock_{!aria:*,!xml:*,*:*,about,aboutidref,aboutlabelref,align,aria:activedescendant,aria:atomic,aria:autocomplete,aria:braillelabel,aria:brailleroledescription,aria:busy,aria:checked,aria:colcount,aria:colindex,aria:colindextext,aria:colspan,aria:controls,aria:current,aria:describedby,aria:description,aria:details,aria:disabled,aria:dropeffectDeprecated,aria:errormessage,aria:expanded,aria:flowto,aria:grabbedDeprecated,aria:haspopup,aria:hidden,aria:invalid,aria:keyshortcuts,aria:label,aria:labelledby,aria:level,aria:live,aria:modal,aria:multiline,aria:multiselectable,aria:orientation,aria:owns,aria:placeholder,aria:posinset,aria:pressed,aria:readonly,aria:relevant,aria:required,aria:role,aria:roledescription,aria:rowcount,aria:rowindex,aria:rowindextext,aria:rowspan,aria:selected,aria:setsize,aria:sort,aria:valuemax,aria:valuemin,aria:valuenow,aria:valuetext,backgroundcolor,class,content,cssstyle,datatype,depth,float,fragid,framecolor,framed,height,inlist,labels,prefix,property,rdf-prefixes,rel,resource,resourceidref,resourcelabelref,rev,typeof,vattach,vocab,width,xml:id,xml:lang,xoffset,yoffset}(ltx:ERROR,ltx:TOC,ltx:abstract,ltx:acknowledgements,ltx:appendix,ltx:bibliography,ltx:block,ltx:break,ltx:caption,ltx:chapter,ltx:classification,ltx:date,ltx:declare,ltx:description,ltx:enumerate,ltx:equation,ltx:equationgroup,ltx:figure,ltx:float,ltx:glossary,ltx:glossarydefinition,ltx:graphics,ltx:index,ltx:indexmark,ltx:inline-block,ltx:inline-description,ltx:inline-enumerate,ltx:inline-itemize,ltx:inline-logical-block,ltx:inline-sectional-block,ltx:itemize,ltx:keywords,ltx:listing,ltx:logical-block,ltx:navigation,ltx:note,ltx:p,ltx:pagination,ltx:para,ltx:paragraph,ltx:part,ltx:picture,ltx:proof,ltx:quote,ltx:rawhtml,ltx:rawliteral,ltx:rdf,ltx:resource,ltx:rule,ltx:section,ltx:sectional-block,ltx:sidebar,ltx:slide,ltx:slidesequence,ltx:subsection,ltx:subsubsection,ltx:subtitle,ltx:table,ltx:tabular,ltx:theorem,ltx:toccaption,ltx:verbatim,svg:foreignObject,svg:g,svg:svg) -ltx:abstract{!aria:*,!xml:*,*:*,about,aboutidref,aboutlabelref,aria:activedescendant,aria:atomic,aria:autocomplete,aria:braillelabel,aria:brailleroledescription,aria:busy,aria:checked,aria:colcount,aria:colindex,aria:colindextext,aria:colspan,aria:controls,aria:current,aria:describedby,aria:description,aria:details,aria:disabled,aria:dropeffectDeprecated,aria:errormessage,aria:expanded,aria:flowto,aria:grabbedDeprecated,aria:haspopup,aria:hidden,aria:invalid,aria:keyshortcuts,aria:label,aria:labelledby,aria:level,aria:live,aria:modal,aria:multiline,aria:multiselectable,aria:orientation,aria:owns,aria:placeholder,aria:posinset,aria:pressed,aria:readonly,aria:relevant,aria:required,aria:role,aria:roledescription,aria:rowcount,aria:rowindex,aria:rowindextext,aria:rowspan,aria:selected,aria:setsize,aria:sort,aria:valuemax,aria:valuemin,aria:valuenow,aria:valuetext,class,content,cssstyle,datatype,name,prefix,property,rel,resource,resourceidref,resourcelabelref,rev,typeof,vocab,xml:lang}(ltx:ERROR,ltx:block,ltx:break,ltx:declare,ltx:description,ltx:enumerate,ltx:equation,ltx:equationgroup,ltx:glossarydefinition,ltx:graphics,ltx:indexmark,ltx:inline-block,ltx:inline-description,ltx:inline-enumerate,ltx:inline-itemize,ltx:inline-logical-block,ltx:inline-sectional-block,ltx:itemize,ltx:listing,ltx:navigation,ltx:note,ltx:p,ltx:pagination,ltx:picture,ltx:quote,ltx:rawhtml,ltx:rawliteral,ltx:rdf,ltx:resource,ltx:rule,ltx:tabular,ltx:verbatim,svg:svg) -ltx:acknowledgements{!aria:*,!xml:*,*:*,about,aboutidref,aboutlabelref,aria:activedescendant,aria:atomic,aria:autocomplete,aria:braillelabel,aria:brailleroledescription,aria:busy,aria:checked,aria:colcount,aria:colindex,aria:colindextext,aria:colspan,aria:controls,aria:current,aria:describedby,aria:description,aria:details,aria:disabled,aria:dropeffectDeprecated,aria:errormessage,aria:expanded,aria:flowto,aria:grabbedDeprecated,aria:haspopup,aria:hidden,aria:invalid,aria:keyshortcuts,aria:label,aria:labelledby,aria:level,aria:live,aria:modal,aria:multiline,aria:multiselectable,aria:orientation,aria:owns,aria:placeholder,aria:posinset,aria:pressed,aria:readonly,aria:relevant,aria:required,aria:role,aria:roledescription,aria:rowcount,aria:rowindex,aria:rowindextext,aria:rowspan,aria:selected,aria:setsize,aria:sort,aria:valuemax,aria:valuemin,aria:valuenow,aria:valuetext,class,content,cssstyle,datatype,name,prefix,property,rel,resource,resourceidref,resourcelabelref,rev,typeof,vocab,xml:lang}(#PCDATA,ltx:ERROR,ltx:Math,ltx:anchor,ltx:bibref,ltx:break,ltx:cite,ltx:declare,ltx:del,ltx:emph,ltx:glossarydefinition,ltx:glossaryref,ltx:graphics,ltx:indexmark,ltx:inline-block,ltx:inline-description,ltx:inline-enumerate,ltx:inline-itemize,ltx:inline-logical-block,ltx:inline-sectional-block,ltx:navigation,ltx:note,ltx:picture,ltx:rawhtml,ltx:rawliteral,ltx:rdf,ltx:ref,ltx:resource,ltx:rule,ltx:sub,ltx:sup,ltx:tabular,ltx:text,ltx:verbatim,svg:svg) +ltx:abstract{!aria:*,!xml:*,*:*,about,aboutidref,aboutlabelref,aria:activedescendant,aria:atomic,aria:autocomplete,aria:braillelabel,aria:brailleroledescription,aria:busy,aria:checked,aria:colcount,aria:colindex,aria:colindextext,aria:colspan,aria:controls,aria:current,aria:describedby,aria:description,aria:details,aria:disabled,aria:dropeffectDeprecated,aria:errormessage,aria:expanded,aria:flowto,aria:grabbedDeprecated,aria:haspopup,aria:hidden,aria:invalid,aria:keyshortcuts,aria:label,aria:labelledby,aria:level,aria:live,aria:modal,aria:multiline,aria:multiselectable,aria:orientation,aria:owns,aria:placeholder,aria:posinset,aria:pressed,aria:readonly,aria:relevant,aria:required,aria:role,aria:roledescription,aria:rowcount,aria:rowindex,aria:rowindextext,aria:rowspan,aria:selected,aria:setsize,aria:sort,aria:valuemax,aria:valuemin,aria:valuenow,aria:valuetext,class,content,cssstyle,datatype,fragid,inlist,labels,name,prefix,property,rel,resource,resourceidref,resourcelabelref,rev,typeof,vocab,xml:id,xml:lang}(ltx:ERROR,ltx:block,ltx:break,ltx:declare,ltx:description,ltx:enumerate,ltx:equation,ltx:equationgroup,ltx:glossarydefinition,ltx:graphics,ltx:indexmark,ltx:inline-block,ltx:inline-description,ltx:inline-enumerate,ltx:inline-itemize,ltx:inline-logical-block,ltx:inline-sectional-block,ltx:itemize,ltx:listing,ltx:navigation,ltx:note,ltx:p,ltx:pagination,ltx:picture,ltx:quote,ltx:rawhtml,ltx:rawliteral,ltx:rdf,ltx:resource,ltx:rule,ltx:tabular,ltx:verbatim,svg:svg) +ltx:acknowledgements{!aria:*,!xml:*,*:*,about,aboutidref,aboutlabelref,aria:activedescendant,aria:atomic,aria:autocomplete,aria:braillelabel,aria:brailleroledescription,aria:busy,aria:checked,aria:colcount,aria:colindex,aria:colindextext,aria:colspan,aria:controls,aria:current,aria:describedby,aria:description,aria:details,aria:disabled,aria:dropeffectDeprecated,aria:errormessage,aria:expanded,aria:flowto,aria:grabbedDeprecated,aria:haspopup,aria:hidden,aria:invalid,aria:keyshortcuts,aria:label,aria:labelledby,aria:level,aria:live,aria:modal,aria:multiline,aria:multiselectable,aria:orientation,aria:owns,aria:placeholder,aria:posinset,aria:pressed,aria:readonly,aria:relevant,aria:required,aria:role,aria:roledescription,aria:rowcount,aria:rowindex,aria:rowindextext,aria:rowspan,aria:selected,aria:setsize,aria:sort,aria:valuemax,aria:valuemin,aria:valuenow,aria:valuetext,class,content,cssstyle,datatype,fragid,inlist,labels,name,prefix,property,rel,resource,resourceidref,resourcelabelref,rev,typeof,vocab,xml:id,xml:lang}(#PCDATA,ltx:ERROR,ltx:Math,ltx:anchor,ltx:bibref,ltx:break,ltx:cite,ltx:declare,ltx:del,ltx:emph,ltx:glossarydefinition,ltx:glossaryref,ltx:graphics,ltx:indexmark,ltx:inline-block,ltx:inline-description,ltx:inline-enumerate,ltx:inline-itemize,ltx:inline-logical-block,ltx:inline-sectional-block,ltx:navigation,ltx:note,ltx:picture,ltx:rawhtml,ltx:rawliteral,ltx:rdf,ltx:ref,ltx:resource,ltx:rule,ltx:sub,ltx:sup,ltx:tabular,ltx:text,ltx:verbatim,svg:svg) ltx:anchor{!aria:*,!xml:*,*:*,about,aboutidref,aboutlabelref,aria:activedescendant,aria:atomic,aria:autocomplete,aria:braillelabel,aria:brailleroledescription,aria:busy,aria:checked,aria:colcount,aria:colindex,aria:colindextext,aria:colspan,aria:controls,aria:current,aria:describedby,aria:description,aria:details,aria:disabled,aria:dropeffectDeprecated,aria:errormessage,aria:expanded,aria:flowto,aria:grabbedDeprecated,aria:haspopup,aria:hidden,aria:invalid,aria:keyshortcuts,aria:label,aria:labelledby,aria:level,aria:live,aria:modal,aria:multiline,aria:multiselectable,aria:orientation,aria:owns,aria:placeholder,aria:posinset,aria:pressed,aria:readonly,aria:relevant,aria:required,aria:role,aria:roledescription,aria:rowcount,aria:rowindex,aria:rowindextext,aria:rowspan,aria:selected,aria:setsize,aria:sort,aria:valuemax,aria:valuemin,aria:valuenow,aria:valuetext,class,content,cssstyle,datatype,fragid,prefix,property,rel,resource,resourceidref,resourcelabelref,rev,typeof,vocab,xml:id,xml:lang}(#PCDATA,ltx:ERROR,ltx:Math,ltx:anchor,ltx:bibref,ltx:break,ltx:cite,ltx:declare,ltx:del,ltx:emph,ltx:glossarydefinition,ltx:glossaryref,ltx:graphics,ltx:indexmark,ltx:inline-block,ltx:inline-description,ltx:inline-enumerate,ltx:inline-itemize,ltx:inline-logical-block,ltx:inline-sectional-block,ltx:navigation,ltx:note,ltx:picture,ltx:rawhtml,ltx:rawliteral,ltx:rdf,ltx:ref,ltx:resource,ltx:rule,ltx:sub,ltx:sup,ltx:tabular,ltx:text,ltx:verbatim,svg:svg) ltx:appendix{!aria:*,!xml:*,*:*,about,aboutidref,aboutlabelref,aria:activedescendant,aria:atomic,aria:autocomplete,aria:braillelabel,aria:brailleroledescription,aria:busy,aria:checked,aria:colcount,aria:colindex,aria:colindextext,aria:colspan,aria:controls,aria:current,aria:describedby,aria:description,aria:details,aria:disabled,aria:dropeffectDeprecated,aria:errormessage,aria:expanded,aria:flowto,aria:grabbedDeprecated,aria:haspopup,aria:hidden,aria:invalid,aria:keyshortcuts,aria:label,aria:labelledby,aria:level,aria:live,aria:modal,aria:multiline,aria:multiselectable,aria:orientation,aria:owns,aria:placeholder,aria:posinset,aria:pressed,aria:readonly,aria:relevant,aria:required,aria:role,aria:roledescription,aria:rowcount,aria:rowindex,aria:rowindextext,aria:rowspan,aria:selected,aria:setsize,aria:sort,aria:valuemax,aria:valuemin,aria:valuenow,aria:valuetext,backgroundcolor,class,content,cssstyle,datatype,fragid,framecolor,framed,inlist,labels,prefix,property,rdf-prefixes,rel,resource,resourceidref,resourcelabelref,rev,typeof,vocab,xml:id,xml:lang}(ltx:TOC,ltx:creator,ltx:declare,ltx:figure,ltx:float,ltx:glossarydefinition,ltx:indexmark,ltx:logical-block,ltx:navigation,ltx:note,ltx:pagination,ltx:para,ltx:paragraph,ltx:proof,ltx:rdf,ltx:resource,ltx:rule,ltx:section,ltx:sidebar,ltx:slide,ltx:subparagraph,ltx:subsection,ltx:subsubsection,ltx:table,ltx:tags,ltx:theorem,ltx:title,ltx:toctitle) ltx:arc{!aria:*,!xml:*,*:*,about,aboutidref,aboutlabelref,angle1,angle2,arc,arcsepA,arcsepB,aria:activedescendant,aria:atomic,aria:autocomplete,aria:braillelabel,aria:brailleroledescription,aria:busy,aria:checked,aria:colcount,aria:colindex,aria:colindextext,aria:colspan,aria:controls,aria:current,aria:describedby,aria:description,aria:details,aria:disabled,aria:dropeffectDeprecated,aria:errormessage,aria:expanded,aria:flowto,aria:grabbedDeprecated,aria:haspopup,aria:hidden,aria:invalid,aria:keyshortcuts,aria:label,aria:labelledby,aria:level,aria:live,aria:modal,aria:multiline,aria:multiselectable,aria:orientation,aria:owns,aria:placeholder,aria:posinset,aria:pressed,aria:readonly,aria:relevant,aria:required,aria:role,aria:roledescription,aria:rowcount,aria:rowindex,aria:rowindextext,aria:rowspan,aria:selected,aria:setsize,aria:sort,aria:valuemax,aria:valuemin,aria:valuenow,aria:valuetext,arrowlength,class,content,cssstyle,curvature,datatype,displayedpoints,fill,height,points,prefix,property,r,rel,resource,resourceidref,resourcelabelref,rev,rx,ry,showpoints,stroke,stroke-dasharray,stroke-width,terminators,transform,typeof,vocab,width,x,xml:lang,y}() diff --git a/lib/LaTeXML/resources/XSLT/LaTeXML-structure-xhtml.xsl b/lib/LaTeXML/resources/XSLT/LaTeXML-structure-xhtml.xsl index 56297156d3..43ef9e39b2 100644 --- a/lib/LaTeXML/resources/XSLT/LaTeXML-structure-xhtml.xsl +++ b/lib/LaTeXML/resources/XSLT/LaTeXML-structure-xhtml.xsl @@ -306,7 +306,7 @@ 1 - + @@ -343,7 +343,8 @@ + or $name = 'glossary' or $name = 'bibliography' + or $name = 'acknowledgements'"> Date: Sun, 18 Jan 2026 18:57:30 -0500 Subject: [PATCH 2/4] udpate tests to carry xml:id and inlist for ltx:abstract, ltx:acknowledgements --- t/daemon/formats/jats.xml | 50 +++++++++++++++++----------------- t/daemon/formats/makebib.xml | 2 +- t/daemon/formats/tei.xml | 4 +-- t/expansion/textcase.xml | 2 +- t/structure/IEEE.xml | 2 +- t/structure/abstract.xml | 2 +- t/structure/amsarticle.xml | 4 +-- t/structure/article.pdf | Bin 108902 -> 115475 bytes t/structure/article.xml | 2 +- t/structure/badabstract.xml | 2 +- t/structure/bibsect.xml | 6 ++-- t/structure/book.xml | 2 +- t/structure/crazybib.xml | 12 ++++---- t/structure/faketitlepage.xml | 2 +- t/structure/natbib.xml | 2 +- t/structure/report.xml | 2 +- t/structure/svabstract.xml | 2 +- t/structure/titlepage.xml | 2 +- t/theorem/amstheorem.xml | 2 +- t/tokenize/percent.xml | 2 +- 20 files changed, 52 insertions(+), 52 deletions(-) diff --git a/t/daemon/formats/jats.xml b/t/daemon/formats/jats.xml index 3040d835e1..aa87700990 100644 --- a/t/daemon/formats/jats.xml +++ b/t/daemon/formats/jats.xml @@ -47,7 +47,7 @@ unknown - +

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

@@ -63,7 +63,7 @@

As discussed in [AS64], Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

- + a @@ -75,7 +75,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - + c @@ -103,12 +103,12 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor a -x -x2 +x +x2 b -y2 -y +y2 +y

@@ -169,7 +169,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

- + a = @@ -178,7 +178,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - + a = @@ -187,7 +187,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - + @@ -250,7 +250,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - + @@ -294,7 +294,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - + a @@ -316,7 +316,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - + a @@ -354,7 +354,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - + a @@ -376,7 +376,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - + a @@ -415,7 +415,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - + a @@ -430,7 +430,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - + a @@ -447,7 +447,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - + a @@ -462,7 +462,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - + a @@ -487,7 +487,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor

Some text

- + a = @@ -512,7 +512,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - + a @@ -527,7 +527,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - + a @@ -544,7 +544,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - + a @@ -559,7 +559,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - + a @@ -605,7 +605,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor -

My Mommy.

+

My Mommy.

References diff --git a/t/daemon/formats/makebib.xml b/t/daemon/formats/makebib.xml index ade7d3fa5c..5c02c12131 100644 --- a/t/daemon/formats/makebib.xml +++ b/t/daemon/formats/makebib.xml @@ -2,7 +2,7 @@ - + <biblist> <bibentry key="abramowitz+stegun" type="book" xml:id="bib.bib1"> diff --git a/t/daemon/formats/tei.xml b/t/daemon/formats/tei.xml index 05972a5894..e9097ff753 100644 --- a/t/daemon/formats/tei.xml +++ b/t/daemon/formats/tei.xml @@ -78,7 +78,7 @@ </sourceDesc> </fileDesc> <profileDesc> - <abstract> + <abstract xml:id="abstract1"> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> </abstract> <textClass> @@ -677,7 +677,7 @@ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor </body> <back> <div type="acknowledgements"> - <p>My Mommy.</p> + <p xml:id="acknowledgements1">My Mommy.</p> </div> <div type="references"> <listBibl> diff --git a/t/expansion/textcase.xml b/t/expansion/textcase.xml index a7fc5d08e7..7a0a68f485 100644 --- a/t/expansion/textcase.xml +++ b/t/expansion/textcase.xml @@ -150,7 +150,7 @@ <p>this was written upper, should appear low</p> </para> </section> - <bibliography xml:id="bib"> + <bibliography inlist="toc" xml:id="bib"> <title>References diff --git a/t/structure/IEEE.xml b/t/structure/IEEE.xml index dcae0f51e0..d9cd4a31ad 100644 --- a/t/structure/IEEE.xml +++ b/t/structure/IEEE.xml @@ -7,7 +7,7 @@ IEEE Trans - +

Uncertainty from blah, blah

diff --git a/t/structure/abstract.xml b/t/structure/abstract.xml index 12adb588eb..b9f7ae77d1 100644 --- a/t/structure/abstract.xml +++ b/t/structure/abstract.xml @@ -8,7 +8,7 @@ The Authors Names - +

The abstract text.

diff --git a/t/structure/amsarticle.xml b/t/structure/amsarticle.xml index 057a6ac049..b253895421 100644 --- a/t/structure/amsarticle.xml +++ b/t/structure/amsarticle.xml @@ -22,13 +22,13 @@ To all those who went before February 14, 2013 - +

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

ams,article,markup Primary Other stuff - My Mommy. + My Mommy.
1 diff --git a/t/structure/article.pdf b/t/structure/article.pdf index 44ea1ec366d9e63718d5e1a12de8bba73f2d21fb..657d534e24066a8f0e6468bdf2d653a8db5b7d1d 100644 GIT binary patch delta 19924 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 delta 13748 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 diff --git a/t/structure/article.xml b/t/structure/article.xml index 77846057cd..5462484f45 100644 --- a/t/structure/article.xml +++ b/t/structure/article.xml @@ -12,7 +12,7 @@ Someone Else December 31, 1999 - +

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

diff --git a/t/structure/badabstract.xml b/t/structure/badabstract.xml index 12adb588eb..b9f7ae77d1 100644 --- a/t/structure/badabstract.xml +++ b/t/structure/badabstract.xml @@ -8,7 +8,7 @@ The Authors Names - +

The abstract text.

diff --git a/t/structure/bibsect.xml b/t/structure/bibsect.xml index 3fa7772ab2..560d358dec 100644 --- a/t/structure/bibsect.xml +++ b/t/structure/bibsect.xml @@ -15,7 +15,7 @@

some text [] more text more citations

- + References @@ -32,11 +32,11 @@

some text [] more text more citations

- + References
- + References diff --git a/t/structure/book.xml b/t/structure/book.xml index d70f6b8c83..a296c3ff1e 100644 --- a/t/structure/book.xml +++ b/t/structure/book.xml @@ -12,7 +12,7 @@ Someone Else December 31, 1999 - + Contents diff --git a/t/structure/crazybib.xml b/t/structure/crazybib.xml index 5020d66516..9e9b1e2335 100644 --- a/t/structure/crazybib.xml +++ b/t/structure/crazybib.xml @@ -21,7 +21,7 @@ §1.1 <tag close=" ">1.1</tag>SEC 1.1 - + Section Bibliography @@ -43,7 +43,7 @@ §1.2 <tag close=" ">1.2</tag>SEC 1.2 - + Section Bibliography @@ -58,7 +58,7 @@
- + Chapter Bibliography @@ -88,7 +88,7 @@ §2.1
<tag close=" ">2.1</tag>SEC 2.1 - + Section Bibliography @@ -110,7 +110,7 @@ §2.2 <tag close=" ">2.2</tag>SEC 2.2 - + Section Bibliography @@ -125,7 +125,7 @@
- + Chapter Bibliography diff --git a/t/structure/faketitlepage.xml b/t/structure/faketitlepage.xml index 0e2b657b3d..f8794fdba6 100644 --- a/t/structure/faketitlepage.xml +++ b/t/structure/faketitlepage.xml @@ -7,7 +7,7 @@

This is an fake titlepage.

- +

Orphan abstract should follow even a fake titlepage.

diff --git a/t/structure/natbib.xml b/t/structure/natbib.xml index c59f766b99..21f01cfb9b 100644 --- a/t/structure/natbib.xml +++ b/t/structure/natbib.xml @@ -115,7 +115,7 @@

citefullauthor:

- + References diff --git a/t/structure/report.xml b/t/structure/report.xml index c09e1b4c94..a0e990268f 100644 --- a/t/structure/report.xml +++ b/t/structure/report.xml @@ -12,7 +12,7 @@ Someone Else December 31, 1999 - +

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

diff --git a/t/structure/svabstract.xml b/t/structure/svabstract.xml index 39f5f7ddee..1fb384a9e7 100644 --- a/t/structure/svabstract.xml +++ b/t/structure/svabstract.xml @@ -9,7 +9,7 @@ The Authors Names - +

The abstract text.

diff --git a/t/structure/titlepage.xml b/t/structure/titlepage.xml index f7740fd7d3..d9e20f206b 100644 --- a/t/structure/titlepage.xml +++ b/t/structure/titlepage.xml @@ -8,7 +8,7 @@

This is the titlepage.

Title provided for LaTeXML - +

Abstract should be after titlepage.

diff --git a/t/theorem/amstheorem.xml b/t/theorem/amstheorem.xml index f33df4f907..52a683372f 100644 --- a/t/theorem/amstheorem.xml +++ b/t/theorem/amstheorem.xml @@ -964,7 +964,7 @@ standing on the corners of a triangle
- + References diff --git a/t/tokenize/percent.xml b/t/tokenize/percent.xml index cdd43b1086..b438aadbc4 100644 --- a/t/tokenize/percent.xml +++ b/t/tokenize/percent.xml @@ -34,7 +34,7 @@ However {{{{ versus ?? OTOH, neither allow extra braces when using braces.

- + References From 90010497a2a80bc33a53f7251872302e1cfee894 Mon Sep 17 00:00:00 2001 From: Deyan Ginev Date: Sun, 18 Jan 2026 19:07:59 -0500 Subject: [PATCH 3/4] typo --- lib/LaTeXML/Post/CrossRef.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/LaTeXML/Post/CrossRef.pm b/lib/LaTeXML/Post/CrossRef.pm index 224eaa77d3..430b15152c 100644 --- a/lib/LaTeXML/Post/CrossRef.pm +++ b/lib/LaTeXML/Post/CrossRef.pm @@ -203,7 +203,7 @@ my $normaltoctypes = { map { ($_ => 1) } # CONSTANT qw (ltx:document ltx:abstract ltx:part ltx:chapter ltx:section ltx:subsection ltx:subsubsection ltx:paragraph ltx:subparagraph - ltx:index ltx:bibliography ltx:glossary ltx:acknowledgementsltx:appendix) }; + ltx:index ltx:bibliography ltx:glossary ltx:acknowledgements ltx:appendix) }; sub fill_in_tocs { my ($self, $doc) = @_; From 92182395bc3498ebf5080d31829225136922b9da Mon Sep 17 00:00:00 2001 From: Deyan Ginev Date: Mon, 19 Jan 2026 20:25:52 -0500 Subject: [PATCH 4/4] exempt \tableofcontents from new abstract/acknowledgements treatment --- lib/LaTeXML/Engine/latex_constructs.pool.ltxml | 4 ++-- t/structure/book.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/LaTeXML/Engine/latex_constructs.pool.ltxml b/lib/LaTeXML/Engine/latex_constructs.pool.ltxml index 8f5e376611..6f4beae404 100644 --- a/lib/LaTeXML/Engine/latex_constructs.pool.ltxml +++ b/lib/LaTeXML/Engine/latex_constructs.pool.ltxml @@ -718,11 +718,11 @@ DefConstructorI('\tableofcontents', undef, "#name", properties => sub { my $td = CounterValue('tocdepth')->valueOf + 1; - my @s = (qw(ltx:abstract ltx:part ltx:chapter ltx:section ltx:subsection ltx:subsubsection + my @s = (qw(ltx:part ltx:chapter ltx:section ltx:subsection ltx:subsubsection ltx:paragraph ltx:subparagraph)); $td = $#s if $#s < $td; @s = map { $s[$_] } 0 .. $td; - push(@s, (qw(ltx:appendix ltx:index ltx:acknowledgements ltx:bibliography))) if @s; + push(@s, (qw(ltx:appendix ltx:index ltx:bibliography))) if @s; (select => join(' | ', @s), name => DigestText(T_CS('\contentsname'))); }); # Ensure we add the TOC-relevant attributes to the relevant elements. diff --git a/t/structure/book.xml b/t/structure/book.xml index a296c3ff1e..d70f6b8c83 100644 --- a/t/structure/book.xml +++ b/t/structure/book.xml @@ -12,7 +12,7 @@ Someone Else December 31, 1999 - + Contents