Fix alignment problem with prescripts in mhchem (resolves issue #211).

This commit is contained in:
Davide P. Cervone 2012-03-16 09:09:26 -04:00
parent 6ca2bcba94
commit 52427db658
2 changed files with 10 additions and 6 deletions

File diff suppressed because one or more lines are too long

View File

@ -136,7 +136,7 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
}, },
// //
// Make a number of fraction preceeding an atom, // Make a number or fraction preceeding an atom,
// or a subscript for an atom. // or a subscript for an atom.
// //
ParseNumber: function () { ParseNumber: function () {
@ -215,7 +215,8 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
c = this.string.charAt(++this.i); c = this.string.charAt(++this.i);
if (c === "{") { if (c === "{") {
this.i++; var m = this.Find("}"); this.i++; var m = this.Find("}");
if (m === "-.") {this.sup += "{-}{\\cdot}"} else if (m) {this.sup += CE(m).Parse()} if (m === "-.") {this.sup += "{-}{\\cdot}"}
else if (m) {this.sup += CE(m).Parse().replace(/^\{-\}/,"-")}
} else if (c === " " || c === "") { } else if (c === " " || c === "") {
this.tex += "{\\"+this.Arrows["^"]+"}"; this.i++; this.tex += "{\\"+this.Arrows["^"]+"}"; this.i++;
} else { } else {
@ -228,7 +229,7 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
// //
ParseSubscript: function (c) { ParseSubscript: function (c) {
if (this.string.charAt(++this.i) == "{") { if (this.string.charAt(++this.i) == "{") {
this.i++; this.sub += CE(this.Find("}")).Parse(); this.i++; this.sub += CE(this.Find("}")).Parse().replace(/^\{-\}/,"-");
} else { } else {
var n = this.Match(/^\d+/); var n = this.Match(/^\d+/);
if (n) {this.sub += n} if (n) {this.sub += n}
@ -300,12 +301,15 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
// //
// right-justify super- and subscripts when they are before the atom // right-justify super- and subscripts when they are before the atom
// //
var n = Math.abs(this.sup.length-this.sub.length); var sup = this.sup, sub = this.sub;
var n = Math.abs(sup.replace(/[^\d]/g,"").length-sub.replace(/[^\d]/g,"").length);
if (n) { if (n) {
var zeros = "0000000000".substr(0,n); var zeros = "0000000000".substr(0,n);
var script = (this.sup.length > this.sub.length ? "sub" : "sup"); var script = (sup.length > sub.length ? "sub" : "sup");
this[script] = "\\phantom{"+zeros+"}" + this[script]; this[script] = "\\phantom{"+zeros+"}" + this[script];
} }
if (sup.charAt(0) === "-" && sub.charAt(0) !== "-") {this.sub = "\\phantom{-}"+this.sub}
if (sub.charAt(0) === "-" && sup.charAt(0) !== "-") {this.sup = "\\phantom{-}"+this.sup}
} }
if (!this.sup) {this.sup = "\\Space{0pt}{0pt}{.2em}"} // forces subscripts to align properly if (!this.sup) {this.sup = "\\Space{0pt}{0pt}{.2em}"} // forces subscripts to align properly
this.tex += "^{"+this.sup+"}_{"+this.sub+"}"; this.tex += "^{"+this.sup+"}_{"+this.sub+"}";