基于 Typst 的新一代的学术幻灯片(Slides)神器 —— Touying

基于 Typst 的新一代的学术幻灯片(Slides)神器 —— Touying

Typst 是为写作而诞生的基于标记的排版系统,Typst 的目标是成为功能强大的排版工具,并且让用户可以愉快地使用它。简单来说:Typst = LaTeX 的排版能力 + Markdown 的简洁语法 + 强大且现代的脚本语言。具体介绍你可以参考这篇文章。

Touying 是为 Typst 开发的幻灯片/演示文稿包。Touying 也类似于 LaTeX 的 Beamer,但是得益于 Typst,你可以拥有更快的渲染速度与更简洁的语法。

Touying 取自中文里的「投影」。相较而言,LaTeX 中的 Beamer 就是德文的投影仪的意思。

阅读全文

Typst 中文用户使用体验

Typst 中文用户使用体验

Typst 是一门很新的语言,是面向出版与学术写作的可编程标记语言,从 2023 年 4 月正式开源的 0.1.0 版本以来,到现在的 2023 年 11 月份的 0.9.0,已经成熟稳定了许多,有了更好的中文与 CJK 语言的支持,能干的事情也变得多了起来。

同时也因为它太新、发展太快,现在知乎上大部分关于 Typst 的讨论都已经是过时的了。所以在这里我先纠正一些常见的误解,简单来说,现在的 Typst:

  • 可以通过 fallback 特性给中英文设置不同的字体,也可以使用正则表达式对中文字符做特殊处理 (如改变字号大小、更换颜色、伪斜体)。
  • Typst 已经支持了中英文之间自动加一个空格的间隙,并且已经做了许多中文标点压缩的工作,例如中文括号和中文冒号之间的空隙会被自动压缩。
  • 对于英文 kerning、alternates 与 ligatures 之类的操作,Typst 也已经通过 OpenType 提供的支持实现了,可以在 text 文档里找到。
  • Typst 是支持更换数学公式的字体的,而且修改方式与普通文本字体一致:#show math.equation: set text(font: "Fira Math")
  • Typst 已经内置支持了脚注 footernote,以及 place 函数可以实现简单的 float 效果。
  • Typst 现在支持 Hayagriva 和 BibLaTeX 格式的参考文献源,以及支持 引文风格语言 (Citation Style Language, CSL) 定义引文的样式,这是一种由 Zotero 支持的基于 XML 格式的语法。
  • 并不是只有类似于 Overleaf 的 Web App 一种选择,可以使用 Typst CLI 命令行工具,也可以在 VS Code 中下载 Typst LSP 和 Typst Preview 插件,达到开箱即用的效果,并且本地编辑的优势是可以通过 Git 来管理文件。
  • Typst 已经拥有一个 包管理器,并且不需要像 TexLive 一样在本地安装一大堆并不必要的宏包,也不需要显示安装包,而是可以按需自动从云端下载,因此 Typst 本地安装始终能保持小巧简单,目前仍然只有 30 MB 左右的大小。
  • 如果你在寻找一种方便的「本地全局模板」的能力,以便不用多次复制你写的模板文件,你可以使用 Typst Local Package 功能,可以使用 VS Code Typst Sync 插件创建、管理与云同步本地包。后续官方有打算支持 Git Repo Package,那时候会更方便。
  • 关于论文和会议模板,也可以翻一下 Awesome TypstAwesome Typst 列表中文版,说不定里面就有你需要的模板,里面还有诸如 Typst Vim 插件这类的工具。
  • Typst 拥有 执行 WASM 插件 的能力,因此你可以在 Typst 中运行 PythonQuickJS
  • 如果你在寻找类似于 LaTeX 中的 PGF/TikZ 的方式制作图表,可以看看 cetz 包,并且还通过 WASM 支持了 GraphvizSvgbob
  • 实际上 Typst 也可以编译为一个基于 SVG 的网页,进而可以像 Markdown 一样放在文档或者 Hexo 博客 里面,例如 这个网站 就是使用 typst-book 搭建的。
  • Typst 也可以通过 Pandoc 转换成 Markdown、HTML 或 LaTeX。Typst 官方已经支持了 PDF 和 SVG 导出,并且后续官方打算支持内置的 HTML 导出,而且 Typst 本身就是一个运行目标环境为 WASM 的语言,可见 Typst 和 Web 结合得比 LaTeX 更紧密,只能说未来可期吧。
  • 就生态而言,你甚至还能用 Typst 和 Jupyter 比较一下,因为 Quarto v1.4 准备支持 Typst 了。
  • Typst 拥有一系列的 Data Loading 函数,能够读取外部的 JSON、YAML、CSV 与纯文本文件,因此很适合人工智能等领域需要跑一大堆实验数据的研究者使用,可以用 Typst 读取数据文件然后自动生成图表,进而嵌入到你的科研流程中。
  • Typst 的数学公式语法确实与 LaTeX 数学公式语法不同,这是为了实现更简洁易懂的数学公式语法,例如 (x + 1) / x >= 1 => 1/x >= 0\frac{x + 1}{x} \ge 1 \Rightarrow \frac{1}{x} \ge 0,哪个更简洁易懂应该一目了然。至于生态支持,你完全可以使用 Pandoc 将 Typst 数学公式转换成 LaTeX 数学公式,进而在 LaTeX 编写的论文里复用。
  • 但是我们可以在 Typst 里实时书写和渲染 LaTeX 公式,只需要用我参与开发的一个包 MiTeX 即可,引入一行代码即可使用。并且由于 MiTeX 是使用 Rust 开发的 WASM 插件,因此不仅体积小,而且速度飞快,和 Typst 原生公式基本没有差异。
  • Typst 支持你在数学公式里用外部定义的符号、变量和函数,也就是你完全可以创建一些你自己的数学公式下的语法,例如 #let xb = $bold(x)$ 就可以在数学公式里用 $xb$ 作为粗体向量 xx 的简化写法。实际上已经有很多包做了这种简化,例如 physica 为物理学提供了方便的导数、微分、场等。以及用来对标 siunitx 的单位包 unify 等。
  • Typst 速度相比 LaTeX 要快得多,即使是大型 PDF 文件的排版也能胜任,OI Wiki 为其 PDF 导出添加了 Typst 支持,在同样渲染 2500+ 页的大型 PDF 文件的情况下,LaTeX 编译一次需要四五十分钟,而 Typst 只需要 80 秒,大大缩减了持续集成所需的时间。其中 OI Wiki 中以 LaTeX 格式书写的数学公式通过 Pandoc 转换成了 Typst 格式的数学公式,也说明了从 LaTeX 转换为 Typst 并没有那么困难。
  • Typst 虽然还没有像 LaTeX 里 dtx 格式这么完善的文学编程能力,但是一些像 tidy 这类的包也提供了相似的 doc comments 能力。
  • Typst 也有类似于 Beamer 的包 Polylux,你可以用它来写 Slide,并且使用 Typst Preview 插件的 Slide Mode 来展示,还支持播放 GIF 动图达到动态 Slide 效果。
  • 实际上 Typst 已经能够实现出版级排版,这里已经有人用 Typst 编写并出版了 一本书 了。
  • 相比于一些类似于 SATySFi、SILE 这样的与 TeX 定位相同但非 TeX 的工具,Typst 有着更优雅的语法、更强大的功能和更丰富的生态,并且十分未来可期。如果你正在寻找一个 LaTeX 的替代品,那选择 Typst 肯定不会错。
  • 如果你想找一个中文文档,可以参考我搭建的 Typst 非官方中文文档网站

Typst 的优势

接下来先讲讲 Typst 的优势,也有很多人提到了,这里就重复一下。

  • 语法简洁:上手难度跟 Markdown 相当,文本源码阅读性高,不会像 LaTeX 一样充斥着反斜杠与花括号。
  • 编译速度快:Typst 使用 Rust 语言编写,即 typ(e+ru)st,目标运行平台是WASM,即浏览器本地离线运行;也可以编译成命令行工具,采用一种增量编译算法和一种有约束的版面缓存方案,文档长度基本不会影响编译速度,且一般编译速度与常见 Markdown 渲染引擎渲染速度相当,在几十页以上的大文件的时候增量编译会比 Markdown 更快。
  • 环境搭建简单:不需要像 LaTeX 一样折腾几个 G 的开发环境,原生支持中日韩等非拉丁语言,无论是官方 Web App 在线编辑,还是使用 VS Code 安装 Typst LSP 和 Typst Preview 插件进行本地开发,都是开箱即用。
  • 现代编程语言:Typst 是可用于出版的可编程标记语言,拥有变量、函数、包管理与错误检查等现代编程语言的特性,同时也提供了闭包等特性,便于进行函数式编程。以及包括了 [标记模式]{脚本模式}$数学模式$ 等多种模式的作用域,并且它们可以不限深度地、交互地嵌套。通过包管理,你不再需要像 TexLive 一样在本地安装一大堆并不必要的宏包,而是按需自动从云端下载。
阅读全文

可能是中文用户最需要的一个 VS Code 插件 —— 智能切换输入法 Smart IME

可能是中文用户最需要的一个 VS Code 插件 —— 智能切换输入法 Smart IME

简介

Smart IME 是一款 VS Code 插件,用于根据上下文智能地切换输入法,部分灵感来自 idea 的 Smart Input。

