Comment réunir plusieurs éléments dessinés à l'aide de TikZ en une seule sous-figure, manipulable ensuite d'un bloc, et comment l'encadrer ensuite.

Exemple le \draw place 3 noeuds contenant les lettres A,B,C. Comment réunir ces trois noeuds en un seul qu'on puisse encadrer (et déplacer dans une autre figure) ?

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}

\begin{document}
\begin{tikzpicture}
\draw (1,0) node {$A$}  (5,0) node{$B$}  (10,0) node {$C$};
\end{tikzpicture}
\end{document}

Posée 08 Jul '19, 22:42

idefix's gravatar image

idefix
95594051
Taux d'acceptation : 14%

Modifiée 08 Jul '19, 22:50

Avec l'environnement scope ?

(08 Jul '19, 22:49) idefix idefix's gravatar image

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}

\begin{document}
\begin{tikzpicture}
\begin{scope}[local bounding box=foo]
\draw (1,0) node {$A$}  (5,0) node{$B$}  (10,0) node {$C$};
\end{scope}
\draw (foo.south west) rectangle (foo.north east);
\end{tikzpicture}
\end{document}

alt text


Utilisation pour plus d'éléments :

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}

\begin{document}
\begin{tikzpicture}
\begin{scope}[local bounding box=foo]
\draw (1,0) node {$A$}  (5,0) node{$B$}  (10,0) node {$C$};
\end{scope}
\draw (foo.south west) rectangle (foo.north east);

\node (zzz) at (8,-5) {D}; 
\draw[->] (foo.south) |- (zzz);
\end{tikzpicture}
\end{document}

alt text


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}

alt text

Lien permanent

Publiée 08 Jul '19, 23:14

samcarter's gravatar image

samcarter
8.4k2817
Taux d'acceptation : 56%

Modifiée 09 Jul '19, 00:17

Serait-t-il possible de faire partir trois flèches verticales du bord du cadre, centrées respectivement sur A, B et C et allant au dessus (ou en dessous) vers A1, B1, C1 ? A1 (1,3) B1 (5,3) et C1 (10,3) par exemple

(09 Jul '19, 00:06) idefix idefix's gravatar image
(09 Jul '19, 00:18) samcarter samcarter's gravatar image

@samcarter magique !

(09 Jul '19, 00:48) idefix idefix's gravatar image

@samcarter Et on pourrait toujours tourner l'ensemble, le positionner, changer sa taille ?

(09 Jul '19, 00:55) idefix idefix's gravatar image

Pour le placement, rotation mise à l'échelle :

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}

alt text

Lien permanent

Publiée 09 Jul '19, 05:35

idefix's gravatar image

idefix
95594051
Taux d'acceptation : 14%

Modifiée 09 Jul '19, 05:44

@samcarter J'ai l'impression que le placement est bizarre et que c'est maladroit.

  • Ou est le centre dans ce cas ?
  • Peut-on donner un nom à la sous-figure pour ne pas avoir à remettre le code à chaque fois ?
(09 Jul '19, 05:41) idefix idefix's gravatar image

@idefix Si vous avez une nouvelle question, vous devriez poser une nouvelle question

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

@idefix et ne jamais mettre un tikzpicture dans un autre tkzpicture

(09 Jul '19, 05:49) samcarter samcarter's gravatar image

@samcarter j'ai posé une nouvelle question qui reprends cette réponse Je sentais bien que ce n'était pas une bonne idée d'imbriquer les tikzpicture, mais sans pouvoir le justifier.

(09 Jul '19, 06:01) idefix idefix's gravatar image
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.