我有几个 cvs 文件,我想将它们包含在 pgfplotstable 中。大多数字段都是文本。各个列应>{\raggedright}p{}
为自动换行和左对齐文本类型。
以下 MWE 解释了我的问题。
\documentclass{scrartcl}
\usepackage{booktabs}
\usepackage{pgfplotstable}
\pgfplotstableset{
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=\bottomrule}
}
\begin{document}
\begin{table}
\pgfplotstabletypeset[
col sep=semicolon,string type,
columns/col1/.style={column type=>{\raggedright}p{.2\textwidth}},
columns/col2/.style={column type=>{\raggedright}p{.2\textwidth}},
% columns/col2/.style={column type=p{.2\textwidth}}
]
{
col1;col2
long text with multiple lines;long text with multiple lines
}
\end{table}
\end{document}
编译此程序会导致以下错误:
! Misplaced \noalign.
\midrule ->\noalign
{\ifnum 0=`}\fi \@aboverulesep =\aboverulesep \global \@...
l.20 }
I expect to see \noalign only after the \cr of
an alignment. Proceed, and I'll ignore this case.
但是,如果我用 columns/col2/ out 注释第一行并使用第二行(注释),则所有内容都可以编译,只是最后一列无法左对齐。如果还有更多列,则总是最后一列会导致问题。有人知道如何解决这个问题吗?
答案1
\arraybackslash
只需从array
包中添加即可\raggedright
。
之所以会这样,是因为这篇文章的答案是:\arraybackslash 对我的表格列执行什么操作?。
\documentclass{scrartcl}
\usepackage{array}
\usepackage{booktabs}
\usepackage{pgfplotstable}
\pgfplotstableset{
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=\bottomrule}
}
\begin{document}
\begin{table}
\pgfplotstabletypeset[
col sep=semicolon,string type,
columns/col1/.style={column type={>{\raggedright\arraybackslash}p{.2\textwidth}}},
columns/col2/.style={column type={>{\raggedright\arraybackslash}p{.2\textwidth}}},
]
{
col1;col2
long text with multiple lines;long text with multiple lines
}
\end{table}
\end{document}