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 '19, 11:10

Blitz's gravatar image

Blitz
146211
Akzeptiert-Rate: 0%

bearbeitet 12 Feb '19, 08: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 '19, 21: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 '19, 22: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 '19, 18:54

cis's gravatar image

cis
9.4k26275471
Akzeptiert-Rate: 29%

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:

×689

gestellte Frage: 11 Feb '19, 11:10

Frage wurde gesehen: 1,224 Mal

zuletzt geändert: 12 Feb '19, 08:44