31

I use the following to reduce the size

{\tiny
$$
\begin{array}{|c||c|c|c|c|c|c|c|c|c|c|c|c|}

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

4
  • 2
    Thi sis covered by tex.stackexchange.com/questions/47517/… Commented Apr 5, 2012 at 13:49
  • 5
    With the graphicx package you can also resize the entire array via a \scalebox or \resizebox command. This would resize the contents in its entirety though (column spacing and rules, for example).
    – Werner
    Commented Apr 5, 2012 at 14:05
  • 1
    @Werner, that actually is a perfect answer for my particular problem. I wish it was an answer so I could give it a thumbs-up.
    – Mars
    Commented Sep 6, 2014 at 12:38
  • Related/duplicate: How to get an even smaller font?
    – Werner
    Commented Nov 28, 2014 at 18:28

2 Answers 2

28

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

    \setlength\arraycolsep{2pt}
    

    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

     \begin{array}{@{}l*{12}{c}@{}}
    

    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

    \begin{array}{@{}|l|*{12}{c}|@{}}
    

    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.

2
  • 1
    While this is probably a useful reply to the asker's original problem, Google brings me here looking for ways to actually get smaller font sizes, so it would be nice if a method to do that was the accepted one.
    – tsbertalan
    Commented Nov 10, 2016 at 23:18
  • @tsbertalan - So you downvoted this answer because a Google search -- over whose settings I have no control! -- took you here, and because you apparently expect answers to ambiguous typographic questions to be extremely narrow? Classy, really classy.
    – Mico
    Commented Nov 11, 2016 at 5:21
19

David Carlisle already pointed to an answer showing how to specify arbitrary font sizes. As a complement, here's how to define a new font-switching command \miniscule that will use a font size and baseline skip reduced by 1pt each compared to \tiny for the class options 10pt, 11pt, and 12pt.

Note that the name \miniscule (but not the actual size/skip values) is taken from the memoir class. Also note that you have to use a scalable font like Latin Modern to correctly display a font size of 4pt.

\documentclass[10pt]{article}

\usepackage{lmodern}

\makeatletter
\ifcase \@ptsize \relax% 10pt
  \newcommand{\miniscule}{\@setfontsize\miniscule{4}{5}}% \tiny: 5/6
\or% 11pt
  \newcommand{\miniscule}{\@setfontsize\miniscule{5}{6}}% \tiny: 6/7
\or% 12pt
  \newcommand{\miniscule}{\@setfontsize\miniscule{5}{6}}% \tiny: 6/7
\fi
\makeatother

\usepackage{lipsum}

\begin{document}

\tiny

\lipsum[1]

\miniscule

\lipsum[1]

\end{document}

enter image description here

12
  • 1
    Indeed the question was about why did Peter Wilson choose that name.
    – egreg
    Commented Apr 5, 2012 at 16:31
  • 6
    @egreg That would be a nice first question, wouldn't it? ;-) (You could even create a curious tag for it.)
    – lockstep
    Commented Apr 5, 2012 at 16:32
  • 1
    @Sveinung I can see that it's a spelling error. The word comes from Latin minusculus, which is minus with a diminutive suffix like in musculus which is "little mouse", from which the Italian "muscolo" and the English "muscle".
    – egreg
    Commented Apr 5, 2012 at 19:42
  • 3
    @Sveinung It's not your spelling error. :) One only has to decide how much time is needed so that a spelling error becomes a different spelling. :)
    – egreg
    Commented Apr 9, 2012 at 21:37
  • 6
    I chose "miniscule" as I thought that it was a proper word. I knew that "minuscule" referred to a class of letters (lower case) as opposed to "majuscule" (upper case). It seems that I have invented a new word which, to me at least, conveys the sense of being small though how it might be ordered with "minute" I don't know, although it is definitely larger than "nano". Commented Jun 12, 2012 at 17:50

You must log in to answer this question.

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