プリアンブルでsboxが定義されている場合、familydefaultは無視されます

プリアンブルでsboxが定義されている場合、familydefaultは無視されます

グローバル ファミリのデフォルトをプリアンブルで 1 回定義したいと思います。また、プリアンブルで保存ボックスも定義したいのですが、後者は前者では機能しないようです。sbox 内のテキストのファミリのデフォルトを単に無視するからです。sbox が \begin{document} 内で定義されている場合は、正常に機能します。

私の質問は、なぜこれが機能しないのか、そしてどうすればいいのかということです。

\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}

答え1

マクロを変更しても、その時点ではフォントは変更されません。フォントが選択されたときのデフォルトが変更されるだけです。たとえば、 を使用できます\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}

関連情報