
Estou compondo um livro em estilo de anais que contém artigos em ordem cronológica. Como os artigos também são categorizados, cada categoria recebe uma cor e os estilos de capítulo devem usar essa cor como cor de fundo para algumas artes de capítulo sofisticadas. Esta parte funciona como esperado com titlesec
.
Além disso, gostaria também de alterar a cor dos títulos, que deve ser a mesma “cor do capítulo” do capítulo atual.
O problema que observo com a minha abordagem ingénua é que a cor dos títulos é alterada demasiado cedo, ou seja, a página antes do novo capítulo já é impressa com a nova cor.
Aqui está um 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}
Como você pode ver, na página 2 o título já está verde, embora esta página ainda pertença ao capítulo 1, que deveria estar azul.
O que também tentei foi usar duas variáveis diferentes ( headercolor
e chaptercolor
), onde usei \headercolor
nas *head
instruções e usei titlesec
's \titelformat
para atribuir chaptercolor
o headercolor
somente quando o próprio título do capítulo estiver definido. Infelizmente isso também não funcionou.
Atualizar:Estou procurando uma solução de preâmbulo. O MWE simplifica demais meu roteiro atual e como a cor também é usada no próprio título do capítulo, é importante que a cor do capítulo seja definida antes do início do capítulo. Eu gostaria de manter esse tipo de “interface” o mais estável possível para que os autores não precisem mexer com detalhes.
Qualquer conselho sobre como posso definir preguiçosamente a cor para que a mudança de cor nos títulos aconteça apenas na primeira página do novo capítulo é muito apreciado. Obrigado!
Responder1
Defina um novo comando que execute \cleardoublepage
e mude a cor:
\newcommand{\changechaptercolor}[1]{%
\cleardoublepage%
\renewcommand\chaptercolor{#1}%
}
Então você pode usar
\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}
Responder2
Conforme mencionado nos comentários, basta colocar a mudança de cor (feita via \chaptercolor
) após chamar o chapter
comando.
\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}
Mas eu preferiria ver texto preto normal em um fundo de cor suave. Para um documento unilateral você pode definir algo como isto
\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}
Resultando na seguinte saída:
Outra coisa que pode valer a pena dar uma olhada é esse resultado
Isso pode ser conseguido usando o código a seguir.
\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}
Você pode torná-lo ainda mais sofisticado alterando a cor do título do capítulo adicionando
\newcommand{\chaptertitlecolor}{\basecolor!70!white}
\addtokomafont{chapter}{\color{\chaptertitlecolor}}
Tanto a barra colorida na parte superior quanto o título compartilham a mesma cor base. Mas decidi optar por uma variante mais escura para melhor legibilidade. A saída é semelhante a esta:
Pode-se ir além e imprimir o cabeçalho em um tom mais escuro da cor base, que poderia ser algo assim
Por favor lembre-se
As cores podem distrair muito e atrapalhar a legibilidade. Imprimir páginas coloridas também é bastante caro.