An (unofficial) Typst template for lab reports at the School of Cyber Science and Engineering, Huazhong University of Science and Technology (HUST).
此项目是华中科技大学网络空间安全学院实验/实践报告的通用Typst 模板。
计算机学院的大多数课现已提供了统一的 LaTeX 模板,不过考虑到网安没有新生实践课,而 LaTeX 具有一定的上手曲线。并且 LaTeX 无敌慢的本地编译速度,以及本地安装相对麻烦也都是问题。
我相信很多同学都遇到过自己轻松一弄格式就乱掉了,然后调个行距段距和对齐怎么都调不明白。事实上,由于小学初中信息课都光顾着玩电脑了,我的 Word 熟练度相当一般。而事实证明网安学院老师们的 Word 也并不熟练,从制作出来的模板千奇百怪就可见一斑。
作为一个泛CS专业的学生,如果更习惯文本编辑器的工作流。那么 Typst 非常适合你,它旨在成为 LaTeX 的现代替代。Typst 帮助我们实现了格式分离,事实上你要输入的只是纯文本的报告内容,而不需要操心任何格式上的问题。并且Typst的上手曲线也非常平滑。在肉眼可见的未来,甚至有取代LaTeX之势。
由于网页端 typst.app 并不包含微软字体,因为更推荐在本地撰写和编译。如果你使用的是VSCode,可以通过 Tinymist 插件预览。Tinymist也同样支持绝大多数文本编辑器,
当然,考虑到这是一个通用模板,对于具体的课程,你要对着老师给的模板填充一部分文字构成该课程的具体模板。不过一旦制作完成,你可以把模板分享给同学,无需重复劳动。
这个模板基本上严格符合学院官方的实验报告要求。需要注意的是,根据具体的课程不同,有的老师给你的Word模板可能有问题,比如缺少报告要求页,比如甚至采用汉字来进行排序编号,比如标题甚至不是仿宋,但这只是老师给的模板错误,我个人觉得我们仍然应该使用正确的模板。
datetime.today() 渲染$ $ 包裹)会自动添加右侧编号:目前评分表格的格式千奇百怪,所以无法提供一种统一的模板(但是你可以让 AI 帮你写,我推荐 Claude,只有它比较会写 Typst)。
此模板需要你的电脑里有 Fangsong, SimSun, SimHei, Times New Roman 等 Windows 字体。如果你用的 Windows系统,那么这些本来就预装了。
在当前目录初始化项目:
typst init @preview/modern-hust-cse-report
指定自定义目录名称:
typst init @preview/modern-hust-cse-report my-report
在已有 Typst 项目中导入该模板并填写信息:
#import "@preview/modern-hust-cse-report:0.1.0": report, fig, tbl
#show: report.with(
name: "李华",
class: "网安2101",
id: "U2020XXXXX",
contact: "user@example.com",
scoretable:[
// 评分表要用 Typst 格式写在这里
// 如果有课程目标评价标准、评分标准等内容,也都写在这里
// 如果有多页内容,记得使用 #pagebreak() 分页
],
title: "《密码硬件综合实践》报告",
signature: "signature.png", // 签名图片路径,设置为 none 则不显示签名
)
= 第一章
== 第一节
正文内容……
// 插入图片
#fig("image.png", caption: "这是图片标题", width: 80%)
// 这将自动显示为:图1-1-1:这是图片标题
// 插入表格
#tbl(
table(
columns: 3,
[姓名], [学号], [成绩],
[张三], [001], [95],
[李四], [002], [88],
),
caption: "学生成绩表"
)
// 这将自动显示为:表1-1-1:学生成绩表
// 插入数学公式(块级公式会自动编号)
$ E = m c^2 $
// 这将自动显示为:E = m c^2 (1-1-1)
使用 fig 函数插入图片,它会自动添加格式化的图注:
#fig("path/to/image.png", caption: "图片描述", width: 80%)
caption: 图片标题(必填)width: 图片宽度,可以是百分比或绝对值(可选,默认 auto)图x-y-z,其中 x 是一级标题编号,y 是二级标题编号,z 是该节内的图片序号使用 tbl 函数插入表格,它会自动添加格式化的表注:
#tbl(
table(
columns: 3,
[列1], [列2], [列3],
[数据1], [数据2], [数据3],
),
caption: "表格描述"
)
content: 表格内容(使用 Typst 的 table() 函数创建)caption: 表格标题(必填)表x-y-z,其中 x 是一级标题编号,y 是二级标题编号,z 是该节内的表格序号