Mathjax support
-
Hi there,
I include Mathjax script in the header. It works pretty good. But there is only one problem: I need to refresh my page, then the equation comes out. Other wise its just code. Just check it out here:
see? when you open it, its just the code, after you refresh, the equation poops up.
Any ideas? Thanks.
Nope, maybe the equation appears when you click that link, so how about click "CFD" at the left top corner? you will see the equation's code instead equation.
After refresh! It works.
-
It's because the script runs once the page is loaded. Since NodeBB is a single page application, you have to re-run code when the page changes see this hooks.
I thinkaction:posts.loaded
would be the right choice for you. How you can re-run the parser of Mathjax you have to check within their docs. -
@frissdiegurke Thank you, I will try it and give you a feedback. Actually there is a plugin for nodeBB, called "Katex", but the equation looks not very beautiful....not well arranged.
-
Re: Mathjax support
Hello again,
do you know where should I insert this:?
$(window).on('action:ajaxify.end', function(event, data) { console.log(data); // to inspect what is passed back by NodeBB });
Thanks.
This dynamic mathjax is so great: https://cdn.mathjax.org/mathjax/latest/test/sample-dynamic-2.html
-
I am using https://www.npmjs.com/package/nodebb-plugin-katex
to render mathjax script. It works good so far.
-
Here:
$(window).on('action:posts.loaded action:ajaxify.end', function () { MathJax.Hub.Queue(["Typeset", MathJax.Hub, "content"]); });
-
@SuperMike
I wish this plugin can number the equations and support center locating. Check my page with MathJax: link text. It is very well-organised, the only problem is that you need to refresh the page. I also tested with Katex, looks it does not support with \mathbf{}? -
@sharonyue you put that code in the custom HTML in the ACP inside a
<script> </script>
tag, or wherever you have the rest of your code. -
@pitaj
Hello, I put the following<script> $(window).on('action:posts.loaded action:ajaxify.end', function () { MathJax.Hub.Queue(["Typeset", MathJax.Hub, "content"]); }); </script>
here:
And it does not work?... I still need to refresh the page to load mathjax.
-
After I include that script I dont need to refresh page to show the equations. But I still cannot preview equations in PREVIEW panel... Is it possible to do that?
-
@julian said in Mathjax support:
action:composer.preview
I tried this:
$(window).on('action:posts.loaded action:ajaxify.end action:composer.preview', function () { MathJax.Hub.Queue(["Typeset", MathJax.Hub, "content"]); });
Unfortunately it does not work ..
-
To those who need Mathjax support on nodebb. Now the dynamic rendering works:
- Include this in the header:
<script> window.MathJax = { tex: { inlineMath: [['$','$'], ['\\(','\\)']], tags: "ams", macros: { ra: "{\\rm a}", rb: "{\\rm b}", rD: "{\\rm D}", cell: "{\\rm cell}", drag: "{\\rm drag}", lift: "{\\rm lift}", turb: "{\\rm turb}", rd: "{\\rm d}", buo: "{\\rm buo}", rc: "{\\rm c}", rN: "{\\rm N}", tr: "{\\rm tr}", dev: "{\\rm dev}", mag: "{\\rm mag}", max: "{\\rm max}", min: "{\\rm min}", rleft: "{\\rm left}", wall: "{\\rm wall}", outlet: "{\\rm outlet}", inlet: "{\\rm inlet}", rright: "{\\rm right}", own: "{\\rm own}", nei: "{\\rm nei}", exp: "{\\rm exp}", rq: "{\\rm q}", rref: "{\\rm ref}", rE: "{\\rm E}", bfH: "{\\bf H}", dpm: "{\\rm dpm}", rT: "{\\rm T}", rP: "{\\rm P}", rgh: "{\\rm rgh}", rL: "{\\rm L}", rR: "{\\rm R}", Kd: "{\\rm Kd}", rr: "{\\rm r}", rW: "{\\rm W}", bfU: "{\\bf U}", bfh: "{\\bf h}", bfHbyA: "{\\bf HbyA}", bfS: "{\\bf S}", bfg: "{\\bf g}", bfT: "{\\bf T}", bfV: "{\\bf V}", bfd: "{\\bf d}", bfI: "{\\bf I}", bfK: "{\\bf K}", bfA: "{\\bf A}", bfn: "{\\bf n}", bfR: "{\\bf R}", bfM: "{\\bf M}", bfx: "{\\bf x}", bfX: "{\\bf X}", bfF: "{\\bf F}", bfq: "{\\bf q}", dt: "{\\Delta t}", p: "{\\partial}" // this macro has an optional parameter that defaults to 'x' \ddx[t]{y} }, autoload: { color: [], colorV2: ['color'], verb: ['verb'] }, packages: {'[+]': ['verb']} }, options: { skipHtmlTags: ["<pre>","<span>","<code>"], ignoreHtmlClass: 'tex2jax_ignore', processHtmlClass: 'tex2jax_process' }, loader: { load: ['[tex]/verb'] }, startup: { ready: () => { MathJax.startup.defaultReady(); MathJax.startup.promise.then(() => { console.log('MathJax initial typesetting complete'); }); } } }; (function () { var script = document.createElement('script'); script.src = 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js'; script.async = true; document.head.appendChild(script); })(); </script>
- Include the following to Javascript
$(window).on('action:posts.loaded action:ajaxify.end action:composer.preview', function () { MathJax.startup.defaultReady(); MathJax.startup.promise.then(() => { console.log('MathJax initial typesetting complete'); }); });
-
@sharonyue
are you able to render $\sqrt{2}$ ? -
@sharonyue
Screenshot of the problem : -
@abhinov-singh It works at my site. What did you put in your CSS?
-
@sharonyue
Can you please tell me the steps forhow to use Mathjax on NodeBB
I will follow that strictlyThanks in advance