[Tex/LaTex] Fancy “Side Chapter Thumb Headings”

chapterschapterthumb

I would like to get some help in order to get my "Side Chapter Thumb Headings" to show up like:

![enter image description here

The code below is building from the solution posted here:

\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{lipsum}
\usepackage{xcolor}
\definecolor{ultramarine}{RGB}{0,45,97}
\definecolor{mybluei}{RGB}{0,173,239}
\usetikzlibrary{calc}
\pagestyle{plain}

\newcounter{chapshift}
\addtocounter{chapshift}{-1}

\newcommand\BoxColor{ultramarine}


\usepackage{etoolbox,fancyhdr}
\pagestyle{fancy}

\def\subsectiontitle{}
\renewcommand{\sectionmark}[1]{\markright{\sffamily\normalsize#1}{}}
\renewcommand{\subsectionmark}[1]{\def\subsectiontitle{#1}}

\fancyhf{} \fancyhead[LE,RO]{\sffamily\normalsize\thepage}
\fancyhead[LO]{\textcolor{mybluei} \rightmark%
\begin{tikzpicture}[overlay,remember picture]
  \node[fill=\BoxColor,inner sep=0pt,rectangle,text width=1cm,
    text height=28cm,align=center,anchor=north east]
  at ($ (current page.north east) + (-0cm,-2*\thechapshift cm) $)
  {\rotatebox{90}{\parbox{4cm}{%
   \centering\textcolor{white}{\bfseries\scshape\rightmark \\ \subsectiontitle}}}};
  \end{tikzpicture}}
\fancyhead[RE]{\textcolor{mybluei}\leftmark%
  \begin{tikzpicture}[overlay,remember picture]
  \node[fill=\BoxColor,inner sep=0pt,rectangle,text width=1cm,
    text height=28cm,align=center,anchor=north west]
  at ($ (current page.north west) + (-0cm,-2*\thechapshift cm) $)
  {\rotatebox{90}{\parbox{4cm}{%
    \centering\textcolor{white}{\bfseries\scshape\rightmark \\ \subsectiontitle}}}};
  \end{tikzpicture}}
\renewcommand{\headrulewidth}{.5pt}
\addtolength{\headheight}{2.5pt}
\newcommand{\footrulecolor}[1]{\patchcmd{\footrule}{\hrule}{\color{#1}\hrule}{}{}}
\renewcommand{\headrulewidth}{.5pt}
\addtolength{\headheight}{2.5pt}
\renewcommand{\footrulewidth}{.5pt}
\fancyfoot[LE,RO]{\footnotesize\bfseries\itshape LF Foot}
\fancyfoot[C]{\footnotesize\bfseries CTR FOOT}
\fancyfoot[RE,LO]{\footnotesize\bfseries\itshape RT Foot}

\fancypagestyle{plain}{%
  \fancyhf{}
  \renewcommand{\headrulewidth}{0pt}
  \renewcommand{\footrulewidth}{0pt}
}

\makeatletter
\renewcommand{\cleardoublepage}{
\clearpage\ifodd\c@page\else
\hbox{}
\vspace*{\fill}
\thispagestyle{empty}
\newpage
\fi}
\patchcmd{\@makechapterhead}
  {\vskip 40\p@}
  {\vskip 40\p@\stepcounter{chapshift}}{}{}
\makeatother

\usepackage{fourier}
\usepackage[explicit]{titlesec}

\begin{document}
\chapter{Chap 1 Problems}
\section{Problem 1}
\subsection{Problem 1}
\lipsum[1]
\subsection{Solution 1}
\lipsum[1-7]
\newpage
\section{Problem 2}
\subsection{Problem 2}
\lipsum[1]
\subsection{Solution 2}
\lipsum[1-4]

\chapter{Chap 2 Problems}
\section{Problem 1}
\subsection{Problem 1}
\lipsum[1]
\newpage
\subsection{Solution 1}
\lipsum[1]
\newpage
\section{Problem 2}
\subsection{Problem 2}
\lipsum[1]
\subsection{Solution 2}
\lipsum[1]

\end{document}

Thanks.

Best Answer

Here is a suggestion using scrlayer-scrpage. This package uses layers to define page styles. It is possible to define new layers and to add these layers to existing or to new defined layer page styles.

In the following example I declare new layers for the background of the outer margin, the page number, the chapter number and the text in the outer margin. Then I use these layers to define the new pagestyle scth (without the normal header and footer) and they are also added to the default pagestyle scrheadings and to plain.

\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage{lipsum}
\usepackage{fourier}

\usepackage{xpatch}
\usepackage[automark]{scrlayer-scrpage}
\renewcommand\chaptermarkformat{}
% define a new mark for the chapter number
\newmarks\chapternum
\xapptocmd\chaptermark{\marks\chapternum{\thechapter}}{}{\PatchFailed}

\newlength\outermarginwidth
\setlength\outermarginwidth{2cm}
\newlength\chapternumbersize
\setlength\chapternumbersize{60pt}

\colorlet{outermarginbgcolor}{lightgray}
\colorlet{outermarginfgcolor}{darkgray}

\newcommand*\outermarginpagemark{%
  \ifodd\value{page}\else\hfill\fi%
  \tikz[overlay]
    \node[circle,fill=outermarginfgcolor,text=white,font=\bfseries,minimum size=6mm]
      {\thepage};%
}

\makeatletter
\newcommand\outermarginmark{
  \ifodd\value{page}\hfill\else\hspace*{\dimexpr\outermarginwidth*3/8\relax}\fi
  \rotatebox{90}{\parbox{\layerheight}{%
    \raggedleft
    \usekomafont{outermargin}{%
      \MakeMarkcase{\ifodd\value{page}\odd@outermargin\else\even@outermargin\fi}}%
  }}%
  \ifodd\value{page}\hspace*{\dimexpr\outermarginwidth*3/8\relax}\fi%
}
\newcommand*\even@outermargin{}
\newcommand*\odd@outermargin{}
\newcommand*\evenoutermargin[1]{\renewcommand\even@outermargin{#1}}
\newcommand*\oddoutermargin[1]{\renewcommand\odd@outermargin{#1}}
\makeatother
\newkomafont{outermargin}{%
  \normalfont\normalcolor
}

\makeatletter
\newcommand*\chapternumbermark{%
  \ifodd\value{page}\else\hfill\fi%
  \if@mainmatter
    {\usekomafont{chapternumber}{\makebox[0pt]{\botmarks\chapternum}}}%
  \fi
  \vfill
}
\makeatother

\newkomafont{chapternumber}{%
  \fontsize{\chapternumbersize}{\chapternumbersize}\selectfont
  \color{outermarginfgcolor}%
}

% declare new page style using layers
\DeclareNewPageStyleByLayers{scth}{%
  scth.outermargin.bg.even,%
  scth.outermargin.bg.odd,%
  scth.outermargin.pn.even,%
  scth.outermargin.pn.odd,%
  scth.outermargin.cn.even,%
  scth.outermargin.cn.odd,%
  scth.outermargin.text.even,%
  scth.outermargin.text.odd%
}

% define the layers for even pages
\DeclareNewLayer[
  background,
  evenpage,
  outermargin,
  width=\outermarginwidth,
  contents={\color{outermarginbgcolor}\rule{\layerwidth}{\layerheight}}
]{scth.outermargin.bg.even}
\DeclareNewLayer[
  foreground,
  evenpage,
  foot,
  hoffset=0pt,
  width=\outermarginwidth,
  contents=\outermarginpagemark
]{scth.outermargin.pn.even}
\DeclareNewLayer[
  foreground,
  evenpage,
  head,
  hoffset=0cm,
  width=\outermarginwidth,
  align=t,
  addvoffset=\dimexpr-\chapternumbersize+\headheight\relax,
  height=\chapternumbersize,
  contents=\chapternumbermark
]{scth.outermargin.cn.even}
\DeclareNewLayer[
  clone=scth.outermargin.cn.even,
  addheight=\dimexpr\headheight+\headsep+\textheight\relax,
  contents=\outermarginmark
]{scth.outermargin.text.even}

% define the layers for odd page from the settings for even pages
\newcommand*\DeclareOddFromEven[1]{%
  \DeclareNewLayer[
    clone=#1.even,
    oddpage,
    align=r,
    hoffset=\paperwidth
  ]{#1.odd}%
}
\DeclareOddFromEven{scth.outermargin.bg}
\DeclareOddFromEven{scth.outermargin.pn}
\DeclareOddFromEven{scth.outermargin.cn}
\DeclareOddFromEven{scth.outermargin.text}

% add the layers to page style scrheadings and page style plain
\ForEachLayerOfPageStyle*{scth}{%
  \AddLayersToPageStyle{scrheadings}{#1}%
  \AddLayersToPageStyle{plain.scrheadings}{#1}%
}

%----------------------------------------------
% header and footer contents settings
\KOMAoptions{headsepline,markcase=upper}
% for page styles scrheadings and plain
\clearpairofpagestyles
\ohead{\rightmark}
\cfoot{\pagemark}
\ofoot{Authors Name}
% set the contents of the outer margin on even and odd pages for scrheadings, plain and scth
\evenoutermargin{Title of the document}
\oddoutermargin{\leftmark}

\definecolor{lightblue}{RGB}{199,232,250}
\definecolor{darkblue}{RGB}{59,134,215}

\colorlet{outermarginbgcolor}{lightblue}
\colorlet{outermarginfgcolor}{darkblue}

\usepackage{blindtext}
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\blinddocument

\clearpage
% change some settings
\colorlet{outermarginbgcolor}{orange!30}
\colorlet{outermarginfgcolor}{orange}
\addtokomafont{outermargin}{\color{blue!50!green}}
\evenoutermargin{Changed text on even pages}
\blinddocument
\end{document}

Result:

enter image description here