254

What's the recommend way of changing the font size in a particular table? Is there a better way than enclosing all values with, for example, the \tiny function.

1

4 Answers 4

301

Scale down your table to the textwidth

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

\begin{table}
\resizebox{\textwidth}{!}{%
  \begin{tabular}{cc}
    Knuth & Lamport
  \end{tabular}}
\end{table}

\end{document}

then you have the optimal font size. However, all tabular lines are also scaled down which doesn't matter because it looks nicer.

11
  • 5
    use a tabularx with X columns
    – user2478
    Commented Aug 9, 2013 at 20:50
  • 1
    I must report that with XeLaTeX it does work, but with LuaLaTeX does not.
    – djnavas
    Commented Feb 10, 2016 at 6:45
  • 9
    It was not stated but the caption, \caption{demo table}, and label, \label{tab:demo}, go outside of the \resizebox area. Commented Feb 1, 2017 at 19:09
  • 3
    I have a table in landscape \begin{landscape}. When I used \textwidth for defining the width of the resized box, the resulting box had the width of the text of a portrait oriented page. For anybody having the same problem, use\linewidth instead of \textwidth, it solved the problem in my case. Source: tex.stackexchange.com/a/7686/118906
    – a tiger
    Commented Apr 26, 2017 at 13:14
  • 8
    Never use \resizebox with tables. If used on multiple tables with different number of columns, it will yield a different font size for each table in the document. It will be ugly. Commented Aug 27, 2020 at 10:15
163

Write \tiny immediately after \begin{table}. If you don't use a (floating) table environment, enclose your (e.g.) tabular environment in a group and write \tiny after \begingroup.

\documentclass{article}

\begin{document}

\begin{table}
\tiny
\centering
\begin{tabular}{cc}
Knuth & Lamport
\end{tabular}
\end{table}

\end{document}

EDIT: To change the fontsize for all tables (or even floats of every type), one may use the floatrow package (this also saves typing \centering in every table):

\documentclass{article}

\usepackage{floatrow}
\DeclareFloatFont{tiny}{\tiny}% "scriptsize" is defined by floatrow, "tiny" not
\floatsetup[table]{font=tiny}

\begin{document}

\begin{table}
\begin{tabular}{cc}
Knuth & Lamport
\end{tabular}
\end{table}

\end{document}
4
  • 7
    Just one quick additional remark: whenever your figure/table has a caption, be sure to change the font size only after you've specified the caption. This is particularly important if you're specifying tiny or scriptsize for the font size.
    – Mico
    Commented Aug 31, 2011 at 17:26
  • 1
    Anyway to specify font sizes between \tiny and \small? \tiny is too small for me to read and \small is the same as normal font size
    – Veridian
    Commented Aug 13, 2013 at 0:16
  • 3
    @sphere How about \footnotesize?
    – lockstep
    Commented Aug 13, 2013 at 6:53
  • 1
    Dredging up the past... @Mico, I don't see this behaviour at all. None of my captions (specified with \caption) are affected in any way with a fontsize declaration before them inside a table environment. Commented Jan 21, 2014 at 23:21
10

An easier way to change the font size for ALL tables:

\usepackage{etoolbox}

\AtBeginEnvironment{tabular}{\tiny}

3
  • 4
    Very, very dangerous. A tabular may be hidden in places you do not suspect. For example in \maketitle.
    – campa
    Commented Dec 2, 2020 at 15:00
  • I tried but didn't find any differences using \maketitle. If it happens, we should set a particular font size for any special tables. Commented Dec 16, 2020 at 16:35
  • 3
    That was just an example; not every class defines \maketitle using a tabular but some do (e.g. the standard classes for the author). My point is that there might be a tabular hidden somewhere where you do not expect it, and changing the default behaviour of tabular might have unforeseeable consequences. So I stand by my opinion that this is dangerous. (I haven't said "bad" or "wrong". Just dangerous.)
    – campa
    Commented Dec 16, 2020 at 16:45
6

The easiest way is using \fontsize:

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

\begin{table}
\fontsize{9pt}{9pt}\selectfont
  \begin{tabular}{cc}
    Knuth & Lamport
  \end{tabular}
\end{table}

\end{document}

More information about the syntax may be found here.

You must log in to answer this question.

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