\documentclass{article} \usepackage[hidelinks]{hyperref} \usepackage[letterpaper,margin=0.3in]{geometry} \usepackage[utf8]{inputenc} \usepackage{booktabs} \usepackage{enumitem} \usepackage{tikz} \usepackage{verbatim} \usetikzlibrary{calendar} \usetikzlibrary{shapes} \usetikzlibrary{shapes.geometric} % \usepackage{xcolor} % \selectcolormodel{gray} \renewcommand{\rmdefault}{cmss} \definecolor{y}{RGB}{227,238,167} \definecolor{g}{RGB}{127,205,187} \definecolor{b}{RGB}{54,137,194} % Define the date highlights \newcommand{\ward}{\node[fill=y,circle] {};} \newcommand{\church}{\node[fill=g,circle] {};} \newcommand{\stake}{\node[fill=b,circle] {};} \newcommand{\orangedot}{\node[fill=green!70,circle] {};} \begin{document} \title{\vspace{-1cm}Palo Alto 2nd Ward 2019 Year-at-a-Glance\vspace{-1cm}} \date{} \author{} \maketitle \thispagestyle{empty} % Remove page numbers and headers \makeatletter % This way you can define your own conditions, for example, you % could make something as `full moon', `even week', `odd week', % et cetera. In principle. The math in TeX could be hard. \pgfkeys{/pgf/calendar/start of year/.code={% \ifnum\pgfcalendarifdateday=1\relax% \ifnum\pgfcalendarifdatemonth=1\relax\pgfcalendarmatchestrue\fi% \fi% }}% % Define our own style \tikzstyle{week list sunday}=[ % Note that we cannot extend from week list, % the execute before day scope is cumulative execute before day scope={% \ifdate{day of month=1}{\ifdate{equals=\pgfcalendarbeginiso}{}{ % On first of month, except when first date in calendar. \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@month@yshift}% \pgftransformyshift{-\pgf@y} }}{}% }, execute at begin day scope={% % Because for TikZ Monday is 0 and Sunday is 6, % we can't directly use \pgfcalendercurrentweekday, % but instead we define \c@pgf@counta (basically) as: % (\pgfcalendercurrentweekday + 1) % 7 \pgfmathsetlength\pgf@x{\tikz@lib@cal@xshift}% \ifnum\pgfcalendarcurrentweekday=6 \c@pgf@counta=0 \else \c@pgf@counta=\pgfcalendarcurrentweekday \advance\c@pgf@counta by 1 \fi \pgf@x=\c@pgf@counta\pgf@x % Shift to the right position for the day. \pgftransformxshift{\pgf@x} }, execute after day scope={ % Week is done, shift to the next line. \ifdate{Saturday}{ \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}% \pgftransformyshift{-\pgf@y} }{}% }, % This should be defined, glancing from the source code. tikz@lib@cal@width=7 ] % New style for drawing the year, it is always drawn % for January \tikzstyle{year label left}=[ execute before day scope={ \ifdate{start of year}{ \drawyear }{} }, % Right align every year/.append style={ anchor=east, } ] % Style to force giving a month a year label. \tikzset{draw year/.style={ execute before day scope={ \ifdate{day of month=1}{\drawyear}{} } }} % This actually draws the year. \newcommand{\drawyear}{ \pgfmathsetlength{\pgf@x}{\tikz@lib@cal@xshift}% \pgftransformxshift{-\pgf@x} % \tikzyearcode is defined by default \tikzyearcode \pgfmathsetlength{\pgf@x}{\tikz@lib@cal@xshift}% \pgftransformxshift{\pgf@x} } \makeatother \begin{minipage}{0.28\linewidth} % The actual calendar is now rather easy: \begin{tikzpicture}[every calendar/.style={ month label left, month text={\textit{\%m. \%y0}}, month yshift=0pt, if={(Sunday) [blue!100]}, week list sunday, }, every day/.style={anchor=base}, day text={\%d=},rounded corners=0,anchor=base,text height=1ex,text depth=-0.5ex ]\small \matrix[column sep=0em, row sep=0em] { \calendar[dates=2019-01-01 to 2019-12-last] if (equals=2019-03-30) {\ward}% Easter Breakfast if (equals=2019-05-03) {\ward}% Fathers & Kids Campout if (equals=2019-05-04) {\ward}% if (equals=2019-07-04) {\ward}% 4th of July Breakfast if (equals=2019-10-11) {\ward}% Annual Ward Campout if (equals=2019-10-12) {\ward}% if (equals=2019-11-30) {\stake}% Christmas Creche if (equals=2019-12-01) {\stake}% Christmas Creche if (equals=2019-12-02) {\stake}% Christmas Creche if (equals=2019-12-03) {\stake}% Christmas Creche if (equals=2019-12-04) {\stake}% Christmas Creche if (equals=2019-04-06) {\church}% General Conf if (equals=2019-04-07) {\church}% if (equals=2019-10-05) {\church}% General Conf if (equals=2019-10-06) {\church}% ; \\ }; \end{tikzpicture} \end{minipage} \begin{minipage}[t]{0.65\linewidth} \subsection*{Important Dates} \begin{itemize}[itemsep=1pt] \item[\begin{tikzpicture}\ward\end{tikzpicture}] Mar 20: Easter Breakfast at Foothills Park \item[\begin{tikzpicture}\church\end{tikzpicture}] Apr 6--7: General Conference \item[\begin{tikzpicture}\ward\end{tikzpicture}] May 3--4: Fathers \& Kids Campout at Foothills Park \item[\begin{tikzpicture}\ward\end{tikzpicture}] Jul 4: 4th of July Breakfast \item[\begin{tikzpicture}\church\end{tikzpicture}] Oct 5--6: General Conference \item[\begin{tikzpicture}\ward\end{tikzpicture}] Oct 11--12: Annual Ward Campout at Huddart Park \item[\begin{tikzpicture}\stake\end{tikzpicture}] Nov 30--Dec 4: Christmas Crèche Exhibit \end{itemize} \end{minipage} \begin{center} \begin{tabular}{llll} \begin{tikzpicture}\ward\end{tikzpicture} Palo Alto 2nd Ward Events & \begin{tikzpicture}\stake\end{tikzpicture} Menlo Park Stake Events & \begin{tikzpicture}\church\end{tikzpicture} Church-wide Events \\ \end{tabular} \vspace{0.5em} Find the full, up-to-date calendar at \url{https://www.lds.org/church-calendar/} \vspace{0.3em} \footnotesize{This printout was last updated on \today.} \end{center} \end{document}