
Ich versuche hier mein vorheriges Anliegen abzuarbeiten:htlatex bricht bei Verwendung von siunitx zusammen
Zum Kontext: Ich versuche, ein in .tex geschriebenes Manuskript mithilfe von in eine .odt-Datei zu konvertieren make4ht
. Ich verwende Linux Mint und pdfTeX 3.141592653-2.6-1.40.25 (TeX Live 2023).
Hier ist mein MWE:
\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[top=2.0cm, left=1.0cm, right=1.5cm]{geometry}
\usepackage[affil-it]{authblk}
%\renewcommand*{\Authfont}{\raggedright}
\renewcommand*{\Affilfont}{\normalsize\raggedright}
\usepackage{booktabs} %For \toprule, \midrule and \bottomrule in tables
\usepackage[flushleft]{threeparttable} %For a more structured tables
\AtBeginEnvironment{tablenotes}{\scriptsize}
\usepackage{caption}
\captionsetup{justification=justified,
singlelinecheck=false,format=hang}
\usepackage{multirow}
\usepackage[version=4]{mhchem}
\title{Germination of Avocado using special germination media}
\author[1]{Ermando Sandoval}
\affil[1]{University of Glastoc, Mirano Institute}
\usepackage{siunitx}
\sisetup{mode=text}
\sisetup{range-units = single}
\sisetup{separate-uncertainty}
\sisetup{inter-unit-product=\textperiodcentered}
\sisetup{open-bracket=\, ,
close-bracket=\,}
\sisetup{tight-spacing=true}
\sisetup{print-unity-mantissa=false}
\sisetup{retain-zero-uncertainty=true}
\sisetup{separate-uncertainty-units=single}
\sisetup{group-separator = {,}}
\DeclareSIUnit\cells{cells}
\begin{document}
\maketitle
There are \qty{3.25(2)e12}{\cells\per\milli\litre} in this sample.
The results are provided in Table \ref{Tab1} below.
\begin{table}[h!]
\begin{threeparttable}
\caption{This is a test table. Let's see how this renders in the odt.} \label{Tab1}
\begin{tabular}{l l S S c S S}
\toprule
\multirow{2}{*}{\textbf{Groups}} & \multirow{2}{*}{\textbf{Compounds}} & \multicolumn{2}{c}{\textbf{Potential}} & & \multicolumn{2}{c}{\textbf{Discovery}}\\
\cline{3-4} \cline{6-7}
& & \textbf{Perm} & \textbf{Tab} & & \textbf{Perm} & \textbf{Tab} \\
\midrule
\multirow{3}{*}{Amines} & methylamine& 16.5(2) & 18.6(26) & & 49 & 62.1(2)\\
& ethylamine &6.5\tnote{a} & {N/A} & & 0.2(0) & 0.6(1)\\
& tert-butyl amine&15.6 & 88 & & 55.5(156) & 26\\
\midrule
\multirow{3}{*}{Salts} & \ce{NaCl} & 99.6(2) & {N/A} & & 12 & 16.8(15)\\
& \ce{CaCO3} & 6.5(1) & {N/A} & & 15 & 19.2(35)\\
& \ce{(NH4)2SO4}& 16.2(16) & {N/A} & & 49 & 69.6(12)\\
\bottomrule
\end{tabular}
\begin{tablenotes}
\item[a] Significantly low.
\item N/A = sample loss
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
Wenn ich dies ausführe, erhalte ich diese Ausgabe im PDF-Format:
Ich habe versucht, mit dem folgenden Befehl eine ODT-Datei abzurufen: make4ht -c config.cfg -f odt Test.tex
Sie config.cfg
enthält Folgendes:
\RequirePackage{color}
\Preamble{xhtml}
\begin{document}
\EndPreamble
Sie erhalten jedoch diese Ausgabe in der ODT-Datei:
Im normalen Text erscheint die Unsicherheit als eingefügter Text und der Exponent wird nicht korrekt angezeigt. Auch die Überschrift, die Tabellennotizen und der Inhalt der Tabelle gehen verloren.
Auf dem Terminal erhalte ich diese Ausgabe:
[STATUS] make4ht: Conversion started
[STATUS] make4ht: Input file: Test.tex
[ERROR] htlatex: Compilation errors in the htlatex run
[ERROR] htlatex: Filename Line Message
[ERROR] htlatex: ./Test.tex 75 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 75 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 88 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 88 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 88 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 88 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 89 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 89 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 89 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 89 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 90 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 90 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 90 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 90 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 92 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 92 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 93 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 93 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 93 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 93 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 94 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 94 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 94 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 94 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 95 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 95 Missing $ inserted.
[ERROR] htlatex: Compilation errors in the htlatex run
[ERROR] htlatex: Filename Line Message
[ERROR] htlatex: ./Test.tex 75 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 75 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 88 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 88 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 88 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 88 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 89 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 89 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 89 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 89 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 90 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 90 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 90 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 90 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 92 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 92 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 93 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 93 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 93 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 93 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 94 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 94 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 94 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 94 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 95 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 95 Missing $ inserted.
[ERROR] htlatex: Compilation errors in the htlatex run
[ERROR] htlatex: Filename Line Message
[ERROR] htlatex: ./Test.tex 75 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 75 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 88 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 88 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 88 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 88 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 89 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 89 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 89 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 89 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 90 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 90 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 90 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 90 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 92 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 92 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 93 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 93 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 93 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 93 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 94 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 94 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 94 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 94 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 95 Missing $ inserted.
[ERROR] htlatex: ./Test.tex 95 Missing $ inserted.
[STATUS] make4ht: Conversion finished
Antwort1
Damit dies funktioniert, müssen mehrere Probleme in TeX4ht behoben werden.
Erstens gibt es zwei Probleme mit der Siunitx-Unterstützung. Zum einen tight-spacing
verursacht die Option Kompilierungsfehler, zum anderen werden die S
Spalten in Ihrer Tabelle verursacht, da sie die Tabelle völlig durcheinander bringen. Beide Probleme können mit dieser Konfigurationsdatei behoben werden siunitx.4ht
:
% siunitx.4ht (2024-01-22-12:04), generated from tex4ht-4ht.tex
% Copyright 2021-2024 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
% is the TeX4ht Project <http://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
\immediate\write-1{version 2024-01-22-12:04}
\RequirePackage{color}
\ExplSyntaxOn
\cs_set_protected:Npn \__siunitx_angle_arc_print_auxv_fourht:w
#1 \q_nil #2 \q_nil #3 \q_nil #4 \q_nil #5 \q_nil #6 \q_stop
{\bgroup\siunitx_print_number:n {#1#2#3#4#5}\egroup}
\HLet\__siunitx_angle_arc_print_auxv:w\__siunitx_angle_arc_print_auxv_fourht:w
\cs_set_protected:Npn \__siunitx_angle_arc_print_auxvi_fourht:n #1
{
% we need to define these commands here
\def\degree{\ht:special{t4ht@+&{35}x2218;}x}
\def\arcminute{\prime}
\def\arcsecond{\prime\prime}
\ensuremath{\NoFonts\sp{#1}\EndNoFonts}
}
\HLet\__siunitx_angle_arc_print_auxvi:n\__siunitx_angle_arc_print_auxvi_fourht:n
% https://tex.stackexchange.com/q/707485/2891
\bool_set_false:N \l__siunitx_number_tight_bool
% disable S columns for tables
% https://tex.stackexchange.com/q/707485/2891
\cs_set_protected:Npn \siunitx_cell_begin:w {}
\cs_set_protected:Npn \siunitx_cell_end: {}
\ExplSyntaxOff
\Hinput{siunitx}
\endinput
Es gibt noch ein weiteres Problem mit dem mhchem
Paket. Es verteilt seine eigene Konfigurationsdatei, mhchem.4ht
die fest codierte HTML-Elemente enthält. Aus diesem Grund werden chemische Elemente nicht in der ODT-Ausgabe angezeigt. Diese Version von mhchem.4ht
sollte das Problem beheben:
%% mhchem.4ht
%% 2021-12-31
%% Copyright 2015-2021 Martin Hensel
%
%% This file is part of the mhchem bundle for LaTeX
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c
% which is included as lppl-1-3c.txt.
%
% This work has the LPPL maintenance status "maintained".
% The Current Maintainer of this work is Martin Hensel.
%
% ( In order to fight spam, the maintainer's contact )
% ( information is "encrypted" with ROT13. )
% ( If you do not know ROT13 yet and have no tool for )
% ( decryption, simply do an Internet search for "ROT13". )
%
% ,---[ ROT 13 ]---
% | Gur Pheerag Znvagnvare bs guvf jbex vf Znegva Urafry
% | jub pna or pbagnpgrq ivn
% | [email protected]
% | be ivn znvy
% | Znegva Urafry
% | Cbfgfge. 20
% | 09232 Unegznaafqbes
% | Treznal
% `----------
%
% This work consists of all files listed in manifest.txt.
%
%
\ExplSyntaxOn
\Css
{
.mhchem ~ .mhchem-cf { white-space: nowrap; }
.mhchem ~ .mhchem-isotope { font-size: 0.65em; line-height: 1; display: inline-block; vertical-align: sub; text-align: right; }
.mhchem ~ .mhchem-supsub { font-size: 0.65em; line-height: 1; display: inline-block; vertical-align: sub; }
.mhchem ~ .mhchem-sup { font-size: 0.65em; line-height: 1; display: inline-block; vertical-align: 68\%; }
.mhchem ~ .mhchem-sub { font-size: 0.65em; line-height: 1; display: inline-block; vertical-align: sub; }
.mhchem ~ .mhchem-rlap { display: inline-block; width: 0; }
.mhchem ~ .mhchem-bond-half-top { vertical-align: 60\%; }
.mhchem ~ .mhchem-bond-half-middle { vertical-align: 35\%; }
.mhchem ~ .mhchem-bond-top { vertical-align: 20\%; }
.mhchem ~ .mhchem-bond-bottom { vertical-align: -20\%; }
.mhchem ~ .mhchem-arrow { display: inline-flex; flex-direction: column; vertical-align: middle; }
.mhchem ~ .mhchem-arrow > span { line-height: 80\%; text-align: center; }
.mhchem ~ .mhchem-arrow > .mhchem-above { min-height: 1em; font-size: 60\%; }
.mhchem ~ .mhchem-arrow > .mhchem-below { min-height: 1em; font-size: 60\%; }
.mhchem ~ .mhchem-arrow > span.mhchem-arrow-normal { line-height: 40\%; }
.mhchem ~ .mhchem-arrow > span.mhchem-arrow-larger { line-height: 25\%; font-size: 150\%; }
.mhchem ~ .mhchem-arrow > span.mhchem-arrow-complement { line-height: 25\%; }
}
% 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}
\Configure{mhchemcf}{\HCode{<span~class="mhchem">}}{\HCode{</span>}}
\Configure{mhchemce}{\HCode{<span~class="mhchem">}}{\HCode{</span>}}
% alternative version of coreFivd
\NewConfigure{mhchemisotope}{3}
\Configure{mhchemisotope}{\HCode{<span~class="mhchem-isotope">}}{\HCode{<br~/>&\#xfeff;}}{\HCode{</span>}}
\NewConfigure{mhchemsub}{2}
\Configure{mhchemsub}{\HCode { <sub~class="mhchem-sub"> }}{\HCode { </sub> } }
\NewConfigure{mhchemsup}{2}
\Configure{mhchemsup}{\HCode { <sup~class="mhchem-sup"> }}{\HCode { </sup> } }
\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}
\Configure{mhchemoperator}{\HCode { <span~class="mhchem-operator"> ~ }}{\HCode { ~ </span> }}
% 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: { \HCode { − } }
\cs_set_protected:Npn \__mhchem_output_bond_double: { \HCode { = } }
\cs_set_protected:Npn \__mhchem_output_bond_triple: { \HCode { ≡ } }
% todo: add MathML support for these
\cs_set_protected:Npn \__mhchem_output_bond_half: % todo: improve
{ \HCode { <span~class="mhchem-bond-half-middle">&\#xfe4d;</span> } }
\cs_set_protected:Npn \__mhchem_output_bond_oneAndHalf: % todo: improve
{ \HCode { <span~class="mhchem-rlap">−</span><span~class="mhchem-bond-half-top">&\#xfe4d;</span> } }
\cs_set_protected:Npn \__mhchem_output_bond_twoAndHalf: % todo: improve
{ \HCode { <span~class="mhchem-rlap">=</span><span~class="mhchem-bond-half-top">&\#xfe4d;</span> } }
\cs_set_protected:Npn \__mhchem_output_bond_twoAndHalff: % todo: improve
{ \HCode { <span~class="mhchem-rlap~mhchem-bond-top">−</span><span~class="mhchem-rlap~mhchem-bond-bottom">−</span><span~class="mhchem-bond-half-middle">&\#xfe4d;</span> } }
\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}
\Configure{mhchemarrow}{\HCode {<span~class="mhchem-arrow">}}{\HCode{</span>}}
\Configure{mhchemarrowabove}{\HCode { <span~class="mhchem-above">}}{\HCode{</span>}}
\Configure{mhchemarrowyields}{ \HCode { <span~class="mhchem-arrow-normal">&\#x27F6;</span> } }
\Configure{mhchemarrowyieldsLeft}{ \HCode { <span~class="mhchem-arrow-normal">&\#x2190;</span> } }
\Configure{mhchemarrowyieldsLeftRight}{ \HCode { <span~class="mhchem-arrow-normal">&\#x21c4;</span> } } % todo: improve
\Configure{mhchemarrowmesomerism}{ \HCode { <span~class="mhchem-arrow-normal">&\#x2194;</span> } } % todo: improve
\Configure{mhchemarrowequilibrium}{ \HCode { <span~class="mhchem-arrow-normal">&\#x21cc;</span> } } % todo: improve
\Configure{mhchemarrowequilibriumRight}{ \HCode { <span~class="mhchem-arrow-larger">&\#x21c0;</span><span~class="mhchem-arrow-complement">&\#x21bd;</span> } } % todo: improve
\Configure{mhchemarrowequilibriumLeft}{ \HCode { <span~class="mhchem-arrow-complement">&\#x21c0;</span><span~class="mhchem-arrow-larger">&\#x21bd;</span> } } % todo: improve
\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}
\:CheckOption{mathml}
\if:Option
\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}>}}
\Configure{mhchemsub}{%
\:mhmathmlorhtml{%
\Send{BACK}%
{<\a:mathml msub><\a:mathml mrow\Hnewline>}%
\Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>\trap:base%
}{%
\HCode{<sub>}}%
}{\:mhmathmlorhtml{\Tg</\a:mathml mrow>\TG</\a:mathml msub\Hnewline>}{\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{<sup>}}%
}{\:mhmathmlorhtml{\Tg</\a:mathml mrow>\TG</\a:mathml msup\Hnewline>}{\HCode{</sup>}}}
\Configure{mhchemoperator}{\HCode{<\:mhmathmlorhtml{mo}{span} class="mhchem-operator">}\PauseMathClass}{\EndPauseMathClass\HCode {</\:mhmathmlorhtml{mo}{span}>}}
\Configure{mhchemarrow}{\HCode {<\:mhmathmlorhtml{mrow}{span} class="mhchem-arrow">\:mhonlyinmathml{<mo>}}}{\HCode{\:mhonlyinmathml{</mo>}</\:mhmathmlorhtml{mrow}{span}>}}
\Configure{mhchemarrowabove}{\HCode { <\:mhmathmlorhtml{mrow}{span} class="mhchem-above">\:mhonlyinmathml{<mo>}}}{\HCode{\:mhonlyinmathml{</mo>}</\:mhmathmlorhtml{mrow}{span}>}}
\Configure{mhchemarrowyields}{ \HCode { <\:mhmathmlorhtml{mrow}{span} class="mhchem-arrow-normal">\:mhonlyinmathml{<mo>}&\#x2192;\:mhonlyinmathml{</mo>}</\:mhmathmlorhtml{mrow}{span}> } }
\Configure{mhchemarrowyieldsLeft}{ \HCode { <\:mhmathmlorhtml{mrow}{span} class="mhchem-arrow-normal">\:mhonlyinmathml{<mo>}&\#x2190;\:mhonlyinmathml{</mo>}</\:mhmathmlorhtml{mrow}{span}> } }
\Configure{mhchemarrowyieldsLeftRight}{ \HCode { <\:mhmathmlorhtml{mrow}{span} class="mhchem-arrow-normal">\:mhonlyinmathml{<mo>}&\#x21c4;\:mhonlyinmathml{</mo>}</\:mhmathmlorhtml{mrow}{span}> } } % todo: improve
\Configure{mhchemarrowmesomerism}{ \HCode { <\:mhmathmlorhtml{mrow}{span} class="mhchem-arrow-normal">\:mhonlyinmathml{<mo>}&\#x2194;\:mhonlyinmathml{</mo>}</\:mhmathmlorhtml{mrow}{span}> } } % todo: improve
\Configure{mhchemarrowequilibrium}{ \HCode { <\:mhmathmlorhtml{mrow}{span} class="mhchem-arrow-normal">\:mhonlyinmathml{<mo>}&\#x21cc;\:mhonlyinmathml{</mo>}</\:mhmathmlorhtml{mrow}{span}> } } % todo: improve
\Configure{mhchemarrowequilibriumRight}{ \HCode { <\:mhmathmlorhtml{mrow}{span} class="mhchem-arrow-larger">\:mhonlyinmathml{<mo>}&\#x21c0;\:mhonlyinmathml{</mo>}</\:mhmathmlorhtml{mrow}{span}><\:mhmathmlorhtml{mrow}{span} class="mhchem-arrow-complement">\:mhonlyinmathml{<mo>}&\#x21bd;\:mhonlyinmathml{</mo>}</\:mhmathmlorhtml{mrow}{span}> } } % todo: improve
\Configure{mhchemarrowequilibriumLeft}{ \HCode { <\:mhmathmlorhtml{mrow}{span} class="mhchem-arrow-complement">\:mhonlyinmathml{<mo>}&\#x21c0;\:mhonlyinmathml{</mo>}</\:mhmathmlorhtml{mrow}{span}><\:mhmathmlorhtml{mrow}{span} class="mhchem-arrow-larger">\:mhonlyinmathml{<mo>}&\#x21bd;\:mhonlyinmathml{</mo>}</\:mhmathmlorhtml{mrow}{span}> } } % todo: improve
\else
\fi
% }
\Hinput{mhchem}
\endinput
Es gibt noch einige zusätzliche HTML-Tags, die Sie mithilfe dieser Konfigurationsdatei entfernen müssen config.cfg
:
\RequirePackage{color}
\Preamble{xhtml}
\Configure{mhchemce}{}{}
\Configure{mhchemcf}{}{}
\begin{document}
\EndPreamble
Kompilieren mit:
$ make4ht -c config.cfg -f odt Test.tex
Dies ist das Ergebnis: