Search code examples
mathjaxtexasciimath

How to render on the same page both asciimath and TeX using mathjax


My usage scenario is to have asciimath as the primary formula engine. However, for some cases I might need more powerful features which I can find only using TeX.

Is there a way to have different open/close clauses one for the regular ascii math (say ` ) and one for TeX using, say $( and )$ ?

So I want to have mix of ascii math and TeX formulae on the same page.


Solution

  • Sure, you can use both!

    First simply configure both (assuming MathJax 3):

    <script>
      MathJax = {
        loader: { load: ["input/asciimath", "[tex]/html"] },
        tex: {
          packages: { "[+]": ["html"] },
          inlineMath: [
            ["$", "$"],
            ["\\(", "\\)"]
          ],
          displayMath: [
            ["$$", "$$"],
            ["\\[", "\\]"]
          ]
        },
        asciimath: {
          delimiters: [["`", "`"]]
        }
      };
    </script>
    

    Then use the delimiters to signal to MathJax if you want AsciiMath or Latex:

    <div>
      $$\sum_{n = 100}^{1000}\left(\frac{10\sqrt{n}}{n}\right)$$
    </div>
    <div>
      `sum_(n = 100)^(1000)(frac(10sqrt(n))(n))`
    </div>
    

    Remember that AsciiMath requires you to determine whether you want display style or not for the entire document with setting displaystyle: false / true, you can't have both, side by side, as you can for Latex:

    asciimath: {
      displaystyle: true
    }
    

    Code sandbox: https://codesandbox.io/s/mathjax-3-0ve5d