![Funktionen, die mit einer Schleife (\foreach) definiert werden, lassen das Tikz-Bild weit weggehen](https://rvso.com/image/449623/Funktionen%2C%20die%20mit%20einer%20Schleife%20(%5Cforeach)%20definiert%20werden%2C%20lassen%20das%20Tikz-Bild%20weit%20weggehen.png)
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