245

I have a table that takes up a full page, but I want it to start on a page that already has some text and then continue onto the next page (i.e. it's ok if the table gets broken up and spans two pages). It is a simple two column table:

\begin{table}[h]
\centering
\begin{tabular}{| p{.20\textwidth} | p{.80\textwidth} |} 
\hline
foo & bar \\ \hline 
foo & bar \\ \hline 
...
\end{tabular}
\end{table}

I guess I need longtable? How do I use it?

2
  • 15
    The longtable package documentation is available on CTAN. It includes one very detailed example.
    – Werner
    Aug 24, 2011 at 23:30
  • 3
    Changing tabular -> longtable will do the trick. They have perfect comformance afaict. Mar 1, 2021 at 22:25

2 Answers 2

260

There are a few options described in How can I make a table that takes up more than a single page?

I've put a MWE below using the longtable package; I deliberately didn't put the longtable in the table environment so that it wouldn't float, and would show that it breaks across pages.

As described in @Werner's comment, the documentation has a lot of detail.

\documentclass{article}

\usepackage{longtable}
\usepackage{lipsum} % just for dummy text- not needed for a longtable

\begin{document}
\lipsum[1]
\lipsum[1]
\lipsum[1]

%\begin{table}[h] 
%\centering
\begin{longtable}{| p{.20\textwidth} | p{.80\textwidth} |} 
\hline
foo & bar \\ \hline 
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
\caption{Your caption here} % needs to go inside longtable environment
\label{tab:myfirstlongtable}
\end{longtable}
%\end{table} 

Table \ref{tab:myfirstlongtable} shows my first longtable.
\end{document}

As a side note, some folks would advocate against using vertical lines in a table- that's a separate discussion though :) Have a look at Why not use vertical lines ('|') in a tabular?

12
  • 4
    @Goaler444 try adding \small just after \begin{longtable}
    – cmhughes
    May 4, 2013 at 15:22
  • 23
    Is there any way to keep repeating the table header at each new page? Aug 29, 2014 at 1:50
  • 4
    When I make a table longer than a single page, it still starts the table on the next empty page. Is there a way of getting it to start from where it is in the code?
    – Anake
    Mar 1, 2016 at 22:26
  • 13
    @DanielBonetti: \begin{longtable}[H]{|m{0.2\linewidth}|m{0.35\linewidth}|m{0.15\linewidth}|m{0.3\linewidth}|} \hline \textbf{1} & \textbf{2} & \textbf{3} & \textbf{4}\\\hline \endfirsthead \hline \textbf{1} & \textbf{2} & \textbf{3} & \textbf{4}\\\hline \endhead Content ... \end{longtable}
    – Michael S.
    Sep 5, 2016 at 15:26
  • 1
    Thank you for this response!
    – cconsta1
    Aug 18, 2023 at 16:59
13

You may try longtblr environment of tabularray package. It has X column and can be used in two column documents.


\documentclass{article}
\usepackage[a6paper,margin=15mm]{geometry}

\usepackage{tabularray}
\usepackage{xcolor}

\begin{document}

The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog.

\begin{longtblr}[
  caption = {Long Title},
  label = {tab:test},
]{
  colspec = {|XX[4]|},
  rowhead = 1,
  hlines,
  row{even} = {gray9},
  row{1} = {olive9},
} 
Head & Head \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
foo  & bar \\
\end{longtblr}

The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog.

\end{document}

enter image description here

1
  • This is good with automatic table title in the second page. By the way, to use "tabularray", maybe you should do something else. For overlef, one way is useful: Menu -> TeX Live Version -> 2021.
    – ML Xu
    Oct 31, 2022 at 8:58

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .