使用 titlesec 在 scrbook 中格式化附录章节标题

使用 titlesec 在 scrbook 中格式化附录章节标题

我正在写一篇较长的文本,并使用重新定义了章节起始页的设计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}

相关内容