hd-garden 0.14.11 → 0.14.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Makefile +1 -1
- package/app/api/admin/distribution/route.ts +4 -2
- package/app/blog/[...path]/page.tsx +4 -2
- package/app/columns/[column]/[...path]/page.tsx +4 -2
- package/app/components/GardenMediaGuide.tsx +11 -23
- package/app/components/GardenPlayer.tsx +25 -0
- package/app/components/HandbookView.tsx +5 -3
- package/app/components/MarkdownArticle.tsx +7 -2
- package/app/components/PostReadingView.tsx +3 -3
- package/app/garden-modules.d.ts +10 -2
- package/app/globals.css +58 -1
- package/app/lib/content-body.ts +20 -0
- package/app/lib/garden-docs-meta.ts +2 -0
- package/app/lib/markdown-plugins.ts +5 -0
- package/app/lib/remark-video-player.d.mts +10 -0
- package/app/lib/remark-video-player.mjs +70 -0
- package/app/rss.xml/route.ts +3 -2
- package/bin/garden.mjs +18 -78
- package/docs/handbook/components/compose.md +3 -1
- package/docs/handbook/components/diagrams/chart.md +38 -0
- package/docs/handbook/components/diagrams/code-walkthrough.md +38 -0
- package/docs/handbook/components/diagrams/columns-join.md +38 -0
- package/docs/handbook/components/diagrams/compare.md +38 -0
- package/docs/handbook/components/diagrams/converter.md +38 -0
- package/docs/handbook/components/diagrams/facets.md +38 -0
- package/docs/handbook/components/diagrams/fan-out.md +38 -0
- package/docs/handbook/components/diagrams/icon-rail.md +38 -0
- package/docs/handbook/components/diagrams/inspect-grid.md +38 -0
- package/docs/handbook/components/diagrams/lanes.md +38 -0
- package/docs/handbook/components/diagrams/layers.md +38 -0
- package/docs/handbook/components/diagrams/other.md +37 -0
- package/docs/handbook/components/diagrams/plan.md +38 -0
- package/docs/handbook/components/diagrams/previews/chart.svg +7 -0
- package/docs/handbook/components/diagrams/previews/code-walkthrough.svg +5 -0
- package/docs/handbook/components/diagrams/previews/columns-join.svg +6 -0
- package/docs/handbook/components/diagrams/previews/compare.svg +5 -0
- package/docs/handbook/components/diagrams/previews/converter.svg +6 -0
- package/docs/handbook/components/diagrams/previews/facets.svg +6 -0
- package/docs/handbook/components/diagrams/previews/fan-out.svg +8 -0
- package/docs/handbook/components/diagrams/previews/icon-rail.svg +5 -0
- package/docs/handbook/components/diagrams/previews/inspect-grid.svg +5 -0
- package/docs/handbook/components/diagrams/previews/lanes.svg +5 -0
- package/docs/handbook/components/diagrams/previews/layers.svg +6 -0
- package/docs/handbook/components/diagrams/previews/other.svg +6 -0
- package/docs/handbook/components/diagrams/previews/plan.svg +5 -0
- package/docs/handbook/components/diagrams/previews/sequence.svg +7 -0
- package/docs/handbook/components/diagrams/previews/stepper.svg +5 -0
- package/docs/handbook/components/diagrams/previews/steps.svg +7 -0
- package/docs/handbook/components/diagrams/previews/tabs.svg +6 -0
- package/docs/handbook/components/diagrams/previews/timeline.svg +5 -0
- package/docs/handbook/components/diagrams/previews/trace.svg +7 -0
- package/docs/handbook/components/diagrams/previews/tunable.svg +4 -0
- package/docs/handbook/components/diagrams/previews/two-row.svg +4 -0
- package/docs/handbook/components/diagrams/sequence.md +38 -0
- package/docs/handbook/components/diagrams/stepper.md +38 -0
- package/docs/handbook/components/diagrams/steps.md +38 -0
- package/docs/handbook/components/diagrams/tabs.md +38 -0
- package/docs/handbook/components/diagrams/timeline.md +38 -0
- package/docs/handbook/components/diagrams/trace.md +38 -0
- package/docs/handbook/components/diagrams/tunable.md +38 -0
- package/docs/handbook/components/diagrams/two-row.md +38 -0
- package/docs/handbook/components/diagrams.md +100 -0
- package/docs/handbook/components/link-card.md +1 -1
- package/docs/handbook/components.md +1 -0
- package/docs/handbook/en/components/compose.md +3 -1
- package/docs/handbook/en/components/diagrams/chart.md +40 -0
- package/docs/handbook/en/components/diagrams/code-walkthrough.md +40 -0
- package/docs/handbook/en/components/diagrams/columns-join.md +40 -0
- package/docs/handbook/en/components/diagrams/compare.md +40 -0
- package/docs/handbook/en/components/diagrams/converter.md +40 -0
- package/docs/handbook/en/components/diagrams/facets.md +40 -0
- package/docs/handbook/en/components/diagrams/fan-out.md +40 -0
- package/docs/handbook/en/components/diagrams/icon-rail.md +40 -0
- package/docs/handbook/en/components/diagrams/inspect-grid.md +40 -0
- package/docs/handbook/en/components/diagrams/lanes.md +40 -0
- package/docs/handbook/en/components/diagrams/layers.md +40 -0
- package/docs/handbook/en/components/diagrams/other.md +39 -0
- package/docs/handbook/en/components/diagrams/plan.md +40 -0
- package/docs/handbook/en/components/diagrams/sequence.md +40 -0
- package/docs/handbook/en/components/diagrams/stepper.md +40 -0
- package/docs/handbook/en/components/diagrams/steps.md +40 -0
- package/docs/handbook/en/components/diagrams/tabs.md +40 -0
- package/docs/handbook/en/components/diagrams/timeline.md +40 -0
- package/docs/handbook/en/components/diagrams/trace.md +40 -0
- package/docs/handbook/en/components/diagrams/tunable.md +40 -0
- package/docs/handbook/en/components/diagrams/two-row.md +40 -0
- package/docs/handbook/en/components/diagrams.md +100 -0
- package/docs/handbook/en/components/link-card.md +1 -1
- package/docs/handbook/en/components.md +1 -0
- package/docs/handbook/en/start.md +1 -1
- package/docs/handbook/en/workflow.md +2 -2
- package/docs/handbook/en/writing.md +82 -1
- package/docs/handbook/start.md +1 -1
- package/docs/handbook/workflow.md +2 -2
- package/docs/handbook/writing.md +82 -1
- package/editors/dist/{garden-typora-0.14.11.zip → garden-typora-0.14.13.zip} +0 -0
- package/editors/dist/typora/main.js +296 -194
- package/editors/dist/typora/manifest.json +1 -1
- package/editors/dist/typora/style.css +48 -6
- package/editors/dist/vscode/{garden-ui-0.14.11.vsix → garden-ui-0.14.13.vsix} +0 -0
- package/package.json +1 -1
- package/scripts/build-content.mjs +23 -8
- package/scripts/dev-server.mjs +30 -2
- package/scripts/fetch-embed.mjs +39 -27
- package/scripts/handbook-diagrams.mjs +434 -0
- package/scripts/link-assets.mjs +6 -0
- package/scripts/vinext-runtime.mjs +80 -0
- package/templates/site/Makefile +1 -1
- package/templates/site/Makefile.en +1 -1
- package/ui/compose/compose.css +43 -5
- package/ui/garden/diagram-recipes.mjs +490 -0
- package/ui/garden/markdown-links.mjs +8 -5
- package/ui/garden/picker-placement.mjs +433 -0
- package/ui/garden/player.mjs +286 -0
- package/ui/garden/rehype-keep-punctuation.mjs +87 -18
- package/ui/garden/snippets.mjs +6 -4
- package/ui/garden/typora-suggest-contract.mjs +108 -0
- package/ui/preview/dist/garden-ui.css +43 -5
- package/ui/preview/dist/garden-ui.esm.js +4 -4
- package/ui/preview/dist/garden-ui.iife.js +4 -4
- package/vite.config.ts +84 -23
package/bin/garden.mjs
CHANGED
|
@@ -9,6 +9,7 @@ import path from "node:path";
|
|
|
9
9
|
import { createRequire } from "node:module";
|
|
10
10
|
import { editorsInstall, offerEditorsOnce } from "../scripts/editors-kit.mjs";
|
|
11
11
|
import { gardenPackageRoot, gardenSiteRoot } from "../scripts/garden-paths.mjs";
|
|
12
|
+
import { ensureVinextRuntime, samePath } from "../scripts/vinext-runtime.mjs";
|
|
12
13
|
import { langOf, siteCliLang } from "../ui/core/cli-locale.mjs";
|
|
13
14
|
|
|
14
15
|
const siteRoot = gardenSiteRoot();
|
|
@@ -17,10 +18,17 @@ const command = args[0] ?? "help";
|
|
|
17
18
|
const rest = args.slice(1);
|
|
18
19
|
|
|
19
20
|
function siteEnv(extra = {}) {
|
|
21
|
+
const moduleRoots = [
|
|
22
|
+
path.join(siteRoot, "node_modules"),
|
|
23
|
+
path.join(gardenPackageRoot, "node_modules"),
|
|
24
|
+
].filter((dir) => fs.existsSync(dir));
|
|
25
|
+
const inherited = (process.env.NODE_PATH ?? "").split(path.delimiter).filter(Boolean);
|
|
26
|
+
const nodePath = [...new Set([...moduleRoots, ...inherited])].join(path.delimiter);
|
|
20
27
|
return {
|
|
21
28
|
...process.env,
|
|
22
29
|
...extra,
|
|
23
30
|
GARDEN_SITE: siteRoot,
|
|
31
|
+
...(nodePath ? { NODE_PATH: nodePath } : {}),
|
|
24
32
|
WRANGLER_LOG_PATH:
|
|
25
33
|
process.env.WRANGLER_LOG_PATH ?? path.join(siteRoot, ".wrangler", "wrangler.log"),
|
|
26
34
|
};
|
|
@@ -59,27 +67,6 @@ function resolveVinext() {
|
|
|
59
67
|
}
|
|
60
68
|
}
|
|
61
69
|
|
|
62
|
-
function samePath(left, right) {
|
|
63
|
-
return path.resolve(left) === path.resolve(right);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
function isPackageSite() {
|
|
67
|
-
return samePath(siteRoot, gardenPackageRoot);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function ensureLink(from, to) {
|
|
71
|
-
fs.mkdirSync(path.dirname(to), { recursive: true });
|
|
72
|
-
try {
|
|
73
|
-
const stat = fs.lstatSync(to);
|
|
74
|
-
if (stat.isSymbolicLink() && fs.readlinkSync(to) === from) return;
|
|
75
|
-
if (stat.isSymbolicLink()) fs.unlinkSync(to);
|
|
76
|
-
else return;
|
|
77
|
-
} catch (error) {
|
|
78
|
-
if (error.code !== "ENOENT") throw error;
|
|
79
|
-
}
|
|
80
|
-
fs.symlinkSync(from, to);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
70
|
function ensurePublic() {
|
|
84
71
|
const dest = path.join(siteRoot, "public");
|
|
85
72
|
fs.mkdirSync(dest, { recursive: true });
|
|
@@ -128,61 +115,12 @@ function ensureEnv() {
|
|
|
128
115
|
}
|
|
129
116
|
}
|
|
130
117
|
|
|
131
|
-
function resolveNodeModules() {
|
|
132
|
-
const siteModules = path.join(siteRoot, "node_modules");
|
|
133
|
-
const packageModules = path.join(gardenPackageRoot, "node_modules");
|
|
134
|
-
if (fs.existsSync(path.join(siteModules, "vinext"))) return siteModules;
|
|
135
|
-
if (fs.existsSync(path.join(packageModules, "vinext"))) return packageModules;
|
|
136
|
-
return siteModules;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
118
|
function vinextRoot() {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
const links = [
|
|
146
|
-
["app", path.join(gardenPackageRoot, "app")],
|
|
147
|
-
["build", path.join(gardenPackageRoot, "build")],
|
|
148
|
-
["worker", path.join(gardenPackageRoot, "worker")],
|
|
149
|
-
[".openai", path.join(gardenPackageRoot, ".openai")],
|
|
150
|
-
["vite.config.ts", path.join(gardenPackageRoot, "vite.config.ts")],
|
|
151
|
-
["next.config.ts", path.join(gardenPackageRoot, "next.config.ts")],
|
|
152
|
-
["postcss.config.mjs", path.join(gardenPackageRoot, "postcss.config.mjs")],
|
|
153
|
-
["tsconfig.json", path.join(gardenPackageRoot, "tsconfig.json")],
|
|
154
|
-
["package.json", path.join(gardenPackageRoot, "package.json")],
|
|
155
|
-
["node_modules", resolveNodeModules()],
|
|
156
|
-
["public", path.join(siteRoot, "public")],
|
|
157
|
-
["content", path.join(siteRoot, "content")],
|
|
158
|
-
["site.config.yaml", path.join(siteRoot, "site.config.yaml")],
|
|
159
|
-
];
|
|
160
|
-
|
|
161
|
-
for (const name of [".env", ".env.local"]) {
|
|
162
|
-
const from = path.join(siteRoot, name);
|
|
163
|
-
if (fs.existsSync(from)) links.push([name, from]);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
for (const [name, from] of links) {
|
|
167
|
-
if (fs.existsSync(from) || name === "public" || name === "content") {
|
|
168
|
-
if ((name === "public" || name === "content") && !fs.existsSync(from)) {
|
|
169
|
-
fs.mkdirSync(from, { recursive: true });
|
|
170
|
-
}
|
|
171
|
-
ensureLink(from, path.join(runtime, name));
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
// English sites: the runtime manifest is a copy with the English description, not a link.
|
|
176
|
-
// Remove the link first so the write never goes through it into the engine's own package.json.
|
|
177
|
-
if (siteCliLang(siteRoot) === "en") {
|
|
178
|
-
const target = path.join(runtime, "package.json");
|
|
179
|
-
const manifest = JSON.parse(fs.readFileSync(path.join(gardenPackageRoot, "package.json"), "utf8"));
|
|
180
|
-
manifest.description = "A personal blog engine: write in Markdown, publish with GitHub Pages.";
|
|
181
|
-
fs.rmSync(target, { force: true });
|
|
182
|
-
fs.writeFileSync(target, `${JSON.stringify(manifest, null, 2)}\n`);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
return runtime;
|
|
119
|
+
return ensureVinextRuntime({
|
|
120
|
+
siteRoot,
|
|
121
|
+
gardenPackageRoot,
|
|
122
|
+
lang: siteCliLang(siteRoot),
|
|
123
|
+
});
|
|
186
124
|
}
|
|
187
125
|
|
|
188
126
|
function publishDist(fromRoot) {
|
|
@@ -483,12 +421,12 @@ function installSkill(destinationRoot = siteRoot, { lang = siteCliLang(destinati
|
|
|
483
421
|
|
|
484
422
|
function help() {
|
|
485
423
|
process.stdout.write(`Garden 命令:
|
|
486
|
-
garden dev
|
|
424
|
+
garden dev [--worker] 同步内容并本地预览(默认 Node RSC;--worker 使用 Cloudflare workerd)
|
|
487
425
|
garden build 同步内容并构建静态站点
|
|
488
426
|
garden start 启动已构建的服务
|
|
489
427
|
garden sync 只从 Markdown 生成索引
|
|
490
428
|
garden new 创建文章草稿
|
|
491
|
-
garden embed
|
|
429
|
+
garden embed 打印可粘贴的规范化视频链接或网页地址
|
|
492
430
|
garden links 重新拉取外链图标与卡片元数据(dev / build 时也会自动做)
|
|
493
431
|
garden images 读取新的远程图片尺寸,写入 .garden/image-sizes.json(build 时会自动做)
|
|
494
432
|
garden files 读取 Compose <file> 里远程文件的大小,写入 file-sizes.json(build 时会自动做)
|
|
@@ -521,8 +459,10 @@ async function main() {
|
|
|
521
459
|
// Scoped to this CLI process: sync, Vinext and its watcher inherit it;
|
|
522
460
|
// later build/check commands do not.
|
|
523
461
|
process.env.CONTENT_INCLUDE_DRAFTS ??= "1";
|
|
462
|
+
if (rest.includes("--worker")) process.env.GARDEN_DEV_WORKER = "1";
|
|
463
|
+
else process.env.GARDEN_DEV_WORKER ??= "0";
|
|
524
464
|
ensureDevGitHubLogin();
|
|
525
|
-
await runVinext(["dev", ...rest]);
|
|
465
|
+
await runVinext(["dev", ...rest.filter((arg) => arg !== "--worker")]);
|
|
526
466
|
break;
|
|
527
467
|
case "build":
|
|
528
468
|
// Favicons are refetched on every build; failures fall back to link-assets.json.
|
|
@@ -9,7 +9,9 @@ badge: compose
|
|
|
9
9
|
|
|
10
10
|
`garden compose` 是唯一的 Garden 作者入口。在围栏内组合 Markdown、安全 HTML 内容岛、布局、资源、文件、关系图、选择卡与 Play 交互。具体能力、内容边界和默认样式见[组件参考](/garden/reference/compose),完整可用属性以 `npx garden ui schema` 为准。
|
|
11
11
|
|
|
12
|
-
需要 AI 生成结构图时,输入 `/garden
|
|
12
|
+
需要 AI 生成结构图时,输入 `/garden`,在图示列表里选一种(最后一项是「其他」)。选中后会直接插入一个 `garden compose` 围栏,里面是针对该图示的说明草稿。你补全材料和目标,再对 AI 说「编译这篇」;你的原话会留在 `<intent>` 里,结构则用 Markdown 叶子和组件标签拼出静态说明图。
|
|
13
|
+
|
|
14
|
+
全部内置图示的名称、示意图、适用场景和推荐说明草稿,见[推荐图示](/garden/components/diagrams)。
|
|
13
15
|
|
|
14
16
|
## 怎么写
|
|
15
17
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "数据图"
|
|
3
|
+
navTitle: "数据图"
|
|
4
|
+
description: "适合把已有数字画成柱状、折线或占比"
|
|
5
|
+
section: diagrams
|
|
6
|
+
order: 131
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- Generated by scripts/handbook-diagrams.mjs. Do not edit by hand. -->
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
适合把已有数字画成柱状、折线或占比。
|
|
14
|
+
|
|
15
|
+
不要编造数据;结果可由公式随输入变化时,优先用参数调节图。
|
|
16
|
+
|
|
17
|
+
Typora 和 VS Code / Cursor 共用同一份推荐列表。在 `/garden` 里,这一项的名称和适用说明与上面相同。选中后会插入下面的 `garden compose` 说明草稿。补全材料和表达目标,再交给 AI 编译。
|
|
18
|
+
|
|
19
|
+
推荐说明草稿是起点,不是语法课,也不是唯一合法写法。需要时仍可在同一个 `garden compose` 里搭配 Markdown 或安全 HTML 基础块。
|
|
20
|
+
|
|
21
|
+
````markdown
|
|
22
|
+
```garden compose
|
|
23
|
+
请根据我提供的材料和表达目标,用 garden compose 做一个「数据图」说明图。
|
|
24
|
+
|
|
25
|
+
我的材料:
|
|
26
|
+
- (粘贴原文条目和需要保留的措辞)
|
|
27
|
+
|
|
28
|
+
我的表达目标:
|
|
29
|
+
- (读者要一眼看出什么)
|
|
30
|
+
|
|
31
|
+
请你:
|
|
32
|
+
- 只根据材料组织内容,不要发明事实或结论
|
|
33
|
+
- 自行处理图形语法、布局和手机阅读适配,不要让我学习标签或写 CSS
|
|
34
|
+
- 「数据图」是推荐起点:只用材料里的真实数据做图,标明轴和单位;不要编造数值
|
|
35
|
+
- 推荐图示不是唯一合法写法;需要时仍可在同一 compose 里搭配必要的 Markdown / HTML 基础块
|
|
36
|
+
- 不要另起一种作者围栏或新语法,只使用 garden compose
|
|
37
|
+
```
|
|
38
|
+
````
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "代码走查"
|
|
3
|
+
navTitle: "代码走查"
|
|
4
|
+
description: "适合一行行看代码执行到哪、变量是多少"
|
|
5
|
+
section: diagrams
|
|
6
|
+
order: 161
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- Generated by scripts/handbook-diagrams.mjs. Do not edit by hand. -->
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
适合一行行看代码执行到哪、变量是多少。
|
|
14
|
+
|
|
15
|
+
只需要展示代码时用普通代码块;代码太长时先截关键段。
|
|
16
|
+
|
|
17
|
+
Typora 和 VS Code / Cursor 共用同一份推荐列表。在 `/garden` 里,这一项的名称和适用说明与上面相同。选中后会插入下面的 `garden compose` 说明草稿。补全材料和表达目标,再交给 AI 编译。
|
|
18
|
+
|
|
19
|
+
推荐说明草稿是起点,不是语法课,也不是唯一合法写法。需要时仍可在同一个 `garden compose` 里搭配 Markdown 或安全 HTML 基础块。
|
|
20
|
+
|
|
21
|
+
````markdown
|
|
22
|
+
```garden compose
|
|
23
|
+
请根据我提供的材料和表达目标,用 garden compose 做一个「代码走查」说明图。
|
|
24
|
+
|
|
25
|
+
我的材料:
|
|
26
|
+
- (粘贴原文条目和需要保留的措辞)
|
|
27
|
+
|
|
28
|
+
我的表达目标:
|
|
29
|
+
- (读者要一眼看出什么)
|
|
30
|
+
|
|
31
|
+
请你:
|
|
32
|
+
- 只根据材料组织内容,不要发明事实或结论
|
|
33
|
+
- 自行处理图形语法、布局和手机阅读适配,不要让我学习标签或写 CSS
|
|
34
|
+
- 「代码走查」是推荐起点:对着不长的关键代码,讲清每一步执行到哪一行、变量此刻是多少,不要改写原文代码的事实
|
|
35
|
+
- 推荐图示不是唯一合法写法;需要时仍可在同一 compose 里搭配必要的 Markdown / HTML 基础块
|
|
36
|
+
- 不要另起一种作者围栏或新语法,只使用 garden compose
|
|
37
|
+
```
|
|
38
|
+
````
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "关联图"
|
|
3
|
+
navTitle: "关联图"
|
|
4
|
+
description: "适合说明两边如何通过中间一项关联起来"
|
|
5
|
+
section: diagrams
|
|
6
|
+
order: 11
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- Generated by scripts/handbook-diagrams.mjs. Do not edit by hand. -->
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
适合说明两边如何通过中间一项关联起来。
|
|
14
|
+
|
|
15
|
+
没有中间连接关系时,不必强行加连接。
|
|
16
|
+
|
|
17
|
+
Typora 和 VS Code / Cursor 共用同一份推荐列表。在 `/garden` 里,这一项的名称和适用说明与上面相同。选中后会插入下面的 `garden compose` 说明草稿。补全材料和表达目标,再交给 AI 编译。
|
|
18
|
+
|
|
19
|
+
推荐说明草稿是起点,不是语法课,也不是唯一合法写法。需要时仍可在同一个 `garden compose` 里搭配 Markdown 或安全 HTML 基础块。
|
|
20
|
+
|
|
21
|
+
````markdown
|
|
22
|
+
```garden compose
|
|
23
|
+
请根据我提供的材料和表达目标,用 garden compose 做一个「关联图」说明图。
|
|
24
|
+
|
|
25
|
+
我的材料:
|
|
26
|
+
- (粘贴原文条目和需要保留的措辞)
|
|
27
|
+
|
|
28
|
+
我的表达目标:
|
|
29
|
+
- (读者要一眼看出什么)
|
|
30
|
+
|
|
31
|
+
请你:
|
|
32
|
+
- 只根据材料组织内容,不要发明事实或结论
|
|
33
|
+
- 自行处理图形语法、布局和手机阅读适配,不要让我学习标签或写 CSS
|
|
34
|
+
- 「关联图」是推荐起点:先写清两边各是什么、中间一项如何把两边接上,哪一块是重点
|
|
35
|
+
- 推荐图示不是唯一合法写法;需要时仍可在同一 compose 里搭配必要的 Markdown / HTML 基础块
|
|
36
|
+
- 不要另起一种作者围栏或新语法,只使用 garden compose
|
|
37
|
+
```
|
|
38
|
+
````
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "对比图"
|
|
3
|
+
navTitle: "对比图"
|
|
4
|
+
description: "适合比较两三种方案在同一条件下的差异"
|
|
5
|
+
section: diagrams
|
|
6
|
+
order: 91
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- Generated by scripts/handbook-diagrams.mjs. Do not edit by hand. -->
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
适合比较两三种方案在同一条件下的差异。
|
|
14
|
+
|
|
15
|
+
只是罗列各自特点、没有共同条件时,用普通表格或并列图即可。
|
|
16
|
+
|
|
17
|
+
Typora 和 VS Code / Cursor 共用同一份推荐列表。在 `/garden` 里,这一项的名称和适用说明与上面相同。选中后会插入下面的 `garden compose` 说明草稿。补全材料和表达目标,再交给 AI 编译。
|
|
18
|
+
|
|
19
|
+
推荐说明草稿是起点,不是语法课,也不是唯一合法写法。需要时仍可在同一个 `garden compose` 里搭配 Markdown 或安全 HTML 基础块。
|
|
20
|
+
|
|
21
|
+
````markdown
|
|
22
|
+
```garden compose
|
|
23
|
+
请根据我提供的材料和表达目标,用 garden compose 做一个「对比图」说明图。
|
|
24
|
+
|
|
25
|
+
我的材料:
|
|
26
|
+
- (粘贴原文条目和需要保留的措辞)
|
|
27
|
+
|
|
28
|
+
我的表达目标:
|
|
29
|
+
- (读者要一眼看出什么)
|
|
30
|
+
|
|
31
|
+
请你:
|
|
32
|
+
- 只根据材料组织内容,不要发明事实或结论
|
|
33
|
+
- 自行处理图形语法、布局和手机阅读适配,不要让我学习标签或写 CSS
|
|
34
|
+
- 「对比图」是推荐起点:只在有真实共同条件时做对比,保留各方事实,不要发明输赢或排序
|
|
35
|
+
- 推荐图示不是唯一合法写法;需要时仍可在同一 compose 里搭配必要的 Markdown / HTML 基础块
|
|
36
|
+
- 不要另起一种作者围栏或新语法,只使用 garden compose
|
|
37
|
+
```
|
|
38
|
+
````
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "换算图"
|
|
3
|
+
navTitle: "换算图"
|
|
4
|
+
description: "适合一个输入同时算出好几项结果"
|
|
5
|
+
section: diagrams
|
|
6
|
+
order: 151
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- Generated by scripts/handbook-diagrams.mjs. Do not edit by hand. -->
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
适合一个输入同时算出好几项结果。
|
|
14
|
+
|
|
15
|
+
只有一个结果时用参数调节图;各项要分别调时先拆开。
|
|
16
|
+
|
|
17
|
+
Typora 和 VS Code / Cursor 共用同一份推荐列表。在 `/garden` 里,这一项的名称和适用说明与上面相同。选中后会插入下面的 `garden compose` 说明草稿。补全材料和表达目标,再交给 AI 编译。
|
|
18
|
+
|
|
19
|
+
推荐说明草稿是起点,不是语法课,也不是唯一合法写法。需要时仍可在同一个 `garden compose` 里搭配 Markdown 或安全 HTML 基础块。
|
|
20
|
+
|
|
21
|
+
````markdown
|
|
22
|
+
```garden compose
|
|
23
|
+
请根据我提供的材料和表达目标,用 garden compose 做一个「换算图」说明图。
|
|
24
|
+
|
|
25
|
+
我的材料:
|
|
26
|
+
- (粘贴原文条目和需要保留的措辞)
|
|
27
|
+
|
|
28
|
+
我的表达目标:
|
|
29
|
+
- (读者要一眼看出什么)
|
|
30
|
+
|
|
31
|
+
请你:
|
|
32
|
+
- 只根据材料组织内容,不要发明事实或结论
|
|
33
|
+
- 自行处理图形语法、布局和手机阅读适配,不要让我学习标签或写 CSS
|
|
34
|
+
- 「换算图」是推荐起点:一个输入同时换算出多项结果,保留公式和单位,不要发明材料里没有的换算关系
|
|
35
|
+
- 推荐图示不是唯一合法写法;需要时仍可在同一 compose 里搭配必要的 Markdown / HTML 基础块
|
|
36
|
+
- 不要另起一种作者围栏或新语法,只使用 garden compose
|
|
37
|
+
```
|
|
38
|
+
````
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "并列图"
|
|
3
|
+
navTitle: "并列图"
|
|
4
|
+
description: "适合说明一件事的几个方面,没有先后顺序"
|
|
5
|
+
section: diagrams
|
|
6
|
+
order: 41
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- Generated by scripts/handbook-diagrams.mjs. Do not edit by hand. -->
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
适合说明一件事的几个方面,没有先后顺序。
|
|
14
|
+
|
|
15
|
+
没有先后就不要画成流程;没有同一条件的比较时,也不要画成对比图。
|
|
16
|
+
|
|
17
|
+
Typora 和 VS Code / Cursor 共用同一份推荐列表。在 `/garden` 里,这一项的名称和适用说明与上面相同。选中后会插入下面的 `garden compose` 说明草稿。补全材料和表达目标,再交给 AI 编译。
|
|
18
|
+
|
|
19
|
+
推荐说明草稿是起点,不是语法课,也不是唯一合法写法。需要时仍可在同一个 `garden compose` 里搭配 Markdown 或安全 HTML 基础块。
|
|
20
|
+
|
|
21
|
+
````markdown
|
|
22
|
+
```garden compose
|
|
23
|
+
请根据我提供的材料和表达目标,用 garden compose 做一个「并列图」说明图。
|
|
24
|
+
|
|
25
|
+
我的材料:
|
|
26
|
+
- (粘贴原文条目和需要保留的措辞)
|
|
27
|
+
|
|
28
|
+
我的表达目标:
|
|
29
|
+
- (读者要一眼看出什么)
|
|
30
|
+
|
|
31
|
+
请你:
|
|
32
|
+
- 只根据材料组织内容,不要发明事实或结论
|
|
33
|
+
- 自行处理图形语法、布局和手机阅读适配,不要让我学习标签或写 CSS
|
|
34
|
+
- 「并列图」是推荐起点:列出各方面的短名和说明,并写明这几块有没有严格先后
|
|
35
|
+
- 推荐图示不是唯一合法写法;需要时仍可在同一 compose 里搭配必要的 Markdown / HTML 基础块
|
|
36
|
+
- 不要另起一种作者围栏或新语法,只使用 garden compose
|
|
37
|
+
```
|
|
38
|
+
````
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "发散图"
|
|
3
|
+
navTitle: "发散图"
|
|
4
|
+
description: "适合说明先到一处,再同时连到好几处"
|
|
5
|
+
section: diagrams
|
|
6
|
+
order: 21
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- Generated by scripts/handbook-diagrams.mjs. Do not edit by hand. -->
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
适合说明先到一处,再同时连到好几处。
|
|
14
|
+
|
|
15
|
+
没有真正的先到再分支时,不要画成发散。
|
|
16
|
+
|
|
17
|
+
Typora 和 VS Code / Cursor 共用同一份推荐列表。在 `/garden` 里,这一项的名称和适用说明与上面相同。选中后会插入下面的 `garden compose` 说明草稿。补全材料和表达目标,再交给 AI 编译。
|
|
18
|
+
|
|
19
|
+
推荐说明草稿是起点,不是语法课,也不是唯一合法写法。需要时仍可在同一个 `garden compose` 里搭配 Markdown 或安全 HTML 基础块。
|
|
20
|
+
|
|
21
|
+
````markdown
|
|
22
|
+
```garden compose
|
|
23
|
+
请根据我提供的材料和表达目标,用 garden compose 做一个「发散图」说明图。
|
|
24
|
+
|
|
25
|
+
我的材料:
|
|
26
|
+
- (粘贴原文条目和需要保留的措辞)
|
|
27
|
+
|
|
28
|
+
我的表达目标:
|
|
29
|
+
- (读者要一眼看出什么)
|
|
30
|
+
|
|
31
|
+
请你:
|
|
32
|
+
- 只根据材料组织内容,不要发明事实或结论
|
|
33
|
+
- 自行处理图形语法、布局和手机阅读适配,不要让我学习标签或写 CSS
|
|
34
|
+
- 「发散图」是推荐起点:先写清谁先到谁,再同时连到哪几处,哪一处是重点
|
|
35
|
+
- 推荐图示不是唯一合法写法;需要时仍可在同一 compose 里搭配必要的 Markdown / HTML 基础块
|
|
36
|
+
- 不要另起一种作者围栏或新语法,只使用 garden compose
|
|
37
|
+
```
|
|
38
|
+
````
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "图文列表"
|
|
3
|
+
navTitle: "图文列表"
|
|
4
|
+
description: "适合逐条说明互不依赖的内容"
|
|
5
|
+
section: diagrams
|
|
6
|
+
order: 61
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- Generated by scripts/handbook-diagrams.mjs. Do not edit by hand. -->
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
适合逐条说明互不依赖的内容。
|
|
14
|
+
|
|
15
|
+
这些条目没有先后依赖,不要画成流程,也不要写成要照着做的清单。
|
|
16
|
+
|
|
17
|
+
Typora 和 VS Code / Cursor 共用同一份推荐列表。在 `/garden` 里,这一项的名称和适用说明与上面相同。选中后会插入下面的 `garden compose` 说明草稿。补全材料和表达目标,再交给 AI 编译。
|
|
18
|
+
|
|
19
|
+
推荐说明草稿是起点,不是语法课,也不是唯一合法写法。需要时仍可在同一个 `garden compose` 里搭配 Markdown 或安全 HTML 基础块。
|
|
20
|
+
|
|
21
|
+
````markdown
|
|
22
|
+
```garden compose
|
|
23
|
+
请根据我提供的材料和表达目标,用 garden compose 做一个「图文列表」说明图。
|
|
24
|
+
|
|
25
|
+
我的材料:
|
|
26
|
+
- (粘贴原文条目和需要保留的措辞)
|
|
27
|
+
|
|
28
|
+
我的表达目标:
|
|
29
|
+
- (读者要一眼看出什么)
|
|
30
|
+
|
|
31
|
+
请你:
|
|
32
|
+
- 只根据材料组织内容,不要发明事实或结论
|
|
33
|
+
- 自行处理图形语法、布局和手机阅读适配,不要让我学习标签或写 CSS
|
|
34
|
+
- 「图文列表」是推荐起点:用图标带出一条条独立说明,标题和正文写在一起;这不是流程,不要加顺序箭头
|
|
35
|
+
- 推荐图示不是唯一合法写法;需要时仍可在同一 compose 里搭配必要的 Markdown / HTML 基础块
|
|
36
|
+
- 不要另起一种作者围栏或新语法,只使用 garden compose
|
|
37
|
+
```
|
|
38
|
+
````
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "格子图"
|
|
3
|
+
navTitle: "格子图"
|
|
4
|
+
description: "适合标出二维结构里哪几格特别、为什么"
|
|
5
|
+
section: diagrams
|
|
6
|
+
order: 201
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- Generated by scripts/handbook-diagrams.mjs. Do not edit by hand. -->
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
适合标出二维结构里哪几格特别、为什么。
|
|
14
|
+
|
|
15
|
+
只是普通数据表、没有哪一格要特别解释时,用普通表格即可。
|
|
16
|
+
|
|
17
|
+
Typora 和 VS Code / Cursor 共用同一份推荐列表。在 `/garden` 里,这一项的名称和适用说明与上面相同。选中后会插入下面的 `garden compose` 说明草稿。补全材料和表达目标,再交给 AI 编译。
|
|
18
|
+
|
|
19
|
+
推荐说明草稿是起点,不是语法课,也不是唯一合法写法。需要时仍可在同一个 `garden compose` 里搭配 Markdown 或安全 HTML 基础块。
|
|
20
|
+
|
|
21
|
+
````markdown
|
|
22
|
+
```garden compose
|
|
23
|
+
请根据我提供的材料和表达目标,用 garden compose 做一个「格子图」说明图。
|
|
24
|
+
|
|
25
|
+
我的材料:
|
|
26
|
+
- (粘贴原文条目和需要保留的措辞)
|
|
27
|
+
|
|
28
|
+
我的表达目标:
|
|
29
|
+
- (读者要一眼看出什么)
|
|
30
|
+
|
|
31
|
+
请你:
|
|
32
|
+
- 只根据材料组织内容,不要发明事实或结论
|
|
33
|
+
- 自行处理图形语法、布局和手机阅读适配,不要让我学习标签或写 CSS
|
|
34
|
+
- 「格子图」是推荐起点:用格子呈现二维结构,并指出需要特别解释的格子及其原因;不要把普通表格硬做成格子图
|
|
35
|
+
- 推荐图示不是唯一合法写法;需要时仍可在同一 compose 里搭配必要的 Markdown / HTML 基础块
|
|
36
|
+
- 不要另起一种作者围栏或新语法,只使用 garden compose
|
|
37
|
+
```
|
|
38
|
+
````
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "时序图"
|
|
3
|
+
navTitle: "时序图"
|
|
4
|
+
description: "适合说明谁在什么时候向谁发了什么"
|
|
5
|
+
section: diagrams
|
|
6
|
+
order: 111
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- Generated by scripts/handbook-diagrams.mjs. Do not edit by hand. -->
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
适合说明谁在什么时候向谁发了什么。
|
|
14
|
+
|
|
15
|
+
不是通用建模语言,也不支持任意分支、循环或自动布线。
|
|
16
|
+
|
|
17
|
+
Typora 和 VS Code / Cursor 共用同一份推荐列表。在 `/garden` 里,这一项的名称和适用说明与上面相同。选中后会插入下面的 `garden compose` 说明草稿。补全材料和表达目标,再交给 AI 编译。
|
|
18
|
+
|
|
19
|
+
推荐说明草稿是起点,不是语法课,也不是唯一合法写法。需要时仍可在同一个 `garden compose` 里搭配 Markdown 或安全 HTML 基础块。
|
|
20
|
+
|
|
21
|
+
````markdown
|
|
22
|
+
```garden compose
|
|
23
|
+
请根据我提供的材料和表达目标,用 garden compose 做一个「时序图」说明图。
|
|
24
|
+
|
|
25
|
+
我的材料:
|
|
26
|
+
- (粘贴原文条目和需要保留的措辞)
|
|
27
|
+
|
|
28
|
+
我的表达目标:
|
|
29
|
+
- (读者要一眼看出什么)
|
|
30
|
+
|
|
31
|
+
请你:
|
|
32
|
+
- 只根据材料组织内容,不要发明事实或结论
|
|
33
|
+
- 自行处理图形语法、布局和手机阅读适配,不要让我学习标签或写 CSS
|
|
34
|
+
- 「时序图」是推荐起点:按原文写出参与者和他们之间的消息方向与顺序,不要补出原文没有的分支或循环
|
|
35
|
+
- 推荐图示不是唯一合法写法;需要时仍可在同一 compose 里搭配必要的 Markdown / HTML 基础块
|
|
36
|
+
- 不要另起一种作者围栏或新语法,只使用 garden compose
|
|
37
|
+
```
|
|
38
|
+
````
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "分层图"
|
|
3
|
+
navTitle: "分层图"
|
|
4
|
+
description: "适合说明自上而下的层次,不必按顺序走完"
|
|
5
|
+
section: diagrams
|
|
6
|
+
order: 31
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- Generated by scripts/handbook-diagrams.mjs. Do not edit by hand. -->
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
适合说明自上而下的层次,不必按顺序走完。
|
|
14
|
+
|
|
15
|
+
层次不是自动变成必须按顺序走完的流程。
|
|
16
|
+
|
|
17
|
+
Typora 和 VS Code / Cursor 共用同一份推荐列表。在 `/garden` 里,这一项的名称和适用说明与上面相同。选中后会插入下面的 `garden compose` 说明草稿。补全材料和表达目标,再交给 AI 编译。
|
|
18
|
+
|
|
19
|
+
推荐说明草稿是起点,不是语法课,也不是唯一合法写法。需要时仍可在同一个 `garden compose` 里搭配 Markdown 或安全 HTML 基础块。
|
|
20
|
+
|
|
21
|
+
````markdown
|
|
22
|
+
```garden compose
|
|
23
|
+
请根据我提供的材料和表达目标,用 garden compose 做一个「分层图」说明图。
|
|
24
|
+
|
|
25
|
+
我的材料:
|
|
26
|
+
- (粘贴原文条目和需要保留的措辞)
|
|
27
|
+
|
|
28
|
+
我的表达目标:
|
|
29
|
+
- (读者要一眼看出什么)
|
|
30
|
+
|
|
31
|
+
请你:
|
|
32
|
+
- 只根据材料组织内容,不要发明事实或结论
|
|
33
|
+
- 自行处理图形语法、布局和手机阅读适配,不要让我学习标签或写 CSS
|
|
34
|
+
- 「分层图」是推荐起点:写出各层名称和哪些是重点,并说明是不是每次都按这个顺序走完
|
|
35
|
+
- 推荐图示不是唯一合法写法;需要时仍可在同一 compose 里搭配必要的 Markdown / HTML 基础块
|
|
36
|
+
- 不要另起一种作者围栏或新语法,只使用 garden compose
|
|
37
|
+
```
|
|
38
|
+
````
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "其他"
|
|
3
|
+
navTitle: "其他"
|
|
4
|
+
description: "适合现成图形无法表达、需要自由组合图文的内容"
|
|
5
|
+
section: diagrams
|
|
6
|
+
order: 211
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- Generated by scripts/handbook-diagrams.mjs. Do not edit by hand. -->
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
适合现成图形无法表达、需要自由组合图文的内容。
|
|
14
|
+
|
|
15
|
+
不要把列表里的常用图示当成合法白名单,也不要为此学习新语法。
|
|
16
|
+
|
|
17
|
+
Typora 和 VS Code / Cursor 共用同一份推荐列表。在 `/garden` 里,这一项的名称和适用说明与上面相同。选中后会插入下面的 `garden compose` 说明草稿。补全材料和表达目标,再交给 AI 编译。
|
|
18
|
+
|
|
19
|
+
「其他」不是又一种现成模板。现成图示无法表达、或需要把几种内容放在一起时,在同一个 `garden compose` 里用任意 Markdown、安全 HTML,以及卡片、行列、步骤等基础块自由组合。推荐说明草稿不是语法课,也不要把列表当成合法白名单。
|
|
20
|
+
|
|
21
|
+
````markdown
|
|
22
|
+
```garden compose
|
|
23
|
+
请根据我提供的材料和表达目标,在统一的 garden compose 里自由组合图文。现成图形无法表达、或需要把几种内容组合在一起时,用任意 Markdown / HTML 以及已有的基础块做成合适的说明。
|
|
24
|
+
|
|
25
|
+
我的材料:
|
|
26
|
+
- (粘贴要呈现的内容、关系和原文)
|
|
27
|
+
|
|
28
|
+
我的表达目标:
|
|
29
|
+
- (读者应该理解什么、重点是什么)
|
|
30
|
+
|
|
31
|
+
请你:
|
|
32
|
+
- 只根据材料组织内容,不要发明事实或结论
|
|
33
|
+
- 自行处理图形语法、布局和手机阅读适配,不要让我学习新语法或写 CSS
|
|
34
|
+
- 列表里的常用图示只是起点,不是合法白名单;没有现成配方也可以,先抽取真实关系再组合基础块
|
|
35
|
+
- 不要把结果限制为某一个现成模板;需要时可以混合普通 Markdown、安全 HTML,以及卡片、行列、步骤等基础块
|
|
36
|
+
```
|
|
37
|
+
````
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "步骤清单"
|
|
3
|
+
navTitle: "步骤清单"
|
|
4
|
+
description: "适合读者照着一项项做,并回来查看进度"
|
|
5
|
+
section: diagrams
|
|
6
|
+
order: 191
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- Generated by scripts/handbook-diagrams.mjs. Do not edit by hand. -->
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
适合读者照着一项项做,并回来查看进度。
|
|
14
|
+
|
|
15
|
+
只是概念上的几个阶段时写列表或分步图;步骤之间要观察状态变化时用逐步演示。
|
|
16
|
+
|
|
17
|
+
Typora 和 VS Code / Cursor 共用同一份推荐列表。在 `/garden` 里,这一项的名称和适用说明与上面相同。选中后会插入下面的 `garden compose` 说明草稿。补全材料和表达目标,再交给 AI 编译。
|
|
18
|
+
|
|
19
|
+
推荐说明草稿是起点,不是语法课,也不是唯一合法写法。需要时仍可在同一个 `garden compose` 里搭配 Markdown 或安全 HTML 基础块。
|
|
20
|
+
|
|
21
|
+
````markdown
|
|
22
|
+
```garden compose
|
|
23
|
+
请根据我提供的材料和表达目标,用 garden compose 做一个「步骤清单」说明图。
|
|
24
|
+
|
|
25
|
+
我的材料:
|
|
26
|
+
- (粘贴原文条目和需要保留的措辞)
|
|
27
|
+
|
|
28
|
+
我的表达目标:
|
|
29
|
+
- (读者要一眼看出什么)
|
|
30
|
+
|
|
31
|
+
请你:
|
|
32
|
+
- 只根据材料组织内容,不要发明事实或结论
|
|
33
|
+
- 自行处理图形语法、布局和手机阅读适配,不要让我学习标签或写 CSS
|
|
34
|
+
- 「步骤清单」是推荐起点:按读者会照着做的顺序列出清单,保留原文步骤,不要把概念阶段硬写成待办
|
|
35
|
+
- 推荐图示不是唯一合法写法;需要时仍可在同一 compose 里搭配必要的 Markdown / HTML 基础块
|
|
36
|
+
- 不要另起一种作者围栏或新语法,只使用 garden compose
|
|
37
|
+
```
|
|
38
|
+
````
|