typst/typst

▲ 23 stars today★ 56,140⑂ 1,719

A markup-based typesetting system that is powerful and easy to learn.

About typst/typst

typst/typst is an open-source project on GitHub, mainly written in Rust. A markup-based typesetting system that is powerful and easy to learn. It currently holds 56,140 stars and 1,719 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).

Project Overview

Git Homed tracks it on the Today's Trending board, currently at rank #98 with 23 new stars today.

GitHub Repository Details

Repository typst/typst · default branch - · size 0 KB · watchers 0 · source: GitHub REST API and repository README

README

https://github.com/typst/typst/blob/HEAD/Typst

https://github.com/typst/typst/blob/HEAD/Documentation https://github.com/typst/typst/blob/HEAD/Typst App https://github.com/typst/typst/blob/HEAD/Discord Server https://github.com/typst/typst/blob/HEAD/Apache-2 License https://github.com/typst/typst/blob/HEAD/Jobs at Typst

Typst is a new markup-based typesetting system that is designed to be as powerful as LaTeX while being much easier to learn and use. Typst has:

This repository contains the Typst compiler and its CLI, which is everything you need to compile Typst documents locally. For the best writing experience, consider signing up to our [collaborative online editor][app] for free.

Example

A [gentle introduction][tutorial] to Typst is available in our documentation. However, if you want to see the power of Typst encapsulated in one image, here it is:

https://github.com/typst/typst/blob/HEAD/Example

Let's dissect what's going on:

the numbering of headings. By setting the page height to auto, it scales to fit the content. Set rules accommodate the most common configurations. If you need full control, you can also use [show rules][show] to completely redefine the appearance of an element. level heading, two create a subheading and so on. Typst has more lightweight markup like this; see the [syntax] reference for a full list. spaces around the contents of an equation, we can put it into a separate block. Multi-letter identifiers are interpreted as Typst definitions and functions unless put into quotes. This way, we don't need backslashes for things like floor and sqrt. And phi.alt applies the alt modifier to the phi to select a particular symbol variant. write a hash followed by an expression. We define two variables and a recursive function to compute the n-th fibonacci number. Then, we display the results in a center-aligned table. The table function takes its cells row-by-row. Therefore, we first pass the formulas $F_1$ to $F_8$ and then the computed fibonacci numbers. We apply the spreading operator (..) to both because they are arrays and we want to pass the arrays' items as individual arguments.

Text version of the code example.
  #set page(width: 10cm, height: auto)
  #set heading(numbering: "1.")

= Fibonacci sequence The Fibonacci sequence is defined through the recurrence relation $F_n = F_(n-1) + F_(n-2)$. It can also be expressed in _closed form:_

$ F_n = round(1 / sqrt(5) phi.alt^n), quad phi.alt = (1 + sqrt(5)) / 2 $

#let count = 8 #let nums = range(1, count + 1) #let fib(n) = ( if n <= 2 { 1 } else { fib(n - 1) + fib(n - 2) } )

The first #count numbers of the sequence are:

#align(center, table( columns: count, ..nums.map(n => $F_#n$), ..nums.map(n => str(fib(n))), ))

Installation

Typst's CLI is available from different sources: from the [releases page][releases]. Download the archive for your platform and place it in a directory that is in your PATH. To stay up to date with future releases, you can simply run typst update. versions in the package managers might lag behind the latest release. cargo install --locked typst-cli cargo install --git https://github.com/typst/typst --locked typst-cli nix run github:typst/typst-flake -- --version. docker run ghcr.io/typst/typst:latest --help.

Usage

Once you have installed Typst, you can use it like this:
# Creates file.pdf in working directory.
typst compile file.typ

Creates a PDF file at the desired path.

typst compile path/to/source.typ path/to/output.pdf

You can also watch source files and automatically recompile on changes. This is faster than compiling from scratch each time because Typst has incremental compilation.

# Watches source files and recompiles on changes.
typst watch file.typ

Typst further allows you to add custom font paths for your project and list all of the fonts it discovered:

# Adds additional directories to search for fonts.
typst compile --font-path path/to/fonts file.typ

Lists all of the discovered fonts in the system and the given directory.

typst fonts --font-path path/to/fonts

Or via environment variable (Linux syntax).

TYPST_FONT_PATHS=path/to/fonts typst fonts

For other CLI subcommands and options, see below:

# Prints available subcommands and options.
typst help

Prints detailed usage of a subcommand.

typst help watch

If you prefer an integrated IDE-like experience with autocompletion and instant preview, you can also check out our [free web app][app]. Alternatively, there is a community-created language server called Tinymist which is integrated into various editor extensions.

Community

