我目前无法将段落标题与后续正文之间的垂直间距更改为其他间距。我想要的是段落标题后面的换行符。据我了解,新代码会在段落部分和正文之间\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
为和引入了两个新键\RedeclareSectionCommands
:runin
和afterindent
。这两个键的可能值是bysign
、true
和false
。有关更多信息,请参阅 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}
但我不推荐这样做,因为标题和后面的文本之间的间距通常比正文中两个段落之间的间距小。