Seite 1 von 1

tikz - Angepasstes fit um nodes

Verfasst: Do 13. Sep 2018, 06:53
von Phil100%Vol
Hallo,

ich hoffe der Titel ist halbwegs verständlich, denn mir ist nichts passendes eingefallen. Daher weis ich auch nicht so recht wonach ich suchen soll bzgl. meines Problems:

Ich habe in einer tikzpicture-Umgebung mehrere Nodes, die ich grafisch zusammenfassen möchte. Bisher mache ich das immer mit fit. Das Problem ist nun, dass immer ein viereckiger Rahmen erzeugt wird.
\documentclass{article}
	
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{tikz}
\usetikzlibrary{
	backgrounds,	
	positioning,	
	fit,			
}

\begin{document}

\begin{tikzpicture}
\node[draw=black](1){1};
\node[draw=black,right=of 1](2){2};
\node[draw=black,right=of 2](3){3};
\node[draw=black,below=of 1](4){4};
\node[draw=black,right=of 4](5){5};
\node[draw=black,right=of 5](6){6};

\begin{scope}[on background layer]
	\node[rectangle,draw=blue,inner sep=0.5cm,fit=(1)(4)(5)](Fit1){};
\end{scope}

\end{tikzpicture}

\end{document}
Der blaue Rahmen soll nicht die -2- umfassen, sondern lediglich 1,4 & 5.
Gerne möchte ich einen selbst gezeichneten Rahmen mit \draw von allen Linien vermeiden, damit es dynamisch bleibt (falls ich z.B. die nodes verschiebe).

Gibt es hierfür eine passende Lösung in der Art von "fit" ?

Danke und Gruß

Phil

Verfasst: Do 13. Sep 2018, 07:53
von markusv
Moin.

Das Einzige, was mir gerade einfällt, ist 2 fits zu gestalten und per \draw dann möglichst dynamisch zu zeichnen.

Mein Ansatz:
\documentclass{article}
   
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{tikz}
\usetikzlibrary{
   backgrounds,   
   positioning,   
   fit,         
}

\begin{document}

\begin{tikzpicture}
\node[draw=black](1){1};
\node[draw=black,right=of 1](2){2};
\node[draw=black,right=of 2](3){3};
\node[draw=black,below=of 1](4){4};
\node[draw=black,right=of 4](5){5};
\node[draw=black,right=of 5](6){6};

\begin{scope}[on background layer]
   \node[inner sep=0.5cm,fit=(4)(1)](Fit1){};
   \node[inner sep=0.5cm,fit=(4)(5)](Fit2){};
   \draw[blue,ultra thick] (Fit1.north west) -- (Fit1.north east) |- (Fit2.north east) |- (Fit1.south west) -- cycle;
\end{scope}

\end{tikzpicture}
\end{document}

Verfasst: Do 13. Sep 2018, 08:40
von Phil100%Vol
Hi,

danke für den Denkanstoß :!:

Ist auf jeden Fall dynamischer!
Ich würde den Beitrag in den Status "mit Vorschlag" setzen, falls es doch noch Ideen/ Anregungen gibt.

Gruß

Verfasst: Do 13. Sep 2018, 14:47
von Bartman
Das Beispiel wurde von mir nur etwas zusammengefasst:
\documentclass[tikz, border=5pt]{standalone}

\usetikzlibrary{positioning, fit}

\begin{document}
\begin{tikzpicture}
\begin{scope}[nodes=draw]
\node              (1) {1};
\node [right=of 1] (2) {2};
\node [right=of 2] (3) {3};
\node [below=of 1] (4) {4};
\node [right=of 4] (5) {5};
\node [right=of 5] (6) {6};
\end{scope}

\begin{scope}[nodes={inner sep=5mm}]
\node [fit=(4)(1)] (Fit1) {};
\node [fit=(4)(5)] (Fit2) {};
\draw [blue, ultra thick] 
	(Fit1.north west) -- (Fit1.north east) |- 
	(Fit2.north east) |- (Fit1.south west) -- cycle
;
\end{scope}
\end{tikzpicture}
\end{document}