Universe

Create project in app

Typst 排版西安电子科技大学本科毕业设计(论文)与硕士学位论文(中文撰写)。 本科与硕士使用独立实现入口并放在同一个包中;typst init 的默认模板仍为硕士。

本模板不是学校官方发布,版式数值以学校发布的 Word / LaTeX 模板及配套规范为准;与官方模板存在差异的地方 逐条列在「与官方模板的差异」

硕士(学术 / 专业学位) 本科毕业设计(论文)
硕士预览:封面 / 目录 / 正文 本科预览:封面 / 目录 / 正文

特性

  • 本科与硕士独立版式:本科使用 150 × 247mm 版心、1.5 倍行距、页眉外侧页码与 0.75 磅单线;硕士保留 155 × 240.93mm 版心、固定 20 磅行距、页脚页码与双横线。
  • 学术学位 / 专业学位:一个参数切换,差异只在封面与题名页的字段。
  • 盲审模式:一个开关隐去封面、题名页与作者简介中的身份信息。
  • 图表公式自动编号:按章编号(图 2.1 / 表 2.1 / 式 (2-1)),插图索引、表格索引、 目录自动生成,交叉引用直接写 @标签
  • 参考文献:GB/T 7714-2015,写作样式由 Typst 内置引擎完成;中文文献「等」与英文文献 「et al.」自动区分。
  • 不依赖额外字体:全篇只用宋体、黑体、Times New Roman,按系统字体解析,不内置字体文件。

包含与不包含

范围 说明
硕士学位论文(中文撰写) 包含:封面、中英文题名页、声明、中英文摘要、插图索引、表格索引、符号对照表、缩略语对照表、目录、正文、附录、参考文献、致谢、作者简介
学术学位 / 专业学位 包含:由一个参数切换
盲审模式 包含:由一个开关控制
本科毕业设计(论文) 包含:可开关封面、中英文摘要、目录、正文、附录、参考文献、致谢;独立 bachelor 入口
本科装订独立表单 不包含:诚信书、任务书、中期检查表、成绩评定表、查重报告等由学院另行发放
博士学位论文 不包含
英文撰写的学位论文 不包含
开题报告 / 中期考核 / 答辩表格 不包含:不属于学位论文正文
详细中文摘要(单独装订) 不包含:学校规定与论文分开装订

环境要求

  • Typst 0.15 或更高版本。安装方式二选一:
    • 编辑器插件(推荐):VS Code / Cursor 安装 Tinymist Typst, 打开 .typ 文件即可实时预览,插件自带编译器。
    • 命令行brew install typst(macOS)、winget install --id Typst.Typst(Windows), 或参考 官方安装说明
  • 字体:系统自带即可。Windows 的 SimSun / SimHei,macOS 的 Songti SC / Heiti SC, Linux 安装 fonts-noto-cjk。模板不内置字体文件。

快速开始

