考虑表中的行testdataExisting.dat
:
- 如果
type=0
,vala
必须放在一行中 ,valb
不应显示。 - 如果是
type=1
,vala
必须将其放在一行中,并且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
输出为: