Как сообщить MathJax использовать альтернативный синтаксис для индексов?

У меня проблема с моим блогом. При написании сообщений я также могу добавить математику, используя MathJax. У меня также есть небольшой язык разметки, где я могу обрабатывать текст курсивом и полужирным шрифтом. Бывает, что синтаксис для курсива конфликтует с синтаксисом MathJax для нижнего индекса.

Итак, если я пишу в порту следующее:

My cat was doing this strange sound: _Prrrrrr_.

Текст между символами подчеркивания перекрашивается с помощью тега span с использованием курсивного начертания.

Но в MathJax использование символов подчеркивания означает наличие индексов. Иногда у меня возникают проблемы, конечно. Дело в том, что сначала обрабатывается мой язык разметки, затем Mathjax может работать.

Есть ли способ заставить MathJax создавать нижние и верхние индексы без использования символов подчеркивания, но с альтернативным синтаксисом?

Спасибо


person Andry    schedule 13.09.2012    source источник
comment
Какой синтаксис проходит через ваш собственный анализатор разметки?   -  person Bergi    schedule 13.09.2012
comment
В математическом выражении вроде $S(a_1,a_2,a_3)$. Мой язык разметки считает первые два символа подчеркивания курсивом и заменяет их на ‹span style=...›1,a‹/span›, и после этого запускается MathJax... Конечно, MathJax не сможет отобразить это вещь правильно   -  person Andry    schedule 13.09.2012
comment
Таким образом, вам скорее нужно изменить язык разметки, чтобы распознавать математическое выражение, чем заставить MathJax обнаруживать диапазоны как символы подчеркивания...   -  person Bergi    schedule 13.09.2012
comment
Это нехорошо... Сейчас я добавил математические функции, у меня так много сообщений уже используют этот синтаксис... лучше добавить альтернативный синтаксис в MathJax... неужели так сложно добавить новую среду или что-то???   -  person Andry    schedule 13.09.2012
comment
Ваш старый пост уже использует синтаксис MathJax? Если нет, сменить парсер разметки не составит труда.   -  person Bergi    schedule 13.09.2012
comment
Дело в том, что мне нужно их редактировать, чтобы добавить немного математики... Лучше бы просто добавить какой-то альтернативный синтаксис в MathJax... Мой вопрос об этом, я уже думал об изменении синтаксиса разметки, но здесь я хочу посмотреть, смогу ли я вместо этого действовать на MathJax...   -  person Andry    schedule 13.09.2012
comment
Я так не думаю. Я совершенно уверен, что MathJax не обнаруживает математику в элементах span, поэтому вам нужно будет их заменить. Изменить синтаксический анализатор разметки для обнаружения математических выражений и не применять замену подчеркивания будет намного проще — или вам нужны индексные теги внутри математики?   -  person Bergi    schedule 13.09.2012


Ответы (2)


Есть выход. Использование макросов, как описано здесь: Настроить Tex в MathJax. Установив что-то вроде этого:

MathJax.Hub.Config({TeX: {Macros:{subscript:['_{#1}',1],superscript:['^{#1}',1]}}});

Система (MathJax) заменит этот материал символом подчеркивания, а затем проанализирует его, моя проблема на самом деле решается так!

person Andry    schedule 13.09.2012
comment
Этот метод, кажется, неправильно копирует текст $x_\mu$ и $y_\mu$. - person Eden Harder; 21.02.2014

Я обнаружил, что экранирование символов подчеркивания с помощью обратной косой черты помогло, например:

...strange sound: \_Prrrrrr\_.

Но это привело к тому, что некоторые синтаксические анализаторы неправильно отображали данные.

Однако, если вы также определите '\_' как макрос, который просто выводит '_', то все это, кажется, работает.

Чтобы сделать это в MathJax:

MathJax.Hub.Config({TeX: {Macros: { '\_': ['_'] }}, /* rest of config here... */ });

Для этого в Katex я изменил katex_config.js на:

module.exports = {
  macros: { '\\_': '_' }
}
person g t    schedule 16.04.2021