重复的 pgfplotstable 调用导致错误

重复的 pgfplotstable 调用导致错误

我已经使用它pgfplotstable一段时间了,最​​初我从文件中读取数据.csv。我正在编写几个打印表格的包,所以我编写了各种\defs 来封装一些表格打印例程。到目前为止一切顺利。现在我想从头开始制作表格,突然间我收到错误。如果你运行 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;它已被修复并将从pgfplotstable1.11 版本开始消失(当前版本是 1.10)。


一种解决方案可能是将组引入到您的宏中,即\begingroup ... \endgroup在宏的开始或结束处插入:所有局部变量将在之后被释放\endgroup

如果你需要宏之外的这些变量,你也可以考虑在周围编写组用法你的宏,例如

{%

\printtable{10}

}%

...

{%
\printtable{5}
}%

请注意,\begingroup/\endgroup在宏内部通常是首选;在主文档中,我倾向于使用花括号(对于所有实际用途来说都有相同的效果)。

相关内容