Skip to content

Commit f0f3f76

Browse files
authored
Merge pull request #729 from mathjax/issue2709
Fix setting of movablelimits to false for \overset and similar macros. (mathjax/MathJax#2709)
2 parents 049035e + f32b96f commit f0f3f76

File tree

2 files changed

+16
-15
lines changed

2 files changed

+16
-15
lines changed

ts/input/tex/ParseUtil.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -374,11 +374,7 @@ namespace ParseUtil {
374374
*/
375375
export function underOver(parser: TexParser, base: MmlNode, script: MmlNode, pos: string, stack: boolean): MmlNode {
376376
// @test Overline
377-
const symbol = NodeUtil.getForm(base);
378-
if ((symbol && symbol[3] && symbol[3]['movablelimits']) || NodeUtil.getProperty(base, 'movablelimits')) {
379-
// @test Overline Sum
380-
NodeUtil.setProperties(base, {'movablelimits': false});
381-
}
377+
ParseUtil.checkMovableLimits(base);
382378
if (NodeUtil.isType(base, 'munderover') && NodeUtil.isEmbellished(base)) {
383379
// @test Overline Limits
384380
NodeUtil.setProperties(NodeUtil.getCoreMO(base), {lspace: 0, rspace: 0});
@@ -397,6 +393,18 @@ namespace ParseUtil {
397393
return node;
398394
}
399395

396+
/**
397+
* Set movablelimits to false if necessary.
398+
* @param {MmlNode} base The base node being tested.
399+
*/
400+
export function checkMovableLimits(base: MmlNode) {
401+
const symbol = (NodeUtil.isType(base, 'mo') ? NodeUtil.getForm(base) : null);
402+
if (NodeUtil.getProperty(base, 'movablelimits') || (symbol && symbol[3] && symbol[3].movablelimits)) {
403+
// @test Overline Sum
404+
NodeUtil.setProperties(base, {movablelimits: false});
405+
}
406+
}
407+
400408
/**
401409
* Trim spaces from a string.
402410
* @param {string} text The string to clean.

ts/input/tex/base/BaseMethods.ts

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -625,9 +625,7 @@ BaseMethods.Overset = function(parser: TexParser, name: string) {
625625
// @test Overset
626626
const top = parser.ParseArg(name);
627627
const base = parser.ParseArg(name);
628-
if (NodeUtil.getAttribute(base, 'movablelimits') || NodeUtil.getProperty(base, 'movablelimits')) {
629-
NodeUtil.setProperties(base, {'movablelimits': false});
630-
}
628+
ParseUtil.checkMovableLimits(base);
631629
const node = parser.create('node', 'mover', [base, top]);
632630
parser.Push(node);
633631
};
@@ -642,10 +640,7 @@ BaseMethods.Underset = function(parser: TexParser, name: string) {
642640
// @test Underset
643641
const bot = parser.ParseArg(name);
644642
const base = parser.ParseArg(name);
645-
if (NodeUtil.isType(base, 'mo') || NodeUtil.getProperty(base, 'movablelimits')) {
646-
// @test Overline Sum
647-
NodeUtil.setProperties(base, {'movablelimits': false});
648-
}
643+
ParseUtil.checkMovableLimits(base);
649644
const node = parser.create('node', 'munder', [base, bot]);
650645
parser.Push(node);
651646
};
@@ -660,9 +655,7 @@ BaseMethods.Overunderset = function(parser: TexParser, name: string) {
660655
const top = parser.ParseArg(name);
661656
const bot = parser.ParseArg(name);
662657
const base = parser.ParseArg(name);
663-
if (NodeUtil.isType(base, 'mo') || NodeUtil.getProperty(base, 'movablelimits')) {
664-
NodeUtil.setProperties(base, {'movablelimits': false});
665-
}
658+
ParseUtil.checkMovableLimits(base);
666659
const node = parser.create('node', 'munderover', [base, bot, top]);
667660
parser.Push(node);
668661
};

0 commit comments

Comments
 (0)