From 31e9ff9afbfa3dab9042e1271806b902d337c97b Mon Sep 17 00:00:00 2001 From: "Davide P. Cervone" Date: Tue, 7 Feb 2023 16:23:40 -0500 Subject: [PATCH] Allow (embellished) operators in \underset, \overset, and \underoverset to specify accent="true" --- ts/input/tex/base/BaseMethods.ts | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/ts/input/tex/base/BaseMethods.ts b/ts/input/tex/base/BaseMethods.ts index 95432fd69..d192bb7c1 100644 --- a/ts/input/tex/base/BaseMethods.ts +++ b/ts/input/tex/base/BaseMethods.ts @@ -626,11 +626,10 @@ BaseMethods.Overset = function(parser: TexParser, name: string) { // @test Overset const top = parser.ParseArg(name); const base = parser.ParseArg(name); + const topMo = top.coreMO(); + const accent = (topMo.isKind('mo') && NodeUtil.getAttribute(topMo, 'accent') === true); ParseUtil.checkMovableLimits(base); - if (top.isKind('mo')) { - NodeUtil.setAttribute(top, 'accent', false); - } - const node = parser.create('node', 'mover', [base, top]); + const node = parser.create('node', 'mover', [base, top], {accent}); parser.Push(node); }; @@ -644,11 +643,10 @@ BaseMethods.Underset = function(parser: TexParser, name: string) { // @test Underset const bot = parser.ParseArg(name); const base = parser.ParseArg(name); + const botMo = bot.coreMO(); + const accentunder = (botMo.isKind('mo') && NodeUtil.getAttribute(botMo, 'accent') === true); ParseUtil.checkMovableLimits(base); - if (bot.isKind('mo')) { - NodeUtil.setAttribute(bot, 'accent', false); - } - const node = parser.create('node', 'munder', [base, bot], {accentunder: false}); + const node = parser.create('node', 'munder', [base, bot], {accentunder}); parser.Push(node); }; @@ -662,14 +660,12 @@ BaseMethods.Overunderset = function(parser: TexParser, name: string) { const top = parser.ParseArg(name); const bot = parser.ParseArg(name); const base = parser.ParseArg(name); + const topMo = top.coreMO(); + const botMo = bot.coreMO(); + const accent = (topMo.isKind('mo') && NodeUtil.getAttribute(topMo, 'accent') === true); + const accentunder = (botMo.isKind('mo') && NodeUtil.getAttribute(botMo, 'accent') === true); ParseUtil.checkMovableLimits(base); - if (top.isKind('mo')) { - NodeUtil.setAttribute(top, 'accent', false); - } - if (bot.isKind('mo')) { - NodeUtil.setAttribute(bot, 'accent', false); - } - const node = parser.create('node', 'munderover', [base, bot, top], {accent: false, accentunder: false}); + const node = parser.create('node', 'munderover', [base, bot, top], {accent, accentunder}); parser.Push(node); };