Sure. I set up an embedded subtemplate, which is mostly copied off the documentation page:
{exp:channel:calendar
switch="calendarToday|calendarCell"
channel="events"
month="{embed:month}"
year="{embed:year}"
show_future_entries="yes"
show_expired="yes"
}
<div class="calendar-pane">
<table class="calendarBG" border="0" cellpadding="0" cellspacing="0" summary="My Calendar">
<tr class="calendarHeader">
<th colspan="7">
{date format="%F %Y"}
</th>
</tr>
<tr>
{calendar_heading}
<td class="calendarDayHeading">{lang:weekday_abrev}</td>
{/calendar_heading}
</tr>
{calendar_rows}
{row_start}<tr>{/row_start}
{if entries}
<td class='{switch}' align='center'>
<a href="http://{day_path=events/date/index}">{day_number}</a>
</td>
{/if}
{if not_entries}
<td class='{switch}' align='center'>{day_number}</td>
{/if}
{if blank}
<td class='calendarBlank'>{day_number}</td>
{/if}
{row_end}</tr>{/row_end}
{/calendar_rows}
</table>
</div>
{/exp:channel:calendar}
Then I can just embed this template with the appropriate month and year, as many times as needed (fp_datemath is a tiny plugin I wrote to wrap PHP’s date and str_to_time functions):
<div class="calendars">
{embed="events/_calendar"
month="{exp:fp_datemath format='m' modifier='1 month ago'}"
year="{exp:fp_datemath format='Y' modifier='1 month ago'}"
}
{embed="events/_calendar"
month="{exp:fp_datemath format='m' modifier='now'}"
year="{exp:fp_datemath format='Y' modifier='now'}"
}
{embed="events/_calendar"
month="{exp:fp_datemath format='m' modifier='1 month'}"
year="{exp:fp_datemath format='Y' modifier='1 month'}"
}
</div>
I’m hiding the off-month dates with CSS now.