Skip to content

Commit 70ea011

Browse files
committed
Handle primes in munderover as in msubsup. (mathjax/MathJax#3202)
1 parent f798364 commit 70ea011

File tree

3 files changed

+17
-11
lines changed

3 files changed

+17
-11
lines changed

ts/core/MmlTree/OperatorDictionary.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -321,13 +321,13 @@ export const OPTABLE: {[form: string]: OperatorList} = {
321321
'\u201E': MO.ACCENT, // double low-9 quotation mark
322322
'\u201F': MO.ACCENT, // double high-reversed-9 quotation mark
323323
'\u2032': MO.ORD, // prime
324-
'\u2033': MO.ACCENT, // double prime
325-
'\u2034': MO.ACCENT, // triple prime
326-
'\u2035': MO.ACCENT, // reversed prime
327-
'\u2036': MO.ACCENT, // reversed double prime
328-
'\u2037': MO.ACCENT, // reversed triple prime
324+
'\u2033': MO.ORD, // double prime
325+
'\u2034': MO.ORD, // triple prime
326+
'\u2035': MO.ORD, // reversed prime
327+
'\u2036': MO.ORD, // reversed double prime
328+
'\u2037': MO.ORD, // reversed triple prime
329329
'\u203E': MO.WIDEACCENT, // overline
330-
'\u2057': MO.ACCENT, // quadruple prime
330+
'\u2057': MO.ORD, // quadruple prime
331331
'\u20DB': MO.ACCENT, // combining three dots above
332332
'\u20DC': MO.ACCENT, // combining four dots above
333333
'\u2309': MO.CLOSE, // right ceiling

ts/input/tex/base/BaseItems.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import {entities} from '../../../util/Entities.js';
2929
import {MmlNode, TextNode, TEXCLASS} from '../../../core/MmlTree/MmlNode.js';
3030
import {MmlMo} from '../../../core/MmlTree/MmlNodes/mo.js';
3131
import {MmlMsubsup} from '../../../core/MmlTree/MmlNodes/msubsup.js';
32+
import {MmlMunderover} from '../../../core/MmlTree/MmlNodes/munderover.js';
3233
import TexParser from '../TexParser.js';
3334
import TexError from '../TexError.js';
3435
import {ParseUtil} from '../ParseUtil.js';
@@ -194,12 +195,15 @@ export class PrimeItem extends BaseItem {
194195
*/
195196
public checkItem(item: StackItem): CheckType {
196197
let [top0, top1] = this.Peek(2);
197-
if (!NodeUtil.isType(top0, 'msubsup') || NodeUtil.isType(top0, 'msup')) {
198+
const isSup = NodeUtil.isType(top0, 'msubsup') && !NodeUtil.getChildAt(top0, (top0 as MmlMsubsup).sup);
199+
const isOver = NodeUtil.isType(top0, 'munderover') && !NodeUtil.getChildAt(top0, (top0 as MmlMunderover).over);
200+
if (!isSup && !isOver) {
198201
// @test Prime, Double Prime
199-
const node = this.create('node', 'msup', [top0, top1]);
202+
const node = this.create('node', top0.getProperty('movesupsub') ? 'mover' : 'msup', [top0, top1]);
200203
return [[node, item], true];
201204
}
202-
NodeUtil.setChild(top0, (top0 as MmlMsubsup).sup, top1);
205+
const pos = isSup ? (top0 as MmlMsubsup).sup : (top0 as MmlMunderover).over;
206+
NodeUtil.setChild(top0, pos, top1);
203207
return [[top0, item], true];
204208
}
205209
}

ts/input/tex/base/BaseMethods.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,8 +254,10 @@ BaseMethods.Prime = function(parser: TexParser, c: string) {
254254
// @test PrimeSup, PrePrime, Prime on Sup
255255
base = parser.create('token', 'mi');
256256
}
257-
if (NodeUtil.isType(base, 'msubsup') && !NodeUtil.isType(base, 'msup') &&
258-
NodeUtil.getChildAt(base, (base as MmlMsubsup).sup)) {
257+
if ((NodeUtil.isType(base, 'msubsup') && !NodeUtil.isType(base, 'msup') &&
258+
NodeUtil.getChildAt(base, (base as MmlMsubsup).sup)) ||
259+
(NodeUtil.isType(base, 'munderover') && !NodeUtil.isType(base, 'mover') &&
260+
NodeUtil.getChildAt(base, (base as MmlMunderover).over))) {
259261
// @test Double Prime Error
260262
throw new TexError('DoubleExponentPrime',
261263
'Prime causes double exponent: use braces to clarify');

0 commit comments

Comments
 (0)