I made a calendar marked with Malaysian holidays for personal use, and then decided to make it public. It uses my LaTeX CD calendar template. Here are some sample pages:
Download Cuti-cuti Malaysia 2019 Calendar for Penang
Download LaTeX source code files
This has been customised specifically with Penang in mind, so state holidays observed in Penang are marked with filled purplish circles, while holidays observed in other states are marked with hollow circles. National holidays are marked with filled red circles.
Customisations
Here are the LaTeX source code files if you’d like to re-generate the calendar for a different state, or if you’d like to customise it further. You can also clone the template project if you have an Overleaf account.
Calendars for other states or federal territories
If you’d like to generate a calendar with state holidays marked for a different state, Download the source code, change the line
\def\mylocation{Penang} |
to a different state or federal territory, and recompile the .tex file with XeLaTeX. For example:
\def\mylocation{Kuala Lumpur} |
Valid values for \mylocation
: Kedah, Johor, Kelantan, Terengganu, Malacca, Negeri Sembilan, Pahang, Penang, Perak, Sabah, Sarawak, Selangor, Kuala Lumpur, Labuan, Putrajaya.
Add Chinese lunar calendar
You can also uncomment this line in the .tex file’s preamble:
\providetoggle{chinese-lunar}\toggletrue{chinese-lunar} |
The generated calendar would then include the Chinese lunar calendar.
Download Cuti-cuti Malaysia 2019 Calendar for Penang, with Chinese lunar calendar
Add your own events
You can add your own events to the calendar and define your own styles for their markers. For example:
\tikzset{personal/.style={text=YellowGreen!50,font=\Large}} \tikzset{work/.style={fill=SkyBlue!50,shape=cloud,aspect=1.5}} \begin{monthCalendar}{2019}{01} \event[mark style=personal,marker=\faBirthdayCake]{2019-01-12}{}{Someone's birthday} \event[mark style=work]{2019-01-23}{2019-01-24}{Business trip} \end{monthCalendar} |
would produce this output in the January calendar:
Changing or removing the images
All photos in this sample, in the flickr/
folder, were downloaded from Flickr and are licensed under Creative Commons licenses. You can replace them with your own images for your own use. Remember to change the \graphicspath{{flickr/}}
line if you use a different folder for the images.
If you do not want any illustrations, simply remove the \illustration
commands before each month’s calendar.
For further information about the underlying cdcaleandr
class and template, see this blog post or its Github repository.
Data sources
The calendar data used in this sample were obtained from the following sources, and I cannot guarantee their accuracy and correctness.
- Malaysian public holiday data was sourced from the Google Calendar here and converted to a tab-separated values file.
- Malaysian school holiday data was sourced from the Malaysian Ministry of Education’s webpage.
- Chinese lunar calendar data was sourced from here, converted to a CSV file and Simplified Chinese and some minor editing for typesetting purposes (inserting
\\
for line breaks.
Happy New Year 2019!
Beautiful! Thank you for sharing!
Quick idea: perhaps the node border (circle, cloud) could be centered around the node text? It may look good on single digit dates.
Thanks! Yes, I was tottering a bit on that. By default (i.e. without events) I thought the digits look better if right-aligned.
One can still make all the digits centre-aligned by adding this in the preamble:
\patchcmd{\monthCalendar}{align=right}{align=center}{}{}
The alignment is applied to all days; the event marker is added on a background layer. Perhaps some late options can be applied to the day node if there’s an event; but I didn’t experiment much on that yet.