Typst入门简明教程

文章目录

  • 写在前面
  • 对比阅读
  • 安装
    • Typst的安装
    • 系统路径设置
    • VSCode的设置
  • 用Typst写作
    • 节指令
    • 图指令
    • 表指令
    • 公式指令
    • 参考文献指令
    • 引用指令
      • 节的标签
      • 图、表、公式的标签
      • 参考文献的标签
    • Typst编译
  • Typst的`<label>`写法建议
  • 写在最后:Typst、LaTex和Word的比较

写在前面

Typst是一种排版语言(可用于出版与学术写作的可编程标记语言),与LaTex和Word类似。两位德国的研究生感觉LaTex太臃肿了,安装包都要几个G,编译速度很慢,于是决定自己开发一种用于学术写作的编程语言,也就是Typst。
在这里插入图片描述
真有意思。说自己“Just for fun”,然后开始开发自己的编程语言,免受LaTex臃肿运行的烦恼。

来讲讲Typst的优点吧。

  • 编译快速。Typst使用Rust语言编写,这也是Typ(e+ru)st为什么叫Typst的原因,
  • 体量轻便。本地离线Typst安装包仅有14mb(截止2024年2月10日),可以十分迅速地部署在自己的设备上。
  • 语法简洁。上手难度与Markdown相当,语法简洁,可阅读性强。语法简洁带来的另一个好处是可以自己修改文档的样式,并且明白修改了什么样式,而LaTex必须前往浩如烟海的.cls文件中阅读意义不明代码,小心翼翼地进行修改。
  • 编程简单。如果将LaTex类比为C++,Typst可以类比为Python。Typst的编程过程不拘泥于固定的表达式,可以通过多种多样灵活的编程方式实现自己的目的,提高写作效率。
  • 社区开放。Typst的社区十分活跃,每个用户都可以在上面提出修改意见,而且Typst团队的更新频率很高, 几个月前的版本和现在的版本比起来丰富了太多功能,简直日新月异。

当然,Typst也有缺点。

  • 支持度不高。因为它是一种新的排版语言,期刊对它的支持度不高。大多数期刊不提供Typst模板,只有Word模板和LaTex模板,因此要用Typst写英文论文可能存在论文风格不匹配的问题,需要自己设置样式。

  • 中文匹配差。此外,Typst对中文的支持程度仍然存在不足之处,没有像Word那么如指臂使。

但是,不管怎么说,作为一种新的可以用来排版的语言,学习一下Typst,掌握一项新技能,总不是一件坏事儿。

那么在这里对Typst进行简明扼要地介绍,期望读者看完这篇文章之后可以达到使用Typst进行初步写作的水平。

对比阅读

  1. LaTex的使用。
  2. Word的使用。

安装

