From 72c8fdc6a8bab5af6039e6864b0aa4b663a6ed38 Mon Sep 17 00:00:00 2001 From: Max <75871317+pearcebasmanm@users.noreply.github.com> Date: Mon, 24 Feb 2025 05:44:12 -0500 Subject: [PATCH] arborly:0.1.0 (#1816) --- packages/preview/arborly/0.1.0/LICENSE | 21 ++ packages/preview/arborly/0.1.0/README.md | 36 +++ .../preview/arborly/0.1.0/docs/manual.pdf | Bin 0 -> 81874 bytes .../preview/arborly/0.1.0/docs/manual.typ | 138 ++++++++++++ packages/preview/arborly/0.1.0/src/lib.typ | 211 ++++++++++++++++++ packages/preview/arborly/0.1.0/typst.toml | 13 ++ 6 files changed, 419 insertions(+) create mode 100644 packages/preview/arborly/0.1.0/LICENSE create mode 100644 packages/preview/arborly/0.1.0/README.md create mode 100644 packages/preview/arborly/0.1.0/docs/manual.pdf create mode 100644 packages/preview/arborly/0.1.0/docs/manual.typ create mode 100644 packages/preview/arborly/0.1.0/src/lib.typ create mode 100644 packages/preview/arborly/0.1.0/typst.toml diff --git a/packages/preview/arborly/0.1.0/LICENSE b/packages/preview/arborly/0.1.0/LICENSE new file mode 100644 index 000000000..a4f2c7e38 --- /dev/null +++ b/packages/preview/arborly/0.1.0/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Max Pearce Basman + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/preview/arborly/0.1.0/README.md b/packages/preview/arborly/0.1.0/README.md new file mode 100644 index 000000000..bd0ed2a6c --- /dev/null +++ b/packages/preview/arborly/0.1.0/README.md @@ -0,0 +1,36 @@ +# Arborly + +A library for producing syntax tree graphs. + +## Examples + +## Usage + +This package requires typst 0.13 + +To use this package, simply add the following code to your document: + +```typ +#import "@preview/arborly:0.1.0" + +#let tree = ("TP", ( + ("NP", ( + ("N", "this"), + )), + ("VP", ( + ("V", "is"), + ("NP", ( + ("D", "a"), + ("N", "wug"), + )), + )), +)) + +#arborly.tree(tree) +``` + +For more details, see `docs/manual.pdf` + +## Feedback + +I'm neither a linguist nor a graphics programmer, so if you see room for improvement please make an issue. diff --git a/packages/preview/arborly/0.1.0/docs/manual.pdf b/packages/preview/arborly/0.1.0/docs/manual.pdf new file mode 100644 index 0000000000000000000000000000000000000000..60302911af06ce918dab6e1f66b8d64d48ce9ac9 GIT binary patch literal 81874 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 content +#let tree( + /// The root node of the syntax tree. + /// See the examples for its structure. + /// -> array + node, + /// Draws all words at the bottom in a line, with stems extending down from their parent. It does not function correctly with a non-default min-slope. + /// + /// -> bool + hug-bottom: false, + /// The vertical separation of levels of the tree. It may be higher than this if min-slope is set. + /// + /// -> float + min-space-y: 1.0, + /// The minimum horizontal gap between terminal nodes, which applies even if they are not vertically aligned. + /// + /// -> float + min-gap-x: 0.3, + /// Sets an approximate lower bound for the slope of the connecting lines. + /// Setting it to a non-zero value will change the vertical spacing of the graph. + /// 0.2 has worked well for me, but this can be any number. + /// + /// -> float + min-slope: 0, + /// To space tree layers by increments of min-space-y when using a min-slope. + /// This prevents layers from getting "out of sync" and having words that are slightly out of alignment with each other. + /// + /// -> bool + full-step-y: false, + /// This accepts one of three strings: "middle", "average", or "smart". + /// + /// Middle places a parent label exactly between its outer children's labels (the ones furthest to the left and right) + /// + /// Average places it at the average of its children's horizontal positions, which can look better when there are many clumped close together and only one off to the side. + /// + /// Smart acts like average, but if there are three children and the second label is sufficiently close to the middle, the parent will "snap" to it. + /// + /// -> str + label-alignment: "middle", +) = context { + /* + Utility functions + */ + + // Combined width a node and its children should take up + let width(node) = { + if type(node) == str { + panic("You probably forgot a comma after a list starting with " + node + ", resulting in (("+node+", ...)) instead of (("+node+", ...),)") + } + let (label, children) = node + if type(children) == array { + children.map(width).sum() + // TODO: replace this with a system that accounts for wide labels, like below. But that doesn't work since the label will be offset from the center... + // calc.max(measure(label).width.cm() + min-gap-x, children.map(width).sum()) + } else { + float(measure(children).width.cm()) + min-gap-x + } + } + + // What offset a label should have from the left extremity of its width in order to be in the halfway position from its children's extremities' labels + let offset-mid(node) = { + let (_, children) = node + if type(children) == str { + width(node) / 2 + } else if type(children) == array { + if children.len() == 1 { + width(children.at(0)) / 2 + } else { + let first-offset = offset-mid(children.first()) + let last-offset = width(node) - (width(children.last()) - offset-mid(children.last())) + (first-offset + last-offset) / 2 + } + } else { + panic("invalid children") + } + } + + let offset-avg(node) = { + let (_, children) = node + if type(children) == str { + width(node) / 2 + } else if type(children) == array { + let n = children.len() + children.enumerate().map(((i, child)) => { + offset-avg(child) + width(child) * (n - i - 1) + }).sum() / n + } else { + panic("invalid children") + } + } + + // Average offset of children, but with one exception: + // if there are three elements, and the middle one is placed close enough to the midpoint, the label will snap to align with it + let offset-smart(node) = { + let (_, children) = node + if type(children) == str { + width(node) / 2 + } else if type(children) == array { + let n = children.len() + let average = children.enumerate().map(((i, child)) => { + offset-smart(child) + width(child) * (n - i - 1) + }).sum() / n + if children.len() == 3 { + let (first, middle, last) = children + let first-offset = offset-smart(first) + let last-offset = width(node) - width(last) + offset-smart(last) + let middle-offset = (first-offset + last-offset) / 2 + let middle-child-offset = width(children.first()) + offset-smart(children.at(1)) + let gap = calc.abs(middle-offset - middle-child-offset) + if gap < 1 { + middle-child-offset + } else { + average + } + } else { + average + } + } else { + panic("invalid children") + } + } + + let offset = if label-alignment == "middle" { + offset-mid + } else if label-alignment == "average" { + offset-avg + } else if label-alignment == "smart" { + offset-smart + } else { + panic("invalid label-alignment value: " + label-alignment) + } + + // Largest horizontal distance from parent label to child label, used to ensure a minimum line slope when dynamic-row-space is true + let max-dist-to-child(node) = { + let (_, children) = node + if type(children) == str { + 0 + } else if type(children) == array { + let left-dist = offset(node) - offset(children.first()) + let right-dist = width(node) - offset(node) - width(children.last()) + offset(children.last()) + calc.max(left-dist, right-dist) + } + } + + // Basic depth of tree checker + let depth((_, children)) = { + if type(children) == str { + 1 + } else if type(children) == array { + calc.max(..children.map(depth)) + 1 + } else { + panic("invalid children") + } + } + + let max-depth = if hug-bottom { + depth(node) + } else { + none + } + + // Drawing of the tree + import "@preview/cetz:0.3.2" + import cetz.draw: * + import cetz.vector: add + let tree-recursive(node, id: (0,), x: 0, y: 0) = { + // set up for and display parent element + let parent-width = width(node) + let (label, children) = node + let mid = offset(node) + let parent = id.map(str).join(",") + content((x + mid, y), name: parent, { + set text(bottom-edge: "descender") + pad(y: 0.5em, label) + }) + + // vertical spacing calculations + let y-diff = min-space-y + if min-slope > 0 { + y-diff = calc.max(y-diff, max-dist-to-child(node) * min-slope) + } + if full-step-y { + y-diff = calc.round(y-diff / min-space-y) * min-space-y + } + y -= y-diff + + if type(children) == array { + let offset = 0 + for (i, node) in children.enumerate() { + let wid = width(node) + let child-id = id + child-id.push(i) + let child = child-id.map(str).join(",") + tree-recursive(node, id: child-id, x: x, y: y) + line(parent + ".south", child + ".north") + x += wid + } + } else { + let child = parent + "-c" + let child-y = if hug-bottom { -max-depth * min-space-y } else { y } + content((x + mid, child-y), name: child, { + set text(bottom-edge: "descender") + pad(y: 0.5em, children) + }) + line(child, parent) + } + } + cetz.canvas(tree-recursive(node)) +} diff --git a/packages/preview/arborly/0.1.0/typst.toml b/packages/preview/arborly/0.1.0/typst.toml new file mode 100644 index 000000000..524e08c45 --- /dev/null +++ b/packages/preview/arborly/0.1.0/typst.toml @@ -0,0 +1,13 @@ +[package] +name = "arborly" +version = "0.1.0" +repository = "https://github.com/pearcebasmanm/arborly" +entrypoint = "src/lib.typ" +authors = [ + "Max Pearce Basman " +] +license = "MIT" +description = "A library for producing beautiful syntax tree graphs." +categories = [ "visualization" ] +keywords = [ "syntax", "sentence", "tree" ] +exclude = [ "manual.pdf", "manual.typ" ]