Обновление Mathjax до версии 4

Кстати, вот пример работы математической вычитки с помощью ИИ в этой версии разработки:

ProofreadMathAI

Пользователь может по желанию выделить конкретное математическое выражение в редакторе Markdown и запросить его вычитку. Было бы неплохо добавить такую опцию в новый математический редактор.

@sam Оказывается, KaTeX в новом плагине работает некорректно. Если вы посмотрите на это, то станет очевидно, что проблема в отсутствующих шрифтах, и действительно, в консоли указано, что не найдено множество файлов шрифтов (Woff-v2).

Шрифты на самом деле находятся в правильном расположении, которое должно быть в папке с именем ‘fonts’, расположенной рядом с таблицей стилей. Оба этих файла существуют в моей версии для разработки, например:
http://localhost:4200/plugins/discourse-math/katex/katex.min.css
и
http://localhost:4200/plugins/discourse-math/katex/fonts/KaTeX_Size2-Regular.woff2

Когда мы смотрим на вкладку Network в консоли, кажется, что система пытается загрузить что-то вроде
http://localhost:4200/t/my-topic/fonts/KaTeX_Size2-Regular.woff2

Таким образом, браузер ищет папку ‘fonts’, расположенную рядом с URL темы, что явно неверно.

Думаю, всё это связано с функцией loadKaTeX, определённой в katex-bundle, которая, как я полагаю, загружает KaTeX нестандартным образом, из-за чего KaTeX не знает, где находится CSS-файл. Однако я не знаю, как это исправить.

Огромное спасибо, Марк, я уже объединил ваши коммиты, сегодня займусь вопросом с Katex.

Это просто результат работы кастомного промпта для роли редактора?

Не беспокойтесь об этом, Марк и я держим ситуацию под контролем.

Отлично в обоих случаях!

Всё верно — да. Очевидно, что это удачно, что «Редактирование» достаточно точно описывает то, что я хочу от него получить.

Я только что отправил исправление для Katex. Дайте знать, если оно сработает. Мне нужно показать его @david, чтобы подтвердить безопасность, так как наш шаблон загрузки CSS несовместим с относительными ссылками внутри CSS-файла, потому что мы встраиваем таблицу стилей.

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

Для меня KaTeX выглядит нормально с вашим последним коммитом!

Похоже, что некоторые тесты не прошли, но я согласен, что весь функционал на месте.

Я тоже в восторге! :rocket:

Если кто-то просто не может дождаться, чтобы попробовать эту новую версию, или если (как и я) вы не можете ждать, поскольку у вас есть занятия, где она будет использоваться уже через несколько дней, то вы можете установить эту автономную версию здесь:

Я основал её на этом коммите, насколько помню, и изменил загрузку MathJax с CDN вместо внутреннего использования.

Вы можете увидеть её в действии в этом посте на моём сайте Discourse.

Я считаю, что стоит отметить, что это обновление будет значительно больше, чем просто обновление MathJax. Оно также

  • Ослабит парсинг таким образом, что будет лучше работать с LLM, как здесь и
  • Исправит проблемы с новым богатым редактором, как здесь.

@sam и @david

Вижу, что этот pull request уже принят, и заметил, что вы оба приложили немало усилий, чтобы довести это до конца — большое спасибо за это!

Пока я не планирую устанавливать эту версию, так как на моём сайте Discourse всё уже работает достаточно хорошо; однако у меня есть несколько вопросов.

  1. О графике релизов: Код уже появился в ветке main на GitHub. Предполагаю, что если кто-то установит совершенно новый экземпляр Discourse сегодня, то у него автоматически будет эта новая версия плагина math. Так ли это?
  2. О загрузчиках: Насколько я могу судить по коду, идея определения функций loadMathjax и loadKatex в ядре была отвергнута. Последняя версия, похоже, возвращается к использованию loadScript, но мне не совсем понятно, откуда берётся сам скрипт. Так ли это? Если да, то почему?

Ещё раз спасибо!

Сейчас я работаю на версии latest-release +17 в достаточно математически насыщенном продакшн-окружении.

Очень приятно видеть, что [grid] теперь корректно работает на Meta — это значительное улучшение качества жизни для постов с большим количеством математики. Я готов пойти на компромисс с [center] там, где это необходимо.

Для контекста: ранее я столкнулся с некоторыми пограничными случаями при использовании математики внутри [grid] / [details], которые я задокументировал здесь (на случай, если это всё ещё полезно):

Ещё раз спасибо всем, кто работает над обновлением до MathJax 4 — здорово видеть такой уровень отполированности.

При использовании \begin{align}...\end{align} внутри $$...$$ возникает ошибка MathJax «Erroneous nesting of equation structures». Похоже, что в ходе работы по обновлению до версии 4 MathJax стал строже применять правило «не встраивать окружения уравнений друг в друга».

На практике надёжным шаблоном в Discourse является использование aligned внутри обёртки $$:

$$
{\large
\begin{aligned}
a &= b \\
  &= c
\end{aligned}
}
$$

Это позволяет избежать встраивания структуры отображаемого уравнения (align) внутри другой обёртки отображения ($$...$$), что и вызывает ошибку.

Я согласен с вашим анализом @Ethsim2.

Такое поведение соответствует MathJaxV4, а также чистому LaTeX, поэтому, полагаю, здесь нет «ошибки». Определённо стоит отметить, что использование aligned вместо align — это правильный путь!