The main places where the community gathers are our [Forum][forum] and our [Discord server][discord]. The Forum is a great place to ask questions, help others, and share cool things you created with Typst. The Discord server is more suitable for quicker questions, discussions about contributing, or just to chat. We'd be happy to see you there!

[Typst Universe][universe] is where the community shares templates and packages. If you want to share your own creations, you can submit them to our [package repository][packages].

If you had a bad experience in our community, please [reach out to us][contact].

Contributing

We love to see contributions from the community. If you experience bugs, feel free to open an issue. If you would like to implement a new feature or bug fix, please follow the steps outlined in the [contribution guide][contributing].

To build Typst yourself, first ensure that you have the [latest stable Rust][rust] installed. Then, clone this repository and build the CLI with the following commands:

git clone https://github.com/typst/typst
cd typst
cargo build --release

The optimized binary will be stored in target/release/.

Another good way to contribute is by [sharing packages][packages] with the community.

Pronunciation and Spelling

IPA: /taɪpst/. "Ty" like in Typesetting and "pst" like in Hipster. When writing about Typst, capitalize its name as a proper noun, with a capital "T".

Design Principles

All of Typst has been designed with three key goals in mind: Power, simplicity, and performance. We think it's time for a system that matches the power of LaTeX, is easy to learn and use, all while being fast enough to realize instant preview. To achieve these goals, we follow three core design principles: If you know how to do one thing in Typst, you should be able to transfer that knowledge to other things. If there are multiple ways to do the same thing, one of them should be at a different level of abstraction than the other. E.g. it's okay that = Introduction and #heading[Introduction] do the same thing because the former is just syntax sugar for the latter. There are two ways to make something flexible: Have a knob for everything or have a few knobs that you can combine in many ways. Typst is designed with the second way in mind. We provide systems that you can compose in ways we've never even thought of. TeX is also in the second category, but it's a bit low-level and therefore people use LaTeX instead. But there, we don't really have that much composability. Instead, there's a package for everything (\usepackage{knob}). All Typst language features must accommodate for incremental compilation. Luckily we have [comemo], a system for incremental compilation which does most of the hard work in the background.

Acknowledgements

We'd like to thank everyone who is supporting Typst's development, be it via [GitHub sponsors] or elsewhere. In particular, special thanks[^1] go to:

compiler engineer through the NGI Zero Core fund: Typst development from January through June 2023 via the Berlin Startup Scholarship generous one-time sponsorship

[^1]: This list only includes contributions for our open-source work that exceed or are expected to exceed €10K.

[docs]: https://typst.app/docs/ [app]: https://typst.app/ [discord]: https://discord.gg/2uDybryKPe [forum]: https://forum.typst.app/ [universe]: https://typst.app/universe/ [tutorial]: https://typst.app/docs/tutorial/ [show]: https://typst.app/docs/reference/styling/#show-rules [math]: https://typst.app/docs/reference/math/ [syntax]: https://typst.app/docs/reference/syntax/ [scripting]: https://typst.app/docs/reference/scripting/ [rust]: https://rustup.rs/ [releases]: https://github.com/typst/typst/releases/ [repology]: https://repology.org/project/typst/versions [contact]: https://typst.app/contact [architecture]: https://github.com/typst/typst/blob/main/docs/dev/architecture.md [contributing]: https://github.com/typst/typst/blob/main/CONTRIBUTING.md [packages]: https://github.com/typst/packages/ [comemo]: https://github.com/typst/comemo/ [snap]: https://snapcraft.io/typst [GitHub sponsors]: https://github.com/sponsors/typst/

GitHub Stars & Activity

56,140Stars
1,719Forks
0Open issues
RustLanguage

GitHub Popularity

GitHub stars56,140
Forks1,719
Open issues0
Primary languageRust
License-
Stars gained today23
Created-
Last pushed-

Trending History

Daily boardrank #98 · ▲ 23 stars

Related GitHub Projects

1

rust-unofficial / awesome-rust

Rust★ 59,449⑂ 3,626▲ 23 stars
2

xai-org / x-algorithm

Rust★ 33,290⑂ 5,405▲ 30 stars
3

atuinsh / atuin

Rust★ 31,755⑂ 971▲ 47 stars
4

CapSoftware / Cap

Rust★ 22,547⑂ 1,940▲ 103 stars
5

rui314 / mold

Rust★ 17,189⑂ 558▲ 44 stars
6

cloudflare / quiche

Rust★ 12,130⑂ 1,123▲ 264 stars
7

EpicGames / lore

Rust★ 8,698⑂ 434▲ 23 stars
8

akitaonrails / ai-memory

Rust★ 7,259⑂ 500▲ 96 stars

More Trending Repositories