Soit une figure créée avec TikZ : Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper,12pt, %DIV50 ]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{graphicx} \usepackage[french]{babel} \usepackage[]{tikz} \usetikzlibrary{shapes,positioning} \begin{document} \begin{tikzpicture} \begin{scope}[local bounding box=foo] \node (A) at (1,0) {$A$}; \node (B) at (5,0) {$B$}; \node (C) at (10,0) {$C$}; \end{scope} \draw (foo.south west) rectangle (foo.north east); \node[below of = A,node distance=3cm] (A1) {A1}; \node[below of = B,node distance=3cm] (B1) {B1}; \node[below of = C,node distance=3cm] (C1) {C1}; \draw[->] (A.south) -- (A1); \draw[->] (B.south) -- (B1); \draw[->] (C.south) -- (C1); \end{tikzpicture} \end{document} Comment la dupliquer en modifiant sa position, son orientation, sa taille, sa couleur etc ... ? Voici un essai qui oblige à répéter le code de la figure, ce qui serait lourd pour une duplication : Ouvrir dans l'éditeur Overleaf
\documentclass{article} \usepackage{tikz} \usepackage{lipsum} \tikzset{quadri/.style={rectangle,draw,text=blue}} \begin{document} bonjour \begin{tikzpicture}[remember picture,overlay] \node[shift={(current page.south west)},shift={(10,10)},scale=1,rotate=45] {\begin{tikzpicture}[remember picture,overlay] \begin{tikzpicture} \begin{scope}[local bounding box=foo] \node (A) at (1,0) {$A$}; \node (B) at (5,0) {$B$}; \node (C) at (10,0) {$C$}; \end{scope} \draw (foo.south west) rectangle (foo.north east); \node[below of = A,node distance=3cm] (A1) {A1}; \node[below of = B,node distance=3cm] (B1) {B1}; \node[below of = C,node distance=3cm] (C1) {C1}; \draw[->] (A.south) -- (A1); \draw[->] (B.south) -- (B1); \draw[->] (C.south) -- (C1); \end{tikzpicture} \end{tikzpicture} }; \end{tikzpicture} \end{document}
Affichage de 5 parmi 8
Afficher 3 commentaire(s) en plus
|
Essayez d'éviter un Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper,12pt, %DIV50 ]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{graphicx} \usepackage[french]{babel} \usepackage[]{tikz} \usetikzlibrary{shapes,positioning} \begin{document} \begin{tikzpicture} \begin{scope}[transform canvas={rotate=20,scale=1.5},yshift=-170,xshift=-100] \node (A) at (1,0) {$A$}; \node (B) at (5.5,0) {$B$}; \node (C) at (10,0) {$C$}; \draw (A.south west) rectangle (C.north east); \node[below of = A,node distance=3cm] (A1) {A1}; \node[below of = B,node distance=3cm] (B1) {B1}; \node[below of = C,node distance=3cm] (C1) {C1}; \draw[->] (A.south) -- (A1); \draw[->] (B.south) -- (B1); \draw[->] (C.south) -- (C1); \end{scope} \end{tikzpicture} \end{document} La même chose plusieurs fois : Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper,12pt, %DIV50 ]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{graphicx} \usepackage[french]{babel} \usepackage[]{tikz} \usetikzlibrary{shapes,positioning} \newcommand{\foo}{% \node (A) at (1,0) {$A$}; \node (B) at (5.5,0) {$B$}; \node (C) at (10,0) {$C$}; \draw (A.south west) rectangle (C.north east); \node[below of = A,node distance=3cm] (A1) {A1}; \node[below of = B,node distance=3cm] (B1) {B1}; \node[below of = C,node distance=3cm] (C1) {C1}; \draw[->] (A.south) -- (A1); \draw[->] (B.south) -- (B1); \draw[->] (C.south) -- (C1); } \begin{document} \begin{tikzpicture} \begin{scope}[transform canvas={rotate=20,scale=1.5},yshift=-170,xshift=-100] \foo \end{scope} \begin{scope}[transform canvas={rotate=-20,scale=1.5},yshift=-100,xshift=-20,red] \foo \end{scope} \end{tikzpicture} \end{document} |
Pour ce genre de chose, j'aime bien utiliser Ouvrir dans l'éditeur Overleaf
\documentclass{article} \usepackage[]{tikz} \usetikzlibrary{shapes,positioning} \begin{document} \begin{tikzpicture} \foreach \r/\y/\x/\c in {20/-170/-100/black, -20/-100/-20 /red} {\begin{scope}[transform canvas={rotate=\r,scale=1.5},yshift=\y,xshift=\x,\c] \node (A) at (1,0) {$A$}; \node (B) at (5.5,0) {$B$}; \node (C) at (10,0) {$C$}; \draw (A.south west) rectangle (C.north east); \node[below of = A,node distance=3cm] (A1) {A1}; \node[below of = B,node distance=3cm] (B1) {B1}; \node[below of = C,node distance=3cm] (C1) {C1}; \draw[->] (A.south) -- (A1); \draw[->] (B.south) -- (B1); \draw[->] (C.south) -- (C1); \end{scope}} \end{tikzpicture} \end{document} Publiée 26 Nov '19, 12:45 nmarkey |
Que signifie « foo » ? je le vois souvent utilisé comme nom de variable dans les codes.
En gros, l'équivalent anglophone de « truc, machin, bidule » est, en informatique du moins, « foo, bar, baz ».
@samcarter Si je comprends bien vous donnez le nom « foo » au contour (invisible) du scope (de la sous-figure avec les 3 lettres), et juste après vous tracez ce contour en utilisant son nom et l'opération de chemin rectangle
\draw (foo.south west) rectangle (foo.north east);
Peut-on nommer la sous-figure entière (tout les tracés du scope) pour la redessiner avec son nom?
On trouvera une explication officielle du terme foo ici. Elle est en anglais.
@idefix : non, ce n'est pas possible. Mais vous pouvez créer une
\newcommand
ou utiliser un\pic
(pgfmanual, chapitre 18) ou une\savebox
...Bonjour,
Je rebondis sur ce fil car il est très proche de ce que je recherche. J'ai un code tikz très lourd (que je ne reproduis pas ici : plus de 3000 lignes) que je veux reproduire à plusieurs reprises sur un même document latex ; malheureusement, le code est trop lourd et la sentence tombe, irrévocable : ! TeX capacity exceeded, sorry [main memory size=5000000].
Est-il possible de dupliquer une figure via tikz (ou autre !) à l'intérieur d'un même document sans relancer toute la machine à calculer ?
Merci de poser une nouvelle question.
La nouvelle question de @gnut est ici.