包已提交 Typst Universe(typst/packages#5823), 发布后一条命令即可创建项目

typst init @preview/modern-xdu-thesis:0.1.0 my-thesis   # 硕士(默认模板)
cd my-thesis && typst compile thesis.typ                # 编译出 PDF

本科没有 [template] 入口(一个包只能声明一份默认模板,已留给硕士), 把 examples/bachelor-thesis.typ 复制到自己的项目后编译即可。

发布前(或想直接用仓库里的开发版):

git clone https://github.com/CoderJackZhu/modern-xdu-thesis
cd modern-xdu-thesis
bash dev/pkg-stage.sh                          # 把本仓库注册为本地 Typst 包,只需运行一次
typst compile --root . template/thesis.typ out.pdf               # 硕士默认模板
typst compile --root . examples/bachelor-thesis.typ bachelor.pdf # 本科独立示例

dev/pkg-stage.sh 把仓库挂到 Typst 的本地包目录,模板里的 @preview/modern-xdu-thesis:0.1.0 才能解析到当前工作区。脚本可重复运行,解除用 bash dev/pkg-stage.sh --remove

在线编辑(typst.app)

把项目上传到 Typst Web App 即可在线编辑、多人协作,不必安装任何东西。 但 Web App 没有本机字体:需要把宋体、黑体、Times New Roman 的字体文件一并上传到项目里 (Windows 在 C:\Windows\Fonts,macOS 在 /System/Library/Fonts/Library/Fonts), 否则正文会显示成方框(豆腐块)。字体有版权,仅供自己项目内使用。

本科独立入口

typst.toml[template] 仍指向硕士 template/thesis.typ。本科从包导出的独立 bachelor 模块进入,完整文件见 examples/bachelor-thesis.typ

学校官方校名标准字与校徽的再分发条款不可得,因此本包不附带这两项标识素材。请从 教务处官方下载页获取,或直接下载 毕业设计表格-全套.zip。 若直链失效,请回到官方下载页,下载名为 毕业设计表格-全套.zip 的附件。

解压外层文件 毕业设计表格-全套.zip,找到内层文件 1-1.西安电子科技大学本科毕业设计(论文)封皮模板(需装订).docx;将该 DOCX 打开为 ZIP (或把扩展名改为 .zip 后解压),取出 word/media/image1.jpeg(中文校名标准字)和 word/media/image2.png(校徽),分别放到自己项目的 assets/xdu-wordmark.jpegassets/xdu-emblem.png。然后用调用方构造的 path(...) 传给模板:

#import "@preview/modern-xdu-thesis:0.1.0": bachelor

#let (doc, cover, abstract, abstract-en, outline-page, mainmatter,
  appendix, references, acknowledgement) = bachelor.documentclass(
  cover-wordmark: path("assets/xdu-wordmark.jpeg"),
  cover-emblem: path("assets/xdu-emblem.png"),
  cover-enabled: true, // 学院封面不同时可设为 false,再自行插入封面
  info: (
    title: ("论文题目第一行", "论文题目第二行"),
    author: "张三",
    department: "电子工程学院",
    major: "电子信息工程",
    supervisor: ("李四", "王五"),
    class-id: "2101011",
    student-id: "21010100001",
    abstract: [这里填写中文摘要。],
    abstract-en: [English abstract...],
    keywords: ("关键词一", "关键词二", "关键词三"),
    keywords-en: ("keyword one", "keyword two", "keyword three"),
  ),
)

未传入某项素材时,对应位置会显示浅灰色占位框,位置和尺寸不变:校名标准字区域为 64.5 × 12.04mm,校徽区域为 42.1mm 正方形。也可以在单次调用时覆盖,例如 #cover(cover-wordmark: path("assets/xdu-wordmark.jpeg"), cover-emblem: path("assets/xdu-emblem.png"))

info 字段与硕士基本对应,本科特有的三项:

字段 说明
title 题目,多行写成数组 ("第一行", "第二行"),居中排在封面横线上
class-id / student-id 班级 / 学号,排在封面右上角
supervisor 导师,可写两人 ("李四", "王五")

其余字段(authordepartmentmajorabstractabstract-enkeywordskeywords-en)与硕士含义相同。cover-enabled: false 时封面整页不输出,也不会显示占位符, 可改为插入学院提供的官方封面。

本科正文一级标题只写 = 引言,模板自动生成“第一章 引言”;附录连续调用 appendix(...),会生成“附录 A / B / C”及图 A1、表 B2、式 (C-3)。

硕士配置论文信息

打开 template/thesis.typ,把 documentclass(...) 里的 info 换成你自己的信息:

