From 77ccd6395951db7ec8a0d368dcb2fb94bad2bbb4 Mon Sep 17 00:00:00 2001 From: Johannes Wolf Date: Wed, 21 Jan 2026 13:25:07 +0100 Subject: [PATCH] projection: Rename on-yz to on-zy Fixes #1020 --- CHANGES.md | 1 + docs/api/draw-functions/projections/on-yz.mdx | 5 ----- docs/api/draw-functions/projections/on-zy.mdx | 5 +++++ docs/api/sidebar.js | 2 +- manual.pdf | Bin 2218216 -> 2218216 bytes src/draw.typ | 2 +- src/draw/projection.typ | 10 ++++++---- tests/projection-ortho/test.typ | 6 +++--- 8 files changed, 17 insertions(+), 14 deletions(-) delete mode 100644 docs/api/draw-functions/projections/on-yz.mdx create mode 100644 docs/api/draw-functions/projections/on-zy.mdx diff --git a/CHANGES.md b/CHANGES.md index 8d7e4ad50..6749799d9 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -18,6 +18,7 @@ commands to construct paths - Fixed a bug with `brace` and `flip: true` (#1017) - Added a new `transform` function that multiplies a given transformation matrix with the current one (#1019) +- **BREAKING** Renamed `on-yz` to `on-zy` (#1020) # 0.4.2 - The `tree` element now has a `anchor:` argument to position the tree (#929) diff --git a/docs/api/draw-functions/projections/on-yz.mdx b/docs/api/draw-functions/projections/on-yz.mdx deleted file mode 100644 index 9e386f372..000000000 --- a/docs/api/draw-functions/projections/on-yz.mdx +++ /dev/null @@ -1,5 +0,0 @@ -import OnYZ from "@site/cetz/docs/_generated/draw/projection/on-yz.mdx"; - -# on-yz - - diff --git a/docs/api/draw-functions/projections/on-zy.mdx b/docs/api/draw-functions/projections/on-zy.mdx new file mode 100644 index 000000000..fda5981c0 --- /dev/null +++ b/docs/api/draw-functions/projections/on-zy.mdx @@ -0,0 +1,5 @@ +import OnZY from "@site/cetz/docs/_generated/draw/projection/on-zy.mdx"; + +# on-zy + + diff --git a/docs/api/sidebar.js b/docs/api/sidebar.js index 535230e47..e91638917 100644 --- a/docs/api/sidebar.js +++ b/docs/api/sidebar.js @@ -97,7 +97,7 @@ export default [ "api/draw-functions/projections/ortho", "api/draw-functions/projections/on-xy", "api/draw-functions/projections/on-xz", - "api/draw-functions/projections/on-yz", + "api/draw-functions/projections/on-zy", ], }, { diff --git a/manual.pdf b/manual.pdf index 80e7a9fb8be5bf056587691ca492e57e53ac72af..35e58b80dd23971324148270381a65cf37aaa7dd 100644 GIT binary patch delta 18297 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 BTs!~( diff --git a/src/draw.typ b/src/draw.typ index a5c6888f8..30c3ffb14 100644 --- a/src/draw.typ +++ b/src/draw.typ @@ -2,5 +2,5 @@ #import "draw/transformations.typ": set-transform, transform, rotate, translate, scale, set-origin, move-to, set-viewport #import "draw/styling.typ": set-style, fill, stroke, register-mark #import "draw/shapes.typ": circle, circle-through, arc, arc-through, mark, line, grid, content, rect, bezier, bezier-through, catmull, hobby, merge-path, polygon, compound-path, n-star, rect-around, svg-path -#import "draw/projection.typ": ortho, on-xy, on-xz, on-yz +#import "draw/projection.typ": ortho, on-xy, on-xz, on-zy #import "draw/util.typ": assert-version, register-coordinate-resolver diff --git a/src/draw/projection.typ b/src/draw/projection.typ index 2f7017fb4..a32d63761 100644 --- a/src/draw/projection.typ +++ b/src/draw/projection.typ @@ -185,13 +185,15 @@ }, matrix.transform-rotate-x(90deg)) }) -/// Draw elements on the yz-plane with optional x offset. +/// Draw elements on the zy-plane with optional x offset. /// -/// All vertices of all elements will be changed in the following way: $mat(x_"argument", y, x)$, where $x_"argument"$ is the x-value given as argument. +/// All vertices of all elements will be changed in the following way: +/// $mat(x_"argument", y, x)$, where $x_"argument"$ is the x-value given +/// as argument. /// /// ```example /// ortho({ -/// on-yz({ +/// on-zy({ /// rect((-1, -1), (1, 1)) /// }) /// }) @@ -199,7 +201,7 @@ /// /// - x (number): X offset for all coordinates /// - body (element): Elements to draw -#let on-yz(x: 0, body) = get-ctx(ctx => { +#let on-zy(x: 0, body) = get-ctx(ctx => { let x = util.resolve-number(ctx, x) scoped-transform(body, if x != 0 { matrix.transform-translate(x, 0, 0) diff --git a/tests/projection-ortho/test.typ b/tests/projection-ortho/test.typ index 3e52bb5cb..8fb896348 100644 --- a/tests/projection-ortho/test.typ +++ b/tests/projection-ortho/test.typ @@ -68,7 +68,7 @@ import draw: * ortho({ axes(4) - on-yz({ + on-zy({ checkerboard() }) }) @@ -78,7 +78,7 @@ import draw: * ortho(sorted: true, { axes(4) - on-yz(x: -1, { + on-zy(x: -1, { checkerboard() }) on-xy(z: -1, { @@ -153,7 +153,7 @@ import draw: * ortho({ on-xz({ circle((0, 2, 2), name: "a") }) - on-yz({ circle((2, 0, 0), name: "b") }) + on-zy({ circle((2, 0, 0), name: "b") }) }) line("a", "b")