修改 scrbook 中未编号章节的 beforeskip

修改 scrbook 中未编号章节的 beforeskip

我想调整未编号章节前的垂直间距仅有的。我喜欢默认的编号章节,但我需要单页摘要,而大的垂直跳跃占用了太多空间。我尝试了类似这样的方法:

\documentclass{scrbook}

\begin{document}

\frontmatter{}
\RedeclareSectionCommand[beforeskip=0pt]{addchap}
\addchap{Abstract}
Hello, world!

\mainmatter{}
\chapter{Introduction}
Goodbye!

\end{document}

...但\addchap无法独立修改。我看到两种合理的解决方法:

  1. 创造一些类似于frontchap的完美副本,\chapter但没有beforeskip也没有数字的东西。

  2. \RedeclareSectionCommand在 frontmatter 的开头使用来beforeskip更改\chapter,在 mainmatter 的开头使用 来返回默认值。

但我不能 100% 确定我将如何实现。是否有用于“基于现有命令创建分段命令”的 KOMA 命令?或者“返回默认值”?我宁愿避免对特定的 beforeskip 值进行硬编码,而是使用基于当前字体大小等计算的值。

谢谢你!

答案1

您可以使用\frontmatter\renewcommand*\chapterheadstartvskip{}删除前言中章节标题前的垂直空间并\mainmatter\KOMAoptions{headings=big}恢复默认设置。

例子:

\documentclass{scrbook}
\usepackage{showframe}% to show the page layout

\begin{document}
\frontmatter
\renewcommand*\chapterheadstartvskip{}% removes space before chapter titles 
\chapter{Abstract}
Hello, world!

\mainmatter
\KOMAoptions{headings=big}% restores default space before chapter titles
\chapter{Introduction}
Goodbye!
\end{document}

在此处输入图片描述

请注意,前言中的章节默认没有编号。


您还可以定义一个新的切片命令\frontchap

例子:

\documentclass{scrbook}[2020/01/24]
\usepackage{showframe}% to show the page layout

\DeclareTOCStyleEntry[
  level:=chapter,
  indent:=chapter,
  numwidth:=chapter,
  beforeskip:=chapter
]{chapter}{frontchap}
\DeclareNewSectionCommand[
  style=chapter,
  level=\chapternumdepth,
  beforeskip=0pt,
  afterindent=false
]{frontchap}

\BeforeTOCHead{\let\chapter\frontchap}
\let\frontchapmark\chaptermark
\let\frontchapmarkformat\chaptermarkformat
\makeatletter
\let\c@frontchap\c@chapter% use the same counter
\def\cl@frontchap{\cl@chapter}% use the same reset list
\makeatother

\begin{document}

\frontmatter
\frontchap{Abstract}
Hello, world!
\mainmatter
\chapter{Introduction}
Goodbye!
\end{document}

相关内容