86 votes

Est-il possible d'extraire les diagrammes TikZ sous forme de fichiers image ?

J'utilise TikZ pour dessiner des diagrammes en LaTeX que je veux ensuite isoler sous forme de fichiers image pour les mettre en ligne. J'utilise TeXnicCenter pour éditer les sources.

Existe-t-il un moyen d'extraire ces diagrammes directement sans devoir les extraire du fichier PDF fini ?

1 votes

J'utilise un programme appelé CirKuit qui sert d'éditeur TikZ et vous permet d'enregistrer le diagramme dans un des différents formats d'image. Je pense que ce qu'il fait en coulisse, cependant, est d'utiliser latex et dvitopng ou quelque chose comme ça. Je posterai une réponse si je peux trouver les détails avant que quelqu'un d'autre ne poste quelque chose.

1 votes

Voulez-vous isoler automatiquement les diagrammes du texte, ou préférez-vous couper et coller le code TikZ ?

2 votes

Voir aussi Compiler un document LaTeX en une image PNG aussi courte que possible et les autres questions qui y sont liées.

70voto

Martin Scharrer Points 822

Je recommande l'approche suivante. Placez l'image TikZ en question dans un fichier séparé et utilisez la fonction standalone pour la compiler de manière autonome. Elle utilise le preview paquet mentionné dans les autres réponses. Pour inclure l'image dans le document principal, chargez le fichier standalone paquet d'abord et ensuite utiliser le \input sur le fichier image.

Cela vous permettra d'obtenir un seul PDF de l'image TikZ sans marges. Vous pouvez ensuite utiliser, par exemple, un convertisseur PDF vers PNG pour obtenir un PNG (recommandé pour la publication de dessins sur le web). Le format SVG serait plus agréable, car c'est un format vectoriel, mais tous les navigateurs ne sont pas forcément capables de l'afficher.

Voici quelques exemples de code. Le fichier image du TikZ (par exemple, pic.tex ):

\documentclass{standalone}
\usepackage{tikz}
% all other packages and stuff you need for the picture

\begin{document}
\begin{tikzpicture}
% your picture code
\end{tikzpicture}
\end{document}

Le document principal :

\documentclass{article} % or whatever class you are using
\usepackage{standalone}
\usepackage{tikz}
% All other packages required
\begin{document}
% Text text text
% somewhere where you want the tikz picture
\input{pic}
% Text text text
\end{document}

Compilez ensuite l'image et convertissez-la, par exemple, avec ImageMagick :

pdflatex pic
convert -density 600x600 pic.pdf -quality 90 -resize 800x600 pic.png

ou essayez le SVG :

convert pic.pdf pic.svg

0 votes

J'ai trouvé pdf2svg est un outil plus fiable pour la conversion de PDF en SVG que imagemagick.

1 votes

@Glutanimate : En attendant, j'ai commencé à utiliser inkscape pour cela.

0 votes

@MartinScharrer J'ai pu intégrer un fichier pdf dans le document parent, sans le convertir en png ou svg : \includegraphics {nom du fichier.pdf}

32voto

David Z Points 49476

Suite à mon commentaire : Cirkuit convertit les diagrammes TikZ en images en exécutant quelque chose comme la séquence de commandes suivante :

pdflatex img.tex
pdftops -eps img.pdf
convert -density 300 img.eps img.png

Ici img.tex serait un fichier LaTeX qui suit ce modèle :

\documentclass{article}
\usepackage{tikz,amsmath,siunitx}
\usetikzlibrary{arrows,snakes,backgrounds,patterns,matrix,shapes,fit,calc,shadows,plotmarks}
\usepackage[graphics,tightpage,active]{preview}
\PreviewEnvironment{tikzpicture}
\PreviewEnvironment{equation}
\PreviewEnvironment{equation*}
\newlength{\imagewidth}
\newlength{\imagescale}
\pagestyle{empty}
\thispagestyle{empty}
\begin{document}
\begin{tikzpicture}
    % (your TikZ code goes here)
