diff options
Diffstat (limited to 'support/TeX4ht/source/tex4ht-4ht.tex')
-rw-r--r-- | support/TeX4ht/source/tex4ht-4ht.tex | 227 |
1 files changed, 226 insertions, 1 deletions
diff --git a/support/TeX4ht/source/tex4ht-4ht.tex b/support/TeX4ht/source/tex4ht-4ht.tex index 1cba02fc9c..98412b5506 100644 --- a/support/TeX4ht/source/tex4ht-4ht.tex +++ b/support/TeX4ht/source/tex4ht-4ht.tex @@ -1,4 +1,4 @@ -% $Id: tex4ht-4ht.tex 1448 2024-01-22 11:15:28Z michal_h21 $ +% $Id: tex4ht-4ht.tex 1452 2024-01-24 14:50:53Z michal_h21 $ % tex tex4ht-4ht or ht tex tex4ht-4ht % % Copyright 2009-2024 TeX Users Group @@ -30794,6 +30794,231 @@ it come out as a complete mess. \cs_set_protected:Npn \siunitx_cell_end: {} >>> +%%%%%%%%%%%%%%% +\Section{Mhchem} +%%%%%%%%%%%%%%% + +\<mhchem.4ht\><<< +% mhchem.4ht (|version), generated from |jobname.tex +% Copyright 2024 TeX Users Group +% Copyright 2015-2021 Martin Hensel +|<TeX4ht license text|> +|<mhchem redefinitions|> + +\Hinput{mhchem} +\endinput +>>> \AddFile{9}{mhchem} + +\<mhchem redefinitions\><<< +\ExplSyntaxOn +% basic mhchem containers +\NewConfigure{mhchemce}{2} +\NewConfigure{mhchemcf}{2} + +\pend:def\__mhchem_output_begin_ce:{\a:mhchemce} +\append:def\__mhchem_output_end_ce:{\b:mhchemce} +\pend:def\__mhchem_output_begin_cf:{\a:mhchemcf} +\append:def\__mhchem_output_end_cf:{\b:mhchemcf} + +% alternative version of coreFivd + +\NewConfigure{mhchemisotope}{3} + +\NewConfigure{mhchemsub}{2} + +\NewConfigure{mhchemsup}{2} + +\cs_set_protected:Npn \__mhchem_output_coreFivefourht:nnnnnnn #1#2#3#4#5#6#7 + { + \bool_if:nT + { \tl_if_empty_p:n {#7} && ! \tl_if_empty_p:n {#5} } + { \bool_set_true:N \l__mhchem_option_superscriptsStacked_bool } + + \tl_if_empty:nF {#1#2} + { + \a:mhchemisotope + \__mhchem_output_withFont:n { #1 } + \b:mhchemisotope + \__mhchem_output_withFont:n { #2 } + \c:mhchemisotope + } + \__mhchem_output_withFont:n { #3 } + \bool_if:NTF \l__mhchem_option_superscriptsStacked_bool + { + \tl_if_empty:nTF {#4#5#7} + { + \tl_if_empty:nF {#6} + { + \a:mhchemsub + \__mhchem_output_withFont:n { #6 } + \b:mhchemsub + } + } + { + \tl_if_empty:nTF {#6} + { + \a:mhchemsup + \__mhchem_output_withFont:n { #4#5#7 } + \b:mhchemsup + } + { + \HCode { <span~class="mhchem-supsub"> } + \__mhchem_output_withFont:n { #4#5#7 } + \HCode { <br~/>&\#xfeff; } + \__mhchem_output_withFont:n { #6 } + \HCode { </span> } + } + } + } + { + \tl_if_empty:nF {#4} + { + \a:mhchemsup + \__mhchem_output_withFont:n { #4 } + \b:mhchemsup + } + \tl_if_empty:nF {#6} + { + \a:mhchemsub + \__mhchem_output_withFont:n { #6 } + \b:mhchemsub + } + \tl_if_empty:nF {#5#7} + { + \a:mhchemsup + \__mhchem_output_withFont:n { #5#7 } + \b:mhchemsup + } + } + } + +% 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 + { + \bool_if:NTF \l__mhchem_output_isMathMode_bool + { \mathrm {#1} } + { \text {#1} } + } + +\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 { − } } +\cs_set_protected:Npn \__mhchem_output_operatorPlus: + { \a:mhchemoperator + \b:mhchemoperator } +\cs_set_protected:Npn \__mhchem_output_operatorMinus: + { \a:mhchemoperator\HCode {−} \b:mhchemoperator } +\cs_set_protected:Npn \__mhchem_output_operatorEquals: + { \a:mhchemoperator = \b:mhchemoperator } +\cs_set_protected:Npn \__mhchem_output_operatorPlusMinus: + {\a:mhchemoperator \HCode {± } \b:mhchemoperator } +\cs_set_protected:Npn \__mhchem_output_electronDot: { \HCode { • } } +\cs_set_protected:Npn \__mhchem_output_additionCompound: { \HCode { · } } +\cs_set_protected:Npn \__mhchem_output_excited: { \HCode { &\#x2731; } } +\cs_set_protected:Npn \__mhchem_output_commaDecimal: { , } +\cs_set_protected:Npn \__mhchem_output_commaEnumeration: {,\HCode {   } } +\cs_set_protected:Npn \__mhchem_output_commaEnumerationSmall: {,\HCode{   } } + +\cs_set_protected:Npn \__mhchem_output_bond_single: { \a:mhchemoperator{\HCode { − }}\b:mhchemoperator} +\cs_set_protected:Npn \__mhchem_output_bond_double: { \a:mhchemoperator{\HCode { = }}\b:mhchemoperator} +\cs_set_protected:Npn \__mhchem_output_bond_triple: { \a:mhchemoperator{\HCode { ≡ }}\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} + +\NewConfigure{mhchembondhalf}{1} +\NewConfigure{mhchembondoneandhalf}{1} +\NewConfigure{mhchembondtwoandhalf}{1} +\NewConfigure{mhchembondtwoandhalff}{1} +\cs_set_protected:Npn \__mhchem_output_bond_dotdotdot: { \HCode { ··· } } +\cs_set_protected:Npn \__mhchem_output_bond_dotdotdotdot: { \HCode { ···· } } +\cs_set_protected:Npn \__mhchem_output_bond_rightArrow: { \HCode { &\#xffeb; } } +\cs_set_protected:Npn \__mhchem_output_bond_leftArrow: { \HCode { &\#xffe9; } } + + + +\NewConfigure{mhchemarrow}{2} +\NewConfigure{mhchemarrowabove}{2} + +\NewConfigure{mhchemarrowyields}{1} +\NewConfigure{mhchemarrowyieldsLeft}{1} +\NewConfigure{mhchemarrowyieldsLeftRight}{1} +\NewConfigure{mhchemarrowmesomerism}{1} +\NewConfigure{mhchemarrowequilibrium}{1} +\NewConfigure{mhchemarrowequilibriumRight}{1} +\NewConfigure{mhchemarrowequilibriumLeft}{1} + + + + +\cs_set_protected:Npn \__mhchem_arrow_deployfourht:nnnnn #1#2#3#4#5 + { + \a:mhchemarrow + \tl_if_empty:nF {#3#5} + { + \a:mhchemarrowabove + \str_case:nnF {#2} + { + { } { \ce { #3 } } + { M } { \ensuremath { #3 } } + { T } { \text { #3 } } + { C } { \ce { #3 } } + } + { \msg_error:nnn { mhchem } { unexpected-arrow-type } {#2} } + \b:mhchemarrowabove + } + \str_case:nnF {#1} + { + { yields } {\a:mhchemarrowyields } + { yieldsLeft } {\a:mhchemarrowyieldsLeft } + { yieldsLeftRight } {\a:mhchemarrowyieldsLeftRight } % todo: improve + { esomerism } {\a:mhchemarrowesomerism } % todo: improve + { equilibrium } {\a:mhchemarrowequilibrium } % todo: improve + { equilibriumRight } {\a:mhchemarrowequilibriumRight } % todo: improve + { equilibriumLeft } {\a:mhchemarrowequilibriumLeft } % todo: improve + } + { \msg_error:nnn { mhchem } { unexpected-arrow-type } {#1} } + \tl_if_empty:nF {#3#5} + { + \a:mhchemarrowabove + \str_case:nnF {#2} + { + { } { \ce { #5 } } + { M } { \ensuremath { #5 } } + { T } { \text { #5 } } + { C } { \ce { #5 } } + } + { \msg_error:nnn { mhchem } { unexpected-arrow-type } {#2} } + \b:mhchemarrowabove + } + \b:mhchemarrow + } + +\HLet\__mhchem_arrow_deploy:nnnnn\__mhchem_arrow_deployfourht:nnnnn + +\ExplSyntaxOff + + +% Additional configurations for MathML + +% print mathml command or html, depending on if we are inside mathml or not +\newcommand\:mhmathmlorhtml[2]{\ifmathml\a:mathml #1\else #2\fi} +\newcommand\:mhonlyinmathml[1]{\ifmathml #1\fi} + + +>>> + %%%%%%%%%%%%% \Section{Ushort} %%%%%%%%%%%%% |