pgfplotstable 和列类型存在问题=>{\raggedright}p{}

pgfplotstable 和列类型存在问题=>{\raggedright}p{}

我有几个 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}

在此处输入图片描述

相关内容