KOMA-Script 和段落标题后的垂直间距

KOMA-Script 和段落标题后的垂直间距

我目前无法将段落标题与后续正文之间的垂直间距更改为其他间距。我想要的是段落标题后面的换行符。据我了解,新代码会在段落部分和正文之间\RedeclareSectionCommand应用afterskip=1sp换行符(单行间距)。不知何故,这并没有按照我想要的方式工作。我的代码现在看起来像(MWE):

\documentclass[12pt,english,parskip=half*,listof=nochaptergap,final]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage{setspace}

\RedeclareSectionCommands[
    beforeskip=-3.25ex plus -1ex minus -0.2ex,
    afterskip=1sp,
    %indent=0pt
]{paragraph,subparagraph}

\onehalfspacing

\begin{document}
\paragraph{Test paragraph}
Test test test test test \\
Test test test test test
\end{document}

我想要的是一个段落后面的换行符,如果可能的话,还可以选择自己定制垂直间距。

- - 解决方案 - -

以防万一有人和我一样奇怪,只需parskip=half*从文档选项中删除,就可以了!谢谢@esdd!!!

答案1

更新

KOMA-Script 版本 3.26\RedeclareSectionCommand为和引入了两个新键\RedeclareSectionCommandsruninafterindent。这两个键的可能值是bysigntruefalse。有关更多信息,请参阅 KOMA-Script 文档或例如使用 koma-script 调整章节/小节标题周围的间距

runin使用值为¹ 的新键,false可以\parskip通过 删除标题和后续文本之间的afterskip=-\parskip

例子:

\documentclass[12pt,english,parskip=half*,listof=nochaptergap,final]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[onehalfspacing]{setspace}

\RedeclareSectionCommands[
    beforeskip=-3.25ex plus -1ex minus -0.2ex,
    runin=false,
    afterskip=-\parskip
]{paragraph,subparagraph}

\usepackage{blindtext}
\begin{document}
\paragraph{Test paragraph}
\Blindtext[2]
\end{document}

截屏

¹ 默认设置会runin=bysign导致与原始答案相同的行为。


原始答案

标题和后面文本之间的垂直间距至少与正文中两个段落之间的间距相同。这意味着,如果您使用 parskip 而不是 parindent(因为parskip=half*),则标题和后面文本之间的间距至少与此 parskip 相同。

在此处输入图片描述

代码:

\documentclass[12pt,english,parskip=half*,listof=nochaptergap,final]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[onehalfspacing]{setspace}

\RedeclareSectionCommands[
    beforeskip=-3.25ex plus -1ex minus -0.2ex,
    afterskip=1sp,% smallest possible positive value
]{paragraph,subparagraph}

\usepackage{blindtext}
\begin{document}
\paragraph{Test paragraph}
\Blindtext[2]
\end{document}

afterskip对于部分命令,的正值将使垂直跳跃量增加该值。 对于afterskip文本, 的负值将与标题在同一行开始, 的值afterskip将用作水平跳跃量。

在此处输入图片描述

代码:

\documentclass[12pt,english,parskip=half*,listof=nochaptergap,final]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[onehalfspacing]{setspace}

\RedeclareSectionCommands[
    beforeskip=-3.25ex plus -1ex minus -0.2ex,
    afterskip=-1em,% works as horizontal skip of 1em
]{paragraph,subparagraph}

\usepackage{blindtext}
\begin{document}
\paragraph{Test paragraph}
\Blindtext[2]
\end{document}

因此,从您的类选项中删除parskip=half*。然后使用 parindent 代替 parskip,并且仅使用 的正值afterskip作为标题和后续文本之间的垂直跳过。

在此处输入图片描述

代码:

\documentclass[12pt,english,
    %parskip=half*,% <- commented, so parskip=false is used
    listof=nochaptergap,final
]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[onehalfspacing]{setspace}

\RedeclareSectionCommands[
    beforeskip=-3.25ex plus -1ex minus -0.2ex,
    afterskip=1sp,
]{paragraph,subparagraph}

\usepackage{blindtext}
\begin{document}
\paragraph{Test paragraph}
\Blindtext[2]
\end{document}

如果你真的想要或需要parkip=half删除之间的 parskip,paragraph heading你可以使用

\documentclass[12pt,english,parskip=half,listof=nochaptergap,final]{scrreprt}
\usepackage[utf8]{inputenc}

\RedeclareSectionCommands[
beforeskip=-3.25ex plus -1ex minus -0.2ex,
afterskip=1sp,
%indent=0pt
]{paragraph,subparagraph}

\usepackage{xpatch}
\xapptocmd{\sectionlinesformat}{%
\ifstr{#1}{paragraph}{\vspace*{-\parskip}}{}%
\ifstr{#1}{subparagraph}{\vspace*{-\parskip}}{}%
}{}{}

\usepackage{blindtext}
\begin{document}
\paragraph{Test paragraph}
\Blindtext[2]
\end{document}

在此处输入图片描述

但我不推荐这样做,因为标题和后面的文本之间的间距通常比正文中两个段落之间的间距小。

相关内容