Исправить баг со скобками в opensource-проекте Mathlive issue 1195

32 000 руб. за проект
08 декабря 2021, 15:09 • 1 отклик • 31 просмотр
Задача: Исправить баг в opensource-проекте Mathlive
https://github.com/arnog/mathlive/issues/1195 - issue с описанием проблемы

предварительная оценка порядка 2 человеко-дне (выше обсуждаемо).

Описание:
Необходимо
исправить баг обработки верхних и нижних индексов для конструкции {{}}
(group brackets) при конвертации latex-mathml в opensource-проекте
Mathlive для версии v0.68.1
Вероятнее всего ошибка на уровне файла addons/math-ml.ts


Пример как можно отлаживаться:
1) Создаем файл mathml.test.ts в папке tests
2) Содержимое

import { convertLatexToMathMl } from "../dist/mathlive";

describe('BASIC PARSING', () => {
test.each([
['a^b', '<msup><mi>a</mi><mi>b</mi></msup>'],
['a_b', '<msub><mi>a</mi><mi>b</mi></msub>'],

['д^ы',
'<msup><mi>д</mi><mi>ы</mi></msup>'],
// также валиден ответ
<msup><mrow><mo>д</mo></mrow><mrow><mo>ы</mo></mrow></msup>

['x^{ay^1}_2',
'<msubsup><mi>x</mi><mn>2</mn><mrow><mi>a</mi><msup><mi>y</mi><mn>1</mn></msup></mrow></msubsup>'],

['x^{a{y}^1}_2',
'<msubsup><mi>x</mi><mn>2</mn><mrow><mi>a</mi><msup><mrow><mi>y</mi></mrow><mn>1</mn></msup></mrow></msubsup>'],

['x^{y^3}',
'<msup><mi>x</mi><mrow><msup><mi>y</mi><mn>3</mn></msup></mrow></msup>'],

['x^{{y}^3}',
'<msup><mi>x</mi><mrow><msup><mrow><mi>y</mi></mrow><mn>3</mn></msup></mrow></msup>'],

['x^{{y}^{z^3}}',
'<msup><mi>x</mi><mrow><msup><mrow><mi>y</mi></mrow><mrow><msup><mi>z</mi><mn>3</mn></msup></mrow></msup></mrow></msup>'],

['x^{{y}^3}',
'<msup><mi>x</mi><mrow><msup><mrow><mi>y</mi></mrow><mrow><msup><mrow><mi>z</mi></mrow><mn>3</mn></msup></mrow></msup></mrow></msup>'],

['x^{x_{{x}_3}}',
'<msup><mi>x</mi><mrow><msub><mi>x</mi><mrow><msub><mrow><mi>x</mi></mrow><mn>3</mn></msub></mrow></msub></mrow></msup>'],
])('convertLatexToMathMl test', (latex, mml) => {
console.log(`Code ${latex}`);
expect(convertLatexToMathMl(latex)).toEqual(mml);
});
});

3) Ставим контрольные точки, запускаемся в режиме отладки

DOD:
- fork проекта с фиксом или PR с фиксом в основной проект

- конвертация latex-mathml-latex не дает искажений для версии v0.68.1
(сам latex-код может немного измениться (например, для группировки), но
главное, чтобы в mathlive был одинаковый рендер до конвертации и после


- остальной функционал работает как прежде


Приемка:

В рамках конференции у себя демострируете работоспособность исправления далее мы перечисляем предоплату 50%, после передачи перечисляем остальное
Отзывы
Аноним
 
~ 3 года назад