Packages for Typst.

Overview

Typst Packages

An experimental package repository for Typst. A searchable list of all packages that were submitted here is available in the official documentation.

Package format

A package is a collection of Typst files and assets that can be imported as a unit. A typst.toml manifest with metadata is required at the root of a package. An example manifest could look like this:

[package]
name = "example"
version = "0.1.0"
entrypoint = "lib.typ"
authors = ["The Typst Project Developers"]
license = "Unlicense"
description = "An example package."

Required by the compiler:

  • name: The package's identifier in its namespace.
  • version: The package's version as a full major-minor-patch triple. Package versioning should follow SemVer.
  • entrypoint: The path to the main Typst file that is evaluated when the package is imported.

Required for submissions to this repository:

  • authors: A list of the package's authors.
  • license: The package's license. Must contain a valid SPDX-2 expression describing one or multiple OSI-approved licenses.
  • description: A short description of the package.

Optional:

  • repository: A link to the repository where this package is developed.

Packages always live in folders named as {name}-{version}. The name and version in the folder name and manifest must match. Paths in a package are local to that package. Absolute paths start in the package root while relative paths are relative to the file they are used in.

Published packages

This repository contains a collection of published packages. Due to its early and experimental nature, all packages in this repository are scoped in a preview namespace. A package that is stored in packages/preview/{name}-{version} in this repository will become availabe in Typst as #import "@preview/{name}:{version}". You must always specify the full package version.

Submission guidelines

To submit a package, simply make a pull request with the package to this repository. There are a few requirements for getting a package published, which are detailed below:

  • Naming: Names should not include the word "typst" (as it is redundant). They should also not be merely descriptive to create level grounds for everybody (e.g. not just slides).
  • Functionality: Packages should conceivably be useful to other users and should expose their capabilities in a reasonable fashion.
  • Documentation: Packages must contain a README.md file documenting (at least briefly) what the package does and all definitions intended for usage by downstream users.
  • License: Packages must be licensed under the terms of an OSI-approved license. In addition to specifying the license in the TOML manifest, a package must either contain a LICENSE file or link to one in its README.md.
  • Size: Packages should not contain large files or a large number of files. This will be judged on a case-by-case basis, but if it needs more than ten files, it should be well-motivated.
  • Security: Packages must not attempt to exploit the compiler or packaging implementation, in particular not to exfiltrate user data.
  • Safety: Names and package contents must be safe for work.

This list may be extended over time as improvements/issues to the process are discovered. Given a good reason, we reserve the right to reject any package submission.

Once submitted, a package will not be changed or removed without good reason to prevent breakage for downstream consumers. By submitting a package, you agree that it is here to stay. If you discover a bug or issue, you can of course submit a new version of your package.

Note: Please do not submit templates as packages just yet. We plan to build infrastructure around this so that they can show up in the web app's template gallery and be used to scaffold a project through the CLI. Stay tuned!

Downloads

The Typst compiler downloads packages from the preview namespace on-demand. Once used, they are cached in {cache-dir}/typst/packages/preview where {cache-dir} is

  • $XDG_CACHE_HOME or ~/.cache on Linux
  • ~/Library/Caches on macOS
  • %LOCALAPPDATA% on Windows

Importing a cached package does not result in a network access.

Local packages

Want to install a package locally on your system without publishing it or experiment with it before publishing? You can store packages in {data-dir}/typst/packages/{namespace}/{name}-{version} to make them available locally on your system. Here, {data-dir} is

  • $XDG_DATA_HOME or ~/.local/share on Linux
  • ~/Library/Application Support on macOS
  • %APPDATA% on Windows

Packages in the data directory have precedence over ones in the cache directory. While you can create arbitrary namespaces with folders, a good namespace for system packages is local:

  • Store a package in ~/.local/share/typst/packages/local/mypkg-1.0.0
  • Import from it with #import "@local/mypkg:1.0.0": *

Note that future iterations of Typst's package management may change/break this local setup.

License

The infrastructure around the package repository is licensed under the terms of the Apache-2.0 license. Packages in packages/ are licensed under their respective license.

Comments
  • rubby:0.8.0

    rubby:0.8.0

    I am submitting

    • [x] a new package
    • [ ] an update for a package

    I have read and followed the submission guidelines and, in particular, I

    • [x] selected a name in conformance with the guidelines
    • [x] added a typst.toml file with all required keys
    • [x] added a README.md with documentation for my package
    • [x] have chosen a license and added a LICENSE file or linked one in my README.md
    • [x] ensured that my submission does not infringe upon the rights of a third party
    • [x] tested my package locally on my system and it worked
    • [x] named this PR as name:version of the submitted package
    • [x] agree that my package will not be removed without good reason

    Description: Library provides with function to create ruby (furigana) next to base text. Since there is no built-in functionality for ruby in Typst (yet) this package could be very helpful until official support arrives.

    new-package name-approved 
    opened by Andrew15-5 7
  • splash:0.3.0

    splash:0.3.0

    I am submitting

    • [x] a new package
    • [ ] an update for a package

    I have read and followed the submission guidelines and, in particular, I

    • [x] selected a name in conformance with the guidelines
    • [x] added a typst.toml file with all required keys
    • [x] added a README.md with documentation for my package
    • [x] have chosen a license and added a LICENSE file or linked one in my README.md
    • [x] ensured that my submission does not infringe upon the rights of a third party
    • [x] tested my package locally on my system and it worked
    • [x] named this PR as name:version of the submitted package
    • [x] agree that my package will not be removed without good reason

    Description: This library provides different color palettes with human-readable names in Typst dictionaries.

    new-package name-approved 
    opened by kaarmu 5
  • mathtext:0.0.1

    mathtext:0.0.1

    I am submitting

    • [x] a new package
    • [ ] an update for a package

    I have read and followed the submission guidelines and, in particular, I

    • [x] selected a name in conformance with the guidelines
    • [x] added a typst.toml file with all required keys
    • [x] added a README.md with documentation for my package
    • [x] have chosen a license and added a LICENSE file or linked one in my README.md
    • [x] ensured that my submission does not infringe upon the rights of a third party
    • [x] tested my package locally on my system and it worked (see https://typst.app/project/rKb66eanDkWAXrJYvP0mtF)
    • [x] named this PR as name:version of the submitted package
    • [x] agree that my package will not be removed without good reason

    Description: Explain what the package does and why it's useful.

    new-package functionality-rejected 
    opened by chengluyu 4
  • plotst:0.1.0

    plotst:0.1.0

    I am submitting

    • [x] a new package
    • [ ] an update for a package

    I have read and followed the submission guidelines and, in particular, I

    • [x] selected a name in conformance with the guidelines
    • [x] added a typst.toml file with all required keys
    • [x] added a README.md with documentation for my package
    • [x] have chosen a license and added a LICENSE file or linked one in my README.md
    • [x] ensured that my submission does not infringe upon the rights of a third party
    • [x] tested my package locally on my system and it worked
    • [x] named this PR as name:version of the submitted package
    • [x] agree that my package will not be removed without good reason

    Description: Plotst is a package people can use to create a few types of different plots and graphs. It can be useful to display data in a straight forward way.

    It supports:

    • Scatter plots
    • Graph charts
    • Histograms
    • Bar charts
    • Pie charts
    • Overlaying plots/charts
    new-package name-approved 
    opened by Pegacraft 3
  • gloss-awe:0.0.3

    gloss-awe:0.0.3

    I am submitting

    • [x] a new package
    • [ ] an update for a package

    I have read and followed the submission guidelines and, in particular, I

    • [x] selected a name in conformance with the guidelines
    • [x] added a typst.toml file with all required keys
    • [x] added a README.md with documentation for my package
    • [x] have chosen a license and added a LICENSE file or linked one in my README.md
    • [x] ensured that my submission does not infringe upon the rights of a third party
    • [x] tested my package locally on my system and it worked
    • [x] named this PR as name:version of the submitted package
    • [x] agree that my package will not be removed without good reason

    Description: This typst component creates a glossary page from a given pool of potential glossary entries using only those entries, that are marked with the gls or gls-add functions in the document. See the README.md for examples and usage.

    new-package name-approved 
    opened by RolfBremer 3
  • colorbox:0.1.0

    colorbox:0.1.0

    I am submitting

    • [X] a new package
    • [ ] an update for a package

    I have read and followed the submission guidelines and, in particular, I

    • [X] selected a name in conformance with the guidelines
    • [X] added a typst.toml file with all required keys
    • [X] added a README.md with documentation for my package
    • [X] have chosen a license and added a LICENSE file or linked one in my README.md
    • [X] ensured that my submission does not infringe upon the rights of a third party
    • [X] tested my package locally on my system and it worked
    • [X] named this PR as name:version of the submitted package
    • [X] agree that my package will not be removed without good reason

    Description: This component allows the user to create colorful and customizable boxes (like the ones that can be created in LaTeX using the tcolorbox library).

    new-package name-rejected 
    opened by Pablo-Gonzalez-Calderon 2
  • quill:0.1.0

    quill:0.1.0

    I am submitting

    • [x] a new package
    • [ ] an update for a package

    I have read and followed the submission guidelines and, in particular, I

    • [x] selected a name in conformance with the guidelines
    • [x] added a typst.toml file with all required keys
    • [x] added a README.md with documentation for my package
    • [x] have chosen a license and added a LICENSE file or linked one in my README.md
    • [x] ensured that my submission does not infringe upon the rights of a third party
    • [x] tested my package locally on my system and it worked
    • [x] named this PR as name:version of the submitted package
    • [x] agree that my package will not be removed without good reason

    Description: Quill is a package for creating quantum circuit diagrams in Typst doing a similar job as the much-used LaTeX packages qcircuit and quantikz.

    new-package name-approved 
    opened by Mc-Zen 2
  • fontawesome:0.1.0

    fontawesome:0.1.0

    I am submitting

    • [x] a new package
    • [ ] an update for a package

    I have read and followed the submission guidelines and, in particular, I

    • [x] selected a name in conformance with the guidelines
    • [x] added a typst.toml file with all required keys
    • [x] added a README.md with documentation for my package
    • [x] have chosen a license and added a LICENSE file or linked one in my README.md
    • [x] ensured that my submission does not infringe upon the rights of a third party
    • [x] tested my package locally on my system and it worked
    • [x] named this PR as name:version of the submitted package
    • [x] agree that my package will not be removed without good reason

    Description: This package provides functions to use icons of fontawesome conveniently by leveraging the desktop fonts. One can simply add icons via their name once the font is installed.

    new-package name-approved 
    opened by duskmoon314 1
  • ansi-render:0.1.0

    ansi-render:0.1.0

    I am submitting

    • [x] a new package
    • [ ] an update for a package

    I have read and followed the submission guidelines and, in particular, I

    • [x] selected a name in conformance with the guidelines
    • [x] added a typst.toml file with all required keys
    • [x] added a README.md with documentation for my package
    • [x] have chosen a license and added a LICENSE file or linked one in my README.md
    • [x] ensured that my submission does not infringe upon the rights of a third party
    • [x] tested my package locally on my system and it worked
    • [x] named this PR as name:version of the submitted package
    • [x] agree that my package will not be removed without good reason

    Description: provides a simple way to render text with ANSI escape sequences in typst

    new-package name-approved 
    opened by 8LWXpg 1
  • showybox:0.1.1

    showybox:0.1.1

    I am submitting

    • [X] a new package
    • [ ] an update for a package

    I have read and followed the submission guidelines and, in particular, I

    • [X] selected a name in conformance with the guidelines
    • [X] added a typst.toml file with all required keys
    • [X] added a README.md with documentation for my package
    • [X] have chosen a license and added a LICENSE file or linked one in my README.md
    • [X] ensured that my submission does not infringe upon the rights of a third party
    • [X] tested my package locally on my system and it worked
    • [X] named this PR as name:version of the submitted package
    • [X] agree that my package will not be removed without good reason

    Description: This component allows the user to create colorful and customizable boxes (like the ones that can be created in LaTeX using the tcolorbox library).

    Note: This package was previously named colorbox in a discarded PR. A bug was fixed and the name was changed to "showybox" for this new PR

    new-package name-approved 
    opened by Pablo-Gonzalez-Calderon 1
  • ascii-ipa:1.0.0

    ascii-ipa:1.0.0

    I am submitting

    • [x] a new package
    • [ ] an update for a package

    I have read and followed the submission guidelines and, in particular, I

    • [x] selected a name in conformance with the guidelines
    • [x] added a typst.toml file with all required keys
    • [x] added a README.md with documentation for my package
    • [x] have chosen a license and added a LICENSE file or linked one in my README.md
    • [x] ensured that my submission does not infringe upon the rights of a third party
    • [x] tested my package locally on my system and it worked
    • [x] named this PR as name:version of the submitted package
    • [x] agree that my package will not be removed without good reason

    Description: ascii-ipa allows you to easily convert different ASCII representations of the International Phonetic Alphabet (IPA) to and from the IPA. It also offers some minor utilities to make phonetic transcriptions easier to use overall.

    new-package name-approved 
    opened by imatpot 1
  • big-todo:0.2.0

    big-todo:0.2.0

    Add the ability to create inline TODOs in Big-TODO package.

    I am submitting

    • [ ] a new package
    • [x] an update for a package

    I have read and followed the submission guidelines and, in particular, I

    • [x] selected a name in conformance with the guidelines
    • [x] added a typst.toml file with all required keys
    • [x] added a README.md with documentation for my package
    • [x] have chosen a license and added a LICENSE file or linked one in my README.md
    • [x] ensured that my submission does not infringe upon the rights of a third party
    • [x] tested my package locally on my system and it worked
    • [x] named this PR as name:version of the submitted package
    • [x] agree that my package will not be removed without good reason

    Description: It adds a function to create big red TODO messages and an accompanying outline. The sizes of everything are configurable. Now with fixed spacing and an inline option

    update 
    opened by Sett17 0
  • acrostiche:0.1.0

    acrostiche:0.1.0

    I am submitting

    • [x] a new package
    • [ ] an update for a package

    I have read and followed the submission guidelines and, in particular, I

    • [x] selected a name in conformance with the guidelines
    • [x] added a typst.toml file with all required keys
    • [x] added a README.md with documentation for my package
    • [x] have chosen a license and added a LICENSE file or linked one in my README.md
    • [x] ensured that my submission does not infringe upon the rights of a third party
    • [x] tested my package locally on my system and it worked
    • [x] named this PR as name:version of the submitted package
    • [x] agree that my package will not be removed without good reason

    The Acrostiche package helps to deal with acronyms and their definition. More specifically, it helps ensure that the first encounter of the acronym is defined. Helper functions to get plural acronyms, reset the definitions, or print an index of acronyms are also provided.

    new-package name-approved 
    opened by Grisely 2
  • Proposal to rename this repository to something more identifiable

    Proposal to rename this repository to something more identifiable

    Proposal

    I am proposing to rename this repository to something more identifiable, e.g. typkgs, instead of packages which is what we have right now. This is a very common pattern with repositories like crates.io, pypi, and npm

    Motivation

    • This will give it a shorter and canonical name to refer to: typkgs vs. typst package repository
    • Open up possibilities for alternative package repositories. If alternative package repositories or packages without repositories were to be implemented. Renaming this will make it less ambiguous and reduce the potential confusion.
    • Third party tooling: This will make naming third party tools that interact specifically with this repository easier.

    Drawbacks

    • This is a rename and people will need to adapt to the changes. The impact is minimal if we do this early, since GitHub will be able to handle the redirects.
    • Opportunity for bike shedding: Naming is hard, and people will have different opinions. This is not much of an issue for something generic like packages.
    opened by figsoda 2
Owner
Typst
Compose papers faster: Focus on your text and let Typst take care of layout and formatting.
Typst
run Typst in JavaScriptWorld.

Typst.ts Typst.ts allows you to independently run the Typst compiler and exporter (renderer) in your browser. You can: locally run the compilation via

null 9 Apr 18, 2023
Shell Escape for Typst typesetting system. Linux Only.

Shell Escape for Typst This is a simple shell escape for Typst. It allows you to run shell commands directly from Typst compiler. That said, it does n

Nikolay Stepanov 4 Jun 7, 2023
An mdBook backend to output Typst markup, pdf, png, or svg

mdbook-typst mdbook-typst is a backend for mdBook. The backend converts the book to Typst markup and can output any format Typst can (currently pdf, p

Christian Legnitto 18 Dec 16, 2023
LaTeX support for Typst, powered by Rust and WASM.

MiTeX LaTeX support for Typst, powered by Rust and WASM. MiTeX processes LaTeX code into an abstract syntax tree (AST). Then it transforms the AST int

null 58 Jan 1, 2024
A tool to compare how Typst documents would look using different fonts or font variants.

typst-font-compare A tool to compare how Typst documents would look using different fonts or font variants. Installation cargo install --path . Usage

null 3 Feb 15, 2024
Check the reproducibility status of your Arch Linux packages (read-only mirror)

arch-repro-status A CLI tool for querying the reproducibility status of the Arch Linux packages using data from a rebuilderd instance such as reproduc

Arch Linux 12 Nov 16, 2022
Search PyPI for packages from the command line.

PPS -- Python Package Index Search Search the PyPI for packages by name, which was done by pip search in the past. This was heavily inspired by pip_se

null 5 Nov 2, 2021
A Rust CLI to provide last publish dates for packages in a package-lock.json file

NPM Package Age A Rust CLI which if you provide a npm lockfile (package-lock.json to start), it will give you a listing of all of the packages & the l

Benjamin Lannon 1 Feb 4, 2022
Interface definition generator and standard for Move packages.

Move IDL Interface definition generator and standard for Move packages. Documentation is currently extremely sparse but will be improved in the near f

The Moving Company 10 Aug 25, 2022
Readme generator for Move packages.

Move Readme Readme generator for Move packages. Documentation is currently extremely sparse but will be improved in the near future. Setup Install the

The Moving Company 2 Jul 31, 2022
A simple gtk4/libadwaita software center to easily install and manage nix packages

Nix Software Center A graphical app store for Nix built with libadwaita, GTK4, and Relm4. Heavily inspired by GNOME Software. Features Install package

Victor Fuentes 169 Dec 30, 2022
Generate Nix packages from URLs

Generate Nix packages from URLs with hash prefetching, dependency inference, license detection, and more

Nix community projects 130 Feb 5, 2023
Fast KubeJS script manager. Includes version control and compatibility with KJSPKG packages.

CarbonJS A KubeJS script manager Features ?? Super fast ⚙️ Version control ?? Constantly new scripts being added ✅ Easy to use ?? Compatibility with K

Krzysztof Poręba 3 May 9, 2023
Convert your .NET dependencies to the Directory.Packages.props format

directory-packages-props-converter Converts your projects to use Central Package Management. <PackageReference> dependencies have their Version remove

Jeroen Vannevel 18 Aug 7, 2023
Scan the symbols of all ELF binaries in all Arch Linux packages for usage of malloc_usable_size

Scan the symbols of all ELF binaries in all Arch Linux packages for usage of malloc_usable_size (-D_FORTIFY_SOURCE=3 compatibility)

null 3 Sep 9, 2023
Manage your dotfiles and packages with ease. Define your $HOME as Code 💻 🚀 ✨

EnvHub is a simple tool to manage dotfiles and packages accross multiple machines. Written in Rust, internally it uses nix/homebrew/pkgx/devbox to man

Tsiry Sandratraina 8 Oct 27, 2023
Transpile CommonMark Markdown to Typst, from within Typst!

#set document(title: "cmarker.typ") #set page(numbering: "1", number-align: center) #set text(lang: "en") #align(center, text(weight: 700, 1.75em)[cma

Sabrina Jewson 6 Oct 28, 2023
Easy c̵̰͠r̵̛̠ö̴̪s̶̩̒s̵̭̀-t̶̲͝h̶̯̚r̵̺͐e̷̖̽ḁ̴̍d̶̖̔ ȓ̵͙ė̶͎ḟ̴͙e̸̖͛r̶̖͗ë̶̱́ṉ̵̒ĉ̷̥e̷͚̍ s̷̹͌h̷̲̉a̵̭͋r̷̫̊ḭ̵̊n̷̬͂g̵̦̃ f̶̻̊ơ̵̜ṟ̸̈́ R̵̞̋ù̵̺s̷̖̅ţ̸͗!̸̼͋

Rust S̵̓i̸̓n̵̉ I̴n̴f̶e̸r̵n̷a̴l mutability! Howdy, friendly Rust developer! Ever had a value get m̵̯̅ð̶͊v̴̮̾ê̴̼͘d away right under your nose just when

null 294 Dec 23, 2022
Packages for Typst.

Typst Packages An experimental package repository for Typst. A searchable list of all packages that were submitted here is available in the official d

Typst 91 Jul 4, 2023
A brand-new language server for Typst, plus a VS Code extension

Typst LSP A brand-new language server for Typst. Features Syntax highlighting, error reporting, code completion, and function signature help Compiles

Nathan Varner 414 Apr 17, 2023