diff options
Diffstat (limited to 'java/prelude.typ')
-rw-r--r-- | java/prelude.typ | 46 |
1 files changed, 27 insertions, 19 deletions
diff --git a/java/prelude.typ b/java/prelude.typ index 027bfef..41eedc5 100644 --- a/java/prelude.typ +++ b/java/prelude.typ @@ -4,31 +4,39 @@ #apply(page-numbering: "(i)" , [ #align(center, [== Contents]) #let heading-format(content) = cellx(align: center + horizon, content) - #let col-aligns = (right, auto, center + horizon, center + horizon, auto) - #let preprocess-alist(l, lpno) = { - let i = 0 - let e = l.len() - 1 - let nl = () - while i < e { - let it = l.at(i) - i = i + 1 - let nit = l.at(i) - it.at(2) = [ #it.at(2) - #{nit.at(2) - 1} ] - it.push([]) - nl.push(it) + #let column-alignments = (right, auto, center + horizon, center + horizon, auto) + #let preprocess-alist(assignment-list, last-page-number) = { + let index = 0 + let last-index = assignment-list.len() - 1 + let page-number-list = () + while index < last-index { + let item = assignment-list.at(index) + let next-item = assignment-list.at(index + 1) + let starting-page-number = item.page-number + let finishing-page-number = next-item.page-number - 1 + page-number-list.push((starting-page-number, finishing-page-number)) + index = index + 1 } - l.at(e).at(2) = [ #{l.at(e).at(2)} - #lpno ] - l.at(e).push([]) - nl.push(l.at(e)) - nl + page-number-list.push((assignment-list.at(last-index).page-number, last-page-number)) + let new-assignment-list = () + index = 0 + for (start, end) in page-number-list { + let page-number = [#start - #end] + if start == end { page-number = [#start] } + let assignment = assignment-list.at(index) + let item = ([#{assignment.number}. ], assignment.description, page-number, [], []) + new-assignment-list.push(item) + index = index + 1 + } + new-assignment-list } - #list-of-assignments((l, lpno) => + #list-of-assignments((assignment-list, last-page-number) => tablex( columns: (3em, 1fr, 4em, 8em, 10em), stroke: 1pt + gray, - map-cols: (i, cells) => (cells.first(), ..cells.slice(1).map(cell => (..cell, align: col-aligns.at(i)))), + map-cols: (i, cells) => (cells.first(), ..cells.slice(1).map(cell => (..cell, align: column-alignments.at(i)))), heading-format[*Sl.* \ *No.*], heading-format[*Description*], heading-format[*Page No.*], heading-format[*Date*], heading-format[*Teacher’s* \ *Signature*], - ..preprocess-alist(l, lpno).flatten(), + ..preprocess-alist(assignment-list, last-page-number).flatten(), )) ]) |