[Tex/LaTex] Need smaller than \tiny


I use the following to reduce the size


but it is still too large. How can I further reduce the size?

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 the array.

  • 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 an array environment. The default value of this parameter in the standard document classes (such as article, report, and book) is a very generous 5pt. This may be an OK value for text typeset at a font size of 10pt to 12pt. 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 at 5pt (\tiny) or 7pt (\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 of 0.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 of 7pt or 5pt.

    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.

Related Question