A Typst template for submissions to the AlgoTel and CoRes conferences, derived from the LaTeX class algotel.cls.
typst init @preview/algotel
cd algotel
typst compile main.typ#import "@preview/algotel:0.1.0": algotel, qed
#import "@preview/algotel:0.1.0": theorem, lemma, proposition, corollary, definition, remark, example, proof
#show: algotel.with(
title: [My Title],
authors: (
(name: "Author Name", affiliations: (1,)),
),
affiliations: (
(id: 1, name: "Lab, University, City, Country"),
),
abstract: [Abstract text.],
keywords: ("keyword1", "keyword2"),
lang: "fr", // "fr" or "en"
)The algotel() function accepts the following parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
title |
content | required | Document title |
short-title |
content | none |
Short title for running headers (uses title if omitted) |
authors |
array | required | List of author dictionaries (see below) |
affiliations |
array | () |
List of affiliation dictionaries |
abstract |
content | none |
Abstract text |
keywords |
array | () |
List of keyword strings |
lang |
string | "fr" |
Language: "fr" (French) or "en" (English) |
paper |
string | "a4" |
Paper size: "a4" or "us-letter" |
front-matter-spacing |
dictionary | auto |
Override front matter spacing (see below) |
(name: "Full Name", affiliations: (1, 2), thanks: "Optional acknowledgement")(id: 1, name: "Lab, University, City, Country")The front-matter-spacing parameter accepts a dictionary with any of these keys:
| Key | Default | Description |
|---|---|---|
after-title |
16pt |
Space after the title |
after-authors |
6pt |
Space after author names |
after-affiliations |
10pt |
Space after affiliations |
after-rule-top |
2pt |
Space after the top rule |
after-abstract |
4pt |
Space after the abstract |
after-keywords |
4pt |
Space after keywords |
after-rule-bottom |
10pt |
Space after the bottom rule |
The template provides theorem-like environments via lemmify. They share a single counter and automatically switch to French or English labels based on the lang parameter.
Numbered (italic body): theorem, lemma, proposition, corollary
Numbered (normal body): definition
Unnumbered (normal body): remark, example
Proof: proof -- ends with a QED symbol (#qed manually.
#theorem(name: "Optional name")[
Statement of the theorem.
]
#proof[
Proof of the theorem.
]The template uses a font fallback chain compatible with the LaTeX version:
| Usage | Primary | Fallback 1 | Fallback 2 |
|---|---|---|---|
| Body text | Libertinus Serif | TeX Gyre Termes | Liberation Serif |
| Headings | TeX Gyre Heros | Liberation Sans | -- |
| Code | TeX Gyre Cursor | Liberation Mono | -- |
Installation (Debian/Ubuntu):
apt install fonts-texgyre fonts-libertinus fonts-liberationFonts are also available from:
- TeX Gyre (GUST e-foundry)
- Libertinus
- Liberation
If preferred fonts are not installed, Typst falls back automatically. The Typst web app includes TeX Gyre fonts by default.
The repository includes two complete sample documents:
sample-algotel-fr.typ-- French examplesample-algotel-en.typ-- English example
Compile them with:
typst compile sample-algotel-fr.typ
typst compile sample-algotel-en.typThe template does not re-export external packages. Import them directly in your document:
#import "@preview/cetz:0.4.2"
#import "@preview/cetz-plot:0.1.3"
#import "@preview/fletcher:0.5.8"
#import "@preview/algo:0.3.6"- Update
algotel.typas needed - Bump
versionintypst.toml(e.g.,"0.1.0"→"0.2.0") - Update the version in the import of
template/main.typ - Regenerate
thumbnail.pngif the appearance changed:typst compile sample-algotel-fr.typ thumbnail.png --pages 1 --ppi 300
- Commit and push to
main - Create a tag and push it:
git tag v0.2.0 && git push origin v0.2.0 - The GitHub Actions workflow pushes a branch to the
typst/packagesfork - Open a PR from the fork branch to
typst/packages:main - Wait for review and merge by Typst maintainers
- Sync your fork of
typst/packages - Create
packages/preview/algotel/0.2.0/ - Copy into it:
algotel.typ,typst.toml,template/,thumbnail.png,README.md,LICENSE,algotel-logo-bw-transparent.png - Open a PR to
typst/packages:main
- Fork
typst/packageson GitHub - Create a fine-grained PAT with Contents permission on the fork
- Add the PAT as a secret named
REGISTRY_TOKENin this repository - Update
REGISTRY_FORKin.github/workflows/release.ymlto match your fork
MIT -- Fabien Mathieu, Quentin Bramas, Jean-Romain Luttringer