Как лучше всего встроить LaTeX на веб-страницу?
Вопрос
Я не спрашиваю о преобразовании документа LaTeX в html.
Что мне хотелось бы сделать, так это иметь возможность использовать математические команды LaTeX в html-документе и корректно отображать их в браузере.Это может быть сделано на стороне сервера или клиента.
Решение
MediaWiki может сделать то, что вы ищете.Он использует Texvc (http://en.wikipedia.org/wiki/Texvc), который «подтверждает (AMS) латексные математические выражения и преобразует их в HTML, MathML или PNG Graphics». Похоже, что вы ищете.
Ознакомьтесь со статьей в Википедии о том, как они обрабатывают математические уравнения: http://en.wikipedia.org/wiki/Help:Формула.Они также содержат обширную информацию о LaTeX и плюсах и минусах различных типов рендеринга (PNG/MathML/HTML).
MediaWiki использует подмножество наценки TEX, в том числе некоторые расширения из Latex и Ams-Latex, для математических формул.Он генерирует либо изображения PNG, либо простую наценку HTML, в зависимости от предпочтений пользователей и сложности выражения.В будущем, поскольку больше браузеров умнее, он сможет во многих случаях генерировать улучшенный HTML или даже MathML.(См. Blahtex для получения информации о текущей работе по добавлению поддержки Mathml.)
Точнее, MediaWiki фильтрует разметку через Texvc, который, в свою очередь, передает команды TEX для фактического рендеринга.Таким образом, поддерживается только ограниченная часть языка полного текста;подробности см. ниже....
Плюсы HTML
- Встроенные HTML-формулы всегда соответствуют правильному выравниванию с остальной частью текста HTML.
- Фон, размер шрифта и лицо, соответствуют остальному содержанию HTML, а внешний вид уважает CSS и настройки браузера.
- Страницы, использующие HTML, будут загружаться быстрее.
Плюсы TeX
- TeX семантически превосходит HTML.В TEX «X» означает «математическая переменная x», тогда как в HTML «X» может означать что -либо.Информация безвозвратно утеряна.Это имеет несколько преимуществ:
- TeX можно преобразовать в HTML, но не наоборот.Это означает, что на стороне сервера мы всегда можем преобразовать формулу, основываясь на ее сложности и местоположении в тексте, пользовательских предпочтениях, типе браузера и т. Д.Следовательно, где это возможно, все преимущества HTML могут быть сохранены вместе с преимуществами TEX.Это правда, что текущая ситуация не идеальна, но это не веская причина для того, чтобы отбросить информацию/содержание.Это скорее повод помочь улучшить ситуацию.
- TEX может быть преобразован в MathML для браузеров, которые поддерживают его, сохраняя тем самым его семантику и позволяя его оказаться в виде вектора.
- TEX был специально разработан для наборных формул, поэтому ввод легче и более естественно, а выход более эстетически приятен.
- При написании в TEX, редакторам не нужно беспокоиться о поддержке браузеров, поскольку сервером оно приведено в изображение.Формулы HTML, с другой стороны, могут в конечном итоге стать несовместимыми на намерениях редактора (или вообще нет) некоторыми браузерами или более старыми версиями браузера.
Другие советы
я предпочитаю МатДжакс над решениями, которые предпочитают отображать изображения (что вызывает проблемы с псевдонимами).
MathJax — это механизм рендеринга Javascript с открытым исходным кодом для математики.Он использует CSS и веб-шрифты вместо изображений или Flash и может отображать LaTeX или MathML.Таким образом, у вас не возникнет проблем с масштабированием, и оно даже совместимо с программой чтения с экрана.
Однажды я разработал плагин jQuery, который на самом деле делает следующее: jsLaTeX
Вот простейший пример того, как его можно использовать:
$(".latex").latex();
<div class="latex">
\int_{0}^{\pi}\frac{x^{4}\left(1-x\right)^{4}}{1+x^{2}}dx =\frac{22}{7}-\pi
</div>
Приведенное выше приведет к созданию на вашей странице следующего уравнения LaTeX:
А Демо-страница плагина содержит больше примеров кода и демонстраций.
Исторически сложилось так, что рендеринг LaTeX и извлечение изображения были лучшим выбором для кроссплатформенных и кроссбраузерных математических задач.MathML все больше и больше становится разумной альтернативой. Вот онлайн-конвертер, который будет генерировать MathML из разметки Tex, которую затем можно встроить на свою веб-страницу.Я знаю, что браузеры на базе Gecko, такие как Firefox и Camino, хорошо работают с MathML, как и Opera.IE не работает «из коробки», но есть доступные плагины (например, Вот этот).
Texvc — отличная находка!Вывод стандартного HTML должен работать хорошо, если вас больше всего интересуют верхние индексы/нижние индексы/курсив/общие символы, но для более сложных вещей имейте в виду, что самые популярные сайты, ориентированные на математику (например, Вольфрам) генерировать изображения, так что вы можете сделать очень многое, если вас интересует кроссбраузерная совместимость :-(
Я прочитал все ответы здесь и удивлен, что никто не упомянул о преобразовании PDF в HTML.Если вы используете pdf2htmlEX это будет создавать идеальные веб-страницы из PDF-файла.Вам просто нужно скомпилировать ваш латекс в pdf (pdflatex).
По умолчанию он генерирует один HTML-файл, содержимое которого состоит из CSS, JavaScript и HTML.Я пробовал много инструментов для преобразования латекса в html, и это, безусловно, лучший лучшее и самое простое решение, которое я нашел.
Вы могли бы попробовать LaTexRenderer.Я не знаю, лучший ли он, но он работает.
Я сам начинаю в этом разбираться, и кажется, что ситуация изменилась.я столкнулся этот сравнительная демонстрация КаТекс и МатДжакс.
Короче (на момент написания этой статьи):
- Дроби внутри матрицы сталкиваются друг с другом в KaTeX, но не в MathJax (см. «перекрестное произведение»)
- Внутри символа квадратного (или n-го) корня показатели степени и вложенные квадратные корни кажутся упирающимися в горизонтальную верхнюю линию (см. «Повторяющиеся дроби» и «корень n-й степени»).
- MathJax имеет немного более жирный и крупный шрифт, KaTeX немного тоньше.
Но, пожалуй, самое решающее из всего, я обнаружил, что общий объем обработки страницы MathJax в среднем составил 1674 мс за три пробега.Напротив, KaTeX в среднем 128 мс, что на порядок лучше!
Есть и другие моменты сравнения, которые следует учитывать при просмотре соответствующих веб-сайтов:
- На главном веб-сайте KaTeX утверждается, что он поддерживает большую часть, но не все, LaTeX.Они перечисляют поддерживаемые функции. здесь.MathJax выражает некоторые из своих ограничения также.Хотя, бегло просмотрев их, сложно понять, кто в конечном итоге имеет «лучшую» поддержку.В некоторых блогах, с которыми я столкнулся, говорится, что KaTeX имеет меньшую поддержку, но другие говорят, что поддержка KaTeX значительно улучшилась за последние годы.
- Веб-сайт MathJax рекламирует поддержку MathML как для ввода, так и для вывода.Некоторые проблемы KaTeX на его github сайт здесь и здесь указывают, что они поддерживают MathML для вывода, но не для ввода (я мало что знаю о MathML, но, по крайней мере, это кажется важным, если вы хотите помочь пользователям с нарушениями зрения).
- KaTeX рендерит синхронно, поэтому страница не перекомпоновывается (это часть того, что делает ее быстрее).Но взамен он временно блокирует браузер.
- StackOverflow является партнером MathJax (см. здесь).Он используется на некоторый Сайты StackExchange, но не на самом StackOverflow из-за производительности времени загрузки страницы.Напротив, KaTeX был разработан Академией Кана.
Я бы определенно посоветовал вам взглянуть на MathML, если он соответствует тому, что вы ищете, но немного поработать с ним. JsTeX мог бы дать вам все, что вам нужно.