Textit Verwendung mit tex4ht im Mathjax-Modus

Sep 01 2020

Ich versuche, von Maple generierten Latexcode zu kompilieren. Der generierte Latex enthält Dinge, \textit{\_C1}die im PDF-Format in Ordnung sind. Wenn sie jedoch im texjjax-Modus mit tex4ht in HTML kompiliert werden, funktioniert dies nicht, da mathjax die Verschachtelung in diesem Makro nicht unterstützt ( Referenz ).

MathJax verarbeitet keine Makros im Textmodus, da nur Makros im Mathematikmodus verarbeitet werden. Innerhalb von \ text {} oder \ hbox {} oder anderem im Mathematikmodus eingebetteten Textmodusmaterial werden also keine Makros ausgeführt. Das ist eine Funktion, kein Fehler. :-)

Ich habe versucht, \renewcommandneu zu definieren \textit{\_C1}, {\it \_C1}was in HTML / mathjax funktioniert, konnte es aber nicht. Der Befehl ändert sich nicht in HTML, sondern wird weiterhin als angezeigt\textit{\_C1}

Hier ist MWE

\documentclass[12pt]{article}
\usepackage{amsmath}

\ifdefined\HCode 
\renewcommand{\textit}[1]{{\it#1}}
\fi 

\begin{document}

\[
y(t) = \textit{\_C1}
\]

  
\[
y (t) = {\it \_C1}
\]
\end{document}

Mit lualatex als PDF kompiliert, liefern beide die gleiche Ausgabe

Aber zu HTML kompiliert

  make4ht -ulm default foo3.tex "mathjax,htm"

Der generierte HTML ist

<!DOCTYPE html> 
<html lang="en-US" xml:lang="en-US" > 
<head><title></title> 
<meta  charset="utf-8" /> 
<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)" /> 
<meta name="viewport" content="width=device-width,initial-scale=1" /> 
<link rel="stylesheet" type="text/css" href="foo3.css" /> 
<meta name="src" content="foo3.tex" /> 
<script>window.MathJax = { tex: { tags: "ams", inlineMath: [ ["\\\(","\\\)"] ], displayMath: [ ['$$','$$'], ["\\[","\\]"] ], processEscapes: true, processEnvironments: true, packages: ['base', 'color', 'ams'] }, loader: { load: ['[tex]/color', '[tex]/ams'] } }; </script> 
 <script type="text/javascript" async="async" id="MathJax-script" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js"></script>  
</head><body 
>
<!--l. 12--><p class="noindent" >\[ y(t) = \textit{\_C1} \]
</p><!--l. 17--><p class="indent" >   \[ y (t) ={\it \_C1} \] </p> 
</body> 
</html>

Wie kann ich meine korrigieren, \renewcommanddamit \textit{#}sie {\it #}automatisch geändert wird, um Mathjax glücklich zu machen? (Ich kann den Code zur Generierung von Maple Latex-Code nicht ändern.) Oder gibt es eine bessere Möglichkeit, dies zu beheben, als die Verwendung \renewcommand? Möglicherweise müssen Sie in tex4ht eine neue Konfiguration für dieses Makro für mathjax hinzufügen?

TL 2020 verwenden

Antworten

1 michal.h21 Sep 01 2020 at 14:58

Produziert Ihr LaTeX-Generator \textitim Mathematikmodus? Ich würde sagen, dass es ein Fehler ist. Es sollte \mathitstattdessen verwendet werden. \itsollte überhaupt nicht verwendet werden, es ist ein veralteter Befehl. Wie auch immer, da Ihr Dokument von MathJax gerendert wird und ausdrücklich besagt, dass es darin keinen mathematischen Inhalt unterstützt \textit, können wir also nichts tun.

Dies funktioniert sowohl in pdflatexMathJax als auch in MathJax:

\documentclass[12pt]{article}
\usepackage{amsmath}

\begin{document}


\[
y(t) = \mathit{\_C1}
\]

  
\[
y (t) = {\it \_C1}
\]
\end{document}