Настройка содержания двумя цветами в латексе

В моем документе я хочу использовать два цвета в оглавлении, чтобы различать работы двух авторов. Например,

  • Главы, разделы и подразделы, окрашенные в синий цвет, написаны автором X, а красным цветом - автором Y.

Некоторые главы, разделы и подразделы написаны обоими авторами. Например, в главе A (синий),

  • Раздел 1 (синий) написан X.
  • Подраздел 1.1 (красный) и раздел 2 (красный) написаны Ю.

Наконец, эти цвета нужно изменять только в оглавлении, но не в содержимом документа.

Как я могу так настроить? Кто-нибудь сможет помочь с чем-то подобным?

Заранее спасибо.


person Dheeraj    schedule 18.12.2014    source источник


Ответы (1)


С помощью tocloft вы можете управлять форматированием каждого типа записи в ToC. Для глав есть \cftchapfont, для разделов - \cftsecfont, а в подразделах - \cftsubsecfont.

Ниже приводится \authoredby{<name>}, который вставляет запись в ToC для изменения цвета. Кроме того, авторские цвета можно определить с помощью \defineauthorcolor{<name>}{<colour>}.

введите описание изображения здесь

\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}

.toc для приведенного выше минимального примера выглядит так:

\@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}

При каждом использовании \authoredby{<name>} \@nameuse{authoredby<name>} вставляется в ToC для соответствующего переключения цвета. Обратите внимание, что это решение работает для любого количества авторов (не только для двух).

Это решение должно работать с book, _ 13_ и _ 14_ классы документов.

person Werner    schedule 19.12.2014