According to section 18.2.1 of the beamer
manual, a default font size of 8pt is already "way too small". beamer
uses the extsizes
packages for non-standard font sizes, and extsizes
doesn't offer anything smaller than 8pt. If you really must fit more text on each frame, I suggest to enlarge beamer
's paper size from 128mm*96mm to, say, 140mm*105mm.
\documentclass[8pt]{beamer}
\geometry{paperwidth=140mm,paperheight=105mm}
\usepackage{lipsum}
\begin{document}
\begin{frame}
\lipsum[1]
\end{frame}
\end{document}

EDIT: Another option is to load the scrextend
package (part of KOMA-Script
) which allows to choose arbitrary font sizes like 7.5pt -- be sure to use a vector font like Latin Modern.
\documentclass{beamer}
\usepackage{lmodern}
\usepackage{scrextend}
\changefontsizes{7.5pt}
\usepackage{lipsum}
\begin{document}
\begin{frame}
\lipsum[1]
\end{frame}
\end{document}

Font size, with the New Font Selection System, can be selected in the following way:
\fontsize{size}{leading}\selectfont
where size is the point size you want (say, 10pt) and leading is the leading (space between lines) you want (say, 12pt).
This does, as mentioned, require scalable fonts, or at least font definition files which permit dynamic generation of the appropriately-sized bitmap fonts. If you say \usepackage{lmodern}
you'll get the fully-scalable Latin Modern fonts, which are near-duplicates of Computer Modern; if you really want to use Computer Modern, you can say \RequirePackage{fix-cm}
before your \documentclass
command to get better font definition files for Computer Modern.
As David Carlisle says, though, shrinking your table to such small sizes to make it fit is generally a bad idea, as it impedes readability and clashes with your normal-size text. Better options are reduce spacing between columns, or even setting the table in landscape mode on its own page; see the lscape
package.
If you're not already using it, look at the booktabs
package, as well, which makes tables created in LaTeX worlds better.
Best Answer
Here are two separate suggestions: Rather than reduce the font size to a point (pun intended!) where the letters become well-nigh undecipherable just to make the array fit into the available textblock, you could (i) reduce the amount of inter-column white space and (ii) get rid of most (or even all) of the vertical lines that separate the columns of the
array
. The two adjustment methods can be used simultaneously; using one doesn't preclude using the other. And, of course, they can be used in combination with a command that changes the font size (such as\scriptsize
and\tiny
) in effect for thearray
.If I read your example correctly, you have 13 text/data columns and hence 12 inter-column spaces. LaTeX uses the parameter macro
\arraycolsep
to store the value of (half of) the amount of inter-column white space for anarray
environment. The default value of this parameter in the standard document classes (such asarticle
,report
, andbook
) is a very generous5pt
. This may be an OK value for text typeset at a font size of10pt
to12pt
. Importantly, though, LaTeX does not shrink the value of this parameter automatically if you reduce the font size of the contents of the text/data columns. Hence, your table is going to look like it contains an awful lot of whitespace if the data/text are going to be set at5pt
(\tiny
) or7pt
(\scriptsize
).You may therefore want to try issuing the command
in the preamble, for an immediate reduction of
36pt
(i.e.,0.5in
) of total array width. Nothing to sneeze at, right? Plus, you'll get a better-looking array because the intercolumn whitespace won't overwhelm the smallish data and text. With this adjustment in effect, you may find it's no longer necessary to reduce the font size to something as puny as\tiny
.A related measure you could take is eliminate the vertical whitespace that LaTeX inserts by default in front of the first column and after the final column. To do so, set up your array with
\begin{array}{@{}|c||c|c|c|c|c|c|c|c|c|c|c|c|@{}}
or (more succinctly) as\begin{array}{@{}|c||*{12}{c|}@{}}
: Note the addition of the two@{}
elements. (Incidentally, assuming that the first column contains information about the contents of the other 12 columns, I'd suggest that you left-justify rather than center the very first column; see below for an application of this idea.)You may also want to consider eliminating all, or at least almost all, of the 14 vertical lines in the array. Why? First, each vertical line takes up a
0.4pt
of space (unless you or one of the packages you've loaded have changed this value). Second, while a line width of0.4pt
may be appropriate if the contents of the text/data columns are set in font sizes of 10pt, 11pt, or 12pt, these vertical lines tend to look quite oppressive if the numbers are set in a diminutive size of7pt
or5pt
.Do ask yourself this: Do you really need all 14 vertical lines? In fact, do you need any vertical lines at all in order to make the array legible? If you chose to eliminate all 14 lines, by using the definition
you'd immediately save
5.6pt
of total array width. Still nothing to sneeze at, right?If eliminating all vertical lines is too radical for your taste, do consider getting by with only the two outermost vertical lines and the one that separates the left-most column from the second column. I.e., you could set up the array as
With this setting, you'd (i) still save
4.4pt
in total array width and (ii) reduce the risk of overwhelming the contents of the array with all those heavy-looking lines.