98

I have a document containing a table which is slightly too wide for the page. But instead of growing to the right side only, I would like to have it centered on the page.

I have tried to use the center environment but this doesn't seem to help.

6

3 Answers 3

85

If a table (or any other horizontal box) is wider than the text (\textwidth) an overfull hbox warning is given and the content is placed anyway, which makes it run into the right margin. To avoid this and to suppress the error the content must be placed in a box with is equal or smaller than \textwidth. The \makebox macro with its two optional argument for the width and horizontal alignment can be used for this: \makebox[\textwidth][c]{<table>} will center the content. See Center figure that is wider than \textwidth and Place figures side by side, spill into outer margin were this is used for figures and further explained.

For more complicated tables, especially if they should contain verbatim material, you should use a different approach. \makebox reads the whole content as macro argument which does not allow verbatim content and is not very efficient (ok, nowadays the latter isn't really important any longer). The \Makebox macro or the Makebox environment from the realboxes can be used as an replacement. It reads the content as a box. Better would be the adjustbox macro or environment from the adjustbox package together with the center key.

\begin{adjustbox}{center}
<your table (i.e. the tabular or similar environment)>
\end{adjustbox}

Which centers the content to \linewidth (mostly identical to \textwidth) by default but also takes any other length as an optional value, e.g. center=10cm. Note that <your table> should be a tabular or equivalent environment, not a table environment.


You can now also use the tabular key of adjustbox (as first key!) to save the extra \begin{tabular} .. \end{tabular} which is then added internally.

\begin{adjustbox}{tabular=lll,center}
     a & b & c \\
     a & b & c \\
     a & b & c \\
\end{adjustbox}
12
  • 3
    @Dejan: \centerline reads the content as a macro argument as well and is basically the same as \makebox[\hsize][c], using more lower-level TeX commands than LaTeX ones. It will work, but \makebox or \adjustbox is more flexible. Commented Dec 28, 2011 at 8:52
  • 4
    I don't know how to get this solution to work. I use adjustbox but it throwing error. Not in outer par mode It refers to my \begin{table}[] code
    – Whitecat
    Commented Nov 17, 2015 at 17:36
  • 25
    I found out the problem is \begin{adjustbox}{center} should go just before \begin{tabular}{ll|l} not \begin{table}[] The answer should be adjusted, as it is not clear what <your table> means.
    – Whitecat
    Commented Nov 17, 2015 at 17:42
  • 1
    @Whitecat: The confusion about table and tabular is widespread under beginners. The table is the floating container which also provides the possibility of a caption and the tabular is for creating the actual table, which can also be used outside table as long you don't need a caption. I changed my answer to make this more clear. Commented Jan 17, 2019 at 16:39
  • 1
    Unfortunately, this doesn't seem to work with longtables :-/
    – oulenz
    Commented Oct 19, 2020 at 12:08
35

Put your tabular block into \centerline{}. The table will extend evenly into both margins if it's wider than \textwidth.

1
  • 3
    This works great as long as there is no new lines between centerline and the table.
    – fotanus
    Commented Aug 7, 2015 at 15:44
17

I’ve seen that an answer based on the use of \centerline has been considered; I then thought that even the following crude hack, that I sometimes employ as a quick one-shot cure for similar situations, could be worth mentioning:

% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly 
                                 % declare the paper format.

\usepackage[T1]{fontenc}         % Not always necessary, but recommended.
% End of standard header.  What follows pertains to the problem at hand.

\usepackage{mwe} % facilitates the writing of Minimale Working Examples like 
                 % this one, not to be used in actual documents



\begin{document}

\lipsum[1]
\begin{center}
    \addtolength{\leftskip} {-2cm} % increase (absolute) value if needed
    \addtolength{\rightskip}{-2cm}
    \begin{tabular*}{1.2\textwidth}{@{\extracolsep{\fill}}|ccc|}
        \hline
        Does & this & table  \\
        really & need & to  \\
        be & so & wide?  \\
        \hline
    \end{tabular*}
\end{center}

It works with floating objects, too: see, for example, figure~\ref{fig:a} and
table~\ref{tab:b}.

\begin{figure}[tbp]
    \centering
    \addtolength{\leftskip} {-2cm}
    \addtolength{\rightskip}{-2cm}
    \includegraphics[width=1.2\textwidth,height=5cm]{image}
    \caption{A example image}
    \label{fig:a}
\end{figure}

\begin{table}[bp]
    \centering
    \addtolength{\leftskip} {-2cm}
    \addtolength{\rightskip}{-2cm}
    \begin{tabular*}{1.2\textwidth}{@{\extracolsep{\fill}}|ccc|}
        \hline
        And & what & about  \\
        this & one, & eh?  \\
        \hline
    \end{tabular*}
    \caption{An example table}
    \label{tab:b}
\end{table}

\lipsum[2]

\end{document}

This is the output:

Output of the above code

5
  • 3
    \addtolength{\leftskip}{-2cm} and \addtolength{\rightskip}{-2cm} seems a cleaner solution to me.
    – mmj
    Commented Jun 15, 2018 at 7:15
  • @mmj: I’m afraid I don’t understand: didn’t I do exactly that?
    – GuM
    Commented Jun 15, 2018 at 8:22
  • Maybe I wasn't clear enough, I should have written explicitly "your solution \addtolength... seems cleaner than the others", although it is much less voted.
    – mmj
    Commented Jun 16, 2018 at 19:59
  • @mmj: Oh, now I see what you meant! Indeed, it has been a little silly of me not to understand it in the first place! And—well—thanks for your appreciation…
    – GuM
    Commented Jun 16, 2018 at 23:15
  • This answer is much easier to get working. At least if you are working with non-floating tables. Commented Dec 11, 2022 at 2:13

You must log in to answer this question.

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