216

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

2 Answers 2

227

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?

8
  • @cmhughes any idea how I can decrease the font size for text within the table?
    – Goaler444
    May 4, 2013 at 13:00
  • 4
    @Goaler444 try adding \small just after \begin{longtable}
    – cmhughes
    May 4, 2013 at 15:22
  • 18
    Is there any way to keep repeating the table header at each new page? Aug 29, 2014 at 1:50
  • 2
    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
  • 12
    @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
5

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.