Typst 简介

Typst 是一种现代化的排版系统,类似于 LaTeX,但设计更为简洁、易学,它主要用于创建学术论文、书籍、报告等需要精美排版的文档。

你可以在这里查看其官方英文文档:Typst Document
对于Typst的中文教程,我强烈推荐:Typst 蓝书(天呐,这位编者非常清楚地知道自己是在阐述一套本体论!).


Typst

🔥已经崛起了!🔥




🚀这TeX人没收到通知吗?🚀


此节的剩余部分将会介绍 Typst & HTML -> Typsite

1 Typst 的 HTML 导出功能

Typst 于 0.13 0.13 增加了 HTML 导出功能,包括 html-export 模式以及两个核心函数: html.elem html.elem html.frame html.frame —— 我们可以利用这些函数来基于 Typst 编写以HTML+CSS为目标内容。

2 Typsite:基于 Typst 的静态站点生成器

受此启发,我用 Rust 开发了名为 Typsite 的静态站点生成器.

目前,Typst 的 HTML 导出:

  • 对简单富文本已有良好支持
  • 复杂样式需要用户通过 html.elem html.elem 函数手动编写
  • 无法自动将所有 Typst 生态内容转换为 HTML
  • 对于包含复杂 Typst 样式的内容,可以使用 html.frame html.frame 将其转为 SVG 并嵌入 HTML
  • 对于每一次 compile, 只支持单文件 HTML 输出

对于详细的已支持内容与计划可以追踪这个issue: HTML export #5512

虽然官方有计划支持自动 typst style -> HTML+CSS,但这并不会与 Typsite 产生任何冲突。 恰恰相反,Typst 的发展将使 Typsite 更加实用,因为 Typsite 主要职能是协调文章间的交互,并最终构建一套功能完善的静态网站

Backlinks

内容示例 [/example]

1 好看的

这是一段普通的文本.

Typst

🔥已经崛起了!🔥



🚀这TeX人没收到通知吗?🚀

我的大树人没了 1

1自然先知的铁树树人, 在7.39b 游戏性版本更新中, 也许永远地离开了我们….

2 好玩的

能跳转到神奇的地方.

能跳转到 崛起!

3 好听的

Another One Bites the Dust 2

2来听!

4 神奇的地方

引用: 我能自定义引用段的内容 or 我也能直接用引用文章的标题: Typst 简介

我还能嵌入页面!

⬇️ 我还能直接把嵌入的内容当作某一个特定heading-level的section来用!

4.1  Typst 简介 [/typst]

Typst 是一种现代化的排版系统,类似于 LaTeX,但设计更为简洁、易学,它主要用于创建学术论文、书籍、报告等需要精美排版的文档。

你可以在这里查看其官方英文文档:Typst Document
对于Typst的中文教程,我强烈推荐:Typst 蓝书(天呐,这位编者非常清楚地知道自己是在阐述一套本体论!).


Typst

🔥已经崛起了!🔥




🚀这TeX人没收到通知吗?🚀


此节的剩余部分将会介绍 Typst & HTML -> Typsite

4.1.1 Typst 的 HTML 导出功能

Typst 于 0.13 0.13 增加了 HTML 导出功能,包括 html-export 模式以及两个核心函数: html.elem html.elem html.frame html.frame —— 我们可以利用这些函数来基于 Typst 编写以HTML+CSS为目标内容。

4.1.2 Typsite:基于 Typst 的静态站点生成器

受此启发,我用 Rust 开发了名为 Typsite 的静态站点生成器.

目前,Typst 的 HTML 导出:

  • 对简单富文本已有良好支持
  • 复杂样式需要用户通过 html.elem html.elem 函数手动编写
  • 无法自动将所有 Typst 生态内容转换为 HTML
  • 对于包含复杂 Typst 样式的内容,可以使用 html.frame html.frame 将其转为 SVG 并嵌入 HTML
  • 对于每一次 compile, 只支持单文件 HTML 输出

对于详细的已支持内容与计划可以追踪这个issue: HTML export #5512

虽然官方有计划支持自动 typst style -> HTML+CSS,但这并不会与 Typsite 产生任何冲突。 恰恰相反,Typst 的发展将使 Typsite 更加实用,因为 Typsite 主要职能是协调文章间的交互,并最终构建一套功能完善的静态网站

4.2 RUUUST
fn main() {
    let f: fn(&'static str) -> usize = |s| unsafe {
        *s.as_ptr().offset(1) as usize & 0xFF
    };
    println!("{}", (0..5).map(|i| f("hello") ^ i).fold(0, |a, b| a ^ b));
}
fn main() {
    let f: fn(&'static str) -> usize = |s| unsafe {
        *s.as_ptr().offset(1) as usize & 0xFF
    };
    println!("{}", (0..5).map(|i| f("hello") ^ i).fold(0, |a, b| a ^ b));
}
4.3 Typsite 流程图