Converter PGFplot em HTML?

Converter PGFplot em HTML?

Eu gostaria de converter um simples pedaço de código LaTeX que é basicamente algum texto com alguns gráficos centralizados entre eles. Esta é uma versão fictícia do código que gostaria de converter para 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}

Cansei do latex4ht, que usei no passado, mas parece que não funciona com o código PGFplot.

Então minha pergunta é: como você converte gráficos PGFplot em html? Obrigado pela ajuda

Responder1

Há muitas maneiras de obter gráficos HTML e SVG com tikze tex4ht. Na minha opinião, a melhor forma é usar tikz externalizationa biblioteca para fazer a conversão. Com esta biblioteca, pdfuma imagem independente é criada para cada tikzimagem, e algum comando externo pode então ser usado para converter esta pdfimagem em formato svg. Tive grande sucesso ao inkscapefazer este trabalho, com outras aplicações, pois imagemagickencontrei alguns problemas e o resultado não estava correto. Então você precisa instalar inkscapepara que isso funcione.

Primeiro, crie um pacote que definirá externalizationpara nós 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
}

Este pacote cria um novo tikzestilo, tex4ht inc, que será usado com tex4ht. Com pdflatex, pdfo arquivo é exportado e inscapechamado no modo de linha de comando para converter esta pdfimagem em svg.

Agora precisamos de alguma configuração tex4htpara poder incluir svgimagens, arquivo 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}%  
         }  

agora você pode incluir myexternalizeo pacote no seu documento:

\documentclass{article}
\usepackage{lmodern}
\usepackage{pgfplots}
\usepackage{lipsum}
\pgfplotsset{compat=1.9}
\usepackage{myexternalize}
....

e então compile o documento com

pdflatex -shell-escape documentname

para obter svgarquivos. -shell-escapeopção é importante, caso contrário a conversão não funcionará! agora você pode compilar o arquivo para html:

htlatex documentname

você pode ver o resultadoaqui

informação relacionada