
У меня есть один файл, и я хочу поочередно создавать печатные файлы PDF через xelatex
и HTML-страницы через htlatex
. По умолчанию htlatex
создает просто очень уродливые уравнения PNG с низким разрешением. Я хочу вместо этого SVG.
Я делаюнетхочу использовать MathJaX. Я хочу, чтобы мой файл работал без JavaScript, и не хочу, чтобы пользователям приходилось каждый раз рендерить сложный TeX.
Следуя советам из интернета, я поместил это в c.cfg
...
\Preamble{ext=htm,charset="utf-8",p-width,pic-align}
\Configure{Picture}{.svg}
\makeatletter
\Configure{graphics*}
{svg}
{
{\Configure{Needs}{File: \[email protected]}\Needs{}}
\Picture[\csname a:GraphicsAlt\endcsname]{\csname Gin@base\endcsname.svg
\csname a:Gin-dim\endcsname}
}
\begin{document}
\EndPreamble
Пробежал htlatex
через htlatex myfile "c"
...и получил это: pstoedit: Unsupported output format svg
.
Хм, что здесь произошло?Неужели моя система неправильно настроена, как думал этот автор отчета об ошибках Debian?? Нет. Возможно, в какой-то момент pstoedit
SVG-конвертация была бесплатным программным обеспечением, ноуже нет.
SVG — это условно-бесплатный «плагин» для pstoedit
, а для моей ОС, FreeBSD, нет двоичного файла.
Как я могу пометить SVG-математику и что-либо еще SVG между какой-либо командой, с , htlatex
без pstoedit
?
Я определил, что это htlatex
работает внутренне, сначала генерируя файл EPS, например zztest.eps
. Затем он пытается pstoedit -f svg zztest.eps test0x.svg
. Поэтому я подумал, что просто попробую другой конвертер, но другие конвертеры, такие как uniconvertor
и inkscape -z
, не распознают магию LaTeX должным образом и помещают EPS на огромный холст (см. ниже). Кроме того, запускать другой конвертер каждый раз обременительно, должен быть способ указать, какой конвертер использовать.
Изображение должно выглядеть так же, как и вывод по умолчанию htlatex
, то есть как SVG.
решение1
Нам действительно следует заменить pstoedit
на что-то лучшее. На самом деле, процесс, в котором мы конвертируем DVI
в PostScript
и затем в, SVG
сегодня не так уж и необходим, так как в настоящее время существует direct DVI
do converter.SVG
Вы можете изменить команды для преобразования изображений в tex4ht.env
файле, но этот процесс не очень прост. Вместо этого я бы использовал make4ht
, который является современной заменой htlatex
с поддержкой файлов сборки. Вы можете указать пользовательские команды для преобразования изображений в этих файлах сборки.
Сохраните следующий код как test.mk4
:
Make:image("svg$","dvisvgm -n -p ${page} -c 1.4,1.4 -s ${source} > ${output}")
Файл сборки — это скрипт Lua, Make:image
команда предоставляет команду для преобразования изображения. Эта команда имеет два аргумента, первый — это настроенный формат изображения (это регулярное выражение, поэтому $
в конце), второй — шаблон для команды преобразования. Есть три важных параметра: ${source}
имя файла DVI
, ${page}
номер страницы преобразованного изображения и ${output}
имя сгенерированного изображения.
Вы можете скомпилировать свой документ с помощью команды
make4ht -c c.cfg test.tex
Файл сборки используется автоматически, если он назван входным TeX-файлом с .mk4
расширением .
Последний комментарий относительно качества математики: лучше всего использовать mathml
format, поскольку у изображений есть и другие проблемы, помимо разрешения (доступность, несоответствие размеров шрифтов, они не совпадают с базовой линией и, вероятно, многое другое). Проблема в mathml
плохой поддержке браузерами, которая практически отсутствует, за исключением Firefox. Mathjax добавляет хорошую поддержку для всех браузеров, но я полностью понимаю, что вам это не нравится. Есть возможность использовать Mathjax во время компиляции. Этот метод заменяет mathml
на portable HTML
, который затем может отображаться без Javascript. СмотритеMathjax-узел. Следующая версия Make4ht предоставит возможность для этого проекта.