Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Tikz: Makro funktioniert nicht

  1. #1
    Registrierter Benutzer
    Registriert seit
    25.07.2010
    Beiträge
    31

    Tikz: Makro funktioniert nicht

    Liebe Latex-User

    ich muss viele Koordinatensysteme zeichnen und wollte dies mit einem Makro vereinfachen. Nun meldet er die ganze Zeit Fehler (fehlende geschweifte Klammer) und ich sehe einfach nicht warum.
    Kann mir bitte jemand helfen?

    Code:
    \documentclass[margin=5pt]{standalone}
    \usepackage{tikz}
    
    \newcommand\koordinaten[5]{
    	\def\xmin{#1}
    	\def\ymin{#2}
    	\def\xmax{#3}
    	\def\ymax{#4}
    	\koordinatenweiter
    }
    
    \newcommand\koordinatenweiter[6]{
    	\draw [step=0.2, help lines] (\xmin,\ymin) grid (\xmax,\ymax);
    	\draw [->,very thick] (\xmin,0) -- (\xmax,0);
    	\draw [->,very thick] (0,\ymin) -- (0,\ymax);
    	% Achsen beschriften
    	\foreach \x in {#1,#2,...,#3}
    		\draw (\x,-0.1) -- (\x,0) node[below=4pt,fill=white] {$\scriptstyle \x$};
    	\foreach \y in {#4,#5,...,#6}
    		\draw (-0.1,\y) -- (0,\y) node[below=4pt,fill=white] {$\scriptstyle \x$};
    }
    
    \begin{document}
    
    \begin{tikzpicture}
    	\koordinaten{-2}{-2}{6}{6}{{-2}{-1}{5}{-2}{-1}{5}}
    \end{tikzpicture}
    
    \end{document}
    Vielen Dank für jeden Hinweis!

    Martin

  2. #2
    Registrierter Benutzer
    Registriert seit
    25.07.2010
    Beiträge
    31
    Ich habe für mich eine gangbare Lösung gefunden. Ist zwar nicht so flexibel, aber funktioniert und ich habe die Probleme umschifft. Schön wäre aber trotzdem, wenn ich die Skalierung der Achsen flexibler gestalten könnte. Vielleicht kann mir dahingehend ja jemand einen Tipp geben. Vielen Dank im Voraus!

    Code:
    \documentclass[margin=5pt]{standalone}
    \usepackage{tikz}
    
    \newcommand\koordinaten[4]{
    	\def\xmin{#1}
    	\def\ymin{#2}
    	\def\xmax{#3}
    	\def\ymax{#4}
    	\draw [step=0.2, help lines] (\xmin,\ymin) grid (\xmax,\ymax);
    	\draw [->,very thick] (\xmin,0) -- (\xmax,0);
    	\draw [->,very thick] (0,\ymin) -- (0,\ymax);
    	% Achsen beschriften
    	\foreach \x in {\xmin,\the\numexpr\xmin+1\relax,...,\the\numexpr\xmax-1\relax}
    		\draw (\x,-0.1) -- (\x,0) node[below=4pt,fill=white] {$\scriptstyle \x$};
    	\foreach \y in {\ymin,\the\numexpr\ymin+1\relax,...,\the\numexpr\ymax-1\relax}
    		\draw (-0.1,\y) -- (0,\y) node[left=4pt,fill=white] {$\scriptstyle \y$};
    	\node[above right] at (\xmax,0) {$x$};
    	\node[above right] at (0,\ymax) {$y$};
    }
    
    \begin{document}
    
    \begin{tikzpicture}
    	\koordinaten{-2}{-2}{6}{6}
    \end{tikzpicture}
    
    \end{document}

  3. #3
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.326
    Ich habe gerade keine Zeit, es mir näher anzuschauen, aber Du hast im ersten Beitrag \koordinaten mit 5 Argumenten definiert, verwendest in der Definition aber nur 4. Also definiere es besser auch nur mit 4 und lass die Extraklammern um die Argumente für \koordinatenweiter beim Aufruf von \koordinaten weg.

    Ansonsten: Warum definierst Du nicht gleich eine Anweisung mit Optionen per pgfkeys? Das würde besser zu tikz passen.

Lesezeichen

Berechtigungen

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