我知道我可以通过以下方式创建新专栏
create on use/newCol/.style={
create col/set list={Some content, Some other content}
},
columns/newCol/.style={string type},
columns = {newCol, [index] 0, [index] 1, [index] 2, [index] 3},
一切都很好,但如果我不知道表格总共有多少列怎么办?
有没有办法简单地将新列(预)附加到现有列,而无需指定表中的所有其他列?
答案1
由于您不知道列数,我假设您正在从外部文件读取表格。
在这种情况下,您只需在 pgfplotstable 之前添加一个普通的单列表即可。
\documentclass{article}
\usepackage{pgfplotstable}
\usepackage{filecontents}
\usepackage{booktabs}
\begin{filecontents*}{\jobname.dat}
x y
1 2
2 3
3 4
4 5
\end{filecontents*}
\pgfplotstableset{% global config, for example in the preamble
every last row/.style={after row=\bottomrule}
}
\begin{document}
\begin{table*}
\begin{tabular}{c}
\toprule
This\\
\midrule
is \\
a column \\
added \\
before \\
\bottomrule
\end{tabular}%
\pgfplotstabletypeset[
every head row/.style={before row=\toprule,after row=\midrule}
]{\jobname.dat}
\end{table*}
\end{document}
答案2
也许我误解了这个任务,但这似乎没问题:
\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\begin{document}
\section{Example-Table with unknown / random Number of Columns and Rows}
\subsection{Raw Data}
\pgfmathsetmacro\xrand{random(3, 7)}
\pgfmathsetmacro\yrand{random(5, 11)}
\xrand\, colums and \yrand\, rows.
\newwrite\mytable
\immediate\openout\mytable=\jobname-table.txt%
\newcommand{\row}{}% reserv Name
\foreach \Y in {1,...,\yrand}{%%%
\let\row=\empty% create List
\foreach \X in {1,...,\xrand}{%%
\pgfmathparse{\Y}
\ifx\empty\row{} \xdef\row{\pgfmathresult}%
\else \xdef\row{\row,\pgfmathresult}%
\fi
}%%
\noindent\row \\ % show
\immediate\write\mytable{\row}% save
}%%%
\immediate\closeout\mytable
%Test: \pgfplotstabletypeset[string type, col sep=comma]{\jobname-table.txt}
\subsection{Add a new Column}
\pgfplotstableset{create on use/NewCol/.style={
create col/set list={a,b,c,d},
},
columns/NewCol/.style={string type},
}
\pgfmathsetmacro\Xrand{\xrand-1}
\pgfplotstabletypeset[col sep=comma,
columns={NewCol,0,1,...,\Xrand},
empty cells with={---},
every head row/.style={after row=\hline}
]{\jobname-table.txt}
\end{document}
请注意,该部分\newwrite\mytable .......
与问题本身无关。它只是一种创建行数和列数未知或随机的任意表的“复杂”方法。