Skip to content

fix(docs): 修复脚注区块被渲染两次的问题 - #56

Merged
Maoyao233 merged 1 commit into
mainfrom
fix/footnote-double-render
Sep 15, 2026
Merged

Maoyao233 merged 1 commit into
mainfrom
fix/footnote-double-render

Conversation

@Maoyao233

Copy link
Copy Markdown
Contributor

问题

/qa/faq/ 页面的脚注区块被渲染了两次,页面底部出现两个「附注」小节:

<h3>附注</h3><section class="footnotes">…</section>
<h3>附注</h3><section class="footnotes">…</section>

原因

VitePress 自 v2.0.0-alpha.19 起已内置脚注渲染:它依赖 @mdit/plugin-footnote,由 markdown.footnote 选项控制且默认为 true,引用式 [^1] 与行内 ^[...] 语法均可直接使用。

而项目在 docs/.vitepress/config.mts 中又通过 md.use(markdownItFootnote) 额外注册了 markdown-it-footnote。两者会各自注册 footnote 相关的 core 规则(footnote_tail / footnoteTail),且共用同一个 env.footnotes,因此解析结束后各追加一次脚注区块,最终输出两份。

该问题在升级到 alpha.19+ 之后才会出现 —— 本仓库在 #53 升级到 2.0.0-alpha.20 后即可复现。

修改

移除冗余的 markdown-it-footnote:

  • docs/.vitepress/config.mts:删除 import 与 md.use(markdownItFootnote)
  • package.json / pnpm-lock.yaml:移除 markdown-it-footnote 与 @types/markdown-it-footnote

保留了自定义的 footnote_block_open 渲染规则,以继续显示「附注」标题(该标题由 e6cd314 特意添加,VitePress 原生输出不带标题)。

验证

pnpm docs:build 通过,/qa/faq/ 页面:

片段 修复前 修复后
<h3>附注</h3> 2 1
class="footnotes" 2 1

脚注改为 VitePress 原生输出,锚点双向可用:

<sup class="footnote-ref"><a href="#footnote1">[1]</a><a class="footnote-anchor" id="footnote-ref1"></a></sup>
…
<li id="footnote1" class="footnote-item">…<a href="#footnote-ref1" class="footnote-backref">↩︎</a></li>

输出使用的 footnotes / footnote-item / footnote-ref / footnote-backref 类名均为 VitePress 主题 vp-doc.css 已有的样式,无需额外 CSS。

VitePress 自 v2.0.0-alpha.19 起已内置脚注支持:其自带的 @mdit/plugin-footnote
由 `markdown.footnote` 控制且默认为 true,引用式 `[^1]` 与行内 `^[...]` 均可直接使用。

项目此前额外注册的 markdown-it-footnote 会与之同时向 markdown-it 注册 footnote
核心规则,两者都会在解析完成后追加脚注区块,导致同一页面的脚注被渲染两次
(如 /qa/faq/)。

移除该冗余插件及其类型依赖,改由 VitePress 原生处理;自定义的「附注」标题保留。
@Maoyao233
Maoyao233 merged commit d83f9c4 into main Sep 15, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant