This isn’t a very nice way to do it since it will quickly become tedious to enter a lot of text, but this can be used to get the result you want. Depending on what you use this for, there could be some ways to make it a bit easier to use (custom function that takes your data and formats it into a table).
(hello\
world)
#grid(
columns: 3,
rows: 1em, //Change this to match rest of the text
[(], [hello], none,
none, [world], [)]
)
While writing this up I had another idea, though I’m not sure it’s better. The opening parenthesis ( can be shifted to the left which then makes “hello” and “world” line up.
(hello\
world)
#let shift-left(body) = context {
let body-width = measure(body).width
place(
dx: -body-width,
body
)
}
#shift-left([(])hello\
world)