Annual cuti-cuti Malaysia calendar! This year I’ve made quite a lot of updates to the underlying code for cdcalendar
; the documentation has been shaken up quite a bit too.
The Cuti-cuti Malaysia 2024 calendar LaTeX files is available as an Overleaf read-only project here. By default, this generates an A4 landscape calendar that highlights national and Penang state public holidays and school holidays, along with the nongli (Chinese lunisolar) calendar.
If you’d like to generate a calendar for a different state, or choose a different layout or size, or use your own pictures, or add/mark your own events, you can clone that Overleaf project to edit your own copy; or download the source files to edit on your own local LaTeX installation.
So, a quick recap of what this is: depending on which state (negeri) or federal territory (wilayah persekutuan) you’re in, the public holidays and school holidays would differ. It can get really hard to keep up with which holiday your local bank or your kid’s school is observing… so I decided to make my own calendar that would mark the holidays with different colours, depending on which state you’re in.
Quick Contents
Generating for different states and layout options
The screenshots below show how holidays are highlighted differently, by changing \def\mylocation{Penang}
to \def\mylocation{Kuala Lumpur}
or \def\mylocation{Kedah}
. Essentially holidays marked with solid colours are holidays that are observed in the state you’re in: National holidays are in solid pink; state holidays are in solid purple. Holidays observed in other states are marked with empty purple circles.
- Instead of
giantsolo
, these three calendars use thegiant
class option, so will also generate two mini calendars on each page for the previous and next months. - For the Kedah calendar we also used the
sundayweek
document class option, to make the weeks start with Sunday instead of Monday. - Using
giant
orgiantsolo
without thelandscape
class option will generate A4-sized portrait calendars.
There are two variants of smaller sizes:
- Without any particular class options (i.e. the default output size for
cdcalendar
actually), each calendar page is 11.7cm × 13.65cm and would fit a CD case - With the
small
class option, each calendar page is 9cm × 7.5cm, similar to a 3.5″ floppy disk.
At such small sizes, it may be better to turn off the nongli calendars by changing \toggletrue{chinese-nongli}
in the .tex file preamble to \togglefalse{chinese-nongli}
.
Changing the pictures
For convenience the images are numbered 01–12. You can create a folder with a different name and place your own image files in it, and then update the \graphicspath{{.../}}
. Images of 9:16 or 1:2 aspect ratio work best.
Adding your own events
The public holidays are listed in the tab-separated values files 2024-my-holidays.tsv; and school holidays in 2024-my-school.tsv. If you would like to add your own custom events, you can use the \event
command in the .tex files themselves. The mark styles can be customised too. Here’s an example adding 1-day and 5-day events to the monthly of July, 2024:
\begin{monthCalendar}{2024}{07} %% This is a 1-day event \event{2024-07-03}{}{Birthday!} %% This is a 5-day event starting July 15th \event{2024-07-15}{5}{Exam week} %% You could also write equivalently %\event{2024-07-15}{2024-07-19}{Exam week} \end{monthCalendar} |
Data sources
The calendar data used in this sample were obtained from the following sources.
- Malaysian public holiday data was sourced from the Google Calendar here using the Google Calendars API, then converted to a tab-separated values file.
- Malaysian school holiday data was sourced from the Malaysian Ministry of Education’s portal (2023/2024) (2024/2025).
- Chinese lunar calendar data was generated from here, converted to a CSV file and Simplified Chinese and some minor editing for typesetting purposes (inserting
\\
for line breaks. - Photos in the sample calendar are sourced from Pexels and provided under the Pexels License.