Настройка mathjax для привязки к определенным div

Недавно я завел блог, в котором рассказываю о программировании, чтении, науке и математике. Теперь, что касается программирования, я установил SyntaxHighlighter, но не совсем понимаю, что мне следует использовать для математики. Я думаю об использовании MathJax, так как я привык к нему, и это довольно хорошо. Проблема в том, что MathJax будет мешать другим вещам. Например, он может мешать любому PHP-коду (в котором много знаков доллара), который я использую в посте по программированию.

Теперь я хочу сохранить встроенные/блочные знаки доллара, но я не хочу, чтобы это взорвало другие вещи. Я думал о том, чтобы связать MathJax с определенным классом CSS, чтобы я мог заключить все разделы, которые широко используют математику, с этими тегами. Под этим я подразумеваю, что я все еще могу нормально печатать внутри этих div (без математической обработки), но я могу использовать знаки доллара и получать математический код. Вне div любые знаки доллара останутся в покое.

Кто-нибудь знает вариант конфигурации, который позволяет мне это сделать? Я знаю JS, но не могу найти никаких вариантов в документации. Думал спросить здесь, прежде чем копаться в коде.


person Manishearth    schedule 15.02.2012    source источник
comment
Извините, это чисто проблема MathJax и не связана с TeX. См. часто задаваемые вопросы.   -  person    schedule 15.02.2012
comment
@MarkS.Everitt Должен ли я перенести его в StackOverflow?   -  person Manishearth    schedule 15.02.2012
comment
Вы можете запросить это, если хотите, но не переписывайтесь. Пусть модератор сделает ход. Кстати, вы можете заглянуть в ignoreClass: "tex2jax_ignore" для своих блоков кода. См. здесь.   -  person    schedule 15.02.2012
comment
Спасибо, прямо под этим есть processClass: "tex2jax_process". Ответ на вопрос.   -  person Manishearth    schedule 15.02.2012


Ответы (3)


добавьте class="tex2jax_ignore" к тегу документа <body>, а затем используйте class="tex2jax_process" в контейнерах для тех частей страницы, где вы хотите включить математику. Как указывали другие, вы можете настроить имена классов для использования этих функций. Например.

<script type="text/x-mathjax-config">
MathJax.Hub.Config({
  tex2jax: {
    inlineMath: [['$','$'],['\\(','\\)']],
    processClass: "mathjax",
    ignoreClass: "no-mathjax"
  }
});
</script>

Тогда ваша страница будет

<html>
<head>
  ...
</head>
<body class="no-mathjax">
  ...
  <div class="mathjax">
  ... (math goes here) ...
  </div>
  ...
</body>
</html>

Надеюсь, это поможет.

Давиде

person Davide Cervone    schedule 15.02.2012

Кредит: @MarkS.Everitt

http://www.mathjax.org/docs/1.1/options/tex2jax.html

Существует параметр конфигурации, processClass: "tex2jax_process" Окончательная конфигурация становится следующей:

tex2jax: {

inlineMath: [['$','$'], ['\\(','\\)']],'

ignoreClass: "[a-zA-Z1-9]*",

processClass: "math"

}
});
person Manishearth    schedule 15.02.2012
comment
или ignoreClass: [a-zA-Z1-9]* потому что он принимает какое-то регулярное выражение, - person reuns; 15.10.2015
comment
но будьте осторожны: это не рекурсия, так что если у вас есть ‹div› в ‹div›, будет рассматриваться более глубокое имя класса ‹div›... Лично я использую processClass: mathJax.*, ignoreClass: .* - person reuns; 15.10.2015

Существующие ответы не являются реальными решениями IMO, потому что они включают изменение вашего HTML. Иногда это даже невозможно, но даже если это возможно, кто захочет загрязнять свою разметку бессмысленными классами CSS только для того, чтобы заставить MathJax работать?

Вставьте следующий тег перед тегом <script>, который импортирует MathJax:

<script type="text/x-mathjax-config">
    MathJax.Hub.Config(
        {
            elements: mathElements
        }
    );
</script>

где mathElements содержит список элементов DOM для обработки, например что-то вроде var mathElements = document.querySelectorAll("article").

person Jack M    schedule 03.02.2019
comment
Это будет работать только при наличии одного или нескольких элементов. В противном случае, если ничего не указано, обрабатывается весь документ. - person nitely; 04.02.2019