Typst可以在官网的app(https://typst.app/)上写作,写作结束之后导出pdf即可。这样存在的一个问题是,要是没有网络怎么办?加上Typst官网在国外,在国内进入Typst官网不太稳定,所以我安装了一个离线版Typst使用,这样更加方便。

我用的是VSCode+Typst。

Typst的安装

首先,在Typst的github(https://github.com/typst/typst)里下载Typst的安装包。

找到Releases,点进去。
在这里插入图片描述
点进去之后往下拉,看见Assets,选择typst-x86_64-pc-windows-msvc.zip,点击下载。

在这里插入图片描述

typst-x86_64-pc-windows-msvc.zip下载好之后,解压安装包,将包里面的文件放在想要放的盘符里。我放在了C盘里,新建了一个typst文件夹用来放Typst的程序。

在这里插入图片描述

好,到这里Typst的安装就结束了。总结来说就俩步:下载、解压。是不是很简单。

系统路径设置

记住刚才解压文件的位置,拿我电脑上的Typst举例,可执行文件typst.exe的路径为C:\Software\typst,在系统变量环境的Path中添加该路径即可。

在这里插入图片描述

配置完毕后,打开电脑终端(win+r 输入 cmd),输入typst,如果显示如下画面,则说明导入路径成功。

在这里插入图片描述

VSCode的设置

接下来是VSCode的设置。

打开VSCode,找到扩展,搜索Typst LSP,点击下载。下载完毕之后,启用即可。

在这里插入图片描述

因为我自己电脑上原来配置好了LaTex,因此PDF查看器已经设置好了。如果没有相应的PDF查看器,可以再在扩展中安装一个名为Typst Preview的应用。

至此,Typst的前期准备工作全部完成。

下面可以开始Typst的编写了。

用Typst写作

好了,假如现在要写一篇IEEE的会议论文,一篇完整的论文包括文字、图片、表格、数学公式、参考文献,最后还要设置好符合IEEE会议论文的风格。

那么现在,打开VSCode,创建一个新项目,可以命名为con_paper.typ。注意嗷,Typst的文件后缀名是.typ

和LaTex的教程一样,我这里介绍几种最常用的指令,学会这几种就可以写出一篇完整的学术论文了。

要介绍的指令有以下6种:

  1. 节指令:===、…
  2. 图指令:#figure()
  3. 表指令:#table()
  4. 公式指令:$...$
  5. 参考文献指令:.bib
  6. 引用指令:@...

节指令

Typst的节指令很简单,输入= xxx,即认为该文字为一级标题;

输入== xxx,即认为该文字为二级标题;

输入=== xxx即认为该文字是三级标题。

图指令

通常写法是下面这样子。

#figure(
  image("/images/kanji_to_riga.jpg", width: 50%),
  caption: [
    Story of Tokyo
  ],
) <fig:tokyo>

从上往下讲解。

  • @figure()代表插入图形的框架。
  • image("/images/kanji_to_riga.jpg", width: 50%)说明了要插入的图片及其宽度,可以用相对路径,宽度为50%。
  • caption: [Story of Tokyo]:说明了图的文字说明。
  • <fig:tokyo>说明了插入图形的标签,用于引用。

效果如下图所示。

在这里插入图片描述

表指令

通常写法是下面这样子。

#table(
    columns: (0.25fr,0.25fr,0.25fr,0.25fr),
    inset: 10pt,
    align: center,
    [$t$],[1],[2],[3],
    [$y$],[0.3s],[0.4s],[0.8s],
)

从上往下讲解。

  • #table()代表插入表的框架。
  • columns: (0.25fr,0.25fr,0.25fr,0.25fr)说明表格有四列,每一列的宽度是0.25fr,即25%的剩余空间,也可以简单地写成columns: 4
  • inset: 10pt说明填充单元格的空间,这里设置了10pt,即10磅的空间,默认为5pt。
  • align: center:说明单元格的对齐方式,这里设置了居中对齐,一般用居中对齐,也可以设置其他的对齐方式。
  • [$t$],[1],[2],[3][$y$],[0.3s],[0.4s],[0.8s]说明了表格的内容。

通过上面的代码,可以得到下面的表格。

在这里插入图片描述

但是,这样的表格存在三个问题:

  1. 表格整体是向左对齐,没有居中;
  2. 表格没有说明文字;
  3. 表格不能引用。

为了解决上面三个问题,需要使用如下代码。

#figure(
  table(
    columns: (0.25fr,0.25fr,0.25fr,0.25fr),
    inset: 10pt,
    align: center,
    [$t$],[1],[2],[3],
    [$y$],[0.3s],[0.4s],[0.8s],
  ),
  caption: [Timing results],
)<tab:timing_results>

即在图形中插入表格,让表格带上说明文字。Typst会检测到插入了表格的图形,并且使用单独的计数器。效果如下所示。

在这里插入图片描述

最后一个问题,Typst的表格如果没有导入相应的包的话,只能制作成上图所示效果,没有办法制作三线表。如果要制作三线表的话,还需要额外导入包tablex

公式指令

通常写法是下面这样子。

$ r=a(1-sin theta) $

