faithful-acmart is a Typst port of the LaTeX acmart
document class. It covers every public acmart format and is tested against the
real LaTeX class, matching its fonts, page geometry, spacing, and top matter as
closely as Typst allows — while your source stays idiomatic Typst.
It also covers the rest of an ACM paper: captions, theorem environments, copyright blocks, and the ACM bibliography styles.
Getting started
Create a new paper from the template:
typst init @preview/faithful-acmart:0.1.0
Or import the package in an existing document:
#import "@preview/faithful-acmart:0.1.0": *
#show: acmart.with(
format: "acmsmall",
title: "Your Title",
journal: "JACM",
acm-volume: 37,
acm-number: 4,
acm-article: 111,
acm-year: 2018,
acm-month: 8,
doi: "XXXXXXX.XXXXXXX",
copyright: "acmlicensed",
copyright-year: 2018,
authors: (
(
name: "Ada Lovelace",
email: "ada@example.org",
corresponding: true,
affiliation: (
institution: "Analytical Engine Co.",
city: "London",
country: "UK",
),
),
),
abstract: [Your abstract.],
ccs: ((500, "Computing methodologies", "Massively parallel algorithms"),),
keywords: ("one", "two"),
)
= Introduction
Write normal Typst. Cite with @key and finish with a bibliography.
#bibliography("refs.bib")
Use the wildcard import (*). It brings acmart, the theorem environments,
cite, bibliography, and the textual citation helpers (cite-text, cite-year,
cite-author) into scope. A complete starter document is in
template/main.typ.
Fonts
ACM documents use Libertinus for text/math and Inconsolatazi4 for monospace. Typst packages cannot bundle fonts, so install or provide these families before compiling:
Libertinus SerifLibertinus SansLibertinus MathInconsolatazi4
On the command line, install the fonts system-wide or pass a font directory:
typst compile --font-path <font-folder> main.typ
In the Typst web app, upload the font files into the project. Libertinus is available
from the Libertinus releases;
Inconsolatazi4 ships with TeX Live’s inconsolata package. The project repository
also mirrors both families in fonts/.
Formats
Set the output style with format:
| Format | Use |
|---|---|
manuscript |
ACM manuscript layout |
acmsmall, acmlarge |
Single-column ACM journal layouts |
acmtog |
Two-column ACM TOG layout |
sigconf |
Standard ACM conference proceedings |
siggraph, sigchi |
Aliases of sigconf, matching acmart |
sigplan |
SIGPLAN proceedings |
sigchi-a |
Legacy landscape SIGCHI extended abstract |
acmengage |
ACM EngageCSEdu format |
acmcp |
ACM cover-page format (used by the Journal of Data Science) |
Common options
Most papers only need a subset of these:
| Option | Purpose |
|---|---|
title, subtitle |
Paper title and subtitle |
title-note, subtitle-note |
Footnotes attached to the title/subtitle |
authors |
Array of author dictionaries |
abstract, ccs, keywords |
Standard ACM front matter |
journal, acm-volume, acm-number, acm-article, acm-year, acm-month, doi |
Journal metadata |
conference, booktitle, isbn |
Proceedings metadata |
copyright, copyright-year, cc-type, cc-version |
Copyright and Creative Commons metadata |
anonymous, review, screen, nonacm, author-draft, submission-id |
Common acmart modes |
print-ccs, print-acm-reference, print-folios |
Top-matter/output toggles |
teaser, badges, received |
Teaser figure, artifact badges, and paper history |
language, translations |
Main language and translated top matter |
short-title, short-authors |
Running-head overrides |
font-size |
One of 8pt, 9pt, 10pt, 11pt, 12pt, or auto |
Author dictionaries accept name, orcid, email, note, corresponding, and
affiliation. An affiliation is a dictionary with fields such as institution,
city, state, and country; pass an array of affiliation dictionaries for multiple
affiliations.
CCS entries are (significance, area, concept): significance 500 or higher prints
bold, 300 or higher prints italic, and lower values print roman.
Supported copyright values include acmcopyright, acmlicensed,
rightsretained, usgov, usgovmixed, cagov, cagovmixed,
licensedusgovmixed, licensedcagov, licensedcagovmixed, othergov,
licensedothergov, iw3c2w3, iw3c2w3g, cc, and none. For copyright: "cc",
set cc-type to zero, by, by-sa, by-nd, by-nc, by-nc-sa, or
by-nc-nd.
For acmcp, provide acmcp-logo: image("logo.png"). The ACM journal logo is a
trademark and is not bundled.
Citations and references
The default bibliography backend is "bibtex", a pure-Typst implementation of
ACM’s ACM-Reference-Format.bst. Use normal Typst citation syntax:
Prior work includes @Cohen:1996:EAE and #cite(<Li:2008:PUC>, <Smith:2020>).
#cite-text(<Cohen:1996:EAE>) gives a textual citation.
#bibliography("refs.bib")
Choose a backend with bib-backend:
| Backend | Behavior |
|---|---|
"bibtex" |
Default; closest to LaTeX acmart with BibTeX |
"biblatex" |
ACM BibLaTeX renderer, including software artifacts |
"typst" |
Typst’s native bibliography() with the built-in ACM CSL style |
Set cite-style: "author-year" for author-year citations; otherwise citations are
numeric. With the bibtex and biblatex backends, a single bibliography file may be
relative ("refs.bib"); multiple files must use project-absolute paths such as
"/refs.bib".
Theorems and acknowledgments
The package exports theorem, lemma, corollary, proposition, conjecture,
definition, example, remark, and proof. Theorem-like environments share a
section-scoped counter:
#theorem(name: "Optional name")[
Every finite acyclic graph has a topological ordering.
]
#proof[
Remove a source vertex and continue by induction.
]
Use #acks[...] or #acknowledgments[...] for the unnumbered acknowledgments
section. It is suppressed automatically in anonymous mode.
Known differences from LaTeX
Some differences come from Typst and LaTeX being different layout engines:
- Typst has no vertical justification, so pages are ragged-bottom: it can’t
reproduce LaTeX’s bottom-of-page fill (
\flushbottomin the two-column formats, stretchable bottom glue in the single-column ones) or balance the final two-column page. - Line and page breaks can differ from LaTeX on dense pages.
sigchi-adoes not move footnotes into the margin.- The
"typst"bibliography backend is convenient, but less faithful than the default"bibtex"backend. - PDF accessibility tags are emitted only with Typst 0.14+; visual output works from Typst 0.12.
For the detailed design rationale and validation notes, see DESIGN.md.
Requirements
- Typst 0.12 or newer.
- The fonts listed in Fonts.
License and trademarks
The package is licensed MIT; the template/ directory is MIT-0 so papers created
from typst init carry no attribution requirement. See LICENSE.
Creative Commons badges in src/assets/cc/ are Creative Commons trademarks, not
part of the MIT license; see src/assets/cc/README.md.
The ACM journal logo is not bundled; provide it yourself for acmcp.
AI assistance
This package was developed with the help of AI coding assistants (Claude Code and OpenAI Codex) under close human review. What keeps it faithful is not just that review but also the test suite: every format is diffed against real LaTeX acmart output.
Contributing
Development setup, validation, and repository internals are documented in
CONTRIBUTING.md.