«Виола», математика и скобки

Два дня занимался математическим модулем в «Виоле».

Поручил нейросети посмотреть, есть ли что-то, что автор начинал делать, но не доделал. Оказалось — есть! В коде есть недоделанная реализация пропорциональных скобок: сделаны токены и логика, но код не соединён с парсером, и некоторые сложные случаи не обрабатываются.

С наскоку задачу решить не удалось — она оказалась сложной. Сначала мы сделали отдельные теги для разных видов скобок, дописали обработку и поправили все баги, а на следующий день убрали теги и научили парсер генерировать нужные токены на скобки.

Звучит, вроде, несложно, но на деле коммит оказался очень объёмным. Зато сейчас всё работает очень хорошо.

Ещё в комментариях к коду есть указание на то, что ширина скобки должна, по задумке автора, меняться динамически в зависимости от её высоты. Но я попробовал — смотрится плохо, фиксированная выглядит намного лучше, поэтому реализовывать это не стал.

Скриншот веб-страницы с примерами вложенных скобок и формул: a+(b+c), [x]+y, дробь с вложенными скобками, сумма и интеграл с круглыми и квадратными скобками.

Комментарии 5

SiMMmr E16/NR04δ13 № 1
а разве «v=» и «e» не должны быть на одном уровне с горизонтальной чертой дроби (как «x1+» в знаменателе)? как минимум скобки знаменателя выглядят избыточно (разве что их умышленно скормили парсеру с целью показать возможности)
Евгений Степанищев автор № 2
как по мне, это не ухудшает понимание того что за формула записана