在 legendentry 中使用宏

在 legendentry 中使用宏

我正在使用循环创建多个图foreach。我希望​​每个图都有一个依赖于循环参数的图例条目。我的第一次尝试是(文章底部的完整 MWE)

\foreach \p in {0, .125, ..., 1}{
    \addplot {\p * x};
    \addlegendentry{\p}
}

但是这会引发错误。我尝试\addlegendentry{\p}用替换\expandafter\addlegendentry\p。这在一定程度上有效,只是似乎只有 的第一个字符\p最终出现在图例中。有没有办法将 的全部内容\p放入图例中?我不太熟悉,\expandafter所以我怀疑错误可能出在那里。

MWE 演示了截断图例条目的问题:

\documentclass{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
        legend pos=outer north east,
    ]
    \foreach \p in {0, .5, ..., 4} {
        \addplot {\p * x};
        \expandafter\addlegendentry\p
    }
\end{axis}
\end{tikzpicture}
\end{document}

生成的pdf:

生成的 pdf

答案1

OP 的提议\expandafter\addlegendentry\p只是将一次扩展的第一个字符(第一个标记)\p作为 的参数\addlegendentry。因此, 的扩展\p需要保留在括号组中,以便所有数字都被视为参数。为了实现这一点...

关键是\expandafter\addlegendentry\expandafter{\p}

\documentclass{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
        legend pos=outer north east,
    ]
    \foreach \p in {0, .5, ..., 4} {
        \addplot {\p * x};
        \expandafter\addlegendentry\expandafter{\p}
    }
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容