
我需要用12pt
和18pt
行間字體(確切地說)編寫一個文件。我使用\linespread{X}\selectfont
命令列來增加行間大小...但我不知道我必須為 X 添加多少18pt
。您知道如何正確定義 X 以獲得18pt
每個行間嗎?
謝謝 !
答案1
當使用金屬活字時,字元被切割在大小相同的金屬片上,與上升部和下降部無關
來源:http://designwithfontforge.com/en-US/The_EM_Square.html (請注意,為了方便閱讀,圖片已被鏡像。)
可以透過插入金屬條(主要由鉛製成,因此“領先”)來間隔線路。
TeX 為此使用不同的模型,因為它只是通過參考點對齊字符,因此它的模型是不同的:它嘗試在基線之間保持固定距離(當前 的量\baselineskip
)。
18pt領先的含義相當模糊。正如您所看到的,在圖片中沒有前導,但字元不接觸:“yp”位於“th”上方,但它們之間有一些空格。這是因為帶有字符的棋子的高度大於所有字符中最大高度和最大深度的總和(與字符的長度相同)支撐)。
因此,您可以參考一條線上可能最深的下降部分與下一條線上可能最高的上升部分之間的 18pt;或者您可以根據支柱的深度和高度測量 18pt。這會產生完全不同的結果。
建議的leading
套件可以解決這個問題,因為它允許以點為單位指定基線距離,而不是計算 的因子\linespread
。然而,一個簡單的
\leading{18pt}
不行:
\documentclass[12pt]{article}
\usepackage{leading}
\leading{18pt}
\begin{document}
\noindent
\llap{\smash{%
\vrule height0pt depth \fontchardp\font`y \hskip 1pt
\vrule height0pt depth \dimexpr\fontchardp\font`y + 18pt\relax
}}by\\
by
\end{document}
該圖像清楚地表明 18pt 是基線跳躍。
\documentclass[12pt]{article}
\usepackage{leading}
\AtBeginDocument{%
\settoheight{\dimen0}{%
ABCDEFGHIJKLMNOPQRSTUVWXYZ%
abcdefghijklmnopqrstuvwxyz%
}%
\settodepth{\dimen2}{%
ABCDEFGHIJKLMNOPQRSTUVWXYZ%
abcdefghijklmnopqrstuvwxyz%
}%
\leading{\dimexpr18pt+\dimen0+\dimen2}%
}
\begin{document}
\noindent
\llap{\smash{%
\vrule height0pt depth \fontchardp\font`y \hskip 1pt
\vrule height0pt depth \dimexpr\fontchardp\font`y + 18pt\relax
}}by\\
by
\end{document}
現在從 y 的底部到 b 的頂部剛好有 18pt。
如果您使用帶有重音的大寫字符,則可能必須修復用於測量最大高度和深度的字母表。
答案2
TeX 使用三個原始暫存器來控制行間空間。首先是\baselineskip
。如果兩條跟隨線在\lineskiplimit
配準意義上不重疊,則將\baselineskip
其用作兩條跟隨基準的距離。 「套準意義上的重疊\lineskiplimit
」(預設為0pt,但應該為正值或[更常見]負值)的意思是:第一行中最大下降部分與第二行中最大上升部分之間的距離(當嘗試的規則\baselineskip
)大於或等於\lineskiplimit
。如果這樣的條件不成立,那麼\baselineskip
根本不會用於這兩行,而是會\lineskip
在這兩行之間插入 (預設為 plain TeX 的 1pt)。
範例:如果設定\lineskiplimit
為足夠的負值,則所有線的\baselineskip
距離與它們是否重疊無關。
如果將\lineskiplimit
和設為\baselineskip
0pt,則\lineskip
在所有行之間插入 ,並且基線網格通常會遺失。
請注意,\baselineskip
nad\lineskip
是「跳過」暫存器(它們可能包括可拉伸性和/或可收縮性),但是\lineskiplimit
「dimen」暫存器。