pgfplotstable: 2 行以上のヘッダー行 (例: 名前、単位、コメント) を含む csv をタイプセットします

pgfplotstable: 2 行以上のヘッダー行 (例: 名前、単位、コメント) を含む csv をタイプセットします

Origin からエクスポートすると、次のような Data.csv が取得されます。

Short_Name1; Short_Name2
Long_Name1;  Long_Name2
Unit1;       Unit2
Comment1;    Comment2
1,1;         2,0
3,5;         4,3

これを pgfplotstable で印刷しようとすると、次のような操作を行う必要があります。

%!TEX TS-program = lualatex
\documentclass[]{scrartcl}


%\usepackage{pgfplots}
\usepackage{
            pgfplotstable,
            booktabs,
            array,
            colortbl,
            }

\pgfplotsset{compat=1.12}

\begin{document}

\pgfplotstabletypeset[
    col sep=semicolon,
    read comma as period,
    fixed,
    zerofill,
%   string type,
    precision=2,
    ignore chars={\_},
   %dec sep align, %prints both strings in first column, aligned at the comma
%
    every head row/.style={
        before row={\toprule },
       after row={\midrule },
        },
    every last row/.style={
        after row=\bottomrule
        },
    every even row/.style={
        before row={\rowcolor[gray]{0.985}}}, %also a problem
%
    %every row 0/.style={string type}, %does not work
%    \directlua{    for i = 0, 2 do  %does also not work
%               for j= 0,1 do 
%                   tex.sprint( "every row ",i," column ",j,"\noexpand/.style={string type}, " ) 
%               end
%           end }
    every row 0 column 0/.style={string type},
    every row 0 column 1/.style={string type},
    every row 1 column 0/.style={string type},
    every row 1 column 1/.style={string type},
    every row 2 column 0/.style={string type},
    every row 2 column 1/.style={string type},
%
    every row 2/.style={
        after row={\midrule },
        },
]
    {Data.csv} 

%looks like it should as workaround, but is not processed properly
\directlua{     for i = 0, 2 do
            for j= 0,1 do 
                tex.sprint( "every row ",i," column ",j,"\noexpand/.style={string type}, " ) 
            end
        end }



\end{document}

もっと便利な方法はありますか?

もし可能であれば、

Long_Name1 [Unit1] 

1 つのヘッダー行として扱い、残りの 2 つの文字列行は無視します。Origin 経由で 2 つだけエクスポートしても問題ありません。

編集: すでに試しましたがevery row no 0/.style={string type},、エラーが発生します。

header=false列名が付けられる0 1 2 3ので、各列名を次のように指定する必要があります。

columns/<index>/.style={
        string type,
        column type=l,
        column name={Long_Name [Unit]}
        },

編集2:header=false -「問題」はすでに解決されていますここ

それで私は処理を試みようと思います

Long_Name1;  Long_Name2
Unit1;       Unit2
1,1;         2,0
3,5;         4,3

Long_Name1 [\si{Unit1}];  Long_Name2 [\si{Unit2}]
1,1;         2,0
3,5;         4,3

lua を使用しましたが (Python の方が簡単でしょう…)、生成するコードも every row 0 column 0/.style={string type}, 機能しませんでした (pgfplotstable の外部で実行すると、その行が確実に出力されます)。

それは通常のワークフローであり、すでに簡単な解決策があるはずだと思いました...

関連情報