Поддерживаемые функции - это одно.Чтобы справиться с этим, у вас может возникнуть реальная возможность просто разбить на токены входные данные, найти последовательности имен с обратной косой чертой и сравнить их со списком, извлеченным из источников KaTeX, чтобы увидеть, какие из них поддерживаются.
Я думаю, можно даже попытатьсяудалите все остальные функции из LaTeX.Или, скорее, скрыть их, так что пользовательский ввод не может получить к ним доступ, но сторонние библиотеки могут.Избавиться от языковых функций (в отличие от макросов), таких как \def
, возможно, будет еще сложнее.Лучше спросить на бирже TeX о том, что вы действительно хотите следовать по этому маршруту.
В качестве альтернативы, я думаю, вы могли бы выполнить проверку, описанную выше в TeX.Напишите макрос, который читает текущий файл в виде простого текста вместо источника TeX, чтобы выполнить этот анализ.Или некоторые такие.Но отдельный автономный инструмент будет гораздо проще.
Если вы собираетесь использовать отдельный инструмент, вы можете написать его на JavaScript для Node и запустить KaTeX на входе.Таким образом, вы можете, по крайней мере, сказать, будет ли для него набрано значение что-то или возникнет ошибка.
Вопрос о том, является ли рендеринг ожидаемым от LaTeX, может быть другим вопросом.В целом KaTeX стремится воспроизвести поведение LaTeX, поэтому любая разница может указывать на ошибку.Но ошибки существуют, поэтому все это не может избежать необходимости проверок.Как насчет того, чтобы обработать математическую часть ввода с помощью KaTeX для некоторого HTML-кода, который авторы могут проверить без доступа к сайту?
Что касается существующих инструментов или пакетов макросов, я не знаю ни одного, кроме вопросов об инструментах или библиотекахвсе равно не по теме обмена стека.