feat: 支持 Obsidian 风格 callout,并把脚注文案中文化
Callout
- 接入 satteri-callouts(HAST 插件),用 Obsidian 语法:
> [!tip] 标题
> 内容
> [!warning]- 默认折叠
类型名大小写不敏感,支持嵌套、可折叠、标题内联 Markdown。
- 样式没有用它自带的主题 CSS(Obsidian 原版是高饱和蓝/青/紫,还靠
mix-blend-mode 叠底色,在暖纸底上会发脏),改为新建 src/styles/callouts.css,
复用主题已有的 --admonitions-color-* token,与 .admonition(免责声明块)
统一成「3px 左边框 + 彩色标题、无底色」。
- 类型映射:tip/hint→tip,note/info/todo/abstract/summary/tldr→note,
important/example→important,warning/attention/question/help/faq→warning,
caution→caution,success/check/done→(新增的)success,
danger/error/failure/fail/missing/bug→destructive,quote/cite→muted-foreground。
- global.css 补一个 --admonitions-color-success(浅色 oklch(0.62 0.16 150) /
深色 oklch(0.7 0.18 150)),与 tip(180)/note(250)/important(310) 同明度彩度。
脚注中文化
features.gfm.footnotes 设 label「脚注」、backLabel「返回第 {reference} 条」、
backContent「↑」,替换默认的 Footnotes / Back to reference。
正文
- 周末愉快.md:`::: tip 下周计划`(冒号后有空格,从来不是合法指令,
一直渲染成普通段落)改成 `> [!tip] 下周计划`,任务列表一并加 `>` 前缀。
- 关于价值感和归属感的思考.md 的 `> [!tip] Tip` 本来就合法,一行未改,
现在自动变成真 callout。
顺带修
autolink-headings 不再给脚注区那个 sr-only 的「脚注」标题加 # 锚点。
验证
- 两处 callout 均正确渲染;callout 内的图片仍带 data-lightbox-src
(说明 imageLightbox 与 satteriCallouts 的执行顺序没问题)。
- 临时加了一篇带脚注和折叠 callout 的文章验证:脚注文案、返回链接、
折叠态 <details>/<summary> 结构都正确,验证后已删除。
- 整页对比基线:37/41 一致,4 处差异中 2 处是本次有意的 callout 生效,
另 2 处是已知的智能标点引号方向(Sätteri 的结果更正确)。
- pnpm build 41 页 + pagefind 通过。
This commit is contained in:
+15
-1
@@ -15,6 +15,7 @@ import { shiftHeadings } from "./src/plugins/satteri/shift-headings.mjs"
|
||||
import { autolinkHeadings } from "./src/plugins/satteri/autolink-headings.mjs"
|
||||
import { imageLightbox } from "./src/plugins/satteri/image-lightbox.mjs"
|
||||
import { satteriKatex } from "satteri-katex"
|
||||
import satteriCallouts from "satteri-callouts"
|
||||
import { site } from "./src/data/site"
|
||||
|
||||
export default defineConfig({
|
||||
@@ -83,7 +84,18 @@ export default defineConfig({
|
||||
processor: satteri({
|
||||
// dashes: false 是为了和迁移前的输出逐字一致:Astro 的 unified 管线
|
||||
// 会把直引号排成弯引号,但不转换 --- (Sätteri 默认会转成破折号)。
|
||||
features: { math: true, smartPunctuation: { dashes: false } },
|
||||
features: {
|
||||
math: true,
|
||||
smartPunctuation: { dashes: false },
|
||||
// 脚注文案中文化(默认是 "Footnotes" / "Back to reference 1")
|
||||
gfm: {
|
||||
footnotes: {
|
||||
label: "脚注",
|
||||
backLabel: "返回第 {reference} 条",
|
||||
backContent: "↑",
|
||||
},
|
||||
},
|
||||
},
|
||||
mdastPlugins: [
|
||||
readingTime,
|
||||
excerpt,
|
||||
@@ -97,6 +109,8 @@ export default defineConfig({
|
||||
satteriHeadingIdsPlugin(),
|
||||
autolinkHeadings,
|
||||
imageLightbox,
|
||||
// Obsidian 语法的 callout:> [!tip] 标题
|
||||
satteriCallouts(),
|
||||
],
|
||||
}),
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user