运行标题:章节和部分在同一行 (KOMA)

运行标题:章节和部分在同一行 (KOMA)

我希望章节和部分的名称显示在同一行,一个从左边开始,另一个从右边开始。只要章节和部分不太长,我的解决方案就完全可以正常工作。如果这是原因,它们就会重叠。

我正在寻找一种解决方案,将该部分的名称放在第二行如果它的名字太长,所以会干扰章节的名称。

我知道页眉中的章节标题太长但我不想使用\chapter[<short title>]{<long title>}\section[<short title>]{<long title>}因为我不想改变目录中的外观。

考虑以下 MWE:


\documentclass[
twoside=false,
open=right,
]{scrbook}
\usepackage{ragged2e}
\usepackage[ 
headsepline, 
autooneside=false,
automark,
draft=false,
    ]{scrlayer-scrpage} 
\pagestyle{scrheadings}
\clearscrheadfoot
\rofoot{\bfseries\thepage}
\automark*[subsection]{}
\addtokomafont{pageheadfoot}{\normalfont\footnotesize\sffamily}
\lohead{\RaggedRight\leftmark}
\rohead{\RaggedLeft\rightmark}

\begin{document}
\chapter{Normal chapter title in a common document}
\clearpage
\section{No problem here}
\clearpage
\section{Very big problem here since the section title is too long for the line}
\end{document}

在此处输入图片描述

答案1

以下是如何计算它是否合适,然后决定是否将其拆分。2em 是为了在两部分之间留出一些空间。

\rohead{\sechead}
\newlength{\chaplength}
\newlength{\seclength}
\newcommand{\sechead}{%
     \settowidth{\chaplength}{\leftmark}%
     \settowidth{\seclength}{\rightmark}%
     \ifdim \dimexpr\chaplength+\seclength+2em>\textwidth
     \parbox{\dimexpr \textwidth-2em-\chaplength}{\RaggedLeft\rightmark}
     \else\RaggedLeft\rightmark\fi}

答案2

您可以在页眉中放置短文本,在目录中放置长文本。您只需要选择headings=optiontohead

\documentclass[
twoside=false,
open=right,
headings=optiontohead
]{scrbook}
\usepackage{ragged2e}
\usepackage[
headsepline,
autooneside=false,
automark,
draft=false,
    ]{scrlayer-scrpage}
\pagestyle{scrheadings}
\clearscrheadfoot
\rofoot{\bfseries\thepage}
\automark*[subsection]{}
\addtokomafont{pageheadfoot}{\normalfont\footnotesize\sffamily}
\lohead{\RaggedRight\leftmark}
\rohead{\RaggedLeft\rightmark}

\begin{document}
\tableofcontents
\chapter{Normal chapter title in a common document}
\clearpage
\section{No problem here}
\clearpage
\section[short for head]{Very big problem here since the section title is too long for the line}
\end{document}

在此处输入图片描述

在此处输入图片描述

相关内容