使用较大的段落空白减少标题后的空间

使用较大的段落空白减少标题后的空间

如何在保留大段落空间的同时删除章节标题和第一行文本之间的空格?

我尝试了多种变化\setuphead[section][after=...](例如{\blank[-1cm]}{\blank[none]}),但无法完全删除空格。

\setupwhitespace[big]
\starttext
\startsection[title={Section A}]
\input knuth
\stoptext

答案1

使用

after={\blank[nowhite]},

或者

after=\nowhitespace,

这是一个完整的例子:

\setupwhitespace[big]
\setuphead[section][after={\blank[nowhite]}]
\starttext
\startsection[title={Section A}]
\input knuth
\stoptext

这使

在此处输入图片描述

解释

如果你理解 TeX 基元,这就是发生的事情。\setupwhitespace设置\parskip\blank[...]\par\vskip。因此,当你使用

\setupwhitespace[big]
\blank[none]

由于 ,您仍会看到空白\parskip。要删除\parskip,您可以使用\nowhitespace,这相当于\blank[nowhite]

如何\vskip摆脱\parskip?这是 ConTeXt 中实验代码的一部分,其中垂直空间有多个类别(如spac-ver.mkiv):

% category:
%
%  0 == discard                             discard
%  1 == only if larger                      largest
%  2 == force even if smaller               force
%  3 == only take penalty component         penalty
%  4 == add to existing skip                add
%  5 == disable (ignore following)          disable
%  6 == kill whitespace                     nowhite
%  7 == discard previous                    back
% 10 == no topskip
%
% penalty: larger wins
% order: larger wins
% category:2,order:5,penalty:10000,skip:value|kw

进而 ...

\definevspacing[\v!always]    [category:0] % hm, internally it's discard
\definevspacing[\v!max]       [category:1]
\definevspacing[\v!force]     [category:2]
\definevspacing[\v!disable]   [category:5]
\definevspacing[\v!nowhite]   [category:6]
\definevspacing[\v!back]      [category:7]
%               together      [category:8]
\definevspacing[\v!overlay]   [category:9]
\definevspacing[\v!enable]    [category:10]

\definevspacing[\v!weak]      [order:0]
\definevspacing[\v!strong]    [order:100]

\definevspacing[\s!default]   [\v!white] % was big for a while

实际实施是在spac-ver.lua(但我理解得不够深入,无法发表评论)。

相关内容