上面的公式写出来是这样子。
r = a ( 1 − sin ⁡ θ ) r=a(1-\sin \theta) r=a(1sinθ)
Typst的公式编写比LaTex简单,只需要用到$符号。

**但是!!!有一点要注意!!!**如果要让公式有编号,必须是$(空格)...(空格)$才可以,如果没有空格的话,那Typst会认为这是一个行内公式,就会嵌在行内了!

在这里插入图片描述

上面是行间公式的表达方式,代码如下。

The love equation is $ r=a(1-sin theta), $ where $r$ represents the polar radius, $t$ represents the polar angle, and $a$ is the constant.

如果担心看不出来是行间公式的话,也可以写成下面这个样子。

The love equation is 
$ r=a(1-sin theta), $ 
where $r$ represents the polar radius, $t$ represents the polar angle, and $a$ is the constant.

行内公式是下面这样的效果。

在这里插入图片描述

代码如下。

The love equation is $r=a(1-sin theta),$ where $r$ represents the polar radius, $t$ represents the polar angle, and $a$ is the constant.

行间公式和行内公式写法太容易混淆了!所以在写公式的过程中一定要注意空格。推荐行间公式用第二种写法。

Typst和LaTex在写公式上的区别还体现在没有那么多\了,比方说要写 α \alpha α,就直接写alpha即可,不用写\alpha。减轻了一些工作量,也让源码更加易读。

但是这同样存在一个问题。不能和Word通用。LaTex编写的公式,可以在Word中使用Mathtype转成供Word所用的公式,Word中的公式也可以方便地转换成LaTex能用的公式,但Typst的公式编写方式还不支持与LaTex和Word的互相转换。虽然Typst编写公式很方便,也可以使用函数式编程来快速完成复杂的数学公式,比如:
7.32 β + ∑ i = 0 ∇ ( Q i ( a i − ε ) ) 2 7.32 \beta + \sum_{i=0}^{\nabla} \frac{(Q_i (a_i - \varepsilon))}{2} 7.32β+i=02(Qi(aiε))
Typst的写法是这样。

$ 7.32 beta + sum_(i=0)^nabla (Q_i (a_i - epsilon)) /2 $

LaTex的写法是这样。

\begin{equation}
	7.32 \beta + \sum_{i=0}^{\nabla} \frac{(Q_i (a_i - \varepsilon))}{2}
\end{equation}

显然Typst的代码更加简洁,更加容易阅读。

但是问题也在这里,Word的Mathtype识别不了。万一对方不接受Typst编写的文档,要求我们提供Word版文档,在公式的重新编写上就会消耗大量时间。

另外,Typst的公式符号比LaTex的公式符号更加简洁,比如 ≤ \le ≥ \ge → \rightarrow ← \leftarrow ,这样的符号在Typst中可以写成

$ =< $
$ => $
$ -> $
$ <- $

Typst的符号可以在https://typst.app/docs/reference/symbols/sym/查到。

不会写公式的话……我觉得都开始用Typst了,肯定会用LaTex写公式,所以Typst的公式编写对于会用LaTex的人来说没有任何难度。这里就不展开讲了。(os:会的不用教,不会的怎么教也教不会……)

参考文献指令

和LaTex一样,只有一行指令:#bibliography("xxx.bib")xxx.bib代表参考文献文件,和LaTex一样,也是用.bib文件,我一般会取bibliography.bib。各期刊网站都会给出论文的bibtex格式,导出的时候选择bibtex即可。

同样地,在bibliography.bib里写入一篇文献。

@article{long2018performance,
  title={Performance analysis for minimally nonlinear irreversible refrigerators at finite cooling power},
  author={Long, Rui and Liu, Zhichun and Liu, Wei},
  journal={Physica A: Statistical Mechanics and its Applications},
  volume={496},
  pages={137--146},
  year={2018},
  publisher={Elsevier}
}

