3

I am using make4ht on the file Test.tex containing:

\documentclass[12pt]{article}

\usepackage{amsmath}

\begin{document}
    Testing cross references for equations. 
    \begin{equation}
        e^{\mathrm{i}\pi}+1=0 \label{eq:test equation}
    \end{equation}
    Equation \ref{eq:test equation} is known as Euler's identity.
\end{document}

using the command

make4ht Test.tex "mathjax"

to get the HTML code (excluding the header)

<body>
    <!-- l. 6 --><p class='noindent'>Testing cross references for equations. \begin {equation} e^{\mathrm 
    {i}\pi }+1=0 \label {eq:test equation} \end {equation}
    Equation <span class='cmbx-12'>??</span> is known as Euler’s identity. </p> 
</body>

Am I missing something obvious I need to do to get the correct equation number instead of the ???

3
  • 2
    As all math content is passed to MathJax, it is not possible to reference to that easily. Either use MathML using make4ht Test.tex "mathml,mathjax", or try the Lua code from here: tex.stackexchange.com/a/378359/2891
    – michal.h21
    Mar 26, 2021 at 20:08
  • I was able to get it to work, kind of, using something similar to the link @michal.h21 posted. I added \renewcommand\eqref[1]{\NoFonts\HChar{92}eqref\{#1\}\EndNoFonts} to my .cfg file for make4ht. It breaks if the label contains an underscore, but works well enough for my needs otherwise.
    – Rushi
    Mar 26, 2021 at 23:20
  • 1
    If it breaks with underscore, try something like \renewcommand\eqref[1]{\NoFonts\HChar{92}eqref\{\detokenize{#1}\}\EndNoFonts} (untested, but it should work)
    – michal.h21
    Mar 27, 2021 at 10:25

1 Answer 1

1

As long as all equations are referenced using \eqref{} (not (\ref{})), the following hack, as suggested by @michal.h21 in another answer, works:

\Preamble{xhtml,mathjax}
\begin{document}
\renewcommand\eqref[1]{\NoFonts\HChar{92}eqref\{\detokenize{#1}\}\EndNoFonts}
\EndPreamble

Save the above in a configuration file, say MyConfig.cfg and run

make4ht filename.tex "xhtml,mathjax" --config MyConfig

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .