como ter uma legenda em cima do longtable?

como ter uma legenda em cima do longtable?

Eu quero ter uma tabela longa como esta:

\begin{center}
\begin{longtable}{|p{2cm}|p{3cm}|p{7cm}|p{3cm}|}
\caption{my caption}
\hline
1 & 2 & 3 & 4\\ 
\hline 
\hline
1 & 2 & 3 & 4\\
\hline
1 & 2 & 3 & 4\\
\hline
.
.
.
1 & 2 & 3 & 4\\
\hline

\label{variability_impl_mech}
\end{longtable}
\end{center}

mas quando tento compilar isso, recebo este erro: !Misplaced \noalign

quando escrevo a legenda após a última \hline, funciona bem. Quero ter a legenda em cima da minha tabela mas aparece esse erro.

Responder1

\begin{longtable}{|p{2cm}|p{3cm}|p{7cm}|p{3cm}|}
\caption{my caption}\\    %%%%<===
\hline

e você deveria colocar o \labelafter \caption, o que faz mais sentido.

Responder2

Outra forma: use head e first head:

\documentclass{article}
\usepackage{longtable}
\begin{document}

\begin{longtable}{|p{2cm}|p{3cm}|p{7cm}|p{3cm}|}
\caption{my caption}
\label{variability_impl_mech}
\endfirsthead
\endhead
\hline
1 & 2 & 3 & 4\\ 
%\hline 
\hline
1 & 2 & 3 & 4\\
\hline
1 & 2 & 3 & 4\\
\hline
.
.
.
1 & 2 & 3 & 4\\
\hline
\end{longtable}

\end{document}

Responder3

Tive um problema com isso, pois gero minhas tabelas com a biblioteca pandas do python. Desta maneira.

print(tabla_1.to_latex(index = False, longtable=True))

Mas o problema é que os pandas geram minhas tabelas longas desta forma:

\begin{longtable}{lrrr}
\toprule
                  Nombre &  No datos &  P. rango &  total\_isnull \\
\midrule

Então tentei colocar \labeland \captionbefore \toprule, mas nunca compila. Então minha solução foi mudar \toprulepara \hlinee aí você terá sua compilação, exemplo:

\begin{longtable}{lrrr}
\label{YourLabel}
\Caption{YourCaption}
\hline
                  Nombre &  No datos &  P. rango &  total\_isnull \\
\midrule

informação relacionada