第一行 long2018performance 就是要在正文中引用文献的关键字。在Typst正文中,引用方式为@long2018performance,即可引用该文献。代码如下。

The acknowledgment in @long2018performance is very romantic.

效果如下图所示。

在这里插入图片描述

引用指令

Typst的引用统统都可以用@...来表示。这点和LaTex有区别,LaTex有有 3 种,\cite{}\ref{}\eqref{}。Typst大力出奇迹,什么节啊图啊表啊公式啊文献啊,都是用@...引用,唯一要注意的就是打标签的方式。

节的标签

通常写在每一节的后面,例如:

= Introduction
<sec:intro>

== Literature review
<subsec:review>

图、表、公式的标签

写在图、表的最后,例如:

// 图的标签
#figure(
  image("fig1.jpg", width: 100%),
  caption: [
    Changes curves of the optimal control reinforcements on both sides
  ],
)<fig:u_and_v>

// 表的标签
#figure(
  table(
    columns: (0.25fr,0.25fr,0.25fr,0.25fr),
    inset: 10pt,
    align: center,
    [$t$],[1],[2],[3],
    [$y$],[0.3s],[0.4s],[0.8s],
  ),
  caption: [Timing results],
)<tab:timing_results>

// 公式的标签
$ r=a(1-sin theta) $ <eq:heart>

标签写好之后,在正文中用@...引用一下即可。

参考文献的标签

使用bibTex的写法,引用key值即可。

Typst编译

现在开始编译Typst文件。我用的是VSCode,按照文章前述内容配置好之后,只需要按下ctrl+s,Typst就会自动编译。编译后的内容会自动出现在.pdf文件中,如果没有出现,刷新一下.pdf即可。

如果这样的方法不行,可以打开VSCode的终端,先将路径设置在该typst文件所在位置,输入

typst c xxx.typ

xxx.typ是用户自定义的typst文件名。

Typst的<label>写法建议

和LaTex一样,建议<label>标签按照如下原则编写。

  • 节(section):sec:name
  • 子节(subsection):subsec:name
  • 子子节(subsubsection):subsubsec:name
  • 图(figure):fig:name
  • 表(tab):table:name
  • 公式(equation):eq:name
  • 算法(algorithm):algo:name
  • 定义(definition):defi:name
  • 定理(theorem):theo:name
  • 引理(lemma):lma:name
  • 证明(proof):prf:name
  • 备注(remark):rmk:name
  • 假设(assumption):asp:name

写在最后:Typst、LaTex和Word的比较

现在大家最常用的文档编辑软件是Word,不论是Office的Word还是WPS的Word,都是Word。Word的优点是写了什么,就看见什么,很直观。但是Word是一种上手容易,精通很难的软件,也就是下限低,上限低。用Word写个文档大家都会,但是怎么把Word编辑得好看且高效,同样是一门十分需要花心思的工作。但是大多数人不太明白Word怎么用,因此在协同工作的时候,遇见一些写得不太“优雅”的Word文档就会很头痛。

LaTex属于一种下限高,上限也很高的文档编辑语言。下限高的原因是文档风格已经有成熟的文件定义好了,我们只需要往里面填字就好。上限高的原因是如果要自己动手改风格文件,就会面对浩如烟海的.cls文件代码。如果不对LaTex的底层运转逻辑搞得一清二楚的话,修改风格文件会举步维艰。

Typst是一种轻量的文档编辑语言,还比较新兴,市面上对这款语言的认可度不高,支持度也不高。不过从我已知的概念出发,觉得它兼顾了Python和Markdown的优点(没用过Rust,就不妄评Rust了),解释性好,可读性高。未来的发展怎么样,还要看市面对它的支持度高不高。

好了,就这么多!祝大家编写Typst文档顺利!

欢迎通过邮箱联系我:lordofdapanji@foxmail.com

来信请注明你的身份,否则恕不回信。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/493308.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试经典150题【111-120】

