
Я хотел бы преобразовать простой фрагмент кода LaTeX, который в основном представляет собой текст с несколькими центрированными графиками между ними. Это фиктивная версия кода, который я хотел бы преобразовать в HTML:
\documentclass{article}
\usepackage{lmodern}
\usepackage{pgfplots}
\usepackage{lipsum}
\pgfplotsset{compat=1.9}
\begin{document}
\lipsum
\begin{center}
\begin{tikzpicture}
\begin{axis}[
ybar stacked,
ymin=0, ymax=35,
width=9cm,
height=6cm,
symbolic x coords={Zimbabwe, France, Italy, Kenya, Germany},
xtick=data,
bar width=15pt,
axis lines*=left,
ytick={0,5,...,35},
xticklabel style={
text height=1.5ex,font=\footnotesize
},
yticklabel style={
font=\footnotesize
},
ymajorgrids,
xlabel={ ... ... ... ... ... , 2004-2009},
xlabel style={yshift=5.8cm,xshift=.9cm},
]
\addplot[fill=gray!50] coordinates {
(Zimbabwe,16)
(France,30)
(Italy,10)
(Kenya,5)
(Germany,20)
};
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}
Мне надоел latex4ht
, который я использовал в прошлом, но, похоже, он не работает с кодом PGFplot.
Итак, мой вопрос: как конвертировать графики PGFplot в html? Спасибо за помощь
решение1
Существует множество способов получить графику html и svg с помощью tikz
и tex4ht
. По моему мнению, лучший способ — использовать tikz externalization
библиотеку для выполнения преобразования. С помощью этой библиотеки pdf
для каждой картинки создается отдельное изображение tikz
, а затем можно использовать внешнюю команду для преобразования этого pdf
изображения в svg
. Я добился большого успеха в inkscape
выполнении этой работы, с другими приложениями, например, imagemagick
я обнаружил некоторые проблемы, и результат был неверным. Поэтому вам нужно установить его, inkscape
чтобы это заработало.
Сначала создадим пакет, который установит externalization
для нас myexternalize.sty
:
\usetikzlibrary{external}
\tikzset{
tex4ht inc/.style={
/pgf/images/include external/.code={%
\includegraphics[]{##1.svg}%
}
}
}
\tikzset{
external/system call/.add={}
{; inkscape -z -f "\image.pdf" -l "\image.svg"
}
}
\@ifpackageloaded{tex4ht}{
\tikzexternalize[mode=only graphics]
\tikzset{tex4ht inc}
}{
\tikzexternalize
}
Этот пакет создает новый tikz
стиль, tex4ht inc
, который будет использоваться с tex4ht
. С pdflatex
, pdf
файл экспортируется и inscape
вызывается в режиме командной строки для преобразования этого pdf
изображения в svg
.
Теперь нам нужна некоторая конфигурация для tex4ht
того, чтобы иметь возможность включать svg
изображения, файл myexternalize.4ht
:
\Configure{graphics*}
{svg}{
{\Configure{Needs}{File: \[email protected]}\Needs{}}
\Picture[\csname a:GraphicsAlt\endcsname]{\csname Gin@base\endcsname.svg \csname a:Gin-dim\endcsname}%
}
Теперь вы можете включить myexternalize
пакет в свой документ:
\documentclass{article}
\usepackage{lmodern}
\usepackage{pgfplots}
\usepackage{lipsum}
\pgfplotsset{compat=1.9}
\usepackage{myexternalize}
....
а затем скомпилируйте документ с помощью
pdflatex -shell-escape documentname
для получения svg
файлов. -shell-escape
опция важна, иначе преобразование не сработает! теперь вы можете скомпилировать файл в html:
htlatex documentname
вы можете увидеть результатздесь