我發現這個問題\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
,因此 a\strut
將始終適合當前字體大小。
您可以調用\fontsize{3cm}{4cm}
或\fontsize{15}{18}
或 任何帶有或不帶有單位的混合物;無單位被隱含地假定為以點為單位。