# calendar.sty with consistent height spacing

I'm using Monthly Calendar template

I'm trying to make a printable calendar with content I generate. There's content for every day. I'm using calendar.sty, which looks nice and clean if it's empty (and there are empty days that can have \vspace{2.5cm}). But vspace doesn't set the maximum height of a cell, but just adds space to the text that's already there, so I can't use it.

With a calendar_1.tex file that looks like (for brevity, only the parts that changed from the example are given):

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Monthly Calendar
% LaTeX Template
% Version 1.1 (19/9/2018)
%
% http://www.LaTeXTemplates.com
%
% Original author:
% Evan Sultanik with modifications by
% Vel (vel@LaTeXTemplates.com)
%
% CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/)
%
% Important note:
% This template requires the calendar.sty file to be in the same directory as the
% .tex file. The calendar.sty file provides the necessary structure to create the
% calendar.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%----------------------------------------------------------------------------------------
%   PACKAGES AND OTHER DOCUMENT CONFIGURATIONS
%----------------------------------------------------------------------------------------

\documentclass[10pt]{article} % Can also use 9pt or 11pt for a smaller or larger overall font size

\usepackage{calendar} % Use the calendar.sty style

\usepackage[landscape, a4paper, margin=1cm]{geometry} % Page dimensions and margins

\usepackage{palatino} % Use the Palatino font

\begin{document}

\pagestyle{empty} % Disable default headers and footers

\setlength{\parindent}{0pt} % Stop paragraph indentation

\StartingDayNumber=1 % The starting day of the calendar, default of 1 means Sunday, 2 for Monday, etc

%----------------------------------------------------------------------------------------
%----------------------------------------------------------------------------------------

\begin{center}
\textsc{\LARGE Month}\\ % Month
\textsc{\large Year} % Year
\end{center}

%----------------------------------------------------------------------------------------

\begin{calendar}{\textwidth} % Calendar to be the entire width of the page

%----------------------------------------------------------------------------------------
%   BLANK DAYS BEFORE THE BEGINNING OF THE CALENDAR
%----------------------------------------------------------------------------------------

% This part defines the number of blank days at the beginning of the calendar before the first of the month starts. If you need this to be more than 4 (i.e. the first starts on a Friday or Saturday in a 31 day month), then you have two options:
% 1) You can uncomment another one or two \BlankDay's below which will make a new week (6 total) which makes the calendar too big for one page, remedy this by decreasing the size of each day by replacing 2.5cm below with a smaller number.
% 2) Make the spill-over days start at the top left of the calendar (i.e. the calendar starts with 31 then a few days blank then 1, 2, 3, etc). The second option can be configured by uncommenting the below:

%\setcounter{calendardate}{31} % Begin the count with 31 so the top left day is 31; this can be changed to 29 or 30 as required
%\day{}{\vspace{2.5cm}} % 31 - add another line identical to this if starting at 30 or earlier

% You will need to comment out the 31 in the NUMBERED DAYS AND CALENDAR CONTENT section below for this as well as commenting out one of the \BlankDay's below. Play around with it and you will get it.

\BlankDay
\BlankDay
%\BlankDay
%\BlankDay
%\BlankDay
%\BlankDay

%----------------------------------------------------------------------------------------
%   NUMBERED DAYS AND CALENDAR CONTENT
%----------------------------------------------------------------------------------------

% These are the numbered days in the template - if there are less than 31 days simply comment out the days that aren't needed

% \vspace{2.5cm} is only there to provide an even look to the calendar where each day is 2.5cm tall, it can be changed or removed to automatically adjust to the day in the week with the most content

% Use \eventskip instead of \\ for newlines between events

\setcounter{calendardate}{1} % Start the date counter at 1

\day{Work}{10am Meeting with Boss \eventskip 12pm TPS Report Due} % 1 - Example of content: first argument is the heading, then the content of the day
\day{Work}{9am Team Standup Meeting \eventskip \dayheader{Social}{}\eventskip 5:30pm Tennis with John, Janet and James} % 2 - Example of day with multiple headings
\day{}{Happy } % 3
\day{}{Happy } % 4
\day{}{Happy } % 5
\day{}{Happy Sunday} % 6
\day{}{Happy Monday} % 7
\day{}{Happy Tuesday} % 8
\day{}{Happy Wednesday, otherwise known as hump day that will make the whole row taller} % 9
\day{}{Happy Thursday} % 10
\day{}{Happy Friday Friday Friday} % 11
\day{}{Happy Saturday} % 12
\day{}{Happy } % 13
\day{}{Happy } % 14
\day{}{Happy } % 15
\day{}{Happy } % 16
\day{}{Happy } % 17
\day{}{Happy } % 18
\day{}{Happy } % 19
\day{}{Happy } % 20
\day{}{Happy } % 21
\day{}{Happy Day before vspace day} % 22
\day{}{Happy vspace 2.5cm day\vspace{2.5cm}} % 23
\day{}{Happy Day after vspace day} % 24
\day{}{Happy Two days after vspace with lots of wrapping and wrapping etc} % 25
\day{}{Happy } % 26
\day{}{Happy } % 27
\day{}{Happy } % 28
\day{}{Happy } % 29
\day{}{Happy } % 30
\day{}{Happy } % 31

% Un-comment the \BlankDay below if the bottom line of the calendar is missing
%\BlankDay

% Un-comment to start counting again after 31
%\setcounter{calendardate}{1}
%\day{}{Happy } % 1
%\day{}{Happy } % 2
%\day{}{Happy } % 3

%----------------------------------------------------------------------------------------

\finishCalendar
\end{calendar}
\end{document}


The output looks like:

What I'd like ideally is the cells all the same size and expand to fit the page. I'll be happy if they're the same size. The amount of content per day will change, with some days having much more than others.

• it would be much easier to answer your question if you provided a test document that produces the output shown. – David Carlisle Feb 6 at 7:54
• It's just the sample template included with calendar.sty with the days changed. But I've included the entire template. – mlv Feb 6 at 10:57
• oh calendar sty isn't in texlive – David Carlisle Feb 6 at 11:30
• I assume that you can put all the text in \parbox[t][2cm]{\hsize}{some text here} so all entries are forced to be 2cm high, but untested as the package isn't installed. – David Carlisle Feb 6 at 11:33
• I didn't know about \parbox. That worked perfectly. Thank you!! – mlv Feb 6 at 22:27

The best solution I've found (Thanks, David Carlisle) is to modify calendar.sty. In the

\def\day##1##2{


macro, I changed the line:

\activities{##2}


to

\activities{\parbox[t][2.5cm]{\hsize}{##2}}