Funktionen, die mit einer Schleife (\foreach) definiert werden, lassen das Tikz-Bild weit weggehen

Funktionen, die mit einer Schleife (\foreach) definiert werden, lassen das Tikz-Bild weit weggehen

Im folgenden MWE ist das Tikz-Bild außerhalb des Papiers. Wenn ich 10 durch eine größere Zahl ersetze, geht das Bild noch weiter nach rechts. Irgendeine Idee?

\documentclass{article}

\usepackage{tikz}
\usepackage{pgfplots}

\pgfmathdeclarefunction{myfunction}{1}{
    \let\x\pgfmathresult
    \pgfmathsetmacro\ret{0}
    \foreach \i in {1,...,10}{
        \pgfmathsetmacro\ret{\ret + \x^\i}
        \xdef\ret{\ret}
    }
    \pgfmathparse{\ret}
}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[axis lines=middle, domain=-1:1]
        \addplot[domain=-1:1, blue, samples=10] {myfunction(x)};
    \end{axis}
\end{tikzpicture}

\end{document}

Antwort1

Fügen Sie, wie im Kommentar erwähnt, Prozentzeichen hinzu. (Aufgrund der TeX-Regeln kann in diesem Fall eines der Prozentzeichen ohne Probleme weggelassen werden, in diesem speziellen Fall können aber auch alle verwendet werden.)

\documentclass{article}

\usepackage{tikz}
\usepackage{pgfplots}

\pgfmathdeclarefunction{myfunction}{1}{%
    \let\x\pgfmathresult
    \pgfmathsetmacro\ret{0}%
    \foreach \i in {1,...,10}{%
        \pgfmathsetmacro\ret{\ret + \x^\i}%
        \xdef\ret{\ret}%
    }%
    \pgfmathparse{\ret}%
}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[axis lines=middle, domain=-1:1]
        \addplot[domain=-1:1, blue, samples=10] {myfunction(x)};
    \end{axis}
\end{tikzpicture}

\end{document}

Alternativ kann die Syntax von expl3 verwendet werden, diese ignoriert jedochalle Leerzeichenund nimmt noch einige andere Änderungen vor. Stellen Sie also sicher, dass Sie wissen, was Sie tun.

\ExplSyntaxOn
\pgfmathdeclarefunction{myfunction}{1}{
    \let\x\pgfmathresult
    \pgfmathsetmacro\ret{0}
    \foreach \i in {1,...,10}{
        \pgfmathsetmacro\ret{\ret + \x^\i}
        \xdef\ret{\ret}
    }
    \pgfmathparse{\ret}
}
\ExplSyntaxOff

verwandte Informationen