Hallo,

ich versuche, ausgehend von der Lösung dieser Frage mehrere Knoten ineinander zu verschachteln. Ohne Hintergrundfüllung funktioniert das hier ganz gut:

Open in Online-Editor
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{positioning,fit}
\begin{document}
\begin{tikzpicture}
  \node [circle, fill=black, minimum size=2mm, inner sep=0](Punkt) {};
  \node [above right=1pt of Punkt, rectangle, inner sep=0](Text) {$f(x)$};
  \node [circle, minimum size=2cm, draw, fit={(Punkt) (Text)}](Kreis) {};
  \node [left=0.2cm of Kreis, circle, minimum size=3cm, draw, fit={(Kreis)},label={[font=\Large]above:$E$}] {};
\end{tikzpicture}
\end{document}

Wenn ich nun den inneren Kreis im Hintergrund rot füllen will, kappt das noch wie folgt:

Open in Online-Editor
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,backgrounds}
\begin{document}
\begin{tikzpicture}
  \node [circle, fill=black, minimum size=2mm, inner sep=0](Punkt) {};
  \node [above right=1pt of Punkt, rectangle, inner sep=0](Text) {$f(x)$};
  \begin{scope}[on background layer]
    \node [circle, minimum size=2cm, draw, fill=red, fit={(Punkt) (Text)}](Kreis) {};
  \end{scope}
  \node [left=0.2cm of Kreis, circle, minimum size=3cm, draw, fit={(Kreis)},label={[font=\Large]above:$E$}] {};
\end{tikzpicture}
\end{document}

Wenn ich nun aber auch noch den äußeren Kreis im Hintergrund blau füllen will, dann klappt es nicht. Ich hab folgenden Weg versucht:

Open in Online-Editor
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,backgrounds}
\begin{document}
    \begin{tikzpicture}
      \node [circle, fill=black, minimum size=2mm, inner sep=0](Punkt) {};
      \node [above right=1pt of Punkt, rectangle, inner sep=0](Text) {$f(x)$};
      \begin{scope}[on background layer]
        \node [circle, minimum size=2cm, draw, fill=red, fit={(Punkt) (Text)}](Kreis) {};
        \begin{scope}[on background layer]
          \node [left=0.2cm of Kreis, circle, minimum size=3cm, draw, fill=blue, fit={(Kreis)},label={[font=\Large]above:$E$}] {};
        \end{scope}
      \end{scope}
    \end{tikzpicture}
\end{document}

Und folgenden:

Open in Online-Editor
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,backgrounds}
\begin{document}
    \begin{tikzpicture}
      \node [circle, fill=black, minimum size=2mm, inner sep=0](Punkt) {};
      \node [above right=1pt of Punkt, rectangle, inner sep=0](Text) {$f(x)$};
      \begin{scope}[on background layer]
        \node [circle, minimum size=2cm, draw, fill=red, fit={(Punkt) (Text)}](Kreis) {};
      \end{scope}
      \begin{scope}[on background layer]
        \node [left=0.2cm of Kreis, circle, minimum size=3cm, draw, fill=blue, fit={(Kreis)},label={[font=\Large]above:$E$}] {};
      \end{scope}
    \end{tikzpicture}
\end{document}

Beides hat nicht zum gewünschten Ergebnis geführt. Hat jemand eine Idee?

Viele Grüße Tom

gefragt 31 Dez '14, 19:51

tom75's gravatar image

tom75
2.2k187884
Akzeptiert-Rate: 57%

bearbeitet 09 Jan '16, 14:49

cgnieder's gravatar image

cgnieder
22.1k243463


Wie schon von @Stefan erwähnt, kannst Du Dir auch eigene Layer definieren:

Open in writeLaTeX
\pgfdeclarelayer{background1}
\pgfdeclarelayer{background2}

Dann musst Du natürlich noch die Reihenfolge der Layer vorgeben:

Open in writeLaTeX
\pgfsetlayers{background2,background1,main}

Um etwas in einen Layer einzufügen, gibt es die pgfonlayer Umgebung, die den Namen des entsprechenden Layers als Argument erwartet. Alles, was außerhalb dieser Umgebungen steht, wird in den Standardlayer main eingefügt.

