我想转换一段简单的 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
你可以看到结果这里