使用 PgfplotsTable 根据值动态添加行

使用 PgfplotsTable 根据值动态添加行

考虑表中的行testdataExisting.dat

  • 如果type=0vala必须放在一行中 ,valb不应显示。
  • 如果是type=1vala必须将其放在一行中,并且valb必须将其放在具有相同 id 的后续行中,可能通过使用multirow

我的 MWE:

\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{pgfplotstable}
\pgfplotsset{width=10cm,compat=1.6}
\usepackage{filecontents}


\begin{filecontents}{testdataExisting.dat}
id vala valb type
1  24   75   0
2  56   87   1
3  11   46   0
\end{filecontents}

\begin{filecontents}{testdataGenerated.dat}
id val  type
1  24   0
2  56   1
2  87   1
3  11   0
\end{filecontents}
 \begin{document}
Table 1

 \pgfplotstabletypeset[col sep=space,columns={id,vala,valb,type},]{testdataExisting.dat}

Table 2

 \pgfplotstabletypeset[col sep=space,columns={id,val,type},
    columns/type/.style={string type,column type=r},
 ]{testdataGenerated.dat}
 \end{document}

输出:

这里有一个解决方案另一个与此问题类似的问题。我无法针对此问题采用该解决方案。我无法处理根据值触发的新行的添加。我需要使用 PgfplotsTable 的解决方案。

答案1

\documentclass{article}
\usepackage{readarray}
\begin{document}
\readdef{testdataExisting.dat}{\data}
\readArrayij{\data}{raw}{\ncols}

\begin{tabbing}
\= \Arrayij{raw}{1}{1} ~~~~~~\= val  ~~~~~\= \Arrayij{raw}{1}{\ncols}\\
\newcounter{index}\setcounter{index}{1}%
\whiledo{\value{index} < \nrows}{
  \addtocounter{index}{1}%
  \>\Arrayij{raw}{\value{index}}{1} \> \Arrayij{raw}{\value{index}}{2}%
                                   \> \Arrayij{raw}{\value{index}}{\ncols}\\
  \if 1\csname rawX\roman{index}Xiv\endcsname%
    \>\Arrayij{raw}{\value{index}}{1} \> \Arrayij{raw}{\value{index}}{3}%
                                   \> \Arrayij{raw}{\value{index}}{\ncols}\\
  \fi%
}
\end{tabbing}

\end{document}

文件在testdataExisting哪里

id vala valb type
1  24   75   0
2  56   87   1
3  11   46   0

输出为:

enter image description here

相关内容