DIN-A4 doublesided year calendar
1 % DIN-A4 doublesided year calendar 2 % Author: Robert Krause 3 % License : Creative Commons attribution license 4 % Submitted to TeXample.net on 13 July 2012 5 \documentclass[landscape,a4paper, ngerman, 10pt]{scrartcl} 6 \usepackage[utf8]{inputenc} 7 \usepackage[ngerman]{babel} 8 \usepackage[T1]{fontenc} 9 \usepackage{tikz} % Use the calendar.sty style 10 11 %\usepackage{translator} % German Month and Day names 12 \usepackage{fancyhdr} % header and footer 13 \usepackage{fix-cm} % Large year in header 14 15 \usepackage[landscape, headheight = 2cm, margin=.5cm, 16 top = 3.2cm, nofoot]{geometry} 17 \usetikzlibrary{calc} 18 \usetikzlibrary{calendar} 19 %%%< 20 \usepackage{verbatim} 21 \usepackage[tightpage]{preview} 22 \PreviewEnvironment{tikzpicture} 23 \setlength\PreviewBorder{5pt}% 24 %%%> 25 \begin{comment} 26 :Title: A calender for doublesided DIN-A4 27 Tags: Calendar library;Calendars 28 :Author: Robert Krause 29 30 An example how the calendar package can be used to provide 31 an doublesided calendar for the whole year. 32 \end{comment} 33 34 \renewcommand*\familydefault{\sfdefault} 35 36 % User defined 37 \def\year{2015} 38 % Names of Holidays are inserted by employing this macro 39 \def\termin#1#2{ 40 \node [anchor=north west, text width= 3.4cm] at 41 ($(cal-#1.north west)+(3em, 0em)$) {\tiny{#2}}; 42 } 43 44 %Header 45 \renewcommand{\headrulewidth}{0.0pt} 46 \setlength{\headheight}{10ex} 47 \chead{ 48 \fontsize{60}{70}\selectfont\textbf{\year} 49 \Large\textbf{Calendar}\hfill 50 } 51 %Footer 52 \cfoot{\footnotesize\texttt{http://www.cnblogs.com/wangshixi12/}} 53 54 55 56 \begin{document} 57 \pagestyle{fancy} 58 \begin{center} 59 \begin{tikzpicture}[every day/.style={anchor = north}] 60 \calendar[ 61 dates=\year-01-01 to \year-06-30, 62 name=cal, 63 day yshift = 3em, 64 day code= 65 { 66 \node[name=\pgfcalendarsuggestedname,every day,shape=rectangle, 67 minimum height= .53cm, text width = 4.4cm, draw = black]{\tikzdaytext}; 68 \draw (-1.8cm, -.1ex) node[anchor = west]{\footnotesize% 69 \pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday}}; 70 }, 71 execute before day scope= 72 { 73 \ifdate{day of month=1} 74 { 75 % Shift right 76 \pgftransformxshift{4.8cm} 77 % Print month name 78 \draw (0,0)node [shape=rectangle, minimum height= .53cm, 79 text width = 4.4cm, fill = white, text= black, draw = black, text centered] 80 {\textbf{\pgfcalendarmonthname{\pgfcalendarcurrentmonth}}}; 81 }{} 82 \ifdate{workday} 83 { 84 % normal days are white 85 \tikzset{every day/.style={fill=white}} 86 % Vacation (Germany, Baden-Wuerrtemberg) gray background 87 \ifdate{between=2012-12-24 and 2015-01-05}{% 88 \tikzset{every day/.style={fill=white}}}{} 89 \ifdate{between=2015-03-25 and 2015-04-05}{% 90 \tikzset{every day/.style={fill=white}}}{} 91 \ifdate{between=2015-05-21 and 2015-06-01}{% 92 \tikzset{every day/.style={fill=white}}}{} 93 \ifdate{between=2015-07-25 and 2015-09-07}{% 94 \tikzset{every day/.style={fill=white}}}{} 95 \ifdate{between=2015-10-28 and 2015-10-30}{% 96 \tikzset{every day/.style={fill=white}}}{} 97 \ifdate{between=2015-12-23 and 2014-01-04}{% 98 \tikzset{every day/.style={fill=white}}}{} 99 }{} 100 % Saturdays and half holidays (Christma's and New year's eve) 101 \ifdate{Saturday}{\tikzset{every day/.style={fill=white}}}{} 102 \ifdate{equals=12-24}{\tikzset{every day/.style={fill=white}}}{} 103 \ifdate{equals=12-31}{\tikzset{every day/.style={fill=white}}}{} 104 % Sundays and full holidays 105 \ifdate{Sunday}{\tikzset{every day/.style={fill=white}}}{} 106 \ifdate{equals=01-01}{\tikzset{every day/.style={fill=white}}}{} 107 \ifdate{equals=01-06}{\tikzset{every day/.style={fill=white}}}{} 108 \ifdate{equals=05-01}{\tikzset{every day/.style={fill=white}}}{} 109 \ifdate{equals=10-03}{\tikzset{every day/.style={fill=white}}}{} 110 \ifdate{equals=11-01}{\tikzset{every day/.style={fill=white}}}{} 111 \ifdate{equals=12-25}{\tikzset{every day/.style={fill=white}}}{} 112 \ifdate{equals=12-26}{\tikzset{every day/.style={fill=white}}}{} 113 % Christian holidays 114 \ifdate{equals=2015-03-29}{\tikzset{every day/.style={fill=white}}}{} 115 \ifdate{equals=2015-04-01}{\tikzset{every day/.style={fill=white}}}{} 116 \ifdate{equals=2015-05-09}{\tikzset{every day/.style={fill=white}}}{} 117 \ifdate{equals=2015-05-20}{\tikzset{every day/.style={fill=white}}}{} 118 \ifdate{equals=2015-05-30}{\tikzset{every day/.style={fill=white}}}{} 119 }, 120 execute at begin day scope= 121 { 122 % each day is shifted down according to the day of month 123 \pgftransformyshift{-.53*\pgfcalendarcurrentday cm} 124 } 125 ]; 126 \end{tikzpicture} 127 % Repeat the whole thing for the second page 128 \pagebreak 129 \begin{tikzpicture}[every day/.style={anchor = north}] 130 \calendar[dates=\year-07-01 to \year-12-31, 131 name=cal, 132 day yshift = 3em, 133 day code= 134 { 135 \node[name=\pgfcalendarsuggestedname,every day,shape=rectangle, 136 minimum height= .53cm, text width = 4.4cm, draw = black]{\tikzdaytext}; 137 \draw (-1.8cm, -.1ex) node[anchor = west] 138 { 139 \footnotesize\pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday} 140 }; 141 }, 142 execute before day scope= 143 { 144 \ifdate{day of month=1} { 145 % Shift right 146 \pgftransformxshift{4.8cm} 147 % Print month name 148 \draw (0,0)node [shape=rectangle, minimum height= .53cm, 149 text width = 4.4cm, fill = white, text= black, draw = black, text centered] 150 { 151 \textbf{\pgfcalendarmonthname{\pgfcalendarcurrentmonth}} 152 }; 153 }{} 154 \ifdate{workday} 155 { 156 \tikzset{every day/.style={fill=white}} 157 % Vacation (Germany Baden-Wuerrtemberg) 158 \ifdate{between=2012-12-24 and 2015-01-05}{% 159 \tikzset{every day/.style={fill=white}}}{} 160 \ifdate{between=2015-03-25 and 2015-04-05}{% 161 \tikzset{every day/.style={fill=white}}}{} 162 \ifdate{between=2015-05-21 and 2015-06-01}{% 163 \tikzset{every day/.style={fill=white}}}{} 164 \ifdate{between=2015-07-25 and 2015-09-07}{% 165 \tikzset{every day/.style={fill=white}}}{} 166 \ifdate{between=2015-10-28 and 2015-10-30}{% 167 \tikzset{every day/.style={fill=white}}}{} 168 \ifdate{between=2015-12-23 and 2014-01-04}{% 169 \tikzset{every day/.style={fill=white}}}{} 170 }{} 171 % Sundays and full holidays 172 \ifdate{Sunday}{\tikzset{every day/.style={fill=white}}}{} 173 \ifdate{equals=01-01}{\tikzset{every day/.style={fill=white}}}{} 174 \ifdate{equals=01-06}{\tikzset{every day/.style={fill=white}}}{} 175 \ifdate{equals=05-01}{\tikzset{every day/.style={fill=white}}}{} 176 \ifdate{equals=10-03}{\tikzset{every day/.style={fill=white}}}{} 177 \ifdate{equals=11-01}{\tikzset{every day/.style={fill=white}}}{} 178 \ifdate{equals=12-25}{\tikzset{every day/.style={fill=white}}}{} 179 \ifdate{equals=12-26}{\tikzset{every day/.style={fill=white}}}{} 180 }, 181 execute at begin day scope= 182 { 183 % Each day is shifted down according to the day of month 184 \pgftransformyshift{-.53*\pgfcalendarcurrentday cm} 185 } 186 ]; 187 188 \end{tikzpicture} 189 \end{center} 190 \end{document}