124

I'm trying to make a document that has a very small font throughout, I tried this:

\documentclass[0.5mm, a4paper]{article}
\documentclass[7pt, a4paper]{article}

But it doesn't seem that they allow me to go anything below 10pt.

This hack make it work, but not for the section headers:

\fontsize{4mm}{5mm}\selectfont

Does anyone know any better ways to do this?

lockstep
  • 250,273

6 Answers6

66
  • extsizes classes offer a base font size between 8 and 20 pt, you may choose the extarticle class

  • KOMA-Script classes support freely customizable base font sizes and you may specify them by any TeX length unit like pt, bp or mm, so you might use scrartcl.

I recommend to use a KOMA-Script class.

Stefan Kottwitz
  • 231,401
53

Instead of switching to a KOMA-Script class, you may also use the scrextend package (part of KOMA-Script) and its \changefontsizes macro. It features an optional argument to change \baselineskip (the default is 1.2 * fontsize). For details see section 3.5 of the KOMA-Script manual (the relevant content also applies to scrextend, as mentioned in section 9.5 of the manual). EDIT: Make sure to use a scalable font (e.g. Latin Modern instead of Computer Modern).

\documentclass{article}

\usepackage{lmodern}

\usepackage{scrextend}
\changefontsizes[20pt]{16pt}

\usepackage{lipsum}

\begin{document}

\lipsum[1]

\end{document}
lockstep
  • 250,273
  • 19
    Meanwhile the preferred way seems to consist in giving the fontsize as package option \usepackage[fontsize=16pt]{scrextend}. The command \changefontsizes is now hardly documented: no mention of the optional argument anymore. – Speravir Mar 12 '14 at 17:51
  • 4
    Instead of using \changefontsizes one could (and should) rather use \KOMAoption{fontsize}{16pt} (which is the same as the package option), see http://tex.stackexchange.com/a/108732/ – cgnieder Oct 31 '14 at 10:08
22

It is a semantically better practice to define a new font size which is a size less than tiny, rather than use \fontsize, by using:

\makeatletter
  \newcommand\tinyv{\@setfontsize\tinyv{4pt}{6}}
\makeatother

I called, it tinyv (v being the size in roman numerals), but you can call it anything you wish.

You can also change any of the others this way, by using renewcommand. You can do this in the class file you are using, in which case you do not need the apocryphal \makeatletter and makeatother.

\renewcommand\scriptsize{@setfontsize\scriptsize{5}{7}} 
lockstep
  • 250,273
