PGF & Tikz

Rédigé par Bertrand Masson | Classé dans : LaTeX, PGF-Tikz

15
10 | 09

PGF & Tikz est un ensemble de commandes pour LaTeX permettant de faire des dessins vectoriels. Son avantage est d'être directement compilable par pdflatex. Je l'utilise pour faire des schémas explicatifs, des animations pour mes présentations avec beamer et surtout pour ajouter un côté "PAO" à LaTeX. Voici la première fiche consacré à PGF Tikz. Attention sous certain viewer des pages ne "sortent" pas bien notamment celles consacrées aux dégradés et une des premières pages avec une petite animation. Pour les apprécier il faut malheureusement utiliser acroread d'Adobe (ne frappez pas, je sais c'est le mal absolu, mais je ne vous oblige pas à l'utiliser, ces pages seront lisibles quand même, mais moche) : introtikz.pdf

Mots clés : Aucun

Commentaires

Le 04 février 2011 leglinel a dit :

#1

Bonjour Bertrand.

Merci pour ces fiches sur Latex qui sont bien faites et très utiles.

Une petite question : dans une des fiches sur tikz, tu as fais un accordéoniste, peux-tu me dire comment on peut faire des personnages avec ce package ?

Cordialement.

Le 04 février 2011 Bertrand Masson a dit :

#2

@leglinel :
Bonsoir,
Merci pour le compliment.
Comme je le dis à la fin de la fiche il y a un truc.
En réalité je fait ce type de dessin sous inkscape car pour ce type de dessin c'est quand même plus facile. Puis je les exporte sous TikZ grâce à l'extension
inkscape2tikz.
L'intérêt pour un dessin comme l'accordéoniste est faible car il est plus efficace de le sauvegarder au format pdf (toujours sous inkscape) puis de l'importer sous LaTex comme une image.
J'utilise cette méthode pour des dessins de plans ou des cartes géographiques, car cela me permet d'avoir dans mes dessins la même police que le reste de mon document avec la qualité typo de LaTeX.
Autre avantage si je dois juste modifier une légende je peux le faire directement sous LaTeX sans être obligé d'ouvrir inkscape.

Le 11 août 2011 Jen a dit :

#3

Bonjour,

J'ai une petite question par rapport aux figures tikz...
J'ai fait un schema blocs en tikz pour une présentation sur beamer... maintenant, je veux bien l'utiliser dans un document (article), si j'utilise la même source code, je me retrouve avec un schéma qui deviens n'importe quoi... les coordonnées sont différentes sur beamer que sur les autres types de document latex? je peux changer les coordonnées manuellement, mais est-ce qu'il existe une façon de le faire automatiquement? (parce que sinon il faut que j’aille une version du schéma pour chaque type de document !???? double colonne, etc. :s …)

Je vous remercie en avance pour votre aide,

Bien cordialement,
Jen

Ps: désolée pour mon français, n'est pas ma langue maternelle.

Le 27 août 2011 Bertrand Masson a dit :

#4

@Jen :
Désolé de vous répondre si tardivement, j'étais en vacances sans internet.
Pour vous aider il me faut un emc (exemple minimum complet) qui reproduise l'erreur, un truc du genre :

