first commit
This commit is contained in:
165
labtemplate.typ
Normal file
165
labtemplate.typ
Normal file
@@ -0,0 +1,165 @@
|
||||
#let times = "Times New Roman"
|
||||
#let song = (times, "Noto Serif CJK SC")
|
||||
#let hei = (times, "Noto Sans CJK SC")
|
||||
#let kai = (times, "Noto Serif CJK SC")
|
||||
#let xbsong = (times, "Noto Serif CJK SC")
|
||||
#let fsong = (times, "Noto Serif CJK SC")
|
||||
#let code = (times, "Maple Mono NF CN")
|
||||
|
||||
#let requirement_report(
|
||||
title: "",
|
||||
author: "",
|
||||
id: "",
|
||||
grade: "",
|
||||
major: "",
|
||||
department: "",
|
||||
advisor: "",
|
||||
version: "V1.0",
|
||||
date: "",
|
||||
header_str: "",
|
||||
body) = {
|
||||
|
||||
// Set the document's basic properties.
|
||||
set document(author: author, title: title)
|
||||
set page(
|
||||
margin: (left: 30mm, right: 30mm, top: 30mm, bottom: 30mm),
|
||||
)
|
||||
|
||||
// Title row.
|
||||
v(158pt)
|
||||
align(center)[
|
||||
#block(text(weight: 700, size: 30pt, font: hei, tracking: 15pt, "网络应用开发"))
|
||||
]
|
||||
align(center)[
|
||||
#block(text(weight: 700, size: 30pt, font: song, tracking: 15pt, ""))
|
||||
]
|
||||
|
||||
v(103pt)
|
||||
pad(
|
||||
left: 1em,
|
||||
right: 1em,
|
||||
grid(
|
||||
columns: (80pt, 1fr),
|
||||
rows: (17pt, auto),
|
||||
text(weight: 700, size: 16pt, font: song, "项目名称:"),
|
||||
align(center, text(weight: "regular", size: 16pt, font: song, title)),
|
||||
text(""),
|
||||
line(length: 100%)
|
||||
)
|
||||
)
|
||||
|
||||
// Author information.
|
||||
v(82.5pt)
|
||||
|
||||
grid(
|
||||
columns: (0.25fr, 0.25fr, 0.25fr, 0.25fr),
|
||||
rows: (15pt, 8pt, 15pt, 8pt, 15pt, 8pt, 15pt, 8pt),
|
||||
text(size: 14pt, font: song, tracking: 10pt, "开发小组"),
|
||||
align(center, text(size: 14pt, font: song, author)),
|
||||
text(size: 14pt, font: song, tracking: 10pt, "小组成员"),
|
||||
align(center, text(size: 12pt, font: song, id)),
|
||||
text(""),
|
||||
line(length: 100%),
|
||||
text(""),
|
||||
line(length: 100%),
|
||||
|
||||
text(size: 14pt, font: song, tracking: 54pt, "专业"),
|
||||
align(center, text(size: 14pt, font: song, major)),
|
||||
text(size: 14pt, font: song, tracking: 54pt, "年级"),
|
||||
align(center, text(size: 14pt, font: times, grade)),
|
||||
text(""),
|
||||
line(length: 100%),
|
||||
text(""),
|
||||
line(length: 100%),
|
||||
|
||||
text(size: 14pt, font: song, tracking: 9pt, "所属学院"),
|
||||
align(center, text(size: 14pt, font: song, department)),
|
||||
text(size: 14pt, font: song, tracking: 9pt, "指导教员"),
|
||||
align(center, text(size: 14pt, font: song, advisor)),
|
||||
text(""),
|
||||
line(length: 100%),
|
||||
text(""),
|
||||
line(length: 100%),
|
||||
|
||||
text(size: 14pt, font: song, tracking: 20pt, "版本号"),
|
||||
align(center, text(size: 14pt, font: song, version)),
|
||||
text(size: 14pt, font: song, tracking: 9pt, "编写时间"),
|
||||
align(center, text(size: 14pt, font: song, date)),
|
||||
text(""),
|
||||
line(length: 100%),
|
||||
text(""),
|
||||
line(length: 100%),
|
||||
)
|
||||
|
||||
v(35pt)
|
||||
align(center)[#image("figures/logo-long.png", width: 6cm)]
|
||||
|
||||
pagebreak()
|
||||
|
||||
set page(
|
||||
margin: (left: 30mm, right: 30mm, top: 30mm, bottom: 30mm),
|
||||
numbering: "i",
|
||||
number-align: center,
|
||||
)
|
||||
|
||||
v(14pt)
|
||||
align(center)[
|
||||
#block(text(font: hei, size: 14pt, "《项目需求分析报告》编写说明"))
|
||||
]
|
||||
|
||||
v(14pt)
|
||||
text("")
|
||||
par(first-line-indent: 2em, text(font: song, size: 12pt, "项目需求分析报告应符合以下要求:"))
|
||||
|
||||
par(first-line-indent: 2em, text(font: fsong, size: 12pt, "(1)采用A4(21cm×29.7cm)白色复印纸。页边距均为3cm;正文字号为小4号,中文宋体,英文Times New Roman,每页30行,页码居中。"))
|
||||
|
||||
par(first-line-indent: 2em, text(font: fsong, size: 12pt, "(2)报告主要涵盖:引言(目的、背景)、项目概述(功能、环境)、功能性需求(详细功能描述)、非功能性需求(性能、安全、可靠性)以及外部接口需求。"))
|
||||
|
||||
par(first-line-indent: 2em, text(font: fsong, size: 12pt, "(3)应结合图表(如UML用例图、流程图)对需求进行辅助说明,图表需有编号和名称。"))
|
||||
|
||||
pagebreak()
|
||||
|
||||
set page(
|
||||
margin: (left: 30mm, right: 30mm, top: 30mm, bottom: 30mm),
|
||||
numbering: "1",
|
||||
number-align: center,
|
||||
)
|
||||
|
||||
set heading(numbering: "1.1")
|
||||
|
||||
show heading: it => box(width: 100%)[
|
||||
#v(0.50em)
|
||||
#set text(font: hei)
|
||||
#if it.numbering != none {
|
||||
counter(heading).display()
|
||||
h(0.5em)
|
||||
}
|
||||
#it.body
|
||||
]
|
||||
// Main body.
|
||||
set par(justify: true, first-line-indent: 2em)
|
||||
|
||||
body
|
||||
}
|
||||
|
||||
#let para(t) = par(text(font: song, size: 10.5pt, t))
|
||||
|
||||
#let abstract-keywords(abstract: none, keywords: "") = {
|
||||
if abstract != none {
|
||||
place(
|
||||
top + center,
|
||||
scope: "parent",
|
||||
float: true,
|
||||
block(width: 100%)[
|
||||
#set par(justify: true, first-line-indent: 0pt)
|
||||
#text(font: hei, size: 10.5pt)[【摘 要】]
|
||||
#text(font: song, size: 9pt)[#abstract]
|
||||
|
||||
#v(0.8em)
|
||||
#text(font: hei, size: 10.5pt)[【关键词】]
|
||||
#text(font: hei, size: 10.5pt)[#keywords]
|
||||
#v(1.5em)
|
||||
]
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user