{"contents":"#import \"@preview/cuti:0.4.0\": show-cn-fakebold\n\n// 图片函数,自动添加图注\n#let fig(image-path, caption: \"\", width: auto) = {\n figure(\n image(image-path, width: width),\n caption: text(font: (\"Times New Roman\", \"SimHei\"), size: 12pt)[#caption],\n supplement: [图],\n numbering: (..nums) =\u003e {\n let values = nums.pos()\n if values.len() == 1 {\n context {\n let section = counter(heading).get()\n if section.len() \u003e= 2 {\n numbering(\"1-1-1\", section.at(0), section.at(1), values.at(0))\n } else if section.len() == 1 {\n numbering(\"1-1\", section.at(0), values.at(0))\n } else {\n numbering(\"1\", values.at(0))\n }\n }\n }\n }\n )\n}\n\n// 表格函数,自动添加表注\n#let tbl(content, caption: \"\") = {\n figure(\n content,\n caption: text(font: (\"Times New Roman\", \"SimHei\"), size: 12pt)[#caption],\n supplement: text(font: \"SimHei\")[表],\n numbering: (..nums) =\u003e {\n let values = nums.pos()\n if values.len() == 1 {\n context {\n let section = counter(heading).get()\n if section.len() \u003e= 2 {\n numbering(\"1-1-1\", section.at(0), section.at(1), values.at(0))\n } else if section.len() == 1 {\n numbering(\"1-1\", section.at(0), values.at(0))\n } else {\n numbering(\"1\", values.at(0))\n }\n }\n }\n },\n kind: table,\n placement: auto,\n )\n}\n\n#let report(\n name: \"\",\n class: \"\",\n id: \"U202\",\n contact: \"(电子邮件)\",\n title: \"\",\n extratitle: none,\n scoretable:[],\n signature: none, // 签名图片路径,如 \"signature.png\"\n title-size: 26pt, // 标题字号,默认 26pt,可改为 25pt\n body\n) = {\n\n show: show-cn-fakebold\n show heading.where(level: 1): it =\u003e {\n if query(heading.where(level: 1)).first() != it {\n pagebreak()\n }\n set text(font: (\"Times New Roman\", \"SimHei\"), size: 18pt)\n set align(center)\n set block(below: 1em)\n it\n }\n\n show heading.where(level: 2): it =\u003e {\n counter(figure.where(kind: image)).update(0)\n counter(figure.where(kind: table)).update(0)\n counter(math.equation).update(0)\n set text(font: (\"Times New Roman\", \"SimHei\"), size: 14pt)\n set block(above: 1.5em, below: 1.5em)\n it\n }\n\n show heading.where(level: 3): it =\u003e {\n set text(font: (\"Times New Roman\", \"SimHei\"), size: 12pt, weight: \"bold\")\n set block(above: 1.5em, below: 1.5em)\n it\n }\n\n show heading.where(level: 4): it =\u003e {\n set text(font: (\"Times New Roman\", \"SimHei\"), size: 12pt, weight: \"bold\")\n set block(above: 1.5em, below: 1.5em)\n it\n }\n\n set page(\n paper: \"a4\",\n margin: (x: 2.5cm, y: 3cm),\n numbering: none,\n header: context {\n if counter(page).get().first() \u003e 1 [\n #align(center)[#text(font: (\"SimHei\"), size: 10.5pt)[网络空间安全学院#title]]\n #block(line(length: 100%, stroke: 0.5pt), above: 0.6em, below: 1.5em)\n ]\n },\n )\n\n set text(\n font: (\"Times New Roman\", \"SimSun\"),\n size: 12pt,\n lang: \"zh\",\n )\n\n set par(\n justify: true,\n leading: 1.5em,\n spacing:1.5em,\n first-line-indent: (amount: 2em, all: true),\n )\n\n // 设置代码块行距\n show raw.where(block: true): it =\u003e {\n set par(leading: 0.5em)\n it\n }\n\n // 设置列表缩进,与正文保持一致\n set list(indent: 2em)\n set enum(indent: 2em)\n\n show heading: set block(\n above: 0.7em,\n below: 0.9em,\n )\n\n // 设置图片和表格居中\n show figure.where(kind: image): set align(center)\n show figure.where(kind: table): set align(center)\n\n // 设置块级数学公式编号(标号在右侧)\n set math.equation(numbering: (..nums) =\u003e {\n let values = nums.pos()\n if values.len() == 1 {\n context {\n let section = counter(heading).get()\n if section.len() \u003e= 2 {\n numbering(\"(1-1-1)\", section.at(0), section.at(1), values.at(0))\n } else if section.len() == 1 {\n numbering(\"(1-1)\", section.at(0), values.at(0))\n } else {\n numbering(\"(1)\", values.at(0))\n }\n }\n }\n })\n\n set heading(numbering: (..nums) =\u003e {\n let values = nums.pos()\n if values.len() == 1 {\n str(values.at(0)) + \"、\"\n } else if values.len() == 2 {\n str(values.at(0)) + \".\" + str(values.at(1))\n } else {\n numbering(\"1.1.1\", ..nums)\n }\n })\n\n\n // --- 标题页 ---\n align(center)[\n #v(3em)\n #text(font: \"SimSun\", size: 26pt, weight: \"bold\")[\n 华 中 科 技 大 学\n ]\n\n #text(font: \"SimSun\", size: 26pt)[\n *网络空间安全学院*\n ]\n\n #v(5em)\n\n #text(font: \"FangSong\", size: title-size)[\n 本科:#title\n ]\n ]\n\n v(2em)\n\nif extratitle != none [#align(center)[#text(font:\"SimSun\",size:22pt)[\n 题目:#extratitle\n]]] else {v(4em)}\n\n v(6em)\n \nalign(center)[#text(font:\"FangSong\",size:16pt)[\n #set par(spacing: 1.5em)\n #context {\n let info_width = calc.max(\n measure[#name].width,\n measure[#class].width,\n measure[#id].width,\n measure[#contact].width\n ) + 1em\n [姓#h(2em)名 #box(width: info_width, align(center)[#name])\n\n 班#h(2em)级 #box(width: info_width, align(center)[#class])\n\n 学#h(2em)号 #box(width: info_width, align(center)[#id])\n\n 联系方式 #box(width: info_width, align(center)[#contact])\n\n 分#h(2em)数 #box(width: info_width, align(center)[#line(length: info_width)])\n\n 评#h(0.5em)分#h(0.5em)人 #box(width: info_width, align(center)[#line(length: info_width)])]\n }\n]]\n\n v(3em)\n align(center)[#text(font:\"SimSun\", size:14pt)[\n #datetime.today().display(\"[year] 年 [month] 月 [day] 日\")\n ]]\n\n pagebreak()\n v(3em)\n align(center)[#text(size:18pt,weight:\"bold\")[\n 课程设计报告要求\n #v(1em)\n ]]\n text(size:14pt,weight:\"bold\")[\n #set par(spacing:2em,leading:2em)\n \\1. 报告不可以抄袭,发现雷同者记为0分。\n \n \\2. 报告中不可以只粘贴大段代码,应是文字与图、表结合的,需要 \n\n 说明流程的时候,也应该用流程图或者伪代码来说明;如果发现有\n\n 大段代码粘贴者,报告打回重写。\n\n \\3. 报告格式要求规范。\n ]\n\n pagebreak()\n scoretable\n pagebreak()\n // --- 目录 ---\n {\n show outline.entry.where(level: 1): it =\u003e {\n set text(weight: \"bold\")\n it\n }\n show outline: it =\u003e {\n show heading: set align(center)\n show heading: set text(font: \"SimHei\")\n it\n }\n outline(\n title: [目#h(2em) 录],\n indent: auto,\n )\n }\n\n counter(page).update(1) // 目录后的第一个正文页记为1\n set page(numbering: \"1\")\n\n // --- 正文 ---\n body\n\n pagebreak()\n\n // --- 原创性声明 ---\n align(center)[\n #text(font:\"FangSong\",size: 18pt)[\n 原创性声明\n ]\n ]\n\n v(1em)\n\n text(font:\"FangSong\")[\n 本人郑重声明本报告内容,是由作者本人独立完成的。有关观点、方法、数据和文献等的引用已在文中指出。除文中已注明引用的内容外,本报告不包含任何其他个人或集体已经公开发表的作品成果,不存在剽窃、抄袭行为。\n\n 已阅读并同意以下内容。\n\n 判定为不合格的一些情形:\n\n (1)请人代做或冒名顶替者;\n\n (2) 替人做且不听劝告者;\n\n (3) 实验报告内容抄袭或雷同者;\n\n (4) 实验报告内容与实际实验内容不一致者;\n\n (5) 实验代码抄袭者。\n\n #v(2em)\n\n #grid(\n columns: (auto, 1fr),\n gutter: 1em,\n text(fill: red,font:\"FangSong\")[*作者签名:*],\n if signature != none [\n #align(left)[#image(signature, width: 3cm)]\n ]\n )\n ]\n}\n","is_binary":false,"path":"template.typ","ref":""}