Open in writeLaTeX
\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,fit}
  \pgfdeclarelayer{background1}
  \pgfdeclarelayer{background2}
  \pgfsetlayers{background2,background1,main}
\begin{document}
\begin{tikzpicture}
  \node [circle, fill=black, minimum size=2mm, inner sep=0](Punkt) {};
  \node [above right=1pt of Punkt, rectangle, inner sep=0](Text) {$f(x)$};
  \begin{pgfonlayer}{background1}
    \node [circle, minimum size=2cm, draw, fill=red, fit={(Punkt) (Text)}](Kreis) {};
  \end{pgfonlayer}
  \begin{pgfonlayer}{background2}
    \node [left=0.2cm of Kreis, circle, minimum size=3cm, draw, fill=blue, fit={(Kreis)},label={[font=\Large]above:$E$}] {};
  \end{pgfonlayer}
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 01 Jan '15, 11:07

esdd's gravatar image

esdd
17.7k254256
Akzeptiert-Rate: 62%

Vielen Dank! Die Lösung gefällt mir sehr.

(02 Jan '15, 07:30) tom75

Herzlich willkommen auf der TeXwelt, Tom!

Eigentlich bräuchtest Du hier 3 Layer. Ginge auch. Ich finde das einfachste, die beiden überzeichneten Nodes einfach nochmal zu zeichnen, auf die Schnelle. Und den nur großen gefüllten Kreis in den Hintergrund schicken.

Open in writeLaTeX
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,backgrounds}
\begin{document}
\begin{tikzpicture}
  \node [circle, fill=black, minimum size=2mm, inner sep=0](Punkt) {};
  \node [above right=1pt of Punkt, rectangle, inner sep=0](Text) {$f(x)$};
   \node [circle, minimum size=2cm, draw, fill=red, fit={(Punkt) (Text)}]
     (Kreis) {};
  \node [circle, fill=black, minimum size=2mm, inner sep=0](Punkt) {};
  \node [above right=1pt of Punkt, rectangle, inner sep=0](Text) {$f(x)$};
  \begin{scope}[on background layer]
    \node [left=0.2cm of Kreis, circle, minimum size=3cm, draw, fill=blue,
          fit={(Kreis)},label={[font=\Large]above:$E$}] {};
  \end{scope}
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 01 Jan '15, 01:00

stefan's gravatar image

stefan ♦♦
18.1k143048
Akzeptiert-Rate: 48%

bearbeitet 01 Jan '15, 01:01

Danke für diese Lösung, Stefan! Gibt es irgendwo eine Anleitung, wie man das mit verschiedenen Layern löst, z.B. auch wenn es nicht nur 3 sondern viel mehr Ebenen sind?

(01 Jan '15, 01:26) tom75

Sorry Stefan, hab das mit der Punktevergabe hier noch nicht kapiert. Wollte euch beiden Punkte geben aber das hat nicht funktioniert.

(02 Jan '15, 07:34) tom75
3

@tom75 Einfach auf den "Daumen hoch" klicken gibt 10 Punkte für die Antwort, ohne dass Dir selbst Punkte verloren gehen. Das geht für beliebig viele Antworten und kann jeder, weil es lediglich bedeutet, dass die Antwort gefällt. Wenn Du eine Antwort als die Lösung auf Deine Frage markieren willst, die Du bevorzugst, dann den Haken setzen. Das generiert noch einmal 15 Punkte. Das kann auch nur der Fragesteller für genau eine Antwort zur Frage. Es sagt übrigens nicht, dass es objektiv die beste Antwort ist. Die Punkte sind für die TOP-Helfer auch eher ein Nebeneffekt der Abstimmung.

(02 Jan '15, 11:52) saputello

@saputello Ach so. Das hab ich zwar auch gemacht, aber dann dachte ich, ich muss die Punkte noch über den Link "Vergib Punkte" verteilen. Das hat bei @esdd auch funktioniert, mir war nicht klar, dass die dann von mir abgezogen werden :-)

(02 Jan '15, 12:04) tom75
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×728
×48
×3
×3
×1

gestellte Frage: 31 Dez '14, 19:51

Frage wurde gesehen: 11,221 Mal

zuletzt geändert: 09 Jan '16, 14:49