Universe
Create project in app

为什么使用Typst

因为语法足够简单(简单易学)、编译器体积小(随取随用)、且速度足够快(实时预览)!

关于本论文模板

本模板参考中国农业大学毕业论文模板要求编写,符合学校要求。对于其中一些可以灵活修改的格式,本模板也提供了配置项,具体详见模板使用方法。模板的效果见sample.pdf文件:点击直达

⚠️ 但是,本模板为个人编写使用,没有完全适配自动化逻辑和模块化代码,可能仍旧存在部分情况排版不合理。如果您在使用过程中遇到问题,可以提交issue说明,也欢迎pull request贡献。

如果该模板对您有帮助并愿意支持我的工作,可以在这里buy me a coffee,十分感谢😊!

使用方法

  1. Typst可以使用线上WebApp或本地下载编译器后进行编写,本地编写需要下载安装编译器到本地,并将exe格式的编译器添加到环境变量,以方便调用

  2. 下载该仓库到本地目录或WebApp的工作目录中,可以使用git命令或该页面上方的Code按钮直接下载

    git clone https://github.com/JWangL5/CAU-ThesisTemplate-Typst.git
    
  3. 安装本模板所使用的相关字体(/fonts文件夹内字体)

    PS:受限于中文字体的衬线问题,目前版本的Typst暂不支持多数中文字体的加粗,这里使用了其他加粗字体作为替代,可以直接双击字体文件打开后安装

  4. 本地编写时,建议使用vscode及Typst配套插件(Typst-LSP、Typst Preview)

  5. 通过编写main.typ文件完成论文的撰写,在该文件中,使用import命令引入模板,并修改配置项

    • kind:填写"本科""硕士""博士",其会对应修改封面和页眉处的信息
    • title:论文标题,填写在括号[text]内,使用\换行
    • abstract:论文摘要,需要手动写关键词
    • authors:论文作者姓名,可以[text],也可以"text"
    • teacher:指导教师的姓名
    • degree:申请学位门类级别,比如[理学硕士]
    • college, major, field:封面上的内容,学院、专业和研究方向
    • signature:你的电子签名文件路径,是论文独创性声明处的签字
    • classification & security:论文在图书馆收录时的中图法分类和保密级别
    • student_ID:学号
    • year, month, day:论文封面和诚信声明页上的日期
    • draft:填写true时添加草稿水印,用以区分是否为最终版本,填写false时去除水印并添加论文章
    • blindReview:填写为true时隐藏封面上的相关信息,以及致谢和作者介绍
  6. 使用typst命令生成pdf格式文件,或直接使用vscode的实时预览插件(默认快捷键ctrl+k v

    typst compile ./sample.typ
    

Typst编写简易指南

如果在使用Typst时遇到任何问题,都可以参考官方帮助文档,下面是简要的使用方法及与本模板相关的配套设置,可以参考的示例文档sample.typ

  • 关于标题:Typst使用=作为标题的指示符。本模板中,一级标题需要手动编号,二、三级标题则不需要

    = 第一章 一级标题
    == 二级标题
    === 三级标题
    
  • 段落的编写:直接输入文本即可编写内容,使用两个回车另起一段

    这是内容的第一段,
    这仍旧是第一段的内容
    
    多一个换行符号后另起为第二段
    
  • 文字内容的基础格式:使用*text*包括住的文字可以加粗,使用_text_包括住的文字可以斜体文字,使用#u[text]包括住的文字可以实现下划线,使用#sub[text]包括住的文字修改为下标,使用#super[text]包括住的文字修改为上标

    这里是*加粗文字*内容,
    这里是_斜体文字_内容,
    这里是#u[下划线文字]内容,
    这里是#sub[下标文字]内容,
    这里是#super[上标文字]内容
    
  • 使用#highlight(fill: red)[text]高亮文字标记,使用fill参数修改高亮颜色

    这一段文字#highlight[还需要修改]
    
  • 使用#link("your link here")[text]标记超链接

    这里是#link("https://typst.app/home")[Typst官方网站]
    
  • 使用-+使用无序列表或有序列表,使用Tab缩进为二级列表

    - 无序列表1
        + 有序列表1
        + 有序列表2
    - 无序列表2
    
  • 使用#h(2em)#v(1em)来添加水平或垂直的空白缩进,括号中的参数为需要空出的距离,其单位可以使用%(页面百分比),pt(点,印刷行业的绝对长度单位,相当于1/72英寸),em(字符长度,相对于当前字符大小)等

    #h(2em)默认格式会首行缩进两字符,额外添加会再次缩进
    
  • 模板支持自动汇总图表目录,可以使用#figure(image())命令来添加图片或使用#booktab()添加表格,在填写既定的配置项后可成功渲染并自动汇总目录页,可以使用@引用图表

    #figure(
        image('./image/path.jpg', width: 90%),
        kind: image, 
        supplement: [],
        caption: [图片的标题],
    )<img1>
    
    #booktab(
        width:60%,
        columns: (20%, 1fr, 2fr, 3fr),
        caption: [这里填写表格名称],
        kind: table, 
        [1], [2], [3], [4],
        [a], [b], [c], [d],
        [e], [f], [g], [h],
        [i], [j], [k], [l]
    )<tab1>
    
  • 使用$编写数学公式,$符紧跟内容时为行内公式,添加空格后为行间公式,公式的具体规则和符号可以查帮助文档

    泰勒展开式(行内):
    $f(x)= sum_(n=0)^(infinity) (f^(n)(x_0))/(n!) (x-x_0)^n$
    
    欧拉公式(行间):
    $ e^(i theta) = cos theta + i sin theta \ e^i pi + 1 = 0 $
    
  • 使用```code``` 标识符输入代码,Typst可以渲染、显示代码框,如果指定了语言类型,可以根据其语法格式进行风格渲染;使用单个符号使用行内代码

      ```python
        print("hello world");
      ```
    同样支持行内代码`hello world`
    
  • 修改ref\acronyms.json文件添加缩略词表,并使用#acro("keyword1")命令在文中引入缩略词全称,在引入后会自动根据json文件中信息,排序后添加到缩略词表中

    {
        "keyword1":["英文缩写1", "英文全称1", "中文翻译1"],
        "keyword2":["英文缩写2", "英文全称2", "中文翻译2"]
    }
    
    在正文中可以使用`#acro`命令引入缩略词(#acro("ac"))。
    
  • 使用#[bibliography]()添加参考文献,括号中需要填写.bib格式的参考文献列表,在文中使用@citationKey引用,具体的信息见帮助文档

    PS:可以使用zotero+Better BibTex自动导出/更新.bib格式的参考文献列表

    PS:在添加bib的代码后面,隐藏了一个heading,请不要删除这一行,否则参考文献的页眉会出错

    PS:根据学院要求默认使用EmboJ的格式,如果需要其他格式,只要下载到格式说明.csl文件修改参数即可

  • 当文本内容仅有1页时,有时页眉标题会出错,可以添加一个空白标题进行修正

    #heading(level: 6, numbering: none, outlined: false)[]
    

致谢

本模板在编写过程中参考并学习了Typst模板的部分代码,在这里统一致谢。