diff --git a/src/lib/tree.typ b/src/lib/tree.typ index ad596d1d2..2e168ce10 100644 --- a/src/lib/tree.typ +++ b/src/lib/tree.typ @@ -131,12 +131,20 @@ } assert(draw-node != none, message: "Node draw callback must be set!") - let build-node(tree, depth: 0, sibling: 0) = { + let build-node(tree-arr, depth: 0, sibling: 0) = { let children = () let content = none + + let (e, tree) = if type(tree-arr) == array and tree-arr.len() == 2 and type(tree-arr.at(0)) in (int,float) { + tree-arr + } else { + (1, tree-arr) + } + let depth = depth + e + if type(tree) == array { children = tree.slice(1).enumerate().map( - ((n, c)) => build-node(c, depth: depth + 1, sibling: n) + ((n, c)) => build-node(c, depth: depth, sibling: n) ) content = tree.at(0) } else { diff --git a/tests/tree/test.typ b/tests/tree/test.typ index 5516753bb..e4c58b3c3 100644 --- a/tests/tree/test.typ +++ b/tests/tree/test.typ @@ -42,3 +42,8 @@ }) h(.1cm) } + +#test-case({ + // Specify branch lengths + cetz.tree.tree(([], (1, ([], (1, []), (1, []))), (2, []))) +})