我正在尝试根据颜色的使用来创建适合我需要的自己的文档类。
为了更简短的描述,我将所有相应的内容放在以下工作示例中:
\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
。我稍微更改了节的编号,只是为了在下面的示例输出中使其更加明显。
\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 }