Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 9 additions & 8 deletions ruby.typ
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@
}
}

let rb_array = if type(rb) == "content" {
let rb_array = if type(rb) == content {
let (inner, func) = extract_content(rb)
inner.split(delimiter).map(func)
} else if type(rb) == "string" {
} else if type(rb) == string {
rb.split(delimiter)
} else {(rb,)}
assert(type(rb_array) == "array")
assert(type(rb_array) == array)

let rt_array = rt.split(delimiter)

Expand All @@ -37,22 +37,23 @@
h(1fr)
}

box(style(st=> {
context{
box({
let sum_body = []
let sum_width = 0pt
let i = 0
while i < rb_array.len() {
let (body, ruby) = (rb_array.at(i), rt_array.at(i))
let bodysize = measure(body, st)
let rt_plain_width = measure(text(size: size, ruby), st).width
let bodysize = measure(body)
let rt_plain_width = measure(text(size: size, ruby)).width
let width = if rt_plain_width > bodysize.width {rt_plain_width} else {bodysize.width}
let chars = if(alignment=="around") {
h(0.5fr) + ruby.clusters().join(gutter) + h(0.5fr)
} else {
ruby.clusters().join(gutter)
}
let rubytext = box(width: width, align(if(alignment=="start"){left}else{center}, text(size: size, chars)))
let textsize = measure(rubytext, st)
let textsize = measure(rubytext)
let dx = textsize.width - bodysize.width
let (t_dx, l_dx, r_dx) = if(alignment=="start"){(0pt, 0pt, dx)}else{(-dx/2, dx/2, dx/2)}
let (l, r) = (i != 0, i != rb_array.len() - 1)
Expand All @@ -69,7 +70,7 @@
i += 1
}
sum_body
}))
})}
}

#let get_ruby(
Expand Down