creando csv doble encabezado simple

creando csv doble encabezado simple

Estoy intentando incluir las dos primeras filas como encabezados. Me gustaría tener las unidades, - - m m metc. en cada página y otra línea debajo.

No soy un usuario avanzado decsvsimple, y no he podido encontrar respuestas en el manual.

La primera página se ve así:

primero

Y el segundo:

segundo

Ya he solucionado el problema de tener símbolos de látex como \delta.

Además, el otro problema al que me enfrento es que no puedo hacer que el encabezado se muestre en todas las páginas.

 \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}

Realmente agradecería algo de ayuda.

Respuesta1

Bueno, no diste MWE, así que en algunas partes solo puedo adivinar, pero el principal culpable aquí es usar las dos primeras líneas csv en tus encabezados para longtable y omitir las dos primeras líneas csv que muestran los datos.

Utilice el siguiente código para \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

y para el \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

Las líneas agregadas \csvreaderimprimen la segunda línea con unidades en los encabezados de su tabla.

Para imprimir la tabla completa solo tenemos que empezar a imprimir con la línea 3 (la línea filter test=\ifnumgreater{\thecsvinputline}{2},comprueba si el número de línea actual es mayor que 2):

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

Entonces, con el siguiente mwe completo (tenga en cuenta que los encabezados necesitan trabajo que ya haya realizado, use el código que no se muestra):

\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}

y su resultado:

página resultante 1

muestra las líneas csv 1 y 2 como encabezados de tabla y comienza el contenido de la tabla con la línea 3, y para la segunda página también se muestran las líneas 1 y 2 como encabezado como se desea:

ingrese la descripción de la imagen aquí

información relacionada