我已经使用它pgfplotstable
一段时间了,最初我从文件中读取数据.csv
。我正在编写几个打印表格的包,所以我编写了各种\def
s 来封装一些表格打印例程。到目前为止一切顺利。现在我想从头开始制作表格,突然间我收到错误。如果你运行 MWE,它会打印一个表格。如果你取消注释最后一个调用,就会产生以下错误文本
./Repeated Plots.tex:23: Package pgfplots Error: \pgfplotslistfront\ from
\pgfplotstable@colnames\ although list is EMPTY.
当我从文件中读取表格时,我可以一遍又一遍地创建具有相同定义的表格,但是从头开始创建表格时就会发生冲突。
平均能量损失
\documentclass[border=6mm]{standalone}
\usepackage{pgfplotstable}
\usepackage{booktabs}
\pgfplotsset{compat=1.9}
%: table printing routine
\def\printtable#1{%
\pgfplotstableset{%
create on use/set/.style={create col/expr={1+\pgfplotstablerow}},
every head row/.style={before row=\toprule, after row=\midrule},
every last row/.style={after row=\bottomrule}
}
\pgfplotstablenew[columns={set}]{#1}\testtable
\pgfplotstablecreatecol[create col/assign/.code={%
\getthisrow{set}\tval\pgfmathtruncatemacro\entry{2*\tval-1}%
\pgfkeyslet{/pgfplots/table/create col/next content}\entry
}]{test}\testtable
\pgfplotstabletypeset[columns={test}]\testtable
}
\begin{document}
\printtable{10}\par
%\printtable{5}
\end{document}
答案1
这似乎是一个分组问题:显然,表的数据结构不能被覆盖,否则会出现问题。
编辑:这是 中的一个错误pgfplotstable
;它已被修复并将从pgfplotstable
1.11 版本开始消失(当前版本是 1.10)。
一种解决方案可能是将组引入到您的宏中,即\begingroup ... \endgroup
在宏的开始或结束处插入:所有局部变量将在之后被释放\endgroup
。
如果你需要宏之外的这些变量,你也可以考虑在周围编写组用法你的宏,例如
{%
\printtable{10}
}%
...
{%
\printtable{5}
}%
请注意,\begingroup/\endgroup
在宏内部通常是首选;在主文档中,我倾向于使用花括号(对于所有实际用途来说都有相同的效果)。