Skip to content

Instantly share code, notes, and snippets.

@marcusmueller
Created September 27, 2025 16:20
Show Gist options
  • Select an option

  • Save marcusmueller/523a97dace94632ffd3fc384f8323907 to your computer and use it in GitHub Desktop.

Select an option

Save marcusmueller/523a97dace94632ffd3fc384f8323907 to your computer and use it in GitHub Desktop.
/*
* Copyright 2025 Marcus Müller
* SPDX-license-identifier: EUPL-1.2
*/
#import "@preview/cineca:0.5.0"
// Make page landscape
#set page(
"a4",
flipped: true,
columns: 2,
// adjust to your printer's needs!
margin: (top: 1cm, bottom: 1cm, left: 1cm, right: 1cm),
)
// Adjust font to your liking, or comment out to get default
#set text(font: "Droid Sans")
// helper to not have to make cineca.calendar-month manually for everything
#let emptymonth(month) = {
align(horizon, {
set block(breakable: false)
cineca.calendar-month(
(
(cineca.daytime(month + "-01", "00:00:00"), []),
),
// unless you're American, the week starts on a Monday, usually:
sunday-first: false,
// here we define what this thing should look like:
template: (
// this is the thing way we transform the Month header text to something pretty
month-head: content => text(content, weight: "extrabold", size: 1.2em),
// this is the thing way we transform each day and the events on the day to something pretty
// (we totally ignore any events)
day-body: (day, events) => {
// add a bit of internal padding; and make the background yellowish
show: block.with(
width: 100%,
height: 100%,
inset: 2pt,
fill: yellow.lighten(50%).transparentize(80%),
)
// put contents in cell at the top left
set align(top + left)
text(str(day.day()), weight: "extralight")
},
),
)
})
}
#emptymonth("2025-09")
#emptymonth("2025-10")
// Let's do the whole of 2026 while we're at it
#for month in range(1, 13) {
emptymonth("2026-" + str(month))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment