Giter Club home page Giter Club logo

typst's Introduction

Typst

Documentation Typst App Discord Server Apache-2 License 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:

  • Built-in markup for the most common formatting tasks
  • Flexible functions for everything else
  • A tightly integrated scripting system
  • Math typesetting, bibliography management, and more
  • Fast compile times thanks to incremental compilation
  • Friendly error messages in case something goes wrong

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 for free. It is currently in public beta.

Example

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

Example

Let's dissect what's going on:

  • We use set rules to configure element properties like the size of pages or 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 to completely redefine the appearance of an element.

  • We insert a heading with the = Heading syntax. One equals sign creates a top level heading, two create a subheading and so on. Typst has more lightweight markup like this, see the syntax reference for a full list.

  • Mathematical equations are enclosed in dollar signs. By adding extra 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.

  • Now, we get to some scripting. To input code into a Typst document, we can 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:

  • You can get sources and pre-built binaries for the latest release of Typst from the releases page. 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.

  • You can install Typst through different package managers. Note that the versions in the package managers might lag behind the latest release.

    • Linux: View Typst on Repology
    • macOS: brew install typst
    • Windows: winget install --id Typst.Typst
  • If you have a Rust toolchain installed, you can also install the latest development version with cargo install --git https://github.com/typst/typst --locked typst-cli. Note that this will be a "nightly" version that may be broken or not yet properly documented.

  • Nix users can use the typst package with nix-shell -p typst or build and run the bleeding edge version with nix run github:typst/typst -- --version.

  • Docker users can run a prebuilt image with docker run -it ghcr.io/typst/typst:latest.

Usage

Once you have installed Typst, you can use it like this:

# Creates `file.pdf` in working directory.
typst compile file.typ

# Creates 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 the Typst web app, which is currently in public beta.

Community

The main place where the community gathers is our Discord server. Feel free to join there to ask questions, help out others, share cool things you created with Typst, or just to chat.

Aside from that there are a few places where you can find things built by the community:

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

Contributing

We would 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.

To build Typst yourself, first ensure that you have the latest stable 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 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:

  • Simplicity through Consistency: 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.

  • Power through Composability: 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}).

  • Performance through Incrementality: 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.

typst's People

Contributors

andrew15-5 avatar barvirm avatar beiri22 avatar bluebear94 avatar damaxwell avatar dependabot[bot] avatar dherse avatar elegaanz avatar enter-tainer avatar epicericee avatar figsoda avatar frozolotl avatar harmoglace avatar johannes-wolf avatar jollywatt avatar laurenzv avatar laurmaedje avatar leedehai avatar luxxxlucy avatar marmare314 avatar mattfbacon avatar mdlc01 avatar myriad-dreamin avatar peng1999 avatar pgbiel avatar reknih avatar sekoiatree avatar sitandr avatar supercilex avatar tingerrr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

typst's Issues

Associativity of multiplication / division

The current parser implementation has the problem that the associativity of multiplication and division is reversed. Thus, 3 / 4 * 5 is parsed as 3 / (4 * 5) instead of the correct (3 / 4) * 5. The current approach of parsing the left-hand side of an expression one precendence-level lower and the right-hand side at the same level won't work now since making the left-hand side same level would make the parser left-recursive (infinite recursion). The best approach is probably to parse operands in a loop.

Better font detection

typst predefines these paths for font detection:

  1. /usr/share/fonts
  2. /usr/local/share/fonts
  3. $HOME/.local/share/fonts

The last one is obtained from the dirs crate.

Sometimes fonts are stored in other directories, like on NixOS, for example, where fonts are stored in a totally separate directory. I'm not familiar with font detection, however, I believe the "conventional" way to go about this is by using the fontconfig library, as used by gimp and many other programs. There are a couple of other Rust alternatives I scoped out but they seem all either unmaintained or immature.

Tokenization of + and - with scientific notation

To support scientific notation currently + and - will not be tokenized separately if they follow after an e or E. This could become a problem later, for example if we support variables or something similar: [func: value+2cm]. In this example, all of value+2cm would be one token.

A possible solution might be to use a little more context when deciding how to tokenize + and - by keeping track of whether the currently tokenized string together with the plus could form a valid number or something similar.

Output HTML

Add support for outputting as HTML, both from CLI and from lib.

Font ignored + "current font does not support math"

This is a very interesting looking project, and I was hoping to start using it for some tasks locally. I downloaded it off the releases page and can run it from the command line. I'm running ubuntu 22.04 LTS.

For some reason, the default font is a monospace one that I don't recognise, a #set text() call to set font does not seem to be working, and including any math produces the following error. The font is installed on my system (included in the screenshot is the fonts page preview).

Any idea what might be going on?

image

