![Функции, определенные с помощью цикла (\foreach), заставляют картинку tikz уходить далеко](https://rvso.com/image/449623/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8%2C%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D1%86%D0%B8%D0%BA%D0%BB%D0%B0%20(%5Cforeach)%2C%20%D0%B7%D0%B0%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D1%8F%D1%8E%D1%82%20%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D1%83%20tikz%20%D1%83%D1%85%D0%BE%D0%B4%D0%B8%D1%82%D1%8C%20%D0%B4%D0%B0%D0%BB%D0%B5%D0%BA%D0%BE.png)
В следующем MWE картинка tikz находится за пределами бумаги. Когда я заменяю 10 на большее число, картинка смещается еще дальше вправо. Есть идеи?
\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}
решение1
Как уже упоминалось в комментарии, добавьте знаки процента. (В этом случае один из знаков процента можно опустить без вреда из-за правил TeX, но в этом конкретном случае можно оставить и все знаки процента.)
\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}
В качестве альтернативы можно использовать синтаксис expl3, но это игнорируетвсе пространстваи вносит некоторые другие изменения, поэтому убедитесь, что вы знаете, что делаете.
\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