在 koma-script 中创建带有彩色标题的文档类

在 koma-script 中创建带有彩色标题的文档类

我正在尝试根据颜色的使用来创建适合我需要的自己的文档类。

为了更简短的描述,我将所有相应的内容放在以下工作示例中:

\documentclass[twoside=true, openright, pdftex, bibliography=totoc, chapterprefix=true, appendixprefix=true, numbers=noenddot, parskip=half, titlepage, index=totoc, headlines=3, footlines=2, headings=normal]{scrbook}
\usepackage{xcolor} 

\addtokomafont{chapter}{\color{blue}}
\addtokomafont{chapterprefix}{\color{red}}
\addtokomafont{chapterentry}{Own Chapter~}
\addtokomafont{section}{\color{blue}}

\makeatletter
\renewcommand{\thesection}{\textcolor{red}{Own Section \@arabic\c@section}}
\renewcommand*{\chapapp}{Own Chapter}

\begin{document}
\tableofcontents
\chapter{Chaptertest}
Text 1
\section{Sectiontest}
Text 2
\end{document}

它创建了以下章节

章节示例

以及下面的目录。

表中的内容

我的问题是,正如所见,目录中部分的颜色也发生了变化(但应该仍然是黑色),并且间距不正确,因此标题打印在标签上。

有人知道如何解决这个问题吗?谢谢!

更新:

我使用了 esdd 的解决方案,并使用 babel-package 添加了以下对更改章节和部分前文本的支持。这样就可以更轻松地进行更改并添加语言支持。

\usepackage[english]{babel}
\renewcaptionname{english}{\chaptername}{Own Chapter}

\makeatletter

\newcaptionname{english}{\sectionname}{Own Section}
\newcommand*{\secapp}{\@secapp}
\newcommand*\@secapp{\sectionname}

现在唯一缺少的是一个用于计算所用文本的宽度并根据计算值改变 tocnumwidth 的解决方案。

答案1

这里有一个建议,重新定义\sectionformat。您可以重新定义\addchaptertocentry\addsectocentry以获取目录中所需的条目。正如 Johannes 所建议的,您可以使用\RedeclareSectionCommand\RedeclareSectionCommands更改目录中章节和节号的空间。

\documentclass[
  %twoside=true,%default
  %openright,%default
  %pdftex,%No
  bibliography=totoc,
  chapterprefix=true,
  appendixprefix=true,
  numbers=noenddot,
  parskip=half,
  index=totoc,
  headlines=3,
  footlines=2,
  headings=normal
]{scrbook}

\usepackage{xcolor} 
\colorlet{headingscolor}{blue}
\colorlet{prefixcolor}{red}

\addtokomafont{chapter}{\color{headingscolor}}
\addtokomafont{section}{\color{headingscolor}}
\addtokomafont{chapterprefix}{\color{prefixcolor}}
\newkomafont{sectionprefix}{\color{prefixcolor}}

\renewcommand*\chapapp{Own Chapter}
\newcommand*\secapp{Own Section}

\renewcommand*\sectionformat{%
  {\usekomafont{sectionprefix}\secapp~\thesection\autodot\enskip}}

\renewcommand*\addchaptertocentry[2]{%
  \ifstr{#1}{}{%
    \addtocentrydefault{chapter}{}{#2}%
  }{
    \addtocentrydefault{chapter}{\chapapp~#1\autodot}{#2}%
  }%
}
\renewcommand*\addsectiontocentry[2]{%
  \ifstr{#1}{}{%
    \addtocentrydefault{section}{}{#2}%
  }{%
    \addtocentrydefault{section}{\secapp~#1\autodot}{#2}%
  }%
}
\RedeclareSectionCommands[tocnumwidth=8em]{chapter,section}

\usepackage{blindtext}% for dummy text
\begin{document}
\tableofcontents
\addchap{Introduction}
\Blindtext
\blinddocument
\blinddocument
\end{document}

在此处输入图片描述

在此处输入图片描述

答案2

使用最新版本的 KOMA 脚本,这非常容易。您可以使用键值语法重新定义章节和节命令的外观。对于您的情况,您只需添加一行\RedeclareSectionCommand[tocnumwidth=8em]{section}。通过查看输出来选择值8em。我稍微更改了节的编号,只是为了在下面的示例输出中使其更加明显。

baghiraKomaSectionEntriesToc

\documentclass[twoside=true,
 openright,
% pdftex,%No
 bibliography=totoc,
 chapterprefix=true,
 appendixprefix=true,
 numbers=noenddot,
 parskip=half,
 index=totoc,
 headlines=3,
 footlines=2,
 listof=totoc,%<- added for demonstation
 headings=normal]{scrbook}
\usepackage{xcolor} 
\usepackage{blindtext} 

\addtokomafont{chapter}{\color{blue}}
\addtokomafont{chapterprefix}{\color{red}}
\addtokomafont{section}{\color{blue}}

\renewcommand{\thesection}{\textcolor{red}{Own Section
    \arabic{chapter}--\arabic{section}}}
\renewcommand*{\chapapp}{Own Chapter}
\RedeclareSectionCommand[tocnumwidth=8em]{section}% <- Magic here

\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
\tableofcontents
\listoffigures
\chapter{Walzing Wombat}
\blindtext
\captionof{figure}{this is just a test caption}
\section{Wobbling Whale}
\blindtext
\chapter{Salsa Squirrel}
\blindtext
\section{Samba Snake}
\blindtext\cite{companion}
\printbibliography

\end{document}

答案3

命令格式(子)标题中的章节编号是\@seccntformat 我们可以做的

\documentclass[twoside=true, openright, pdftex, bibliography=totoc, chapterprefix=true, appendixprefix=true, numbers=noenddot, parskip=half, titlepage, index=totoc, headlines=3, footlines=2, headings=normal]{scrbook}
\usepackage{xcolor} 
\usepackage{tocstyle}
\settocstylefeature[1]{entryhook}{Own Section }

\addtokomafont{chapter}{\color{blue}}
\addtokomafont{chapterprefix}{\color{red}}
\addtokomafont{chapterentry}{Own Chapter~}
\addtokomafont{section}{\color{blue}}

\makeatletter
\renewcommand*{\chapapp}{Own Chapter}
\def\@seccntformat#1{\@ifundefined{#1@cntformat}%
{\csname the#1\endcsname\quad}%
{\csname #1@cntformat\endcsname}%
}
\def\section@cntformat{\textcolor{red}{Own Section \thesection}\quad}
\makeatother

\begin{document}
\tableofcontents
\chapter{Chaptertest}
Text 1
\section{Sectiontest}
Text 2
\end{document}

更新命令添加

\usepackage{tocstyle}
\settocstylefeature[1]{entryhook}{Own Section }

在此处输入图片描述

相关内容