字段 说明
title / title-en 中英文题目,多行写成数组 ("第一行", "第二行")
author / author-en 姓名 / 拼音
discipline / subdiscipline 一级学科 / 二级学科(学术学位)
domain 领域(专业学位)
degree-name 学位名称,如 "电子信息硕士"
supervisor 导师,("李四", "教授")
enterprise-supervisor 企业导师,仅专业学位使用;学术学位填 (none, none)
department 学院
submit-date 提交日期,(year: 2025, month: 6)
school-code / clc / student-id / secret-level 题名页左上角信息栏(西电代码 10701
abstract / keywords 中文摘要与关键词
abstract-en / keywords-en 英文摘要与关键词
notation 符号对照表,如 (("α", "路径损耗指数"), ("β", "衰减系数"))
abbreviations 缩略语对照表,如 (("MIMO", "Multiple-Input Multiple-Output", "多输入多输出"),)

硕士 author 可用 [自定义内容] 显示富文本。PDF Author 仅接收字符串或字符串数组; 其他类型的作者内容不写入元数据。blind: true 时 Author 留空,中文题名页的学号也隐藏。

关键词写成数组,模板会按「逗号 + 空格」分隔并处理末尾标点。

写作指南

学校对论文各部分的具体规定(题目字数、摘要篇幅、关键词个数、图表公式写法、参考文献数量、 作者简介要求、装订顺序、盲审注意事项等),以及哪些由模板自动满足、哪些必须自己保证, 见 写作要求。提交前可对照其中的自查清单逐项检查。

硕士页面顺序

前置与后置部分按下面的顺序调用,页与页之间用 #pagebreak(to: "odd") 分隔, 使每页都从奇数页开始:

#show: doc

#cover()
#pagebreak(to: "odd")
#title-cn()                     // 中文题名页
#pagebreak(to: "odd")
#title-en()                     // 英文题名页
#pagebreak(to: "odd")
#declaration()                  // 声明
#pagebreak(to: "odd")
#abstract()                     // 中文摘要(罗马页码从这一页起为 I)
#pagebreak(to: "odd")
#abstract-en()                  // ABSTRACT
#pagebreak(to: "odd")
#list-of-figures()              // 插图索引
#pagebreak(to: "odd")
#list-of-tables()               // 表格索引
#pagebreak(to: "odd")
#notation()                     // 符号对照表
#pagebreak(to: "odd")
#abbreviations()                // 缩略语对照表
#pagebreak(to: "odd")
#outline-page()                 // 目录

#show: mainmatter.with(header-title: "西安电子科技大学硕士学位论文")

= 第一章 绪论
这里填写正文内容。

#pagebreak(to: "odd")
#appendix()                     // 附录
#pagebreak(to: "odd")
#references()                   // 参考文献
#pagebreak(to: "odd")
#acknowledgement()              // 致谢
#pagebreak(to: "odd")
#bio()                          // 作者简介

template/thesis.typ 就是一份可运行的完整示例,直接改它即可。

本科页面顺序

#show: doc
#cover()
#pagebreak(to: "odd")
#counter(page).update(1) // 中文摘要从 i 开始;必须放在摘要页面之前
#abstract()
#pagebreak(to: "odd")
#abstract-en()
#pagebreak(to: "odd")
#outline-page()

#show: mainmatter
= 引言
这里填写正文内容。

#appendix(title: "补充材料", body: [这里填写附录内容。])
#pagebreak(to: "odd")
#acknowledgement()
#pagebreak(to: "odd")
#references(entries: ("作者. 题名[M]. 北京: 出版社, 1993.",))

封面默认输出并自动留空背面;未配置学校标识时显示固定尺寸的浅灰色占位框。 cover-enabled: falsecover() 不输出内容,可插入学院提供的官方封面。 完整示例见 examples/bachelor-thesis.typ

标题

编号由模板生成,正文里不要手写数字:

= 第一章 绪论          // 章号写在标题文字里
== 研究背景与意义       // 自动编号 1.1
=== 毫米波信道特性      // 自动编号 1.1.1
==== 路径损耗模型       // 自动编号(1),不进目录

上例是硕士写法。本科一级标题写 = 绪论,由 bachelor 入口自动补“第一章”。

图、表与公式

#figure(image("fig.png", width: 80%),
  caption: [毫米波大规模 MIMO 系统框图])      // 图题在下,编号「图 2.1」

#figure(table(columns: 3, [参数], [符号], [取值], [载波频率], [$f_c$], [28 GHz]),
  caption: [仿真参数设置])                    // 表题在上,「表 2.1」

$ bold(y) = bold(A) bold(h) + bold(n) $       // 公式编号「(2-1)」,右对齐

图、表、公式按章编号,正文中引用写 @标签。题注里可以正常引用文献, 插图索引与表格索引不会因此打乱参考文献的编号顺序。

需要让索引里显示更短的文字时(相当于 LaTeX 的 \caption[短]{长}),用 索引题注

#figure(rect(width: 5cm, height: 2.5cm),
  caption: 索引题注([系统框图], [毫米波大规模 MIMO 系统框图 @zhang2023]))

参考文献

标准为 GB/T 7714-2015。把文献写进 .bib 文件,正文用 #cite(<条目键>) 引用, 末尾在论文文件里构造好 bibliography,再交给 #references

正文中的引用示例 #cite(<koseki2002>)// 输出上标 [1]

#references(body: bibliography(
  "/refs.bib", style: "gb-7714-2015-numeric", title: none,
))

硕士和本科的 references 均只提供 body:entries: 两种文献输入,不接受 bib:。 在论文文件里构造 bibliography,相对路径按该文件所在目录解析;上例带 / 的路径按项目根解析。

