Commit be81c4d
Changed files (13)
layouts/mainmatter.typ
@@ -1,7 +1,7 @@
#import "@preview/i-figured:0.2.4"
#import "@preview/numbly:0.1.0": numbly
#import "@preview/hydra:0.6.1": hydra
-#import "../utils/style.typ": 字号, 字体
+#import "../utils/style.typ": 字体, 字号
#import "../utils/unpairs.typ": unpairs
#let mainmatter(
@@ -116,13 +116,20 @@
font: array-at(heading-font, it.level),
size: array-at(heading-size, it.level),
weight: array-at(heading-weight, it.level),
- ..unpairs(heading-text-args-lists.map(pair => (pair.at(0), array-at(pair.at(1), it.level)))),
+ ..unpairs(heading-text-args-lists.map(pair => (
+ pair.at(0),
+ array-at(pair.at(1), it.level),
+ ))),
)
set block(
above: array-at(heading-above, it.level),
below: array-at(heading-below, it.level),
)
- if it.level == 1 and it.numbering != none and counter(heading).display(it.numbering) != none {
+ if (
+ it.level == 1
+ and it.numbering != none
+ and counter(heading).display(it.numbering) != none
+ ) {
block({
counter(heading).display(it.numbering)
h(2em)
@@ -154,27 +161,25 @@
}
// 5. 页眉配置
- set page(
- header: {
- // 重置 footnote 计数器
- if reset-footnote {
- counter(footnote).update(0)
- }
- context {
- set text(font: fonts.宋体, size: 字号.小五)
- align(
- center,
- if calc.odd(here().page()) {
- hydra(skip-starting: false, use-last: true, 1)
- } else {
- info.title.join()
- },
- )
- }
- // 分隔线
- place(bottom, dy: 0.35em, line(length: 100%, stroke: 0.5pt))
- },
- )
+ set page(header: {
+ // 重置 footnote 计数器
+ if reset-footnote {
+ counter(footnote).update(0)
+ }
+ context {
+ set text(font: fonts.宋体, size: 字号.小五)
+ align(
+ center,
+ if calc.odd(here().page()) {
+ hydra(skip-starting: false, use-last: true, 1)
+ } else {
+ info.title.join()
+ },
+ )
+ }
+ // 分隔线
+ place(bottom, dy: 0.35em, line(length: 100%, stroke: 0.5pt))
+ })
set page(
numbering: "1",
layouts/preface.typ
@@ -1,4 +1,4 @@
-#import "../utils/style.typ": 字号, 字体
+#import "../utils/style.typ": 字体, 字号
#let preface(
// documentclass 传入的参数
pages/acknowledgement.typ
@@ -1,4 +1,4 @@
-#import "../utils/style.typ": 字号, 字体
+#import "../utils/style.typ": 字体, 字号
#import "../utils/invisible-heading.typ": invisible-heading
#let acknowledgement(
@@ -19,14 +19,21 @@
// 2. 正式渲染
pagebreak(weak: true, to: if twoside { "odd" })
- invisible-heading(level: 1, outlined: outlined, [#outline-title#metadata((en: outline-title-en))])
+ invisible-heading(level: 1, outlined: outlined, [#outline-title#metadata((
+ en: outline-title-en,
+ ))])
v(spacing)
align(center, text(size: 字号.小三, font: fonts.黑体)[致#h(1.5em)谢])
v(spacing * 2)
[
- #set par(justify: true, first-line-indent: (amount: 2em, all: true), leading: leading, spacing: spacing)
+ #set par(
+ justify: true,
+ first-line-indent: (amount: 2em, all: true),
+ leading: leading,
+ spacing: spacing,
+ )
#set text(size: 字号.小四, font: fonts.宋体)
#body
pages/bachelor-abstract-en.typ
@@ -1,4 +1,4 @@
-#import "../utils/style.typ": 字号, 字体, 英文
+#import "../utils/style.typ": 字体, 字号, 英文
#import "../utils/invisible-heading.typ": invisible-heading
// 本科生英文摘要页
@@ -21,14 +21,25 @@
// 2. 正式渲染
pagebreak(weak: true, to: if twoside { "odd" })
- invisible-heading(level: 1, outlined: outlined, [#outline-title#metadata((en: outline-title-en))])
+ invisible-heading(level: 1, outlined: outlined, [#outline-title#metadata((
+ en: outline-title-en,
+ ))])
v(spacing)
- align(center, text(size: 字号.小三, font: 英文(fonts.宋体), weight: "bold")[Abstract])
+ align(center, text(
+ size: 字号.小三,
+ font: 英文(fonts.宋体),
+ weight: "bold",
+ )[Abstract])
v(spacing * 2)
[
- #set par(justify: true, first-line-indent: (amount: 2em, all: true), leading: leading, spacing: spacing)
+ #set par(
+ justify: true,
+ first-line-indent: (amount: 2em, all: true),
+ leading: leading,
+ spacing: spacing,
+ )
#set text(size: 字号.小四, font: 英文(fonts.宋体))
#body
@@ -37,5 +48,9 @@
v(spacing)
text(size: 字号.小四, font: 英文(fonts.宋体), weight: "bold")[Key Words: ]
- text(size: 字号.小四, font: 英文(fonts.宋体), (("",) + keywords.intersperse("; ")).sum())
+ text(
+ size: 字号.小四,
+ font: 英文(fonts.宋体),
+ (("",) + keywords.intersperse("; ")).sum(),
+ )
}
pages/bachelor-abstract.typ
@@ -1,4 +1,4 @@
-#import "../utils/style.typ": 字号, 字体
+#import "../utils/style.typ": 字体, 字号
#import "../utils/invisible-heading.typ": invisible-heading
// 本科生中文摘要页
@@ -21,14 +21,21 @@
// 2. 正式渲染
pagebreak(weak: true, to: if twoside { "odd" })
- invisible-heading(level: 1, outlined: outlined, [#outline-title#metadata((en: outline-title-en))])
+ invisible-heading(level: 1, outlined: outlined, [#outline-title#metadata((
+ en: outline-title-en,
+ ))])
v(spacing)
align(center, text(size: 字号.小三, font: fonts.黑体)[摘#h(1.5em)要])
v(spacing * 2)
[
- #set par(justify: true, first-line-indent: (amount: 2em, all: true), leading: leading, spacing: spacing)
+ #set par(
+ justify: true,
+ first-line-indent: (amount: 2em, all: true),
+ leading: leading,
+ spacing: spacing,
+ )
#set text(size: 字号.小四, font: fonts.宋体)
#body
@@ -37,5 +44,9 @@
v(spacing)
text(size: 字号.小四, font: fonts.黑体)[关键词:]
- text(size: 字号.小四, font: fonts.宋体, (("",) + keywords.intersperse(";")).sum())
+ text(
+ size: 字号.小四,
+ font: fonts.宋体,
+ (("",) + keywords.intersperse(";")).sum(),
+ )
}
pages/bachelor-cover.typ
@@ -1,5 +1,5 @@
#import "../utils/datetime-display.typ": datetime-display-full
-#import "../utils/style.typ": 字号, 字体
+#import "../utils/style.typ": 字体, 字号
// 本科生封面
#let bachelor-cover(
@@ -62,9 +62,16 @@
v(3em)
// 将中文之间的空格间隙从 0.25em 调整到 1em
- text(size: 字号.小二, font: fonts.宋体, spacing: 400%, weight: "bold")[本 科 毕 业 #if isdesign [设 计] else [论 文]]
+ text(
+ size: 字号.小二,
+ font: fonts.宋体,
+ spacing: 400%,
+ weight: "bold",
+ )[本 科 毕 业 #if isdesign [设 计] else [论 文]]
v(0pt)
- if isminor { text(size: 字号.三号, font: fonts.宋体, weight: "bold")[(辅修)] }
+ if isminor {
+ text(size: 字号.三号, font: fonts.宋体, weight: "bold")[(辅修)]
+ }
v(2em)
@@ -72,7 +79,12 @@
v(1em)
- text(size: 字号.三号, font: fonts.宋体, info.title-en.join("\n"), weight: "bold")
+ text(
+ size: 字号.三号,
+ font: fonts.宋体,
+ info.title-en.join("\n"),
+ weight: "bold",
+ )
v(2em)
@@ -90,7 +102,8 @@
info-key-short("专业"), info.major,
info-key-short("年级"), info.grade + "级",
info-key-long("校内指导老师"), info.supervisor.join(" "),
- info-key-long("校外指导老师"), if info.supervisor-outside != () { info.supervisor-outside.join(" ") },
+ info-key-long("校外指导老师"),
+ if info.supervisor-outside != () { info.supervisor-outside.join(" ") },
),
)
pages/bachelor-integrity.typ
@@ -1,4 +1,4 @@
-#import "../utils/style.typ": 字号, 字体
+#import "../utils/style.typ": 字体, 字号
// 本科生诚信承诺书页
#let bachelor-integrity(twoside: false, fonts: (:)) = {
@@ -10,13 +10,23 @@
set page(margin: (x: 3cm, top: 2.5cm, bottom: 2cm))
- align(center, text(font: fonts.宋体, size: 字号.三号, weight: "bold", "厦门大学本科学位论文诚信承诺书"))
+ align(center, text(
+ font: fonts.宋体,
+ size: 字号.三号,
+ weight: "bold",
+ "厦门大学本科学位论文诚信承诺书",
+ ))
v(3em)
block[
#set text(font: fonts.宋体, size: 字号.四号)
- #set par(justify: true, first-line-indent: (amount: 2em, all: true), leading: 1.5em, spacing: 1.5em)
+ #set par(
+ justify: true,
+ first-line-indent: (amount: 2em, all: true),
+ leading: 1.5em,
+ spacing: 1.5em,
+ )
本人呈交的学位论文是在导师指导下独立完成的研究成果。本人在论文写作中参考其他个人或集体已经发表的研究成果,均在文中以适当方式
明确标明,并符合相关法律规范及《厦门大学本科毕业论文(设计)规范》。
pages/bachelor-outline-page-en.typ
@@ -1,5 +1,5 @@
#import "../utils/invisible-heading.typ": invisible-heading
-#import "../utils/style.typ": 字号, 字体
+#import "../utils/style.typ": 字体, 字号
#import "@preview/numbly:0.1.0": numbly
// 本科生英文目录
@@ -56,7 +56,9 @@
v(title-vspace)
// 目录样式
- set outline(indent: level => indent.slice(0, calc.min(level + 1, indent.len())).sum())
+ set outline(indent: level => indent
+ .slice(0, calc.min(level + 1, indent.len()))
+ .sum())
show outline.entry: entry => block(
above: above.at(entry.level - 1, default: above.last()),
below: below.at(entry.level - 1, default: below.last()),
@@ -70,14 +72,22 @@
size: size.at(entry.level - 1, default: size.last()),
weight: weight.at(entry.level - 1, default: weight.last()),
{
- if entry.prefix() not in (none, []) and entry.element.numbering != none {
+ if (
+ entry.prefix() not in (none, [])
+ and entry.element.numbering != none
+ ) {
let enentry-numbering-len = entry-numbering.len()
- let used-numbering = if entry.element.level <= enentry-numbering-len {
+ let used-numbering = if (
+ entry.element.level <= enentry-numbering-len
+ ) {
numbly(..entry-numbering)
} else {
entry.element.numbering
}
- numbering(used-numbering, ..counter(outline.target).at(entry.element.location()))
+ numbering(
+ used-numbering,
+ ..counter(outline.target).at(entry.element.location()),
+ )
h(gap)
}
{
@@ -99,7 +109,10 @@
}
},
)
- box(width: 1fr, inset: (x: .25em), fill.at(entry.level - 1, default: fill.last()))
+ box(width: 1fr, inset: (x: .25em), fill.at(
+ entry.level - 1,
+ default: fill.last(),
+ ))
entry.page()
},
gap: 0pt,
pages/bachelor-outline-page.typ
@@ -1,5 +1,5 @@
#import "../utils/invisible-heading.typ": invisible-heading
-#import "../utils/style.typ": 字号, 字体
+#import "../utils/style.typ": 字体, 字号
// 本科生中文目录
#let bachelor-outline-page(
@@ -53,7 +53,9 @@
v(title-vspace)
// 目录样式
- set outline(indent: level => indent.slice(0, calc.min(level + 1, indent.len())).sum())
+ set outline(indent: level => indent
+ .slice(0, calc.min(level + 1, indent.len()))
+ .sum())
show outline.entry: entry => block(
above: above.at(entry.level - 1, default: above.last()),
below: below.at(entry.level - 1, default: below.last()),
@@ -73,7 +75,10 @@
entry.body()
},
)
- box(width: 1fr, inset: (x: .25em), fill.at(entry.level - 1, default: fill.last()))
+ box(width: 1fr, inset: (x: .25em), fill.at(
+ entry.level - 1,
+ default: fill.last(),
+ ))
entry.page()
},
gap: 0pt,
pages/bilingual-bibliography.typ
@@ -12,7 +12,10 @@
allow-comma-in-name: false,
// 如果使用的 CSL 中,英文姓名中会出现逗号,请设置为 true
) = {
- assert(bibliography != none, message: "请传入带有 source 的 bibliography 函数。")
+ assert(
+ bibliography != none,
+ message: "请传入带有 source 的 bibliography 函数。",
+ )
// Please fill in the remaining mapping table here
mapping = (
@@ -45,7 +48,10 @@
// 后续的操作是对 string 进行的。
let ittext = to-string(it)
// 判断是否为中文文献:去除特定词组后,仍有至少两个连续汉字。
- let pureittext = ittext.replace(regex("[等卷册和版本章期页篇译间者(不详)]"), "")
+ let pureittext = ittext.replace(
+ regex("[等卷册和版本章期页篇译间者(不详)]"),
+ "",
+ )
let ittext = if pureittext.find(regex("\p{sc=Hani}{2,}")) != none {
ittext
} else {
@@ -121,7 +127,27 @@
"et al."
// 如果原文就是 `等.`,则仅需简单替换,不需要额外处理
// 如果原文 `等` 后没有跟随英文标点,则需要补充一个空格
- if not itt.text.last() in (".", ",", ";", ":", "[", "]", "/", "\\", "<", ">", "?", "(", ")", " ", "\"", "'") {
+ if not (
+ itt.text.last()
+ in (
+ ".",
+ ",",
+ ";",
+ ":",
+ "[",
+ "]",
+ "/",
+ "\\",
+ "<",
+ ">",
+ "?",
+ "(",
+ ")",
+ " ",
+ "\"",
+ "'",
+ )
+ ) {
" "
}
// 原文有英文句号时不需要重复句号,否则需要将匹配到的最后一个字符吐回来
template/thesis.typ
@@ -256,11 +256,11 @@ VSCode + Tinymist 需要先在官网#footnote[https://code.visualstudio.com/down
#figure(
{
- import "@preview/fletcher:0.5.8": diagram, node, edge
+ import "@preview/fletcher:0.5.8": diagram, edge, node
diagram(
cell-size: 15mm,
$
- G edge(f, ->) edge("d", pi, ->>) & im(f) \
+ G edge(f, ->) edge("d", pi, ->>) & im(f) \
G slash ker(f) edge("ur", tilde(f), "hook-->")
$,
)
@@ -380,7 +380,9 @@ $ F_n = floor(1 / sqrt(5) phi.alt^n). $
附录中图表和公式编号均以大写字母开头,区别于正文部分的编号。
-$ 1 / pi = (2 sqrt(2)) / (99^2) sum_(k=0)^oo ((4k)!) / (k!^4) (26390k + 1103) / (396^(4k)) $
+$
+ 1 / pi = (2 sqrt(2)) / (99^2) sum_(k=0)^oo ((4k)!) / (k!^4) (26390k + 1103) / (396^(4k))
+$
== 厦门大学本科毕业论文(设计)规范摘要#metadata((en: "Abstract of Xiamen University Undergraduate Dissertation (Design) Specification"))
utils/datetime-display.typ
@@ -8,7 +8,10 @@
// 显示全中文日期
#let datetime-display-full(date) = {
let cap-nums = "〇一二三四五六七八九".codepoints()
- str(date.year()).codepoints().map(n => cap-nums.at(n.to-unicode() - 48)).join()
+ str(date.year())
+ .codepoints()
+ .map(n => cap-nums.at(n.to-unicode() - 48))
+ .join()
"年"
numbering("一", date.month())
"月"
utils/style.typ
@@ -44,9 +44,21 @@
"STHeiti",
),
// 楷体
- 楷体: ((name: "Times New Roman", covers: "latin-in-cjk"), "KaiTi", "Kaiti SC", "STKaiti", "FZKai-Z03S"),
+ 楷体: (
+ (name: "Times New Roman", covers: "latin-in-cjk"),
+ "KaiTi",
+ "Kaiti SC",
+ "STKaiti",
+ "FZKai-Z03S",
+ ),
// 仿宋
- 仿宋: ((name: "Times New Roman", covers: "latin-in-cjk"), "FangSong", "FangSong SC", "STFangSong", "FZFangSong-Z02S"),
+ 仿宋: (
+ (name: "Times New Roman", covers: "latin-in-cjk"),
+ "FangSong",
+ "FangSong SC",
+ "STFangSong",
+ "FZFangSong-Z02S",
+ ),
// 等宽字体,用于代码块环境,一般可以等同于英文中的 Monospaced Font
// 这一行分别是「Courier New(Windows 等宽英文字体)」、「思源等宽黑体(简体)」、「思源等宽黑体」、「黑体(Windows)」、「黑体(MacOS)」
等宽: (