15

Assume I would like to change the font for a section of text, e.g. use Bookman for both headings and paragraphs (similarly to the explanations in this community wiki guide).

If I change the \familydefault, as in section (1), only headings are affected. If on the other hand I select Bookman as the \fontfamily, it affects only paragraph text but not headings (2). Combining both commands gives the desired result (3), as does adding a \normalfont command to \familydefault* (4).

What causes this behaviour? Does \fontfamily set some "currentfont" variable which is not accessed when headings are formatted? And why does changing \familydefault immediately affect headings, but not text?

 

*This was pointed out in a comment by @mpg.

enter image description here

\documentclass{article}
\usepackage[T1]{fontenc}

%print a _short section of lipsum text
\newcommand{\shlipsum}{%
    \section{A quick brown fox}
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna.\\%
}

%reset font to typewriter CM
\newcommand{\resetfont}{\renewcommand{\familydefault}{cmtt}\normalfont}

\begin{document}

\resetfont
\renewcommand{\familydefault}{pbk}  %sets heading only
\shlipsum

\resetfont
\fontfamily{pbk}\selectfont         %sets paragraph text only
\shlipsum

\resetfont
\renewcommand{\familydefault}{pbk}
\fontfamily{pbk}\selectfont
\shlipsum

\resetfont
\renewcommand{\familydefault}{pbk}
\normalfont
\shlipsum

\end{document}
10

\fontfamily{pbk}\selectfont selects that family from that point for the rest of the current group.

\renewcommand{\familydefault}{pbk} Just redefines that macro and does nothing unless something does \fontfamily{\familydefault}\selectfont. That combination isn't normally done explicitly but is part of \resetfont or \normalfont which heading commands usually use so that they get consistent fonts even if the text at that point in the document is locally using a different font style.

|improve this answer|||||
  • Thank you, now it makes sense. How could I access the variable set by \fontfamily, i.e. what is its identifier? – dgs Jun 8 '12 at 15:44
  • 1
    the definition of fontfamily is \DeclareRobustCommand\fontfamily[1]{\edef\f@family{#1}} so \f@family but you wouldn't normally need to look at that directly – David Carlisle Jun 8 '12 at 16:13
  • Probably not, but it could come in handy for "figuring out what's going on" purposes. Thanks again. – dgs Jun 8 '12 at 16:34
  • @DavidCarlisle: \fontfamily{pbk}\selectfont works fine with pdfLaTeX engine but does not with XeLaTeX. – Say OL Apr 13 '18 at 2:02
  • @SayOL it works identically in xelatex (and at the time this answer was written it would have selected the same font) current xelatex defaults to Unicode (TU) font encoding and there is probably no TU pbk defined (there is no need for such a definition) – David Carlisle Apr 13 '18 at 7:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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