根据部分对章节和节进行着色

根据部分对章节和节进行着色

我正在使用书籍文档类,我想生成一个包含多个部分、章节、节、节和小节的文档。我想通过根据部分对所有内容进行着色,让读者更容易阅读。例如,我想要:

  • A部分的标题为蓝色
  • A 部分中的章节标题为蓝色
  • A 部分的所有章节标题均为蓝色

进而..

  • B 部分的标题为红色
  • B 部分中的章节标题为红色
  • B 部分的所有章节标题均为红色

ETC..

有人能帮忙解决这样的问题吗?提前谢谢了!

PS. 我的文档开头是这样的:

\documentclass[11pt,letterpaper]{book}
\usepackage{amsfonts,amsthm,amssymb}
\usepackage[tbtags]{amsmath}
\usepackage{color}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead[LE,RO]{\slshape\thepage}
\fancyhead[RE]{\slshape \leftmark}
\fancyhead[LO]{\slshape \rightmark}

\renewcommand{\thepart}{\Alph{part}}
\renewcommand{\thechapter}{\Roman{chapter}}

答案1

这是一个可能的解决方案,使用标题安全包来为章节标题添加颜色;部分标题(及其目录条目)的颜色是通过重新定义内部宏来添加的\part\@part\@spart;目录中章节条目的颜色是通过重新定义来实现的\@chapter。颜色方案是通过一个简单的实现的\ifcase

\documentclass[11pt,letterpaper]{book}
\usepackage{amsfonts,amsthm,amssymb}
\usepackage[tbtags]{amsmath}
\usepackage{xcolor}
\usepackage{lipsum}
\usepackage{titlesec}
\usepackage{chngcntr}

\newcommand\MyColor{black}

\usepackage{fancyhdr}
\pagestyle{fancy}

\fancyhead[LE,RO]{\slshape\color{\MyColor}\thepage}
\fancyhead[RE]{\slshape\color{\MyColor}\leftmark}
\fancyhead[LO]{\slshape\color{\MyColor}\rightmark}

\counterwithin{chapter}{part}
\renewcommand{\thepart}{\Alph{part}}
\renewcommand{\thechapter}{\Roman{chapter}}

\titleformat{\chapter}[display]
{\normalfont\huge\bfseries\color{\MyColor}}{\chaptertitlename\ \thechapter}{20pt}{\Huge}

\makeatletter
\renewcommand\part{%
  \if@openright
    \cleardoublepage
  \else
    \clearpage
  \fi
  \thispagestyle{plain}%
  \renewcommand\MyColor{%
    \ifcase\value{part} \or blue\or red\or olive\or magenta\else yellow\fi}
  \if@twocolumn
    \onecolumn
    \@tempswatrue
  \else
    \@tempswafalse
  \fi
  \null\vfil
  \secdef\@part\@spart}
\def\@part[#1]#2{%
    \ifnum \c@secnumdepth >-2\relax
      \refstepcounter{part}%
      \addcontentsline{toc}{part}{\color{\MyColor}\thepart\hspace{1em}#1}%
    \else
      \addcontentsline{toc}{part}{\color{\MyColor}#1}%
    \fi
    \markboth{}{}%
    {\centering
     \interlinepenalty \@M
     \normalfont
     \ifnum \c@secnumdepth >-2\relax
       \huge\bfseries\color{\MyColor} \partname\nobreakspace\thepart
       \par
       \vskip 20\p@
     \fi
     \Huge \bfseries #2\par}%
    \@endpart}
\def\@spart#1{%
    {\centering
     \interlinepenalty \@M
     \normalfont
     \Huge \bfseries #1\par}%
    \@endpart}
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
                       \if@mainmatter
                         \refstepcounter{chapter}%
                         \typeout{\@chapapp\space\thechapter.}%
                         \addcontentsline{toc}{chapter}%
                                   {\color{\MyColor}\protect\numberline{\thechapter}#1}%
                       \else
                         \addcontentsline{toc}{chapter}{\color{\MyColor}#1}%
                       \fi
                    \else
                      \addcontentsline{toc}{chapter}{\color{\MyColor}#1}%
                    \fi
                    \chaptermark{#1}%
                    \addtocontents{lof}{\protect\addvspace{10\p@}}%
                    \addtocontents{lot}{\protect\addvspace{10\p@}}%
                    \if@twocolumn
                      \@topnewpage[\@makechapterhead{#2}]%
                    \else
                      \@makechapterhead{#2}%
                      \@afterheading
                    \fi}
\makeatother

\begin{document}

\tableofcontents

\part{Test Part One}
\chapter{Chapter A-One}
\lipsum[1]
\section{Test section A-One One}
\lipsum[1-10]

\chapter{Chapter A-Two}
\lipsum[1]
\section{Test section A-Two One}
\lipsum[1-10]

\part{Test Part Two}
\chapter{Chapter B-One}
\lipsum[1-7]
\chapter{Chapter B-Two}
\lipsum[1-7]

\part{Test Part Three}
\chapter{Chapter C-One}
\lipsum[1-7]
\chapter{Chapter C-Two}
\lipsum[1-7]

\end{document}

以下是最终文件的一些页面:

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

以下是目录的图片:

在此处输入图片描述

仅作为个人评论,这种着色方案必须非常小心地处理(选择合适的颜色至关重要),以免分散注意力并避免实现不愉快的布局。

答案2

您可以使用该sectsty包修改标题格式。例如,在加载包后,使用它\partfont{\color{blue}}来更改部分标题的颜色、\chapterfont{\color{blue}}章节标题的颜色等。也可以使用此包应用其他格式;参考 sectsty 包文档以了解其他修饰符(字体大小、字体粗细、字体形状等)可能会很有用。

在本例中,我定义了一个变量\pcolor,以便可以为每个部分更改颜色。在每个部分之前,使用\renewcommand\pcolor{}定义下一个部分的颜色;为了防止颜色更改影响前一部分,请\clearpage在更改颜色之前使用。通过修改定义来更改页眉字体颜色fancyhdr

以下是显示变化的 MWE:

\documentclass[11pt,letterpaper]{book}
\usepackage{amsfonts,amsthm,amssymb}
\usepackage[tbtags]{amsmath}
\usepackage{color}
\usepackage[english]{babel}
\usepackage{lipsum}

\newcommand\pcolor{black}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead[LE,RO]{\slshape\thepage}
\fancyhead[RE]{\color{\pcolor}\slshape \leftmark}
\fancyhead[LO]{\color{\pcolor}\slshape \rightmark}

\renewcommand{\thepart}{\Alph{part}}
\renewcommand{\thechapter}{\Roman{chapter}}

\usepackage{sectsty}
\partfont{\color{\pcolor}}
\chapterfont{\color{\pcolor}}


\begin{document}
\renewcommand\pcolor{blue}
\part{Part 1}

\chapter{Chapter 1}
\lipsum
\chapter{Chapter 2}
\lipsum

\clearpage
\renewcommand\pcolor{red}
\part{Part 2}
\chapter{Chapter 3}
\lipsum
\chapter{Chapter 4}
\lipsum

\end{document}

以下是一些输出快照章节标题格式页眉格式

相关内容