我有一个由 pgfplots 中的表生成的(多)线图:
\begin{document}
\begin{tikzpicture}
\begin{axis}
\pgfplotstableread{table.tsv}\loadedtable
\foreach \metavar in {foo,bar} {
\addplot table[x index=1,y=\metavar] from \loadedtable node {\metavar};
}
\end{axis}
\end{tikzpicture}
\end{document}
效果很好除了对于我想放置在每行末尾的节点,作为一种排队传奇。
这里,LaTeX 抱怨道:
! Argument of \T1\metavar has an extra }.
<inserted text>
\par
如果我\metavar
用一些文字文本替换节点标签,一切都会编译正常,但这当然会忽略要点\foreach
。那么如何在这样的地方访问循环变量呢?
答案1
在这种情况下,您必须使用\pgfplotsforeachungrouped
,以确保循环不会在其自己的组内执行。
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\pgfplotstableread[row sep=crcr]{
X foo bar\\
1 10 20\\
2 10 30\\
3 20 40\\
}\loadedtable
\pgfplotsinvokeforeach {foo,bar} {
\addplot table [x index=0,y=#1] \loadedtable node [anchor=south] {#1};
}
\end{axis}
\end{tikzpicture}
\end{document}