ループ(\foreach)で定義した関数は、tikz画像を遠くへ移動させます

ループ(\foreach)で定義した関数は、tikz画像を遠くへ移動させます

次の 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 の規則により、パーセント記号の 1 つを省略しても問題はありませんが、この特定のケースでは、パーセント記号をすべて使用しても問題ありません。)

\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

関連情報