Как поднять заголовок главы в 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

Использование a \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}}

чтобы избежать отображения стека в toc.

решение2

Решение с автоматическим переносом строк с использованием мини-страниц:

Мини-страницам нужна спецификация ширины. Поэтому я определил новую команду, \chapmarkсодержащую большую часть \chapterformatопределения, длину которой я могу измерить. Для этого я использовал две возможности пакета calc: команду \widthofи возможность производить вычисления длин. Ориентация базовой линии сохраняется необязательным bаргументом мини-страниц.

Новая \Chapterкоманда (с заглавной буквой C) определена таким образом, что вы можете использовать расширенные возможности KOMA-Script, которые будут указаны в необязательном аргументе, но обратите внимание, что ее нельзя использовать с опцией KOMA-Script, chapterprefixустановленной в значение true. Тогда вместо этого необходимо использовать значение по умолчанию \chapter, см. вывод ниже глав 11 и 12 в примере.

Кроме того, вывод оглавления не зависит от мини-страниц, см. вывод ниже.

Кроме того, я использовал \RaggedRightfrom ragged2eв качестве замены \raggedrightдля лучшего выравнивания.

Вместо \NewDocumentCommandfrom xparseя мог бы использовать также классический метод \newcommandвместе с тестами на пустые строки из пакетов (x)ifthenили etoolbox.

\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}

вывод субтитров для первой главы

вывод субтитров для второй главы

вывод субтитров для третьей главы

вывод субтитров для четвертой главы

вывод субтитров для пятой главы

вывод содержания

Связанный контент