定义使用 \normalsize 行间距的 \small 和 \large 变体

定义使用 \normalsize 行间距的 \small 和 \large 变体

作为网格排版的部分解决方法,我想定义和的变体\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 字体时,即使在带有降部和升部线条之间,基线跳跃也是一致的。使用其他字体时,情况就不确定了先验。但我拒绝展示结果,这太糟糕了。:)

相关内容