Typstry.jl

The Julia to Typst interface
Author jakobjpeters
Popularity
44 Stars
Updated Last
3 Months Ago
Started In
July 2023

Typstry.jl

Documentation stable Documentation development

Continuous Integration Documentation

Codecov Dependents

Introduction

Typstry.jl is the interface to convert the computational power of Julia into beautifully formatted Typst documents.

What is Typst?

Typst is an open-source and relatively new typesetting system (written in Rust ๐Ÿฆ€๐Ÿš€), designed to improve upon the performance and usability of LaTeX. See also the Typst repository and documentation for examples and how to get started.

Installation

julia> using Pkg: add

julia> add("Typstry")

julia> using Typstry

Showcase

julia> show_typst(IOContext(stdout, :mode => code), true)
true

julia> show(stdout, "text/typst", Typst([true 1; 1.0 [Any[true 1; 1.0 nothing]]]))
$mat(
  "true", 1;
  1.0, mat(
    "true", 1;
    1.0, #none
  )
)$

julia> TypstString(1 // 2; block = true)
typst"$ 1 / 2 $"

julia> typst"$ \(1 + 2im; mode = math) $"
typst"$ (1 + 2i) $"

julia> TypstCommand(["help"])
typst`help`

julia> typst`compile input.typ output.pdf`
typst`compile input.typ output.pdf`

Features

Strings

  • Print Julia values in Typst format
    • Specify Julia settings and Typst parameters
    • Implement formatting for custom types
  • Construct Typst strings
    • Interpolate formatted values

Commands

  • Construct Typst commands
  • Render documents using the Typst compiler
    • Display in IJulia.jl, Pluto.jl, and QuartoRunner.jl notebooks
    • Use the JuliaMono typeface

Planned

  • Default auto::Mode?
    • Automatically determine the Typst syntactic context
    • Use a tree-sitter grammar or jll package
  • Implement Typst formatting for more types
    • Base
      • AbstractDict
      • AbstractIrrational
      • AbstractSet
      • Enum
        • Mode
      • Expr
      • Symbol
    • Package extensions
      • Standard Library
        • LinearAlgebra.jl
    • Partial Julia to Typst transpilation
      • @typst(a * b) ==
        TypstString(:(a * b)) ==
        TypstString(TypstFunction(*, :a, :b)) ==
        typst"(a b)"
        

Similar Packages

Typst

LaTeX

Used By Packages