Skip to main content

deckz

CI Status CD Status Test Coverage PyPI Project

deckz is a tool to manage a large number of Beamer decks, shared by several people, with slides ("sections") shared across decks. It is not meant to be usable out of the box by people who stumble upon this repository: it enforces strong conventions on the layout of the repository it operates on. Please open an issue if you want more details or want to discuss this approach.

Installation

With pip:

pip install deckz

Shell completion

Run deckz --help and look for the --install-completion / --show-completion flags to set up completion for your shell.

Repository layout

deckz expects to run inside a git repository organized like this:

root (git repository)
├── deckz.yml
├── variables.yml
├── templates
│   └── jinja2
│       └── main.tex
├── shared
│   ├── img
│   ├── code
│   ├── latex
│   │   └── some-section
│   │       ├── some-section.yml
│   │       ├── intro.tex
│   │       └── advanced.tex
│   ├── tikz
│   ├── plt
│   └── pltly
├── company1
│   ├── variables.yml
│   └── deck1
│       ├── deck.yml
│       ├── variables.yml
│       └── latex
└── company2
    └── deck2
        ├── deck.yml
        └── latex
  • shared: everything shared across decks: images and code snippets (img, code), reusable LaTeX sections (latex), and generated standalone figures (tikz, plt for matplotlib, pltly for plotly).
  • templates/jinja2/main.tex: the Jinja2 template used to render every deck's main .tex file.
  • Each deck is a directory containing a deck.yml (its definition) and optionally a latex directory for files local to that deck.
  • variables.yml files can be placed at any level of the directory hierarchy between the git root and a deck to avoid repeating values (e.g. one per client/company, shared by all of that client's decks).

Configuration

deckz.yml

At the root of the repository, deckz.yml holds settings, not content, e.g.:

build_command:
  - latexmk
  - -pdflatex=xelatex -shell-escape -interaction=nonstopmode %O %S
  - -dvi-
  - -ps-
  - -pdf

deckz.yml files are merged, in order, from the git root, from the user's config directory (XDG-compliant, e.g. $HOME/.config/deckz/deckz.yml on GNU/Linux), and from the current directory (and its ancestors up to the git root). Run deckz print-settings to inspect the resolved result.

variables.yml

variables.yml files hold the values injected into the Jinja2 templates, merged the same way (git root → user config directory → current directory and its ancestors), so a value set closer to a deck overrides one set higher up. Run deckz print-variables to inspect the resolved result for the current deck.

Example:

company_name: Company
company_logo: img/logo.png
company_logo_height: 1cm
deck_title: Machine Learning and COVID-19
presentation_size: 10pt

Each snake_case key becomes a \CamelCase LaTeX command (e.g. company_name\CompanyName) usable from templates/jinja2/main.tex and from any included file.

deck.yml

Defines a deck's parts and, for each part, the sections and files it includes:

name: ABC
parts:
  - name: p1
    title: Part 1
    sections:
      - $first-section@standard
      - about
  - name: p2
    title: Part 2
    sections:
      - $first-section@light

Includes can point to a file (path/to/file) or to a shared section with a given flavor ($path/to/section@flavor); either form can be given a custom title with path: My title / $path@flavor: My title.

Shared sections

A shared section lives under shared/latex (or a deck's local latex directory) and has a sibling .yml file describing its flavors, e.g. shared/latex/first-section/first-section.yml:

title: First section
default_titles:
  intro: Introduction
  advanced: Advanced
flavors:
  - name: standard
    includes:
      - intro
      - advanced
  - name: light
    includes:
      - intro

Usage

Run deckz --help for the full list of commands, or deckz <command> --help for a specific command. The main ones:

  • deckz run [PARTS]...: compile the deck in the current directory (optionally restricted to some parts).
  • deckz check-all: compile every shared section standalone, to catch errors before they show up in a real deck.
  • deckz watch deck / deckz watch section SECTION FLAVOR: recompile on file changes.
  • deckz tree: show the resolved tree of sections and files for the current deck.
  • deckz print-settings / deckz print-variables: print the resolved settings/variables for the current directory.
  • deckz deps [SECTION] [FLAVOR]: show shared sections/flavors usage across the repository, including unused ones.
  • deckz search-sections KEYWORDS...: search shared sections by title or frame title.
  • deckz section-flavors SECTION: list a section's flavor names.
  • deckz rename-flavor SECTION OLD NEW: rename a flavor and rewrite all its usages.
  • deckz merge-flavors: deduplicate section flavors that are identical up to their name.
  • deckz asset-search ASSET / deckz asset-deps: find where an asset is used, or find assets missing license metadata.
  • deckz clean / deckz clean-all / deckz clean-latex: remove build directories, or unused shared/local LaTeX files.
  • deckz upgrade: migrate a repository from older deckz conventions.
  • deckz i18n section-en-leak / deckz i18n section-flavor-diff / deckz i18n section-pair / deckz i18n deck-pair: help keep fr/en translations of decks and shared sections in sync.
  • deckz upload: upload built PDFs to Google Drive.
  • deckz extras issue TITLE [BODY]: create a GitHub issue.
  • deckz extras random REASON: roll a dice and email the result (handy for arbitrary decision-making, e.g. picking who does a task).

Documentation

A partial code reference, generated from the docstrings, is published via mkdocs (see mkdocs.yml and the docs directory).

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deckz-25.4.0.tar.gz (59.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

deckz-25.4.0-py3-none-any.whl (83.2 kB view details)

Uploaded Python 3

File details

Details for the file deckz-25.4.0.tar.gz.

File metadata

  • Download URL: deckz-25.4.0.tar.gz
  • Upload date:
  • Size: 59.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for deckz-25.4.0.tar.gz
Algorithm Hash digest
SHA256 619e661c7551db8d62b5e318f2dc1de87b8a1a36f03066a2e9949678ec4dc3ac
MD5 8001cc9186631365225699d8a65759a5
BLAKE2b-256 f981afa81a12d92b01445b24767e4b0ad05624a0cfb51ade2e94f828fe2cc4b5

See more details on using hashes here.

File details

Details for the file deckz-25.4.0-py3-none-any.whl.

File metadata

  • Download URL: deckz-25.4.0-py3-none-any.whl
  • Upload date:
  • Size: 83.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for deckz-25.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d1ac6d00504514ea48b6233ae9a1b9e3e512b52e68645b1eb0e4101e546a355f
MD5 6e0f3ced4ad07733d90cc1c1f0c6bf77
BLAKE2b-256 bec6f769b74fd29e461428fc92a51050739309802906785b91221c5f7a876301

See more details on using hashes here.

Release history Release notifications | RSS feed

25.6.0

2 files

25.5.0

2 files

This release

25.4.0 This release

2 files

25.3.0

2 files

25.2.0

2 files

25.1.0

2 files

25.0.1

2 files

25.0.0

2 files

24.3.3

2 files

24.3.2

2 files

24.3.1

2 files

24.3.0

2 files

24.2.0

2 files

24.1.3

2 files

24.1.2

2 files

24.1.1

2 files

24.1.0

2 files

24.0.1

2 files

24.0.0

2 files

23.0.0

2 files

22.0.4

2 files

22.0.3

2 files

22.0.2

2 files

22.0.1

2 files

22.0.0

2 files

20.3.1

2 files

20.3.0

2 files

20.2.0

2 files

20.1.0

2 files

20.0.0

2 files

19.0.1

2 files

19.0.0

2 files

18.2.0

2 files

18.1.5

2 files

18.1.4

2 files

18.1.3

2 files

18.1.2

2 files

18.1.1

2 files

18.1.0

2 files

18.0.1

2 files

18.0.0

2 files

17.4.0

2 files

17.3.0

2 files

17.2.0

2 files

17.1.0

2 files

17.0.0

2 files

16.2.0

2 files

16.1.0

2 files

16.0.0

2 files

15.0.2

2 files

15.0.1

2 files

15.0.0

2 files

14.2.0

2 files

14.1.1

2 files

14.1.0

2 files

14.0.1

2 files

14.0.0

2 files

13.6.0

2 files

13.5.0

2 files

13.4.1

2 files

13.4.0

2 files

13.3.0

2 files

13.2.1

2 files

13.2.0

2 files

13.1.0

2 files

13.0.0

2 files

12.3.0

2 files

12.2.0

2 files

12.1.2

2 files

12.1.1

2 files

12.1.0

2 files

12.0.1

2 files

12.0.0

2 files

11.1.2

2 files

11.1.1

2 files

11.1.0

2 files

11.0.0

2 files

10.5.0

2 files

10.4.2

2 files

10.4.1

2 files

10.4.0

2 files

10.3.0

2 files

10.2.0

2 files

10.1.0

2 files

10.0.0

2 files

9.5.0

2 files

9.4.0

2 files

9.3.0

2 files

9.2.0

2 files

9.1.0

2 files

9.0.0

2 files

8.1.0

2 files

8.0.0

2 files

7.2.0

2 files

7.1.0

2 files

7.0.0

2 files

6.1.0

2 files

6.0.0

2 files

5.0.0

2 files

4.0.2

2 files

4.0.1

2 files

4.0.0

2 files

3.6.0

2 files

3.5.0

2 files

3.4.0

2 files

3.3.0

2 files

3.2.1

2 files

3.2.0

2 files

3.1.3

2 files

3.1.2

2 files

3.1.1

2 files

3.1.0

2 files

3.0.0

2 files

2.6.0

2 files

2.5.0

2 files

2.4.1

2 files

2.4.0

2 files

2.3.0

2 files

2.2.2

2 files

2.2.1

2 files

2.2.0

2 files

2.1.1

2 files

2.1.0

2 files

2.0.0

2 files

1.0.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page