![プリアンブルでsboxが定義されている場合、familydefaultは無視されます](https://rvso.com/image/330749/%E3%83%97%E3%83%AA%E3%82%A2%E3%83%B3%E3%83%96%E3%83%AB%E3%81%A7sbox%E3%81%8C%E5%AE%9A%E7%BE%A9%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E5%A0%B4%E5%90%88%E3%80%81familydefault%E3%81%AF%E7%84%A1%E8%A6%96%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99.png)
グローバル ファミリのデフォルトをプリアンブルで 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}