如何设置彩色标题,每章一种颜色

如何设置彩色标题,每章一种颜色

我正在排版一本包含按时间顺序排列的文章的会议录风格的书。由于文章也按类别分类,因此每个类别都分配了一种颜色,章节样式应该使用该颜色作为一些精美章节艺术的背景颜色。此部分与 配合使用效果良好titlesec

除此之外,我还想改变标题的颜色,它应该与当前章节的“章节颜色”相同。

我观察到的问题是,我的幼稚方法的问题是标题颜色改变得太早,即新章节之前的页面已经用新颜色打印了。

以下是 MWE:

\documentclass[fontsize=12pt, paper=a4]{scrbook} 
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage[automark]{scrpage2} 
\usepackage{xcolor}

\newcommand{\chaptercolor}{red}

\clearscrheadfoot 
\pagestyle{scrheadings}
\ihead[\color{\chaptercolor}\leftmark]{\color{\chaptercolor}\leftmark} 
\ohead[\color{\chaptercolor}\rightmark]{\color{\chaptercolor}\rightmark}
\cfoot[\color{\chaptercolor}\pagemark]{\color{\chaptercolor}\pagemark}

\begin{document} 

\renewcommand{\chaptercolor}{blue}
\chapter{Ch1}
\Blindtext

\renewcommand{\chaptercolor}{green}
\chapter{Ch2}
\Blindtext

\end{document}

如您所见,第 2 页的标题已经是绿色,尽管该页面仍然属于第 1 章,而第 1 章应该是蓝色的。

我还尝试使用两个不同的变量(headercolorchaptercolor),其中我\headercolor*head语句中使用,并使用titlesec\titelformat分配chaptercolorheadercolor仅当章节标题本身已设置时才使用的变量。不幸的是,这也不起作用。

更新:我正在寻找一个序言解决方案。MWE 过度简化了我当前的脚本,而且由于颜色也用于章节标题本身,因此在章节开始之前定义章节颜色非常重要。我希望让这种“界面”尽可能稳定,这样作者就不需要处理细节了。

任何关于如何延迟设置颜色以便标题的颜色变化只发生在新章节的第一页的建议都非常感谢。谢谢!

答案1

\cleardoublepage定义一个执行并改变颜色的新命令:

\newcommand{\changechaptercolor}[1]{%
  \cleardoublepage%
  \renewcommand\chaptercolor{#1}%
}

然后你可以使用

\documentclass[fontsize=12pt]{scrbook} 
\usepackage[ngerman]{babel}
\usepackage{blindtext}

\usepackage{xcolor}
\newcommand\chaptercolor{red}
\newcommand{\changechaptercolor}[1]{%
  \cleardoublepage%
  \renewcommand\chaptercolor{#1}%
}

\usepackage[automark]{scrpage2}% or scrlayer-scrpage
\clearscrheadfoot 
\pagestyle{scrheadings}
\addtokomafont{pageheadfoot}{\color{\chaptercolor}}
\addtokomafont{pagenumber}{\color{\chaptercolor}}
\ihead[\leftmark]{\leftmark} 
\ohead[\rightmark]{\rightmark}
\cfoot[\pagemark]{\pagemark}

\begin{document} 
\changechaptercolor{blue}
\chapter{Ch1}
\Blindtext

\changechaptercolor{green}
\chapter{Ch2}
\Blindtext
\end{document}

在此处输入图片描述

答案2

正如评论中提到的那样,\chaptercolor调用命令后放置颜色改变(通过完成)就足够了chapter

\documentclass{scrbook} 
\usepackage{blindtext}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{xcolor}

\clearscrheadfoot 
\ihead[\leftmark]{\leftmark} 
\ohead[\rightmark]{\rightmark}
\cfoot[\pagemark]{\pagemark}
%Now adding color to all elements in the pagehead
%This is much easier to maintain
\addtokomafont{pagehead}{\color{\chaptercolor}}

\begin{document} 

\chapter{Mark Twain}
\newcommand{\chaptercolor}{blue}
\Blindtext

\chapter{Ambrose Bierce}
\renewcommand{\chaptercolor}{green}
\Blindtext

\end{document}

但我更喜欢在浅色背景上看到正常的黑色文本。对于单面文档,您可以定义如下内容

\DeclareLayer[clone=plain.scrheadings.head.oneside,
    contents={%
        \color{\chaptercolor}%
        \rule[-\dp\strutbox]%
        {\paperwidth}{\headheight}%
    }%
]{plain.scrheadings.head.oneside.background}
\DeclareLayer[clone=scrheadings.head.oneside,
    contents={%
        \color{\chaptercolor}%
        \rule[-\dp\strutbox]%
        {\paperwidth}{\headheight}%
    }%
]{scrheadings.head.oneside.background}

产生以下输出:

在此处输入图片描述

另一件值得一看的事情是给出这个输出

在此处输入图片描述

可以使用以下代码来实现。

\documentclass{scrbook} 
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{xcolor}


\clearscrheadfoot 
\ihead[\leftmark]{\leftmark} 
\ohead[\rightmark]{\rightmark}
\cfoot[\pagemark]{\pagemark}


%Defining the Layer
\makeatletter
\newlength{\topheight}
\setlength{\topheight}{\sls@topmargin}
\addtolength{\topheight}{\headheight}
\DeclareLayer[
    background,
    contents={%
        \color{\chaptercolor}%
        \rule{\paperwidth}{\topheight}%
    }%
]{scrheadings.head.background}
\makeatother

%Adding the Layer to the pagestyles
\AddLayersAtBeginOfPageStyle{scrheadings}{%
    scrheadings.head.background,%
}
\AddLayersAtBeginOfPageStyle{plain.scrheadings}{%
scrheadings.head.background}

\usepackage{etoolbox}
\newcommand{\basecolor}{%
    \ifcase\arabic{chapter}\or blue\or orange\or green\or red\fi%
}
\newcommand{\chaptercolor}{\basecolor!20!white}
\begin{document} 

\chapter{Mark Twain}
\Blindtext
\Blindtext
\chapter{Walt Whitman}
\Blindtext
\Blindtext
\Blindtext
\chapter{F. Scott Fitzgerald}
\Blindtext
\Blindtext
\chapter{Ambrose Bierce}
\Blindtext
\Blindtext
\end{document}

您可以通过添加以下代码更改章节标题的颜色,使其更加美观

\newcommand{\chaptertitlecolor}{\basecolor!70!white}
\addtokomafont{chapter}{\color{\chaptertitlecolor}}

顶部的彩色条和标题都共享相同的基色。但我决定采用更深的变体以提高可读性。输出如下所示:

在此处输入图片描述

甚至可以更进一步,用比基色更深的颜色打印标题,看起来像这样

在此处输入图片描述

请记住

颜色会分散注意力,影响可读性。打印彩色页面也相当昂贵。

相关内容