也可以直接把排好的条目交给模板:

#references(entries: (
  "作者甲. 题名[M]. 北京: 出版社, 1993.",
  "作者乙. 题名[J]. 期刊, 2024, 1(1): 1-10.",
))

盲审模式

documentclass(blind: true) 即可。封面与中英文题名页隐去作者与导师姓名;致谢只保留标题; 中文题名页不显示学号;PDF 的 Author 属性留空(否则打开文件属性就能看到作者是谁); 作者简介中的本文作者姓名替换为「(盲审隐去)」,保留「第一作者」「第一发明人」等排序标记, 合作者署名按惯例保留。

author 写成字符串或字符串数组时,模板写入 PDF Author 属性;写成 markup(如 [自定义内容]) 时,富文本只用于页面显示,不写入元数据(PDF 的 Author 只接受字符串)。若你在 author 里自行 拼了身份信息,blind: true 只会跳过元数据与姓名栏,正文里自己写的内容仍需自行处理。

常见问题

编译时提示 unknown font family: simsun 之类的警告? 是字体回退链里本机没有的候选字体,属正常提示。只要正文没有出现方框(豆腐块)就不用处理。

中文显示成方框? 系统缺少中文字体。按上面的「环境要求」安装对应字体后重新编译。

参考文献列表是空的? 正文里没有用 #cite(<条目键>) 引用过文献。参考文献只收录被引用过的条目。

我不会 Typst,能直接用来写论文吗? 可以。日常使用只涉及「填字段」与「写标题正文」,.bib 之外几乎不需要语法知识。 语法参考 Typst 中文文档

怎么换成专业学位 / 学术学位?degree 参数。专业学位记得填 enterprise-supervisor,学术学位填 (none, none)

页数和 Word 排出来的不一样? 字体度量不同会导致换行位置有细微差异,可能相差一两页,属正常现象。

能改字体或字号吗? 可以但不建议,学校格式检查会核对字体名。字体映射在 utils/style.typ, 版式常量在 layouts/doc.typ,修改后请对照官方模板核对版式。

与官方模板的差异

说明
逐行位置 官方 PDF 嵌入 SimSun,本模板使用系统宋体,字体度量不同导致换行点不同,因此逐行位置无法逐行对齐;行距、字号、边界、章标题起排位置均一致
封面与声明 官方 LaTeX 模板有两代实现(2024.04 与新版重写版),本模板采用 2024.04 版与 Word 2025.01 版
符号对照表字号 本模板按《撰写要求》采用 12pt;官方 LaTeX 示例未包含此页
附录页 官方示例未包含附录页,其坐标按其它后置部分的统一规则处理
本科封面标识 校名标准字与校徽在官方封面里是图形(无文字层);因官方再分发条款不可得,本包不附带素材,用户可通过 cover-wordmark / cover-emblem 提供,未提供时显示固定尺寸占位框

目录结构

lib.typ          硕士包入口,并导出 bachelor 模块命名空间
bachelor.typ     本科独立实现入口,bachelor.documentclass(info:, cover-enabled:, cover-wordmark:, cover-emblem:)
bachelor/        本科专用版式、页面与正文规则(不导入硕士 layouts/pages)
layouts/         硕士页面版式核心
pages/           硕士各页面组件
utils/           字体映射与无状态共用工具
template/        硕士示例,也是 typst init 默认复制的目录
examples/        本科完整示例(手动复制使用)
写作要求.md       官方撰写要求对照表 + 提交前自查清单
dev/             仓库开发与验收工具(不进发布包)
docs/            格式规格、官方要求摘录与实现说明(不进发布包)

硕士从 template/thesis.typ 开始;本科复制 examples/bachelor-thesis.typ 到自己的项目。

参考资料

  • 西安电子科技大学《毕业设计手册》2019 与教务处优秀毕业设计(论文)Word 样例
  • 西安电子科技大学研究生院《研究生学位论文模板(2015 年修订版)2025.01 修订》及配套《撰写要求》
  • xduts —— 官方 LaTeX 模板
  • modern-nju-thesis —— 本模板的初始骨架(MIT)

反馈与许可

排版问题、版式差异请走 Issues。 报版式差异时请附上学校官方模板或规范的对应页,以便按同一依据复核。

代码以 MIT 许可发布。学校官方校名标准字与校徽不在本仓库或软件包内分发;用户应从学校官方 附件取得,并自行确认其使用范围。