Etykett 0.1.0: a small template for printing on label sheets

Since we have to print labels for inventory every now and then, I created a few utilities that help us doing that, and I decided to put them all into a template so that others can benefit as well: https://typst.app/universe/package/etykett

Adhesive labels usually come on sheets in rectangular grids, so its fairly easy to make a layout. Still, it’s a bit of boilerplate that you don’t necessarily want to do yourself. That’s why etykett provides you with utilities for

  • defining sheet dimensions: paper size and orientation, margins, grid gaps, row and column counts, insets
  • customization for the printing process: generating PDF pages upside-down if you have reason to feed the label sheets differently into the printer, or easily inserting empty labels if you have a partially used sheet of labels
  • label layout: subdividing each label into further sublabels, and printing the content for each label in either portrait or landscape within the label’s bounds
  • debugging: add a stroke to all labels and sublabels to check your layout before printing.

Much more isn’t necessary since Typst’s tools for data loading and processing are already sufficient for the rest!

Since this is a template you can check it out directly using this link: create projekt using etykett:0.1.0 or have a look at this example:

#import "@preview/etykett:0.1.0"

#let data = csv("data.csv").slice(1)

#let name-label((first-name, last-name)) = [
  #set align(center+horizon)
  #set text(10pt)
  Hello, my name is\
  #set text(1.4em)
  *#first-name #last-name*
]

#etykett.labels(
  sheet: etykett.sheet(
    paper: "a4",
    margins: (
      top: 14mm,
      bottom: 15mm,
      x: 6mm,
    ),
    gutters: (x: 2.5mm),
    rows: 9,
    columns: 3,
  ),
  debug: true,

  ..etykett.skip(3),
  ..data.map(name-label),
)

thumbnail

4 Likes