作为网格排版的部分解决方法,我想定义和的变体\small
,\large
它们的行为与标准变体类似,只是它们使用行距\normalsize
。我知道我可以查找相应的宏定义,例如,10pt
中的标准类选项size10.clo
,并相应地定义新的变体,例如,
\newcommand\largeVAR{\@setfontsize\largeVAR\@xiipt\@xiipt}
但是,我正在寻找一种适用于所有(可能是自定义的).clo
选项文件的自动解决方案,即可动态适应相应标准宏定义的解决方案。
对于展示如何添加带星号的宏版本(\small*
,\large*
)的解决方案,可获得加分。
答案1
\documentclass[a4paper]{article}
\pagestyle{empty}
\usepackage{lipsum}
\makeatletter
\AtBeginDocument{\edef\@standardbaselineskip{\the\baselineskip}}
\let\@@small\small
\def\small{\@ifstar\s@small\@@small}
\def\s@small{\@@small\fontsize{\f@size}{\@standardbaselineskip}\selectfont}
\makeatother
\begin{document}
{\small\lipsum[2]}
{\small*\lipsum[2]}
\end{document}
它可能也适用于\large
,但需要\lineskip
考虑。它肯定不适用于大于 的尺寸\large
。
对于\large
修改是类似的:
\let\@@large\large
\def\large{\@ifstar\s@large\@@large}
\def\s@large{\@@large\fontsize{\f@size}{\@standardbaselineskip}\selectfont}
根据我的实验,使用 Computer Modern 字体时,即使在带有降部和升部线条之间,基线跳跃也是一致的。使用其他字体时,情况就不确定了先验。但我拒绝展示结果,这太糟糕了。:)