CLI compilation error using command

When compiling the rust source code using command: cargo build -p typst-cli --release
the following error occurred:
error: Permission denied (os error 13) at path "/home/alistair/typst/typst-22-03-21-2/targetdjGuyy"

I had just updated my rust installation to rustc 1.68.0 (2c8cc3432 2023-03-06)

Offical lanague grammar specification? (Neovim, and other editors)

Hello, I just made https://github.com/SeniorMars/typst.nvim which has nothing, but I plan to work on it this week. However, before I started, I wanted to know if there was an official grammar for typst? I found this:

https://github.com/typst/typst/blob/main/tools/support/typst.tmLanguage.json, but it would be beneficial if there was one.

I plan to first work on a tree-sitter grammar, which will probably be very useful for many editors.

Support fontconfig and/or specifying multiple custom font dirs

Some usecases (e.g. packaging on NixOS) require specifying multiple custom font locations, which is currently impossible. The best way to do it would be IMO support fontconfig. The second best way is to support $XDG_DATA_DIRS environment variable instead of only supporting $XDG_DATA_HOME.

Probably related to #97.

surprising rect height behavior in grid "cell"

In https://typst.app/docs/reference/visualize/rect/ I see the definition of height being:

The rectangle's height, relative to its parent container.

Yet the following code seems to suggest that the grid elements don't count as parent containers of the rectangles since each row takes up 100% of the height of the page:

#let cell = rect.with(
	inset: 8pt,
	width: 100%,
	stroke: none,
	radius: 6pt
)

#grid(
	columns: (2fr, 1fr),
	rows: (10pt, auto),
	cell(height: 100%)["meow"],
	cell(height: 100%)["meow"],
	cell(height: 100%)["meow"],
	cell(height: 100%)["meow"],
)

ie without adding any page breaks or other content, compiling this document results in a 2-page pdf with a single row of "meow"s on each.

...thinking about this a little more, I guess this has to do with the auto in

	rows: (10pt, auto),

This makes sense, but it's kind of unintuitive since auto seems to be the default (eg if i remove that setting from the grid, i still get a two-page pdf).

I guess this is kind of my own mistake, but I'll continue filing the issue anyway in case anyone else encounters it in the future.

That being said, maybe there is also some kind of more intuitive behavior in this case. What seems to be happening is that when the grid rows is set to auto it defers to the content of the tallest row element to determine the height of the row, but the rectangle itself is trying to only take up the maximum height of its parent container. It's not intuitive in this context that the parent container is the page. Maybe the more intuitive behavior would be for the rect to detect that its actual immediate parent is a grid cell with a row height set to auto act as if the rect height parameter wasn't event set πŸ€”

PDF Accessibility (tags, alt text, ...)

This sort of links to #114 and #129 - Typst should support accessible output formatting - for example, tagged PDF. Latex does not support this, and so people and organisations that want to produce accessible documents are forced to manually mark up documents in Adobe Acrobat.

Typst outputting accessible documents would be a huge win both for the disabled community and organisations and individuals that produce documents. I think it would make people a lot more likely to use and suggest the project as well.

For some more context, the LaTeX Project Team have been working on trying to get something like this in LaTeX for a while - https://www.pdfa.org/presentation/tagged-and-accessible-pdf-with-latex/

Guards propagate in wrong ways

The A, B list's guard prevents the list in the footer from being shown. Guards shouldn't be propagated in this way.

#set page("a8")
#set page(footer: [- List])
- A
- B

Typo in recurring example

There's an example in both the README and the website where it describes the Fibonacci sequence. In this example, "recurrence" is misspelled as "recurrance". I would submit a PR to fix it, but it shows up in screenshots/images too, which I can't easily fix.

Congrats on the public beta, I am really enjoying what I've seen so far! :)

Macro feature similar to LaTeX & *roff

One of my favourite features of LaTeX and *roff is extendability. For example, Tikz is quite powerful LaTeX, but the macro's pic (for writing pictures), chem (for writing chemical-compounds), grap (for graphs) for *.roff is really where programmable typesetters shine.

Will there be some plugin/preprocessor support? Or will it all be implemented using functions in the 'standard library'. Would be amazing to be able to write similar preprocessors in Typst. Is this a planned feature?

Provide grammars and LSP

As far as I understand, there’s currently no support for editors other than typst.app. Some things that could improve this situation:

  1. Providing a TextMate grammar, which is not very powerful, but supported by a wide range of editors and tooling.
  2. Providing a TreeSitter grammar, which is supported primarily by Neovim and allows for advanced editor integration.
  3. Providing a full-fledged LSP, which is supported by basically everyone and allows for all sorts of IDE-like features.

Double line spacing

