可以使用storebox
封装以节省空间。
例如,我期望这会起作用,因为它与 的使用类似savebox
。然而,事实并非如此。需要将 移到\storebox{\foobox}{FOO}
内部\begin{document}
才能使用它。
\documentclass{article}
\usepackage{storebox}
\newstorebox{\foobox}
% moving this line inside begin{document} works
\storebox{\foobox}{FOO}
\begin{document}
\usestorebox{\foobox}
\end{document}
现在,考虑一下
\documentclass{article}
\newsavebox{\foobox}
\savebox{\foobox}{FOO}
\begin{document}
\usebox{\foobox}
\end{document}
该选项savebox
有效。
那么,我该如何利用工作\storebox
前呢?\begin{document}
savebox
答案1
\begin{document}
文档字体设置预计在处理时完成,其中包括\normalfont
完成所有字体请求的声明。
正在做\savebox
序言中不保证字体与文档中的字体相匹配:一些字体包会延迟它们对 的操作\AtBeginDocument
,这样它们就可以利用了解所有已加载的包的优势。 这同样适用于\storebox
。
如果你想在序言或包中使用,请尝试\savebox
使用\storebox
\usepackage{etoolbox}
\usepackage{storebox}
\newstorebox{\foobox}
\AfterEndPreamble{%
\storebox{\foobox}{whatever}%
}
或者如果只是文档代码,则直接执行。请注意,使用 延迟的代码\storebox{\foobox}{whatever}
在任何使用 延迟的代码之后执行。您可以拥有任意数量的命令,它们的效果是累积的。\begin{document}
\AfterEndPreamble
\AtBeginDocument
\AfterEndPreamble