You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在基于Next.js、MDX和Gray Matter的博客中如何渲染脚注?

在基于Next.js、MDX和Gray Matter的博客中如何渲染脚注?

嘿,我刚好折腾过类似的场景!你现在用的MDXRemote默认是不支持脚注这种扩展Markdown语法的,得靠remark生态的插件来搞定,一步步来很简单:

1. 安装脚注解析插件

首先得装remark-footnotes,它专门用来解析这种[^1]格式的脚注语法,在项目根目录跑命令:

npm install remark-footnotes
# 或者用yarn
yarn add remark-footnotes
# 或者pnpm
pnpm add remark-footnotes

2. 给MDXRemote配置插件

接下来修改你渲染MDX的代码,把这个插件加到MDXRemote的配置里就行。比如原来的MDXRemote渲染部分,现在要引入插件并配置:

// 先引入插件
import remarkFootnotes from 'remark-footnotes';
// ... 其他已有的导入,比如MDXRemote、你的自定义组件

// 然后修改MDXRemote的使用
<MDXRemote
  source={content} // 这里是你从gray-matter解析出来的MDX内容
  components={{
    Carousel,
    CarouselTwo,
    Youtube,
    HoverImageLink,
    // 要是你想自定义脚注的渲染组件,也可以在这里加,比如自定义FootnoteRef或者FootnoteList
  }}
  // 关键就是加这一行,把插件传进去
  remarkPlugins={[remarkFootnotes]}
/>

3. 给脚注加样式(可选但推荐)

默认渲染出来的脚注就是普通的HTML元素,样式会很朴素,你可以在globals.css里加一点CSS来美化,比如:

/* 脚注上标的样式 */
.footnote-ref a {
  font-size: 0.8em;
  vertical-align: super;
  text-decoration: none;
  color: #3b82f6;
  margin-left: 0.2em;
}

.footnote-ref a:hover {
  text-decoration: underline;
}

/* 脚注列表的样式 */
.footnote-list {
  margin-top: 3em;
  border-top: 1px solid #e5e7eb;
  padding-top: 1.5em;
  list-style: none;
  counter-reset: footnote-counter;
}

.footnote-list li {
  margin-bottom: 1em;
  counter-increment: footnote-counter;
  padding-left: 1.5em;
  position: relative;
}

.footnote-list li::before {
  content: counter(footnote-counter) ".";
  font-weight: 600;
  position: absolute;
  left: 0;
  color: #3b82f6;
}

这样处理之后,你写的[^1]就会变成带样式的上标链接,对应的脚注内容也会在页面底部生成格式化的列表,点击上标还能直接跳转到对应的脚注位置,体验就很完整啦!

备注:内容来源于stack exchange,提问作者T.McL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 06:58:02