如何提升 Koma-script 中的章节标题以使其与章节前缀对齐?

如何提升 Koma-script 中的章节标题以使其与章节前缀对齐?

我目前有这个:

\documentclass{scrbook}
\usepackage{mwe}
\renewcommand*{\chapterformat}{\mbox{\chapappifchapterprefix{\nobreakspace}\scalebox{3}{\thechapter}\enskip}}

\begin{document}
\chapter{\baselineskip{-1em}This chapter caption has multiple lines and does not fit into a single line}
\lipsum[1]
\end{document}

前缀和标题仅与第一行对齐

但我希望章节标题与前缀的基线对齐,类似于:

我想要的

我知道章节标题太长很麻烦。但有时它们无法放在一行中,我认为第一个结果有点令人不安。

答案1

使用\Longstack适用于两行章节名称,并手动插入分隔符。但是,如果达到三行,则没有任何方法适合查看。

\documentclass{scrbook}
\usepackage{mwe}
\renewcommand*{\chapterformat}{\mbox{\chapappifchapterprefix{\nobreakspace}\scalebox{3}{\thechapter}\enskip}}
\usepackage{lipsum}
\usepackage[usestackEOL]{stackengine}
\begin{document}
\chapter{\Longstack[l]{This chapter caption has multiple lines\\ and does not fit into a single line}}
\lipsum[1]
\end{document}

在此处输入图片描述

还要注意,\Longstack不会将右边缘标题文本与右边缘对齐。它在这里的出现只是偶然的。

最后,如果您希望使用目录,则需要使用可选参数\chapter

\chapter[This chapter caption has multiple lines and does not fit into a single line]%
  {\Longstack[l]{This chapter caption has multiple lines\\ and does not fit into a single line}}

以避免堆栈出现在目录中。

答案2

使用 minipages 自动换行的解决方案:

Minipages 需要宽度规范。因此我定义了一个\chapmark包含大部分\chapterformat定义的新命令,我可以测量其长度。为此,我使用了包的两个功能calc:命令\widthof和计算长度的可能性。基线方向由bminipages 的可选参数保护。

\Chapter命令(大写 C)的定义方式是,您可以使用 KOMA-Script 的增强功能作为可选参数,但请注意,它不能与chapterprefix设置为 true 的 KOMA-Script 选项一起使用。然后必须使用默认值\chapter,参见示例中第 11 章和第 12 章的输出。

目录的输出也不受小页面的影响,也请参见下面的输出。

此外,为了更好地对齐,我使用了\RaggedRightragged2e代替。\raggedright

除了\NewDocumentCommand使用 from之外xparse,我还可以使用经典的以及来自包或的\newcommand空字符串测试。(x)ifthenetoolbox

\documentclass{scrbook}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}

\usepackage{calc} % provides advanced length computation and command "\widthof"
\usepackage{ragged2e}% better text alignment
\usepackage{xparse}% advanced command definitions

\renewcommand*{\raggedchapterentry}{\RaggedRight}% for chapter TOC entries
\renewcommand*{\raggedsection}{\RaggedRight}% for alignment in titles

\newcommand*{\chapmark}{%
  \scalebox{1.5}{\chapappifchapterprefix{\nobreakspace}}\scalebox{3}{\thechapter}\enskip%
}
\renewcommand*{\chapterformat}{%
  \begin{minipage}[b]{\widthof{\chapmark}}
    \chapmark
  \end{minipage}%
}

\NewDocumentCommand\Chapter{o m}{% note the uppercase "C"
  \IfValueTF{#1}% optional argument given or not
  {% with optional argument:
    \chapter[#1]{%
      \begin{minipage}[b]{\textwidth-\widthof{\chapmark}}
      #2
      \end{minipage}}%
  }{% without optional argument:
    \chapter[#2]{%
      \begin{minipage}[b]{\textwidth-\widthof{\chapmark}}
      #2
      \end{minipage}}%
  }
}

\begin{document}
\Chapter{This chapter caption is too long to fit into a single line} % ch. 1

\Chapter[TOC entry for caption with 3 lines] % ch. 2
{This chapter caption is longer than the first one and does not even fit into
two lines}

\setcounter{chapter}{9}

\Chapter{Another chapter caption that is too long to fit into a single line} % ch. 10

\KOMAoption{chapterprefix}{true}

\Chapter[Another TOC entry for caption with 3 lines] % ch. 11
{This chapter caption is also longer than the first one and does not even fit into
two lines}

\chapter{% ch. 12
This caption produced with \textmd{\textbackslash chapter} is too long to fit into
a single line}

\tableofcontents

\end{document}

第一章标题输出

第二章标题输出

第三章标题输出

第四章标题输出

第五章标题输出

目录输出

相关内容