Say I need double spaced paragraphs... I don't see a way to do that. Am I just missing something?

Border joining

Joined borders (for two different colors) on rectangles have two problems:

  • For a very small radius, there is a strange artifact (left side)
  • They look bad if they have no radius (right side)

image

#set rect(stroke: 10pt)
#rect(
  width: 3cm,
  height: 2cm,
  radius: (top-left: 0.1%),
  stroke: (
    left: green,
    top: red,
    rest: blue,
  ),
)

Implement Outline for PDF

Generated PDFs currently have no document outline.

Outlines are helpful for quickly navigating documents, and it would be great if typst would add support for them.

Compiler panic when changing arguments

STR:

  1. Paste the document below (I couldn't simplify it further without the bug going away)
  2. Modify something in the first line. For instance remove the e from false and add it again
  3. The compiler panics

Seems to me the complicated nesting has something to do with the panic since removing some of the nesting functions does resolve the issue.

#show it: raw as if it.block { par(justify: false, it) }

#let figure(
  body,
  key: none,
  kind: "Figure",
) = group(kind).entry(value: key, props => {
  block({    
    text(size: 10pt, {
      body
    })
  })
})

#figure(key: "pizza")[
  #table(
  columns: (1fr),
  [```html
Text
  ```],
)
]

Multi-line headings and incremental parsing

The incremental parser can be tricked into giving diverging interpretations of multi-line headings. For instance, in the following snippet a, b, and c are indented and therefore are all part of the heading:

= foo

 - a
 - b
 - c

Adding an unindented word will break the heading:

= foo
bar
 - a
 - b
 - c

Now remove the word:

= foo

 - a
 - b
 - c

The result shows a as part of the heading, whereas b and c are a default list.

Add typst to homebrew

Once typst has a full release (meaning not a pre-release) it can be added to homebrew, assuming it is a universal binary.

Markdown cross compilation

Are there any plans to build a tool to cross-compile markdown documents into .typΒ files?

This would be enormously helpful to transition from a markdown based note-taking workflow to typst.

Ignoring inline HTML, it seems to me that most markdown specifications offer only a subset of typst's features.
This assumption has the side effect of making it impossible to express all of typst's features in plain markdown, making
cross compilation from typst to markdown more complex.

Integration with other languages

For the programming part, I wonder with I can use other programming languages with Typst directly.
Is there a way to add support?

//*/ to close block comment

// */ will close a block comment but //*/ (without the space) does not. Note, that most (all?) PLs with similar block quote syntax would allow this type of construct.

Example:

- a /*
- b //*/
- c

Will only show a but will show a and c if the space is added.

Combining grid/table rows and columns

It would be helpful to have the ability to combine the rows and columns of grids and tables to produce an output similar to the latex example below:
image

Sorry if this is already a feature, I searched through the documentation and test cases and wasn't able to find anything.

How to input more complex math equations?

Firstly, I would like to express my appreciation for the typst project. It is a promising tool that can significantly reduce the learning curve for typing math compared to using LaTeX.

However, after using the typst, I found that the math typesetting is too simple. It is possible that I missed something in the documentation, but I couldn't find a way to typeset more complex equations.

For instance, I have an equation that I would like to typeset using 'typst,' but I am unable to do so. Here's the LaTeX doc:

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\newcommand{\subalign}[1]{%
  \vcenter{%
    \Let@ \restore@math@cr \default@tag
    \baselineskip\fontdimen10 \scriptfont\tw@
    \advance\baselineskip\fontdimen12 \scriptfont\tw@
    \lineskip\thr@@\fontdimen8 \scriptfont\thr@@
    \lineskiplimit\lineskip
    \ialign{\hfil$\m@th\scriptstyle##$&$\m@th\scriptstyle{}##$\hfil\crcr
      #1\crcr
    }%
  }%
}
\makeatother

\begin{document}
\[
\sum_{\substack{n=12\\n\neq i}}^N
\lim_{\subalign{uvw&=12\\n&\neq ijk}}\Bigl\langle a \Big| e^{\int g_{[i}\,dx}\Big|
  f_{j]}\Bigr\rangle
\]
\end{document}

This is the rendering result:
image

I was wondering if you could guide me on how to typeset this equation using the typst.

Multiple errors are not traced correctly

When combining multiple errors, the CLI tool outputs incorrect error messages.

Minimal example

test.typ:

$
#set

Command:

typst --watch test.typ

Actual Output:

watching test.typ
writing to test.pdf

[10:40:51] compiled with errors

error: expected identifier
  β”Œβ”€ test.typ:2:4
  β”‚
2 β”‚ #set
  β”‚     ^

error: expected dollar sign
  β”Œβ”€ test.typ:2:4
  β”‚
2 β”‚ #set
  β”‚     ^

