1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
\documentclass{article}
\usepackage[hidelinks]{hyperref}
\usepackage[letterpaper,margin=0.3in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{verbatim}
\usetikzlibrary{calendar}
\usetikzlibrary{shapes}
\usetikzlibrary{shapes.geometric}
\begin{document}
\title{\vspace{-1cm}Palo Alto 2nd Ward 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!70]},
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 (Monday) {\node [fill=red!50,circle] {};}%
; \\
};
\end{tikzpicture}
\end{minipage}
\begin{minipage}[t]{0.65\linewidth}
\subsection*{Key Dates}
what about stuff?
\end{minipage}
\begin{center}
Find the full calendar at \url{https://www.lds.org/church-calendar/}
\end{center}
\end{document}
|