Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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?

share|improve this question
2  
Thi sis covered by tex.stackexchange.com/questions/47517/… –  David Carlisle Apr 5 '12 at 13:49
4  
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 Apr 5 '12 at 14:05
    
@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 Sep 6 at 12:38
    
Related/duplicate: How to get an even smaller font? –  Werner Nov 28 at 18:28

2 Answers 2

up vote 16 down vote accepted

Here are two separate suggestions: Rather than trying to 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 also (i) reduce the inter-column white space and (ii) get rid of most of (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 is a very generous 6pt; this may be an OK value for text set at a font size of 10pt to 12pt. Importantly, though, LaTeX does not shrink the value of this parameter automatically if you choose to 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{3pt}
    

    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. You may even want to go as far as setting \setlength\arraycolsep{2pt}; in all likelihood, you'll still get acceptable results.

    A related measure you could take is to 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 very oppressive indeed if the numbers are set in a much more 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.

share|improve this answer
4  
Excellent answer. –  egreg Apr 5 '12 at 21:04

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

share|improve this answer
    
I wonder why the name "miniscule". –  egreg Apr 5 '12 at 16:28
1  
Indeed the question was about why did Peter Wilson choose that name. –  egreg Apr 5 '12 at 16:31
5  
@egreg That would be a nice first question, wouldn't it? ;-) (You could even create a curious tag for it.) –  lockstep Apr 5 '12 at 16:32
2  
@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 Apr 9 '12 at 21:37
1  
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". –  Peter Wilson Jun 12 '12 at 17:50

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.