Skip to content

Commit 18f3a49

Browse files
feat: 脚本Ⅱ序言 (#38)
1 parent 7d8d542 commit 18f3a49

File tree

3 files changed

+7
-43
lines changed

3 files changed

+7
-43
lines changed

src/intermediate/mod.typ

Lines changed: 2 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,4 @@
11
#import "/src/book.typ"
2-
#import "../mod.typ": code as _code, exec-code as _exec-code, refs, typst-func, pro-tip, todo-box
2+
#import "../mod.typ": code as _code, exec-code as _exec-code, pro-tip, refs, todo-box, typst-func
33
#import "/typ/templates/page.typ": main-color
4-
#import "/typ/embedded-typst/lib.typ": svg-doc, default-fonts, default-cjk-fonts
5-
6-
#let eval-local(it, scope, res) = if res != none {
7-
res
8-
} else {
9-
eval(it.text, mode: "markup", scope: scope)
10-
}
11-
#let exec-code(it, scope: (:), res: none, ..args) = _exec-code(
12-
it,
13-
res: eval-local(it, scope, res),
14-
..args,
15-
)
16-
#let code(it, scope: (:), res: none, ..args) = _code(
17-
it,
18-
res: eval-local(it, scope, res),
19-
..args,
20-
)
21-
22-
#let frames(code, cjk-fonts: false, code-as: none, prelude: none) = {
23-
if code-as != none {
24-
code-as
25-
} else {
26-
code
27-
}
28-
29-
if prelude != none {
30-
code-as = if code-as == none {
31-
code
32-
}
33-
code = prelude.text + "\n" + code.text
34-
}
35-
36-
let fonts = if cjk-fonts {
37-
(..default-cjk-fonts(), ..default-fonts())
38-
}
39-
40-
grid(columns: (1fr, 1fr), ..svg-doc(code, fonts: fonts).pages.map(data => image(bytes(data))).map(rect))
41-
}
42-
#let frames-cjk = frames.with(cjk-fonts: true)
4+
#import "/typ/embedded-typst/lib.typ": default-cjk-fonts, default-fonts, svg-doc

src/tutorial/doc-modulize.typ

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
#show: book.page.with(title: [模块化(多文件)])
44

5-
正如我们在《初识脚本模式》中所说的,Typst提供了脚本语言方便排版。但事实上,写作时若能少写甚至不写脚本,这才算真正的便捷。我们总希望Typst能够允许我们以一种优雅的方式#strike[复制粘贴]引入已有代码。理想情况下,只需两行代码便可引入前辈写好的模板:
5+
我们接下来学习脚本剩余的所有知识。总结而言,每个源文件对应一个模块;每个模块导出多个「变量声明」和一个「文档(内容)树」。回忆编译流程,求值按照「控制流」顺序执行表达式。「排版」(typeset)时,按照「文档树」顺序更新状态和排版结果。迭代排版多次,直到布局不再发生变化。
6+
7+
本节首先来讲讲Typst中的模块。正如我们在《教程:脚本模式》中所说的,Typst提供了脚本语言方便排版。但事实上,写作时若能少写甚至不写脚本,这才算真正的便捷。我们总希望Typst能够允许我们以一种优雅的方式#strike[复制粘贴]引入已有代码。理想情况下,只需两行代码便可引入前辈写好的模板:
68

79
#```typ
810
#import "@preview/senpai-no-awesome-template.typ:0.x.x": *

typ/templates/page.typ

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
// This is important for typst-book to produce a responsive layout
33
// and multiple targets.
4-
#import "@preview/shiroa:0.2.3": get-page-width, target, is-web-target, is-pdf-target, plain-text, templates
4+
#import "@preview/shiroa:0.2.3": get-page-width, is-pdf-target, is-web-target, plain-text, target, templates
55
#import templates: *
66
#import "template-link.typ": *
77
#import "/typ/templates/side-notes.typ": side-attrs
@@ -254,7 +254,7 @@
254254

255255
if title != none {
256256
if is-web-target {
257-
[= #title]
257+
// [= #title]
258258
} else {
259259
v(0.5em)
260260
align(center, [= #title])

0 commit comments

Comments
 (0)