我正在学习如何使用 Context,但在创建子节标题时遇到了麻烦,因为标题下方没有空行。我正在使用基线网格,并希望继续这样做。
有没有办法消除“子节 1”与其段落之间的空白行?我在“子节 2”中实现了我想要的外观,但它没有使用节标题,无法引用。
% macros=mkvi
\usemodule[ipsum]
\setuppapersize[A5]
\setupbodyfont[10pt]
\definefont [Heading] [Serif at 20pt]
\definefont [ParagraphHeading] [SerifItalic at 13pt]
\setuphead [section] [
style=\Heading,
number=no,
align=middle,
before=,
after=
]
\setuphead [subsection] [
style=\ParagraphHeading,
number=no,
align=flushleft,
before=,
after=
]
\setupinterlinespace[line=1.5em]
\setuplayout [grid=yes]
\showgrid
\starttext
\section{Section}
\ipsum[alternative=lines,n=2]
\subsection{Sub-Section 1}
\ipsum[alternative=lines,n=2]
\blank[1.5em]
{\it \switchtobodyfont[13pt]{Sub-Section 2}}\\
\ipsum[alternative=lines,n=2]
\stoptext
答案1
网格捕捉可能会变得相当棘手。
这里的问题是,您在标题中使用了较大的字体大小,因此标题的“深度”将与下一行的“高度”重叠。您可以使用grid=high
强制深度向下舍入而不是向上舍入:
% macros=mkvi
\usemodule[ipsum]
\setuppapersize[A5]
\setupbodyfont[10pt]
% Added: *default
\definefont [Heading] [Serif*default at 20pt]
\definefont [ParagraphHeading] [SerifItalic*default at 13pt]
\setuphead [section] [
style=\Heading,
number=no,
align=middle,
before=,
after=,
grid=high,
]
\setuphead [subsection] [
style=\ParagraphHeading,
number=no,
align=flushleft,
before=,
after=,
grid=high,
]
\setupinterlinespace[line=1.5em]
\setuplayout [grid=yes]
\showgrid
\showmakeup[line] % Visualize the line heights/depths
\starttext
\section{Section}
\ipsum[alternative=lines,n=2]
\subsection{Sub-Section 1}
\ipsum[alternative=lines,n=2]
\blank[1.5em]
{\it \switchtobodyfont[13pt]{Sub-Section 2}}\\
\ipsum[alternative=lines,n=2]
\stoptext
这“细节决定成败”手册中包含更多有关网格捕捉的信息,尽管它读起来比较技术性。
*default
此外,您在使用时几乎总是应该添加\define(d)font
以确保获得所有默认字体功能。