David Stadelmann 2e6bfab744 feat: Add s-shape wire style and u-at anchor placement
Introduces a new "s-shape" wire style connecting two ports on opposite
cardinal sides (east<->west or north<->south) via 5 segments joined at
4 corners (u1-start, u1-end, u2-start, u2-end). The axis is auto-detected
from port anchors; when both endpoints share the same perpendicular
coordinate (single-block loopback) `s-ratio-mid` is reinterpreted as an
absolute signed offset so the crossbar can still be placed above or
below the endpoints.

Also adds `u-at` to the "u-shape" style, an anchor-based crossbar
placement analogous to `zigzag-at`. `u-depth` now defaults to
`auto` to allow clean mutual-exclusion with `u-at`.

Factors the shared placement normalizer into
`normalize-scalar-offset(at, axis)`; `normalize-zigzag-at` remains as
a thin backwards-compatible wrapper.
2026-09-30 15:58:01 +02:00
2024-05-16 21:34:50 +00:00
2026-07-28 14:45:49 +02:00
2026-07-04 01:35:35 +02:00

circuiteria

Circuiteria is a Typst package for drawing block circuit diagrams using the CeTZ package.

A platypus / Perry the Platypus meme made with colored rounded rectangles

Examples

Block diagram of a multi-cycle RISC-V FPGA processor
A bit of everything
Block diagram of a single-cycle RISC-V processor
Wires everywhere
Top-level block diagram of a single-cycle RISC-V processor Block diagram of a simple single-cycle RISC-V ALU
Groups Rotated

Note


These circuit layouts were copied from a digital design course given by prof. S. Zahno and recreated using this package

Click on the example image to jump to the code.

Usage

For more information, see the manual

To use this package, simply import circuiteria and call the circuit function:

#import "@preview/circuiteria:0.2.1"
#circuiteria.circuit({
  import circuiteria: *
  ...
})
V0.2.1
Latest
2026-07-03 23:45:51 +00:00
Languages
Typst 99.8%
Just 0.2%