# ExTypst

Elixir bindings and helpers for the [`typst`](
typesetting system.

Check [Typst's documentation]( for a quick start.

# Usage

# Write typst markup
template = """
= Current Employees

This is a report showing the company's current employees.

  columns: (auto, 1fr, auto, auto),
  [*No*], [*Name*], [*Salary*], [*Age*],
  <%= employees %>

# Create some data
defmodule Helper do 
  @names ["John", "Nathalie", "Joe", "Jane", "Tyler"]
  @surnames ["Smith", "Johnson", "Williams", "Brown", "Jones", "Davis"]

  def build_employees(n) do 
    for n <- 1..n do 
      name = "#{Enum.random(@names)} #{Enum.random(@surnames)}"
      salary = "US$ #{Enum.random(1000..15_000) / 1}"
      [n, name, salary, Enum.random(16..60)]

# Convert it to a nice-looking PDF
{:ok, pdf_binary} = ExTypst.render_to_pdf(template, 
  employees: ExTypst.Format.table_content(Helper.build_employees(1_000))

# Write to disk
File.write!("employees.pdf", pdf_binary)

# Or maybe send via email
Bamboo.Email.put_attachment(email, %Bamboo.Attachment{data: pdf_binary, filename: "employees.pdf"})

You can see the generated PDF [here](./examples/employees.pdf).

## Installation

If [available in Hex](, the package can be installed
by adding `ex_typst` to your list of dependencies in `mix.exs`:

def deps do
    {:ex_typst, "~> 0.1"}

Documentation can be generated with [ExDoc](
and published on [HexDocs]( Once published, the docs can
be found at <>.