#import "@local/template-thesis-matisse:0.0.1": * // Format number. // Following https://www.mit.edu/course/21/21.guide/numbers.htm #let num(n, decimal: ".", thousands: " ") = { let n = if type(n) == str { float(n) } else { n } assert(type(n) == int or type(n) == float, message: "must be a number") let parts = str(n).split(".") let decimal_p = if parts.len() == 2 { parts.at(1) } let integer_p = parts.at(0) let integer_p = if integer_p.len() <= 4 { integer_p } else { let nb_cluster = calc.div-euclid(integer_p.len(), 3) let first_cluster_size = calc.rem-euclid(integer_p.len(), 3) let clusters = () if first_cluster_size != 0 { clusters.push(integer_p.slice(0, count: first_cluster_size)) } for i in range(0, nb_cluster) { clusters.push(integer_p.slice(first_cluster_size + i*3, count: 3)) } clusters.join(thousands) } let formated = integer_p + if decimal_p != none { decimal + decimal_p } [#formated] } #let mypercent(numerator, denominator, digits: 2) = [#num(calc.round((100 * numerator) / denominator, digits: digits))%]