我正在尝试使用循环加载大量 CSV\pgfplotstableread
并动态地为它们分配宏名称\pgfplotsinvokeforeach
。我试过了\csname
,但怀疑这是完全错误的方法!
\newcommand{\PlotsAuto}[1]{
\pgfplotsinvokeforeach{NoGender,Female,Male}{
\pgfplotstableread{../Data/My#1data-##1.csv}{\csname \##1\endcsname}
}
}
我无法用 来做到这一点,\foreach
因为加载的表对于该环境来说是本地的。(我尝试过,\foreach \gender/\name in {NoGender/\NoGender....
但没有成功)
那么我如何在创建图表的未来循环中访问这些内容?
答案1
这似乎是一个常见的扩展问题。但请不要用宏来处理这个数字。这确实是不必要的复杂化。请考虑使用批处理文件名处理。
\documentclass{article}
\usepackage{pgfplotstable,filecontents}
\begin{filecontents*}{Myreddata-Female4yr.csv}
a b
1 2
3 4
\end{filecontents*}
\begin{filecontents*}{Myreddata-Male23.csv}
a b
5 6
7 8
\end{filecontents*}
\newcommand{\PlotsAuto}[1]{%
\pgfplotsinvokeforeach{Female4yr,Male23}{%
\begingroup\edef\temp{%
\endgroup\noexpand\pgfplotstableread{My#1data-##1.csv}{\csname ##1\endcsname}}%
\temp%
}%
}
\begin{document}
\PlotsAuto{red}
\expandafter\pgfplotstabletypeset\csname Male23\endcsname
\expandafter\pgfplotstabletypeset\csname Female4yr\endcsname
\end{document}