排版样张

约 6 分钟2198 字

这一页不是文章,是样张。它把这个站的正文里会出现的每一种标记各放一份,方便一次看完。行长锁在 37em,约 34 个汉字——这一段正好可以拿来数。

行内标记

加粗是 700,用来标结论;强调是 500 加一条压在字脚的底色带,比着重号安静,比斜体准确——中文没有真斜体,硬倾斜是伪造字形。西文与标识符仍走真斜体,像 lorem ipsum 或者 useState。

行内代码写成 npm run build,路径写成 quartz/styles/joeyspace/_prose.scss。上标像这样 x2,脚注引用是这样的1。

改错的时候原文不删:行长是 630px 行长是 37em。外部链接会自己长出一个角标,比如 Quartz 手册;站内链接不长,比如全部笔记。

标题只到三级

这是三级标题

四级以下在这个站不存在。真的需要第四层时,用段首粗体作引导句,或者干脆把这一节拆成另一篇——层级深的文章和层级深的函数,毛病是同一个。

提示块归成三档

十三种 Obsidian 提示块按语气强度归并,不按语义类别。读者分不清 info 和 abstract 有什么区别,但分得清「这条要停一下」和「这条会出事」。

提示

note / info / tip / abstract / example / success 都落到这一档。左边是 2px 强调色竖线。

注意

warning / question / todo 落到这一档。线加粗到 3px。

警告

danger / failure / bug 落到这一档。标签变成橙底反白——全站唯一一处填充强调。

例外是引述:quote 不做提示块,退回引用块的形,因为它是引文不是提醒。

好代码读起来应该像同一个人在说同一件事,而不是三个人轮流打断彼此。

自己的工作日志 · 2026-07-11

列表

无序列表:

  • 第一项
  • 第二项
    • 嵌套只到两级
    • 第二级不再换新记号
  • 第三项

有序列表的序号走等宽字体:

  1. 先量行长
  2. 再数间距档位
  3. 最后查颜色

任务列表是 1em 的方框,勾是强调橙填充加反白:

  • 令牌层
  • 中文排版
  • 评论区接上后端

术语用定义列表:

组块 chunk
工作记忆里的一个可独立提取的单元。命名的本质是造组块。
内在负荷 intrinsic load
问题本身的复杂度,砍不掉,只能摊开。
外在负荷 extraneous load
表达方式带来的额外复杂度,可读性讨论的全部战场都在这里。

代码

语法高亮只做三档区分:关键字与运算符、字面量、注释。更细的分类在中文技术随笔里没有价值,而现成的 Shiki 主题都会给这个站带进第三个色相。

// 三个条件打包成一个可复述的概念
const eligible = (user: User) => user.active && !user.expired && user.role !== "guest"
 
if (eligible(u)) {
  grant(u) // 读到这里不用回头看
}

表格

三线表:表头下一条次要色的线,行线更浅一档,末行收口。没有竖线,也没有斑马纹。数字列右对齐并走等宽定宽数字。

模块分支深度函数行数返工
解析器2141
调度4386
导出3263
同步612011

表一 · 四个模块的粗略统计,样本太小,只能当方向看。

公式

行内公式压在行高里不撑段落,像 这样。块级公式上下各留一条细纹线:

式一 · 借信息熵打个比方:分支越均匀不可预测,读者要付的信息量越大。

图与图位

素材没到位就保持占位,写清楚缺的是什么规格的东西,不填灰色的假图。

图位缺 · 分支深度草图 · 16:9 · ≥1600px 宽
图一 · 同一段逻辑的两种拆法。左边六层,右边两层,行数几乎一样。

折叠块

折叠块只装可选材料,正文主线不许放进去。

统计口径与已知偏差

「返工次数」取的是同一个 PR 被打回请求修改的轮数,不含纯格式化的那一轮。四个模块由同一个人写,读者也基本是同两个人,所以样本里既有作者偏差也有读者偏差。

分支深度用静态扫描算,三元表达式记半层。这个口径偏宽,真实数字应该更难看一点。

分隔符


分隔符是一条 1px 实线,和这个站里其它横线同一根。它不需要自己的形状。

Footnotes

  1. 脚注区在正文之后,靠一条 1px 线和正文分开。序号走等宽字体的强调色。 ↩