improve NITRAC doc cover
This commit is contained in:
+66
-11
@@ -49,13 +49,17 @@
|
||||
#let cover(
|
||||
title: none, // 主标题(中文)
|
||||
title-en: none, // 主标题(英文,Source Code Pro 自行排版)
|
||||
subtitle: none, // 副标题
|
||||
subtitle: none, // 兼容旧调用:英文分册题名
|
||||
sub_title: none, // 中文分册题名
|
||||
sub_title_en: none, // 英文分册题名
|
||||
subtitle_en: none, // 兼容旧调用:英文分册题名
|
||||
logo: none, // 图片路径,如 image("logo.png")
|
||||
number: none, // 文档编号
|
||||
author: none, // 作者(可为单个字符串或数组)
|
||||
classification: none, // 密级,如 "内部"、"秘密"
|
||||
info: (:), // 附加信息字典,如 (学号: "123", 指导教师: "张三")
|
||||
date: none, // 日期
|
||||
part-info: none, // 兼容旧调用:分册题名
|
||||
fill: white, // 封面背景色
|
||||
decorate: true, // 是否绘制天蓝/暖橙网格装饰色块
|
||||
) = {
|
||||
@@ -165,6 +169,53 @@
|
||||
let title-rows = cn-rows + en-rows
|
||||
let title-end-y = (7 + title-rows) * unit + en-gap
|
||||
|
||||
let part-title-text = if sub_title != none { sub_title } else { none }
|
||||
let part-title-en = if sub_title_en != none {
|
||||
sub_title_en
|
||||
} else if subtitle_en != none {
|
||||
subtitle_en
|
||||
} else {
|
||||
subtitle
|
||||
}
|
||||
let part-box = if part-title-text != none or part-title-en != none or part-info != none {
|
||||
let part-lines = ()
|
||||
if part-title-text != none {
|
||||
part-lines.push(text(
|
||||
font: (cover-cjk, cover-latin), size: 18pt, fill: black,
|
||||
)[#part-title-text])
|
||||
}
|
||||
if part-title-en != none {
|
||||
let part-en = text(
|
||||
font: (cover-latin, cover-cjk), size: 18pt, fill: black,
|
||||
)[#part-title-en]
|
||||
let part-en-inner = {
|
||||
set par(leading: 0.3em)
|
||||
part-en
|
||||
}
|
||||
part-lines.push(box(
|
||||
width: 10.5cm - unit - 0.0 * unit,
|
||||
part-en-inner,
|
||||
))
|
||||
}
|
||||
if part-lines.len() == 0 and part-info != none {
|
||||
part-lines.push(text(
|
||||
font: (cover-cjk, cover-latin), size: 18pt, fill: black,
|
||||
)[#part-info])
|
||||
}
|
||||
let part-value = stack(dir: ttb, spacing: 0.35 * unit, ..part-lines)
|
||||
box(
|
||||
width: 10.5cm - unit,
|
||||
inset: (left: 0.25 * unit, right: 0.25 * unit),
|
||||
align(left + top, part-value),
|
||||
)
|
||||
} else { none }
|
||||
let part-y = title-end-y + 0.5 * unit
|
||||
let part-height = if part-box != none { measure(part-box).height } else { 0pt }
|
||||
if part-box != none {
|
||||
place(top + left, dx: unit, dy: part-y, part-box)
|
||||
}
|
||||
let part-end-y = part-y + part-height
|
||||
|
||||
let metadata = ()
|
||||
if number != none { metadata.push(("编号", number)) }
|
||||
if author != none {
|
||||
@@ -177,7 +228,7 @@
|
||||
if value != none { metadata.push((str(key), value)) }
|
||||
}
|
||||
let marker-height = 2 * unit
|
||||
let info-y = title-end-y + 0.45 * unit
|
||||
let info-y = part-end-y + 0.45 * unit
|
||||
|
||||
let cells = ()
|
||||
for (label, value) in metadata {
|
||||
@@ -191,7 +242,9 @@
|
||||
)[#value])
|
||||
}
|
||||
let info-content = if metadata.len() > 0 {
|
||||
box(width: 21cm - 1.5 * unit,
|
||||
box(
|
||||
width: 21cm - 8.5 * unit,
|
||||
inset: (left: 0.25 * unit, right: 0.25 * unit),
|
||||
align(left + top, grid(
|
||||
columns: (auto, 1fr),
|
||||
column-gutter: 0.6em,
|
||||
@@ -205,11 +258,7 @@
|
||||
// 左侧笔画与右侧笔画一样保持固定高度,不再随标题行数拉伸。
|
||||
// 标志在第七格独立收尾;下方长条依据文档信息的实际高度紧凑起笔。
|
||||
tri(0, 6, "tr", sky)
|
||||
let strip-y = if metadata.len() > 0 {
|
||||
info-y + info-height + 0.18 * unit
|
||||
} else {
|
||||
7 * unit
|
||||
}
|
||||
let strip-y = part-end-y + 0.18 * unit
|
||||
let strip-height = 29.7cm - strip-y
|
||||
place(top + left, dy: strip-y, polygon(
|
||||
fill: sky, stroke: none,
|
||||
@@ -240,17 +289,23 @@
|
||||
)[signed]
|
||||
let signed-size = measure(signed-label)
|
||||
place(top + left,
|
||||
dx: unit + signature-line-length - signed-size.width,
|
||||
dx: unit,
|
||||
dy: meta-y + apex-y - signed-size.height - 0.04 * unit,
|
||||
signed-label)
|
||||
|
||||
// 三角形保留在距页底七个单位的位置,作为独立的封面装饰。
|
||||
// 文档信息不再与三角形连线,而是跟随主标题实际高度,排列在标题正下方。
|
||||
|
||||
place(top + left, dx: 1.25 * unit, dy: info-y, info-content)
|
||||
place(
|
||||
top + left,
|
||||
dx: unit + signature-line-length,
|
||||
dy: meta-y + apex-y + 0.3 * unit,
|
||||
info-content,
|
||||
)
|
||||
}
|
||||
|
||||
tri(2, 6, "tl", sky)
|
||||
}
|
||||
tri(2, 6, "tl", sky)
|
||||
}
|
||||
|
||||
pagebreak(weak: true)
|
||||
|
||||
Reference in New Issue
Block a user