全局改变字体大小的正确方法是什么?

全局改变字体大小的正确方法是什么?

在组内,类似这样的命令\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。

相关内容