g

geomtools

@preview

Draw rulers, set squares, protractors and compasses on a figure.

v0.1.0
MIT

Package Information

Last Updated
Minimum Typst Version
0.13.0
Categories
visualizationcomponents
Disciplines
mathematicseducation

1. Get the package

Download the package using the TPIX CLI:

tpix get @preview/geomtools:0.1.0

2. Import in your Typst file

Add this to your .typ file:

#import "@preview/geomtools:0.1.0": *

Version History

0.1.00.13.0
2c1f601ce42b...

geomtools

Draw rulers, set squares, protractors and compasses on a figure — crisp or
hand-drawn.

A port of Cédric Pierquet's
OutilsGeomTikZ (LPPL 1.3c).

ruler, set square, protractor and pencil

the instruments, clean and hand-drawn

#import "@preview/geomtools:0.1.0": *

#geom(mode: "rough", {
  ruler(length: 10)
  pencil(at: (3, 2), rotate: -20deg)
})

No CeTZ, no plugin — the instruments are plain Typst curves. Requires
Typst 0.13 or later.

One description, two modes

Every instrument is described once, as geometry: a list of polygons,
circles, arcs and labels. The renderer then draws that list either crisp — as
the LaTeX original does — or with a hand-drawn wobble.

#geom(ruler(length: 7))                              // clean, the default
#geom(ruler(length: 7), mode: "rough")               // hand-drawn
#geom(ruler(length: 7), mode: "rough", roughness: 3) // heavier
#geom-rough(ruler(length: 7))                        // shorthand

The wobble is deterministic: same seed, same figure, every compile.

The instruments

function original notes
pencil \tkzCrayon tip at the origin, pointing up
pencil-tip tip at to, pointing along from → to
ruler \tkzRegle zero at the origin, running right
ruler-square \tkzRequerre rectangular, two graduated edges
set-square \tkzEquerre 30-60-90, right angle at the origin
mini-square \tkzMiniEquerre small, plain, for marking perpendiculars
mini-ruler \tkzMiniRegle small, plain
protractor \tkzRapporteur half or full, degrees and radians
percent-dial \tkzPourcenteur the disc graduated 0–100
protractor-square \tkzRappEquerre half-disc on a graduated edge
compass \tkzCompas opens to span two given points
right-angle open square; notation, not a tool

Common arguments: at, rotate, scale, colour, fill, and — where the
original has them — length, width, ticks, values, value-size.

French keys map to English: Longueurlength, Largeurwidth,
Couleurcolour, Origineat, Rotationrotate,
Echellescale, AfficheTraitsticks, AfficheValeursvalues.

A construction

The primitive constructors are exported, so a tool is just data you can add
to. A construction arc is drawn dashed (the textbook convention: solid
is the figure, dash is the instrument's trace). Put a pencil at the end of
a stroke with pencil-tip.

#geom({
  p-line((0, 0), (8, 0), stroke: luma(120), role: "edge")
  p-arc((0, 0), 4.5, 12deg, 78deg, stroke: blue, dash: "dashed")
  compass((0, 0), (3.2, 3.2))
  ruler(at: (0, -0.55), length: 8, values: false)
  pencil-tip((0, 0), (8, 0))
})

Measure an angle with the protractor, centred on the vertex, base along a
side:

#geom({
  protractor(at: (0, 0), scale: 0.6, radians: false)
  pencil-tip((0, 0), (2.2, 4.8), colour: rgb("#2B6CB0"), lead: rgb("#2B6CB0"))
})

p-poly p-line p-circle p-arc p-label, plus arc-pts,
circle-pts, rect-pts, dist, vangle.

Details

  • Ruler — three graduation depths at 0.25 / 0.375 / 0.5 cm. corner
    (default 0.12) is a rounded corner, not a capsule; corner: 0 is
    square. width floors at 1.5 cm unless clamp: false.
  • Set squarewidth = length · tan 30°, so the angles stay right.
    flip: true turns it over on the table (not the same as rotate: 180deg). length floors at 4.5 cm unless clamp: false.
  • Protractor — outer rim 3.75, inner 2.5. full: true for 360°.
  • Compasses — legs open to asin(|from − to| / (2 · leg)). The needle
    sits on from. Colour the lead with pencil-lead:.
  • Right-angle mark — an open square. Do not use mini-square here:
    that tool has a hypotenuse.

Labels are never wobbled. Short ticks take about a third of the edge wobble.

Layout

lib.typ          public API and the `geom` surface
src/canvas.typ   primitives and the two-mode renderer
src/tools.typ    the instruments, as geometry
examples/        gallery (excluded from the download)

``

User guide

English user guide

French user guide

Arabic user guide

Licence

MIT — see LICENSE for how this port relates to the
LPPL-licensed original.

Ported from OutilsGeomTikZ by Cédric
Pierquet (LPPL 1.3c). He neither maintains nor endorses this port; please do
not send him bug reports about it.

The gallery is examples/showcase.typ.