Ich möchte gerne die node anwendung mit der node glibc und syscall verbinden. Wenn ich outer sep in der node anwendung verwende, dann reichen die Linien nicht an den Rand der node anwendung. wenn ich aber outer sep weg lasse, ist die node nicht mehr innerhalb des grünen Vierecks. Wie kann ich das Problem lösen?

Öffne in Overleaf
\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{shapes, arrows,snakes,backgrounds,fit,positioning}

\begin{document}
\tikzset{block/.style ={ rectangle, draw, text width=19em, text centered, rounded corners, minimum height=2em,fill=blue!30}}
\tikzset{blockBig/.style ={rectangle, draw, text width=19em, text centered, rounded corners, minimum height=2em, outer sep=0.5cm,fill=blue!30,node distance=0.0cm}}
\tikzset{scope/.style ={rectangle, draw, text width=19em, text centered, rounded corners, minimum height=2em, inner sep=0.5cm,fill=blue!30}}
\tikzset{dottedline/.style ={draw,dotted, very thick}}
\tikzset{line/.style ={draw, very thick}}

     \begin{tikzpicture}[node distance = 0.5cm, auto]
         \node [blockBig,](anwendung) {Benutzeranwendungen};
         \node [block,text width=12em, xshift=1cm,below=of anwendung] (glibc) {C-Standard-Bibliothek (glibc)};
         \node [block, yshift=-1cm,xshift=-1cm,below=of glibc] (syscall) {Systemaufrufschnittstelle};
         \node [block, below=of syscall] (kernel) {Kernel};
         \node [block, below=of kernel] (code) {architekturspezifischer Kernel-Code};

         \begin{scope}[on background layer]
         \node [scope](eins)[
         fit=(anwendung) (glibc) (syscall) (kernel) (code),
         label={[anchor=south,shade=none]below:Hardware Plattform},
         yshift=-2.3em,fill=green!30,
         draw=black] (hardware) {};
         \end{scope}

         \begin{scope}[on background layer]
         \node [scope](zwei)[
         fit=(syscall) (kernel) (code),
         fill=blue!10,
         draw=black] (kernelspace) {};
        \end{scope}

        \draw[dottedline] (-5,-2.9) -- (5,-2.9);
        \draw[line] (anwendung.south) -- (anwendung|-glibc.north);
        \draw[line] (anwendung.200) -- (anwendung.200|-syscall.north);
        \draw[line] (syscall.south) -- (kernel.north);
        \draw[line] (kernel.south) -- (code.north);
        \draw[line] (glibc.209) -- (glibc.209|-syscall.north);
    \end{tikzpicture}
\end{document}

gefragt 11 Feb, 05:10

Blitz's gravatar image

Blitz
1465
Akzeptiert: 100%

bearbeitet 12 Feb, 02:44

1

Benutzer Anwendungen → Benutzeranwendungen

C Standard Bibliothek → C-Standard-Bibliothek

Systemaufruf Schnittstelle → Systemaufrufschnittstelle

Architektur abhängiger Kernel Code → architekturabhängiger Kernel-Code

https://deppenleerzeichen.de/

(11 Feb, 15:52) Henri
1

@Henri Vom englischsprachigen Lesen kann man so ein Gefühl für die Sprache kriegen, Bindestriche wegzulassen. Passiert, würde ich aber nicht so anprangern wie die sensationslüsterne Webseite es macht. Das nachlässige Kleinschreiben in der Publikation (dieser Frage) finde ich eher nicht gut.

(11 Feb, 16:28) stefan ♦♦

Auf die Gefahr nicht alles verstanden zu haben: wenn ich
\begin{scope}[on background layer] \draw[line, red] (anwendung.center) -- (anwendung|-glibc.north); \draw[line, red] (anwendung.200|-anwendung.center) -- (anwendung.200|-syscall.north); \end{scope}
ergänze, sind die Linien durchgängig.

alt text

Öffne in Overleaf
\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{shapes, arrows,snakes,backgrounds,fit,positioning}

\begin{document}
\tikzset{block/.style ={ rectangle, draw, text width=19em, text centered, rounded corners, minimum height=2em,fill=blue!30}}
\tikzset{blockBig/.style ={rectangle, draw, text width=19em, text centered, rounded corners, minimum height=2em, outer sep=0.5cm,fill=blue!30,node distance=0.0cm}}
\tikzset{scope/.style ={rectangle, draw, text width=19em, text centered, rounded corners, minimum height=2em, inner sep=0.5cm,fill=blue!30}}
\tikzset{dottedline/.style ={draw,dotted, very thick}}
\tikzset{line/.style ={draw, very thick}}

     \begin{tikzpicture}[node distance = 0.5cm, auto]
         \node [blockBig,](anwendung) {Benutzer Anwendungen};
         \node [block,text width=12em, xshift=1cm,below=of anwendung] (glibc) {C Standard Bibliothek (glibc)};
         \node [block, yshift=-1cm,xshift=-1cm,below=of glibc] (syscall) {Systemaufruf Schnittstelle};
         \node [block, below=of syscall] (kernel) {Kernel};
         \node [block, below=of kernel] (code) {Architektur abhängiger Kernel Code};

         \begin{scope}[on background layer]
         \node [scope](eins)[
         fit=(anwendung) (glibc) (syscall) (kernel) (code),
         label={[anchor=south,shade=none]below:Hardware Plattform},
         yshift=-2.3em,fill=green!30,
         draw=black] (hardware) {};
         \end{scope}

         \begin{scope}[on background layer]
         \node [scope](zwei)[
         fit=(syscall) (kernel) (code),
         fill=blue!10,
         draw=black] (kernelspace) {};
        \end{scope}

        \draw[dottedline] (-5,-2.9) -- (5,-2.9);
%        \draw[line, red] (anwendung.south) -- (anwendung|-glibc.north);
%        \draw[line, red] (anwendung.200) -- (anwendung.200|-syscall.north);
        \draw[line] (syscall.south) -- (kernel.north);
        \draw[line] (kernel.south) -- (code.north);
        \draw[line] (glibc.209) -- (glibc.209|-syscall.north);

\begin{scope}[on background layer]
\draw[line, red] (anwendung.center) -- (anwendung|-glibc.north);
 \draw[line, red] (anwendung.200|-anwendung.center) -- (anwendung.200|-syscall.north);
\end{scope}
    \end{tikzpicture}
\end{document}
Permanenter link

beantwortet 11 Feb, 12:54

cis's gravatar image

cis
8.9k17189301

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×650

Frage gestellt: 11 Feb, 05:10

Frage wurde angeschaut: 226 Mal

Zuletzt aktualisiert: 12 Feb, 02:44