
Ich versuche, von Maple generierten Latex-Code zu kompilieren. Der generierte Latex-Code enthält Dinge wie: \textit{\_C1}
was in PDF einwandfrei funktioniert, aber wenn es mit tex4ht im MathJax-Modus in HTML kompiliert wird, funktioniert es nicht, da MathJax die Verschachtelung innerhalb dieses Makros nicht unterstützt (Referenz)
MathJax verarbeitet keine Makros im Textmodus, da es nur Mathematikmodus-Makros verarbeitet. Innerhalb von \text{} oder \hbox{} oder anderem Textmodusmaterial, das in den Mathematikmodus eingebettet ist, werden also keine Makros ausgeführt. Das ist ein Feature, kein Fehler. :-)
Ich habe versucht, es zu verwenden, \renewcommand
um \textit{\_C1}
es neu zu definieren {\it \_C1}
, was in HTML/mathjax funktioniert, aber es ist mir nicht gelungen. Der Befehl ändert sich in HTML nicht, er wird immer noch 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 in PDF kompiliert, beide geben dasselbe Ergebnis aus
Aber kompiliert zu html
make4ht -ulm default foo3.tex "mathjax,htm"
Das 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 korrigiere ich meins \renewcommand
, sodass es automatisch \textit{#}
geändert wird {\it #}
, damit MathJax zufrieden ist? (Ich kann den Code zur Codegenerierung von Maple Latex nicht ändern.) Oder gibt es eine bessere Möglichkeit, dies zu beheben, als zu verwenden \renewcommand
? Möglicherweise muss für dieses Makro für MathJax eine neue Konfiguration in tex4ht hinzugefügt werden?
Verwenden von TL 2020
Antwort1
Produziert Ihr LaTeX-Generator \textit
im Mathematikmodus? Ich würde sagen, das ist ein Fehler. \mathit
Stattdessen sollte verwendet werden. \it
sollte überhaupt nicht verwendet werden, es ist ein veralteter Befehl. Da Ihr Dokument jedoch von MathJax gerendert wird und ausdrücklich angegeben wird, dass es keinen mathematischen Inhalt unterstützt \textit
, können wir nichts tun.
Dies funktioniert sowohl in pdflatex
als auch in MathJax:
\documentclass[12pt]{article}
\usepackage{amsmath}
\begin{document}
\[
y(t) = \mathit{\_C1}
\]
\[
y (t) = {\it \_C1}
\]
\end{document}