![用循環(\foreach)定義的函數使 tikz 圖片走得很遠](https://rvso.com/image/449623/%E7%94%A8%E5%BE%AA%E7%92%B0%EF%BC%88%5Cforeach%EF%BC%89%E5%AE%9A%E7%BE%A9%E7%9A%84%E5%87%BD%E6%95%B8%E4%BD%BF%20tikz%20%E5%9C%96%E7%89%87%E8%B5%B0%E5%BE%97%E5%BE%88%E9%81%A0.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