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.
.. contents:: Table of Contents
:depth: 1
:local:
Examples
--------
- One-page calendar of a school year
- English:
`2022-2023 `__ (`source `__) ;
`2023-2024 `__ (`source `__).
- French
- 2022-2023:
`Zone A `__ (`source `__);
`Zone B `__ (`source `__);
`Zone C `__ (`source `__).
- 2023-2024:
`Zone A `__ (`source `__);
`Zone B `__ (`source `__);
`Zone C `__ (`source `__).
- 2024-2025:
`Zone A `__ (`source `__);
`Zone B `__ (`source `__);
`Zone C `__ (`source `__).
- 2025-2026:
`Zone A `__ (`source `__);
`Zone B `__ (`source `__);
`Zone C `__ (`source `__).
- Weekly planners:
.. admonition:: How to print those planners?
:class: dropdown
#. 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 :file:`.tex` file, or pipe the output through ``lualatex``:
.. code-block:: bash
scal FILE | lualatex
The list of built-in templates is returned by command:
.. code-block:: bash
scal templates list
Here are the main command line options for `scal`.
.. argparse::
:module: scal.__main__
:func: argument_parser
:prog: scal
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.
.. literalinclude:: examples/calendar-fr-20252026-A.scl
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:
.. code-block:: bash
scal templates config weekly.tex
Indices and tables
------------------
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`