1

Tom Bombadil helped med with a template. But I get a lot of errors out. What do I do wrong?

% DIN-A4 doublesided year calendar
% Author: Robert Krause
% License : Creative Commons attribution license
% Submitted to TeXample.net on 13 July 2012
\documentclass[landscape,a4paper, ngerman, 10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{tikz}           % Use the calendar.sty style

\usepackage{translator} % German Month and Day names
\usepackage{fancyhdr}       % header and footer
\usepackage{fix-cm}     % Large year in header

\usepackage[landscape, headheight = 2cm, margin=.5cm,
  top = 3.2cm, nofoot]{geometry}
\usetikzlibrary{calc}
\usetikzlibrary{calendar}
\renewcommand*\familydefault{\sfdefault}

% User defined
\def\year{2015}
% Names of Holidays are inserted by employing this macro
\def\termin#1#2{
  \node [anchor=north west, text width= 3.4cm] at
    ($(cal-#1.north west)+(3em, 0em)$) {\tiny{#2}};
}

%Header
\renewcommand{\headrulewidth}{0.0pt}
\setlength{\headheight}{10ex}
\chead{
  \fontsize{60}{70}\selectfont\textbf{\year}
  \Large\textbf{Cleaning Plan}\hfill
}
%Footer
%\cfoot{\footnotesize\texttt{http://www.texample.net/}}
\pagenumbering{gobble}


% === Macro that returns a name if given a number from 0 to 29, "Error!" otherwise
\newcommand{\Person}[1]{%
\ifcase#1
Bryant Romans \or
Latricia Stoneman \or
Wilmer Lytton \or 
Tommie Lenahan \or 
Antonio Hoggard \or 
Edward Lanctot \or 
Chassidy Hyndman \or 
Marianela Wojciechowski \or 
Edna Kreitzer \or 
Harrison Cruze \or 
Marna Meloy \or 
Georgene Joly \or 
Ken Denley \or 
William Loeffler \or 
Young Spinelli \or 
Glendora Bruss \or 
Kraig Calloway \or 
Chantal Callejas \or 
Eleni Graziani \or 
Ilene Crumpler \or 
Ali Valliere \or 
Sonya Barlett \or 
Frederick Delacruz \or 
Kayce Foti \or 
Orval Kirchner \or 
Corrinne Cahoon \or 
Modesto Mulloy \or 
Alessandra Rodenberger \or 
Bernita Redman \or 
Iola Eudy \else
Error! \fi
}



\begin{document}
\pagestyle{fancy}
\begin{center}

\xdef\cleanerID{0}

 day code=
  { %=== Define macro that holds cleaners name on cleaning days, empty otherwise
    \ifdate{Monday,Wednesday,Saturday}%
    {   \xdef\InsertName{\Person{\cleanerID}}
        \pgfmathtruncatemacro{\newCleanerID}{mod(\cleanerID+1,30)}
            \xdef\cleanerID{\newCleanerID}
    }
    {   \xdef\InsertName{}
    }   
    \node[name=\pgfcalendarsuggestedname,every day,shape=rectangle,
    minimum height= .53cm, text width = 4.4cm, draw = gray]{\tikzdaytext};
    %=== Insert the  cleaners name here
    \draw (-1.8cm, -.1ex) node[anchor = west]{\footnotesize%
      \pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday} \InsertName
      };
  },

\begin{tikzpicture}[every day/.style={anchor = north}]
\calendar[
  dates=\year-01-01 to \year-06-30,
  name=cal,
  day yshift = 3em,
  day code=
  {
    \node[name=\pgfcalendarsuggestedname,every day,shape=rectangle,
    minimum height= .53cm, text width = 4.4cm, draw = gray]{\tikzdaytext};
    \draw (-1.8cm, -.1ex) node[anchor = west]{\footnotesize%
      \pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday}};
  },
  execute before day scope=
  {
    \ifdate{day of month=1}
    {
      % Shift right
      \pgftransformxshift{4.8cm}
      % Print month name 
      \draw (0,0)node [shape=rectangle, minimum height= .53cm,
        text width = 4.4cm, fill = black, text= white, draw = black, text centered]
        {\textbf{\pgfcalendarmonthname{\pgfcalendarcurrentmonth}}};
    }{}
    \ifdate{workday}
    {
      % normal days are white
      \tikzset{every day/.style={fill=white}}
    }{}
    % Saturdays and half holidays (Christma's and New year's eve)
    \ifdate{Saturday}{\tikzset{every day/.style={fill=red!10}}}{}
    % Sundays and full holidays
    \ifdate{Sunday}{\tikzset{every day/.style={fill=red!20}}}{}
  },
 execute at begin day scope=
  {
    % each day is shifted down according to the day of month
    \pgftransformyshift{-.53*\pgfcalendarcurrentday cm}
  }
];
\end{tikzpicture}
% Repeat the whole thing for the second page
\pagebreak
\begin{tikzpicture}[every day/.style={anchor = north}]
\calendar[dates=\year-07-01 to \year-12-31,
  name=cal,
  day yshift = 3em,
  day code=
  {
    \node[name=\pgfcalendarsuggestedname,every day,shape=rectangle, 
      minimum height= .53cm, text width = 4.4cm, draw = gray]{\tikzdaytext};
    \draw (-1.8cm, -.1ex) node[anchor = west]
    {
      \footnotesize\pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday}
    };
  },
  execute before day scope=
  {
    \ifdate{day of month=1} {
    % Shift right
    \pgftransformxshift{4.8cm}
    % Print month name 
    \draw (0,0)node [shape=rectangle, minimum height= .53cm, 
      text width = 4.4cm, fill = black, text= white, draw = black, text centered]
    {
      \textbf{\pgfcalendarmonthname{\pgfcalendarcurrentmonth}}
    };
  }{}
  \ifdate{workday}
  {
    \tikzset{every day/.style={fill=white}}
  }{}
  % Saturdays and half holidays (Christma's and New year's eve)
  \ifdate{Saturday}{\tikzset{every day/.style={fill=red!10}}}{}
  % Sundays and full holidays
  \ifdate{Sunday}{\tikzset{every day/.style={fill=red!20}}}{}
  },
  execute at begin day scope=
  {
   % Each day is shifted down according to the day of month
    \pgftransformyshift{-.53*\pgfcalendarcurrentday cm}
  }
];
\end{tikzpicture}
\end{center}
\end{document}

Here the Error Code:

! Undefined control sequence.
l.87 \ifdate
{Monday,Wednesday,Saturday}%
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
! Undefined control sequence.
l.94 \node
[name=\pgfcalendarsuggestedname,every day,shape=rectangle,
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
! Undefined control sequence.
\pgfcalendarsuggestedname ...e \pgfcalendarprefix
-\pgfcalendarcurrentyear -...
l.94 \node[name=\pgfcalendarsuggestedname
,every day,shape=rectangle,
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
! Undefined control sequence.
\pgfcalendarsuggestedname ...fcalendarcurrentyear
-\pgfcalendarcurrentmonth ...
l.94 \node[name=\pgfcalendarsuggestedname
,every day,shape=rectangle,
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
! Undefined control sequence.
\pgfcalendarsuggestedname ...calendarcurrentmonth
-\pgfcalendarcurrentday \fi
l.94 \node[name=\pgfcalendarsuggestedname
,every day,shape=rectangle,
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
! Undefined control sequence.
\pgfcalendarsuggestedname ...gfcalendarcurrentday
\fi
l.94 \node[name=\pgfcalendarsuggestedname
,every day,shape=rectangle,
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
! Undefined control sequence.
l.97 \draw
(-1.8cm, -.1ex) node[anchor = west]{\footnotesize%
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
! Undefined control sequence.
<argument> ...@\ifcase \pgfcalendarcurrentweekday
Mon\or Tue\or Wed\or Thu\o...
l.98 ...ekdayshortname{\pgfcalendarcurrentweekday}
\InsertName
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
! Missing number, treated as zero.
<to be read again>
M
l.98 ...ekdayshortname{\pgfcalendarcurrentweekday}
\InsertName
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)
! Undefined control sequence.
<argument> ...@\ifcase \pgfcalendarcurrentweekday
Mon\or Tue\or Wed\or Thu\o...
l.98 ...ekdayshortname{\pgfcalendarcurrentweekday}
\InsertName
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
! Missing number, treated as zero.
<to be read again>
M
l.98 ...ekdayshortname{\pgfcalendarcurrentweekday}
\InsertName
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)
! Undefined control sequence.
<argument> ...@\ifcase \pgfcalendarcurrentweekday
Mon\or Tue\or Wed\or Thu\o...
l.98 ...ekdayshortname{\pgfcalendarcurrentweekday}
\InsertName
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
! Missing number, treated as zero.
<to be read again>
M
l.98 ...ekdayshortname{\pgfcalendarcurrentweekday}
\InsertName
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)
! Undefined control sequence.
<argument> ...@\ifcase \pgfcalendarcurrentweekday
Mon\or Tue\or Wed\or Thu\o...
l.98 ...ekdayshortname{\pgfcalendarcurrentweekday}
\InsertName
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
! Missing number, treated as zero.
<to be read again>
M
l.98 ...ekdayshortname{\pgfcalendarcurrentweekday}
\InsertName
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)
Class scrartcl Warning: Usage of deprecated font command `\sl'!
(scrartcl) You should note, that in 1994 font command `\sl' has
(scrartcl) been defined for compatiblitiy to Script 2.0 only.
(scrartcl) Now, after two decades of LaTeX2e and NFSS2, you
(scrartcl) shouldn't use such commands any longer and within
(scrartcl) KOMA-Script usage of `\sl' is definitely deprecated.
(scrartcl) See `fntguide.pdf' for more information about
(scrartcl) recommended font commands.
(scrartcl) Note also, that KOMA-Script will remove the definition
(scrartcl) of `\sl' anytime until release of about version 3.20.
(scrartcl) But for now, KOMA-Script will replace deprecated `\sl'
(scrartcl) by `\normalfont \slshape ' on input line 185.
Class scrartcl Warning: Usage of deprecated font command `\sl'!
(scrartcl) You should note, that in 1994 font command `\sl' has
(scrartcl) been defined for compatiblitiy to Script 2.0 only.
(scrartcl) Now, after two decades of LaTeX2e and NFSS2, you
(scrartcl) shouldn't use such commands any longer and within
(scrartcl) KOMA-Script usage of `\sl' is definitely deprecated.
(scrartcl) See `fntguide.pdf' for more information about
(scrartcl) recommended font commands.
(scrartcl) Note also, that KOMA-Script will remove the definition
(scrartcl) of `\sl' anytime until release of about version 3.20.
(scrartcl) But for now, KOMA-Script will replace deprecated `\sl'
(scrartcl) by `\normalfont \slshape ' on input line 185.
Package Fancyhdr Warning: \headheight is too small (43.04504pt):
Make it at least 47.05655pt.
We now make it that large for the rest of the document.
This may cause the page layout to be inconsistent, however.
Class scrartcl Warning: Usage of deprecated font command `\rm'!
(scrartcl) You should note, that in 1994 font command `\rm' has
(scrartcl) been defined for compatiblitiy to Script 2.0 only.
(scrartcl) Now, after two decades of LaTeX2e and NFSS2, you
(scrartcl) shouldn't use such commands any longer and within
(scrartcl) KOMA-Script usage of `\rm' is definitely deprecated.
(scrartcl) See `fntguide.pdf' for more information about
(scrartcl) recommended font commands.
(scrartcl) Note also, that KOMA-Script will remove the definition
(scrartcl) of `\rm' anytime until release of about version 3.20.
(scrartcl) But for now, KOMA-Script will replace deprecated `\rm'
(scrartcl) by `\normalfont \rmfamily ' on input line 185.
Package Fancyhdr Warning: \footskip is too small (0.0pt):
Make it at least 8.39996pt.
We now make it that large for the rest of the document.
This may cause the page layout to be inconsistent, however.
[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}
]
Class scrartcl Warning: Usage of deprecated font command `\sl'!
(scrartcl) You should note, that in 1994 font command `\sl' has
(scrartcl) been defined for compatiblitiy to Script 2.0 only.
(scrartcl) Now, after two decades of LaTeX2e and NFSS2, you
(scrartcl) shouldn't use such commands any longer and within
(scrartcl) KOMA-Script usage of `\sl' is definitely deprecated.
(scrartcl) See `fntguide.pdf' for more information about
(scrartcl) recommended font commands.
(scrartcl) Note also, that KOMA-Script will remove the definition
(scrartcl) of `\sl' anytime until release of about version 3.20.
(scrartcl) But for now, KOMA-Script will replace deprecated `\sl'
(scrartcl) by `\normalfont \slshape ' on input line 185.
Class scrartcl Warning: Usage of deprecated font command `\sl'!
(scrartcl) You should note, that in 1994 font command `\sl' has
(scrartcl) been defined for compatiblitiy to Script 2.0 only.
(scrartcl) Now, after two decades of LaTeX2e and NFSS2, you
(scrartcl) shouldn't use such commands any longer and within
(scrartcl) KOMA-Script usage of `\sl' is definitely deprecated.
(scrartcl) See `fntguide.pdf' for more information about
(scrartcl) recommended font commands.
(scrartcl) Note also, that KOMA-Script will remove the definition
(scrartcl) of `\sl' anytime until release of about version 3.20.
(scrartcl) But for now, KOMA-Script will replace deprecated `\sl'
(scrartcl) by `\normalfont \slshape ' on input line 185.
Class scrartcl Warning: Usage of deprecated font command `\rm'!
(scrartcl) You should note, that in 1994 font command `\rm' has
(scrartcl) been defined for compatiblitiy to Script 2.0 only.
(scrartcl) Now, after two decades of LaTeX2e and NFSS2, you
(scrartcl) shouldn't use such commands any longer and within
(scrartcl) KOMA-Script usage of `\rm' is definitely deprecated.
(scrartcl) See `fntguide.pdf' for more information about
(scrartcl) recommended font commands.
(scrartcl) Note also, that KOMA-Script will remove the definition
(scrartcl) of `\rm' anytime until release of about version 3.20.
(scrartcl) But for now, KOMA-Script will replace deprecated `\rm'
(scrartcl) by `\normalfont \rmfamily ' on input line 185.
[2]
Class scrartcl Warning: Usage of deprecated font command `\sl'!
(scrartcl) You should note, that in 1994 font command `\sl' has
(scrartcl) been defined for compatiblitiy to Script 2.0 only.
(scrartcl) Now, after two decades of LaTeX2e and NFSS2, you
(scrartcl) shouldn't use such commands any longer and within
(scrartcl) KOMA-Script usage of `\sl' is definitely deprecated.
(scrartcl) See `fntguide.pdf' for more information about
(scrartcl) recommended font commands.
(scrartcl) Note also, that KOMA-Script will remove the definition
(scrartcl) of `\sl' anytime until release of about version 3.20.
(scrartcl) But for now, KOMA-Script will replace deprecated `\sl'
(scrartcl) by `\normalfont \slshape ' on input line 185.
Class scrartcl Warning: Usage of deprecated font command `\sl'!
(scrartcl) You should note, that in 1994 font command `\sl' has
(scrartcl) been defined for compatiblitiy to Script 2.0 only.
(scrartcl) Now, after two decades of LaTeX2e and NFSS2, you
(scrartcl) shouldn't use such commands any longer and within
(scrartcl) KOMA-Script usage of `\sl' is definitely deprecated.
(scrartcl) See `fntguide.pdf' for more information about
(scrartcl) recommended font commands.
(scrartcl) Note also, that KOMA-Script will remove the definition
(scrartcl) of `\sl' anytime until release of about version 3.20.
(scrartcl) But for now, KOMA-Script will replace deprecated `\sl'
(scrartcl) by `\normalfont \slshape ' on input line 185.
Class scrartcl Warning: Usage of deprecated font command `\rm'!
(scrartcl) You should note, that in 1994 font command `\rm' has
(scrartcl) been defined for compatiblitiy to Script 2.0 only.
(scrartcl) Now, after two decades of LaTeX2e and NFSS2, you
(scrartcl) shouldn't use such commands any longer and within
(scrartcl) KOMA-Script usage of `\rm' is definitely deprecated.
(scrartcl) See `fntguide.pdf' for more information about
(scrartcl) recommended font commands.
(scrartcl) Note also, that KOMA-Script will remove the definition
(scrartcl) of `\rm' anytime until release of about version 3.20.
(scrartcl) But for now, KOMA-Script will replace deprecated `\rm'
(scrartcl) by `\normalfont \rmfamily ' on input line 185.
[3] (./Calendar.aux) )
Here is how much of TeX's memory you used:
17335 strings out of 493105
347628 string characters out of 6137072
659951 words of memory out of 5000000
20502 multiletter control sequences out of 15000+600000
10555 words of font info for 23 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
64i,11n,60p,389b,825s stack positions out of 5000i,500n,10000p,200000b,80000s
{/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-t1.en
c}</usr/share/texmf/fonts/type1/public/cm-super/sfss0800.pfb></usr/share/texmf/
fonts/type1/public/cm-super/sfss1000.pfb></usr/share/texmf/fonts/type1/public/c
m-super/sfsx1000.pfb>
Output written on Calendar.pdf (3 pages, 65918 bytes).
PDF statistics:
30 PDF objects out of 1000 (max. 8388607)
21 compressed objects within 1 object stream
0 named destinations out of 1000 (max. 500000)
13 words of extra memory for PDF output out of 10000 (max. 10000000)

As far as I can see, there is a problem with undefined ifdate and node. But I don't know why?

Maybe you could help me, indiviualizing my code so it fits my situation right now. I would like to have Eleni Graziani starting on Wednesday the 18th of November 2015. I would like to pause the Work Sheme between the 10th of December and letting the Work Sheme repeat at the 3rd of January. And I know that Ilene Crumpler and Iola Eudy have changed the work for the first cycle.

Where I need help

  • Making the template work.
  • Individualize my sheme, so I see how to use it
    • Eleni Graziani starting on Wednesday the 18th of November 2015
    • Pause the Work Sheme between the 10th of December and letting the Work Sheme repeat at the 3rd of January
    • Ilene Crumpler and Iola Eudy have changed the work for the first cycle

Hopefully you can help me.Many thanks for considering my request.

  • 1
    You already have day code in your original question. So you should not add my code, but replace the old one. It's the 6th line of th tikzpicture: \begin{tikzpicture}[every day/.style={anchor = north}] \calendar[ dates=\year-01-01 to \year-06-30, name=cal, day yshift = 3em, day code= – Tom Bombadil Nov 14 '15 at 16:27
  • For Eleni Grazani to start on 18.11 (one cleaning day earlier) you can just increment the counter by one, e.g. \xdef\cleanerID{1} – Tom Bombadil Nov 14 '15 at 16:32
5
  • The template works if you replace old day code. Your errors are due to placing it outside of the calender environment.
  • I started in the 2nd half of 2015 and the 1st half of 2015. To shift the cycle, initialize the \cleanerID to some value from 0 to 29. For the given requirement, it's 18.
  • To pause and start, you can use the at most and at least keywords of \ifdate
  • To change two names, it just looked up the dates and changed them manually (via equals=<reference>) and colored them differently to show the effect.

Code

% DIN-A4 doublesided year calendar
% Author: Robert Krause
% License : Creative Commons attribution license
% Submitted to TeXample.net on 13 July 2012
\documentclass[landscape,a4paper, ngerman, 10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{tikz}           % Use the calendar.sty style

\usepackage{translator} % German Month and Day names
\usepackage{fancyhdr}       % header and footer
\usepackage{fix-cm}     % Large year in header

\usepackage[landscape, headheight = 2cm, margin=.5cm,
  top = 3.2cm, nofoot]{geometry}
\usetikzlibrary{calc}
\usetikzlibrary{calendar}
\renewcommand*\familydefault{\sfdefault}

% User defined
\def\year{2015}
\def\nextyear{2016}
% Names of Holidays are inserted by employing this macro
\def\termin#1#2{
  \node [anchor=north west, text width= 3.4cm] at
    ($(cal-#1.north west)+(3em, 0em)$) {\tiny{#2}};
}

%Header
\renewcommand{\headrulewidth}{0.0pt}
\setlength{\headheight}{10ex}
\chead{
  %\fontsize{60}{70}\selectfont\textbf{\year}
  \Large\textbf{Cleaning Plan}\hfill
}
%Footer
%\cfoot{\footnotesize\texttt{http://www.texample.net/}}
\pagenumbering{gobble}

% === Macro that returns a name if given a number from 0 to 29, "Error!" otherwise
\newcommand{\Person}[1]{%
\ifcase#1
Bryant Romans \or
Latricia Stoneman \or
Wilmer Lytton \or 
Tommie Lenahan \or 
Antonio Hoggard \or 
Edward Lanctot \or 
Chassidy Hyndman \or 
Marianela Wojciechowski \or 
Edna Kreitzer \or 
Harrison Cruze \or 
Marna Meloy \or 
Georgene Joly \or 
Ken Denley \or 
William Loeffler \or 
Young Spinelli \or 
Glendora Bruss \or 
Kraig Calloway \or 
Chantal Callejas \or 
Eleni Graziani \or 
Ilene Crumpler \or 
Ali Valliere \or 
Sonya Barlett \or 
Frederick Delacruz \or 
Kayce Foti \or 
Orval Kirchner \or 
Corrinne Cahoon \or 
Modesto Mulloy \or 
Alessandra Rodenberger \or 
Bernita Redman \or 
Iola Eudy \else
Error! \fi
}

\xdef\cleanerID{18}

\begin{document}
\pagestyle{fancy}
\begin{center}
\begin{tikzpicture}[every day/.style={anchor = north}]
\calendar[
  dates=\year-07-01 to \year-12-31,
  name=cal,
  day yshift = 3em,
  day code=
  { %=== Define macro that holds cleaners name on cleaning days, empty otherwise
    \ifdate{Monday,Wednesday,Saturday}%
    {   \ifdate{at most=\year-12-09}
        {   \xdef\InsertName{\Person{\cleanerID}}
            \pgfmathtruncatemacro{\newCleanerID}{mod(\cleanerID+1,30)}
                \xdef\cleanerID{\newCleanerID}
            }
            {   \xdef\InsertName{}
            }
    }
    {   \xdef\InsertName{}
    } 
    \ifdate{equals=\year-07-04}
    {   \xdef\InsertName{Iola Eudy}
        \tikzset{every day/.style={fill=cyan!50!blue}}          
    }{}
    \ifdate{equals=\year-07-27}
    {   \xdef\InsertName{Ilene Crumpler}
        \tikzset{every day/.style={fill=cyan!50!blue}}          
    }{}
    \node[name=\pgfcalendarsuggestedname,every day,shape=rectangle,
    minimum height= .53cm, text width = 4.4cm, draw = gray]{\tikzdaytext};
    %=== Insert the  cleaners name here
    \draw (-1.8cm, -.1ex) node[anchor = west]{\footnotesize%
      \pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday} \InsertName
      };
  },
  execute before day scope=
  {
    \ifdate{day of month=1}
    {
      % Shift right
      \pgftransformxshift{4.8cm}
      % Print month name 
      \draw (0,0)node [shape=rectangle, minimum height= .53cm,
        text width = 4.4cm, fill = black, text= white, draw = black, text centered]
        {\textbf{\pgfcalendarmonthname{\pgfcalendarcurrentmonth}}
        };
    }{}
    \ifdate{workday}
    {
      % normal days are white
      \tikzset{every day/.style={fill=white}}
    }{}
    % Saturdays and half holidays (Christma's and New year's eve)
    \ifdate{Saturday}{\tikzset{every day/.style={fill=red!10}}}{}
    % Sundays and full holidays
    \ifdate{Sunday}{\tikzset{every day/.style={fill=red!20}}}{}
  },
 execute at begin day scope=
  {
    % each day is shifted down according to the day of month
    \pgftransformyshift{-.53*\pgfcalendarcurrentday cm}
  }
];
\end{tikzpicture}
% Repeat the whole thing for the second page
%\pagebreak

\begin{tikzpicture}[every day/.style={anchor = north}]
\calendar[dates=\nextyear-01-01 to \nextyear-06-30,
  name=cal,
  day yshift = 3em,
  day code=
  { %=== Define macro that holds cleaners name on cleaning days, empty otherwise
    \ifdate{Monday,Wednesday,Saturday}%
    {   \ifdate{at least=\nextyear-01-03}
        {   \xdef\InsertName{\Person{\cleanerID}}
            \pgfmathtruncatemacro{\newCleanerID}{mod(\cleanerID+1,30)}
                \xdef\cleanerID{\newCleanerID}
            }
            {   \xdef\InsertName{}
            }
    }
    {   \xdef\InsertName{}
    }   
    \node[name=\pgfcalendarsuggestedname,every day,shape=rectangle,
    minimum height= .53cm, text width = 4.4cm, draw = gray]{\tikzdaytext};
    %=== Insert the  cleaners name here
    \draw (-1.8cm, -.1ex) node[anchor = west]{\footnotesize%
      \pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday} \InsertName
      };
  },
  execute before day scope=
  {
    \ifdate{day of month=1} {
    % Shift right
    \pgftransformxshift{4.8cm}
    % Print month name 
    \draw (0,0)node [shape=rectangle, minimum height= .53cm, 
      text width = 4.4cm, fill = black, text= white, draw = black, text centered]
    {
      \textbf{\pgfcalendarmonthname{\pgfcalendarcurrentmonth}}
    };
  }{}
  \ifdate{workday}
  {
    \tikzset{every day/.style={fill=white}}
  }{}
  % Saturdays and half holidays (Christma's and New year's eve)
  \ifdate{Saturday}{\tikzset{every day/.style={fill=red!10}}}{}
  % Sundays and full holidays
  \ifdate{Sunday}{\tikzset{every day/.style={fill=red!20}}}{}
  },
  execute at begin day scope=
  {
   % Each day is shifted down according to the day of month
    \pgftransformyshift{-.53*\pgfcalendarcurrentday cm}
  }
];
\end{tikzpicture}
\end{center}
\end{document}

Output

enter image description here


Edit 1: Probably you wanted it a little more like this:

  • it starts on 18. November 2015 and runs until October 2016.
  • The chrismas break is excluded
  • lene Crumpler and Iola Eudy have been swapped, but that was done manually

Code

% DIN-A4 doublesided year calendar
% Author: Robert Krause
% License : Creative Commons attribution license
% Submitted to TeXample.net on 13 July 2012
\documentclass[landscape,a4paper, ngerman, 10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{tikz}           % Use the calendar.sty style

\usepackage{translator} % German Month and Day names
\usepackage{fancyhdr}       % header and footer
\usepackage{fix-cm}     % Large year in header

\usepackage[landscape, headheight = 2cm, margin=.5cm,
  top = 3.2cm, nofoot]{geometry}
\usetikzlibrary{calc}
\usetikzlibrary{calendar}
\renewcommand*\familydefault{\sfdefault}

% User defined
\def\year{2015}
\def\nextyear{2016}
% Names of Holidays are inserted by employing this macro
\def\termin#1#2{
  \node [anchor=north west, text width= 3.4cm] at
    ($(cal-#1.north west)+(3em, 0em)$) {\tiny{#2}};
}

%Header
\renewcommand{\headrulewidth}{0.0pt}
\setlength{\headheight}{3ex}
\chead{
  %\fontsize{60}{70}\selectfont\textbf{\year}
  \Large\textbf{Cleaning Plan}\hfill
}
%Footer
%\cfoot{\footnotesize\texttt{http://www.texample.net/}}
\pagenumbering{gobble}

% === Macro that returns a name if given a number from 0 to 29, "Error!" otherwise
\newcommand{\Person}[1]{%
\ifcase#1
Bryant Romans \or
Latricia Stoneman \or
Wilmer Lytton \or 
Tommie Lenahan \or 
Antonio Hoggard \or 
Edward Lanctot \or 
Chassidy Hyndman \or 
Marianela Wojciechowski \or 
Edna Kreitzer \or 
Harrison Cruze \or 
Marna Meloy \or 
Georgene Joly \or 
Ken Denley \or 
William Loeffler \or 
Young Spinelli \or 
Glendora Bruss \or 
Kraig Calloway \or 
Chantal Callejas \or 
Eleni Graziani \or 
Ilene Crumpler \or 
Ali Valliere \or 
Sonya Barlett \or 
Frederick Delacruz \or 
Kayce Foti \or 
Orval Kirchner \or 
Corrinne Cahoon \or 
Modesto Mulloy \or 
Alessandra Rodenberger \or 
Bernita Redman \or 
Iola Eudy \else
Error! \fi
}

\xdef\cleanerID{18}

\begin{document}
\pagestyle{fancy}
\begin{center}
\begin{tikzpicture}[every day/.style={anchor = north}]
\calendar[
  dates=\year-11-01 to \nextyear-04-30,
  name=cal,
  day yshift = 3em,
  day code=
  { %=== Define macro that holds cleaners name on cleaning days, empty otherwise
    \ifdate{Monday,Wednesday,Saturday}%
    {   \ifdate{between=\year-11-18 and \year-12-09, at least=\nextyear-01-03}
        {   \xdef\InsertName{\Person{\cleanerID}}
            \pgfmathtruncatemacro{\newCleanerID}{mod(\cleanerID+1,30)}
                \xdef\cleanerID{\newCleanerID}
            }
            {   \xdef\InsertName{}
            }
    }
    {   \xdef\InsertName{}
    } 
    \ifdate{equals=\year-11-21}
    {   \xdef\InsertName{Iola Eudy}
        \tikzset{every day/.style={fill=cyan!50!blue!50}}       
    }{}
    \ifdate{equals=\nextyear-01-06}
    {   \xdef\InsertName{Ilene Crumpler}
        \tikzset{every day/.style={fill=cyan!50!blue!50}}       
    }{}
    \node[name=\pgfcalendarsuggestedname,every day,shape=rectangle,
    minimum height= .53cm, text width = 4.4cm, draw = gray]{\tikzdaytext};
    %=== Insert the  cleaners name here
    \draw (-1.8cm, -.1ex) node[anchor = west]{\footnotesize%
      \pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday} \InsertName
      };
  },
  execute before day scope=
  {
    \ifdate{day of month=1}
    {
      % Shift right
      \pgftransformxshift{4.8cm}
      % Print month name 
      \draw (0,0)node [shape=rectangle, minimum height= .53cm,
        text width = 4.4cm, fill = black, text= white, draw = black, text centered]
        {\textbf{\pgfcalendarmonthname{\pgfcalendarcurrentmonth} \pgfcalendarcurrentyear}
        };
    }{}
    \ifdate{workday}
    {
      % normal days are white
      \tikzset{every day/.style={fill=white}}
    }{}
    % Saturdays and half holidays (Christma's and New year's eve)
    \ifdate{Saturday}{\tikzset{every day/.style={fill=red!10}}}{}
    % Sundays and full holidays
    \ifdate{Sunday}{\tikzset{every day/.style={fill=red!20}}}{}
  },
 execute at begin day scope=
  {
    % each day is shifted down according to the day of month
    \pgftransformyshift{-.53*\pgfcalendarcurrentday cm}
  }
];
\end{tikzpicture}
% Repeat the whole thing for the second page
%\pagebreak

\begin{tikzpicture}[every day/.style={anchor = north}]
\calendar[dates=\nextyear-05-01 to \nextyear-10-31,
  name=cal,
  day yshift = 3em,
  day code=
  { %=== Define macro that holds cleaners name on cleaning days, empty otherwise
    \ifdate{Monday,Wednesday,Saturday}%
    {   \ifdate{at least=\nextyear-01-03}
        {   \xdef\InsertName{\Person{\cleanerID}}
            \pgfmathtruncatemacro{\newCleanerID}{mod(\cleanerID+1,30)}
                \xdef\cleanerID{\newCleanerID}
            }
            {   \xdef\InsertName{}
            }
    }
    {   \xdef\InsertName{}
    }   
    \node[name=\pgfcalendarsuggestedname,every day,shape=rectangle,
    minimum height= .53cm, text width = 4.4cm, draw = gray]{\tikzdaytext};
    %=== Insert the  cleaners name here
    \draw (-1.8cm, -.1ex) node[anchor = west]{\footnotesize%
      \pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday} \InsertName
      };
  },
  execute before day scope=
  {
    \ifdate{day of month=1} {
    % Shift right
    \pgftransformxshift{4.8cm}
    % Print month name 
    \draw (0,0)node [shape=rectangle, minimum height= .53cm, 
      text width = 4.4cm, fill = black, text= white, draw = black, text centered]
    {
      \textbf{\pgfcalendarmonthname{\pgfcalendarcurrentmonth} \pgfcalendarcurrentyear}
    };
  }{}
  \ifdate{workday}
  {
    \tikzset{every day/.style={fill=white}}
  }{}
  % Saturdays and half holidays (Christma's and New year's eve)
  \ifdate{Saturday}{\tikzset{every day/.style={fill=red!10}}}{}
  % Sundays and full holidays
  \ifdate{Sunday}{\tikzset{every day/.style={fill=red!20}}}{}
  },
  execute at begin day scope=
  {
   % Each day is shifted down according to the day of month
    \pgftransformyshift{-.53*\pgfcalendarcurrentday cm}
  }
];
\end{tikzpicture}
\end{center}
\end{document}

Output

enter image description here

  • @AmelieB.Blackstone: You're welcome! – Tom Bombadil Nov 15 '15 at 0:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.