
Estoy intentando compilar el código Latex generado por Maple. El Latex generado contiene cosas como \textit{\_C1}
que funciona bien en pdf, pero cuando se compila en HTML usando tex4ht, en modo mathjax, no funciona, ya que mathjax no admite el anidamiento dentro de esta macro (referencia)
MathJax no procesa macros en modo texto, ya que sólo maneja macros en modo matemático. Entonces, dentro de \text{} o \hbox{} u otro material en modo texto incrustado en el modo matemático, no se realizan macros. Esa es una característica, no un error. :-)
Intenté usar \renewcommand
para redefinir \textit{\_C1}
qué {\it \_C1}
funciona en HTML/mathjax, pero no pude hacerlo. El comando no cambia en HTML, todavía se muestra como\textit{\_C1}
Aquí está 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}
Compilado en pdf usando lualatex, ambos dan el mismo resultado
Pero compilado en html
make4ht -ulm default foo3.tex "mathjax,htm"
El HTML generado es
<!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>
¿Cómo corregir mi \renewcommand
para que \textit{#}
cambie {\it #}
automáticamente para hacer feliz a mathjax? (No puedo cambiar el código de generación de código Maple Latex) ¿O hay una mejor manera de solucionar este problema que no sea usar \renewcommand
? ¿Quizás sea necesario agregar una nueva configuración en tex4ht para esta macro para mathjax?
Usando TL 2020
Respuesta1
¿Su generador LaTeX produce \textit
en modo matemático? Yo diría que es un error. Debería usarse \mathit
en su lugar. \it
No debería usarse en absoluto, es un comando obsoleto. De todos modos, como MathJax representa su documento y dice explícitamente que no admite contenido matemático en su interior \textit
, no hay nada que podamos hacer.
Esto funciona tanto en pdflatex
MathJax como en:
\documentclass[12pt]{article}
\usepackage{amsmath}
\begin{document}
\[
y(t) = \mathit{\_C1}
\]
\[
y (t) = {\it \_C1}
\]
\end{document}