summaryrefslogtreecommitdiff
path: root/support/TeX4ht/source/tex4ht-4ht.tex
diff options
context:
space:
mode:
Diffstat (limited to 'support/TeX4ht/source/tex4ht-4ht.tex')
-rw-r--r--support/TeX4ht/source/tex4ht-4ht.tex227
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 { &minus; } }
+\cs_set_protected:Npn \__mhchem_output_operatorPlus:
+ { \a:mhchemoperator + \b:mhchemoperator }
+\cs_set_protected:Npn \__mhchem_output_operatorMinus:
+ { \a:mhchemoperator\HCode {&minus;} \b:mhchemoperator }
+\cs_set_protected:Npn \__mhchem_output_operatorEquals:
+ { \a:mhchemoperator = \b:mhchemoperator }
+\cs_set_protected:Npn \__mhchem_output_operatorPlusMinus:
+ {\a:mhchemoperator \HCode {&plusmn; } \b:mhchemoperator }
+\cs_set_protected:Npn \__mhchem_output_electronDot: { \HCode { &bull; } }
+\cs_set_protected:Npn \__mhchem_output_additionCompound: { \HCode { &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 { &thinsp; } }
+\cs_set_protected:Npn \__mhchem_output_commaEnumerationSmall: {,\HCode{ &thinsp; } }
+
+\cs_set_protected:Npn \__mhchem_output_bond_single: { \a:mhchemoperator{\HCode { &minus; }}\b:mhchemoperator}
+\cs_set_protected:Npn \__mhchem_output_bond_double: { \a:mhchemoperator{\HCode { &equals; }}\b:mhchemoperator}
+\cs_set_protected:Npn \__mhchem_output_bond_triple: { \a:mhchemoperator{\HCode { &equiv; }}\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 { &middot;&middot;&middot; } }
+\cs_set_protected:Npn \__mhchem_output_bond_dotdotdotdot: { \HCode { &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}
+\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}
%%%%%%%%%%%%%