如何使用每章一種顏色的彩色標題

如何使用每章一種顏色的彩色標題

我正在排版一本會議記錄式的書,其中包含按時間順序排列的文章。由於文章也被分類,每個類別都被分配了一種顏色,章節樣式應該使用該顏色作為一些精美章節藝術的背景顏色。這部分按預期工作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's僅在設定章節標題本身時才\titelformat將 分配chaptercolor給the 。headercolor不幸的是這也不起作用。

更新:我正在尋找序言解決方案。 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}}

頂部的彩色條和標題共享相同的基色。但我決定選擇較暗的版本以獲得更好的可讀性。輸出如下圖所示:

在此輸入影像描述

人們甚至可以更進一步,用基色的較深陰影列印標題,它可能看起來像這樣

在此輸入影像描述

請記住

顏色可能會非常分散注意力並影響可讀性。列印彩色頁面也相當昂貴。

相關內容