Cómo tener títulos coloreados con un color por capítulo

Cómo tener títulos coloreados con un color por capítulo

Estoy escribiendo un libro estilo actas que contiene artículos en orden cronológico. Dado que los artículos también están categorizados, a cada categoría se le asigna un color y se supone que los estilos de capítulo usan ese color como color de fondo para algunos diseños de capítulos elegantes. Esta parte funciona como se esperaba con titlesec.

Además de eso, también me gustaría cambiar el color de los títulos, que deberían ser el mismo "color de capítulo" para el capítulo actual.

El problema que observo con mi enfoque ingenuo es que el color de los títulos se cambia demasiado pronto, es decir, la página anterior al nuevo capítulo ya está impresa con el nuevo color.

Aquí hay un 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 puedes ver, en la página 2 el título ya está en verde aunque esta página todavía pertenece al capítulo 1, que se supone que es azul.

Lo que también intenté fue usar dos variables diferentes ( headercolory chaptercolor), donde las usé \headercoloren las *headdeclaraciones y usé titlesec's \titelformatpara asignarlas chaptercolorsolo headercolorcuando el título del capítulo en sí está configurado. Lamentablemente esto tampoco funcionó.

Actualizar:Estoy buscando una solución de preámbulo. El MWE simplifica demasiado mi guión actual y dado que el color también se usa en el título del capítulo, es importante que el color del capítulo se defina antes de que comience. Me gustaría mantener este tipo de "interfaz" lo más estable posible para que los autores no tengan que complicarse con los detalles.

Se agradece mucho cualquier consejo sobre cómo puedo configurar el color de manera perezosa para que el cambio de color en los títulos ocurra solo en la primera página del nuevo capítulo. ¡Gracias!

Respuesta1

Defina un nuevo comando que se ejecute \cleardoublepagey cambie el color:

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

Entonces puedes 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}

ingrese la descripción de la imagen aquí

Respuesta2

Como se menciona en los comentarios, es suficiente realizar el cambio de color (realizado a través de \chaptercolor) después de llamar al 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}

Pero preferiría ver texto negro normal sobre un fondo de color suave. Para un documento de una cara, puede definir algo como esto

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

Dando como resultado el siguiente resultado:

ingrese la descripción de la imagen aquí

Otra cosa que podría valer la pena ver es este resultado.

ingrese la descripción de la imagen aquí

Esto se puede lograr usando el siguiente código.

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

Puedes hacerlo aún más elegante cambiando el color del título del capítulo agregando

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

Tanto la barra de color en la parte superior como el título comparten el mismo color base. Pero decidí optar por una variante más oscura para mejorar la legibilidad. La salida se ve así:

ingrese la descripción de la imagen aquí

Incluso se podría ir más allá e imprimir el encabezado en un tono más oscuro del color base, que podría verse así

ingrese la descripción de la imagen aquí

Atención - Recuerde

Los colores pueden distraer mucho y alterar la legibilidad. Imprimir páginas en color también es bastante caro.

información relacionada