как сделать подпись поверх длинной таблицы?

как сделать подпись поверх длинной таблицы?

Я хочу иметь такой длинный стол:

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

но когда я пытаюсь скомпилировать это, я получаю эту ошибку: !Misplaced \noalign

когда я пишу подпись после последней \hline, это работает нормально. Я хочу, чтобы подпись была сверху моей таблицы, но появляется эта ошибка.

решение1

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

и вам следует поставить \labelпосле \caption, это имеет больше смысла.

решение2

Другой способ: использовать голову и первую голову:

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

решение3

У меня возникла проблема с этим, так как я генерирую свои таблицы с помощью библиотеки pandas из python. Вот таким образом.

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

Но проблема в том, что pandas генерирует мои длинные таблицы следующим образом:

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

Поэтому я попытался поставить \labeland \captionперед \toprule, но это никогда не компилируется. Поэтому моим решением было изменить \toprulefor \hlineи тогда у вас будет ваша компиляция, например:

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

Связанный контент