¿Convertir PGFplot a html?

¿Convertir PGFplot a html?

Me gustaría convertir una pieza simple de código LaTeX que es básicamente un texto con algunos gráficos centrados en el medio. Esta es una versión ficticia del código que me gustaría convertir a 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}

Me cansé de latex4ht, que usé en el pasado, pero parece que no funciona con el código PGFplot.

Entonces mi pregunta es: ¿cómo se convierten los gráficos PGFplot a html? Gracias por tu ayuda

Respuesta1

Hay muchas maneras de obtener gráficos html y svg con tikzy tex4ht. En mi opinión, la mejor manera es utilizar tikz externalizationla biblioteca para realizar la conversión. Con esta biblioteca, pdfse crea una imagen independiente para cada tikzimagen y luego se puede usar algún comando externo para convertir esta pdfimagen a svg. Tuve un gran éxito al inkscapehacer este trabajo, con otras aplicaciones, imagemagickencontré algunos problemas y el resultado no fue correcto. Por lo tanto, debe realizar la instalación inkscapepara que esto funcione.

externalizationPrimero, cree el paquete que nos configurará 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 paquete crea un nuevo tikzestilo, tex4ht incque se utilizará con tex4ht. Con pdflatex, pdfel archivo se exporta y inscapese llama en modo de línea de comando para convertir esta pdfimagen a svg.

Ahora necesitamos alguna configuración tex4htpara poder incluir svgimágenes, archivo 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}%  
         }  

ahora puedes incluir myexternalizeel paquete en tu documento:

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

y luego compilar el documento con

pdflatex -shell-escape documentname

para obtener svgarchivos. -shell-escapeLa opción es importante; de ​​lo contrario, la conversión no puede funcionar. ahora puedes compilar el archivo en html:

htlatex documentname

puedes ver el resultadoaquí

información relacionada