C exercise series (INFO1/INFO2), written in Markdown and rendered to PDF with TeXSmith and the exam template.
series/: Markdown sources (series-*.md) with frontmatter config.series/common.yml: shared TeXSmith config.assets/: shared assets used by series.pelican/+pelicanconf.py: static site generation fordist/index.html.
Temporary build outputs:
build/: local build output (build/series/<id>/...).dist/: static distribution folder (PDFs + site).
uvfor Python environment and dependency management.texsmith+texsmith-template-examfor Markdown -> LaTeX -> PDF.pelicanfor static index page generation.makefor build orchestration.
uvmake(recommended)
make depsEquivalent command:
uv sync --extra devBuild everything (pset + solution for all series):
make allBuild one series (example series-20):
make series-20Outputs:
build/series/<id>/pset/pset.pdfbuild/series/<id>/solution/solution.pdf
make distThis command:
- Builds all series.
- Copies PDFs to
dist/. - Copies source Markdown files (
series-*.md) todist/. - Regenerates
dist/index.htmlusing Pelican.
make clean # remove build/
make mrproper # clean + remove dist/*.pdfDefault behavior uses latest GitHub revision of texsmith-template-exam from pyproject.toml.
To work in debug mode (editable local checkout, useful for Agent work):
- Clone
template-examnext to this repository:
git clone git@github.com:yves-chevallier/template-exam.git ../template-exam- Enable editable override:
make deps-dev-templateThis installs ../template-exam in editable mode into this repo's .venv, so local changes are picked up immediately.
- When finished, publish your changes in
template-exam, then reset this repo to pinned dependency behavior:
make deps-reset-templateTip: if your local checkout path differs, pass it explicitly:
make deps-dev-template TEMPLATE_EXAM_PATH=/path/to/template-examAfter pushing changes to template-exam:
- Update the
revunder[tool.uv.sources]inpyproject.toml. - Run
uv lock. - Commit
pyproject.tomlanduv.lockin this repository.