Dear Francis,

On Wed, Mar 10, 2021 at 05:46:41PM +0000, Francis Wright wrote:
I'm using TeX4ht to generate HTML including mathematics to be processed by MathJax from LaTeX source files. MathJax supports macro and environment definitions provided they are within a math environment, and this works fine via TeX4ht provided the definition has no parameters. But if I use parameters, the # characters get doubled. I currently post-process my HTML files to convert ## back to #, which works, but it would be nice if TeX4ht didn't double them in the first place. Is there a better way to handle this? I can't find any way to escape or encode the # characters to avoid this.

Interesting issue, thanks for the report. I think easiest solution is to
change catcode of # to letter before the MathJax configuration, like in
the following configuration file:

%%%%%%%%%%%%%%%%%%
\Preamble{xhtml}
\catcode`\#=11
\Configure{MathJaxConfig}{{
    tex: {
      tags: "ams",
      \detokenize{%
      macros: {
        hello: ["\\sqrt{#1}",1],
        sl: "\\it",
      }
  }
}
}}
% don't forget to return catcode back to the original value
\catcode`\#=6

\begin{document}
\EndPreamble
%%%%%%%%%%%%%%%%%%

It is converted as:

<script>window.MathJax = { tex: { tags: "ams", macros: { hello: ["\\sqrt{#1}",1], sl: "\\it", } } }</script>
in the HTML file, which works correctly.

Best regards,
Michal

Reply via email to