Использование pgfplotstable и longtable с .csv

Oct 15 2020

Я пытаюсь импортировать .csv при использовании longtableи pdfplotstabletypeset. Я не могу заставить longtableкоманду работать.

\documentclass[12pt,a4paper,oneside]{report}

\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{longtable}
\usepackage{pgfplotstable}
\usepackage{ragged2e}
\usepackage{pdfpages}
\usepackage{pdflscape}
\usepackage{tikz}
\usepackage{subcaption}

\begin{filecontents*}{MYFILE.csv}
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
\end{filecontents*}

\begin{document}

\begin{table}[!htb]
%   \setstretch{1.1}
    \pgfplotstabletypeset[
        column type=,
        col sep=comma, 
        string type,
        begin table={\begin{longtable}{p{5cm}p{10cm}}},
%       begin table={\begin{longtable}{@{*}r||p{1in}@{*}},
            end table={\end{longtable}},
        every head row/.style={
            before row={\toprule},
            after row={\midrule\addlinespace}},
        assign column name/.style={/pgfplots/table/column name={\textbf{#1}}},
        every last row/.style={after row=\midrule},
        every row no 5/.style={after row=\toprule\addlinespace},
        every row no 6/.style={after row=\midrule\addlinespace},
        every row 6 column 0/.style={postproc cell content/.style={@cell content=\textbf{##1}}},
        every row no 14/.style={after row=\toprule\addlinespace},
        every row no 15/.style={after row=\midrule\addlinespace},
        every row 15 column 0/.style={postproc cell content/.style={@cell content=\textbf{##1}}},
        every row no 18/.style={after row=\toprule\addlinespace},
        every row no 19/.style={after row=\midrule\addlinespace},
        every row 19 column 0/.style={postproc cell content/.style={@cell content=\textbf{##1}}},
        every row no 22/.style={after row=\toprule\addlinespace},
        every row no 23/.style={after row=\midrule\addlinespace},
        every row 23 column 0/.style={postproc cell content/.style={@cell content=\textbf{##1}}},
        every row no 26/.style={after row=\toprule\addlinespace},
        every row no 27/.style={after row=\midrule\addlinespace},
        every row 27 column 0/.style={postproc cell content/.style={@cell content=\textbf{##1}}},
    ]{MYFILE.csv}
\end{table}

\end{document}

Ответы

TorbjørnT. Oct 14 2020 at 23:48

tableСреда не может сломаться между страницами, longtableпредназначается , чтобы быть использованы вне tableс. Следовательно, удалите \begin{table}и \end{table}. Если вы хотите, чтобы заголовок был в верхней части таблицы, сделайте, например,every head row/.style={before row={\caption{foo}\\\toprule}, ...

SP1 Oct 15 2020 at 14:38

Вот код, который у меня сработал:

\pgfplotstabletypeset[
    column type=,
    col sep=comma, 
    string type,
    begin table={\begin{longtable}{p{5cm}p{10cm}}},
        end table={\end{longtable}},
    every head row/.style={
        before row={\toprule},
        after row={\midrule\addlinespace}},
    assign column name/.style={/pgfplots/table/column name={\textbf{#1}}},
    every last row/.style={after row=\midrule},
    every row no 5/.style={after row=\toprule\addlinespace},
    every row no 6/.style={after row=\midrule\addlinespace},
    every row 6 column 0/.style={postproc cell content/.style={@cell content=\textbf{##1}}},
    every row no 14/.style={after row=\toprule\addlinespace},
    every row no 15/.style={after row=\midrule\addlinespace},
    every row 15 column 0/.style={postproc cell content/.style={@cell content=\textbf{##1}}},
    every row no 18/.style={after row=\toprule\addlinespace},
    every row no 19/.style={after row=\midrule\addlinespace},
    every row 19 column 0/.style={postproc cell content/.style={@cell content=\textbf{##1}}}
    ]{MYFILE.csv}