解决了两类用户的痛点:

  • 使用中文写注释的程序员,可以进入注释块时自动切换为中文输入法,离开时切换为;
  • 用得到数学公式的中文写作者,可以避免在中文和数学公式之间频繁切换输入法。

阅读全文

Typst 的非官方中文文档网站

Typst 的非官方中文文档网站

简述

花了几天时间研究了一下 Typst 的仓库中的代码, 大体上明白了 Typst 的官方文档网站是怎么生成的了, 然后我决定制作一个非官方的 Typst 中文文档网站.

网站如下: https://typst-doc-cn.github.io/docs/

目前只翻译了一部分, 不过教程部分已经翻译完了, 帮助 Typst 新用户入门应该是不成问题的.

Typst 中文文档网站是社区驱动的非官方 Typst 中文文档, 也随时欢迎你的贡献, 具体内容可以去 Github Repo 了解.

阅读全文

为你的 Typst 写作加入强大的数学公式科学计算器 - Typst Sympy Calculator

为你的 Typst 写作加入强大的数学公式科学计算器 - Typst Sympy Calculator

简介

Typst Sympy Calculator 是一款 VS Code 插件, 它能够帮助你在 VS Code 写 Typst 的时候, 一键计算 Typst 书写的数学公式. 它基于 Python, Sympytypst-sympy-calculator 模块.

Demo

当前支持的功能:

  • 算数: 加 (+), 减 (-), 点乘 (dot), 叉乘 (times), 分数 (/), 乘方 (^), 绝对值 (|x|), 开方 (sqrt), 等…
  • 字母表: a - z, A - Z, alpha - omega, 下标 (x_1), 重音符(hat(x)), 等…
  • 常见函数: gcd, lcm, floor, ceil, max, min, log, ln, exp, sin, cos, tan, csc, sec, cot, arcsin, sinh, arsinh, 等…
  • 函数符号: f(x), f(x-1,), g(x,y), 等…
  • 微积分: 极限 lim_(x -> oo) 1/x, 积分 integral_1^2 x dif x, 等…
  • 微积分: 求导 (dif/(dif x) (x^2 + 1) 语法暂时不支持, 但是你可以使用 derivative(expr, var)), 等…
  • 规约运算: 求和 sum_(k=1)^oo (1/2)^k, 连乘 product_(k=1)^oo (1/2)^k, 等…
  • 赋值计算: 赋值计算 x^2 bar_(x = 2), x^2 "|"_(x = 2), 等…
  • 线性代数: 标准阶梯型行矩阵 rref, 行列式 det, 转置 ^T, 矩阵求逆 ^(-1), 等…
  • 关系运算: ==, >, >=, <, <=, 等…
  • 解方程: 单个方程 x + 1 = 2, 方程组 cases(x + y = 1, x - y = 2), 等…
  • 其他: 二项式 binom(n, k)
  • 自定义数学符号 (在 Typst 文件中):
    • 定义重音符: #let acc(x) = math.accent(x, math.grave)
    • 定义操作符: #let add = math.op("add")
    • 定义符号: #let xy = math.italic("xy") or #let mail = symbol("🖂", ("stamped", "🖃"),)
    • 定义函数:
      1
      2
      3
      4
      # typst-calculator
      @func()
      def convert_add(a, b):
      return a + b

也许你也见过我开发的另一个叫 Latex Sympy Calculator 的插件, 它们本质上是类似的, 但是 Typst Sympy Calculator 得益于 Typst 良好的语法, 拥有更灵活的底层架构与更强的拓展性, 以及更加强大的功能 (尤其是支持你自己自定义各种语法).

阅读全文

决定中国历史的思想、文化和经济变迁

决定中国历史的思想、文化和经济变迁 ——《万古江河——中国历史文化的转折和发展》读书报告

一、简述

经典的史书,讲述的常常是王侯将相之间的攻伐争斗,包括他们的史书篇幅往往占据了绝大部分篇幅。在战争中,周武王、秦始皇和洪武帝们得到了个人至高的荣耀,却也带给了百姓们兵荒马乱和妻离子散的悲痛。事实上,他们的功绩到如今已经消散在历史的长河中,不见踪影。他们至今仍留给中华文化的,却是在无意中因由战争而留下贯穿全国的道路网络,以及遍布全国的文化交融。

《万古江河》从一种更宏观,也更关注民生的角度讲述了中国的历史。书中的一个明显特征,就是对于历史中传奇人物的轻描淡写,对于思想、文化和经济变迁的浓墨重彩。事实上,相比于王侯将相们的文治武功,作者更偏向于描写决定了中国历史的思想、文化和经济变迁。思想、文化和经济,这三者逐层并进,和其他因素一起,共同塑造了中国的历史,也是我所阅读内容的重点。

阅读全文
使用搜索:谷歌必应百度