在组内,类似这样的命令\tiny
仅在组结束前有效。有人希望能够\global\tiny
在组结束后让它持续,但这行不通。
我能想到的最好的办法(描述这里) 如下。
\newif\ifhelper
\makeatletter
\def\unithelper#1\@nnil{\global\helpertrue\helper}
\def\helper{\ifhelper\afterassignment\helper\global\fi}
\newcommand*\globalfontsize[1]{%
\begingroup
#1%
\def\@defaultunits{\helperfalse\afterassignment\unithelper\global}%
\let\realvrule\vrule
\def\vrule{\helperfalse\global\helpertrue\afterassignment\helper\realvrule}%
\global\helpertrue
\helper#1%
\helperfalse
\endgroup}
\makeatother
然后你就可以说\globalfontsize\tiny
或\globalfontsize\normalsize
来达到想要的效果。正确的做法是什么?
编辑:有几个人建议使用 的一些变体\documentclass[10pt]{article}
。这与我的问题无关。我使用“全局”来类比 TeX 原语\global
。
答案1
\newcommand{\doglobally}[1]{{\globaldefs=1#1}}
现在你可以写\doglobally\tiny
答案2
对于至少某些字体大小,您可以使用类似 的字体\documentclass[12pt]{article}
。但是,我完全确定它适用于哪些字体大小---我知道它适用于 10pt(默认)和 12pt。