Tikz Objekte ändern

Tabellen und Grafiken erstellen und anordnen


dirkst19
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Sa 16. Mai 2015, 09:39

Tikz Objekte ändern

Beitrag von dirkst19 »

Hallo zusammen!

Ich arbeite momentan mit Programmablaufplänen und benutze \tikzstyle
Dort hat man ja vordefinierte Objekte zum Beispiel Kreise, Rechtecke oder Decision-Objekte.

Ich brauche nun aber ein anderes Objekt:

Bild

Kann man das irgendwie definieren und anschließend genauso verwenden, wie die vordefinierten geometrischen Objekte?
%Definition der Blöcke
\tikzstyle{block1} = [rectangle, draw, fill=cyan, 
    text width=9em, text centered, rounded corners, minimum height=4em]
\tikzstyle{line} = [draw, -latex']
\tikzstyle{block2} = [rectangle, draw, fill=green2, 
    text width=9em, text centered, rounded corners, minimum height=4em]
\tikzstyle{block3} = [rectangle, draw, fill=blue, 
    text width=9em, text centered, rounded corners, minimum height=4em]

\begin{figure}[h]
\centering
\label{fig:struktur}

\begin{tikzpicture}[scale=0.4]
    % Place nodes
 
\node [block3] (E) {\textcolor{white}{\textbf{ja}}};
\node [block2, below of =E, node distance=3cm] (D) {\textcolor{white}{\textbf{Auto}}};
%\node [block2, right of =D, node distance=8cm] (I) {\textcolor{white}{\textbf{Düpp}}};
\node [block1, below of =D, node distance=3cm] (IT) {\textcolor{white}{\textbf{Bereich}}};
\node [block1, left of =IT, node distance=4.5cm] (MS) {\textcolor{white}{\textbf{MFS}}};
\node [block1, right of =IT, node distance=4.5cm] (AC) {\textcolor{white}{\textbf{Advancedl}}};

    % Draw edges
   
\path [line] (AC) |- (D);
\path [line] (MS) |- (D);
\path [line] (IKT) -- (D);
%\path [line] (I) -| (D);
\path [line] (D) -- (E);

\end{tikzpicture} 
\end{figure}
Dateianhänge
Muster
Muster
Bild1.png (1.33 KiB) 2442 mal betrachtet

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2759
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Beitrag von Stefan Kottwitz »

Hi,

sehr gut, dass Du ein Code-Beispiel postest!

Der Code hat dann richtig Wert, wenn man ihn testen kann. Nur beim Draufschauen sieht man meistens nicht schon viel, gerade wenn das Problem nicht simpel ist. Wenn ich den Code oben übersetze, habe ich einen Haufen Probleme:
  • Ich muss selber Dokumentklasse aussuchen und ein Rahmendokument zum Übersetzen bauen.
  • Ich muss TikZ laden (das sehe ich ja noch direkt) und vmtl. Zusatzpakete, wie z.B. für die Umlaute.
  • Ich kriege einen Fehler, weil die Farbe green2 nicht definiert ist. Das muss ich ändern z.B. auf green. Du hast sicher Deine eigene Farbdefinition.
  • Dann der nächste Fehler, weil der Pfeil-Typ -latex' nicht definiert ist. Ich weiß noch, dass ich die arrows-Library dafür brauche, und lade sie mit \usetikzlibrary{arrows}.
  • Dann kommt "Package pgf Error: No shape named IKT is known". Der ist hier im Beispiel weggelassen worden.
An dem Punkt habe ich aufgegeben.

Es wäre schön, wenn Du Deine Fragen mit Code versiehst, der direkt testbar ist, also einem echten Minimalbeispiel. Vielleicht haben 10 weitere Leser das schon wie ich versucht und es dann gelassen - viel unnötige Arbeit. Besser wäre, ein lauffähiges kleines Beispiel anzugeben und vor dem Posten kurz zu testen. Ein wenig mehr Mühe in die Frage investiert und es den Helfern leichter gemacht, ist meist die Garantie für eine Lösung.

Stefan

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2759
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Beitrag von Stefan Kottwitz »

Übrigens ist es nicht mehr empfohlen, \tikzstyle zu verwenden. Stattdessen sollte man Stile lokal setzen in eckigen Klammern an TikZ-Umgebungen oder Scopes, oder man verwendet \tikzset dafür. Bei Deinem Beispiel wäre das etwa so umgeschrieben:
\tikzset{
  block1/.style = {rectangle, draw, fill=cyan, 
    text width=9em, text centered, rounded corners, minimum height=4em},
  block2/.style = {rectangle, draw, fill=green, 
    text width=9em, text centered, rounded corners, minimum height=4em},
  block3/.style = {rectangle, draw, fill=blue, 
    text width=9em, text centered, rounded corners, minimum height=4em},
  line/.style = {draw, -latex'},
}
Man kann Stile auch verknüpfen, das macht es übersichtlicher, und das Verändern einfacher, man braucht nur an einer Stelle etwas anzupassen, und die Stile, die erben, passen sich mit an - nicht etwa jeden Block einzeln analog ändern zu müssen:
\tikzset{
  block/.style  = {rectangle, draw, text width=9em, text centered,
                   rounded corners, minimum height=4em},
  block1/.style = {block, fill=cyan},
  block2/.style = {block, fill=green},
  block3/.style = {block, fill=blue},
  line/.style     = {draw, -latex'},
}
Definitionen anderer bzw. eigener solcher Objekte habe ich übrigens schon in unserem Partnerforum TeXwelt.de gesehen - TikZ ist dort das vielleicht beliebteste Thema, jedenfalls mit den meisten Fragen und Antworten. Ich tippe mal drauf, man könnte einen shape definieren, es aber noch einfacher mit pic machen.

Stefan

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Such mal im pgfmanual nach der Knotenform signal.

Gruß
Elke

Edit: Hier ist noch ein kurzes Beispiel, aber beachte unbedingt die Hinweise von Stefan.
\documentclass[tikz,margin=10pt]{standalone}
\usetikzlibrary{shapes.symbols}
\begin{document}
\tikz\node[
    signal,signal to = east,
    fill=blue!80!black!40,draw=blue!70!black,
    text width=6em,align=center,
    font=\color{white}\bfseries,
    minimum height=4em
  ]{MWE?};
\end{document}
Bild
Dateianhänge
gl_signal.png
gl_signal.png (5.2 KiB) 1868 mal betrachtet

Antworten