familydefault игнорируется, если sbox определен в преамбуле

familydefault игнорируется, если sbox определен в преамбуле

Я хотел бы определить свое глобальное значение по умолчанию для семейства один раз в преамбуле. Я также хотел бы определить свои поля сохранения в преамбуле, но почему-то последнее не работает с первым, так как оно просто игнорирует значение по умолчанию для семейства для текста в 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}

Связанный контент