我正在编写一些小型演示文件,每个文件都试图实现 Bringhurst 的一条具体建议印刷风格的元素。他建议保持页面的垂直节奏,并在必要时返回。这样做的效果之一是对页上的行处于相同的深度。
我想了解如何计算单个垂直测量值,但我不知道从哪里收集这些信息。所以我做了一些实验scrartcl
;以下是两个极端:
\documentclass[a4paper,10pt,parskip=full]{scrartcl}
\usepackage{fontspec}
\begin{document}
lineskip: \the\lineskip\\
baselineskip: \the\baselineskip\\
baselinestretch: \baselinestretch\\
parskip: \the\parskip\
给出
baselineskip: 12pt 和 parskip: 12pt 加上 1.20007pt。
它们几乎相等,而且正如我所用parskip=full
,这对我来说是有意义的。
\documentclass[a4paper,12pt,parskip=full]{scrartcl}
\usepackage{fontspec}
\linespread{1.2}
\begin{document}
结果是
baselineskip:17.39995pt 和 parskip:14.5pt 加上 1.45009pt。
使用这些设置,parskip=full
根本不满,并且尝试恢复所需的节奏需要使用一些奇数垂直空间。
在使用诸如 scrartcl 之类的文档类来实现 Bringhurst 的建议时,我可能必须重新定义几乎每个使用的垂直空间(至少,这是我所期望的,或者担心的)。
- 所显示的 baselinskip 和 parskip 之间的差异从何而来?为什么?
- 如果我想实施这样的建议,我是否应该使用 scrartcl(或其他 koma-script 类)?
添加:Michels 建议我寻找网格,这让我找到了 Markus Kohm 的一个软件包(V0.1,2008 年...)gridset
。它提供了一个命令,可以跳转到网格上的下一个垂直位置\baselineskip
。现在可以故意离开网格(可能是为了引用一个区块),然后返回到网格:
\blindtext\\[0.5\baselineskip]
\emph{blindtext}
\vskipnextgrid
\blindtext
在这个例子中,的效果\vskipnextgrid
是半个引线的垂直空间。我也用数学公式测试了这一点。结果或多或少令人满意,质量在很大程度上取决于周围的材料,但手动调整的解决方案也是如此。如果它不能起作用,它就不会起作用。
关于我对\parskip
scrartcl 设置的问题:我设法找到了一个似乎完成的地方,但它似乎不受linespread
(scrartcl.cls,第 378 行)的影响:
\setparsizes{\z@}{\baselineskip \@plus .1\baselineskip}{%
1em \@plus 1fil}%
如果我正确理解了代码,parskip
(第二个参数)设置为\baselineskip
。这应该是baselineskip
文档中实际使用的,但所做的更改\linepread{1.2}
在这里不起作用。\setparsizes{.}{.}{.}
在文档中调用也没有效果。
答案1
不是一个完整的答案,但(希望)是一个有用的提示:观察到的parskip=full
类选项对 的更改的疏忽\baselinestretch
似乎是由fontspec
包引起的。以下示例(使用 XeLaTeX 编译,fontspec
注释掉)产生的值\parskip
约为 17.4 pt(即与 相同\baselineskip
)。
\documentclass[a4paper,12pt,parskip=full]{scrartcl}
% \usepackage{fontspec}
\linespread{1.2}
\begin{document}
lineskip: \the\lineskip\\
baselineskip: \the\baselineskip\\
baselinestretch: \baselinestretch\\
parskip: \the\parskip\\
\end{document}
答案2
基本上,如果我理解正确的话,为了能够有垂直节奏,您需要删除所有垂直可拉伸性(/skip/rubber/glue,即那些“加 x 减 y”),并统一分配所有垂直跳过(例如,列表之前和之后、显示的数学、水平对齐等)以保持垂直节奏。
最简单的方法是将它们定义为众多\baselineskip
,但这可能不会产生最吸引人的结果(这就是它变成一种艺术形式的地方;-)
)。您的问题表明您正在使用 LaTeX,因此很抱歉无法列出所有有助于垂直拉伸的跳跃/橡胶/胶水,但至少在 Plain 格式中,可能会被忽视的一个确实是\parskip
(在其默认设置下)如果需要的话可以提供一点垂直拉伸性。因此,至少有一个您想要通过以下方式完全删除:\parskip=0pt
。