Welcome to scal’s documentation!¶
I use this program about once a year to print a one-page school-year calendar. But it can be used to represent any calendar.
It is heavily inspired by the simple yet powerful Robert Krause’s calendar, itself using the complex yet powerful Till Tantau’s TikZ LaTeX package.
Examples¶
One-page calendar of a school year
French
Weekly planners:
How to print those planners?
Download the imposed version of the files below (or impose them yourself using pdfimpose and
pdfimpose perfect --group 3 weekly-en-2324.pdf
).Print them, two-sided, not reversed.
Fold the sheets, that is:
Take the stack of sheets in front of you, the title page being visible, not upside-down, in the bottom right corner of the sheet.
Take the first three sheets of paper, and fold them (together, as if they were one single thick sheet):
first vertically: fold the top half of the sheets behind the bottom half;
then horizontally: fold the left half of the sheets behin the right half.
You get a tiny, incomplete book (called a signature), which cannot be opened yet because of folds. Set it aside.
Repeat the previous step as many times as necessary to fold the whole stack of paper.
Bind the several signatures you got, maybe add a cover.
Voilà!
English: 2022-2023 (source ; imposed) ; 2022-2023 (source ; imposed).
French
2022-2023: Zone A (source ; imposed) ; Zone B (source ; imposed) ; Zone C (source ; imposed).
2023-2024: Zone A (source ; imposed) ; Zone B (source ; imposed) ; Zone C (source ; imposed).
2024-2025: Zone A (source ; imposed) ; Zone B (source ; imposed) ; Zone C (source ; imposed).
2025-2026: Zone A (source ; imposed) ; Zone B (source ; imposed) ; Zone C (source ; imposed).
Download and install¶
See the main project page for instructions, and changelog.
Usage¶
Note that scal only produce the LuaLaTeX code corresponding to the calendar. To get the pdf calendar, save the code as a .tex
file, or pipe the output through lualatex
:
scal FILE | lualatex
The list of built-in templates is returned by command:
scal templates list
Here are the main command line options for scal.
A year calendar producer.
usage: scal [-h] [--version] {generate,templates} ...
Named Arguments¶
- --version
Show version
Sub-commands¶
generate¶
Generate calendar.
scal generate [-h]
templates¶
Manage ‘scal’ templates.
scal templates [-h]
Configuration file¶
The YAML UTF8-encoded file given in argument contains the information about the calendar. Here is, for example, the file corresponding to a school year calendar.
calendar:
template: calendar.tex
start: 2025-09-01
end: 2026-07-04
weeks:
work: true
iso: true
variables:
# Configuration
language: french
papersize: a4paper
holidays:
# Holidays
2025-10-18 2025-11-01: Vacances de la Toussaint
2025-11-01: Toussaint
2025-11-11: 11 novembre
2025-12-20 2026-01-03: Vacances de Noël
2025-12-25: Jour de Noël
2026-01-01: 1er janvier
2026-02-07 2026-02-21: Vacances d'Hiver
2026-04-04 2026-04-18: Vacances de Printemps
2026-04-06: Lundi de Pâques
2026-05-01: 1er mai
2026-05-08: 8 mai
2026-05-14 2026-05-17: Pont de l'Ascension
2026-05-25: Lundi de Pentecôte
2026-07-04 2026-07-04: Début des Vacances d'Été
An annotated configuration file (with default values and examples) is available for each template. For instance, to get this configuration file for template weekly.tex, use:
scal templates config weekly.tex