\end{tikzpicture}
\end{document}

Si vous êtes capable d'utiliser Cirkuit ou un éditeur similaire, ou d'écrire un script pour vous-même afin de placer votre diagramme dans ce modèle et d'exécuter les outils appropriés, vous aurez un moyen rapide de convertir le code TikZ en une image PNG.

Pour répondre plus directement à votre question... non, je ne connais pas de moyen de convertir un diagramme TikZ directement en PNG sans passer par un fichier PDF (ou au moins DVI) à un moment donné.

0 votes

Merci ! Tout ce que je voulais éviter, c'était d'avoir à isoler manuellement les diagrammes, donc cela devrait fonctionner correctement.

12voto

Joseph Wright Points 1444

Voir la section "Externalizing Graphics" du manuel TikZ. Cela vous permet de faire des versions EPS ou PDF de vos graphiques. J'utilise des fichiers EPS, je les convertis en TIFF et je peux ensuite les placer où je veux.

0 votes

Depuis 2013, je pense que c'est probablement la meilleure approche.

0 votes

En 2017, il s'agit de la section 50.4 (page 607) du pgfmanuel. Il semble que nous ne pouvons pas donner le lien vers une page web pour la section (c'est seulement en pdf) :(

0 votes

Théoriquement, cela fonctionne bien. En pratique, après avoir utilisé tikzexternalize pendant un certain temps, je suis revenu à l'approche autonome, car il semble plus facile de la faire fonctionner. J'ai eu pas mal d'ennuis avec tikzexternalize.

7voto

Habi Points 928

J'utilise généralement quelque chose de ce genre :

\documentclass{article}
\usepackage[pdftex,active,tightpage]{preview}
%\setlength\PreviewBorder{2mm} % use to add a border around the image
\usepackage{tikz}
\begin{document}
\begin{preview}
\begin{tikzpicture}
    \shade (0,0) circle(2); % background
    \draw (0,0) circle(2);  % rim
    \draw (.75,1) circle(.5);   % right eye
    \fill (.66,.9) circle(.25); % right pupil
    \draw (-.75,1) circle(.5);  % left eye
    \fill (-.66,.9) circle(.25);% left pupil
    \fill (.2,0) circle (.1);   % right nostril
    \fill (-.2,0) circle (.1);  % left nostril
    \draw (-135:1) arc (-135:-45:1) -- cycle; % mouth
  \end{tikzpicture}
\end{preview}
\end{document}

Le fichier pdf généré contient l'image autonome du TikZ. Pour le convertir en tout autre format de fichier, il suffit de l'ouvrir avec Gimp.

2voto

Jakob Points 1315

Je l'utilise avec la règle Makefile pour créer des fichiers PNG et des vignettes à partir de fichiers .tex qui contiennent chacun une tikzpicture. Le fonctionnement est similaire à la création d'images à TeXample.net :

%.png: %.tex
        @sed 's/^\\\\begin{document}/\\
\\\\pgfrealjobname{dummy}\\\\begin{document}\\\\beginpgfgraphicnamed{example}/' $< | \\
sed 's/^\\\\end{document}/\\\\endpgfgraphicnamed\\\\end{document}/' > example.tex ; \\
        pdflatex --jobname=example example.tex ; \\
        gs -dNOPAUSE -r120 -dGraphicsAlphaBits=4 -dTextAlphaBits=4 -sDEVICE=png16m \\
-sOutputFile=$@ -dBATCH example.pdf ; \\
        convert -thumbnail 200 $@ $(addsuffix .thumb.png, $(basename $@)) ; \\
        mv example.pdf $(addsuffix .pdf, $(basename $<)) ; rm example.\*

ghostview ( gs ) peut probablement être remplacé par convert et vous pouvez remplacer example avec un autre préfixe de tempfile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X