PGFplot in HTML konvertieren?

PGFplot in HTML konvertieren?

Ich möchte einen einfachen LaTeX-Code konvertieren, der im Wesentlichen aus Text mit einigen zentrierten Grafiken dazwischen besteht. Dies ist eine Dummy-Version des Codes, den ich in HTML konvertieren möchte:

\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}

Ich habe es mit versucht latex4ht, das ich in der Vergangenheit verwendet habe, aber es scheint, dass es mit dem PGFplot-Code nicht funktioniert.

Meine Frage ist also: Wie konvertiert man PGFplot-Diagramme in HTML? Vielen Dank für Ihre Hilfe

Antwort1

Es gibt viele Möglichkeiten, HTML- und SVG-Grafiken mit tikzund zu erhalten tex4ht. Meiner Meinung nach ist die beste Möglichkeit, tikz externalizationdie Konvertierung mithilfe einer Bibliothek durchzuführen. Mit dieser Bibliothek pdfwird für jedes Bild ein eigenständiges Bild erstellt tikz, und ein externer Befehl kann dann verwendet werden, um dieses pdfBild in zu konvertieren svg. Ich hatte großen Erfolg bei inkscapedieser Aufgabe, mit anderen Anwendungen imagemagickhabe ich beispielsweise einige Probleme festgestellt und das Ergebnis war nicht korrekt. Sie müssen es also installieren, inkscapedamit es funktioniert.

Erstellen Sie zunächst ein Paket, das externalizationfür uns Folgendes festlegt 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
}

Dieses Paket erstellt den neuen tikzStil , tex4ht incder mit verwendet wird tex4ht. Mit pdflatexwird pdfdie Datei exportiert und inscapeim Befehlszeilenmodus aufgerufen, um dieses pdfBild in zu konvertieren svg.

Nun benötigen wir noch einige Konfigurationen , um Bilder und Dateien tex4hteinbinden zu können :svgmyexternalize.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}%  
         }  

Jetzt können Sie myexternalizePakete in Ihr Dokument einschließen:

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

und kompilieren Sie dann das Dokument mit

pdflatex -shell-escape documentname

um Dateien abzurufen svg. -shell-escapeDiese Option ist wichtig, sonst funktioniert die Konvertierung nicht! Jetzt können Sie die Datei in HTML kompilieren:

htlatex documentname

Sie können das Ergebnis sehenHier

verwandte Informationen