Самым простым решением было бы mathjax, который является латексная Javascript рендерер. И есть немало других аналогичных вариантов рендеринга.
В качестве альтернативы вы также можете посмотреть MathML, который является стандартом w3c для написания математических уравнений. К сожалению, прямо сейчас поддержка для него совершенно отсутствует, как можно видеть here, но в долгосрочной перспективе это будет отличное решение. Кроме того, упомянутые выше MathJax могут использоваться как MathML shim в браузерах, которые еще не поддерживают MathML.
Единственная проблема с MathJax shim будет заключаться в том, что когда вы сделаете ее интерактивной, она будет взаимодействовать по-разному с вашим кодом в браузерах, которые делают и не поддерживают MathML, но, несмотря на это, я лично консультировал MathML, re уже связаны с LaTeX.
Основываясь на вашем обновлении, я не уверен, что это может быть выражено в MathML или LaTeX, и я боюсь, что единственное, что вы могли бы сделать, это нарисовать его на холсте или настроить его в SVG, если вам потребуется интерактивность позже , Но я могу предупредить, что вы уже знаете, что это не будет простой задачей, если вы не привыкли к этому.
Чтобы добавить интерактивности MathJax:
- Использование MathML в качестве входных данных
- Использование HTML/CSS в качестве выходного
- Отключить контекстное меню MathJax путем добавления
showMathMenu:false
к вашей основной MathJax конфигурации
- Включить идентификаторы в вашу разметку MathML (например,
<mo id="someid">
)
- Используйте, например, jQuery для привязки к id после завершения MathJax (т.
$("#someid").on("mousemove",function(){...})
)
Полностью рабочая демо можно найти here, отодвинуться от знака равенства, чтобы вызвать тревогу.
Я тестировал MathML с MathJax. Сначала это выглядело хорошо, но я не вижу способа сделать его интерактивным (подсказки, ссылки и т. Д.). – schlicht
Отредактирован ответ с объяснением того, как интерактивность может быть добавлена к выходу MathJax. Как только вы это выясните, это довольно просто (хотя понадобилось некоторое время, чтобы понять). –
Демонстрация работает только в хром для меня (и только иногда), может быть, проблема с синхронизацией между вашим кодом и MathJax? Я еще раз попробую MathJax. У меня также есть рабочая демонстрация со столами, но с таблицами. Спасибо! – schlicht