![全局改变字体大小的正确方法是什么?](https://linux22.com/image/231889/%E5%85%A8%E5%B1%80%E6%94%B9%E5%8F%98%E5%AD%97%E4%BD%93%E5%A4%A7%E5%B0%8F%E7%9A%84%E6%AD%A3%E7%A1%AE%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
在组内,类似这样的命令\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。