Afficher la pageAnciennes révisionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== TikZ ====== * [[http://math.et.info.free.fr/TikZ/bdd/TikZ-Impatient.pdf]] * [[https://pgf-tikz.github.io/pgf/pgfmanual.pdf]] * [[http://pgoutet.free.fr/latex/seance_10/seance_10.pdf]] * [[http://tug.ctan.org/info/visualtikz/VisualTikZ-fr.pdf]] * [[https://stuff.mit.edu/afs/athena/contrib/tex-contrib/beamer/pgf-1.01/doc/generic/pgf/version-for-tex4ht/en/pgfmanualse9.html]] ==== Problème avec Babel ==== <code latex> \documentclass[12pt]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{tikz} \usepackage[francais]{babel} \usetikzlibrary{babel} % ... \begin{document} \shorthandoff{:}% \usetikzlibrary{arrows.meta} \shorthandon{:}% % ... </code> ==== Exemples ==== {{ :latex:tikz-cluster-node.png?400|}} <code latex> \usepackage{tikz} \usetikzlibrary{shapes} % for ellipses, after \begin{document} \begin{figure}[ht] \centering \begin{tikzpicture}[thick,scale=0.8, every node/.style={scale=0.8}] \node[draw,ellipse](0) at (0,0) {CPU}; \node[draw,ellipse](1) at (0,-2) {CPU}; \node[draw,ellipse](2) at (3,0) {CPU}; \node[draw,ellipse](3) at (3,-2) {CPU}; \draw (-2,1)-- (5,1); \draw (-2,1)-- (-2,-3); \draw (-2,-3)-- (5,-3); \draw (5,1)-- (5,-3); \node[draw,ellipse](4) at (10,0) {*PU}; \node[draw](5) at (13,0) {Mémoire}; \draw (8,1)-- (15,1); \draw (8,1)-- (8,-1); \draw (15,1)-- (15,-1); \draw (8,-1)-- (15,-1); \node[draw,ellipse](6) at (10,-3) {*PU}; \node[draw](7) at (13,-3) {Mémoire}; \draw (8,-2)-- (15,-2); \draw (8,-2)-- (8,-4); \draw (15,-2)-- (15,-4); \draw (8,-4)-- (15,-4); \node[draw](8) at (3,-4) {Mémoire}; \node[draw](9) at (10,-5) {Réseau}; \draw (6.5,1)-- (6.5,-6); \draw (5,-1)-- (6.5,-1); \draw (6.5,0)-- (8,0); \draw (6.5,-3)-- (8,-3); \draw (8)-- (6.5,-4); \draw (6.5,-5)-- (9); \end{tikzpicture} \caption{Éléments constituant un nœud de supercalculateur} \end{figure} </code> {{ :latex:tikz-graph.png|}} <code latex> \usepackage{tikz} \usetikzlibrary{arrows.meta} % for arrow shapes, after \begin{document} \begin{figure}[ht] \centering \begin{tikzpicture} \node[draw,circle](01) at (-2,0) {0}; \node[draw,circle](1) at (0,-2) {1}; \node[draw,circle,dashed](02) at (-2,-2) {0}; \node[draw,circle](2) at (0,-4) {2}; \node[draw,circle,dashed](03) at (-2,-4) {0}; \node[draw,circle](3) at (0,-6) {3}; \node[draw,circle,dashed](04) at (-2,-6) {0}; \node[draw,circle](4) at (0,-8) {4}; \node[draw,circle,dashed](05) at (-2,-8) {0}; \node[draw,circle](5) at (0,-10) {5}; \node[draw,circle,dashed](06) at (-2,-10) {0}; \node[draw,circle](6) at (0,-12) {6}; % or, simple arrow: \draw[->,>=latex] (a) -- (b) \draw[-{Latex[length=3mm]}] (-4,0) -- (-4,-12) node[above,midway,rotate=90]{Temps}; \draw[-{Latex[length=3mm]}] (01) -- (1); \draw[-{Latex[length=3mm]},dashed] (01) -- (02); \draw[-{Latex[length=3mm]}] (02) -- (2); \draw[-{Latex[length=3mm]},dashed] (02) -- (03); \draw[-{Latex[length=3mm]}] (03) -- (3); \draw[-{Latex[length=3mm]},dashed] (03) -- (04); \draw[-{Latex[length=3mm]}] (04) -- (4); \draw[-{Latex[length=3mm]},dashed] (04) -- (05); \draw[-{Latex[length=3mm]}] (05) -- (5); \draw[-{Latex[length=3mm]},dashed] (05) -- (06); \draw[-{Latex[length=3mm]}] (06) -- (6); \end{tikzpicture} \end{figure} </code> === Mettre du texte au-dessus d'un rectangle === [[https://tex.stackexchange.com/questions/13401/labeling-rectangle-above-rectangle|Source]] <code latex> \draw[orange,ultra thick,rounded corners] (0.316,0.782) rectangle (0.402,0.807); \path (0.316,0.807) -- (0.402,0.807) node[midway,above,orange] {\textbf{A}}; % reprend les coordonnées du côté haut du rectangle </code> === Mettre du texte au centre d'un rectangle === [[https://tex.stackexchange.com/questions/448164/add-text-within-tikz-rectangle-node|Source]] <code latex> \draw[draw=none,fill=red!40!white,opacity=0.9] (3, 0) rectangle (9.2, 7.5) node[midway,align=center] {foo}; </code> === Rectangle arrondi sans bordure, pivoté, avec texte === {{ :latex:capture_d_ecran_du_2022-02-08_18-01-18.png|}} * [[https://tex.stackexchange.com/questions/82530/how-to-draw-a-filled-rectangle-without-a-border-using-tikz]] * [[https://tex.stackexchange.com/questions/96340/how-to-place-a-textnode-at-the-center-of-a-drawn-rectangle/348951]] * [[https://tex.stackexchange.com/questions/115554/how-to-rotate-a-tikz-label]] * [[https://tex.stackexchange.com/questions/45848/rotate-node-text-and-use-relative-positioning-in-tikz]] <code latex> \path[rounded corners,fill=compColor] (x1,y1) rectangle (x2,y2) node[pos=.5,rotate=90] {$n$ computing Threads}; </code> === Faire une étoile avec un éclair === {{ :latex:capture_d_ecran_du_2022-02-08_17-36-48.png|}} [[https://tex.stackexchange.com/questions/255916/tikz-hand-drawn-explosion]] <code latex> \node[starburst,starburst point height=8pt,fill=red,opacity=0.5,text opacity=1,scale=0.8] at (2, 2) {\huge\Lightning}; </code> === Chemin avec des flèches === {{ :latex:capture_d_ecran_du_2022-02-08_18-18-28.png|}} * [[https://latexdraw.com/how-to-draw-an-arrow-in-the-middle-of-a-line-in-tikz/#t-1607758527668]] * [[https://tex.stackexchange.com/questions/3161/tikz-how-to-draw-an-arrow-in-the-middle-of-the-line]] * https://www.latex4technics.com/?note=khn6hz <code latex> \newcommand{\arrowOnLine}[1]{node[sloped,pos=#1,allow upside down]{\tikz \draw[->,line width=2pt] (-1pt,0) -- (1pt,0);}} \draw[Round Cap-,line width=2pt,rounded corners,color=commColor] (3.5,0.1) -- (3.5,1.4) \arrowOnLine{0.4} -- (1.4,1.4) \arrowOnLine{0.7} -- (1.4,5) \arrowOnLine{0.5} -- (6.6,5) \arrowOnLine{0.15} \arrowOnLine{0.9} -- (6.6,0.4) \arrowOnLine{0.5} -- (6.2,0) \arrowOnLine{1}; </code> === Nouvelle ligne dans du texte dans un nœud === L'attribut ''align'' permet de faire fonctionner ''\\'' ([[https://tex.stackexchange.com/questions/24372/how-to-add-newline-within-node-using-tikz|source]]). <code latex> \node[align=center] at (0,0) {Nouvelle\\ligne}; </code> === Faire une grosse flèche === [[https://tex.stackexchange.com/questions/578524/tikz-how-to-draw-a-fat-arrow-specifying-border-and-fill-colour|Source]] <code latex> \usetikzlibrary{shapes.arrows} \node[ single arrow, draw=black, fill=gray, minimum width=7pt, single arrow head extend=3pt, minimum height=7mm, rotate=-90 ] at (5, -4.75) {}; </code> ==== Faire un schéma sur une image ==== [[https://tex.stackexchange.com/questions/9559/drawing-on-an-image-with-tikz|Source]] <code latex> \begin{tikzpicture} \node[anchor=south west,inner sep=0] (image) at (0,0) {\includegraphics[width=0.9\textwidth]{some_image.jpg}}; \begin{scope}[x={(image.south east)},y={(image.north west)}] % Ces trois commandes suivantes permettent d'afficher une grille qui aide à visualiser les coordonnées des éléments à dessiner: \draw[help lines,xstep=.1,ystep=.1] (0,0) grid (1,1); \foreach \x in {0,1,...,9} { \node [anchor=north] at (\x/10,0) {0.\x}; } \foreach \y in {0,1,...,9} { \node [anchor=east] at (0,\y/10) {0.\y}; } \end{scope} \end{tikzpicture} </code> ==== Coordonnées ==== === Définir des coordonnées === [[https://tex.stackexchange.com/questions/246856/how-to-label-the-nodes-coordinates-in-tikz-picture|Source]] <code latex> \coordinate (B) at (210:2); </code> === Changer l'origine des coordonnées dans le schéma === Pour faire quelque chose de répétitif sans avoir à changer toutes les coordonnées, par exemple ([[https://tex.stackexchange.com/questions/353855/shifting-origin-0-0-to-new-coordinates-in-tikz|source]]): <code latex> \begin{tikzpicture} \draw [->, very thick] (0, 0) -- (0,-1); \tikzset{shift={(0,-1)}} \draw [->, very thick] (0, 0) -- (0,-1); \tikzset{shift={(0,-1)}} \draw [->, very thick] (0, 0) -- (0,-1); \end{tikzpicture} </code> === Orienter l'axe des ordonnées de haut en bas === [[https://tex.stackexchange.com/questions/84715/tikz-change-coordinate-system-so-y-points-downwards|Source]] <code latex> \begin{tikzpicture}[yscale=-1] % 0 % +---> x % | % | % v % y \end{tikzpicture} </code> ==== Tailles ==== === Changer la taille d'une figure Tikz === Le fichier doit avoir l'extension ''.tikz'' ([[https://tex.stackexchange.com/questions/75449/specifying-the-width-and-height-of-a-tikzpicture/320521|source]]) : <code latex> \usepackage{tikzscale} \includegraphics[width=\linewidth]{fichier} </code> <code latex fichier.tikz> \begin{tikzpicture} % ... \end{tikzpicture} </code> Si un message dit que ''fichier'' n'est pas trouvé, il est possible d'utiliser ''resizebox'' : <code latex> \resizebox{\linewidth}{!}{\includegraphics[width=\linewidth]{fichier}} </code> === Changer la taille d'un node === <code latex> \draw node[fill,circle,scale=0.3]{} (0,0); </code> === Fixer la taille d'un cercle === [[https://tex.stackexchange.com/questions/228364/is-it-possible-to-set-a-maximum-node-width-in-tikz|Source]] <code latex> \node[draw,circle,text width=7mm,inner sep=0pt,align=center](11) at (3,0) {11}; </code> Utiliser le même ''text width=7mm,inner sep=0pt'' pour tous les cercles. === Réduire la taille de tous les textes === [[https://tex.stackexchange.com/questions/107057/adjusting-font-size-with-tikz-picture|Source]] <code latex> \begin{tikzpicture}[every node/.style={scale=0.9}] % ... \end{tikzpicture} </code> ==== Générer un PDF à partir de seulement l'image Tikz ==== <code latex> \documentclass{standalone} \usepackage{tikz} \usetikzlibrary{calc,arrows,shapes,patterns,snakes,plotmarks,arrows.meta} \begin{document} \begin{tikzpicture} % \draw ... \end{tikzpicture} \end{document} </code> === Convertir une image Tikz en SVG === Après avoir un PDF contenant uniquement l'image Tikz : <code bash> pdftocairo -svg test.pdf test.svg </code> ''pdftocairo'' est dans le paquet Debian ''poppler-utils''. latex/tikz.txt Dernière modification : 2024/12/10 17:33de phsw