![Изменить шрифт диаграмм tikz в html, созданных make4ht](https://rvso.com/image/472319/%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D1%88%D1%80%D0%B8%D1%84%D1%82%20%D0%B4%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%20tikz%20%D0%B2%20html%2C%20%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85%20make4ht.png)
Я создаю html-документ из файла latex с помощью make4ht
. Я успешно установил шрифт тела документа на Libertinus Serif с помощью CSS. Но я не могу установить шрифт, который используется make4ht для создания диаграмм tikz. Может ли кто-нибудь помочь мне сделать это?
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
% These lines don't help either:
% \usepackage{fontspec}
% \setmainfont{Libertinus Serif}
% \setsansfont{Libertinus Sans}
% \setmonofont{Libertinus Mono}[Scale=MatchLowercase]
\usepackage{libertinus}
\begin{document}
``Lorem'' ``ipsum''
\begin{tikzpicture}
\node (x) {``Lorem''};
\node[right=of x] (y) {``ipsum''};
\draw[->] (x) to (y);
\end{tikzpicture}
\end{document}
Моя команда — make4ht -l -m draft -c myconfig.cfg -f html5 main.tex
, а содержимое myconfig.cfg
—
\Preamble{xhtml}
\Css{
@import url('https://fonts.cdnfonts.com/css/libertinus-serif');
body{
font-family: "Libertinus Serif", serif;
}
}
\begin{document}
\EndPreamble
Результат:
Вы можете ясно видеть, что, помимо разницы в размере, шрифты не одинаковы. На картинке Tikz используется шрифт Latin/Computer Modern по умолчанию, а не Libertinus Serif, который используется в абзаце выше (обратите внимание на хвостик u и носик r).
Как мне сделать так, чтобы изображение tikz отображалось с тем же шрифтом Libertinus Sans?
решение1
Все шрифты подавляются в --lua
режиме TeX4ht, поскольку нам нужно предотвратить загрузку шрифтов OpenType, что приводит к фатальной ошибке. Вы по-прежнему можете вручную переключиться на шрифты Type 1 только для среды TikZ. Этот файл конфигурации должен это сделать:
\Preamble{xhtml}
\AddToHook{env/tikzpicture/begin}{\fontfamily{LibertinusSerif-TLF}\selectfont}
\Configure{@HEAD}{\HCode{
<style type="text/css">
@import url('https://fonts.cdnfonts.com/css/libertinus-serif');
body{
font-family: "Libertinus Serif", serif;
}
</style>}}
\begin{document}
\EndPreamble
Обратите внимание, что я также изменил вашу конфигурацию для шрифта текста, потому что \Css
команда добавляет что-то в конец файла CSS, но @import
правила должны быть в верхней части файла CSS. Эта конфигурация помещает их прямо в документ HTML, где они и работают.
Вот результат: