Je continue mes efforts pour réaliser des diagrammes.

J'ai trouvé ceci, qui me convient assez. Je tente de le modifier pour le faire correspondre à mes besoins.

J'ai réussi à maîtriser le positionnement et la couleur des nodes ainsi que les dimensions de la boîte qui les contient. Mais le texte n'est pas affiché !

Comment faire pour qu'il apparaisse ?

Hélas, ce code TikZ fait référence à la librairie positioning-plus qui n'est plus vraiment maintenue. Et je ne comprends rien au fichier tikzlibrarypositioning-plus.code.tex : la compréhension de ce code est loin au-delà de mes modestes connaissances... mais j'ai pourtant besoin de ce type de diagrammes !

Ouvrir dans l'éditeur Overleaf
\documentclass[tikz, border = 10pt]{standalone}
\usetikzlibrary{shapes.geometric, backgrounds,
  positioning-plus, node-families, calc}
\tikzset{
  basic box/.style = {
    shape = rectangle,
    align = center,
    draw  = #1,
    fill  = #1!25,
    rounded corners},
  header node/.style = {
    Minimum Width = header nodes,
    font          = \strut\Large\ttfamily,
    text depth    = +0pt,
    fill          = white,
    draw},
  header/.style = {%
    inner ysep = +1.5em,
    append after command = {
      \pgfextra{\let\TikZlastnode\tikzlastnode}
      node [header node] (header-\TikZlastnode) at (\TikZlastnode.north) {#1}
      node [span = (\TikZlastnode)(header-\TikZlastnode)]
        at (fit bounding box) (h-\TikZlastnode) {}
    }
  },
  hv/.style = {to path = {-|(\tikztotarget)\tikztonodes}},
  vh/.style = {to path = {|-(\tikztotarget)\tikztonodes}},
  fat blue line/.style = {ultra thick, blue}
}
\begin{document}
\begin{tikzpicture}[node distance = 1.2cm, thick, nodes = {align = center},
    >=latex]
  \node[Minimum Width = loop, shape = rectangle, rounded corners, fill = red] (pic)
    {Pictures} ;
  \node[Minimum Width = loop, shape = rectangle, rounded corners, fill = yellow, below = of pic] (data)
    {Data Center} ;
  \begin{scope}[on background layer]
    \node[fit = (pic)(data), basic box = blue,
      header = ahem] (test) {ahem};
  \end{scope}
  \node[left = of test, basic box = green, header = header-text-2]
    (cs) {Text and text and text and text\\
              and text\\and text again};
\end{tikzpicture}
\end{document}

Posée 16 Fév '21, 08:35

Pathe's gravatar image

Pathe ♦♦
7.5k42204251
Taux d'acceptation : 55%

Modifiée 16 Fév '21, 08:45

2

Personnellement, pour ce type de figure j'utiliserai le paquetage tcolorbox (basé sur TikZ) qui est à la fois très puisssant et très souple et offre donc une foultitude de personnalisation pour des boîtes comme celles recherchées.

(01 Mar '21, 18:50) DRI DRI's gravatar image

Avec text=black :

Ouvrir dans l'éditeur Overleaf
\documentclass[tikz, border = 10pt]{standalone}
\usetikzlibrary{shapes.geometric, backgrounds,
  positioning-plus, node-families, calc}
\tikzset{
  basic box/.style = {
    shape = rectangle,
    align = center,
    draw  = #1,
    fill  = #1!25,
    rounded corners,
    text=black},
  header node/.style = {
    Minimum Width = header nodes,
    font          = \strut\Large\ttfamily,
    text depth    = +0pt,
    fill          = white,
    draw,
    text=black},
  header/.style = {%
    inner ysep = +1.5em,
    append after command = {
      \pgfextra{\let\TikZlastnode\tikzlastnode}
      node [header node] (header-\TikZlastnode) at (\TikZlastnode.north) {#1}
      node [span = (\TikZlastnode)(header-\TikZlastnode)]
        at (fit bounding box) (h-\TikZlastnode) {}
    },
  },
  hv/.style = {to path = {-|(\tikztotarget)\tikztonodes}},
  vh/.style = {to path = {|-(\tikztotarget)\tikztonodes}},
  fat blue line/.style = {ultra thick, blue}
}
\begin{document}
\begin{tikzpicture}[node distance = 1.2cm, thick, nodes = {align = center},
    >=latex]
  \node[Minimum Width = loop, shape = rectangle, rounded corners, fill = red,text=black] (pic)
    {Pictures} ;
  \node[Minimum Width = loop, shape = rectangle, rounded corners, fill = yellow, below = of pic,text=black] (data)
    {Data Center} ;
  \begin{scope}[on background layer]
    \node[fit = (pic)(data), basic box = blue,
      header = ahem] (test) {ahem};
  \end{scope}
  \node[left = of test, basic box = green, header = header-text-2]
    (cs) {Text and text and text and text\\
              and text\\and text again};
\end{tikzpicture}
\end{document}

alt text

Lien permanent

Publiée 16 Fév '21, 10:04

samcarter's gravatar image

samcarter
8.4k2817
Taux d'acceptation : 56%

Modifiée 16 Fév '21, 10:05

@pathe. samcaarter a dégainé plus vite que moi…

(16 Fév '21, 11:01) fred02840 fred02840's gravatar image
(16 Fév '21, 12:18) samcarter samcarter'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.