yannisl
  • 117,160
  • 1
    How are \makeatletter and \makeatother apocryphal? – TH. Nov 14 '10 at 11:23
  • 1
    @TH people new to TeX/LaTeX - after they get used to the idea of macro names such as @var@able@, get another surprise with makeatletter etc. Unless you know about catcodes the semantics of makeatletter and especially makeatother are very esoteric and hence apocryphal! There are other mysteries too like futurelet!. – yannisl Nov 14 '10 at 11:52
  • 2
    @TH.: I think Yiannis means "cryptic". Then I'd agree. (@Yiannis: correct?) – Hendrik Vogt Nov 14 '10 at 12:04
  • @Hendrik Partly:) written in the sense ... The word "apocryphal" (ἀπόκρυφος) was first applied, in a positive sense, to writings which were kept secret because they were the vehicles of esoteric knowledge... (source: wikipedia). On top we got the Book! In greek the meaning is something between cryptic, esoteric, of high value but hidden! – yannisl Nov 14 '10 at 14:54
  • 2
    @Yiannis: Interesting; I didn't know this meaning of apocryphal. The problem is that most of us don't know Greek that well (I learned Ancient Greek at school, but that's some time ago). In English, apocryphal things have the tendency to be just not true. – Hendrik Vogt Nov 14 '10 at 16:43
  • @Hendrik Yes, an apocryphal story is not such a good thing! The makeatletter is such a surprise to newcomers, especially as you get an error if you miss it, telling you that the `spacefactor is not allowed in vertical mode'. – yannisl Nov 14 '10 at 18:14
  • 5
    @Yiannis: yes, in current English usage apocryphal means roughly “rumoured, but non-existent”.  Other good words for \makeat(letter|other) could be arcane, occult, mystical.  They were certainly mystical incantations to me for a while — I knew I had to say them as part of certain rituals, but I had only the vaguest idea of why. – Peter LeFanu Lumsdaine Dec 21 '10 at 21:47
  • @Yiannis: will this cause other font-size commands to scale accordingly? Also, you said you named it \tinyv because that is the font size in roman numerals, but you have specified: \makeatletter \newcommand\tinyv{\@setfontsize\tinyv{4pt}{6}} \makeatother Why does {4pt}{6} set the font to 5pt? – Rax Adaam Feb 27 '13 at 21:23
  • @RaxAdaam tiny works like \small or \large. The reason that LateX substitutes a 5pt is that it cannot find a 4pt font (with default fonts), if you check the logs you will see LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <4> not available (Font) size <5> substituted on input line 9. – yannisl Feb 27 '13 at 21:43
  • 1
    @Yiannis, so this is not equivalent to setting the document's working or reference font size, just to set a specific font size. I'd like to set the font size for the document lower, but have things like \tiny \footnotesize etc. scale accordingly. Also, if it will just set it to 5pt, why write 4pt? – Rax Adaam Feb 27 '13 at 21:47
17

Another option is to use the extsizes package. Although it doesn't provide a 16 point font, 14 and 17 point options are available:

\documentclass[17pt]{extreport}

I would also like to cite the extsizes documentation:

Don't use extsizes just because you think it's cool, or because you think the font looks too small on the screen. You should have a clear reason why 10, 11 or 12 pt text is not suitable for you.

Andrey Vihrov
  • 22,325
13

Use a class which supports more fontsizes. E.g. one of the KOMA-classes:

\documentclass[fontsize=16pt]{scrreprt}
Ulrike Fischer
  • 327,261
  • 1
    I am using miktex, which package do I install for KOMA-classes? – Rick_2047 Oct 06 '11 at 14:15
  • @Rick_2047 If you have set MikTeX to install missing packages on the fly, simply compile a document with a KOMA-class, and it will be installed for you. If not, open the Package Manager and search for "koma", then you'll find it. – Torbjørn T. Oct 06 '11 at 14:46
  • Both are strangely not working. It shows that dialog box that says it wants to install but never installs. And koma-class just doesn't show up in the package manager. – Rick_2047 Oct 06 '11 at 14:48
  • How long do you wait? It can take perhaps a few minutes, whil nothing appears to be happening. I just tried a search in the package manager of MikTeX (Portable), and searching for "koma" yielded two results, the first being "koma-script". – Torbjørn T. Oct 06 '11 at 15:07
  • @Rick Which miktex version are you using? And to which repository are you trying to connect? Did you synchronize the repository (package manager, menu repositories) – Ulrike Fischer Oct 06 '11 at 15:15
  • i got it working. thanks. For some reason when I put koma in keywords field the package didn't show up – Rick_2047 Oct 12 '11 at 15:26
10

Similar to what the KOMA-script classes provide, the memoir document class also offers 14pt and 17pt (but not 16pt) options for the basic font size of a document. The memoir class-related files should be installed automatically by most modern TeX distributions. If not, use your package manager -- tlmgr or MikTeX's own update program -- to install them.

You'd select these fontsize options with the commands

\documentclass[14pt]{memoir}

and

\documentclass[17pt,extrafontsizes]{memoir}

respectively. I suggest you include the option extrafontsizes when using the 17pt size option. Doing so will ensure that commands that change relative font sizes -- such as \Large, \huge, and \Huge -- will produce reasonable-looking results. Specifically, the Latin Modern fonts in T1 encoding will be loaded instead of the default Computer Modern fonts in OT1 encoding.

Mico
  • 506,678
  • I have been looking for something similar, I would like to use a memoir 13pt font size, is it possible? – Adriano May 17 '16 at 12:56
  • @Adriano - According to the user guide of the memoir package, the following default font sizes (in points) are provided: 9, 10, 11, 12, 14, 17, 20, 25, 30, 36, 48, and 60. For each of these sizes, a file called mem?.clo exists, where ? can be 9, 10, etc and clo stands for "class option". For new font sizes, e.g., 13pt, you'd have to set up a file named mem13.clo, along the lines explained in the user guide. For the case of 13pt, you could probably use mem12.clo and mem14.clo as templates and average the values used in those two files for the new file. – Mico May 17 '16 at 13:22