Familydefault wird ignoriert, wenn Sbox in der Präambel definiert ist

Familydefault wird ignoriert, wenn Sbox in der Präambel definiert ist

Ich möchte meine globale Familienvorgabe einmal in der Präambel definieren. Ich möchte auch meine Speicherfelder in der Präambel definieren, aber irgendwie scheint Letzteres mit Ersterem nicht zu funktionieren, da es die Familienvorgabe für den Text in der Sbox einfach ignoriert. Wenn die Sbox innerhalb von \begin{document} definiert ist, funktioniert es einwandfrei.

Meine Frage ist also: Warum funktioniert das nicht und was kann ich dagegen tun?

\documentclass[11pt,a4paper]{scrartcl}
\usepackage[nopar]{lipsum}

\renewcommand{\familydefault}{\sfdefault} % set default font to cmss

\newsavebox{\testbox}
\sbox{\testbox}{
    Hello World!
}

\begin{document}
    \usebox{\testbox}\\
    \lipsum
\end{document}

Antwort1

Durch das Ändern des Makros werden an diesem Punkt keine Schriftarten geändert. Es wird lediglich die Standardeinstellung geändert, wenn eine Schriftart ausgewählt ist. Sie können beispielsweise verwenden \normalfont.

\documentclass[11pt,a4paper]{scrartcl}
\usepackage[nopar]{lipsum}

\renewcommand{\familydefault}{\sfdefault} % set default font to cmss
\normalfont
\newsavebox{\testbox}
\sbox{\testbox}{
    Hello World!
}

\begin{document}
    \usebox{\testbox}\\
    \lipsum
\end{document}

verwandte Informationen