文章目录 面试经典150题【111-120】67.二进制求和190.颠倒二进制位191.位1的个数136.只出现一次的数字137.只出现一次的数字II201.数字范围按位与5.最长回文子串97.交错字符串72.编辑距离221.最大正方形 面试经典150题【111-120】 六道位运算&#xff0c;四道二维dp 67.二进制…

未能加载文件或程序集socutdata或它的某一个依赖项试图加载格式不正确的程序

未能加载文件或程序集socut data或它的某一个依赖项试图加载格式不正确的程序 Socut.Data.dll找不到类型或命名空间名称 把bin目录下面 的socut.data.dll删除就行了 C#报错未能加载文件或程序集socut data或它的某一个依赖项试图加载格式不正确的程序 "/"应用程序…

逐步学习Go-并发通道chan(channel)

概述 Go的Routines并发模型是基于CSP&#xff0c;如果你看过七周七并发&#xff0c;那么你应该了解。 什么是CSP&#xff1f; "Communicating Sequential Processes"&#xff08;CSP&#xff09;这个词组的含义来自其英文直译以及在计算机科学中的使用环境。 CSP…

Android Studio详细安装教程及入门测试

Android Studio 是 Android 开发人员必不可少的工具。 它可以帮助开发者快速、高效地开发高质量的 Android 应用。 这里写目录标题 一、Android Studio1.1 Android Studio主要功能1.2 Android应用 二、Android Studio下载三、Android Studio安装四、SDK工具包下载五、新建测试…

Live800:设计与管理客户忠诚度计划,提升客户满意度与忠诚度

在当今竞争激烈的商业环境中&#xff0c;吸引新客户的成本远高于保留现有客户。因此&#xff0c;设计并实施一套有效的客户忠诚度计划&#xff0c;以提升客户满意度和忠诚度&#xff0c;已经成为企业获得长期成功的关键。文章将探讨如何设计和实施客户忠诚度计划&#xff0c;以…

ehters.js:provider

ethers.jsV5.4文档 安装ethers npm install ethers5.4.0// 引入 import { ethers } from ethersProviders /** Provider类* Provider类是对以太坊网络连接的抽象&#xff0c;为标准以太坊节点功能提供简洁、一致的接口。 */ const provider new ethers.providers.Web3Provider…

【QT入门】 Qt代码创建布局之水平布局、竖直布局详解

往期回顾&#xff1a; 【QT入门】 Qt实现自定义信号-CSDN博客 【QT入门】 Qt自定义信号后跨线程发送信号-CSDN博客 【QT入门】 Qt内存管理机制详解-CSDN博客 【QT入门】 Qt代码创建布局之水平布局、竖直布局详解 先看两个问题&#xff1a; 1、ui设计器设计界面很方便&#xf…

Soft Robotics:两栖环境下螃蟹仿生机器人的行走控制

传统水陆两栖机器人依靠轮胎或履带与表面的接触及摩擦产生推进力&#xff0c;这种对于表面接触的依赖性限制了现有水陆两栖机器人在低重力环境下&#xff08;如水中&#xff09;的机动性。利用生物自身的推进机制&#xff0c;人为激发生物运动行为&#xff0c;由活体生物与微机…

第4章:掌握标准提示,输出更精准

标准提示 标准提示&#xff0c;是引导ChatGPT输出的一个简单方法&#xff0c;它提供了一个具体的任务让模型完成。 如果你要生成一篇新闻摘要。你只要发送指示词&#xff1a;“汇总这篇新闻”。 提示公式&#xff1a;生成[任务] 生成新闻文章的摘要&#xff1a; 任务&#x…

算法打卡day29|贪心算法篇03|Leetcode 1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果

算法题 Leetcode 1005.K次取反后最大化的数组和 题目链接:1005.K次取反后最大化的数组和 大佬视频讲解&#xff1a;K次取反后最大化的数组和视频讲解 个人思路 思路清晰&#xff0c;因为是取反当然是取越小的负数越好&#xff0c;那么先按绝对值排序。如果是负数就取反&#…

