-
-
Save dpvc/15c2f7a1234e01a898c1a8127f1156e3 to your computer and use it in GitHub Desktop.
<!DOCTYPE html> | |
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> | |
<head> | |
<meta charset="utf-8" /> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> | |
<title>Change Script Sizes</title> | |
<script type="text/x-mathjax-config"> | |
MathJax.Hub.Register.StartupHook("mml Jax Ready", function () { | |
var MML = MathJax.ElementJax.mml; | |
var math = MML.math.prototype.defaults; | |
var mstyle = MML.mstyle.prototype.defaults; | |
math.scriptsizemultiplier = mstyle.scriptsizemultiplier = .85; | |
}); | |
</script> | |
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS_SVG"></script> | |
</head> | |
<body> | |
Math with less script size reduction: | |
$$ | |
x^{x^{x^x}} | |
$$ | |
</body> | |
</html> |
<!DOCTYPE html> | |
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> | |
<head> | |
<meta charset="utf-8" /> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> | |
<title>Change Script Sizes</title> | |
<script> | |
MathJax = { | |
startup: { | |
ready() { | |
const {MmlMath} = MathJax._.core.MmlTree.MmlNodes.math; | |
const {MmlMstyle} = MathJax._.core.MmlTree.MmlNodes.mstyle; | |
MmlMath.defaults.scriptsizemultiplier = MmlMstyle.defaults.scriptsizemultiplier = .85; | |
MathJax.startup.defaultReady(); | |
} | |
} | |
} | |
</script> | |
<script type="text/javascript" id="MathJax-script" async | |
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"> | |
</script> | |
</head> | |
<body> | |
Math with less script size reduction: | |
$$ | |
x^{x^{x^x}} | |
$$ | |
</body> | |
</html> |
@philschatz, OK here's the way to do it.
First, make a directory extensions
in the folder with your mathjax-node program, and place a file called scriptsizemultipler.js
in it that contains
var path = require('path');
var mjAPI = require("./lib/main.js");
MathJax.Hub.Register.StartupHook("mml Jax Ready", function () {
var MML = MathJax.ElementJax.mml;
var math = MML.math.prototype.defaults;
var mstyle = MML.mstyle.prototype.defaults;
math.scriptsizemultiplier = mstyle.scriptsizemultiplier = .85;
});
MathJax.Ajax.loadComplete('[extensions]/scriptsizemultiplier.js');
Then in your mathjax-node application, use
var path = require('path');
var mjAPI = require('mathjax-node');
mjAPI.config({
extensions: '[extensions]/scriptsizemultiplier.js',
paths: {extensions: path.join(__dirname, 'extensions')}
});
This will load your extension from the extensions folder. Then your mjAPI.typeset()
calls should use the modified script sizes.
Note that the file name used and the loadComplete()
call must match up correctly. Let me know if you have any questions.
Awesome, thank you! These different techniques are helpful to be able to get at MathJax internals with different permutations (browser/node and v2/3).
I notice they are given to users to provide workarounds before a new version is released. Is there a place that already has these techniques listed and if not, where would be the best place for me to add them? MathJax-docs, MathJax-demos-node, ... others?
Thank you for the code snippets. We are typesetting in Node using MathJax 2.7.
I was able to make the changes in MathJax 3 using the code snippet below but I was unable to figure out how to apply the changes described in
script-size-v2.html
into MathJax-node. Is there something I overlooked?