Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

добавьте 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>

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

Давида

Ответ 2

Кредит: @MarkS.Everitt

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

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

tex2jax: {

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

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

processClass: "math"

}
});

Ответ 3

Существующие ответы не являются реальными решениями 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").