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}
  • Ce serait bien de pouvoir nommer la figure, pour avoir juste à placer le nom de la figure, pas son code ;
  • je situe mal le centre de la figure qui ne me semble pas placé à (10,10) à partir du bas de la page.

Posée 09 Jul, 05:52

idefix's gravatar image

idefix
575413
Taux d'acceptation : 10%

Modifiée 10 Jul, 18:31

Pathe's gravatar image

Pathe ♦♦
5.4k158157

Que signifie « foo » ? je le vois souvent utilisé comme nom de variable dans les codes.

(10 Jul, 00:55) idefix idefix's gravatar image
3

En gros, l'équivalent anglophone de « truc, machin, bidule » est, en informatique du moins, « foo, bar, baz ».

(10 Jul, 01:24) denis ♦♦ denis's gravatar image

@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?

(10 Jul, 17:05) idefix idefix's gravatar image
2

On trouvera une explication officielle du terme foo ici. Elle est en anglais.

(10 Jul, 18:42) Pathe ♦♦ Pathe's gravatar image
1

@idfix no, c'est ne pas possible. Mais vous pouvez crée un \newcommand ou utiliser un \pic (pgfmanual, chapitre 18) ou un \savebox ...

(10 Jul, 19:46) samcarter samcarter's gravatar image

Essayez d'éviter un tikzpicture dans un autre tikzpicture. Au lieue on peut faire quelque chose comme ça :

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}

alt text

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}

alt text

Lien permanent

Publiée 09 Jul, 15:05

samcarter's gravatar image

samcarter
2.2k29
Taux d'acceptation : 44%

Modifiée 09 Jul, 20:07

Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.

Mots-clés de la question :

×60
×16
×1

Question posée : 09 Jul, 05:52

Question vue : 132 fois

Dernière mise à jour : 10 Jul, 19:46