Anzeige:
Ergebnis 1 bis 2 von 2

Thema: Datenmodellierung Krähenfußnotation mit tikz

  1. #1
    Registrierter Benutzer
    Registriert seit
    23.06.2011
    Beiträge
    9

    Datenmodellierung Krähenfußnotation mit tikz

    Hallo zusammen.

    Wir machen gerade an der Uni Datenmodellierung und verwenden dabei die Krähenfußnotation (Anzeigne von Kardinalitäten beim Zusammenspiel von Objekten - für das weitere ist das aber unwichtig). Das meiste funktioniert mit tikz ganz wunderbar: mehrere (zwei Pfeile), keines (kringel als Pfeilende), oder eins (ein Pfeil)

    Code:
    \draw [<<-]
    \draw[o-]
    \draw[-<]
    Was nicht funktioniert ist 0 oder eins (ein Pfeil und ein Krignel dahinter), bzw. 0 oder mehrere (zwei Pfeile und ein Kringel dahinter)

    Code:
    \draw[< o-]
    \draw[<< o-]
    (Natürlich ohne leerzeichen zwischen den Pfeilspitzen und dem Kringel, aber sonst wird angnommen, dass es HTML Code ist ...)

    Was muss ich umstellen / definieren, damit tikz auch diese Pfeilenden akzeptiert?

    Schonmal danke!!

  2. #2
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Hallo,

    die Pfeilenden muss man sich selbst zusammen basteln. Für myo habe ich die Originaldefinition von o so angepasst, dass der Kringel weiß gefüllt wird. Im folgenden Code müssen ebenfalls noch die Leerzeichen zwischen den Pfeilspitzen und den Kringeln entfernt werden.

    Code:
    \documentclass{scrartcl}
    \usepackage{tikz}
    \usetikzlibrary{arrows}
    
    \makeatletter
    \pgfarrowsdeclare{myo}{myo}
    {
      \pgfarrowsleftextend{+-.5\pgflinewidth}
      \pgfutil@tempdima=0.4pt%
      \advance\pgfutil@tempdima by.2\pgflinewidth%
      \pgfutil@tempdimb=9\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth
      \pgfarrowsrightextend{+\pgfutil@tempdimb}
    }
    {
      \pgfutil@tempdima=0.4pt%
      \advance\pgfutil@tempdima by.2\pgflinewidth%
      \pgfsetdash{}{+0pt}
      \pgfpathcircle{\pgfqpoint{4.5\pgfutil@tempdima}{0bp}}{4.5\pgfutil@tempdima}
      \pgfsetfillcolor{white}
      \pgfusepathqfillstroke
    }
    \makeatother
    \pgfarrowsdeclarealias{<}{>}{to}{to}
    \pgfarrowsdeclaredouble{<<}{>>}{<}{>}
    % in den beiden folgenden Zeilen Leerzeichen in den { } entfernen!
    \pgfarrowsdeclarecombine[\pgflinewidth]{< o}{o >}{myo}{myo}{<}{>}
    \pgfarrowsdeclarecombine[\pgflinewidth]{<< o}{o >>}{myo}{myo}{<<}{>>}
    
    \begin{document}
    \begin{tikzpicture}
      \draw[<<-o](0,1)--(1,1);
      \draw[<< o-o >](0,0)--(1,0);% Leerzeichen in [ ] entfernen!
    \end{tikzpicture}
    \end{document}
    Gruß
    Elke

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •