summaryrefslogtreecommitdiff
path: root/support/TeX4ht/source
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-02-24 03:01:46 +0000
committerNorbert Preining <norbert@preining.info>2024-02-24 03:01:46 +0000
commitf325bd88d1d4db13f51277bc59c8ff8814e937bc (patch)
treee39af6619c91d812dd93cb57d25149da5a84d801 /support/TeX4ht/source
parente7a321bba289c40f39563c19bbeac355f7c0eeeb (diff)
CTAN sync 202402240301
Diffstat (limited to 'support/TeX4ht/source')
-rw-r--r--support/TeX4ht/source/ChangeLog21
-rw-r--r--support/TeX4ht/source/tex4ht-4ht.tex82
-rw-r--r--support/TeX4ht/source/tex4ht-html4.tex4
-rw-r--r--support/TeX4ht/source/tex4ht-jats.tex94
-rw-r--r--support/TeX4ht/source/tex4ht-mathml.tex19
5 files changed, 154 insertions, 66 deletions
diff --git a/support/TeX4ht/source/ChangeLog b/support/TeX4ht/source/ChangeLog
index 9169988704..62528a3a28 100644
--- a/support/TeX4ht/source/ChangeLog
+++ b/support/TeX4ht/source/ChangeLog
@@ -1,3 +1,24 @@
+2024-02-22 Michal Hoftich <michal.h21@gmail.com>
+
+ * tex4ht-jats.tex (jats.4ht): fixed DOCTYPE.
+
+ * tex4ht-jats.tex (jats.4ht): added support for BibLaTeX.
+
+2024-02-21 Michal Hoftich <michal.h21@gmail.com>
+
+ * tex4ht-jats.tex (jats.4ht): removed \space commands from inside of
+ the <title> element. It is suppossed to be used after the \TitleMark
+ command, and to be eaten by \:gobble if section numbers shoulnd't be
+ shown.
+
+ * tex4ht-4ht.tex (mhchem.4ht): added support for Mhchem characters
+ in pictures.
+
+ * tex4ht-4ht.tex (mhchem.4ht),
+ * tex4ht-mathml.tex (mathml.4ht),
+ * tex4ht-html4.tex (html4.4ht): fixed some issues with Mhchem
+ superscripts and subscripts.
+
2024-02-19 Michal Hoftich <michal.h21@gmail.com>
* tex4ht-mathml.tex (mathml.4ht): fixed rendering of
diff --git a/support/TeX4ht/source/tex4ht-4ht.tex b/support/TeX4ht/source/tex4ht-4ht.tex
index b48cac55f5..13c70fc3d2 100644
--- a/support/TeX4ht/source/tex4ht-4ht.tex
+++ b/support/TeX4ht/source/tex4ht-4ht.tex
@@ -1,4 +1,4 @@
-% $Id: tex4ht-4ht.tex 1461 2024-02-13 15:20:24Z michal_h21 $
+% $Id: tex4ht-4ht.tex 1465 2024-02-21 13:48:35Z michal_h21 $
% tex tex4ht-4ht or ht tex tex4ht-4ht
%
% Copyright 2009-2024 TeX Users Group
@@ -30838,6 +30838,8 @@ it come out as a complete mess.
\NewConfigure{mhchemsup}{2}
+\NewConfigure{mhchemsupsub}{3}
+
\cs_set_protected:Npn \__mhchem_output_coreFivefourht:nnnnnnn #1#2#3#4#5#6#7
{
\bool_if:nT
@@ -30872,11 +30874,11 @@ it come out as a complete mess.
\b:mhchemsup
}
{
- \HCode { <span~class="mhchem-supsub"> }
+ \a:mhchemsupsub
\__mhchem_output_withFont:n { #4#5#7 }
- \HCode { <br~/>&\#xfeff; }
+ \c:mhchemsupsub
\__mhchem_output_withFont:n { #6 }
- \HCode { </span> }
+ \b:mhchemsupsub
}
}
}
@@ -30905,58 +30907,56 @@ it come out as a complete mess.
% replace original coreFive with our alternative version. it will work in picture math
\HLet\__mhchem_output_coreFive:nnnnnnn\__mhchem_output_coreFivefourht:nnnnnnn
-\cs_set_protected:Npn \__mhchem_output_withFont:n #1 %. output #1 as math or text
+\cs_set_protected:Npn \__mhchem_output_withFontfourht:n #1 %. output #1 as math or text
{
\bool_if:NTF \l__mhchem_output_isMathMode_bool
{ \begingroup\mathrm {#1}\endgroup }
{ \begingroup\text {#1}\endgroup }
}
+\HLet\__mhchem_output_withFont:n\__mhchem_output_withFontfourht:n
+
\NewConfigure{mhchemoperator}{2}
-% ideally, the following commands should be redefined using \HLet, to support picture math.
-% the current definition should work in MathML, I am not sure about normall HTML, as
-\cs_set_protected:Npn \__mhchem_output_skipAfterAmount: {\HCode { ~ } } % space for copy & paste
-\cs_set_protected:Npn \__mhchem_output_skipBeforeStateOfAggregation: {}
-\cs_set_protected:Npn \__mhchem_output_minus: {\HCode{&\#x2212;}} % minus
-\cs_set_protected:Npn \__mhchem_output_operatorPlus:
- { \HCode {\a:mhchemoperator + \b:mhchemoperator }}
-\cs_set_protected:Npn \__mhchem_output_operatorMinus:
- { \HCode {\a:mhchemoperator&\#x2212; \b:mhchemoperator }} % minus
-\cs_set_protected:Npn \__mhchem_output_operatorEquals:
- { \HCode {\a:mhchemoperator = \b:mhchemoperator }}
-\cs_set_protected:Npn \__mhchem_output_operatorPlusMinus:
- {\HCode {\a:mhchemoperator &\#xB1; \b:mhchemoperator }} % plusmn
-\cs_set_protected:Npn \__mhchem_output_electronDot: { \HCode {&\#x2022;} } % bull
-\cs_set_protected:Npn \__mhchem_output_additionCompound: { \HCode {&\#xB7;} } % middot
-\cs_set_protected:Npn \__mhchem_output_excited: { \HCode { &\#x2731; } }
-\cs_set_protected:Npn \__mhchem_output_commaDecimal: { , }
-\cs_set_protected:Npn \__mhchem_output_commaEnumeration: {,\HCode {&\#x2009;} } % thinsp
-\cs_set_protected:Npn \__mhchem_output_commaEnumerationSmall: {,\HCode{&\#x2009;} } % thinsp
-
-\cs_set_protected:Npn \__mhchem_output_bond_single: { \HCode { \a:mhchemoperator&\#x2212;\b:mhchemoperator}}
-\cs_set_protected:Npn \__mhchem_output_bond_double: { \HCode { \a:mhchemoperator=\b:mhchemoperator}}
-\cs_set_protected:Npn \__mhchem_output_bond_triple: { \HCode { \a:mhchemoperator&\#x2261;\b:mhchemoperator}}
+\def\:tempa#1#2{%
+ \cs_set_protected:Npn\:tempb:{#2}%
+ \HLet#1\:tempb:%
+}
+
+\:tempa \__mhchem_output_skipAfterAmount: {\HCode { ~ } } % space for copy & paste
+\:tempa \__mhchem_output_skipBeforeStateOfAggregation: {}
+\:tempa \__mhchem_output_minus: {\HCode{&\#x2212;}} % minus
+\:tempa \__mhchem_output_operatorPlus:{ \HCode {\a:mhchemoperator + \b:mhchemoperator }}
+\:tempa \__mhchem_output_operatorMinus:{ \HCode {\a:mhchemoperator&\#x2212; \b:mhchemoperator }} % minus
+\:tempa \__mhchem_output_operatorEquals:{ \HCode {\a:mhchemoperator = \b:mhchemoperator }}
+\:tempa \__mhchem_output_operatorPlusMinus:{\HCode {\a:mhchemoperator &\#xB1; \b:mhchemoperator }} % plusmn
+\:tempa \__mhchem_output_electronDot: { \HCode {&\#x2022;} } % bull
+\:tempa \__mhchem_output_additionCompound: { \HCode {&\#xB7;} } % middot
+\:tempa \__mhchem_output_excited: { \HCode { &\#x2731; } }
+\:tempa \__mhchem_output_commaDecimal: { , }
+\:tempa \__mhchem_output_commaEnumeration: {,\HCode {&\#x2009;} } % thinsp
+\:tempa \__mhchem_output_commaEnumerationSmall: {,\HCode{&\#x2009;} } % thinsp
+
+\:tempa \__mhchem_output_bond_single: { \HCode { \a:mhchemoperator&\#x2212;\b:mhchemoperator}}
+\:tempa \__mhchem_output_bond_double: { \HCode { \a:mhchemoperator=\b:mhchemoperator}}
+\:tempa \__mhchem_output_bond_triple: { \HCode { \a:mhchemoperator&\#x2261;\b:mhchemoperator}}
% todo: add MathML support for these
-\cs_set_protected:Npn \__mhchem_output_bond_half: % todo: improve
- {\a:mhchembondhalf}
-\cs_set_protected:Npn \__mhchem_output_bond_oneAndHalf: % todo: improve
- {\a:mhchembondoneandhalf}
-\cs_set_protected:Npn \__mhchem_output_bond_twoAndHalf: % todo: improve
- {\a:mhchembondtwoandhalf}
-\cs_set_protected:Npn \__mhchem_output_bond_twoAndHalff: % todo: improve
- {\a:mhchembondtwoandhalff}
+\:tempa \__mhchem_output_bond_half:{\a:mhchembondhalf}
+\:tempa \__mhchem_output_bond_oneAndHalf:{\a:mhchembondoneandhalf}
+\:tempa \__mhchem_output_bond_twoAndHalf:{\a:mhchembondtwoandhalf}
+\:tempa \__mhchem_output_bond_twoAndHalff:{\a:mhchembondtwoandhalff}
+
+\:tempa \__mhchem_output_bond_dotdotdot: { \HCode { &\#xB7;&\#xB7;&\#xB7;} } % &middot;&middot;&middot;
+\:tempa \__mhchem_output_bond_dotdotdotdot: { \HCode { &\#xB7;&\#xB7;&\#xB7;&\#xB7;} } % &middot;&middot;&middot;&middot;
+\:tempa \__mhchem_output_bond_rightArrow: { \HCode { &\#xffeb; } }
+\:tempa \__mhchem_output_bond_leftArrow: { \HCode { &\#xffe9; } }
+
\NewConfigure{mhchembondhalf}{1}
\NewConfigure{mhchembondoneandhalf}{1}
\NewConfigure{mhchembondtwoandhalf}{1}
\NewConfigure{mhchembondtwoandhalff}{1}
-\cs_set_protected:Npn \__mhchem_output_bond_dotdotdot: { \HCode { &\#xB7;&\#xB7;&\#xB7;} } % &middot;&middot;&middot;
-\cs_set_protected:Npn \__mhchem_output_bond_dotdotdotdot: { \HCode { &\#xB7;&\#xB7;&\#xB7;&\#xB7;} } % &middot;&middot;&middot;&middot;
-\cs_set_protected:Npn \__mhchem_output_bond_rightArrow: { \HCode { &\#xffeb; } }
-\cs_set_protected:Npn \__mhchem_output_bond_leftArrow: { \HCode { &\#xffe9; } }
-
\NewConfigure{mhchemarrow}{2}
diff --git a/support/TeX4ht/source/tex4ht-html4.tex b/support/TeX4ht/source/tex4ht-html4.tex
index e09bb507b2..8077218bec 100644
--- a/support/TeX4ht/source/tex4ht-html4.tex
+++ b/support/TeX4ht/source/tex4ht-html4.tex
@@ -1,4 +1,4 @@
-% $Id: tex4ht-html4.tex 1461 2024-02-13 15:20:24Z michal_h21 $
+% $Id: tex4ht-html4.tex 1464 2024-02-21 09:46:01Z michal_h21 $
% Compile 4 times: latex tex4ht-html4
% Copy html4.4ht into the work directory before all but the last compilation.
%
@@ -21757,13 +21757,13 @@ users redefine the latter macro.
%%%%%%%%%%%%%%%%%%%%%
\<configure html4 mhchem\><<<
-\typeout{***************** hello mhchem}
\Configure{mhchemcf}{\HCode{<span class="mhchem">}}{\HCode{</span>}}
\Configure{mhchemce}{\HCode{<span class="mhchem">}}{\HCode{</span>}}
\Configure{mhchemisotope}{\HCode{<span class="mhchem-isotope">}}{\HCode{<br />&\#xfeff;}}{\HCode{</span>}}
\Configure{mhchemsub}{\HCode {<sub class="mhchem-sub">}}{\HCode{</sub>} }
\Configure{mhchemsup}{\HCode {<sup class="mhchem-sup">}}{\HCode{</sup>} }
+\Configure{mhchemsupsub}{\HCode{<span class="mhchem-supsub">}}{\HCode{<br />&\#xfeff;}}{\HCode{</span>}}
% mhchemoperator is always used inside \HCode, so we need not to use \HCode in it's configuration
\Configure{mhchemoperator}{<span class="mhchem-operator">}{</span>}
\Configure{mhchemarrow}{\HCode {<span class="mhchem-arrow">}}{\HCode{</span>}}
diff --git a/support/TeX4ht/source/tex4ht-jats.tex b/support/TeX4ht/source/tex4ht-jats.tex
index dc9ae8e5b9..071826a31e 100644
--- a/support/TeX4ht/source/tex4ht-jats.tex
+++ b/support/TeX4ht/source/tex4ht-jats.tex
@@ -1,8 +1,8 @@
-% $Id: tex4ht-jats.tex 269 2020-03-03 23:06:07Z karl $
+% $Id: tex4ht-jats.tex 1472 2024-02-22 22:12:22Z karl $
% compile 3 times: latex tex4ht-jats
% or xhlatex tex4ht-jats "html,3,sections+"
%
-% Copyright 2009-2022 TeX Users Group
+% Copyright 2009-2024 TeX Users Group
% Copyright 2000-2009 Eitan M. Gurari
% Released under LPPL 1.3c+.
% See tex4ht-cpright.tex for license text.
@@ -26,7 +26,7 @@
\<jats\><<<
% jats.4ht (|version), generated from |jobname.tex
-% Copyright 2022 TeX Users Group
+% Copyright 2022-2024 TeX Users Group
|<TeX4ht copywrite|>
>>>
@@ -223,7 +223,9 @@ Configurations that are shared only for article and report
\NewConfigure{DtdVersion}{1}
\Configure{DtdVersion}{1.3}
-\Configure{DOCTYPE}{\HCode{<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v\a:DtdVersion\space 20130915//EN" "http://jats.nlm.nih.gov/archiving/\a:DtdVersion/JATS-archivearticle1-mathml3.dtd">\Hnewline}}
+\def\:DTD{jats} % this is necessary to prevent html-mml from overriding DOCTYPE
+%
+\Configure{DOCTYPE}{\HCode{<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v\a:DtdVersion\space 20210610//EN" "JATS-archivearticle1-3.dtd">\Hnewline}}
% XML configuratins
\edef\html:xmlns{}
@@ -587,7 +589,7 @@ This macro is used to print zeropaded days and months in the ISO date attribute
\Configure{chapter}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{<sec>\Hnewline}}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{</sec>\Hnewline}}
- {\TitleMark\HCode{<title>}\space\HtmlParOff}
+ {\TitleMark\space\HCode{<title>}\HtmlParOff}
{\HCode{</title>}\HtmlParOn \ShowPar\par}
\ConfigureMark{chapter}
@@ -598,7 +600,7 @@ This macro is used to print zeropaded days and months in the ISO date attribute
\Configure{appendix}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{<sec>\Hnewline}}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{</sec>\Hnewline}}
- {\TitleMark\HCode{<title>}\space\HtmlParOff}
+ {\TitleMark\space\HCode{<title>}\HtmlParOff}
{\HCode{</title>}\HtmlParOn \ShowPar\par}
\ConfigureMark{appendix}{\HCode{<label>}%
@@ -609,7 +611,7 @@ This macro is used to print zeropaded days and months in the ISO date attribute
\Configure{likechapter}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{<sec>\Hnewline}}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{</sec>\Hnewline}}
- {\HCode{<title>}\space\HtmlParOff}
+ {\HCode{<title>}\HtmlParOff}
{\HCode{</title>}\HtmlParOn \ShowPar\par}
>>>
@@ -622,7 +624,7 @@ This macro is used to print zeropaded days and months in the ISO date attribute
\Configure{section}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{<sec>\Hnewline}}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{</sec>\Hnewline}}
- {\TitleMark\HCode{<title>}\space\HtmlParOff}
+ {\TitleMark\space\HCode{<title>}\HtmlParOff}
{\HCode{</title>}\HtmlParOn \ShowPar\par}
\ConfigureMark{section}
@@ -635,7 +637,7 @@ This macro is used to print zeropaded days and months in the ISO date attribute
\Configure{subsection}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{<sec>\Hnewline}}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{</sec>\Hnewline}}
- {\TitleMark\HCode{<title>}\space\HtmlParOff}
+ {\TitleMark\space\HCode{<title>}\HtmlParOff}
{\HCode{</title>}\HtmlParOn \ShowPar\par}
\ConfigureMark{subsection}
@@ -648,7 +650,7 @@ This macro is used to print zeropaded days and months in the ISO date attribute
\Configure{subsubsection}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{<sec>\Hnewline}}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{</sec>\Hnewline}}
- {\TitleMark\HCode{<title>}\space\HtmlParOff}
+ {\TitleMark\space\HCode{<title>}\HtmlParOff}
{\HCode{</title>}\HtmlParOn \ShowPar\par}
\ConfigureMark{subsubsection}
@@ -661,7 +663,7 @@ This macro is used to print zeropaded days and months in the ISO date attribute
\Configure{paragraph}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{<sec>\Hnewline}}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{</sec>\Hnewline}}
- {\HCode{<title>}\space\HtmlParOff}
+ {\HCode{<title>}\HtmlParOff}
{\HCode{</title>}\HtmlParOn \ShowPar\par}
>>>
@@ -670,25 +672,25 @@ This macro is used to print zeropaded days and months in the ISO date attribute
\Configure{likesection}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{<sec>\Hnewline}}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{</sec>\Hnewline}}
- {\HCode{<title>}\space\HtmlParOff}
+ {\HCode{<title>}\HtmlParOff}
{\HCode{</title>}\HtmlParOn \ShowPar\par}
\Configure{likesubsection}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{<sec>\Hnewline}}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{</sec>\Hnewline}}
- {\HCode{<title>}\space\HtmlParOff}
+ {\HCode{<title>}\HtmlParOff}
{\HCode{</title>}\HtmlParOn \ShowPar\par}
\Configure{likesubsubsection}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{<sec>\Hnewline}}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{</sec>\Hnewline}}
- {\HCode{<title>}\space\HtmlParOff}
+ {\HCode{<title>}\HtmlParOff}
{\HCode{</title>}\HtmlParOn \ShowPar\par}
\Configure{likeparagraph}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{<sec>\Hnewline}}
{\ifvmode\IgnorePar\fi\EndP\IgnorePar\HCode{</sec>\Hnewline}}
- {\HCode{<title>}\space\HtmlParOff}
+ {\HCode{<title>}\HtmlParOff}
{\HCode{</title>}\HtmlParOn \ShowPar\par}
>>>
@@ -837,6 +839,8 @@ them separatelly.
\chapter{Packages}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Hyperref}
+
\<configure jats url\><<<
|<url links|>
>>>
@@ -845,4 +849,64 @@ them separatelly.
|<hyperref links|>
>>>
+\section{Bibliographies}
+
+\<configure jats biblatex\><<<
+|<biblatex environment|>
+|<biblatex fields|>
+>>>
+
+
+\<biblatex environment\><<<
+ \def\bibConfigure{%
+ \ConfigureList{thebibliography}
+ {\ifvmode \IgnorePar \fi \EndP \EndP
+ \HCode{<ref-list>}\HtmlParOff%
+ \immediate\write\@auxout{%
+ \string\providecommand\string\BibFileName[2][]{}
+ }%
+ \immediate\write\@auxout{%
+ \string\BibFileName[\therefsection]{\FileName}}%
+ \PushMacro \end:itm \global \let \end:itm =\empty}%
+ {\ifvmode \IgnorePar \fi \EndP
+ \PopMacro \end:itm \global \let \end:itm \end:itm \EndP
+ \HCode {</mixed-citation></ref></ref-list>}\HtmlParOn\ShowPar}%
+ {\ifvmode \IgnorePar \fi \EndP \gHAdvance \bibN by 1
+ \end:itm \global \def \end:itm {\EndP \HCode{</mixed-citation></ref>}}%
+ \Tag{X\therefsection-\abx@field@entrykey}{bibitem-\bibN}
+ \HCode {<ref id="bibitem-\bibN"><label>}}%
+ {\ifvmode \IgnorePar \fi \EndP
+ \HCode {</label><mixed-citation publication-type="\thefield{entrytype}" id="bib-\bibN">}}%
+}
+>>>
+
+We use BibLaTeX's formatting commands to add JATS elements around some bibliographic
+fields.
+
+\<biblatex fields\><<<
+\DeclareFieldFormat{title}{\HCode{<source>}#1\HCode{</source>}}
+\DeclareFieldFormat{booktitle}{\HCode{<source>}#1\HCode{</source>}}
+\DeclareFieldFormat{maintitle}{\HCode{<source>}#1\HCode{</source>}}
+\DeclareFieldFormat{journaltitle}{\HCode{<source>}#1\HCode{</source>}}
+\DeclareFieldFormat[article]{title}{\HCode{<article-title>}#1\HCode{</article-title>}}
+\DeclareFieldFormat[incollection]{title}{\HCode{<part-title>}#1\HCode{</part-title>}}
+\DeclareFieldFormat[inbook]{title}{\HCode{<part-title>}#1\HCode{</part-title>}}
+\DeclareFieldFormat{year}{\HCode{<year>}#1\HCode{</year>}}
+\DeclareFieldFormat{date}{\HCode{<date-in-citation content-type="published">}#1\HCode{</date-in-citation>}}
+\DeclareFieldFormat{pages}{\HCode{<page-range>}#1\HCode{</page-range>}}
+\DeclareListFormat{publisher}{\usebibmacro{list:delim}{#1}\HCode{<publisher-name>}#1\HCode{</publisher-name>}\isdot\usebibmacro{list:andothers}}
+\DeclareListFormat{location}{\usebibmacro{list:delim}{#1}\HCode{<publisher-loc>}#1\HCode{</publisher-loc>}\isdot\usebibmacro{list:andothers}}
+\DeclareNameFormat{author}{%
+ \nameparts{#1}% This command initializes commands used in the following bibmacro
+ \HCode{<string-name>}% use
+ \usebibmacro{name:family-given}%
+ {\namepartfamily}%
+ {\namepartgiveni}%
+ {\namepartprefix}%
+ {\namepartsuffix}%
+ \HCode{</string-name>}%
+ \usebibmacro{name:andothers}%
+}
+>>>
+
\endinput
diff --git a/support/TeX4ht/source/tex4ht-mathml.tex b/support/TeX4ht/source/tex4ht-mathml.tex
index 74132b6ac0..68ed7dfddc 100644
--- a/support/TeX4ht/source/tex4ht-mathml.tex
+++ b/support/TeX4ht/source/tex4ht-mathml.tex
@@ -1,4 +1,4 @@
-% $Id: tex4ht-mathml.tex 1463 2024-02-19 13:33:57Z michal_h21 $$
+% $Id: tex4ht-mathml.tex 1464 2024-02-21 09:46:01Z michal_h21 $$
% compile 3 times: latex tex4ht-mathltx
% or xhlatex tex4ht-mathltx "html,3,sections+"
%
@@ -5518,23 +5518,26 @@ with small shifting.
\Configure{mhchemcf}{\HCode{<\:mhmathmlorhtml{mrow}{span}\space class="mhchem-cf">}}{\HCode{</\:mhmathmlorhtml{mrow}{span}>}}
\Configure{mhchemce}{\HCode{<\:mhmathmlorhtml{mrow}{span}\space class="mhchem-ce">}}{\HCode{</\:mhmathmlorhtml{mrow}{span}>}}
+% we configure subscripts and superscripts to have empty bases. it is because if superscript followed subscript, we got wrong
+% MathML markup, with mismatched tags. For example: \ce{CrO4^2-}
\Configure{mhchemsub}{%
\:mhmathmlorhtml{%
- \Send{BACK}%
- {<\a:mathml msub><\a:mathml mrow\Hnewline>}%
- \Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>\trap:base%
+ \HCode{<\a:mathml msub><mrow></mrow><\a:mathml mrow>}%
}{%
\HCode{<sub>}}%
-}{\:mhmathmlorhtml{\Tg</\a:mathml mrow>\TG</\a:mathml msub\Hnewline>}{\HCode{</sub>}}}
+}{\:mhmathmlorhtml{\Tg</\a:mathml mrow>\TG</\a:mathml msub>}{\HCode{</sub>}}}
\Configure{mhchemsup}{%
\:mhmathmlorhtml{
- \Send{BACK}
- {<\a:mathml msup><\a:mathml mrow\Hnewline>}%
- \Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>\trap:base
+ \HCode{<\a:mathml msup><mrow></mrow><\a:mathml mrow>}%
}{%
\HCode{<sup>}}%
}{\:mhmathmlorhtml{\Tg</\a:mathml mrow>\TG</\a:mathml msup\Hnewline>}{\HCode{</sup>}}}
+
+\Configure{mhchemsupsub}{\setbox0=\hbox\bgroup}{\egroup\setbox1=\hbox\bgroup}{\egroup\HCode{<\a:mathml msubsup><\a:mathml mrow></\a:mathml mrow><\a:mathml mrow>}\box1\HCode{</\a:mathml mrow><\a:mathml mrow>}\box0\HCode{</\a:mathml mrow></\a:mathml msubsup>}}
+\Configure{mhchemisotope}{\setbox0=\hbox\bgroup}{\egroup\setbox1=\hbox\bgroup}{\egroup\HCode{<\a:mathml msubsup><\a:mathml mrow></\a:mathml mrow><\a:mathml mrow>}\box1\HCode{</\a:mathml mrow><\a:mathml mrow>}\box0\HCode{</\a:mathml mrow></\a:mathml msubsup>}}
+
+
% mhchemoperator is always used inside \HCode, so we need not to use \HCode in it's configuration
\Configure{mhchemoperator}{<\:mhmathmlorhtml{mo}{span} class="mhchem-operator">}{</\:mhmathmlorhtml{mo}{span}>}