\documentclass[a4paper,11pt]{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
%la figure qui ne marche pas
\end{tikzpicture}
\end{document}

Bertrand

Le 21 mars 2012 Capello a dit :

#5

Bonjour,
J’ai lu avec intérêt le pdf. Une chose m’interpelle. À la page 18 il y a une flèche entre le mot « origine » et le point (0,0). Je me demande comment tu as fais.

Le 21 mars 2012 Bertrand Masson a dit :

#6

@Capello :
Bonsoir,

Ça dépend de ce que tu veux faire. Si tu veux relier par une flèche 2 mots d'un texte comme exposé dans l'avant dernière dia de la fiche "TIKZ et PGF et les nodes", il faut utiliser les fonctions remember picture et overlay voici le code de cette frame :

%%%%%%%%%%%%
%%% diapo 26 %%%
%%%%%%%%%%%%
\begin{frame}[fragile]
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, \tikz[baseline=(A.base),remember picture] \node[circle,red,draw] (A) {hello}; vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, \tikz[baseline=(B.base),remember picture] \node (B) {word}; ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci \tikz[baseline=(C.base),remember picture] \node[draw] (C) {hello}; risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orci
dignissim rutrum.
Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna, vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut massa. Cras nec \tikz[baseline=(D.base),remember picture] \node[draw] (D) {word}; ante. Pellentesque a nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam urna. Nulla ullamcorper vestibulum
turpis. Pellentesque cursus luctus mauris.
Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus viverra fermentum felis. Donec nonummy pellentesque ante.
Phasellus adipiscing semper elit. Proin fermentum massa ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna.
\begin{tikzpicture}[remember picture,overlay]
\draw[->,ultra thick,green,opacity=.5] (A) to[bend left] (B);
\draw[,ultra thick,blue,opacity=.3] (C) -| (D);
\end{tikzpicture}

\end{frame}

Les (A), (B),... sont des ancres qui permettent de relier des objets entre-eux. J'ai mis en gras le code tikz.

Par contre dans l'exemple que tu cites la méthode est plus empirique car je relie un mot d'un texte à une image, j'utilise dans ce cas que le mode overlay qui permet de ré-écrire sur une page. Voici un emc qui te montre comment je fais :

\documentclass[8pt]{beamer}
\usepackage{tikz}

\newcommand{\grille}{
\begin{tikzpicture}[overlay,remember picture]
\begin{scope}[shift={(current page.south west)}]
\draw[gray!50] (0,0) grid[step=2mm] (current page.north east);
\draw[red!50] (0,0) grid[step=1cm] (current page.north east);
\end{scope}
\end{tikzpicture}
}

\begin{document}
\begin{frame}
\grille
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. {\color{red}Integer} sapien est, iaculis in, pretium quis, ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.

\vspace{2cm}
\includegraphics[scale=0.5]{image}

\begin{tikzpicture}
\draw[overlay,->,draw=red,line width=1pt] (9.5,7) -- (3,2);
\filldraw[green] (0,0)circle(2pt);
\end{tikzpicture}
\end{frame}
\end{document}

Je crée une grille qui me permet de calculer les coordonnées sur la page (l'origine n'est pas exactement en bas à gauche à cause des marges de la diapo). Cette grille dessine un quadrillage tous les 1 cm avec une subdivision tous les 2mm. J'enlève cette grille pour la version finale quand j'ai placé tous mes objets.

N'oublie pas de remplacer image par une image à toi (pas trop grosse, celle que j'utilise fait 380x250 pixels) située dans le même répertoire que l'emc.

Attention les commandes overlay et remember nécessitent 2 compilations pour bien afficher les éléments. Tu peux placer \grille à la fin de ta diapo si tu veux qu'elle recouvre l'image.

J'espère que je suis assez clair, n'hésite pas à demander des précisions. La fiche qui explique en détail comment faire est toujours en cours de réalisation mais depuis quelques mois je suis assez débordé et je n'ai que très peu de temps à consacrer aux fiches.

Concernant ton précédent mail évoquant github, je ne vais pas répondre directement. En effet, j'ai décidé de transformer les fiches en un wiki donc les fiches ne seront plus "fermées" ce qui permettra à plus d'y contribuer (notamment pour la correction des fautes). Les sources seront directement accessible et comme il n'y aura pas de licence tout le monde pourra les re-pomper intégralement et librement. Il devrait voir le jour d'ici à ... quand il sera prêt, j'espère bientôt si mes activités me laisse un peu de temps pour les fiches.

Bertrand

Le 22 mars 2012 Capello a dit :

#7

Pour le wiki, c’est une bonne idée. Par contre, sans licence, c’est le droit d’auteur le plus strict qui s’applique par défaut. Mentionne domaine public ou une licence creative.
Pour la problématique de faire un dessin au dessus du texte, il y a un exemple sur :
http://www.texample.net/tikz/examples
http://www.texample.net/tikz/examples/beamer-arrows/
Le principe est de créer un « node » vide nommé dans le texte, puis de le relier à un autre en « overlay ». Je regarderai tes sources ce soir. Merci pour te disponibilité et ta réactivité.

Le 03 mai 2012 le brésilien a dit :

#8

Merci pour ces infos sur PGF je n'ai rien trouvé de comparable en Français ça m'a bien aidé pour mon mémoire.

Le 13 juin 2012 Guy a dit :

#9

Bonjour et bravo pour ce remarquable travail de titan.
Pourriez m'aider parceque je cherche depuis longtemps comment réaliser de jolis schémas blocs ( automatique )?
En vous remerciant d'avance.
Guy.

Le 13 juin 2012 Bertrand Masson a dit :

#10

@Guy :
Bonsoir Guy,
Étant archéologue j'ai peu l'occasion de faire des schémas blocs. Outre lire la doc PGF TIKZ page 60, une possibilité est d'utiliser le logiciel DIA (https://live.gnome.org/Dia) qui fonctionne sous linux et windows qui permet de faire de jolis schémas et de les exporter en LaTeX sous 3 formes différentes : en metapost en pstrick et en pgf-tikz. Les rares fois ou j'ai du réaliser des schémas c'est avec dia et export et tikz que je les ai fait.

Sinon pour les faire tikz tu trouveras des exemples ici : http://sciences-indus-cpge.papanicola.info/Schema-blocs-avec-PGF-TIKZ-sous

ou ici : http://www.texample.net/tikz/examples/schemabloc/

Bertrand

Fil des commentaires de cet article

Ecrire un commentaire




Quelle est la dernière lettre du mot qyom ? :