Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add taper to decorations.brace #828

Open
janosh opened this issue Mar 2, 2025 · 0 comments
Open

Add taper to decorations.brace #828

janosh opened this issue Mar 2, 2025 · 0 comments
Assignees

Comments

@janosh
Copy link
Contributor

janosh commented Mar 2, 2025

i like the tapering ends and spike of math.underbrace. how about adding a taper argument to decorations.brace to achieve a similar look

Image

  // Left brace for p(H)
  decorations.brace(
    "p-not-e-given-h.north-west",
    "p-not-e-given-h.north-east",
    pointiness: -5deg,
    outer-pointiness: -5deg,
    name: "brace-ph",
    amplitude: 0.3,
  )
  content(
    "brace-ph.north",
    text(fill: black)[$p(H)$],
    anchor: "south",
  )

  // Right brace for p(¬H)
  content(
    "p-not-e-given-not-h.north",
    text(fill: black, math.overbrace(box(width: 7.5em), $p(not H)$)),
    name: "brace-not-ph",
    padding: (5pt, 0, 15pt),
  )
full code
#import "@preview/cetz:0.3.2": canvas, draw, decorations
#import draw: rect, content, line

#set page(width: auto, height: auto, margin: 3pt)

#set text(fill: white)

#canvas({
  // Define dimensions
  let width = 8
  let height = 5
  let left-col-width = 2
  let right-col-width = 2
  let mid-col-width = width - left-col-width - right-col-width
  let gap = 1 // Gap between middle and right column

  let left-x = 0
  let mid-x = left-col-width
  let right-x = width - right-col-width

  // Define vertical divisions
  let p-e-height = height / 2
  let p-h-e-height = height * 3 / 8

  let colors = (
    orange: rgb("#FFA500"),
    teal: rgb("#008080"),
    dark-blue: rgb("#1E2F4F"),
    dark-gray: rgb("#404040"),
    darker-blue: rgb("#363399"),
    darkest-gray: rgb("#171717"),
  )

  // Left column - p(H)
  rect((left-x, 0), (mid-x, p-e-height), fill: colors.orange, stroke: white, name: "p-e-given-h")
  content("p-e-given-h", $p(E|H)$)

  rect((left-x, p-e-height), (mid-x, height), fill: colors.teal, stroke: white, name: "p-not-e-given-h")
  content("p-not-e-given-h", $p(not E|H)$)

  // Middle column - p(¬H)
  rect((mid-x, 0), (right-x - gap, p-e-height / 2), fill: colors.dark-blue, stroke: white, name: "p-e-given-not-h")
  content("p-e-given-not-h", $p(E|not H)$)

  rect(
    (mid-x, p-e-height / 2),
    (right-x - gap, height),
    fill: colors.dark-gray,
    stroke: white,
    name: "p-not-e-given-not-h",
  )
  content("p-not-e-given-not-h", $p(not E|not H)$)

  // Right column - posterior probabilities
  rect((right-x, 0), (width, p-h-e-height), fill: colors.darker-blue, stroke: white, name: "p-h-given-e")
  content("p-h-given-e", $p(H|E)$)

  rect((right-x, p-h-e-height), (width, height), fill: colors.darkest-gray, stroke: white, name: "p-not-h-given-e")
  content("p-not-h-given-e", $p(not H|E)$)

  // Left brace for p(H)
  decorations.brace(
    "p-not-e-given-h.north-west",
    "p-not-e-given-h.north-east",
    pointiness: -5deg,
    outer-pointiness: -5deg,
    name: "brace-ph",
    amplitude: 0.3,
  )
  content(
    "brace-ph.north",
    text(fill: black)[$p(H)$],
    anchor: "south",
  )

  // Right brace for p(¬H)
  content(
    "p-not-e-given-not-h.north",
    text(fill: black, math.overbrace(box(width: 7.5em), $p(not H)$)),
    name: "brace-not-ph",
    padding: (5pt, 0, 15pt),
  )
})
@johannes-wolf johannes-wolf self-assigned this Mar 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants