diff --git a/README.md b/README.md index 307b70b..60132f4 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ For more information, see the [manual](manual.pdf) To use this package, simply import [circuiteria](https://typst.app/universe/package/circuiteria) and call the `circuit` function: ```typ -#import "@preview/circuiteria:0.1.0" +#import "@preview/circuiteria:0.2.0" #circuiteria.circuit({ import circuiteria: * ... diff --git a/doc/example.typ b/doc/example.typ index 0ff4bac..7e7af59 100644 --- a/doc/example.typ +++ b/doc/example.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw +#import "@preview/cetz:0.3.2": draw #import "../src/circuit.typ": circuit #import "../src/util.typ" diff --git a/gallery.bash b/gallery.bash deleted file mode 100644 index f87679c..0000000 --- a/gallery.bash +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -PDFS=false - -while getopts "p" flag -do - case "${flag}" in - p) PDFS=true;; - esac -done - -echo "Generating gallery images" - -set -- ./gallery/*.typ -cnt="$#" -i=1 -for f -do - f2="${f/typ/png}" - echo "($i/$cnt) $f -> $f2" - typst c --root ./ "$f" "$f2" - i=$((i+1)) -done - -if [ "$PDFS" = true ] -then - echo - echo "Generating gallery PDFs" - - set -- ./gallery/*.typ - cnt="$#" - i=1 - for f - do - f2="${f/typ/pdf}" - echo "($i/$cnt) $f -> $f2" - typst c --root ./ "$f" "$f2" - i=$((i+1)) - done -fi \ No newline at end of file diff --git a/gallery/platypus.png b/gallery/platypus.png index 9338a23..a52e375 100644 Binary files a/gallery/platypus.png and b/gallery/platypus.png differ diff --git a/gallery/test.png b/gallery/test.png index e090778..b6e812c 100644 Binary files a/gallery/test.png and b/gallery/test.png differ diff --git a/gallery/test2.png b/gallery/test2.png index e090778..b6e812c 100644 Binary files a/gallery/test2.png and b/gallery/test2.png differ diff --git a/gallery/test3.png b/gallery/test3.png index bd56665..2ed46d0 100644 Binary files a/gallery/test3.png and b/gallery/test3.png differ diff --git a/gallery/test3.typ b/gallery/test3.typ index a0d7f88..89db692 100644 --- a/gallery/test3.typ +++ b/gallery/test3.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw +#import "@preview/cetz:0.3.2": draw #import "../src/lib.typ": circuit, element, util, wire #set page(width: auto, height: auto, margin: .5cm) diff --git a/gallery/test4.png b/gallery/test4.png index 258702b..e7666f6 100644 Binary files a/gallery/test4.png and b/gallery/test4.png differ diff --git a/gallery/test4.typ b/gallery/test4.typ index 0233d6f..08f8d00 100644 --- a/gallery/test4.typ +++ b/gallery/test4.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw +#import "@preview/cetz:0.3.2": draw #import "../src/lib.typ": * #set page(width: auto, height: auto, margin: .5cm) diff --git a/gallery/test5.png b/gallery/test5.png index 92af622..b70bb2c 100644 Binary files a/gallery/test5.png and b/gallery/test5.png differ diff --git a/gallery/test5.typ b/gallery/test5.typ index 5b8ce62..ebf6e77 100644 --- a/gallery/test5.typ +++ b/gallery/test5.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw +#import "@preview/cetz:0.3.2": draw #import "../src/lib.typ": * #set page(width: auto, height: auto, margin: .5cm) diff --git a/gallery/test6.png b/gallery/test6.png index ad23796..be04367 100644 Binary files a/gallery/test6.png and b/gallery/test6.png differ diff --git a/gallery/test6.typ b/gallery/test6.typ index 3fb4bbe..ba76c94 100644 --- a/gallery/test6.typ +++ b/gallery/test6.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw, vector +#import "@preview/cetz:0.3.2": draw, vector #import "../src/lib.typ": * #set page(width: auto, height: auto, margin: .5cm) diff --git a/justfile b/justfile new file mode 100644 index 0000000..978fd41 --- /dev/null +++ b/justfile @@ -0,0 +1,11 @@ +# Local Variables: +# mode: makefile +# End: +gallery_dir := "./gallery" +set shell := ["bash", "-uc"] + +manual: + typst c manual.typ manual.pdf + +gallery: + for f in "{{gallery_dir}}"/*.typ; do typst c --root . "$f" "${f%typ}png"; done diff --git a/manual.pdf b/manual.pdf index 2750ae9..8d1abf7 100644 Binary files a/manual.pdf and b/manual.pdf differ diff --git a/manual.typ b/manual.typ index 7d1ef53..7a327d6 100644 --- a/manual.typ +++ b/manual.typ @@ -1,5 +1,5 @@ -#import "@preview/tidy:0.3.0" -#import "@preview/cetz:0.2.2": draw, canvas +#import "@preview/tidy:0.4.1" +#import "@preview/cetz:0.3.2": draw, canvas #import "src/lib.typ" #import "doc/examples.typ" #import "src/circuit.typ": circuit @@ -12,7 +12,7 @@ numbering("1.1", ..num) }) #{ - outline(indent: true, depth: 3) + outline(indent: auto, depth: 3) } #show link: set text(blue) @@ -47,7 +47,7 @@ #set page(numbering: "1/1", header: align(right)[circuiteria #sym.dash.em v#lib.version]) #set page( - header: locate(loc => { + header: context { let txt = [circuiteria #sym.dash.em v#lib.version] let cnt = counter(heading) let cnt-val = cnt.get() @@ -65,8 +65,8 @@ #rect(width: 100%, height: .5em, radius: .25em, stroke: none, fill: util.colors.values().at(i)) ] ) - }), - footer: locate(loc => { + }, + footer: context { let cnt = counter(heading) let cnt-val = cnt.get() if cnt-val.len() < 2 { return } @@ -80,12 +80,12 @@ ], counter(page).display("1/1", both: true) ) - }) + } ) #let doc-ref(target, full: false, var: false) = { let (module, func) = target.split(".") - let label-name = module + func + let label-name = module + "-" + func let display-name = func if full { display-name = target @@ -94,7 +94,7 @@ label-name += "()" display-name += "()" } - link(label(label-name))[#display-name] + link(label(label-name), raw(display-name)) } = Introduction @@ -103,11 +103,21 @@ This package provides a way to make beautiful block circuit diagrams using the C = Usage -Simply import #link("src/lib.typ") and call the `circuit` function: +Simply import Circuiteria and call the `circuit` function: #pad(left: 1em)[```typ -#import "src/lib.typ" -#lib.circuit({ - import lib: * +#import "@preview/circuiteria:0.2.0" +#circuiteria.circuit({ + import circuiteria: * + ... +}) +```] + +== Project installation +If you have installed Circuiteria directly in your project, import #link("src/lib.typ") and call the `circuit` function: +#pad(left: 1em)[```typ +#import "src/lib.typ" as circuiteria +#circuiteria.circuit({ + import circuiteria: * ... }) ```] @@ -117,6 +127,7 @@ Simply import #link("src/lib.typ") and call the `circuit` function: #let circuit-docs = tidy.parse-module( read("src/circuit.typ"), name: "circuit", + old-syntax: true, require-all-parameters: true ) #tidy.show-module(circuit-docs) @@ -126,6 +137,7 @@ Simply import #link("src/lib.typ") and call the `circuit` function: #let util-docs = tidy.parse-module( read("src/util.typ"), name: "util", + old-syntax: true, require-all-parameters: true, scope: ( util: util, @@ -140,6 +152,7 @@ Simply import #link("src/lib.typ") and call the `circuit` function: #let wire-docs = tidy.parse-module( read("src/wire.typ"), name: "wire", + old-syntax: true, require-all-parameters: true, scope: ( wire: wire, @@ -161,6 +174,7 @@ Simply import #link("src/lib.typ") and call the `circuit` function: read("src/elements/multiplexer.typ") + "\n" + read("src/elements/group.typ"), name: "element", + old-syntax: true, scope: ( element: element, circuit: circuit, @@ -183,6 +197,7 @@ Simply import #link("src/lib.typ") and call the `circuit` function: read("src/elements/logic/or.typ") + "\n" + read("src/elements/logic/xor.typ"), name: "gates", + old-syntax: true, scope: ( element: element, circuit: circuit, diff --git a/src/circuit.typ b/src/circuit.typ index 4ae8331..7a701c7 100644 --- a/src/circuit.typ +++ b/src/circuit.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": canvas +#import "@preview/cetz:0.3.2": canvas #import "@preview/tidy:0.3.0" /// Draws a block circuit diagram diff --git a/src/elements/alu.typ b/src/elements/alu.typ index 0489cda..9a8cb82 100644 --- a/src/elements/alu.typ +++ b/src/elements/alu.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw +#import "@preview/cetz:0.3.2": draw #import "element.typ" #import "ports.typ": add-port diff --git a/src/elements/block.typ b/src/elements/block.typ index 90f81d4..84623fe 100644 --- a/src/elements/block.typ +++ b/src/elements/block.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw +#import "@preview/cetz:0.3.2": draw #import "element.typ" #let draw-shape(id, tl, tr, br, bl, fill, stroke) = { diff --git a/src/elements/element.typ b/src/elements/element.typ index 7097e97..635fc0b 100644 --- a/src/elements/element.typ +++ b/src/elements/element.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw, coordinate +#import "@preview/cetz:0.3.2": draw, coordinate #import "ports.typ": add-ports, add-port #import "../util.typ" @@ -88,15 +88,26 @@ if to-side in ports-margins { margins = ports-margins.at(to-side) } - let used-pct = 100% - margins.at(0) - margins.at(1) - let used-height = height * used-pct / 100% - let top-margin = height * margins.at(0) / 100% - - let dy = used-height * (i + 1) / (ports.at(to-side).len() + 1) - if not auto-ports { + let dy + let top-margin + if to-side in ("east", "west") { + let used-pct = 100% - margins.at(0) - margins.at(1) + let used-height = height * used-pct / 100% + top-margin = height * margins.at(0) / 100% + + dy = used-height * (i + 1) / (ports.at(to-side).len() + 1) + + if not auto-ports { + top-margin = 0 + dy = ports-y.at(to)(height) + } + } else if to-side == "north" { + dy = 0 + top-margin = 0 + } else if to-side == "south" { + dy = height top-margin = 0 - dy = ports-y.at(to)(height) } let (ctx, from-pos) = coordinate.resolve(ctx, from) diff --git a/src/elements/extender.typ b/src/elements/extender.typ index ee60ae0..a1b99e0 100644 --- a/src/elements/extender.typ +++ b/src/elements/extender.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw +#import "@preview/cetz:0.3.2": draw #import "element.typ" #import "ports.typ": add-port diff --git a/src/elements/group.typ b/src/elements/group.typ index 5a12f3f..1f3e41c 100644 --- a/src/elements/group.typ +++ b/src/elements/group.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw, coordinate +#import "@preview/cetz:0.3.2": draw, coordinate #import "../util.typ" /// Draws a group of elements diff --git a/src/elements/logic/and.typ b/src/elements/logic/and.typ index 2dbee0c..f32eb21 100644 --- a/src/elements/logic/and.typ +++ b/src/elements/logic/and.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw +#import "@preview/cetz:0.3.2": draw #import "gate.typ" #let draw-shape(id, tl, tr, br, bl, fill, stroke) = { diff --git a/src/elements/logic/buf.typ b/src/elements/logic/buf.typ index ab77264..3db75a9 100644 --- a/src/elements/logic/buf.typ +++ b/src/elements/logic/buf.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw +#import "@preview/cetz:0.3.2": draw #import "gate.typ" #let draw-shape(id, tl, tr, br, bl, fill, stroke) = { diff --git a/src/elements/logic/gate.typ b/src/elements/logic/gate.typ index ebf6115..7350a70 100644 --- a/src/elements/logic/gate.typ +++ b/src/elements/logic/gate.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw, coordinate +#import "@preview/cetz:0.3.2": draw, coordinate #import "../ports.typ": add-ports, add-port #import "../element.typ" diff --git a/src/elements/logic/or.typ b/src/elements/logic/or.typ index 67bb946..dca0f9b 100644 --- a/src/elements/logic/or.typ +++ b/src/elements/logic/or.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw +#import "@preview/cetz:0.3.2": draw #import "gate.typ" #let draw-shape(id, tl, tr, br, bl, fill, stroke) = { diff --git a/src/elements/logic/xor.typ b/src/elements/logic/xor.typ index 42718f6..3f226a8 100644 --- a/src/elements/logic/xor.typ +++ b/src/elements/logic/xor.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw +#import "@preview/cetz:0.3.2": draw #import "gate.typ" #let space = 10% diff --git a/src/elements/multiplexer.typ b/src/elements/multiplexer.typ index 8df5cee..d7c29eb 100644 --- a/src/elements/multiplexer.typ +++ b/src/elements/multiplexer.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw +#import "@preview/cetz:0.3.2": draw #import "../util.typ" #import "element.typ" #import "ports.typ": add-port diff --git a/src/elements/ports.typ b/src/elements/ports.typ index 92d667a..951fa4a 100644 --- a/src/elements/ports.typ +++ b/src/elements/ports.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw +#import "@preview/cetz:0.3.2": draw #import "../util.typ": rotate-anchor #let add-port( diff --git a/src/lib.typ b/src/lib.typ index a5177a3..7f27208 100644 --- a/src/lib.typ +++ b/src/lib.typ @@ -1,4 +1,4 @@ -#let version = version(0, 1, 0) +#let version = version(0, 2, 0) #import "circuit.typ": circuit #import "element.typ" diff --git a/src/wire.typ b/src/wire.typ index 07a3ac1..8300a2c 100644 --- a/src/wire.typ +++ b/src/wire.typ @@ -1,4 +1,4 @@ -#import "@preview/cetz:0.2.2": draw, coordinate +#import "@preview/cetz:0.3.2": draw, coordinate #import "util.typ": opposite-anchor /// List of valid wire styles diff --git a/typst.toml b/typst.toml index c1e80c5..39cff5b 100644 --- a/typst.toml +++ b/typst.toml @@ -1,7 +1,7 @@ [package] name = "circuiteria" -version = "0.1.0" -compiler = "0.11.0" +version = "0.2.0" +compiler = "0.13.0" repository = "https://git.kb28.ch/HEL/circuiteria" entrypoint = "src/lib.typ" authors = [ @@ -11,4 +11,4 @@ categories = [ "visualization" ] license = "Apache-2.0" description = "Drawing block circuits with Typst made easy, using CeTZ" keywords = [ "circuit", "block", "draw" ] -exclude = [ "gallery", "gallery.bash", "doc" ] \ No newline at end of file +exclude = [ "gallery", "justfile", "doc" ] \ No newline at end of file