[Tex/LaTex] Rhythm: different values for parskip and baselineskip in scrartcl

koma-scriptline-spacingparskiptypography

I am writing some small demo files, each trying to implement a specific advice from Bringhurst's Elements of Typograhpic Style. He recommends to keep the vertical rhythm of the page, and to return to it when necessary. One of the effects of this is that lines on facing pages are on the same depth.

I want to understand how the individual vertical measures are calculated, and I don't know where to gather this information from the sources. So I did some experiments with scrartcl; here are two extremes:

\documentclass[a4paper,10pt,parskip=full]{scrartcl} 
\usepackage{fontspec}
\begin{document}
  lineskip: \the\lineskip\\
  baselineskip: \the\baselineskip\\
  baselinestretch: \baselinestretch\\
  parskip: \the\parskip\

gives me
baselineskip: 12pt and parskip: 12pt plus 1.20007pt.
They are almost equal, and as I used parskip=full, this makes sense to me.

\documentclass[a4paper,12pt,parskip=full]{scrartcl} 
\usepackage{fontspec}
\linespread{1.2}
\begin{document}

results in
baselineskip: 17.39995pt and parskip: 14.5pt plus 1.45009pt.
With these setting, parskip=full is not full at all, and trying to go back to the desired rhythm requires using some odd vertical spaces.

When implementing Bringhurst's recommendation while using a document class such as scrartcl, I might have to redefine almost every vertical space used thourghout (at least, this is what I'm expecting, or fearing).

  • Where does the demonstrated difference between baselinskip and parskip come from? Why?
  • Should I use scrartcl (or other koma-script classes) at all if I want to implement such a recommendation?

ADDED: Michels's suggestion to look for gridding led me to a package (V0.1, 2008 …) by Markus Kohm, gridset. It provides a command which skips to the next vertical position on a \baselineskip grid. Now it is possible to deliberately depart from the grid (maybe for a block quotation), and then return to it:

\blindtext\\[0.5\baselineskip]
\emph{blindtext}
\vskipnextgrid
\blindtext

In this example the effect of \vskipnextgrid is a vspace of half a lead.I also tested this with math formulas. The result is more or less satisfying and the quality heavily depends on the surrounding material, but this is also the case for a hand-adjusted solution. If it can't work, it won't.

Regarding my question about the \parskip set by scrartcl: I managed to find a spot where it seems to be done, but it seems to be unaffected by linespread (scrartcl.cls, line 378):

\setparsizes{\z@}{\baselineskip \@plus .1\baselineskip}{%
    1em \@plus 1fil}%

If I understand the code correctly, parskip (being the second argument) is set to \baselineskip. This should be the baselineskip actually used in the document, but the change made by \linepread{1.2} has no effect here. Calling \setparsizes{.}{.}{.} in the document also has no effect.

Best Answer

Not a complete answer, but a (hopefully) useful hint: The observed inattentiveness of the parskip=full class option to a change of \baselinestretch seems to be caused by the fontspec package. The following example (compiled with XeLaTeX, fontspec commented out) yields a value for \parskip of about 17.4 pt (i.e., the same as \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}
Related Question