Changing the font size in LaTeX can be done on two levels, either affecting the whole document or parts/elements of it. Using a different font size on a global level will affect all normal-sized text as well as the size of headings, footnotes, etc. By changing the font size locally, however, a single word, a few lines of text, a large table or a heading throughout the document may be modified.
Changing the font size on a document-wide level
The standard classes, article, report and book support 3 different font sizes, 10pt, 11pt, 12pt (by default 10pt). The font size is set through the optional argument, e.g.:
\documentclass[12pt]{report}
In most cases, the available font sizes for the standard classes are sufficient.
Other font sizes
Should you require a different font size for your document, use the extsizes package. It allows for the following font sizes: 8pt, 9pt, 10pt, 11pt, 12pt, 14pt, 17pt, 20pt.
The documentclass names are slightly different from the standard classes:
%Article
\documentclass[9pt]{extarticle}
%Report
\documentclass[14pt]{extreport}
The KOMA-script and memoir class
The KOMA-script and memoir classes are more flexible when it comes to font sizes. Please see the documentation for more details.
Changing the font size locally
LaTeX knows several font size modifier-commands (from biggest to smallest):
\Huge \huge \LARGE \Large \large \normalsize (default) \small \footnotesize \scriptsize \tiny
A table of the exact font sizes in points can be found on wikibooks.
A good rule of thumb is don’t use too many different sizes and don’t make things too small/big.
There are two possible ways to use these font size modifier commands, inline or as environment:
% inline
{\Large This is some large text\par}
% environment
\begin{footnotesize}
...
\end{footnotesize}
The \par at the end of the inline example adjusts baselineskip, the minimum space between the bottom of two successive lines. See the example in Rob’s comment below.
A few more options
The moresize package adds two more to the list above, \HUGE and \ssmall. The latter fills the gap between \scriptsize and \tiny.
While using \HUGE, LaTeX displays a warning saying the font size is not available for the standard font and that it was replaced by the next smaller (\Huge). When using another font type, such as the Adobe Times Roman equivalent available in the PSNFSS package (see example below), however, you can benefit from that font size.
\documentclass[11pt]{report}
\usepackage{mathptmx}
\usepackage[11pt]{moresize}
...
{\HUGE A huge text}
{\ssmall Can you still read this ``ssmall'' text?}
Note: The figure is scaled and therefore does not show the actual font size. It illustrates the difference between the font sizes.
Still not enough?
Here is alternative, more flexible approach. The anyfontsize package scales the next bigger/smaller font size available to whatever size you like.
The two arguments to \fontsize are the actual font size and the size of the baseline-skip. The baseline-skip should be set to roughly 1.2x the font size.
\fontsize{size}{baselineskip}
The following example shows font size 50pt/5pt and compares them with \Huge and \tiny.
\documentclass[11pt]{report}
\usepackage{mathptmx}
\usepackage{anyfontsize}
\usepackage{t1enc}
...
{\fontsize{50}{60}\selectfont Foo}{\fontsize{5}{6}\selectfont bar!}
{\Huge Foo}{\tiny bar!}
That’s more like it! Again, this only works with a non-standard font type. And again, it does not show the actual font size. Try it with LaTeX!



August 29th, 2012 at 9:21 am
Very interesting post, but I think you are missing something: Every once in a while if you change font sizes, the line height is not adjusted – resulting in large space between two lines. Maybe you could comment on that as well in this post? It would fit nicely…
August 29th, 2012 at 1:40 pm
Hi Rob.
Thanks! Would you be able to provide a minimal working example of the issue you describe above?
Thanks, Tom.
September 2nd, 2012 at 11:18 am
Sure!
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage[english]{babel} \usepackage{blindtext} \begin{document} % Normalsize text \blindtext % Scriptsize text with normalsize line spacing {\scriptsize \blindtext} % Scriptsize text with scriptsize line spacing {\scriptsize \blindtext } % \par does the trick as well {\scriptsize \blindtext \par} \end{document}September 2nd, 2012 at 5:05 pm
Cool, thanks Rob!
I wasn’t aware of that issue. Will change it in the post.
Best, Tom.
September 3rd, 2012 at 1:01 am
No problem, glad to help and keep up the good work!
September 3rd, 2012 at 7:06 am
Thanks!
August 29th, 2012 at 6:20 pm
Hi Tom, How I can change the font type in LaTeX for parts/elements of a document?
Thanks Humberto Munoz
August 30th, 2012 at 10:08 am
I found the answers to a similar question on SX pretty good.
Hope it helps,
Tom
August 29th, 2012 at 7:03 pm
The relsize package might also be worth mentioning in this context.
August 30th, 2012 at 2:10 am
Thanks! Tom.
August 30th, 2012 at 2:14 am
The line height is assigned at the end of the paragraph.
So perhaps the solution for your doubt is to use
{\tiny Foo foo foo ... foo \par}or
{\Huge Foo foo foo ... foo \par}August 30th, 2012 at 10:15 am
Hi Juan!
Thanks for your comment.
Are you referring to Rob’s comment?
Thanks, Tom.
January 21st, 2013 at 6:25 pm
Thanks a lot for this article and especially for the hint to use \par to adjust line spacing. Could you please add a short explanation on *why* this fixes the spacing?
January 22nd, 2013 at 4:08 am
Hi Smufos,
Thanks for your question! The command
.
\parends the paragraph, that’s for sure. Now why\pardoes the trick, I’m not entirely sure. Apparently, TeX reads the whole paragraph first for optimal space adjustment between words. And manually ending the paragraph seems to also adjust\baselineskipwhen the font size is changed, whereas standard paragraph ending (blank line) does not. “The TeXbook” by Donald E. Knuth would be the right place to look for an answerCheers, Tom.
March 11th, 2013 at 2:46 pm
Thanks for the article, but how can one adjust font size of all equations globally? I mean a global math size which differs from global text font size?
II seems ridiculous to change the math font size in big projects manually!
March 11th, 2013 at 4:24 pm
Hi Homa,
Interesting question, thanks! You want to use the command
\DeclareMathSizesas explained in the answer to this question.Hope it helps,
Tom