Typstry.jl
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 TypstryShowcase
julia> show(stdout, "text/typst", Typst([1 // 2 1; 1.0 [Any[1 // 2 1; 1.0 nothing]]]))
$mat(
  1 / 2, 1;
  1.0, mat(
    1 / 2, 1;
    1.0, #none
  )
)$
julia> TypstString(1 // 2; block = true)
typst"$ 1 / 2 $"
julia> typst"$ 1 / \(1 + 2im; mode = math) $"
typst"$ 1 / (1 + 2i) $"
julia> TypstCommand(["help"])
typst`help`
julia> typst`compile input.typ output.pdf`
typst`compile input.typ output.pdf`
julia> render(1:4)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 jll package
 
 - Implement Typst formatting for more types
BaseAbstractDictAbstractIrrationalAbstractSetEnumMode
ExprSymbol
- Package extensions
- Standard Library
- LinearAlgebra.jl
 - DataFrames.jl
 
 
 - Standard Library
 - Partial Julia to Typst transpilation
(@typst $a * b) == TypstString(:($a * b)) == TypstString(TypstFunction(*, a, :b)) == typst"$ 2b $"
 
 
Similar Packages
Typst
- Labelyst.jl
- Dependent of Typstry.jl
 
 - Luxor.jl
- Weak dependent of Typstry.jl
 
 - TypstGenerator.jl
 - TypstJlyFish.jl
- Interoperable with Typstry.jl
 
 - Typst_jll.jl
- Dependency of Typstry.jl
 
 
Typst and LaTeX
- MakieTeX.jl
- Dependent of Typstry.jl
 
 - SummaryTables.jl