\chapter 和 \chapter* 的 \chapterformat 相同,但不带 titlesec

\chapter 和 \chapter* 的 \chapterformat 相同,但不带 titlesec

我对章节标题进行了一些样式设计,基于蒂克兹标题安全包裹。

不幸的是,KOMA-Script 包给了我很多关于标题安全为了摆脱 titlesec 包,我尝试使用内置\chapterformat的 KOMA-Script 来实现相同的章节样式。这很有效,直到我注意到\chapter*类似标题(例如 TOC 等)没有受到影响。

经过一番研究,我发现了这种行为的 - 微不足道的 - 原因。\chapterformat仅影响标题的数字部分。所有的都\chapter*没有章节号,所以\chapterformat不起作用。

问题

是否可以使用纯 KOMA-Script 格式化 \chapter 和 \chapter*,或者这是否需要标题安全或者类似的包?


平均能量损失

\documentclass{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage{blindtext}
\usepackage{tikz}
\usepackage[T1]{fontenc}

\renewcommand{\chapterformat}{
    \begin{tikzpicture}[remember picture,overlay]
        \draw[fill=gray,draw=none] (0,0) rectangle (1cm,1cm);
    \end{tikzpicture}
    \thechapter
}

\begin{document}
\chapter{The Chapter}
\blindtext
\chapter*{The Chapter without number}
\blindtext
\end{document}

编译的MWE

MWE,使用 pdflatex/miktex 2.9/KOMAScript 3.18 编译

仅供参考

这也许不是问题的一部分,但这是\chapter我的文档中的当前样式。\chapter*应该具有相同的位置和背景,但没有橙色条。上面的只是一个用于演示目的的 MWE。

这是风格化的章节

答案1

自 KOMA-Script 版本 3.19 起,可以重新定义命令\chapterlinesformat来更改没有前缀行的章节标题的布局。现在可以将章节标题放置在页面顶部的灰色框中,而无需使用scrlayer-scrpage。并且可以包含多行的章节标题。

\documentclass[twoside,open=any]{scrreprt}[2015/10/03]
%\providecommand*\Ifstr{\ifstr}% needed up to and including KOMA-Script version 3.27, see https://komascript.de/faq_deprecatedif
%\providecommand*\Ifthispageodd{\ifthispageodd}% needed up to and including KOMA-Script version 3.27, see https://komascript.de/faq_deprecatedif
\usepackage[utf8]{inputenc}
\usepackage{blindtext}
\usepackage[T1]{fontenc}
\usepackage{libertine}

\usepackage{xcolor}

\RedeclareSectionCommand[
  beforeskip=1sp minus 1sp,
  afterskip=4\baselineskip plus .2\baselineskip minus .2\baselineskip,
  font=\Huge\scshape\color{white}
]{chapter}

\renewcommand\chapterformat{%
  \makebox[0pt][r]{\thechapter\enskip
    \textcolor{orange}{\smash{\rule[-\dp\strutbox]{2.5pt}{\baselineskip}}}%
}}

\newlength\chapterleftmargin
\newcommand\chaptervmargin{1.5em}

\makeatletter
\renewcommand\chapterlinesformat[3]{%
  \vspace*{\dimexpr-1in-\headsep-\headheight-\topmargin-1ex}%
  \Ifthispageodd
    {\setlength\chapterleftmargin{\dimexpr1in+\hoffset+\oddsidemargin\relax}}
    {\setlength\chapterleftmargin{\dimexpr\paperwidth-\textwidth-1in-\hoffset-\oddsidemargin\relax}}
    \hspace*{-\chapterleftmargin}%
    \makebox[0pt][l]{%
      \colorbox{gray}{%
        \parbox[t][\dimexpr\totalheight+\chaptervmargin*2\relax][c]{\dimexpr\paperwidth-2\fboxsep\relax}{%
          \makebox[\dimexpr\chapterleftmargin-\fboxsep\relax][r]{#2}%
          \Ifstr{#2}{}
            {\parbox[t]{\textwidth}{\raggedchapter#3}}
            {\enskip\parbox[t]{\dimexpr\textwidth-.5em\relax}{\raggedchapter#3}}%
        }%
      }%
    }%
}
\makeatother

\begin{document}
\tableofcontents
\chapter{The chapter}
\KOMAScriptVersion

\Blindtext
\chapter*{The Chapter without number}
\blindtext
\chapter{A long long long long chapter title with more than one line}
\blindtext
\Blinddocument
\end{document}

运行两次(因为\Ifthispageodd)得到

在此处输入图片描述

相关内容