Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Umgebung bei newcommand

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.12.2007
    Beiträge
    49

    Umgebung bei newcommand

    Hi,

    ich möchte gerne Knoten mit tikz zeichnen und verwende hierzu diesen Befehl:
    Code:
    \begin{tikzpicture}
    \draw (0,0) node[fill,circle,inner sep=0pt,minimum size = 2mm] (meinLabel1) {};
    \draw (1,1) node[fill,circle,inner sep=0pt,minimum size = 2mm] (meinLabel2) {};
    \end{tikzpicture}
    Die draw-Befehle würde ich gerne abkürzen:
    Code:
    \newcommand{\myNode}[3]{\draw ( {#1} ,{#2} ) node[fill,circle,inner sep=0pt,minimum size = 2mm] ({#3}) {}; }
    
    
    \begin{tikzpicture}
    \myNode (0,0, meinLabel1);
    \myNode (1,1, meinLabel2);
    \end{tikzpicture}
    Hier bekomme ich aber die Fehlermeldung "Extra } or forgotten \endgroup". Ich vermute das Problem ist, dass bei der newcommand-Definition die tikzpicture-Umgebung fehlt. Im myNode-Kommando für jeden Node eine eigene tikzpicture Umgebung erstellen geht denke ich nicht, da ja auch Kanten zwischen den Knoten gezogen werden sollen. Hat jemand eine Idee ob/wie man dieses Problem lösen kann?

    Gruß und vielen Dank
    atero

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Du definierst einen Befehl mit 3 Argumenten. Also musst du auch 3 Argumente angeben:

    Code:
    \documentclass{article}
    \usepackage{tikz}
    
    \begin{document}
    \newcommand{\myNode}[3]{\draw (#1,#2) node[fill,circle,inner sep=0pt,minimum size = 2mm] (#3) {}; }
    \begin{tikzpicture}
    \myNode{0}{0}{meinLabel1};
    \myNode {1}{1}{meinLabel2};
    \end{tikzpicture}
    
    
    \end{document}

  3. #3
    Registrierter Benutzer
    Registriert seit
    08.12.2007
    Beiträge
    49
    auf die Idee, dass es daran liegen könnte bin ich gar nicht gekommen
    [zu meiner Verteidigung: alle Beispiele die ich gesehen habe waren nur mit einem Parameter und die Fehlermeldung war auch nicht so richtig hilfreich]

    Vielen Dank!!

  4. #4
    Registrierter Benutzer
    Registriert seit
    08.12.2007
    Beiträge
    49
    für die Zahlen 0 bis 9 klappt das Ganze jetzt wunderbar, nur Kommazahlen, negative Zahlen und Zahlen größer 9 gehen nicht. Hat mir hierzu vielleicht auch noch jemand einen Tipp?

  5. #5
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.862
    Moin moin,
    Zitat Zitat von atero Beitrag anzeigen
    für die Zahlen 0 bis 9 klappt das Ganze jetzt wunderbar, nur Kommazahlen, negative Zahlen und Zahlen größer 9 gehen nicht.
    nunja, da das Komma im verwendeten \draw-Befehl zur Parametertrennung dient, nimmste besser Punkt statt Komma ... oder wie würdest Du so etwas deuten: \draw(1,2,3)? x=1,2 und y=3 oder x=1 und y=2,3?
    Ggf. hilft Dir auch, die ersten beiden Parameter zusammenzufassen, etwa
    Code:
    \newcommand{\myNodeii}[2]{\draw (#1) node[fill,circle,inner sep=0pt,minimum size = 2mm] (#2) {}; }
    dann heißt es halt
    Code:
    \myNodeii{1.25,5.1}{foo};
    Zu Deinen Werten <0 bzw. >9: achte ggf. darauf, daß dieser Wert auch noch auf Deinem Papier landet.
    Ansonsten: siehe http://www.minimalbeispiel.de.

    MfG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  6. #6
    Registrierter Benutzer
    Registriert seit
    08.12.2007
    Beiträge
    49
    danke für den Hinweis, aber um die Dezimalstellen abzutrennen hatte ich schon einen Punkt verwendet (auch wenn ich es Kommazahl genannt habe)
    Das mit dem Parameter zusammenfassen ist eine gute Idee.

    Mein Problem habe ich inzwischen auch gelöst:

    So sah mein Kommando aus:
    Code:
    \newcommand{\myNode}[3]{\draw ( #1 ,#2 ) node[fill,circle,inner
    sep=0pt,minimum size = 2mm] (#3) {}; }
    und es hat nicht funktioniert.
    Dann habe ich es mit dem Code von u_fischer probiert:
    Code:
    \newcommand{\myNode}[3]{\draw (#1,#2) node[fill,circle,inner sep=0pt,minimum size = 2mm] (#3) {}; }
    So funktioniert es, keine Ahnung warum. Habs gerade bei einem Minimalbeispiel getestet, da gingen beide. Naja, hauptsache es funktioniert. Vielen Dank für eure Hilfe!
    Geändert von atero (09-11-2009 um 00:45 Uhr)

Stichworte

Lesezeichen

Berechtigungen

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