将 PGFplot 转换为 html?

将 PGFplot 转换为 html?

我想转换一段简单的 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 图形tikztex4ht在我看来,最好的方法是使用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。使用pdflatexpdf文件将被导出并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

你可以看到结果这里

相关内容