![ループ(\foreach)で定義した関数は、tikz画像を遠くへ移動させます](https://rvso.com/image/449623/%E3%83%AB%E3%83%BC%E3%83%97%EF%BC%88%5Cforeach%EF%BC%89%E3%81%A7%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%9F%E9%96%A2%E6%95%B0%E3%81%AF%E3%80%81tikz%E7%94%BB%E5%83%8F%E3%82%92%E9%81%A0%E3%81%8F%E3%81%B8%E7%A7%BB%E5%8B%95%E3%81%95%E3%81%9B%E3%81%BE%E3%81%99.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 の規則により、パーセント記号の 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