I have been working based on this answer but I can't get the background to change for each month. The moon feature from this answer is also not working for this tikz. There are also some minor changes, so in summary:
- A PNG tiled background should be different for each month.
- Whole month border.
- Include moon phases before the day number (if possible).
- No vertical lines at the days of the week.
- Horizontal lines for hand writing.
- Rounded corner border around month - year.
Also, how do I change language?
MWE:
\documentclass[a2paper,landscape]{article}
\usepackage[margin={1cm}, top= 6cm]{geometry}
\renewcommand*\thepage{}
\usepackage{mathabx}
%
\usepackage{etoolbox}
%
\usepackage{graphicx}
\usepackage{helvet}
\renewcommand{\familydefault}{\sfdefault}
\usepackage{tikz}
\usetikzlibrary{calendar}
\tikzset{
every weekday/.style={
anchor=south west,
black,
fill=white,
font=\scshape\bfseries,
name=weekday-\pgfcalendarcurrentmonth-\pgfcalendarcurrentweekday,
node contents=\%wt
},
weekday above/.style={
draw=none,
if = {(day of month=1) [days={append after command={
node [at={(\tikzlastnode.north west)}, alias=@firstweekday, every weekday]}}]},
if = {(day of month=2, day of month=3, day of month=4, day of month=5, day of month=6, day of month=7) [
days={append after command={
node [at={(@firstweekday.south west-|\tikzlastnode.south west)}, every weekday]}}]}
},
wall calendar/.style={
week list,
weekday above,
day text=,
day and weekday/.style={
draw,
outer sep=+0pt,
fill=white,
line width=.12em,
minimum width=\linewidth/7,
minimum height=\textheight/7
},
day xshift=\linewidth/7,
day yshift=\textheight/7, %altura da celula
every day label/.style={
anchor=north east,
font=\Huge,
node contents={\%d=},
inner sep=.7em
},
every day/.append style={
day and weekday,
label={[every day label]north east:}
},
every weekday/.append style={
day and weekday,
inner xsep=0pt,
minimum height=1.5em
},
moon code/.code={
\edef\listmoons{#1}%
\def\moons{}%
\foreach \l in \listmoons {%
\xappto\moons{if (equals = \pgfcalendarcurrentyear-\pgfcalendarcurrentmonth-\l) [day text=\noexpand\moon\%d-]}
}%
\tikzset{every day/.append style={\moons}}
}
}
}
\newcount\mooncounter
\def\moonreset{\global\mooncounter=-1\relax}
\moonreset
\def\moon{%
\global\advance\mooncounter by 1\relax%
\ifcase\mooncounter $\newmoon$%
\or $\rightmoon$%
\or $\fullmoon$%
\or $\leftmoon$\global\mooncounter=-1\relax%
\fi%
}
\newcommand*{\listofmoons}[1]{%
\edef\listmoons{#1}%
\def\moons{}%
\foreach \l in \listmoons {%
\xappto\moons{if (equals = 2023-12-\l) [day text=\noexpand\moon\%d-]}
}%
}
\begin{document}
\sffamily\LARGE
\centering
\newcommand*\Year{2023}
\moonreset
\foreach \mon in {6,...,12}{% 1,...,12
\listofmoons{2,6,7,8,9,12,27}
{\par \fontsize{40}{50}\selectfont\bfseries {\pgfcalendarmonthname{\mon}} - \Year \par}
\vspace{2em}
\tikz\calendar[
dates=\Year-0\mon-01 to \Year-0\mon-last,
wall calendar,
moon code={2,6,7,8,9,12,27}
];
\pagebreak
}
\end{document}
day text
as it's supposed to be. Language needs babel, translate and calendar in this order, I believe, with the language as an option to the class. I would output the whole page as one TikZ picture which makes it much easier to control the vertical and horizontal spacing instead of usinggeometry
. Do you have the dates for the moon phase in a different dataset? You will need to have a list of days per month (or a formula).