For循环在pgfplot中是"stucked"

For loop is "stucked" inside a pgfplot

我正在尝试使用 pgfplots 在乳胶中制作一些图;因为我要制作几个不同的图,所以我尝试使用 for 循环。不幸的是,没有成功。实际上,代码执行了三次,但是 for 循环的变量值始终等于定义循环的列表的第一个值。

例如下面的最小代码

\documentclass[a4paper, 11pt]{article}

\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\usepgfplotslibrary{groupplots}

\begin{document}

\makeatletter
\begin{tikzpicture}
  \begin{groupplot}[group style={group size= 2 by 3}]
    \@for\refin:={1,2,3}\do{%
      \nextgroupplot[ylabel={$h = \frac{1}{\refin}$}]
        \addplot {exp(x)};
      \nextgroupplot
        \addplot{2  * x};
    }
  \end{groupplot}
\end{tikzpicture}
\makeatother

\end{document}

生成一个包含 6 个绘图的图形(如预期的那样),但标签始终为 1/1 而不是 1/2 或 1/3。为什么?

您可以使用与 https://tex.stackexchange.com/a/539754/36296 相同的技巧:

\documentclass[a4paper, 11pt]{article}

\usepackage{pgffor}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\usepgfplotslibrary{groupplots}

\begin{document}

\begin{tikzpicture}
  \begin{groupplot}[group style={group size= 2 by 3}]
    \pgfplotsforeachungrouped \x in {1,2,3}{
    \edef\tmp{
        \noexpand\nextgroupplot[ylabel={$h = \frac{1}{\x}$}]
        \noexpand\addplot {exp(x)};     
    }
    \tmp          
      \nextgroupplot
        \addplot{2  * x};
    }
  \end{groupplot}
\end{tikzpicture}


\end{document}