PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tikz: Makro funktioniert nicht



Moadin
23-07-2018, 12:59
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?


\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

Moadin
23-07-2018, 13:41
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!



\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}

klops
23-07-2018, 14:08
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.