I'm trying to do calculation to be used in tikz. Here is my current code:
\def\monthtabpos#1%
{\ifthenelse{#1<7}
{\dimexpr \numexpr -3*#1 \relax cm}
{\dimexpr \numexpr -3*(#1-6) \relax cm}
}
\newcommand{\monthtab}[2]{
\shorthandoff{;}
\begin{tikzpicture}[remember picture,overlay]
\node[yshift=\monthtabpos{#2},xshift=-0.5cm] at (current page.north east) {
\tikz\shade[shading=axis,bottom color=white,top color=gray!50,shading angle=-90]
(0,0) rectangle (1cm,3cm) node[rotate=90,pos=0.5] {\Large\scshape #1};
};
\end{tikzpicture}
}
The idea is that \monthtabpos calculates the vertical position of the picture. This code is then called from \titleformat to position a tab for sections:
% Tune section headings
\renewcommand\thesection{\arabic{section}}
\titleformat{name=\section,page=even}[display]
{\newpage\secstyle} % format
{\large\makedate{\thesection}~\chaphead} % label
{10pt} %sep
{\vspace{-5mm}\filcenter\textls[-35]} %before
\titleformat{name=\section,page=odd}[display]
{\newpage\secstyle} % format
{\large\makedate{\thesection}~\chaphead} % label
{10pt} %sep
{\vspace{-5mm}\filcenter\textls[-35]} %before
[\monthtab{\chaphead}{\arabic{chapter}}] % after
\titlespacing{\section}{0pt}{*}{*-2}
When I build this code, I get:
LaTeX Warning: Unsynchronized `section' title on page 7.
! Argument of \XC@definec@lor has an extra }.
<inserted text>
\par
l.2 \dvday{Créé à son image}
Note that if I replace yshift=\monthtabpos{#2} with yshift=-3*{#2}cm, it works fine (except I don't get the effect I want when #2 > 6), and that I have checked that \monthtabpos returns the expected string.
I have also tried defining a local macro in tikz with:
\newcommand{\monthtab}[2]{
\shorthandoff{;}
\begin{tikzpicture}[remember picture,overlay]
\node let \tabpos = (\monthtabpos{#2}) in
[yshift=\tabpos,xshift=-0.5cm] at (current page.north east) {
\tikz\shade[shading=axis,bottom color=white,top color=gray!50,shading angle=-90]
(0,0) rectangle (1cm,3cm) node[rotate=90,pos=0.5] {\Large\scshape #1};
};
\end{tikzpicture}
}
and it doesn't help.
Note that this does work (but is really ugly I think):
\newcommand{\monthtab}[2]{
\shorthandoff{;}
\ifthenelse{#2<7}{
\begin{tikzpicture}[remember picture,overlay]
\node[yshift=-3*{#2}cm,xshift=-0.5cm] at (current page.north east) {
\tikz\shade[shading=axis,bottom color=white,top color=gray!50,shading angle=-90]
(0,0) rectangle (1cm,3cm) node[rotate=90,pos=0.5] {\Large\scshape #1};
};
\end{tikzpicture}
}
{
\begin{tikzpicture}[remember picture,overlay]
\node[yshift=18cm-3*{#2}cm,xshift=-0.5cm] at (current page.north east) {
\tikz\shade[shading=axis,bottom color=white,top color=gray!50,shading angle=-90]
(0,0) rectangle (1cm,3cm) node[rotate=90,pos=0.5] {\Large\scshape #1};
};
\end{tikzpicture}
}
}