我发现这个问题\fontsize{}{} 如何工作?在寻求对的理解时\selectfont
,但我很失望地看到“工作”一词指的是它的用法而不是它的实现,即它在内部实际上是如何工作的。
文档在哪里\fontsize{}{}\selectfont
?认为它应该包含在 source2e 中是错误的吗?如果是,为什么?
答案1
代码如下:
2400 \DeclareRobustCommand\fontsize[2]
2401 {\set@fontsize\baselinestretch{#1}{#2}}
2697 \def\set@fontsize#1#2#3{%
2698 \@defaultunits\@tempdimb#2pt\relax\@nnil
2699 \edef\f@size{\strip@pt\@tempdimb}%
2700 \@defaultunits\@tempskipa#3pt\relax\@nnil
2701 \edef\f@baselineskip{\the\@tempskipa}%
2702 \edef\f@linespread{#1}%
2703 \let\baselinestretch\f@linespread
2704 \def\size@update{%
2705 \baselineskip\f@baselineskip\relax
2706 \baselineskip\f@linespread\baselineskip
2707 \normalbaselineskip\baselineskip
2708 \setbox\strutbox\hbox{%
2709 \vrule\@height.7\baselineskip
2710 \@depth.3\baselineskip
2711 \@width\z@}%
2712 \let\size@update\relax}%
2713 }
\@defaultunits
如果只出现一个数字,则负责添加pt
到参数中,并将值存储在\@tempdimb
(对于大小参数)或\@tempskipa
(对于基线跳过参数)中\f@size
并\f@baselineskip
设置为两个参数的点值(无单位)\fontsize
\f@linespread
从第一个参数设置,即从\baselinestretch
- 定义了一个临时宏来更新值,该宏将在下一个
\selectfont
命令中执行;宏 \size@updatewill then redefine itself to be
\relax`
请注意,\size@update
还将包含的重新定义\strutbox
,因此\strut
将始终适合当前字体大小。
您可以将\fontsize{3cm}{4cm}
或称为\fontsize{15}{18}
或任何有单位或无单位的混合物;无单位的混合物被隐含地假定为以点为单位。