如何在不使用 titlesec 的情况下制作漂亮的章节标题

如何在不使用 titlesec 的情况下制作漂亮的章节标题

我正在寻找一种方法,使章节的第一页(即章节标题)大约在第一页的上半部分显示章节编号和标题,并且章节的文本从页面的一半开始。

我已经看到了几种使用方法,titlesec例如:

\usepackage[ ]{titlesec}  %
\titleformat{\chapter}[display]
  { \normalsize \huge  \color{black}}
  {\flushright \normalsize \color{RoyalRed} \MakeUppercase { \chaptertitlename } \hspace{1 ex} { \fontsize{60}{60}\selectfont \color{RoyalRed} \sffamily  \thechapter }} {10 pt}{\huge}  

这种方法效果不错,产生了类似这样的结果(忽略此图中的蓝色):

在此处输入图片描述

但我不想使用,titlesec因为我收到以下警告:

Class scrbook Warning: Usage of package `titlesec' together
(scrbook)              with a KOMA-Script class is not recommended.
(scrbook)              I'd suggest to use the package only
(scrbook)              if you really need it, because it breaks several
(scrbook)              KOMA-Script features, i.e., option `headings' and
(scrbook)              the extended optional argument of the section
(scrbook)              commands .
(scrbook)              Nevertheless, using requested
(scrbook)              package `titlesec' on input line 43.

总体而言,我对 LaTex 还比较陌生,但我觉得 KOMA 软件包设计精良,文档齐全,因此在 LaTex 格式化功能的混乱中,我希望继续正确使用 KOMA。那么问题是,如何在不使用 的情况下获得相同的章节标题效果titlesec

答案1

我不知道蓝色斜体是什么意思,也不知道应该如何指定。忽略这一点,你可以做一些与你想要的差不多的事情:

\documentclass[headings=twolinechapter,chapterprefix=true]{scrbook}
\usepackage{xcolor}
\usepackage{kantlipsum}
\renewcommand*\chapterheadstartvskip{\vspace*{.3\textheight}}
\renewcommand*\chapterheadendvskip{\vspace*{.1\textheight}}
\renewcommand*{\chapterformat}{%
  \parbox{\textwidth}{\hfill\chapappifchapterprefix{\ }\thechapter\autodot\enskip}}
\addtokomafont{disposition}{\normalfont\bfseries}
\addtokomafont{chapterprefix}{\color{red}\mdseries\scshape}
\begin{document}

  \tableofcontents

  \chapter[My Chapter Title]{%
    My Chapter Title}

  \kant[1-10]

\end{document}

康德的标题很花哨

答案2

这根本不能回答问题,它只是让我们稍微了解一下驯服野兽有多么困难。

标准类在分段命令的实现方面相当简单。KOMA 在这方面有所不同。

考虑章节,标准类(报告和书籍)知道 \chapter及其带星号的对应项\chapter*;KOMA 类(scrreprt 和 scrbook)知道这两个,加上\addchap (未编号但目录条目和标题已标记)和\addchap* (未编号,无目录条目,标题已清除)。所有行为都不同,加载后立即损坏titlesec。*可以修复吗?当然,LaTeX 毕竟是一种宏语言。但它需要太多时间了 将所有不同的选项、条件和后备都考虑在内。
为了获得chapter numberi,必须明确打开该选项,因为 cahpterprefix 不是默认的。

以下将 chapterprefix 和数字设置为深红色,但前提是chapterprefix=true。请注释掉全局选项并查看会发生什么。使用 KOMA 内部宏和 KOMA 内部条件,我们可以获得它们,但需要深入研究内部结构。

\documentclass[headings=optiontoheadandtoc,
chapterprefix=true
]{scrbook}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[x11names]{xcolor}
\makeatletter
\if@chapterprefix
 \renewcommand*{\chapterformat}{%
     \mbox{\color{Firebrick4}\chapappifchapterprefix{\nobreakspace}{\fontsize{40}{48}\selectfont\thechapter}\autodot\enskip}%
 }
\fi
\makeatother
\begin{document}
\tableofcontents
\chapter[tocentry={this is the toc entry},head={this goes to the
head}]{this is the normal chapter}
This is just some text. \clearpage Don't worry, there aren't any
ducks here. 
\addchap[tocentry={a duck, finally},head={unnumbered
head}]{unnumbered chapter by addchap}
\clearpage Let's look at the header
\chapter*{The standard starred chapter}
\clearpage What about the header?
\addchap*{addchap; unnumbered, no toc, no head also?}
\clearpage Is there a header?
\end{document}

* 嗯,老实说,我的测试表明,此功能不会立即损坏。

相关内容