textit utiliser avec tex4ht en mode mathjax

Sep 01 2020

J'essaye de compiler le code Latex généré par Maple. Le Latex généré contient des choses comme \textit{\_C1}qui fonctionne bien en pdf, mais une fois compilé en HTML en utilisant tex4ht, en mode mathjax, cela ne fonctionne pas, car mathjax ne prend pas en charge l'imbrication dans cette macro ( référence )

MathJax ne traite pas les macros en mode texte, car il ne gère que les macros en mode mathématique. Ainsi, dans \ text {} ou \ hbox {} ou tout autre matériau en mode texte incorporé dans le mode mathématique, aucune macros n'est exécutée. C'est une fonctionnalité pas un bogue. :-)

J'ai essayé d'utiliser \renewcommandpour redéfinir \textit{\_C1}à {\it \_C1}qui fonctionne en HTML / MathJax, mais pas en mesure de le faire. La commande ne change pas en HTML, elle s'affiche toujours comme\textit{\_C1}

Voici 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}

Compilé en pdf en utilisant lualatex, les deux donnent le même résultat

Mais compilé en html

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

Le HTML généré est

<!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>

Comment corriger mon \renewcommandpour que cela \textit{#}devienne {\it #}automatiquement pour rendre mathjax heureux? (Je ne peux pas changer le code de génération de code Maple Latex) Ou y a-t-il un meilleur moyen de résoudre ce problème que d'utiliser \renewcommand? Peut être nécessaire d'ajouter une nouvelle configuration dans tex4ht pour cette macro pour mathjax?

Utilisation de TL 2020

Réponses

1 michal.h21 Sep 01 2020 at 14:58

Votre générateur LaTeX produit-il \textiten mode mathématique? Je dirais que c'est une erreur. Il devrait utiliser à la \mathitplace. \itne doit pas du tout être utilisé, c'est une commande obsolète. Quoi qu'il en soit, comme votre document est rendu par MathJax et il dit explicitement qu'il ne prend pas en charge le contenu mathématique à l'intérieur \textit, nous ne pouvons donc rien faire.

Cela fonctionne dans les deux pdflatexet MathJax:

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

\begin{document}


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

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