
Мне нужно написать документ со шрифтом 12pt
и 18pt
interline (ТОЧНО). Я использовал \linespread{X}\selectfont
командную строку, чтобы увеличить размер interline... но я не знаю, сколько мне нужно ввести, чтобы X имел 18pt
. Вы знаете, как правильно определить X, чтобы получить 18pt
для каждого interline ?
Спасибо !
решение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
между такими строками (по умолчанию 1pt в простом TeX).
Примеры: если задать \lineskiplimit
достаточно отрицательное значение, то все линии будут иметь \baselineskip
расстояние независимо от того, перекрываются они или нет.
Если установить \lineskiplimit
и \baselineskip
на 0pt, то \lineskip
вставляется между всеми линиями, а сетка базовых линий обычно теряется.
Обратите внимание, что \baselineskip
nad \lineskip
— это регистры «пропуска» (они могут включать растяжимость и/или усадку), но \lineskiplimit
это регистр «размера».