Математические/другие символы SVG в htlatex: использование чего-то другого, кроме pstoedit

Математические/другие символы SVG в htlatex: использование чего-то другого, кроме pstoedit

У меня есть один файл, и я хочу поочередно создавать печатные файлы 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?? Нет. Возможно, в какой-то момент pstoeditSVG-конвертация была бесплатным программным обеспечением, ноуже нет.

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 DVIdo 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расширением .

Последний комментарий относительно качества математики: лучше всего использовать mathmlformat, поскольку у изображений есть и другие проблемы, помимо разрешения (доступность, несоответствие размеров шрифтов, они не совпадают с базовой линией и, вероятно, многое другое). Проблема в mathmlплохой поддержке браузерами, которая практически отсутствует, за исключением Firefox. Mathjax добавляет хорошую поддержку для всех браузеров, но я полностью понимаю, что вам это не нравится. Есть возможность использовать Mathjax во время компиляции. Этот метод заменяет mathmlна portable HTML, который затем может отображаться без Javascript. СмотритеMathjax-узел. Следующая версия Make4ht предоставит возможность для этого проекта.

Связанный контент