Задержка MathJax обработки определенных элементов
У меня есть сайт с простым текстом, смешанным с разделами, где изначально виден только заголовок. Нажатие на заголовок расширяет раздел. Все части этой страницы могут содержать математику, которую я хочу красиво набирать с помощью MathJax, но разделы могут быть очень длинными и содержать много математики. Я хотел бы отложить обработку каждого раздела, пока не будет нажат соответствующий заголовок. Это возможно?
Я знаю, что MathJax имеет TypeSet
функции, которые я могу вызывать при отображении раздела, поэтому динамическая типизация математики не является проблемой. Я также нашел elements
опция конфигурации, но это противоположно тому, что я хочу: она позволяет обрабатывать только определенные элементы, а я хочу исключить определенные элементы.
Пример страницы: http://jsfiddle.net/pnbjh5tg/
1 ответ
Я нашел способ сделать это. По сути, я упустил из виду ignoreClass
опция препроцессора tex2jax. Добавление класса tex2jax_ignore
для всех разделов убедитесь, что они не обрабатываются при загрузке страницы. Следующий JavaScript затем обрабатывает их при нажатии на их заголовок:
var section = $(this).parent().children('.section-container');
section.removeClass("tex2jax_ignore");
MathJax.Hub.Queue(["Typeset",MathJax.Hub,section.get(0)]);
Результат можно увидеть в этом jsFiddle.
В текущей версии MathJax (v3.0.1
), вы делаете это, добавляя
typeset: false
в вашем сценарии конфигурации. (Исходный код MathJax) Затем вы можете запуститьMathJax.typeset()
из JS, когда вы хотите набрать документ.
См. Этот jsFiddle для демонстрации.