我希望章节名称的格式如下所示:
在圆圈和章节名称之间有一个水平标尺,用于编号章节和非编号章节(我使用该chapterprefix=on
选项,因此我不想在章节编号之前丢失“章节”一词)
问题在于:
放置水平标尺。
标题与“CHAPTER {number}”位于同一行。
提前致谢
答案1
这是一个使用的解决方案标题安全包;这将按预期工作,适用于编号和未编号的章节;考虑到评论,我用包\CIRCLE
中的圆圈的初始定义替换了它wasysym
:
\documentclass[chapterprefix=true]{scrbook}
\usepackage{titlesec}
\usepackage{wasysym}
\titleformat{\chapter}[block]
{\normalfont\huge\sffamily\bfseries}
{\CIRCLE\vskip6pt\titlerule[1pt]\vskip9pt\chaptertitlename~\thechapter.}
{0.5em}{}
\titleformat{name=\chapter,numberless}[block]
{\normalfont\huge\sffamily\bfseries}
{\CIRCLE\vskip6pt\titlerule[1pt]\vskip9pt}
{0pc}{}
\begin{document}
\tableofcontents
\chapter{Test Numbered Chapter}
\chapter*{Test Unnumbered Chapter}
\end{document}
输出的一些图像显示了编号和未编号的章节:
答案2
以下是针对较新版本的 KOMA-Script 的建议:
您不希望章节名称和编号有额外的前缀行。因此,不要使用选项chapterprefix=on
。您可以重新定义\chapterformat
以插入前缀\chaptername
(或\appendixname
)。然后,您可以重新定义\chapterlinesformat
以插入点和规则:
\documentclass[
numbers=endperiod,% dot at the end of numbers
]{scrbook}
%\providecommand*\Ifstr{\ifstr}% needed up to and including KOMA-Script version 3.27, see https://komascript.de/faq_deprecatedif
\usepackage{wasysym}
\renewcommand\chapterformat{\chapapp~\thechapter\autodot\enskip}% chapter name as prefix
\makeatletter
\renewcommand\chapterlinesformat[3]{%
\Ifstr{#1}{chapter}
{\CIRCLE\\*\rule{\textwidth}{1pt}\vskip9pt}{}% insert dot and rule before chapter titles
\@hangfrom{#2}{#3}%
}
\makeatother
\begin{document}
\tableofcontents
\chapter{Test Numbered Chapter}
\chapter*{Test Unnumbered Chapter}
\end{document}
结果:
答案3
我有点不明白你说的“圆形符号,20 pt”是什么意思,你是指半径还是直径?现在……我写了一段代码,我认为它有点危险(也许titlesec
提供了一种更符合用户空间的方式)。这采用了 KOMA 的一个基本定义,并对其进行了修改以满足您的要求。我也遇到了 chaptermark 的问题,所以我使用了这个定义。这当然没有经过充分测试,但我相信它在任何情况下都应该有效。
\documentclass[chapterprefix=true]{scrbook}
\usepackage{tikz}
\makeatletter
\renewcommand*{\@@makechapterhead}[1]{\chapterheadstartvskip
{%
\setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}%
\normalfont\sectfont\nobreak\size@chapter{}%
\if@chapterprefix
\let\@tempa\raggedsection
\else
\let\@tempa\@hangfrom
\fi
\@tempa{\ifnum \c@secnumdepth >\m@ne%
\if@mainmatter
\if@chapterprefix
\expandafter\size@chapterprefix
\else
\expandafter\size@chapter
\fi
{\tikz\fill circle (20pt) ; \rule[.75\baselineskip]{5cm} {1pt}}%insted of chaptermark
\if@chapterprefix
\size@chapterprefix{}\endgraf\nobreak\vskip.5\baselineskip% \chapapp\enskip \thechapter.\enskip
\fi
\fi
\fi
}%
{\raggedsection \interlinepenalty \@M \size@chapter{#1}\par}}%
\nobreak\chapterheadendvskip
}
\makeatother
\begin{document}
\tableofcontents
\chapter{text}
Test text
\section{text}
Test text
\end{document}