Expected Output

watching test.typ
writing to test.pdf

[10:40:51] compiled with errors
error: expected dollar sign
  β”Œβ”€ test.typ:1:1
  β”‚
1 β”‚ $
  β”‚  ^
error: expected identifier
  β”Œβ”€ test.typ:2:4
  β”‚
2 β”‚ #set
  β”‚     ^

kind: NotFound, message: "program not found"

> cargo build -p typst-cli
   Compiling strum v0.24.1
   Compiling notify v5.1.0
   Compiling memmap2 v0.5.10
   Compiling typst-cli v0.0.0 (D:\Desktop\typst-main\cli)
error: failed to run custom build command for `typst-cli v0.0.0 (D:\Desktop\typst-main\cli)`

Caused by:
  process didn't exit successfully:
`D:\Desktop\typst-main\target\debug\build\typst-cli-1d6287d42bbc20b7\build-script-build`
(exit code: 1)
  --- stderr
  Error: Error { kind: NotFound, message: "program not found" }

error message is not very helpful, as it doesn't say what program it was even looking for.

Basic Floating

Right now, an image at the end of a grid column enters the next column. Would it be possible to acheive basic floating with a #float command which moves the target image (or anything else) to the top of the next grid, but continue placing the text in the first column?

It would also be good to have a command which lays the object outside of any current grids, so that a wide image could 'float' to the top or bottom of the next page.

Example of issue:

image

More modern input with unicode

Since this is a new and improved markup system, have you thought about allowing the full expressive power of unicode in your tokens?

For example, 1. is more shorter and readable than 2. (3. is spaced for easier symbol comparison)

  1. $ 7.32Ξ² + βˆ‘β†“i=0β†‘βˆ‡ Q_i / 2 $
  2. $ 7.32 beta + sum_(i=0)^nabla Q_i / 2 $
  3. $ 7.32Ξ²Β Β Β Β Β Β Β +Β Β Β Β Β βˆ‘β†“i=0β†‘βˆ‡Β Β Β Β Β Β Β Β Β Q_i / 2 $

(and with some investment into modern keyboard remapping software tools a lot of the symbols like definitely greek and many common math ones are not even harder to input on a desktop OS)

Automatic CI

Github Actions is free for public repositories (like this). If you want I can create an automatic pipeline which creates build artifacts on each release.

More citation styles

Excited to get to use typst, it's a great-looking tool in a space which sorely needed innovation.

It would be really helpful to have an equivalent to natbib's \citeyear, \citeauthor etc. for including information from references in free-flowing text. Perhaps something like a #citefield(myref, field: date.year)? Although something more terse would also go down well.

Add typst-cli to crates.io

typst-cli should be able to be installed from cargo install typst-cli, but typst-cli is not on crates.io. Could you add support?

Typst errors out due to old libc on Ubuntu 20.04.5 LTS

Problem

❯ typst --version
typst: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.35' not found (required by typst)
typst: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by typst)
typst: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by typst)
typst: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by typst)

Platform

I am running Ubuntu 20.04.5 LTS (released 2020-04-24, latest patch 2022-09-01), with glibc version 2.31 (released 2020-02-01):

❯ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.5 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.5 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
❯ ldd --version    
ldd (Ubuntu GLIBC 2.31-0ubuntu9.9) 2.31
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

Possible solutions

  1. Build binary on slightly older Linux version in CI, e.g. Debian 11 or Ubuntu 20.04/18.04 LTS.
  2. Compile using musl target

(2) is ideal since musl can be embedded into the binary, providing maximum portability by compiling a static binary with no runtime dependencies. That means it can theoretically run on 10 year old linux too.

Workarounds

  1. Compile from source
  2. Upload to crates.io, then cargo install typst (Same effect as (1))

I will explore these solutions later this week, or perhaps the next, because I have my uni exams. This issue is similar to JuliaLang/juliaup#334

Compilation error on macOS 13.2.1, M2 processor

Trying to compile with rustc 1.68 (stable) on macOS 13.2.1 on Apple Silicon, I get the following compilation error:

error: failed to run custom build command for `typst-cli v0.0.0 (/Users/noah/Downloads/typst-22-03-21-2/cli)`

Caused by:
  process didn't exit successfully: `/Users/noah/Downloads/typst-22-03-21-2/target/release/build/typst-cli-b26a6417ca33703c/build-script-build` (exit status: 101)
  --- stderr
  thread 'main' panicked at 'byte index 8 is out of bounds of ``', cli/build.rs:7:48
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Alternate output formats? (HTML?)

This is an exciting piece of technology. Are there any plans to implement alternate backends for the generator? It would be fantastic to have an alternative to e.g. KaTeX for maths typesetting on the web.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.