Настройка mathjax, чтобы придерживаться определенных div - PullRequest
16 голосов
/ 15 февраля 2012

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

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

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

Ответы [ 3 ]

22 голосов
/ 15 февраля 2012

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

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

Davide

7 голосов
/ 15 февраля 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"

}
});
0 голосов
/ 03 февраля 2019

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

...