![使用 titlesec 在 scrbook 中格式化附录章节标题](https://linux22.com/image/257473/%E4%BD%BF%E7%94%A8%20titlesec%20%E5%9C%A8%20scrbook%20%E4%B8%AD%E6%A0%BC%E5%BC%8F%E5%8C%96%E9%99%84%E5%BD%95%E7%AB%A0%E8%8A%82%E6%A0%87%E9%A2%98.png)
我正在写一篇较长的文本,并使用重新定义了章节起始页的设计titlesec
。例如
\documentclass[cleardoublepage=empty,fontsize=11pt,a4paper,twoside,DIV=calc]{scrbook}
\usepackage[no-math]{fontspec}
\usepackage{xunicode,xcolor}
\usepackage{hyperref,titlesec,scalefnt}
\titleformat{\chapter}[display]%
{\relax\huge\color{blue}}%
{\Huge\raggedleft{\textcolor{blue!25}{\scalefont{4}\thechapter}}}{0pt}{}
\titlespacing{\chapter}{0pt}{\baselineskip}{\baselineskip}
\begin{document}
\begin{mainmatter}
\chapter{Eins}
\end{mainmatter}
\begin{backmatter}
\chapter{Ein Beispiel}
\end{backmatter}
\end{document}
这会将章节编号设置为浅蓝色,并在右侧显示大号(参见第 1 章)。但是,如果我更改为backmatter
添加附录章节(应该是附录 A),则整个titlesec
(从第二个块开始)定义就会丢失。我希望将其设置A
为“附录编号”并设置在右侧,作为之前的章节编号(当然还有目录中的“A 示例”)。
我怎样才能实现将编号设置为 A(并显示)并且 titlesec 定义不会丢失?
答案1
\backmatter
(顺便说一下,它就像\frontmatter
一个开关,而不是一个环境)将关闭章节编号,包括附录的编号。使用\appendix
而不是\backmatter
。
\documentclass{scrbook}
\usepackage[no-math]{fontspec}
\usepackage{xunicode,xcolor}
\usepackage{hyperref,titlesec,scalefnt}
\titleformat{\chapter}[display]%
{\relax\huge\color{blue}}%
{\Huge\raggedleft{\textcolor{blue!25}{\scalefont{4}\thechapter}}}{0pt}{}
\titlespacing{\chapter}{0pt}{\baselineskip}{\baselineskip}
\begin{document}
\mainmatter
\chapter{Eins}
\appendix
\chapter{Ein Beispiel}
\end{document}
答案2
我可以建议不要使用titlesec
而是重新定义\chapterformat
和使用\setkomafont{chapter}
吗?
为了满足您对后记的要求,我们需要\backmatter
不是设置\@mainmatterfalse
,而是重置章节计数器。
以下是一种方法:
\documentclass[cleardoublepage=empty,fontsize=11pt,a4paper,twoside,DIV=calc]{scrbook}
\usepackage[no-math]{fontspec}
\usepackage{xunicode,xcolor}
\usepackage{hyperref,scalefnt}
\usepackage{lipsum}% for dummy text
\makeatletter
% the chapter format:
\KOMAoption{chapterprefix}{true}
\renewcommand*\chapterformat{%
\hbox to \linewidth{\hfill{\normalfont\Huge\color{blue!25}\scalefont{4}\thechapter}}%
}
\setkomafont{chapter}{\normalfont\Huge\color{blue!25}}
% redefinition of \backmatter:
\renewcommand*\backmatter{%
\if@openright\cleardoubleoddpage\else\clearpage\fi
\setcounter{chapter}{0}%
\renewcommand*\thechapter{\Alph{chapter}}%
\@ifundefined{hypersetup}
{}{\renewcommand*\theHchapter{\Alph{chapter}}}%
}
\makeatother
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\chapter{Eins}
\lipsum
\backmatter
\chapter{Ein Beispiel}
\lipsum
\end{document}