|
2 | 2 |
|
3 | 3 | #let HeiTi = "Noto Sans CJK SC"
|
4 | 4 | #let SongTi = "Noto Serif CJK SC"
|
| 5 | +#let KaiTi = "FZKai-Z03" |
5 | 6 |
|
6 | 7 | #let BUPTBachelorThesis(
|
7 | 8 | title-zh: "",
|
|
18 | 19 | ) = {
|
19 | 20 | set page(paper: "a4", margin: 2.5cm)
|
20 | 21 |
|
21 |
| - // Display Chinese abstract |
| 22 | + // =========== Chinese abstract =========== |
22 | 23 | set text(font: HeiTi, weight: "bold")
|
23 | 24 | align(center)[
|
24 | 25 | #text(size: 16pt, title-zh) \ \
|
|
34 | 35 | text(font: HeiTi, weight: "bold", size: 12pt, "关键词")
|
35 | 36 | text(size: 12pt,
|
36 | 37 | for value in keywords-zh {
|
37 |
| - box(width: 1em) + value |
| 38 | + h(1em) + value |
38 | 39 | }
|
39 | 40 | )
|
40 | 41 | pagebreak()
|
41 | 42 |
|
42 |
| - // Display English abstract |
| 43 | + // =========== English abstract =========== |
43 | 44 | set text(font: "Times New Roman", weight: "bold")
|
44 | 45 | align(center)[
|
45 | 46 | #text(size: 16pt, title-en) \ \
|
|
52 | 53 | text(font: "Times New Roman", weight: "bold", size: 12pt, "KEY WORDS")
|
53 | 54 | text(size: 12pt,
|
54 | 55 | for value in keywords-en {
|
55 |
| - box(width: 1em) + value |
| 56 | + h(1em) + value |
56 | 57 | }
|
57 | 58 | )
|
58 | 59 | pagebreak()
|
59 | 60 |
|
60 |
| - // Display contents |
| 61 | + // =========== Table of content =========== |
| 62 | + set page(numbering: "I") |
| 63 | + counter(page).update(1) |
| 64 | + align(center)[ |
| 65 | + #outline( |
| 66 | + title: text(font: HeiTi, weight: "bold", tracking: 2em, size: 16pt, [目录\ \ ]), |
| 67 | + depth: 3, |
| 68 | + ) |
| 69 | + ] |
| 70 | + pagebreak() |
| 71 | + |
| 72 | + // =========== Configure headings =========== |
| 73 | + let chineseNumMap(num) = { |
| 74 | + let chineseNum = ( |
| 75 | + "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", |
| 76 | + "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十") |
| 77 | + chineseNum.at(num - 1) |
| 78 | + } |
| 79 | + |
| 80 | + set heading(numbering: "1.1") |
| 81 | + show heading: it => locate(loc => { |
| 82 | + let levels = counter(heading).at(loc) |
| 83 | + |
| 84 | + // reset par first |
| 85 | + set par(first-line-indent: 0em) |
| 86 | + set text(font: HeiTi, weight: "bold") |
| 87 | + |
| 88 | + if it.level == 1 { |
| 89 | + align(center)[ |
| 90 | + #text(size: 16pt, [第#chineseNumMap(levels.at(0))章#h(1em)#it.body]) |
| 91 | + ] |
| 92 | + } else if it.level == 2 { |
| 93 | + numbering("1.1", ..levels) |
| 94 | + text(size: 14pt, h(1em) + it.body) |
| 95 | + } else { |
| 96 | + set par(first-line-indent: 2em) |
| 97 | + numbering("1.1", ..levels) |
| 98 | + text(size: 12pt, h(1em) + it.body) |
| 99 | + } |
| 100 | + }) |
| 101 | + |
| 102 | + // =========== Contents =========== |
61 | 103 | set page(numbering: "1")
|
62 | 104 | counter(page).update(1)
|
63 | 105 | body
|
|
0 commit comments