Skip to content

tndrle/briefs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🩲 Briefs

Briefs is a simple Typst template for letters (German: Briefe). It is inspired by DIN 5008 and targets A4 paper. The address box fits the window of a DIN lang envelope.

Example

#import "@preview/briefs:0.2.0": letter

#set text(lang: "de", font: "TeX Gyre Heros")
#show: letter.with(
  sender: (
    [Hilfsorganisation e.V.],
    [Spendengasse 12],
    [12345 Helfershausen]
  ),
  recipient: [
    Frau\
    Erika Mustermann\
    Rathausplatz 37\
    67890 Waldhausen
  ],
  location: "Helfershausen",
  subject: [*Vielen Dank für Ihre Spende*]
)

Sehr geehrte Frau Mustermann,

wir bedanken uns herzlich für Ihre großzügige Spende an unseren Verein.
Durch Ihre Unterstützung können wir weiterhin wichtige soziale Projekte
durchführen und Menschen in Not helfen.

Vielen Dank für Ihr Vertrauen und Ihre Mithilfe!

#v(0.5cm)
Mit freundlichen Grüßen

Hilfsorganisation e.V.

example

For more examples check out the folder tests.

Reference

Document Structure

The image below shows the basic document structure. The address box contains sender and recipient. The information box contains additional information – the default is sender, location, and date. structure

API

letter(
  sender: (),
  sender-font-size: 8pt,
  sender-separator: ", ",
  recipient: [],
  recipient-top-margin: 12.7mm,
  address-box: (25mm, 50mm, 80mm, 40mm),
  information: auto,
  information-box: (125mm, 25mm, 75mm, 65mm),
  date: auto,
  date-format: auto,
  location: none,
  location-date-separator: ", ",
  subject: none,
  folding-marks: (:),
  hole-punch-marks: (:),
  background: [],
  show-boxes: false,
  ..page-args,
  body
)

Arguments

senderarray of contentDefault: ()
Sender's name and address. This address is shown in the address box with font size sender-font-size and concatenated with separator sender-separator. If information is auto, this address is also shown at the top of the information box.

sender-font-sizelengthDefault: 8pt
Font size of the sender's name and address in the address box

sender-separatorcontentDefault: ", "
Separator between the sender's address parts in the address box

recipientcontentDefault: []
The recipient's name and address. Add line breaks manually.

recipient-top-marginlengthDefault: 12.7mm
The recipient's top margin in the address box

address-boxarray of lengthDefault: (25mm, 50mm, 80mm, 40mm)
Absolute position and size of the address box: (x, y, width, height)

informationauto | contentDefault: auto
Content of the information box. If this is auto, the sender, location, and date are shown as a default.

information-boxarray of lengthDefault: (125mm, 25mm, 75mm, 65mm)
Absolute position and size of the information box: (x, y, width, height)

dateauto | datetime | contentDefault: auto
The date (only used, if information is auto). If this is auto, the current date is shown. If auto or a value of type datetime is provided, the date will be formatted with date-format.

date-formatauto | strDefault: auto
The date format pattern which is applied if date is auto or of type datetime. If date-format is a string, it is directly passed to Typst's datetime.display() function. If date-format is auto, the pattern passed to datetime.display() is determined as follows:

  • if text.lang = "de": "[day].[month].[year]"
  • if text.lang = "en": "[month repr:long] [day padding:none], [year]"
  • otherwise: auto

locationnone | contentDefault: none
The location (only used, if information is auto)

location-date-separatorcontentDefault: ", "
The separator between location and date

subjectnone | contentDefault: none
The subject

folding-marksnone | dictionaryDefault: (:)
Whether folding marks are shown and how. If none, no marks are shown. Otherwise, a dictionary defines how the marks are shown. The dictionary can have the following keys:

  • pagesstr
    On which pages the marks are shown: "both", "even", or "odd"
  • lengthlength
    The length of the marks
  • strokestroke
    The stroke of the marks
  • xdistlength
    The distance to the left edge of the page

All keys are optional. If provided, they overwrite their default value.
The default is (pages: "both", length: 5mm, stroke: 0.25pt, xdist: 5mm).

hole-punch-marksnone | dictionaryDefault: (:)
Whether hole punch marks are shown and how. See folding-marks for details.
The default is (pages: "both", length: 7mm, stroke: 0.25pt, xdist: 5mm).

backgroundcontentDefault: []
Content for the page background. The folding marks and the hole punch marks are placed on the page's background. If you want to add additional content to the background, provide it here.

show-boxesboolDefault: false
Whether address box and information box are framed. This is mainly for debugging.

page-argsany (variadic)
Additional arguments for Typst's page() function.
Default arguments (can be overwritten):

  • margin: (left: 25mm, rest: 20mm)
  • number-align: bottom + right
  • numbering: (i, t) => text(10pt, context (localized().page-number)(i, t))

bodycontent
The letter content