\documentclass[tikz,border=5]{standalone} \renewcommand\familydefault\sfdefault \usetikzlibrary{positioning,calendar} \colorlet{darkgreen}{green!50!black} \colorlet{holiday}{green!50} \colorlet{sunday}{black!50} \newcommand{\calrow}[1]{\node[anchor=base east](Mon){L}; \node[base right=of Mon](Tue){M}; \node[base right=of Tue](Wed){M}; \node[base right=of Wed](Thu){J}; \node[base right=of Thu](Fri){V}; \node[base right=of Fri](Sat){S}; \node[base right=of Sat](Sun){D}; \node[darkgreen, above=of Thu]{\textbf{#1}};} \newcommand{\calperiod}[2][\currentyear]{% \calendar[dates=\currentyear-#2-01 to \currentyear-#2-last] if (Sunday) [sunday] \holidays;% } \newcommand{\calperiodN}[2][\nextyear]{% \calendar[dates=\nextyear-#2-01 to \nextyear-#2-last] if (Sunday) [sunday] \holidays;% } \edef\currentyear{\the\year} \newcommand\holidaystyle{[holiday] \draw[rounded corners=0,color=black!20, fill=black!20] (0, 0.35) rectangle (-0.55, -0.15);} \newcommand{\holidays}{% holidays in Italy if (between=10-22 and 11-06) \holidaystyle% if (between=12-17 and 12-31) \holidaystyle% if (between=01-01 and 01-02) \holidaystyle% if (between=02-04 and 02-19) \holidaystyle% if (between=04-08 and 04-23) \holidaystyle% if (between=05-18 and 05-21) \holidaystyle% if (between=07-08 and 08-31) \holidaystyle% if (equals=11-01) \holidaystyle if (equals=11-11) \holidaystyle if (equals=04-10) \holidaystyle if (equals=05-01) \holidaystyle if (equals=05-08) \holidaystyle if (equals=05-29) \holidaystyle } \begin{document} \begin{tikzpicture}[every calendar/.style={ week list, }, year label/.style={ fill=white,text=darkgreen,font=\bfseries\Large }, current year/.store in=\currentyear, current year=2022, next year/.store in=\nextyear, next year=2023, ] \matrix[% row 1/.style={darkgreen,node distance=.3ex},% row 3/.style={darkgreen,node distance=.3ex}, row 5/.style={darkgreen,node distance=.3ex}, row 7/.style={darkgreen,node distance=.3ex}, column sep=1ex,% draw=darkgreen,thick,rounded corners=5pt,% append after command={ \pgfextra{\edef\matrixname{\tikzlastnode}} node [year label/.try, right=1ex of \matrixname.south west] {\nextyear} node [year label/.try, right=1ex of \matrixname.north west] {\currentyear} } ]{% % third row: week day and month \calrow{Septembre} & \calrow{Octobre} & \calrow{Novembre} \\ \calperiod{09} & \calperiod{10} & \calperiod{11} \\[1ex] % forth row: calendar \calrow{Décembre} & \calrow{Janvier} & \calrow{Février} \\ \calperiod{12} & \calperiodN{01} & \calperiodN{02} \\[1ex]\\ }; \end{tikzpicture} \begin{tikzpicture}[every calendar/.style={ week list, }, year label/.style={ fill=white,text=darkgreen,font=\bfseries\Large }, current year/.store in=\currentyear, current year=2023, ] \matrix[% row 1/.style={darkgreen,node distance=.3ex},% row 3/.style={darkgreen,node distance=.3ex}, row 5/.style={darkgreen,node distance=.3ex}, row 7/.style={darkgreen,node distance=.3ex}, column sep=1ex,% draw=darkgreen,thick,rounded corners=5pt,% append after command={ \pgfextra{\edef\matrixname{\tikzlastnode}} node [year label/.try, right=1ex of \matrixname.south west] {\currentyear} node [year label/.try, right=1ex of \matrixname.north west] {\currentyear} } ]{% % third row: week day and month \calrow{Mars} & \calrow{Avril} & \calrow{Mai} \\ \calperiod{03} & \calperiod{04} & \calperiod{05} \\[1ex] % forth row: calendar \calrow{Juin} & \calrow{Juillet} & \calrow{Aout} \\ \calperiod{06} & \calperiod{07} & \calperiod{08} \\[1ex]\\ }; \end{tikzpicture} \end{document}