TeXwelt wurde neu installiert. Es funktionieren noch nicht alle Features und auch an den deutschsprachigen Formulierungen wird verbessert. Danke für eure Geduld.

Ich benötige mehrere Graphen, die in Koordinatensystemen mit ähnlichen Eigenschaften dargestellt werden sollen. Daher habe ich einen entsprechenden xparse-Befehl definiert, der als Argumente die jeweiligen Achseneinstellungen, optional eine Angabe zum Definitionsbereich und schließlich den Funktionsterm erwartet.

Open in Online-Editor
\documentclass{article}
\usepackage{pgfplots}
\usepackage{xparse}

\NewDocumentCommand \Graph {m o m}
    {
        \begin{tikzpicture}
        \begin{axis}[axis lines=middle,xtick=\empty,ytick=\empty,#1]
        \addplot[semithick,samples=200,\IfNoValueF{#2}{domain=#2}] {#3};
        \end{axis}
        \end{tikzpicture}
    }

\begin{document}
\Graph{xmin=0,xmax=6.5,ymin=0,ymax=6}[0:6]{-53/360*(x-3)^4-1/20*(x-3)^3+437/360*(x-3)^2+9/20*(x-3)+1}
\end{document}

Das Beispiel liefert die Fehlermeldung ! Package pgf Error: Unknown arrow tip kind domain=. Was muss ich verändern?

gefragt 07 Apr '16, 11:15

Cletus's gravatar image

Cletus
1.3k3551
Akzeptiert-Rate: 83%


Das ist wieder einmal ein Expansionsproblem, es lässt sich beispielsweise lösen, indem man nicht erst in \addplot die Fallunterscheidung vornimmt, sondern bereits davor:

Open in Online-Editor
\documentclass{article}
\usepackage{pgfplots}
\usepackage{xparse}

\NewDocumentCommand \Graph {m o m}
    {
        \begin{tikzpicture}
        \begin{axis}[axis lines=middle,xtick=\empty,ytick=\empty,#1]
        \IfNoValueTF{#2}{%
          \addplot[semithick,samples=200] {#3};
        }{%
          \addplot[semithick,samples=200,domain=#2] {#3};
        }%
        \end{axis}
        \end{tikzpicture}
    }

\begin{document}
\Graph{xmin=0,xmax=6.5,ymin=0,ymax=6}[0:6]{-53/360*(x-3)^4-1/20*(x-3)^3+437/360*(x-3)^2+9/20*(x-3)+1}
\end{document}

Hat man mehrere optionale Argumente ist es ggf. weniger aufwendig, wenn man die \addplot-Anweisung quasi stückweise expandiert:

Open in Online-Editor
\documentclass{article}
\usepackage{pgfplots}
\usepackage{xparse}

\NewDocumentCommand \Graph {m o m}
    {
        \begin{tikzpicture}
        \begin{axis}[axis lines=middle,xtick=\empty,ytick=\empty,#1]
          \edef\localplotcommandoptions{%
            [semithick,samples=200\IfNoValueF{#2}{,domain=\unexpanded{#2}}]%
          }\expandafter\plot\localplotcommandoptions{#3};
        \end{axis}
        \end{tikzpicture}
    }

\begin{document}
\Graph{xmin=0,xmax=6.5,ymin=0,ymax=6}[0:6]{-53/360*(x-3)^4-1/20*(x-3)^3+437/360*(x-3)^2+9/20*(x-3)+1}
\end{document}

Die einfachste Lösung wäre, wenn das optionale Argument einfach als zusätzliche Optionen von \addplot definiert würde. Dann könnte man einfach wie folgt arbeiten:

Open in Online-Editor
\documentclass{article}
\usepackage{pgfplots}
\usepackage{xparse}

\NewDocumentCommand \Graph {m O{} m}
    {
        \begin{tikzpicture}
        \begin{axis}[axis lines=middle,xtick=\empty,ytick=\empty,#1]
        \addplot[semithick,samples=200,#2] {#3};
        \end{axis}
        \end{tikzpicture}
    }

\begin{document}
\Graph{xmin=0,xmax=6.5,ymin=0,ymax=6}[domain=0:6]{-53/360*(x-3)^4-1/20*(x-3)^3+437/360*(x-3)^2+9/20*(x-3)+1}

\Graph{xmin=0,xmax=6.5,ymin=0,ymax=6}{-53/360*(x-3)^4-1/20*(x-3)^3+437/360*(x-3)^2+9/20*(x-3)+1}

\end{document}
Permanenter link

beantwortet 07 Apr '16, 11:37

saputello's gravatar image

saputello
10.4k93760
Akzeptiert-Rate: 51%

bearbeitet 08 Apr '16, 14:39

2

Ich würde ja eher hinter begin{tikzpicture} \IfNoValueF{#2}{\pgfplotsset{every axis plot/.append style={domain=#2}}} einfügen. (Wobei ich wahrscheinlich gar nicht so ein optionales Argument benutzen würde, sondern [domain=0:6] eingeben würde, lesbarer und leichter zu erweitern ...)

(07 Apr '16, 18:52) Ulrike Fischer
1

@Ulrike: Du darfst gerne eine entsprechende Antwort verfassen.

(08 Apr '16, 14:34) saputello
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×273
×5
×4

gestellte Frage: 07 Apr '16, 11:15

Frage wurde gesehen: 3,967 Mal

zuletzt geändert: 08 Apr '16, 14:39