2

在我的文档中,我想在目录中使用两种颜色来区分两位作者之间的作品。例如,

  • 蓝色的章节和小节由作者 X 撰写,红色由作者 Y 撰写。

在某些章节中,章节和小节由两位作者共同编写。例如在 A 章(蓝色)中,

  • 第 1 节(蓝色)由 X 编写。
  • 第 1.1 小节(红色)和第 2 节(红色)由 Y 编写。

最后,这些颜色只能在目录中更改,而不能在文档内容中更改。

我怎样才能这样定制?任何人都可以提供类似的帮助吗?

提前致谢。

4

1 回答 1

8

With tocloft you have control over the formatting of every entry type within the ToC. For chapters there's \cftchapfont, for sections there's \cftsecfont and subsections have \cftsubsecfont.

Below provide \authoredby{<name>} which inserts an entry into the ToC for changing the colour. Additionally, author colours can be defined using \defineauthorcolor{<name>}{<colour>}.

enter image description here

\documentclass{book}
\usepackage{tocloft,xcolor}

\newcommand{\defineauthorcolor}[2]{%
  \colorlet{author#1}{#2}% Create an author colour
  \expandafter\def\csname authoredby#1\endcsname{% Create author colour settings
    \renewcommand{\cftchapfont}{\bfseries\color{author#1}}% Chapter colour
    \renewcommand{\cftsecfont}{\color{author#1}}% Section colour
    \renewcommand{\cftsubsecfont}{\color{author#1}}}% Subsection colour
}
\makeatletter
\newcommand{\authoredby}[1]{\addtocontents{toc}{\protect\@nameuse{authoredby#1}}}%
\makeatother

\defineauthorcolor{A}{red}% Author A will be coloured red
\defineauthorcolor{B}{blue}% Author B will be coloured blue

\begin{document}

\tableofcontents

\authoredby{A}
\chapter{A chapter}
\authoredby{B}
\section{A section}
\subsection{A subsection}
\authoredby{A}
\section{Another section}
\subsection{Another subsection}
\authoredby{B}
\subsection{Yet another subsection}

\chapter{Another chapter}
\section{First section}
\section{Second section}
\section{Last section}

\authoredby{A}
\chapter{Last chapter}

\end{document}

The .toc for the above minimal example looks like this:

\@nameuse {authoredbyA}
\contentsline {chapter}{\numberline {1}A chapter}{3}
\@nameuse {authoredbyB}
\contentsline {section}{\numberline {1.1}A section}{3}
\contentsline {subsection}{\numberline {1.1.1}A subsection}{3}
\@nameuse {authoredbyA}
\contentsline {section}{\numberline {1.2}Another section}{3}
\contentsline {subsection}{\numberline {1.2.1}Another subsection}{3}
\@nameuse {authoredbyB}
\contentsline {subsection}{\numberline {1.2.2}Yet another subsection}{3}
\contentsline {chapter}{\numberline {2}Another chapter}{5}
\contentsline {section}{\numberline {2.1}First section}{5}
\contentsline {section}{\numberline {2.2}Second section}{5}
\contentsline {section}{\numberline {2.3}Last section}{5}
\@nameuse {authoredbyA}
\contentsline {chapter}{\numberline {3}Last chapter}{7}

Each use of \authoredby{<name>} inserts the \@nameuse{authoredby<name>} into the ToC to switch the colour accordingly. Note that this solution works for any number of authors (not just limited to two).

This solution should work with the book, report and article document classes.

于 2014-12-19T05:45:59.593 回答