Typstry.jl
Typstry.jl copied to clipboard
The Julia to Typst interface
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
BaseAbstractDictAbstractIrrationalAbstractSetEnumMode
ExprSymbol
- Package extensions
- Standard Library
- LinearAlgebra.jl
- Standard Library
- Partial Julia to Typst transpilation
-
@typst(a * b) == TypstString(:(a * b)) == TypstString(TypstFunction(*, :a, :b)) == typst"(a b)"
-
Similar Packages
Typst
- Labelyst.jl
- SummaryTables.jl
- TypstGenerator.jl
- TypstJlyFish.jl
- Interoperable with Typstry.jl
- Typst_jll.jl
- Dependency of Typstry.jl