|
1 | 1 | #import "@preview/fletcher:0.5.4" as fletcher: node, edge |
2 | | -#import "/typ/templates/page.typ": main-color, is-light-theme |
| 2 | +#import "/typ/templates/page.typ": main-color, is-light-theme, page-width |
3 | 3 | #import "mod.typ": typst-func |
4 | 4 |
|
5 | 5 | #let figure-typst-arch( |
|
29 | 29 | #let figure-content-decoration( |
30 | 30 | stroke-color: main-color, |
31 | 31 | light-theme: is-light-theme, |
| 32 | + width: page-width, |
32 | 33 | ) = { |
33 | 34 | // let node = node.with(stroke: main-color + 0.5pt) |
34 | | - let xd = align.with(center) |
| 35 | + let node-text = align.with(center) |
35 | 36 |
|
36 | | - fletcher.diagram( |
37 | | - node-outset: 2pt, |
38 | | - axes: (ltr, btt), |
39 | | - // nodes |
40 | | - node((0, 0), xd[```typ 左#[一段文本]右```]), |
41 | | - node((1.5, 0), xd(```typc text(blue)```)), |
42 | | - node((3, 0), xd([左] + text(blue)[一段文本] + [右])), |
43 | | - node((0, -0.5), xd[选中内容]), |
44 | | - node((1.5, -0.5), xd[对内容块应用#typst-func("text")函数]), |
45 | | - node((3, -0.5), xd[最终效果]), |
46 | | - // edges |
47 | | - edge((0, 0), (1.5, 0), "..}>"), |
48 | | - edge((1.5, 0), (3, 0), "..}>"), |
49 | | - ) |
| 37 | + // todo: 消除重复 |
| 38 | + if width < 500pt { |
| 39 | + let node-rect-text(content) = rect(node-text(content), width: 125pt) |
| 40 | + fletcher.diagram( |
| 41 | + node-outset: 2pt, |
| 42 | + axes: (ltr, btt), |
| 43 | + // nodes |
| 44 | + node((0, 0), node-rect-text[```typ 左#[一段文本]右```]), |
| 45 | + node((0, -1.5), node-rect-text(```typc text(blue)```)), |
| 46 | + node((0, -3), node-rect-text([左] + text(blue)[一段文本] + [右])), |
| 47 | + |
| 48 | + node((0, -0.5 + 0), node-text[选中内容]), |
| 49 | + node((0, -0.5 + -1.5), node-text[对内容块应用#typst-func("text")函数]), |
| 50 | + node((0, -0.5 + -3), node-text[最终效果]), |
| 51 | + |
| 52 | + // edges |
| 53 | + edge((0, -0.5 + 0), (0, -1.5), "..}>"), |
| 54 | + edge((0, -0.5 + -1.5), (0, -3), "..}>"), |
| 55 | + ) |
| 56 | + } else { |
| 57 | + fletcher.diagram( |
| 58 | + node-outset: 2pt, |
| 59 | + axes: (ltr, btt), |
| 60 | + // nodes |
| 61 | + node((0, 0), node-text[```typ 左#[一段文本]右```]), |
| 62 | + node((1.5, 0), node-text(```typc text(blue)```)), |
| 63 | + node((3, 0), node-text([左] + text(blue)[一段文本] + [右])), |
| 64 | + node((0, -0.5), node-text[选中内容]), |
| 65 | + node((1.5, -0.5), node-text[对内容块应用#typst-func("text")函数]), |
| 66 | + node((3, -0.5), node-text[最终效果]), |
| 67 | + // edges |
| 68 | + edge((0, 0), (1.5, 0), "..}>"), |
| 69 | + edge((1.5, 0), (3, 0), "..}>"), |
| 70 | + ) |
| 71 | + } |
50 | 72 | } |
0 commit comments