Skip to content

Commit c837e91

Browse files
authored
Merge pull request #1069 from mathjax/issue3202
Handle primes in munderover as in msubsup. (mathjax/MathJax#3202)
2 parents 5b28ff8 + 70ea011 commit c837e91

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';
@@ -206,12 +207,15 @@ export class PrimeItem extends BaseItem {
206207
*/
207208
public checkItem(item: StackItem): CheckType {
208209
let [top0, top1] = this.Peek(2);
209-
if (!NodeUtil.isType(top0, 'msubsup') || NodeUtil.isType(top0, 'msup')) {
210+
const isSup = NodeUtil.isType(top0, 'msubsup') && !NodeUtil.getChildAt(top0, (top0 as MmlMsubsup).sup);
211+
const isOver = NodeUtil.isType(top0, 'munderover') && !NodeUtil.getChildAt(top0, (top0 as MmlMunderover).over);
212+
if (!isSup && !isOver) {
210213
// @test Prime, Double Prime
211-
const node = this.create('node', 'msup', [top0, top1]);
214+
const node = this.create('node', top0.getProperty('movesupsub') ? 'mover' : 'msup', [top0, top1]);
212215
return [[node, item], true];
213216
}
214-
NodeUtil.setChild(top0, (top0 as MmlMsubsup).sup, top1);
217+
const pos = isSup ? (top0 as MmlMsubsup).sup : (top0 as MmlMunderover).over;
218+
NodeUtil.setChild(top0, pos, top1);
215219
return [[top0, item], true];
216220
}
217221
}

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)