csv のシンプルなダブルヘッダーを作成する

csv のシンプルなダブルヘッダーを作成する

最初の 2 行をヘッダーとして含めようとしています。すべてのページに単位- - m m mなどを表示し、その下に別の行を表示したいと考えています。

私は上級ユーザーではないcsvシンプル、マニュアルで答えを見つけることができませんでした。

最初のページは次のようになります:

初め

そして2番目:

2番

\delta などの LaTeX シンボルの問題はすでに解決しました。

また、私が直面しているもう一つの問題は、ヘッダーをすべてのページに表示できないことです。

 \begin{longtable}{lllllllllll}
   \caption{Database of Ropax Ships.}\\
    \toprule
    \csvreader[
        head=false,
        late after line=\\,
        filter equal={\thecsvinputline}{1},
        ]{data_appendix.csv}{}{\csvcoli & \csvcolii & \csvcoliii & \csvcoliv & \csvcolv & \csvcolvi & \csvcolvii & \csvcolviii & \csvcolix}
    \midrule
    \endfirsthead
    \toprule
        \csvreader[
        head=false,
        late after line=\\,
        filter equal={\thecsvinputline}{1},
        ]{data_appendix.csv}{}{\csvcoli & \csvcolii & \csvcoliii & \csvcoliv & \csvcolv & \csvcolvi & \csvcolvii & \csvcolviii & \csvcolix}
    \midrule
    \endhead
    \midrule
    \endfoot
    \bottomrule
    \endlastfoot
    \csvreader[
        head=false,
        late after line=\\,
        filter not equal={\thecsvinputline}{1},
        ]{data_appendix.csv}{}{\csvcoli & \csvcolii & \csvcoliii & \csvcoliv & \csvcolv & \csvcolvi & \csvcolvii & \csvcolviii & \csvcolix}
\end{longtable}

本当に助けていただければ幸いです。

答え1

まあ、あなたは MWE を提供していないので、部分的には推測することしかできませんが、ここでの主な原因は、longtable のヘッダーで最初の 2 つの csv 行を使用し、データを表示する最初の 2 つの csv 行を省略していることです。

には次のコードを使用します\endfirsthead:

\csvreader[%
    head=false,
    late after line=\\,
    filter equal={\thecsvinputline}{1},
    ]{\jobname.csv}{}{\csvcoli & \csvcolii & \csvcoliii & \csvcoliv & \csvcolv & \csvcolvi & \csvcolvii & \csvcolviii & \csvcolix}
\csvreader[% <====================================================== added
    head=false,
    late after line=\\,
    filter equal={\thecsvinputline}{2}, % <========================= line 2
    ]{\jobname.csv}{}{\csvcoli & \csvcolii & \csvcoliii & \csvcoliv & \csvcolv & \csvcolvi & \csvcolvii & \csvcolviii & \csvcolix}
\midrule
\endfirsthead

そして\endhead

\toprule
    \csvreader[
    head=false,
    late after line=\\,
    filter equal={\thecsvinputline}{1},
    ]{\jobname.csv}{}{\csvcoli & \csvcolii & \csvcoliii & \csvcoliv & \csvcolv & \csvcolvi & \csvcolvii & \csvcolviii & \csvcolix}
    \csvreader[% <================================================== added 
    head=false,
    late after line=\\,
    filter equal={\thecsvinputline}{2}, % <========================= line 2
    ]{\jobname.csv}{}{\csvcoli & \csvcolii & \csvcoliii & \csvcoliv & \csvcolv & \csvcolvi & \csvcolvii & \csvcolviii & \csvcolix}
\midrule
\endhead

追加された行により、\csvreader単位付きの 2 行目がテーブル ヘッダーに印刷されます。

完全なテーブルを印刷するには、行 3 から印刷を開始するだけです (行はfilter test=\ifnumgreater{\thecsvinputline}{2},現在の行番号が 2 より大きいかどうかをチェックします)。

\csvreader[%
    head=false,
    late after line=\\,
    filter test=\ifnumgreater{\thecsvinputline}{2},
    ]{\jobname.csv}{}{\csvcoli & \csvcolii & \csvcoliii & \csvcoliv & \csvcolv & \csvcolvi & \csvcolvii & \csvcolviii & \csvcolix}

したがって、次の完全な mwe を使用します (ヘッダーにはすでに行った作業が必要であることを確認し、表示されていないコードを使用してください)。

\begin{filecontents*}{\jobname.csv}
Vessel Name , Year, LOA  , LBP  , B  , T   , D  , DUP  , Delta
-           , -   , m    , m    , m  , m   , m  , m    , t
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
Abel Matutes, 2010, 187  , 177  , 26.2, 6  , 9.2, 14.54, -
Aretousa    , 1995, 177.3, 166.4, 27  , 6.3, 9.1, 20.05, -
\end{filecontents*}


\documentclass{article}

\usepackage{csvsimple}
\usepackage{booktabs}
\usepackage{longtable}


\begin{document}

\begin{longtable}{lllllllllll}
   \caption{Database of Ropax Ships.}\\
    \toprule
    \csvreader[%
        head=false,
        late after line=\\,
        filter equal={\thecsvinputline}{1},
        ]{\jobname.csv}{}{\csvcoli & \csvcolii & \csvcoliii & \csvcoliv & \csvcolv & \csvcolvi & \csvcolvii & \csvcolviii & \csvcolix}
    \csvreader[% <====================================================== added
        head=false,
        late after line=\\,
        filter equal={\thecsvinputline}{2}, % <========================= line 2
        ]{\jobname.csv}{}{\csvcoli & \csvcolii & \csvcoliii & \csvcoliv & \csvcolv & \csvcolvi & \csvcolvii & \csvcolviii & \csvcolix}
    \midrule
    \endfirsthead
    \toprule
        \csvreader[
        head=false,
        late after line=\\,
        filter equal={\thecsvinputline}{1},
        ]{\jobname.csv}{}{\csvcoli & \csvcolii & \csvcoliii & \csvcoliv & \csvcolv & \csvcolvi & \csvcolvii & \csvcolviii & \csvcolix}
        \csvreader[% <================================================== added 
        head=false,
        late after line=\\,
        filter equal={\thecsvinputline}{2}, % <========================= line 2
        ]{\jobname.csv}{}{\csvcoli & \csvcolii & \csvcoliii & \csvcoliv & \csvcolv & \csvcolvi & \csvcolvii & \csvcolviii & \csvcolix}
    \midrule
    \endhead
    \midrule
    \endfoot
    \bottomrule
    \endlastfoot
    \csvreader[%
        head=false,
        late after line=\\,
        filter test=\ifnumgreater{\thecsvinputline}{2},
        ]{\jobname.csv}{}{\csvcoli & \csvcolii & \csvcoliii & \csvcoliv & \csvcolv & \csvcolvi & \csvcolvii & \csvcolviii & \csvcolix}
\end{longtable}

\end{document}

そしてその結果:

結果ページ 1

csv の行 1 と 2 をテーブル ヘッダーとして表示し、行 3 からテーブル コンテンツを開始します。また、2 ページ目には、希望どおりに行 1 と 2 がヘッダーとして表示されます。

ここに画像の説明を入力してください

関連情報