python和c语言的区别是什么

Python可以说是目前最火的语言之一了&#xff0c;人工智能的兴起让Python一夜之间变得家喻户晓&#xff0c;Python号称目前最最简单易学的语言&#xff0c;现在有不少高校开始将Python作为大一新生的入门语言。本萌新也刚开始接触Python&#xff0c;发现Python与其他语言确实有…

完全二叉树的层序遍历[天梯赛]

文章目录 题目描述思路 题目描述 输入样例 8 91 71 2 34 10 15 55 18 输出样例 18 34 55 71 2 10 15 91思路 完全二叉树最后一层可以不满&#xff0c;但上面的每一层的节点数都是满的 后序遍历的顺序为"左右根"&#xff0c;我们可以用数组模拟完全二叉树&#xff0c;…

Docker进阶:Docker Swarm —弹性伸缩调整服务的副本数量

Docker进阶&#xff1a;Docker Swarm —弹性伸缩调整服务的副本数量 1、 创建一个Nginx服务&#xff08;Manager节点&#xff09;2、查看服务状态&#xff08;Manager节点&#xff09;3、测试访问&#xff08;Worker节点&#xff09;4、查看服务日志&#xff08;Manager节点&am…

攻防世界逆向刷题

阅读须知&#xff1a; 探索者安全团队技术文章仅供参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作,由于传播、利用本公众号所提供的技术和信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者 本人负责&#xff0c;作者不为此承担任何责任,如…

STM32学习笔记(7_2)- ADC模数转换器代码

无人问津也好&#xff0c;技不如人也罢&#xff0c;都应静下心来&#xff0c;去做该做的事。 最近在学STM32&#xff0c;所以也开贴记录一下主要内容&#xff0c;省的过目即忘。视频教程为江科大&#xff08;改名江协科技&#xff09;&#xff0c;网站jiangxiekeji.com 本期开…

PHP全自动采集在线高清壁纸网站源码

源码简介 集合360壁纸&#xff0c;百度壁纸&#xff0c;必应壁纸&#xff0c;简单方便。非常高清,支持全屏支持2K. 每天自动采集&#xff0c;自动更新&#xff0c;非常不错。 搭建环境 php5.6 Nginx 安装教程 上传源码压缩包到网站目录并解压即可 首页截图 源码下载 P…

深度学习基础入门:从数学到实现

I. 引言 A. 深度学习的背景 深度学习是机器学习的一个重要分支&#xff0c;是一种基于神经网络的算法&#xff0c;被广泛应用于计算机视觉、自然语言处理、语音识别等领域。与传统机器学习算法相比&#xff0c;深度学习具有更高的容错性、复杂性和精度&#xff0c;需要庞大的…

【Redis】Redis 介绍Redis 为什么这么快?Redis数据结构Redis 和Memcache区别 ?为何Redis单线程效率也高?

目录 Redis 介绍 Redis 为什么这么快&#xff1f; Redis数据结构 Redis 和Memcache区别 &#xff1f; 为何Redis单线程效率也高&#xff1f; Redis 介绍 Redis 是一个开源&#xff08;BSD 许可&#xff09;、基于内存、支持多种数据结构的存储系统&#xff0c;可以作为数据…

大白话扩散模型(无公式版)

背景 传统的图像生成模型有GAN&#xff0c;VAE等&#xff0c;但是存在模式坍缩&#xff0c;即生成图片缺乏多样性&#xff0c;这是因为模型本身结构导致的。而扩散模型拥有训练稳定&#xff0c;保持图像多样性等特点&#xff0c;逐渐成为现在AIGC领域的主流。 扩散模型 正如…

python第三次作业

1、求一个十进制的数值的二进制的0、1的个数 def count_0_1_in_binary(decimal_num):binary_str bin(decimal_num)[2:]count_0 binary_str.count(0)count_1 binary_str.count(1)return count_0, count_1decimal_number int(input("十进制数&#xff1a;")) zero…