<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://firefly.cuteleaf.cn/</id>
  <title type="text">Firefly</title>
  <subtitle type="text">Demo site</subtitle>
  <updated>2026-09-17T00:00:00.000Z</updated>
  <author><name>XiaYe</name></author>
  <link rel="alternate" href="https://firefly.cuteleaf.cn/"/>
  <link rel="self" href="https://firefly.cuteleaf.cn/atom.xml"/>
  <generator uri="https://github.com/CuteLeaf/Firefly">Firefly v6.16.8</generator>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/firefly/</id>
      <title type="text">Firefly 一款清新美观的 Astro 博客主题模板</title>
      <published>1970-01-02T00:00:00.000Z</published>
      <updated>1970-01-02T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/firefly/"/>
      <summary type="text">Firefly 是一款基于 Astro 框架和 Fuwari 模板开发的清新美观且现代化个人博客主题模板，专为技术爱好者和内容创作者设计。该主题融合了现代 Web 技术栈，提供了丰富的功能模块和高度可定制的界面，让您能够轻松打造出专业且美观的个人博客网站。</summary>
      <content type="html"><![CDATA[<section><h2>🌟 项目概述<a href="#-项目概述"><span>#</span></a></h2><p><strong>Firefly</strong> 是一款基于 Astro 框架和 Fuwari 模板开发的清新美观且现代化个人博客主题模板，专为技术爱好者和内容创作者设计。该主题融合了现代 Web 技术栈，提供了丰富的功能模块和高度可定制的界面，让您能够轻松打造出专业且美观的个人博客网站。</p><p><strong>🖥️在线预览： <a href="https://firefly.cuteleaf.cn/">Firefly - Demo site</a></strong></p><p><strong>📝Firefly使用文档： <a href="https://docs-firefly.cuteleaf.cn/" target="_blank">https://docs-firefly.cuteleaf.cn</a></strong></p><p><strong>⭐Firefly开源地址：<a href="https://github.com/CuteLeaf/Firefly" target="_blank">https://github.com/CuteLeaf/Firefly</a></strong></p><p><strong>⭐Fuwari开源地址：<a href="https://github.com/saicaca/fuwari" target="_blank">https://github.com/saicaca/fuwari</a></strong></p><a href="https://github.com/CuteLeaf/Firefly" target="_blank"><div><div><div><div></div><div>CuteLeaf</div></div><div>/</div><div>Firefly</div></div><div></div></div><div>🍀Firefly, fresh and aesthetic Astro blog theme template. </div><div><div>—</div><div>—</div><div>MIT</div><span>Astro</span></div></a><a href="https://github.com/saicaca/fuwari" target="_blank"><div><div><div><div></div><div>saicaca</div></div><div>/</div><div>fuwari</div></div><div></div></div><div>✨A static blog template built with Astro. </div><div><div>—</div><div>—</div><div>MIT</div><span>Astro</span></div></a><p></p><figure><img alt="Firefly" loading="lazy" width="2192" height="1233" src="/_astro/1.BQ4-k1kz_Z17x8Xz.webp" /><figcaption>Firefly</figcaption></figure><p></p></section>
<section><h2>🚀 技术架构<a href="#-技术架构"><span>#</span></a></h2><ul>
<li><strong>静态站点生成</strong>: 基于 Astro ，提供极快的加载速度和优秀的 SEO 优化</li>
<li><strong>TypeScript 支持</strong>: 完整的类型安全，提升开发体验和代码质量</li>
<li><strong>响应式设计</strong>: 使用 Tailwind CSS 构建，完美适配桌面端和移动端</li>
<li><strong>组件化开发</strong>: 支持 Astro、Svelte 组件，灵活可扩展</li>
</ul></section>
<section><h2>📖 配置说明<a href="#-配置说明"><span>#</span></a></h2><blockquote><p>📚 <strong>详细配置文档</strong>: 查看 <a href="https://docs-firefly.cuteleaf.cn/" target="_blank">Firefly 使用文档</a> 获取完整的配置指南</p></blockquote></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/guide/</id>
      <title type="text">Firefly 简单使用指南</title>
      <published>1970-01-02T00:00:00.000Z</published>
      <updated>1970-01-02T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/guide/"/>
      <summary type="text">如何使用 Firefly 博客模板。</summary>
      <content type="html"><![CDATA[<p>这个博客模板是基于 <a href="https://astro.build/" target="_blank">Astro</a> 构建的。对于本指南中未提及的内容，您可以在 <a href="https://docs.astro.build/" target="_blank">Astro 文档</a> 中找到答案。</p>
<section><h2>文章的 Front-matter<a href="#文章的-front-matter"><span>#</span></a></h2><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>---</span></div></div><div><div><div>2</div></div><div><span>title</span><span>: </span><span>我的第一篇博客文章</span></div></div><div><div><div>3</div></div><div><span>published</span><span>: </span><span>2023-09-09</span></div></div><div><div><div>4</div></div><div><span>description</span><span>: </span><span>这是我新 Astro 博客的第一篇文章。</span></div></div><div><div><div>5</div></div><div><span>image</span><span>: </span><span>./cover.jpg</span></div></div><div><div><div>6</div></div><div><span>tags</span><span>: [</span><span>前端</span><span>, </span><span>开发</span><span>]</span></div></div><div><div><div>7</div></div><div><span>category</span><span>: </span><span>前端开发</span></div></div><div><div><div>8</div></div><div><span>draft</span><span>: </span><span>false</span></div></div><div><div><div>9</div></div><div><span>---</span></div></div></code></pre><div><div></div><div></div></div></figure></div>

<table><thead><tr><th>属性</th><th>描述</th></tr></thead><tbody><tr><td><code>title</code></td><td>文章标题。</td></tr><tr><td><code>published</code></td><td>文章发布日期。</td></tr><tr><td><code>updated</code></td><td>文章更新日期。如果未设置，将默认使用发布日期。</td></tr><tr><td><code>pinned</code></td><td>是否将此文章置顶在文章列表顶部。</td></tr><tr><td><code>description</code></td><td>文章的简短描述。显示在首页上。</td></tr><tr><td><code>image</code></td><td>文章封面图片路径。<br />1. 以 <code>http://</code> 或 <code>https://</code> 开头：使用网络图片<br />2. 以 <code>/</code> 开头：<code>public</code> 目录中的图片<br />3. 不带任何前缀：相对于 markdown 文件的路径</td></tr><tr><td><code>tags</code></td><td>文章标签。</td></tr><tr><td><code>category</code></td><td>文章分类。</td></tr><tr><td><code>lang</code></td><td>文章语言代码（如 <code>zh-CN</code>）。仅当文章语言与站点默认语言不同时设置。</td></tr><tr><td><code>licenseName</code></td><td>文章内容的许可证名称。</td></tr><tr><td><code>licenseUrl</code></td><td>文章内容的许可证链接。</td></tr><tr><td><code>author</code></td><td>文章作者。</td></tr><tr><td><code>sourceLink</code></td><td>文章内容的来源链接或参考。</td></tr><tr><td><code>draft</code></td><td>如果这篇文章仍是草稿，则不会显示。</td></tr><tr><td><code>comment</code></td><td>是否启用此文章的评论功能。默认为 <code>true</code>。</td></tr><tr><td><code>slug</code></td><td>自定义文章 URL 路径。如果不设置，将使用文件名作为 URL。</td></tr><tr><td><code>password</code></td><td>文章密码。设置后文章内容将被 AES-256-GCM 加密，访客需输入密码才能查看。</td></tr><tr><td><code>passwordHint</code></td><td>密码提示。显示在密码输入框上方，帮助访客回忆密码，也可以不加。</td></tr></tbody></table></section>
<section><h2>文章文件的放置位置<a href="#文章文件的放置位置"><span>#</span></a></h2><p>您的文章文件应放置在 <code>src/content/posts/</code> 目录中。您也可以创建子目录来更好地组织您的文章和资源。</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>src/content/posts/</span></div></div><div><div><div>2</div></div><div><span>├── post-1.md</span></div></div><div><div><div>3</div></div><div><span>└── post-2/</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>├── cover.png</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>└── index.md</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>自定义文章 URL (Slug)<a href="#自定义文章-url-slug"><span>#</span></a></h2><section><h3>什么是 Slug？<a href="#什么是-slug"><span>#</span></a></h3><p>Slug 是文章 URL 路径的自定义部分。如果不设置 slug，系统将使用文件名作为 URL。</p></section><section><h3>Slug 使用示例<a href="#slug-使用示例"><span>#</span></a></h3><section><h4>示例 1：使用文件名作为 URL<a href="#示例-1使用文件名作为-url"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>---</span></div></div><div><div><div>2</div></div><div><span>title</span><span>: </span><span>我的第一篇博客文章</span></div></div><div><div><div>3</div></div><div><span>published</span><span>: </span><span>2023-09-09</span></div></div><div><div><div>4</div></div><div><span>---</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>文件：<code>src/content/posts/my-first-blog-post.md</code></p><p>URL：<code>/posts/my-first-blog-post</code></p></section><section><h4>示例 2：自定义 Slug<a href="#示例-2自定义-slug"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>---</span></div></div><div><div><div>2</div></div><div><span>title</span><span>: </span><span>我的第一篇博客文章</span></div></div><div><div><div>3</div></div><div><span>published</span><span>: </span><span>2023-09-09</span></div></div><div><div><div>4</div></div><div><span>slug</span><span>: </span><span>hello-world</span></div></div><div><div><div>5</div></div><div><span>---</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>文件：<code>src/content/posts/my-first-blog-post.md</code></p><p>URL：<code>/posts/hello-world</code></p></section><section><h4>示例 3：其他语言文件名使用Slug<a href="#示例-3其他语言文件名使用slug"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>---</span></div></div><div><div><div>2</div></div><div><span>title</span><span>: </span><span>如何使用 Firefly 博客主题</span></div></div><div><div><div>3</div></div><div><span>published</span><span>: </span><span>2023-09-09</span></div></div><div><div><div>4</div></div><div><span>slug</span><span>: </span><span>how-to-use-firefly-blog-theme</span></div></div><div><div><div>5</div></div><div><span>---</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>文件：<code>src/content/posts/如何使用Firefly博客主题.md</code></p><p>URL：<code>/posts/how-to-use-firefly-blog-theme</code></p></section></section><section><h3>Slug 使用建议<a href="#slug-使用建议"><span>#</span></a></h3><ol>
<li><strong>使用英文和连字符</strong>：<code>my-awesome-post</code> 而不是 <code>my awesome post</code></li>
<li><strong>保持简洁</strong>：避免过长的 slug</li>
<li><strong>具有描述性</strong>：让 URL 能够反映文章内容</li>
<li><strong>避免特殊字符</strong>：只使用字母、数字和连字符</li>
<li><strong>保持一致性</strong>：在整个博客中使用相似的命名模式</li>
</ol></section><section><h3>注意事项<a href="#注意事项"><span>#</span></a></h3><ul>
<li>Slug 一旦设置并发布，建议不要随意更改，以免影响 SEO 和已存在的链接</li>
<li>如果多个文章使用相同的 slug，后面的文章会覆盖前面的</li>
<li>Slug 会自动转换为小写</li>
</ul></section></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/20260917-shanghai-ctyun-rdp/</id>
      <title type="text">上海电信云电脑如何使用RDP连接</title>
      <published>2026-09-17T00:00:00.000Z</published>
      <updated>2026-09-17T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/20260917-shanghai-ctyun-rdp/"/>
      <summary type="text"></summary>
      <content type="html"><![CDATA[<section><h2><a href="#p-22305875-h-1"></a>问题点<a href="#问题点"><span>#</span></a></h2><p>领到免费云电脑后，使用tailscale进行虚拟组网，开启远程连接，会发现无法连接到这个电脑。</p></section>
<section><h2><a href="#p-22305875-h-2"></a>原因和解决方案<a href="#原因和解决方案"><span>#</span></a></h2><p>Windows Server 当前没有可供 RDP 使用的 Remote Desktop 自签名证书。<br />
<strong>解决方案</strong></p></section>
<section><h2><a href="#p-22305875-step-1-rdp-3"></a>Step 1：恢复 RDP 自签名证书存储配置<a href="#step-1恢复-rdp-自签名证书存储配置"><span>#</span></a></h2><p>以管理员身份打开 PowerShell，执行：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>New-ItemProperty `</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>-Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations' `</span></div></div><div><div><div>3</div></div><div><span><span>  </span></span><span>-Name 'SelfSignedCertStore' `</span></div></div><div><div><div>4</div></div><div><span><span>  </span></span><span>-PropertyType String `</span></div></div><div><div><div>5</div></div><div><span><span>  </span></span><span>-Value 'Remote Desktop' `</span></div></div><div><div><div>6</div></div><div><span><span>  </span></span><span>-Force</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>验证：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Get-ItemProperty `</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations' `</span></div></div><div><div><div>3</div></div><div><span><span>  </span></span><span>-Name SelfSignedCertStore</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>期望：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>SelfSignedCertStore : Remote Desktop</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /></section>
<section><h2><a href="#p-22305875-step-2-rdp-4"></a>Step 2：启动 RDP 证书生成相关服务<a href="#step-2启动-rdp-证书生成相关服务"><span>#</span></a></h2><p>执行：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Start-Service CryptSvc</span></div></div><div><div><div>2</div></div><div><span>Start-Service KeyIso</span></div></div><div><div><div>3</div></div><div><span>Start-Service SessionEnv</span></div></div><div><div><div>4</div></div><div><span>Start-Service CertPropSvc</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>然后检查：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Get-Service CertPropSvc,KeyIso,CryptSvc,SessionEnv |</span></div></div><div><div><div>2</div></div><div><span>Format-Table Name,Status,StartType</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>这些服务的 Startup Type 不一定全部是 Automatic。</p><p>关键点是：</p><blockquote><p>它们应该能够正常启动，而不是 Disabled 或启动时报错。</p></blockquote><hr /></section>
<section><h2><a href="#p-22305875-step-3-rdp-5"></a>Step 3：确认基础 RDP 配置<a href="#step-3确认基础-rdp-配置"><span>#</span></a></h2><p>执行：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Set-ItemProperty `</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>-Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server' `</span></div></div><div><div><div>3</div></div><div><span><span>  </span></span><span>-Name 'fDenyTSConnections' `</span></div></div><div><div><div>4</div></div><div><span><span>  </span></span><span>-Value 0</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>执行：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Set-ItemProperty `</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>-Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' `</span></div></div><div><div><div>3</div></div><div><span><span>  </span></span><span>-Name 'fEnableWinStation' `</span></div></div><div><div><div>4</div></div><div><span><span>  </span></span><span>-Value 1</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>确认端口：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Get-ItemProperty `</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' `</span></div></div><div><div><div>3</div></div><div><span><span>  </span></span><span>-Name fEnableWinStation,PortNumber</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>期望：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>fEnableWinStation : 1</span></div></div><div><div><div>2</div></div><div><span>PortNumber        : 3389</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /></section>
<section><h2><a href="#p-22305875-step-4-windows-rdp-6"></a>Step 4：启用 Windows 防火墙 RDP 规则<a href="#step-4启用-windows-防火墙-rdp-规则"><span>#</span></a></h2><p>执行：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Get-NetFirewallRule |</span></div></div><div><div><div>2</div></div><div><span>Where-Object {$_.Name -like "RemoteDesktop*"} |</span></div></div><div><div><div>3</div></div><div><span>Enable-NetFirewallRule</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p><strong>然后重启电脑就能正常连接了</strong></p></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/20260807-firefly-comments/</id>
      <title type="text">Firefly博客添加评论功能</title>
      <published>2026-08-07T00:00:00.000Z</published>
      <updated>2026-08-07T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/20260807-firefly-comments/"/>
      <summary type="text"></summary>
      <content type="html"><![CDATA[<p>除了友链之外，再加个评论的功能，那就可以收到大伙的评论了！</p>
<p>我选择使用<code>giscus</code>来实现评论功能。主要是它不需要依赖于数据库，而且配置也比较简单，最主要的是依赖于<code>Github</code>并且纯免费！！！</p>
<section><h3>配置giscus<a href="#%E9%85%8D%E7%BD%AEgiscus">#</a><a href="#配置giscus"><span>#</span></a></h3><ul>
<li>首先，你需要创建一个新的GitHub库用来保存博客的那些评论，你需要确保该仓库是公开的,否则访客将无法查看 <code>Discussion</code>。</li>
<li>然后，你需要给你的这个仓库repo安装<a href="https://github.com/apps/giscus" target="_blank">giscus app</a>,否则访客将无法评论和回应。</li>
<li>最后，你需要确保 <code>Discussions</code> 功能已在你的仓库中启用。</li>
</ul><p>打开giscus官方网站 <code>https://giscus.app/</code>，进行配置：</p><ul>
<li>语言：选择你目前正在使用的语言</li>
<li>仓库：填写你刚刚创建的仓库(格式为你的用户名/仓库名)</li>
<li>页面 ↔️ discussion 映射关系(默认即可)</li>
<li>Discussion 分类（默认即可）</li>
<li>特性（默认即可）</li>
<li>主题（默认即可）</li>
</ul><p>按照顺序配置好之后，下方会自动生成</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>`&lt;script src="https://giscus.app/client.js"</span></div></div><div><div><div>2</div></div><div><span><span> </span></span><span>data-repo="[在此输入仓库]"</span></div></div><div><div><div>3</div></div><div><span><span> </span></span><span>data-repo-id="[在此输入仓库 ID]"</span></div></div><div><div><div>4</div></div><div><span><span> </span></span><span>data-category="[在此输入分类名]"</span></div></div><div><div><div>5</div></div><div><span><span> </span></span><span>data-category-id="[在此输入分类 ID]"</span></div></div><div><div><div>6</div></div><div><span><span> </span></span><span>data-mapping="pathname"</span></div></div><div><div><div>7</div></div><div><span><span> </span></span><span>data-strict="0"</span></div></div><div><div><div>8</div></div><div><span><span> </span></span><span>data-reactions-enabled="1"</span></div></div><div><div><div>9</div></div><div><span><span> </span></span><span>data-emit-metadata="0"</span></div></div><div><div><div>10</div></div><div><span><span> </span></span><span>data-input-position="bottom"</span></div></div><div><div><div>11</div></div><div><span><span> </span></span><span>data-theme="preferred_color_scheme"</span></div></div><div><div><div>12</div></div><div><span><span> </span></span><span>data-lang="zh-CN"</span></div></div><div><div><div>13</div></div><div><span><span> </span></span><span>crossorigin="anonymous"</span></div></div><div><div><div>14</div></div><div><span><span> </span></span><span>async&gt;</span></div></div><div><div><div>15</div></div><div><span>&lt;/script&gt;`</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section>
<section><h3>添加评论到指定页面<a href="#%E6%B7%BB%E5%8A%A0%E8%AF%84%E8%AE%BA%E5%88%B0%E6%8C%87%E5%AE%9A%E9%A1%B5%E9%9D%A2">#</a><a href="#添加评论到指定页面"><span>#</span></a></h3><p>只需要在每个页面对应的<code>.astro</code>文件中的<code>&lt;/MainGridLayout&gt;</code>前面添加上方生成的代码即可。</p><p>比如我要在文章页面添加评论，找到<code>src\pages\posts\[...slug].astro</code>文件，在文件中找到<code>&lt;/MainGridLayout&gt;</code>标签，在其前面添加上方生成的代码即可。</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span><span> </span></span><span>`&lt;Icon name="material-symbols:chevron-right-rounded" class="text-[2rem] text-[var(--primary)]" /&gt;</span></div></div><div><div><div>2</div></div><div><span><span> </span></span><span>&lt;/div&gt;}</span></div></div><div><div><div>3</div></div><div><span><span> </span></span><span>&lt;/a&gt;</span></div></div><div><div><div>4</div></div><div><span><span> </span></span><span>&lt;/div&gt;</span></div></div><div><div><div>5</div></div><div><span>&lt;!-- giscus评论 --&gt;</span></div></div><div><div><div>6</div></div><div><span>+ &lt;script src="https://giscus.app/client.js"</span></div></div><div><div><div>7</div></div><div><span>+    data-repo="AULyPc/aulypc.github.io"</span></div></div><div><div><div>8</div></div><div><span>+    data-repo-id="xxxxxxxxxxx"</span></div></div><div><div><div>9</div></div><div><span>+    data-category="Announcements"</span></div></div><div><div><div>10</div></div><div><span>+    data-category-id="xxxxxxxxxxxxx"</span></div></div><div><div><div>11</div></div><div><span>+    data-mapping="pathname"</span></div></div><div><div><div>12</div></div><div><span>+    data-strict="0"</span></div></div><div><div><div>13</div></div><div><span>+    data-reactions-enabled="1"</span></div></div><div><div><div>14</div></div><div><span>+    data-emit-metadata="0"</span></div></div><div><div><div>15</div></div><div><span>+    data-input-position="top"</span></div></div><div><div><div>16</div></div><div><span>+    data-theme="preferred_color_scheme"</span></div></div><div><div><div>17</div></div><div><span>+    data-lang="zh-CN"</span></div></div><div><div><div>18</div></div><div><span>+    crossorigin="anonymous"</span></div></div><div><div><div>19</div></div><div><span>+    async&gt;</span></div></div><div><div><div>20</div></div><div><span>+&lt;/script&gt;</span></div></div><div><div><div>21</div></div><div><span>&lt;/MainGridLayout&gt;</span></div></div><div><div><div>22</div></div><div><span>&lt;style is:global&gt;</span></div></div><div><div><div>23</div></div><div><span>#post-container :nth-child(1) { animation-delay: calc(var(--content-delay) + 0ms) }</span></div></div><div><div><div>24</div></div><div><span>#post-container :nth-child(2) { animation-delay: calc(var(--content-delay) + 50ms) }</span></div></div><div><div><div>25</div></div><div><span>#post-container :nth-child(3) { animation-delay: calc(var(--content-delay) + 100ms) }</span></div></div><div><div><div>26</div></div><div><span>#post-container :nth-child(4) { animation-delay: calc(var(--content-delay) + 175ms) }</span></div></div><div><div><div>27</div></div><div><span>#post-container :nth-child(5) { animation-delay: calc(var(--content-delay) + 250ms) }</span></div></div><div><div><div>28</div></div><div><span>#post-container :nth-child(6) { animation-delay: calc(var(--content-delay) + 325ms) }</span></div></div><div><div><div>29</div></div><div><span>&lt;/style&gt;`</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>最后效果如图 <img src="https://blog.kimbleex.top/_astro/comment.BnHt7-YC_20ScJO.webp" alt="" /></p></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/20260807-google-workspace-com-net/</id>
      <title type="text">通过 Google Workspace 实现 14 人民币每年购买 com net 等顶级域名（续费同价）</title>
      <published>2026-08-07T00:00:00.000Z</published>
      <updated>2026-08-07T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/20260807-google-workspace-com-net/"/>
      <summary type="text"></summary>
      <content type="html"><![CDATA[<p>一直以来，com 域名的价格都在 70 + 左右，有时候即使首年很便宜，但是续费却仍然需要 70 + 的价格，而现在有一个方案可以实现首年只需要 14 元人民币就可以购买到一个 com net 等顶级域名，并且理论上续费也是同样的价格续费，不过因为目前并没有足够的时间测试续费价格是否和购买价格一致，所以请理性看待本篇文章经实践检验，续费也是75里拉，约人民币11块。</p>
<blockquote><p>核心：利用土耳其的低价进行购买</p></blockquote>
<p>准备工作：</p>
<ol>
<li>一张实体信用卡 （虚拟卡会触发风控，要求上传照片</li>
<li>一个 Google 账号</li>
<li>一个用于注册新 Google 账号的手机号 （用于接码</li>
</ol>
<section><h2><a href="#p-18550962-workspace-2"></a><strong>注册 workspace</strong><a href="#注册-workspace"><span>#</span></a></h2><section><h3><a href="#p-18550962-h-3"></a><strong>点击开始试用</strong><a href="#点击开始试用"><span>#</span></a></h3><p><a href="https://cdn3.ldstatic.com/original/4X/4/b/e/4bee11911482c900c59b3d81b59e733b6c82ecee.jpeg" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/4/b/e/4bee11911482c900c59b3d81b59e733b6c82ecee_2_690x318.jpeg" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-4"></a><strong>填写公司名称等信息</strong><a href="#填写公司名称等信息"><span>#</span></a></h3><p>区域一定要选择<code>土耳其</code></p><p><a href="https://cdn3.ldstatic.com/original/4X/f/8/8/f880855640e37f610a05aae6ff40bd7269dbf600.jpeg" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/f/8/8/f880855640e37f610a05aae6ff40bd7269dbf600_2_690x472.jpeg" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-5"></a><strong>填写联系信息</strong><a href="#填写联系信息"><span>#</span></a></h3><p><a href="https://cdn3.ldstatic.com/original/4X/e/c/0/ec080c5ff3c69acfea09fad3ca5781a15245e48e.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/e/c/0/ec080c5ff3c69acfea09fad3ca5781a15245e48e_2_690x425.png" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-6"></a><strong>选择设置账号方式</strong><a href="#选择设置账号方式"><span>#</span></a></h3><p>必须选择 <code>获取新的自定义域名</code></p><p><a href="https://cdn3.ldstatic.com/original/4X/c/0/0/c0044c0b128c6efb4b20174e5043b28bf0c3e715.jpeg" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/c/0/0/c0044c0b128c6efb4b20174e5043b28bf0c3e715_2_690x378.jpeg" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-7"></a><strong>选择你需要的域名</strong><a href="#选择你需要的域名"><span>#</span></a></h3><p>可以看到这里有很多的顶级域名都是 75 里拉的价格，选择你喜欢的后缀即可</p><p><a href="https://cdn3.ldstatic.com/original/4X/3/5/c/35c935b7fc99208deef2fe2be02ca40ffc69b786.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/3/5/c/35c935b7fc99208deef2fe2be02ca40ffc69b786_2_431x500.png" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-8"></a><strong>查看域名信息</strong><a href="#查看域名信息"><span>#</span></a></h3><p><a href="https://cdn3.ldstatic.com/original/4X/f/2/e/f2efa5785c6007c5e07be670f2465d56b94a6d76.jpeg" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/f/2/e/f2efa5785c6007c5e07be670f2465d56b94a6d76_2_569x500.jpeg" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-9"></a><strong>填写企业信息</strong><a href="#填写企业信息"><span>#</span></a></h3><p>建议使用<code>土耳其</code>的地址，因为我们要通过里拉进行付款</p><p><a href="https://cdn3.ldstatic.com/original/4X/6/5/4/6545deffeee3f46145311a4f3222bce1ddc6744b.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/6/5/4/6545deffeee3f46145311a4f3222bce1ddc6744b_2_398x500.png" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-10"></a><strong>设置登录信息</strong><a href="#设置登录信息"><span>#</span></a></h3><p><a href="https://cdn3.ldstatic.com/original/4X/2/e/e/2ee013d36be09470751166d14dacdad86e23d444.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/2/e/e/2ee013d36be09470751166d14dacdad86e23d444_2_494x500.png" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-11"></a><strong>跳转登录页面</strong><a href="#跳转登录页面"><span>#</span></a></h3><p><a href="https://cdn3.ldstatic.com/original/4X/4/3/f/43fd1bb8f9abb76aa063374d882e81afd4292b68.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/4/3/f/43fd1bb8f9abb76aa063374d882e81afd4292b68_2_690x303.png" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-12"></a><strong>输入密码登录</strong><a href="#输入密码登录"><span>#</span></a></h3><p><a href="https://cdn3.ldstatic.com/original/4X/9/2/d/92d9b60b95011314342f397893f1826230a5d9d9.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/9/2/d/92d9b60b95011314342f397893f1826230a5d9d9_2_690x314.png" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-13"></a><strong>验证手机号</strong><a href="#验证手机号"><span>#</span></a></h3><p>输入准备接码的手机号 +86 可接</p><p><a href="https://cdn3.ldstatic.com/original/4X/3/8/8/38888feb69a9e1ca150abbdc69c1498361589021.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/3/8/8/38888feb69a9e1ca150abbdc69c1498361589021_2_282x500.png" alt="" />
</a></p><p>输入收到的短信验证码</p><p><a href="https://cdn3.ldstatic.com/original/4X/4/f/4/4f451dce3d6104ab27aed96e15036ef675fce7a1.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/4/f/4/4f451dce3d6104ab27aed96e15036ef675fce7a1_2_378x500.png" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-14"></a><strong>注册成功</strong><a href="#注册成功"><span>#</span></a></h3><p><a href="https://cdn3.ldstatic.com/original/4X/5/f/2/5f204a7dd414845b8e4dcc75dfb6b0d2ed9cb391.jpeg" target="_blank"><img src="https://cdn3.ldstatic.com/original/4X/5/f/2/5f204a7dd414845b8e4dcc75dfb6b0d2ed9cb391.jpeg" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-15"></a><strong>开始试用</strong><a href="#开始试用"><span>#</span></a></h3><p><a href="https://cdn3.ldstatic.com/original/4X/3/b/5/3b5310a89d6bb490d8b0b86b2055b26f22e2d4bc.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/3/b/5/3b5310a89d6bb490d8b0b86b2055b26f22e2d4bc_2_243x500.png" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-16"></a><strong>查看订阅信息</strong><a href="#查看订阅信息"><span>#</span></a></h3><p>workspace 前 14 天是免费的，并且后面也会取消，所以不用关注，主要看下域名和价格是否正确</p><p><a href="https://cdn3.ldstatic.com/original/4X/f/6/0/f6018eeb3af7707db1650de6215e61921f8de419.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/f/6/0/f6018eeb3af7707db1650de6215e61921f8de419_2_457x499.png" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-17"></a><strong>添加付款信息</strong><a href="#添加付款信息"><span>#</span></a></h3><p><a href="https://cdn3.ldstatic.com/original/4X/8/e/2/8e22a904292020e007a62e7166b8bb1cb8f5b7b3.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/8/e/2/8e22a904292020e007a62e7166b8bb1cb8f5b7b3_2_469x499.png" alt="" />
</a></p><p>如果付款信息没有任何问题，那么就会跳转到添加用户信息页面，如果付款出现风控，就会是以下页面</p><p><a href="https://cdn3.ldstatic.com/original/4X/a/6/a/a6acf371b6352f7742609ea3d2cc2ebc4a4a3c83.jpeg" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/a/6/a/a6acf371b6352f7742609ea3d2cc2ebc4a4a3c83_2_493x500.jpeg" alt="" />
</a></p><p>如果出现风控，要么自己尝试上传证件，要么放弃这个号，另外前面选择的域名不会被释放，即使你换号也无法重复注册相同的域名，可能 14 天之后可以，目前不清楚</p></section><section><h3><a href="#p-18550962-h-18"></a><strong>添加用户信息</strong><a href="#添加用户信息"><span>#</span></a></h3><p>不用添加用户，点击跳过</p><p><a href="https://cdn3.ldstatic.com/original/4X/8/2/4/824d502f1e613dcc7d25f1a72e23d66b3192986a.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/8/2/4/824d502f1e613dcc7d25f1a72e23d66b3192986a_2_486x500.png" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-19"></a><strong>个性化设置</strong><a href="#个性化设置"><span>#</span></a></h3><p>可以点击<code>我还不确定</code>来跳过</p><p><a href="https://cdn3.ldstatic.com/original/4X/b/8/c/b8c5cbb66092e8af015e6b8c327e9c3dbdab9e6a.jpeg" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/b/8/c/b8c5cbb66092e8af015e6b8c327e9c3dbdab9e6a_2_558x500.jpeg" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-20"></a><strong>设置完成</strong><a href="#设置完成"><span>#</span></a></h3><p>设置完成之后即可来到这个页面</p><p><a href="https://cdn3.ldstatic.com/original/4X/f/8/5/f855a6763b786a009bf2cfcecbead1a3155150b4.jpeg" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/f/8/5/f855a6763b786a009bf2cfcecbead1a3155150b4_2_627x500.jpeg" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-21"></a><strong>邮件</strong><a href="#邮件"><span>#</span></a></h3><p>这个时候会收到 Google 的邮件，告诉你相关信息</p><p><a href="https://cdn3.ldstatic.com/original/4X/5/4/6/5466796b63667736eb2a3f956f332ef4cae81ae9.jpeg" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/5/4/6/5466796b63667736eb2a3f956f332ef4cae81ae9_2_405x500.jpeg" alt="" />
</a></p></section><section><h3><a href="#p-18550962-squarespace-22"></a><strong>squarespace 邮件</strong><a href="#squarespace-邮件"><span>#</span></a></h3><p>因为域名是在 squarespace 注册的，所以你会收到 squarespace 的确认邮件</p><p><a href="https://cdn3.ldstatic.com/original/4X/2/a/e/2ae129d37f1c7033a31f4f4aecb2d94fade779b0.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/2/a/e/2ae129d37f1c7033a31f4f4aecb2d94fade779b0_2_454x500.png" alt="" />
</a></p><p>点击确认</p><p><a href="https://cdn3.ldstatic.com/original/4X/7/8/6/786d7ce514a18ca89e947ead1e8f183786f38e64.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/7/8/6/786d7ce514a18ca89e947ead1e8f183786f38e64_2_690x356.png" alt="" />
</a></p></section><section><h3><a href="#p-18550962-h-23"></a><strong>查看域名</strong><a href="#查看域名"><span>#</span></a></h3><p>这个时候就可以登录 <a href="https://account.squarespace.com/" target="_blank">squarespace</a> 查看域名信息了</p><p>选择右边的 <code>Continue with Google</code> 登录，不要使用邮箱，图中是错误示范</p><p><a href="https://cdn3.ldstatic.com/original/4X/f/f/d/ffd4045a39734547bea8c8b98fa0372ded546f57.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/f/f/d/ffd4045a39734547bea8c8b98fa0372ded546f57_2_690x311.png" alt="" />
</a></p><p>选择之前注册的新 Google 帐户</p><p><a href="https://cdn3.ldstatic.com/original/4X/4/a/5/4a51753f0ebb28723c46112923a5335e9c15efac.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/4/a/5/4a51753f0ebb28723c46112923a5335e9c15efac_2_359x500.png" alt="" />
</a></p><p>然后就能看到注册的域名了</p><p><a href="https://cdn3.ldstatic.com/original/4X/5/8/a/58a07beaa9f4670416b627eaa21016f40b7f7703.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/5/8/a/58a07beaa9f4670416b627eaa21016f40b7f7703_2_689x222.png" alt="" />
</a></p></section></section>
<section><h2><a href="#p-18550962-google-workspace-24"></a><strong>取消 Google workspace 的订阅</strong><a href="#取消-google-workspace-的订阅"><span>#</span></a></h2><p>有需求的可以保留 workspace 的订阅，因为换算下来也挺便宜的</p><p>访问<a href="https://admin.google.com/ac/billing/subscriptions" target="_blank">订阅管理</a>，点击 workspace 的订阅<br />
点击 更多 - 取消订阅</p><p><a href="https://cdn3.ldstatic.com/original/4X/2/a/6/2a6fc1d627d14078fbc8972fbfef6a345305f9d3.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/2/a/6/2a6fc1d627d14078fbc8972fbfef6a345305f9d3_2_690x259.png" alt="" />
</a></p><p>选择任意取消理由</p><p><a href="https://cdn3.ldstatic.com/original/4X/5/a/1/5a1d4de67e59d060ef193561d4813ba1d74eafbf.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/5/a/1/5a1d4de67e59d060ef193561d4813ba1d74eafbf_2_690x352.png" alt="" />
</a></p><p>点击 取消订阅</p><p><a href="https://cdn3.ldstatic.com/original/4X/0/8/6/0863412f64bcd01050c9f22e2ffad03f08d88776.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/0/8/6/0863412f64bcd01050c9f22e2ffad03f08d88776_2_690x200.png" alt="" />
</a></p><p>输入管理员邮件地址 点击 取消我的订阅</p><p><a href="https://cdn3.ldstatic.com/original/4X/a/6/5/a654a67bf024b9fa4e10976e9198cc7915047c93.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/a/6/5/a654a67bf024b9fa4e10976e9198cc7915047c93_2_690x450.png" alt="" />
</a></p><p>取消成功</p><p><a href="https://cdn3.ldstatic.com/original/4X/1/c/d/1cd8ce74506e69274905118e94fe0106fbb75fd9.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/1/c/d/1cd8ce74506e69274905118e94fe0106fbb75fd9_2_690x420.png" alt="" />
</a></p><p>查看订阅，只有域名注册服务</p><p><a href="https://cdn3.ldstatic.com/original/4X/c/7/9/c79f97e6f5402dd5b713d87118b5f18cd8bf8f24.png" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/c/7/9/c79f97e6f5402dd5b713d87118b5f18cd8bf8f24_2_690x99.png" alt="" />
</a></p><p>取消订阅的邮件</p><p><a href="https://cdn3.ldstatic.com/original/4X/b/a/8/ba85ca3319313737f590ed199130b8077d1b0fc1.jpeg" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/b/a/8/ba85ca3319313737f590ed199130b8077d1b0fc1_2_583x500.jpeg" alt="" />
</a></p></section>
<section><h2><a href="#p-18550962-ns-25"></a><strong>修改 NS 记录</strong><a href="#修改-ns-记录"><span>#</span></a></h2><blockquote><p>目前并不确定修改 NS 记录是否会影响续费，我已经询问 Google 了，暂时没有回复</p></blockquote><p>访问 <a href="https://account.squarespace.com/" target="_blank">squarespace</a>，进入域名管理页面即可修改</p><p><a href="https://cdn3.ldstatic.com/original/4X/6/9/3/693260f69c585109237170c1b38cbf1f98ade94f.jpeg" target="_blank"><img src="https://cdn3.ldstatic.com/optimized/4X/6/9/3/693260f69c585109237170c1b38cbf1f98ade94f_2_690x292.jpeg" alt="" />
</a></p><p>大功告成出处来自cipheror</p></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/20260801-52pokemon/</id>
      <title type="text">宝可梦机场之八月免费兑换码猜猜我是谁（答案：飞天螳螂）</title>
      <published>2026-08-01T00:00:00.000Z</published>
      <updated>2026-08-01T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/20260801-52pokemon/"/>
      <summary type="text"></summary>
      <content type="html"><![CDATA[<p>[<img src="https://cdn3.ldstatic.com/optimized/4X/f/4/7/f47d32d98f0d77efb2247b609949a54e31f6cf1d_2_689x500.jpeg" alt="" /></p>
<p>image1920×1393 197 KB</p>
<p>](<a href="https://cdn3.ldstatic.com/original/4X/f/4/7/f47d32d98f0d77efb2247b609949a54e31f6cf1d.jpeg" target="_blank">https://cdn3.ldstatic.com/original/4X/f/4/7/f47d32d98f0d77efb2247b609949a54e31f6cf1d.jpeg</a> “image”)</p>
<p><img src="https://cdn.ldstatic.com/images/emoji/twemoji/wrapped_gift.png?v=15" alt="" />
<strong>八月限定兑换码活动开启！</strong></p>
<p>各位训练家，八月福利已经到达！</p>
<p>本月兑换码藏在一张神秘图片中，需要大家仔细观察、开动脑筋，找到正确的兑换码后，即可前往官网兑换本月免费流量。</p>
<p><img src="https://cdn.ldstatic.com/images/emoji/twemoji/magnifying_glass_tilted_left.png?v=15" alt="" />
活动玩法：<br />
查看活动图片 → 猜出隐藏兑换码 → 登录官网兑换流量，不要在兑换码处兑换，要点击购买入门精灵球优惠码那里填写。</p>
<p><img src="https://cdn.ldstatic.com/images/emoji/twemoji/tada.png?v=15" alt="" />
兑换成功后，可获得八月限定流量奖励。<br />
官网:<a href="https://love2.p6m6.com/" target="_blank">https://love2.p6m6.com</a><br />
备用: <a href="https://web1.52pokemon66.cc/" target="_blank">https://web1.52pokemon66.cc</a></p>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/20260723-hyper-v-fnnas/</id>
      <title type="text">Hyper-V安装飞牛OS教程-NAS入门指南</title>
      <published>2026-07-23T00:00:00.000Z</published>
      <updated>2026-07-23T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/20260723-hyper-v-fnnas/"/>
      <summary type="text">有些朋友想尝试一下飞牛OS，但是又不想重新组装一套NAS机器，那么可以先试试用Hyper-V虚拟机在先有的Windows电脑上安装飞牛OS体验一下再决定要不要组装一套新机器。</summary>
      <content type="html"><![CDATA[<section><h3>下载飞牛OS镜像<a href="#%E4%B8%8B%E8%BD%BD%E9%A3%9E%E7%89%9Bos%E9%95%9C%E5%83%8F">​</a><a href="#下载飞牛os镜像"><span>#</span></a></h3><p>点击下方的卡片进入飞牛OS官方网站</p></section>
<section><h3>🌐 飞牛OS官方网站<a href="#-飞牛os官方网站"><span>#</span></a></h3><p>fnnas.com - 系统镜像下载</p></section>
<section><h3>在Windows中启用Hyper-V功能<a href="#%E5%9C%A8windows%E4%B8%AD%E5%90%AF%E7%94%A8hyper-v%E5%8A%9F%E8%83%BD">​</a><a href="#在windows中启用hyper-v功能"><span>#</span></a></h3><p>打开 控制面板，点击进入 “程序和功能”。</p><p><img src="https://fnnas.wiki/assets/images/image-1-790e2760cc64cb7b1dd5a2fb72a835cc.png" alt="" /></p><p>在左侧菜单中，点击 “启用或关闭 Windows 功能”。</p><p><img src="https://fnnas.wiki/assets/images/image-2-04acda845dd1c03556090b46742c5896.png" alt="" /></p><p>在右侧列表中找到并勾选 “Hyper-V” 复选框。</p><p><img src="https://fnnas.wiki/assets/images/image-3-3d669df5959d8bdef46e0a444474b71c.png" alt="" /></p><p>点击“确定”。Windows 将会安装所需文件。</p></section>
<section><h3>配置Hyper-V虚拟网络<a href="#%E9%85%8D%E7%BD%AEhyper-v%E8%99%9A%E6%8B%9F%E7%BD%91%E7%BB%9C">​</a><a href="#配置hyper-v虚拟网络"><span>#</span></a></h3><p>在开始菜刀打开 “Hyper-V 管理器”</p><p><img src="https://fnnas.wiki/assets/images/image-4-848e85124106c9fe280bc8215093271a.png" alt="" /></p><p>在右侧的“操作”面板中，点击 “虚拟交换机管理器”。</p><p><img src="https://fnnas.wiki/assets/images/image-5-664875c13ebabbc16e59d2eacf0f99a8.png" alt="" /></p><p>选择 “新建虚拟网络交换机”。在右侧选择 “外部” 作为交换机类型，然后点击 “创建虚拟交换机”。</p><p><img src="https://fnnas.wiki/assets/images/image-6-022fb70a66b06f86d552cddb183eb7e7.png" alt="" /></p><p>命名：给你的虚拟交换机起一个易于识别的名称，这里我写成了 FNNAS，在“外部网络”部分，选择你电脑当前用来上网的 物理网卡，这里我是笔记本电脑，有两个网卡，一个有线，一个无线，带wireless的就是无线网卡，目前我通过无线连接的，所以选择无线网卡。</p><p>勾选 “允许管理操作系统共享此网络适配器” 选项。这能让电脑（宿主机）和虚拟机同时通过这块网卡上网。 <img src="https://fnnas.wiki/assets/images/image-7-92c30ac13ad0fadfe5bb37d34e295fd0.png" alt="" /></p><p>点击 “应用”，系统可能会有短暂的网络中断，等待配置完成。</p></section>
<section><h3>创建虚拟机<a href="#%E5%88%9B%E5%BB%BA%E8%99%9A%E6%8B%9F%E6%9C%BA">​</a><a href="#创建虚拟机"><span>#</span></a></h3><p>在“Hyper-V 管理器”的右侧“操作”面板中，点击 “新建” -&gt; “虚拟机”，启动新建虚拟机向导。 <img src="https://fnnas.wiki/assets/images/image-8-f673a5bbdf7036ece8dcb3a1d7300895.png" alt="" /></p><p>为虚拟机命名（如：FNNAS），这里可以自定义虚拟机的存储位置，默认的位置在C盘，如果C盘空间不足，可以自定义到其他磁盘。注意这里如果长期使用则存储位置要放在起码有64GB剩余空间的磁盘上。</p><p><img src="https://fnnas.wiki/assets/images/image-9-8b5f8d1f2c35543d317c52d248f55c89.png" alt="" /></p><p>指定代数： 必须选择 “第一代”</p><p><img src="https://fnnas.wiki/assets/images/image-10-eab8dbe51268a3247d1fa86e134e77a7.png" alt="" /></p><p>分配内存：设置分配给虚拟机的内存大小。不要勾选“为此虚拟机使用动态内存”</p><p><img src="https://fnnas.wiki/assets/images/image-11-ef047a4c3d3c3b749dac126cc1b89924.png" alt="" /></p><p>配置网络：在“连接”下拉菜单中，选择之前创建的那个外部虚拟交换机，这里选择FNNAS，如果没有的话回到前面配置虚拟网络连接的时候看看是不是忘了点应用了。</p><p>连接虚拟硬盘：</p><ul>
<li>选择“创建虚拟硬盘”。</li>
<li>设置系统盘的大小，视频建议系统盘 至少为 64 GB。</li>
</ul><p><img src="https://fnnas.wiki/assets/images/image-12-27973593fb90e2754226fd85e5d25331.png" alt="" /></p><p>安装选项：</p><ul>
<li>选择 “从可启动的映像文件安装操作系统”。</li>
<li>点击“浏览”，找到并选择下载的飞牛OS的 <code>.iso</code> 镜像文件。</li>
</ul><p><img src="https://fnnas.wiki/assets/images/image-13-1ff22ef540406124862651151190cca8.png" alt="" /></p><p>点击 “完成” 创建虚拟机，这一步会在你选择的路径下创建两个文件夹，分别存放系统数据和磁盘数据。</p></section>
<section><h3>安装飞牛系统<a href="#%E5%AE%89%E8%A3%85%E9%A3%9E%E7%89%9B%E7%B3%BB%E7%BB%9F">​</a><a href="#安装飞牛系统"><span>#</span></a></h3><p>在“Hyper-V 管理器”的虚拟机列表中，右键点击刚刚创建的 FNNAS 虚拟机，选择 “连接”，在弹出的虚拟机连接窗口中，点击 “启动” 按钮。</p><p><img src="https://fnnas.wiki/assets/images/image-14-65364a66d5c3d8b1750bdcd0b0e7c627.png" alt="" /></p><p>虚拟机将从ISO文件启动，进入安装界面后，按 回车键 选择 “安装到虚拟磁盘”。</p><p><img src="https://fnnas.wiki/assets/images/image-15-856d3fdb500d52f00b17b90b5e24d796.png" alt="" /></p><p>按照安装向导的提示，连续点击 “下一步” 和 “确定”。等待安装进度条走完。安装成功后，界面会显示系统获取到的 IP地址，记住这个地址，之后在局域网内就可以通过这个地址访问到飞牛OS了。点击 “保存”，然后点击 “确定”，虚拟机会自动重启。 <img src="https://fnnas.wiki/assets/images/image-16-dd2e43aea400fd0c73def2057c4f4b76.png" alt="" /></p></section>
<section><h3>虚拟机配置<a href="#%E8%99%9A%E6%8B%9F%E6%9C%BA%E9%85%8D%E7%BD%AE">​</a><a href="#虚拟机配置"><span>#</span></a></h3><p>在虚拟机重启后，首先在Hyper-V管理器中将其 “强制关闭”。</p><p><img src="https://fnnas.wiki/assets/images/image-17-3a26f5dcca5119ee8db294097a6f2127.png" alt="" /></p><p>右键点击虚拟机，选择 “设置”。添加数据硬盘（用于存储数据），在左侧选择“SCSI控制器”，在右侧选择“硬盘驱动器”，然后点击 “添加”，在“虚拟硬盘”部分，点击 “新建”，启动新建虚拟硬盘向导。</p><p><img src="https://fnnas.wiki/assets/images/image-19-8cb8e37bafca7bfccd2980f7b57e4654.png" alt="" /></p><p>选择磁盘格式为（VHDX），选择磁盘类型为 “固定大小”，命名并选择存储位置。根据你的需求设置数据盘的大小。点击“完成”，稍等片刻，系统会自动创建硬盘，完成之后会自动返回到设置界面，点</p><p>注意</p><ul>
<li>命名的时候不要删掉vhdx的后缀，否则会创建失败</li>
<li>创建完成后会回到设置界面，一定要点击<strong>应用</strong>保存。 <img src="https://fnnas.wiki/assets/images/image-21-c2cf94da8a298aa29d4661976d7e1100.png" alt="" /></li>
</ul><p><img src="https://fnnas.wiki/assets/images/image-20-7f1a88ad50e9c3c0afd1d8fcb39374df.png" alt="" /></p><section><h4>移除安装介质：<a href="#%E7%A7%BB%E9%99%A4%E5%AE%89%E8%A3%85%E4%BB%8B%E8%B4%A8">​</a><a href="#移除安装介质"><span>#</span></a></h4><p>在虚拟机设置的左侧，选择 “DVD 驱动器”。在右侧选择 “无”，以弹出安装镜像，防止下次开机时再次进入安装程序。</p><p><img src="https://fnnas.wiki/assets/images/image-22-033064e228cff96d4cabd8a23582c191.png" alt="" /></p></section></section>
<section><h3>配置自动启动：<a href="#%E9%85%8D%E7%BD%AE%E8%87%AA%E5%8A%A8%E5%90%AF%E5%8A%A8">​</a><a href="#配置自动启动"><span>#</span></a></h3><p>在设置的左侧最下方选择“自动启动操作”。建议选择 “始终自动启动此虚拟机”，并可以设置一个 “启动延迟”（如30秒），以防止宿主机启动时负载过高。 6. 完成所有设置后，点击 “应用” 和 “确定” 保存。</p><p><img src="https://fnnas.wiki/assets/images/image-23-8efae80d3c6bfc9154927c6143e254c7.png" alt="" /></p></section>
<section><h3>飞牛OS网页端初始化<a href="#%E9%A3%9E%E7%89%9Bos%E7%BD%91%E9%A1%B5%E7%AB%AF%E5%88%9D%E5%A7%8B%E5%8C%96">​</a><a href="#飞牛os网页端初始化"><span>#</span></a></h3><p>启动 虚拟机。2. 等待虚拟机控制台界面加载完成，并显示出 IP地址。 <img src="https://fnnas.wiki/assets/images/image-24-a9ecb056f7a9acbc90a52d0d6f8ada76.png" alt="" /></p><p>在电脑上打开一个网页浏览器，在地址栏输入该IP地址并访问。 <img src="https://fnnas.wiki/assets/images/image-25-bc061131da6ee34ce7313f8d6f3c4f41.png" alt="" />
开始配置：</p><ul>
<li>点击“开始”。</li>
<li>设置 设备名称、超级管理员账号 和 密码。</li>
<li>创建存储空间： 根据界面右侧的向导提示，创建存储池和存储空间。由于是虚拟机，不同模式效果一样</li>
</ul><p><img src="https://fnnas.wiki/assets/images/image-26-d2ac4395a5f15caef3fcfb199f5950f5.png" alt="" />
绑定飞牛账号： 下一步，绑定你的飞牛账号。如果没有，需要先在官网(fnnas.com)注册一个。至此，飞牛OS系统已完全配置好。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/20260720-docker-compose-flatnas/</id>
      <title type="text">通过Docker Compose快速部署Flatnas</title>
      <published>2026-07-20T00:00:00.000Z</published>
      <updated>2026-07-20T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/20260720-docker-compose-flatnas/"/>
      <summary type="text">通过Docker Compose快速部署Flatnas</summary>
      <content type="html"><![CDATA[<p>FlatNas 是一个轻量级、高度可定制的个人导航页与仪表盘系统。它基于 Vue 3 与 Go(Gin) 构建，旨在为 NAS 用户、极客和开发者提供一个优雅的浏览器起始页。</p>
<section><h4>通过Docker Compose快速部署Flatnas<a href="#通过docker-compose快速部署flatnas"><span>#</span></a></h4><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span><span>version</span><span>: </span></span><span>"3.8"</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span><span>services</span><span>:</span></span></div></div><div><div><div>4</div></div><div><span><span>  </span></span><span>flatnas</span><span>:</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>image</span><span>: </span><span>qdnas</span><span>/</span><span><span>flatnas</span><span>:</span><span>latest</span></span></div></div><div><div><div>6</div></div><div><span><span>    </span></span><span>container_name</span><span>: </span><span>flatnas</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>restart</span><span>: </span><span>unless</span><span>-</span><span>stopped</span></div></div><div><div><div>8</div></div><div><span><span>    </span></span><span>ports</span><span>:</span></div></div><div><div><div>9</div></div><div><span>      </span><span>-</span><span> </span><span>"23000:3000"</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>volumes</span><span>:</span></div></div><div><div><div>11</div></div><div><span>      </span><span>-</span><span> .</span><span>/</span><span><span>data</span><span>:</span></span><span>/</span><span>app</span><span>/</span><span>server</span><span>/</span><span><span>data</span><span> #</span><span>指定路径下新建data</span></span></div></div><div><div><div>12</div></div><div><span>      </span><span>-</span><span> </span><span>/</span><span>volume4</span><span>/</span><span><span>Music</span><span>:</span></span><span>/</span><span>app</span><span>/</span><span>server</span><span>/</span><span><span>music</span><span> #</span><span>映射播放器路径</span></span></div></div><div><div><div>13</div></div><div><span>      </span><span>-</span><span> .</span><span>/</span><span><span>PC</span><span>:</span></span><span>/</span><span>app</span><span>/</span><span>server</span><span>/</span><span>PC</span><span><span> #</span><span>映射背景路径</span></span></div></div><div><div><div>14</div></div><div><span>      </span><span>-</span><span> .</span><span>/</span><span><span>APP</span><span>:</span></span><span>/</span><span>app</span><span>/</span><span>server</span><span>/</span><span>APP</span><span><span> #</span><span>映射移动端背景路径</span></span></div></div><div><div><div>15</div></div><div><span>      </span><span>-</span><span> .</span><span>/</span><span><span>doc</span><span>:</span></span><span>/</span><span>app</span><span>/</span><span>server</span><span>/</span><span><span>doc</span><span> #</span><span>映射文件传输助手路径</span></span></div></div><div><div><div>16</div></div><div><span>      </span><span>-</span><span> </span><span>/</span><span>var</span><span><span>/</span><span>run</span><span>/docker.sock</span></span><span>:</span><span>/</span><span>var</span><span>/</span><span>run</span><span>/</span><span>docker</span><span>.</span><span>sock</span><span> #</span><span>映射Docker</span><span> </span><span>Socket</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p></p><figure><img src="https://im.124365.xyz/file/20260720/1784532578290_flatnas-1.png" alt="图片1" /><figcaption>图片1</figcaption></figure>
<figure><img src="https://im.124365.xyz/file/20260720/1784532589489_flatnas-2.png" alt="图片2" /><figcaption>图片2</figcaption></figure>
<figure><img src="https://im.124365.xyz/file/20260720/1784532592962_flatnas-3.png" alt="图片3" /><figcaption>图片3</figcaption></figure><p></p></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/20260720-docker-compose-navidrome/</id>
      <title type="text">通过Docker Compose快速部署Navidrome</title>
      <published>2026-07-20T00:00:00.000Z</published>
      <updated>2026-07-20T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/20260720-docker-compose-navidrome/"/>
      <summary type="text">通过Docker Compose快速部署Navidrome</summary>
      <content type="html"><![CDATA[<p>Navidrome 是一款轻量级、跨平台的开源音乐服务器，支持多种音频格式。</p>
<section><h4>通过Docker Compose快速部署Navidrome<a href="#通过docker-compose快速部署navidrome"><span>#</span></a></h4><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span><span>services</span><span>:</span></span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>navidrome</span><span>:</span></div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>image</span><span>: </span><span>deluan</span><span>/</span><span><span>navidrome</span><span>:</span><span>latest</span><span>    # </span><span>网址被和谐了一部分</span><span>，</span><span>具体参考上方图片</span></span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>container_name</span><span>: </span><span>navidrome</span><span>-</span><span>3</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>deploy</span><span>:</span></div></div><div><div><div>6</div></div><div><span><span>      </span></span><span>resources</span><span>:</span></div></div><div><div><div>7</div></div><div><span><span>        </span></span><span>limits</span><span>:</span></div></div><div><div><div>8</div></div><div><span><span>          </span></span><span>memory</span><span>: 512</span><span>M</span><span><span>      # </span><span>硬限制</span><span>：</span><span>容器能使用的最大内存</span></span></div></div><div><div><div>9</div></div><div><span><span>        </span></span><span>reservations</span><span>:</span></div></div><div><div><div>10</div></div><div><span><span>          </span></span><span>memory</span><span>: 16</span><span>M</span><span><span>      # </span><span>软限制</span><span>：</span><span>容器启动时预留的最小内存</span></span></div></div><div><div><div>11</div></div><div><span><span>    </span></span><span>user</span><span>: </span><span>1000</span><span>:</span><span>1000</span><span><span> # </span><span>启动权限</span></span></div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>ports</span><span>:</span></div></div><div><div><div>13</div></div><div><span>      </span><span>-</span><span> </span><span>"4533:4533"</span></div></div><div><div><div>14</div></div><div><span><span>    </span></span><span>restart</span><span>: </span><span>unless</span><span>-</span><span>stopped</span></div></div><div><div><div>15</div></div><div><span><span>    </span></span><span>environment</span><span>:</span></div></div><div><div><div>16</div></div><div><span><span>      </span></span><span># </span><span>使用配置文件</span><span>，</span><span>其实最新版默认会读取这个路径</span><span>，</span><span>ND_CONFIGFILE</span><span><span> </span><span>可以删除</span></span></div></div><div><div><div>17</div></div><div><span><span>      </span></span><span>ND_CONFIGFILE</span><span>: </span><span>"/data/navidrome.toml"</span></div></div><div><div><div>18</div></div><div>
</div></div><div><div><div>19</div></div><div><span><span>    </span></span><span>volumes</span><span>:</span></div></div><div><div><div>20</div></div><div><span>      </span><span>-</span><span> </span><span>/</span><span>volume1</span><span>/</span><span>docker</span><span>/</span><span>navidrome</span><span>-</span><span>3</span><span>/</span><span><span>data</span><span>:</span></span><span>/</span><span><span>data</span><span>           # </span><span>映射</span><span> </span><span>Navidrome</span><span> </span></span><span>/</span><span>data</span><span>/</span><span><span> </span><span>路径</span><span>（</span><span>缓存</span><span>、</span><span>数据库</span><span>、</span><span>配置文件</span><span>，</span><span>如果不想把缓存映射出来</span><span>，</span><span>请手动映射单个文件</span><span>）</span></span></div></div><div><div><div>21</div></div><div><span>      </span><span>-</span><span> </span><span>/</span><span>volume4</span><span>/</span><span><span>Music</span><span>:</span></span><span>/</span><span>music</span><span>/</span><span><span>library1</span><span>:</span><span>ro</span><span>                # </span><span>音乐路径1</span></span></div></div><div><div><div>22</div></div><div><span><span>      </span></span><span># </span><span>-</span><span> </span><span>/</span><span>volume1</span><span>/</span><span>CloudNas</span><span>/</span><span><span>CloudDrive</span><span>:</span></span><span>/</span><span>music</span><span>/</span><span><span>library2</span><span>:</span><span>ro</span><span>  # </span><span>音乐路径2</span></span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/20260720-docker-compose-vaultwarden/</id>
      <title type="text">通过Docker Compose快速部署Vaultwarden</title>
      <published>2026-07-20T00:00:00.000Z</published>
      <updated>2026-07-20T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/20260720-docker-compose-vaultwarden/"/>
      <summary type="text">通过Docker Compose快速部署Vaultwarden</summary>
      <content type="html"><![CDATA[<p>Vaultwarden 是 Bitwarden Server 的非官方实现（社区项目），主打资源占用低、部署简单，适合个人/小团队自托管密码库。与官方 Bitwarden Server 不同，Vaultwarden 是完全开源的，你可以在自己的服务器上运行它，而无需支付任何费用。</p>
<p>·适合：个人密码管理、多端同步、家庭/小团队共享
·不适合：强合规要求、需要官方企业功能/审计/支持的场景</p>
<section><h4>通过Docker Compose快速部署Vaultwarden<a href="#通过docker-compose快速部署vaultwarden"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span><span>services</span><span>:</span></span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>vaultwarden</span><span>:</span></div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>image</span><span>: </span><span>vaultwarden</span><span>/</span><span><span>server</span><span>:</span><span>latest</span></span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>container_name</span><span>: </span><span>vaultwarden</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>restart</span><span>: </span><span>unless</span><span>-</span><span>stopped</span></div></div><div><div><div>6</div></div><div><span><span>    </span></span><span>environment</span><span>:</span></div></div><div><div><div>7</div></div><div><span><span>      </span></span><span>DOMAIN</span><span>: </span><span>"https://**.124365.xyz"</span></div></div><div><div><div>8</div></div><div><span><span>    </span></span><span>volumes</span><span>:</span></div></div><div><div><div>9</div></div><div><span>      </span><span>-</span><span> .</span><span>/vw-data/</span><span>:</span><span>/data/</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>ports</span><span>:</span></div></div><div><div><div>11</div></div><div><span>      </span><span>-</span><span> </span><span>192.168</span><span>.</span><span>1.7</span><span>:</span><span>8086</span><span>:</span><span>80</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/20260729-zeroomega/</id>
      <title type="text">ZeroOmega 配置，规则列表网址可自动更新</title>
      <published>2026-07-20T00:00:00.000Z</published>
      <updated>2026-07-20T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/20260729-zeroomega/"/>
      <summary type="text"></summary>
      <content type="html"><![CDATA[<p><a href="https://github.com/zero-peak/ZeroOmega" target="_blank">ZeroOmega</a> 是 <a href="https://github.com/FelisCatus/SwitchyOmega" target="_blank">SwitchyOmega</a> 的一个更新分支，其界面和使用方式与 SwitchyOmega 相同。原插件 SwitchyOmega 不兼容 manifest V3，故不再使用。</p>
<p>浏览器插件 ZeroOmega 的配置备份，支持三种情景模式，规则列表网址可自动更新。</p>

<table><thead><tr><th>情景模式</th><th>类型</th><th>说明</th></tr></thead><tbody><tr><td><em>GFWed</em></td><td>固定模式</td><td>该模式强制浏览器通过特定途径进行网络访问。</td></tr><tr><td><em>白名单</em></td><td>自动切换模式</td><td>列表网址为中国网址。</td></tr><tr><td>该模式避免通过特定途径访问相应网址。</td><td></td><td></td></tr><tr><td>适用于访问网址以国外为主、国内为辅时。</td><td></td><td></td></tr><tr><td><em>黑名单</em></td><td>自动切换模式</td><td>列表网址为国外网址。</td></tr><tr><td>该模式允许通过特定途径访问相应网址。</td><td></td><td></td></tr><tr><td>适用于访问网址以国内为主、国外为辅时。</td><td></td><td></td></tr></tbody></table>
<section><h2>使用方法<a href="#使用方法"><span>#</span></a></h2><section><h3>安装 ZeroOmega<a href="#安装-zeroomega"><span>#</span></a></h3><p>适用于基于 Chromium 的浏览器的 ZeroOmega 插件，可通过以下任一方式安装：</p><ul>
<li>
<p><a href="https://chromewebstore.google.com/detail/proxy-switchyomega-3-zero/pfnededegaaopdmhkdmcofjmoldfiped" target="_blank">Chrome Web Store</a></p>
</li>
<li>
<p><a href="https://www.crxsoso.com/webstore/detail/pfnededegaaopdmhkdmcofjmoldfiped" target="_blank">Chrome扩展 - Crx搜搜</a></p>
</li>
<li>
<p><a href="https://github.com/zero-peak/ZeroOmega/releases" target="_blank">Github Releases</a></p>
</li>
</ul></section><section><h3>导入备份<a href="#导入备份"><span>#</span></a></h3><p>打开 ZeroOmega 选项，</p><p><img src="https://i-blog.csdnimg.cn/direct/8fce700ccaed458aad3f3380b2facfa9.png#pic_center" alt="" /></p><p>① 点击 “导入/导出”；</p><p>② “在线恢复”，输入以下链接后，点击 “恢复”。</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>`https://raw.githubusercontent.com/chugit/SwitchyOmegaBackup/main/OmegaOptions.bak`</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>*   1</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>或</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>`https://gitee.com/chugit2024/SwitchyOmegaBackup/raw/main/OmegaOptions.bak`</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>*   1</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>③（备选）若在线恢复不成功，可从 <a href="https://github.com/chugit/SwitchyOmegaBackup/blob/main/OmegaOptions.bak" target="_blank">github</a> 或 <a href="https://gitee.com/chugit2024/SwitchyOmegaBackup/raw/main/OmegaOptions.bak" target="_blank">gitee</a> 下载备份文件 OmegaOptions.bak，然后点击 “从备份文件恢复” 加载该文件。</p></section><section><h3>修改 <em>GFWed</em> 参数<a href="#修改-gfwed-参数"><span>#</span></a></h3><p>插件配置恢复后，首先应根据代理软件实际，修改情景模式 <em>GFWed</em> 的参数。</p><p><img src="https://i-blog.csdnimg.cn/direct/9bf6b7b8afcc404d956d68b43003a149.png#pic_center" alt="" /></p><p>根据所使用软件的参数和说明书，对 <em>GFWed</em> 情景模式进行修改，选择并设定与软件对应的 “ 协议 ”、“服务器” 和 “端口”。</p><p>此外，可在 “地址列表” 中指定该情景模式需要绕过的IP（即不通过该途径访问的网址）。本备份文件中的不通过特定途径访问的地址（见上图）均为本地地址。</p><p>点击侧边栏的 “应用选项”，保存插件配置。</p></section><section><h3>选择 <em>白名单</em> 或 <em>黑名单</em> 科学上网<a href="#选择-白名单-或-黑名单-科学上网"><span>#</span></a></h3><p>完成上述配置后，即可选择基于规则的情景模式 <em>白名单</em> 或 <em>黑名单</em> 进行上网。</p><p>情景模式 <em>白名单</em> 和 <em>黑名单</em> 的参数默认设置如下，一般不需要修改。</p><p><img src="https://i-blog.csdnimg.cn/direct/822c72fdc35f4c7e8d3d37ea9993e619.png#pic_center" alt="" /></p><p><img src="https://i-blog.csdnimg.cn/direct/e9e97d6ceb8f4d25af1d71f1be491066.png#pic_center" alt="" /></p><ul>
<li>
<p><em>白名单</em> 的规则列表网址为中国网址，可避免通过特定途径访问这些网址，适合访问网址以国外为主、国内为辅时使用。</p>
</li>
<li>
<p><em>黑名单</em> 的规则列表网址为国外网址，要求通过特定途径访问这些网址，适合访问网址以国内为主、国外为辅时使用。</p>
</li>
</ul></section></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/20260716-network-abuse-regarding/</id>
      <title type="text">【运维记录】收到 Cloudflare 网络滥用投诉通知（Report ID: 80dfa5641e0c4f59）</title>
      <published>2026-07-16T00:00:00.000Z</published>
      <updated>2026-07-16T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/20260716-network-abuse-regarding/"/>
      <summary type="text">记录一次因站点域名 ccw.dpdns.org 遭遇 Cloudflare 网络滥用投诉（Network Abuse）的处置过程与官方邮件备份。</summary>
      <content type="html"><![CDATA[<blockquote><p><strong>摘要</strong>：本篇用于记录站点域名遭遇 Cloudflare 官方网络滥用投诉（Network Abuse）的邮件凭证及后续申诉/排查流程。目前官方已对相关 URL 及其子路径实施访问限制。</p></blockquote>
<hr />
<section><h2>📩 邮件通知原文<a href="#-邮件通知原文"><span>#</span></a></h2><p><strong>邮件标题</strong>：<code>[80dfa5641e0c4f59]: Network abuse received regarding your site</code></p><p>Hello,</p><p>Cloudflare received an Network abuse regarding: <code>ccw.dpdns.org</code>.</p><p>We have restricted access to the reported URL(s) and all subpaths.</p><p>To respond to this complaint through the Cloudflare dashboard, you can click this link: <a href="https://dash.cloudflare.com/17093d61e67d6f631ad148893f07f8af/abuse-reports/report/80dfa5641e0c4f59/blocked-content" target="_blank">Cloudflare Abuse Reports</a> and select <strong>Request review</strong>, or follow these instructions:</p><ol>
<li>Log into the Cloudflare Dash</li>
<li>Navigate to <strong>Manage Account</strong> &gt; <strong>Abuse reports</strong></li>
<li>Find abuse report <strong>80dfa5641e0c4f59</strong></li>
<li>Select <strong>View mitigations</strong> &gt; <strong>Request review</strong></li>
</ol><p>If you have questions about this abuse report, please send an email to <code>abusereply@cloudflare.com</code> with the following details:</p><ul>
<li>The report identification number included in the subject line</li>
<li>Any additional details, context or evidence you can provide regarding the content that was reported.</li>
</ul><hr /></section>
<section><h2>🔍 投诉详情凭证 (Report Details)<a href="#-投诉详情凭证-report-details"><span>#</span></a></h2><p>以下为 Cloudflare Trust &amp; Safety 团队随信附带的原始投诉报告概要：</p>

<table><thead><tr><th>项目</th><th>内容详情</th></tr></thead><tbody><tr><td><strong>Report ID</strong></td><td><code>80dfa5641e0c4f59</code></td></tr><tr><td><strong>Evidence of Abuse</strong></td><td><code>Network abuse detected</code> (检测到网络滥用)</td></tr><tr><td><strong>Reported URLs</strong></td><td><code>hxxps://ccw[.]dpdns[.]org</code></td></tr></tbody></table><blockquote><p>📌 <strong>注意</strong>：该报告由系统自动处理（Automated Reply），发送方为 <strong>Cloudflare Trust &amp; Safety</strong> 部门。</p></blockquote><hr /></section>
<section><h2>🛠️ 后续处置与排查思路（备忘）<a href="#️-后续处置与排查思路备忘"><span>#</span></a></h2><p>针对此次 <code>Network abuse detected</code> 警告，后续需完成以下排查步骤：</p><ol>
<li><strong>检查 DNS 解析与源站日志</strong>：核对 <code>ccw.dpdns.org</code> 对应源站服务器的访问日志，确认近期是否存在异常流量、DDoS 攻击外发、或是被恶意利用作为代理（Proxy）的情况。</li>
<li><strong>后台提交申诉（Request Review）</strong>：登录 Cloudflare Dash，按照邮件指引前往 <code>Manage Account</code> &gt; <code>Abuse reports</code>，查看具体被拦截的细节，并视排查情况提交复审申请。</li>
<li><strong>联系支持团队</strong>：如有疑义，撰写邮件至 <code>abusereply@cloudflare.com</code>，并在邮件主题中注明 <code>[80dfa5641e0c4f59]</code>，附上源站安全清查证明以申请解封。</li>
</ol></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/20260715-shan-min/</id>
      <title type="text">山民</title>
      <published>2026-07-15T00:00:00.000Z</published>
      <updated>2026-07-15T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/20260715-shan-min/"/>
      <summary type="text">韩东代表作《山民》：在平淡冷静的叙述中，表现关于理想、宿命与现实的生存体验。</summary>
      <content type="html"><![CDATA[<section><h2>📖 诗歌正文<a href="#-诗歌正文"><span>#</span></a></h2><section><h3>山民<a href="#山民"><span>#</span></a></h3><p><strong>文 / 韩东</strong></p><p>小时候，他问父亲
“山那边是什么”
父亲说“是山”
“那边的那边呢”
“山。还是山”
他不作声了，看着远处</p><p>山第一次使他这样疲倦</p><p>他想，这辈子是走不出这里的群山了
海是有的，但十分遥远
所以没等他走到那里
就会死在半路上
死在山中</p><p>他觉得应该带着老婆一起上路
老婆会给他生个儿子
到他死的时候
儿子就长大了
儿子也会有老婆
儿子也会有儿子
儿子的儿子也还会有儿子
他不再想了</p><p>儿子也使他很疲倦</p><p>他只是遗憾
他的祖先没有像他一样想过
不然，见到大海的该是他了</p><hr /><p></p><figure><img src="https://im.124365.xyz/file/20260715/1784204167021_shan-min.jpeg" alt="shan-min.jpeg" /><figcaption>shan-min.jpeg</figcaption></figure><p></p></section></section>
<section><h2>📝 导读与赏析<a href="#-导读与赏析"><span>#</span></a></h2><p>《山民》创作于 1982 年，是诗人韩东的成名作和代表作之一。这首诗用极度口语化、平白如水的语言，为我们推开了一扇关于“宿命”与“理想”的沉思之窗。</p><section><h3>核心意象：山与海<a href="#核心意象山与海"><span>#</span></a></h3><ul>
<li><strong>山</strong>：在诗中象征着沉重的现实、封闭的环境以及无法摆脱的宿命。从“山。还是山”的循环中，传递出一种无能为力的疲倦感。</li>
<li><strong>海</strong>：象征着遥不可及的理想、远方与未知的美好。虽然“海是有的”，但它太遥远，以至于追寻它意味着要死在半路上。</li>
</ul></section><section><h3>生存的循环<a href="#生存的循环"><span>#</span></a></h3><p>诗的后半段，山民想到了娶妻生子、子子孙孙无穷匮也的生息方式。这看似是《愚公移山》式的宏大叙事，但在韩东笔下，却变成了一种令人“疲倦”的机械循环。</p><p>最绝妙的是全诗的结尾：“<strong>他只是遗憾 / 他的祖先没有像他一样想过 / 不然，见到大海的该是他了</strong>”。这不仅是一声跨越时空的遗憾叹息，更深刻地揭示了人类在面对历史遗传和现实困境时，那种清醒却又无能为力的悲剧美学。</p></section></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/20260701-52pokemon/</id>
      <title type="text">宝可梦机场之七月免费兑换码猜猜我是谁（答案：小火马）</title>
      <published>2026-07-01T00:00:00.000Z</published>
      <updated>2026-07-01T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/20260701-52pokemon/"/>
      <summary type="text"></summary>
      <content type="html"><![CDATA[<p>[<img src="https://cdn3.ldstatic.com/optimized/4X/b/d/2/bd29b5a4204966a0f5d5d813e5868816e5ff451b_2_656x499.jpeg" alt="" /></p>
<p>da4a05c7-defa-46c8-8c08-6d7bea9eb1e71280×975 85.2 KB</p>
<p>](<a href="https://cdn3.ldstatic.com/original/4X/b/d/2/bd29b5a4204966a0f5d5d813e5868816e5ff451b.jpeg" target="_blank">https://cdn3.ldstatic.com/original/4X/b/d/2/bd29b5a4204966a0f5d5d813e5868816e5ff451b.jpeg</a> “da4a05c7-defa-46c8-8c08-6d7bea9eb1e7”)</p>
<p>使用教程：猜出来名字，购买入门精灵球优惠码那里输入。<br />
<img src="https://cdn.ldstatic.com/images/emoji/twemoji/double_exclamation_mark.png?v=15" alt="" />
通知：如果你的网络全部超时，请使用宝可梦专属客户端</p>
<p>第三方客户端推荐：<br />
安卓：clash meta<br />
电脑：clash verge<br />
IOS：Shadowrocket<br />
官网：<a href="https://www.p6m6.com/" target="_blank">https://www.p6m6.com</a><br />
备用: <a href="https://web1.52pokemon66.cc/" target="_blank">https://web1.52pokemon66.cc</a></p>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/20260716-tian-ya-you-zai/</id>
      <title type="text">天涯犹在，不诉薄凉</title>
      <published>2016-09-25T00:00:00.000Z</published>
      <updated>2016-09-25T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/20260716-tian-ya-you-zai/"/>
      <summary type="text">2016年9月25日，郭德纲发表的针对曹云金长文回应的原始全文。</summary>
      <content type="html"><![CDATA[<p>在相声的历史上，师徒不睦的事情发生过很多。由于没有网络的传播，影响都不大，只是局限于业内流传。况且家务事不宜外扬，像我和徒弟小金闹得那么鼓乐喧天鞭炮齐鸣的热闹景象，应该是绝无仅有，谢谢大家的掌声鼓励。</p>
<p>事情一出，人们都很亢奋，也都在等待我回应。回应什么呢？这也不是小金写的啊。以他的文化水平来说，慢说写下这六千字，就算念下来都不容易。揣摩当时的情景，大约是一人口述，众人帮腔，有人录入，集体润色。一篇作文都要回应，这要是来本小说我得累死。</p>
<p>有明白人说这种处境好尴尬：正面回应是以大欺小、如不回应是理亏默认、马上回应是气急败坏、回应慢了是处心积虑。观众说几句被骂是水军、徒弟说几句是威逼利诱。做人好难啊，也只得冷眼看轻薄。</p>
<p>回应给谁呢？给我？我知道是假的。给小金？他知道是编的。给狗仔？他们是兄弟，一起策划的这件事。给水军？人家是工作。坐船打仗拿钱发帖，天经地义的事情。据说这次涨到两块一帖，也算给五毛耀武扬威。内部消息，某水军公司给多少钱都没接单，因为老板是纲丝。业内良心啊，感动的我眼泪都下来了。除了这些，就是吃瓜喝茶摇扇子的围观群众了。物必先腐而后虫生，人必先疑而后谗入。这句话很适应这个情景。网络暴力已经到了登峰造极了。一批人为了骂而骂，根本没有底线。好与坏、真与假对他们来说，并不重要。关键又有了一个可以宣泄的点，真是好快乐。人需要在一个没有后果的环境发泄，可见生活中有多么的不如意。这些优秀人才，听风就是雨，真以为逮着理似的，咬住了不撒嘴还摇晃脑袋。微博评论很好的证实了六道轮回，有些人确实是没进化好就出生了。</p>
<p>按这么说就不用回应了，奈何德云社风风雨雨二十载，始终是和观众连在一起的。为了给担惊的好人一个交代，不期拨云见日，也算留个清白。千年的文字会说话，给后世写下个有来有往的备注也是应该的。</p>
<p>2002年小金进京。他之前在天津卖盗版光盘，因为喜欢相声，见过相声前辈田先生一次。，先生告诉学相声可以报考曲艺学校。这一面之缘后来被夸大为田先生开蒙，可以理解，谁都有要强的心。后来小金红了，请田先生演出，以礼宾之，估计谁也不好意思分辨当初了。</p>
<p>我当年并没有什么号称办学，在家教徒弟怎么开发票给毕业证啊？如小金所讲，来北京一看也没教室也没宿舍，一年收8000学费，再加上吃饭住宿得上万，02年啊，这不是小数目。应该扭头就走，赶快报警有人诈骗。谁家那么有钱胡糟，你怎么能那么相信当年落魄无时没有工作没有知名度的我，真是让人感动的嘤嘤嘤哭起来。话说回来，我们也不是亲戚啊。因为潘云侠张云雷与我妻沾亲，小金也裹在里面被外界误认为是我的什么人。他其实很愿意被误认，我也没机会解释。当然，2010年德云社险些毁灭的时候，小金倒是极力告诉记者我们不沾亲。思想起来，小金曾经出版过一本自传，书中提到当初学艺，特意说我分文不取，白吃白住好几年。那会感动的我不要不要的，现在又说我收了钱，弄的我都有点糊涂了。也不知道哪句是真的。另外，如果这么收费的方法，岳云鹏这一帮穷孩子的学费从哪里来？而且这么多年为什么只有这么一位说收学费了，所以，这一段设计的不好，很难说的圆满，差评。事情出来后，张云雷的母亲和当年的同学及父母都表示，热烈期盼广大媒体采访，当年的事情大家愿意证明。</p>
<p>教相声，每个徒弟是有区别的。因为每个人的理解和表达方式是不一样的。我教何伟《口吐莲花》不让小金旁听，我教小金时也没让别人听。这是教学方式，不是被压迫的经历。</p>
<p>教徒弟，是替祖师爷传道。不是必须要留在德云社，更不是为了给我挣钱。不是说谁不在德云社就是叛徒，那不讲理。学好了本事，想自立门户是件特别美好的事情。徒弟们能在外面自己站稳脚，我看着高兴。杨鹤灵、高鹤彩、齐鹤涛、韩鹤晓、房鹤迪等等，分别在上海、包头、长春都有自己的班社，都还不错，三节两寿有个问候我很知足。</p>
<p>我当年落魄，一直租房子住，徒弟们自然要住在一起方便教学。后来小金提出来，为了跟何伟对词方便，要搬到西三旗何的父母家住，每个月交三五百房租。孩子已经大了，而且在德云社开始挣钱了，我也就同意小金去租何的房子。至于说把孩子赶出去，在花园露宿一个星期，那就是瞪着眼瞎说了。好家伙，白天在德云社说相声，夜里回花园睡觉。望满天星斗思绪万千，回想起世态炎凉人情冷暖，止不住悲从中来泪如雨下，问苍天何以如此……对不起，编不下去了，请原谅我不礼貌的笑出声。当然，这个片段在网络上会加分，很多人听故事的时候会代入感觉。身临其境的设想自己是主人公，再联想自己生活中的种种不满，一定有共鸣的。</p>
<p>印象中在何家住了一段时间就不愉快了。小金回来后的第一句话就是：我得打他。问原因也不说。只是要搬回来。问题是家中还有潘云侠张云雷呢，都是大小伙子，小金要回来就得换个大点的房子。于是就有了所谓的租房钱1500元。当年的我确实没办法，小金提出负担500，我也就同意了。所以，我要承认，那几个月，小金确实花了几个500元。后来，小金嫌住在大兴离城太远，提出搬到张画家的地下室去住。那个半地下室我们很多人都去过，在北京五里店。还挺好，干干净净采光也不错。张画家常年住那里，吃住画画都于此。这个地下室让小金说的跟菜窖似的，又潮又湿，身上长满湿疹，白天出去晚上回来桌子就长绿毛了。听起来好像张画家是在澡堂子创作呢，这个环境下也不知道那些宣纸是怎么活下来的。</p>
<p>2006年，我正式收徒。按照相声届的规矩，摆知仪式上，长辈们要送徒弟们礼物，作为回赠徒弟们也要表示心意准备礼物。这次收的是何、曹、栾、孔、于五个弟子。除了给长辈的礼物之外，当天还要宴请大批贺喜的客人。在钱方面，每个徒弟出了3000，孔云龙当时太困难，就没让他出钱。那四个徒弟一共出了一万二。这钱包括给师爷侯耀文先生买的钻戒，包括师父、师娘、引师、保师、代师的五份礼物、包括当天百余位客人的酒席。一万二之外，剩下的钱都是我出的。小金把他出的3000块钱说成我盘剥他的拜师费，我估计这是他跟我开玩笑。</p>
<p>小剧场演出收入少众所周知。2005年前后在小剧场演出，那时候的票价统一是20元一张，不分座位，全场一共261个座位，这票钱是唯一的收入。每场演出14位演员，1位主持人，除去场地、音响、水电、小吃等费用，要说演员能拿到一百多一场，那还真是算多的，这账明白人都会算。20岁的孩子，一个月四千多块钱，现在看好像是不多，可十几年前北京的平均工资也就每月三四千块。除了小剧场，小金他们代课，教师弟们学习是有补助的，另外大宗的收入就是商演。商演的助演，演出方提出来在当地解决，费用他们付。我不同意，要求必须用我的徒弟。商演带着孩子们为了捧人，让他们见世面增强自信，更多的目的是为了让他们挣钱。</p>
<p>我看到小金对天津分社的事有些不满，本想解释一下，看了看也没地方下嘴。我觉得是小金记错了，你再想想吧。好在当年参演的人都在，大家也可以开个茶话会，找个平台直播。我支持你们耶。</p>
<p>这些年，德云社的影视剧也弄了不少。十几年前的市场好难，我们参与制作《相声演义》、《三笑才子佳人》回款艰难，分文未见。那时候的市场跟现在的不一样，我们也不太懂。《三笑》的发行公司现在都已经没了，你想告都没处说理去。小金说的很好：我又不是跟你打江山，凭什么不给钱！孩子说的有骨气，就是稍微有点晚。十年前拍戏时就应该拍着胸脯这么说，让我惭愧无地，然后灰溜溜的换别的孩子演。</p>
<p>徒弟多了，确实不好管理。2004年，在天桥乐茶园后台，小金说：“别让我火了，我以后火了就给他（指我）弄个大的。”我也是单纯了，认为这是青春期叛逆，万万没想到这孩子果然有心胸。他唯一没意识到是天黑之后未必是光明，应该是深夜。</p>
<p>有句老话：财要善用，禄要无愧。如果德云社对演员苛刻，20岁出头的小金怎么能在德云社期间神不知鬼不觉的成立了自己的公司呢？怎么能开上那么好的汽车呢？怎么能在北京买房呢？房子这个事小金肯定记着，因为这套房的装修是我花的钱。装修的师傅是老吕，现在我们还经常见面。</p>
<p>小金聪明、爱相声，我是发自肺腑的希望他能红。创造机会捧他，带他做节目，给他办相声专场，慢慢的也算是有了人气。我在博客上说他是“相声小王子”，观众也夸他在台上像我，这一切我都很开心。</p>
<p>人的野心是随着位置的变化不断膨胀的，任何人都不例外。小金酒后最爱说的一句话就是：我养活了半个德云社！这句话到今天我也没明白从何说起。有段时间，师弟们在后台连话都不敢跟他说，对面相遇都要停下脚步，恭恭敬敬鞠躬跟他打招呼，打招呼的表情不好，还要被拎到他面前重新来一遍。谁不捧他谁不把他当神供着，就得挨骂，就得被威胁。鹤字科第二次招生的时候，老师们在二楼开会，一言不和，小金举拳要打谢天顺先生。谢先生是相声宝字辈身份，与侯宝林先生同辈。比小金大三辈，他应该喊老祖。但他视辈份如粪土，敢与先人作斗争。再后来，小金认识了一位据说是有钱的投资人。印象中这位投资人可亲民了，坐后台吃盒饭能连吃两盒，看着那个香啊。这位先生后来因为诽谤某位影星还被诉上法庭，可见工作很忙碌。反正小金认识这位盒饭大亨之后就更加变本加厉肆无忌惮，觉得自己有靠山了，这时候他的脸色也越来越难看了……</p>
<p>从09年开始小金就基本不到小剧场演出了，自己到外面去拍戏接私活，挣的钱也都是自己拿着。我知道了也没管，还承诺想回小剧场随时都可以。我是想凑合着这段师徒感情，不让别人看笑话。</p>
<p>这一切直到2010年1月18号我生日那天，终于有了场爆发。在三里屯的郭家菜，德云社所有人欢聚一堂。小金借酒撒疯呵斥众人。并且大声喊道：我不干了！张文顺先生的女儿张德燕求小金回来，并说：求你就看我爸爸的面子了！小金喊道：我他妈谁也不看！转身走到门口，跪在前厅关公像面前，大声说：关二爷作证，我要是再回德云社，我就是个＊＊。起了誓转身就走，张德燕一直追到马路上拦着，小金用力把她推搡摔倒在地，开车离去。当然，那天为什么这么闹，背后是另有原因的。这也是为什么云字科清门要驱逐两个人……</p>
<p>虽然小金在关公面前起了誓，但我还是背着关二爷原谅了他。我宁愿相信是孩子酒喝多了。那年3月份的开箱演出攒底的《大保镖》特意安排的小金。8月份在天桥德云社又安排了专场，我和于谦为他助演捧哏。目的是为了暖孩子的心，希望他好好的。</p>
<p>9月份德云社复演以后，德云社的演出就开始分队，规范化演出。当时分了三个队，每天的演出都是计划好的，有人专门负责安排演出阵容和节目，各队在剧场轮流演出。9月26号，小金一条微博发出去，让观众来剧场看演出，招呼都不打就要上台表演。当时那场是岳云鹏，岳云鹏不知道这事怎么办，问我经纪人王海，王海告诉你演出得提前说，安排好才能排进去，不然这算哪个队啊？第几个出场啊？原来的计划怎么办啊？（我说过你可以随时回来演出，但不能打乱已有的计划和安排，你想演出分好队就可以演。）小金又发了一条微博要“清君侧”，说演出部故意刁难，德云社不让演出。我觉得栾云平那句话特别好：既然拿你赚钱，干吗不让你演？很多事情并不是撒泼和撒谎就有效果的。正所谓作假者认不得真，卖巧者藏不得拙。</p>
<p>与此同时德云社改革，开始了合同制的管理。合同双方自愿可以不签，如果不签不算是德云社的签约艺人，但没影响演一场给一场钱的事实。小金以此为借口，以被逼出德云社的姿态一哭二闹三上吊，从此水流花谢雁杳鱼沉。</p>
<p>一晃六年。我没收到过一个短信，一个电话。小金在2011年给他师娘发过两三条短信，然后珍存起来。每逢记者提问便很委屈的展示。以我对他的了解，这几条短信他永远不会删掉，哪怕是换了手机也会备份。说实话，六年来我很纠结，其实我也在等待一个机会，万一小金能回来呢，万一他长大了懂事呢。一个偶然的机会，在北京的某个摄影棚，我的化妆间与小金的化妆间对门。门上分别贴着俩人的名字。那天，我一直在想，如果他推门进来喊声师父，我会一把抱住他，一切也就都过去了。那天我一直等到工作结束，收拾停当换好衣服，我期待的画面也没出现。助理说：走吧，棚里没人了。我点点头向外走去，那一刻，哀莫大于心死。</p>
<p>上春晚的那年，我们倒是遇见了。在中央电视台的院子里，我在车上，车外都是媒体。远处小金走来，我让人把车门关上，告诉他：想看我上家来看，大街上同着媒体恕不配合。</p>
<p>修家谱是相声行业的传统，为的是清晰师承关系，追本溯源，并非德云社一家如此。天桥有个小饭馆叫天畅轩，一次吃饭时张文顺先生提议，徒弟应该有个艺名。并说到，他当年在曲艺团练功的师父名叫云鹏。他少年时代还想，云字好听，以后收徒弟就叫云字，这次是个好机会，干脆这几个都改了吧。一顿饭的功夫，何、曹、潘、张都有了艺名。这个事小金解释，说这个云字是张先生单独赐予他的，还贴了个图片。图片上有张先生的印章。但热心网友指出：印章上刻着癸巳年，癸巳年张先生已经去世了啊，上一个癸巳年张先生十几岁啊，这方印章怎么也对不上时间啊。还有那个起哄的网友说了：一块青田石20元，5块钱刻一个字。这要是能成功的话，就刻个乾隆御赐，然后上故宫碰瓷去。反正40块钱的本儿。</p>
<p>顺便转述张先生女儿张德燕的一个愿望：父亲已故，希望这是最后一次，以后就不要再用老爷子说事了。死者为大，撒谎对张先生不尊重。</p>
<p>还有相声大赛的事，为什么退赛？怕你出名为什么派你参赛啊？我事前没和你商量还是你不知道原因？其实是关系到几位相声界老前辈，小金心里清楚不敢说，把侯先生搬出编故事，这孩子善于在死人身上做文章。</p>
<p>小金说演出时我给设置障碍，这件事有点可笑了。一场演出不是我说了算的，它有演出商、场地、活动公司等等机构参与。跟你签合同的公司是为了挣钱，我不让他装台他就听了？那不是毁自己买卖吗？事情出来后，北京环宇兄弟文化公司的乔总特地询问相关部门和人员，并没有任何人从中做梗，并且把对话截图发了微博，弄的我好感慨。</p>
<p>天津台的春晚节目，相声请了我没有用小金，这事很难解释吗。正常啊，用了师父干吗还要用徒弟，电视台可聪明了，谁愿意花两份钱啊？所以你要做的是必须强大，超过我才会有饭，哭哭啼啼不解决任何问题。最重要一点，人的痛苦都是对自己无能的愤怒。</p>
<p>某平台不曝光你的信息是平台自己的选择，在你的臆想中所有坏事都是我做的，我把你带大教你本事不是为了坑你。要想拦住你其实也不难，目前来说没有人会因为你而得罪我。但我不能那样做，因为你终归是我带大的。记得有个微信群，里面有上百个剧组的副导演。他们联合抵制小金，说在剧组里耍大牌、打人骂人欺负人、连导演都不放在眼里。表示所有的戏都不用他。其中有几个人问我，我心知肚明，因为录节目时有位北京著名导演就跟我提过与金的合作很艰难。录欢乐喜剧人的时候，制片方也跟我埋怨，说因为财务问题，那个周五不能转账，只能等周一。小金大怒，毅然决然的违背合同墩场而去。节目组还得委屈的对外说是档期问题。类似这样的事情，我耳朵里都灌满了，但我不能说什么，只得劝大家息怒。</p>
<p>看的出来，小金的6000字写的不容易。把历年来网络上所有跟我有关的负面新闻全搜集整理了一遍。多恨我的仇人也没做到这一点，我亲手带大的徒弟做到了，说明孩子责任心强。如果逐一回应的话，我也太没事干了。只想说两点，一个是那些欲言又止好像抓住我致命把柄的情节，等你不忙的时候跟大伙聊透了，姓什么叫什么，越细致越好，省得让大家老惦着。不公平之处在于，你能撒谎我不能回嘴。小金是我看着长大的，要是爆料的话得说些日子了。但放心，我不会的。那样做没有大人之材，而且说明人的品质低劣。</p>
<p>第二点我得批评小金了，不应该和狗仔成为一家人。你还年轻，正在前进的路上。娱乐圈谁还敢跟你来往？谁还敢跟你交朋友？谁还敢用你拍戏？你来了就把狗仔带来了。设想一下，你进组拍戏，谁知道你的哪个助理是狗仔假扮的？</p>
<p>再多说就没意思了，现在开始你恢复了自由身，在相声界成为了响当当的海青。知道你对师承之类的也不在乎，你连两个师弟都能收为徒弟，所以怎么开心怎么好。缘来不拒，情走不留。自立宗派也可以，再拜名师也可以。希望前途光明万里鹏程。日后倘有马高蹬短水尽山穷，无人解难之时言语一声，都不管，我管你。</p>
<p>自占一课，2016流年丙申，大运在丁巳，大运流年地支食神制杀，丙申月七杀填实，命中注定有此一撕。</p>
<p>既如此，便如此。</p>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/20260716-is-time-to-end/</id>
      <title type="text">是时候了，也该做个了结了</title>
      <published>2016-09-05T00:00:00.000Z</published>
      <updated>2016-09-05T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/20260716-is-time-to-end/"/>
      <summary type="text">2016年9月5日，曹云金发表的六千字长文原文。</summary>
      <content type="html"><![CDATA[<p>二零零二年，你号称办学授课，我只身一人，满怀希望来北京求学，你说学期三年，学费每年8000，毕了业给艺术文凭，我那时初来乍到，又酷爱相声，便决定留下来随你学艺。交完学费后，你还给我开发票，签字盖章，母亲才放心把我交到你手里。</p>
<p>来了之后，我才发现，你这儿根本没有什么学堂教舍，是住家教学，除了每年交小一万块的学费，每月还要交500饭费，500生活费，吃饭要饭钱，住店要店钱。你总跟人说，有的徒弟是儿徒，从小养在家里长大的，我不知道谁是，反正我不是，你还记得吗，那时候家里就咱俩人，师娘一个月才回来一次，你的生活也拮据，我在你家，给你洗衣服做饭，养狗沏茶买菜做家务，学艺三年，就是这么过来的。</p>
<p>我不觉得自己苦，初来学技能，本应如此。但我念的是我妈苦，她一个人在天津辛苦赚钱，不舍得吃不舍得穿，攒下来的钱都供我学艺。可零三年的某个月，没来得及给我交饭钱，你便把我从家里赶出去，我足足在公园的长椅上睡了一个星期，要不是何云伟好心，把家里的储物间腾给我住，我真觉得那时候，我快坚持不下去了。我记得我们俩大包小包，带着我的锅碗瓢盆，他帮我搬家，我们没钱就没法找搬家公司，坐着819的末班车，盲流似的，奔向那个一个月350块租金的小房间，但不管怎么说，我终于在北京又有了安身之所。就这么过了半年。</p>
<p>半年之后，你搬到大兴枣园，1500元/月的房租，你负担不起，又找我分担，你说你出1000，我出500，这事儿就这么定了，我把钱如数交上，又回到你家里，谁知好景不长，因为琐事你不高兴，再次将我赶出家门。万幸我又得到张德武先生的无私帮助，免费住进他的画室，那是一间地下室，由于阴冷潮湿，住在那里的岁月，我身上长满湿疹，白天出去练功演出，晚上回来桌面上就长了一层绿毛，吃的也存不住，经常回来以后，留好的食物都发霉了。但在北京可以有免费的住所，能够生存下去，挺好，我知足。尽管受了不少苦，我也没在意，谁学点本事不得吃点苦，我相信，阳光总在风雨后。</p>
<p>我知道那时候，你不看好我，觉得这些个徒弟里，我最不可能学出个名堂来，你给何云伟念《口吐莲花》，我连在旁边听的资格都没有，你们进屋关门，我一个人坐在客厅沙发掉眼泪，我跟我自己说：“没关系，你自己好好学，以后你说的比谁都好，他终究会高看你一眼。”是的，我仰慕你的才华，论艺术方面，你有过人之处，我愿意跟着你学本事，我觉得，再苛刻的条件无非是一种历练，我希望我努力了，能得到你的认可，观众们喜欢我，我就成功了。</p>
<p>学艺三年，期间拜师，你从我的“姐夫”变成我师父，你说我和何云伟，每个人要交3000块拜师费，这是规矩。后来你觉得3000要少了，琢磨这事儿还能赚钱，你让我和何云伟，统一口径，告诉潘云侠拜师费是5000，这样你又能多赚2000。</p>
<p>随后，我在德云社足足效力了五年，这五年我自认为无怨无悔，任劳任怨，从来没跟谁抱怨过。生活里，对师弟们，我毫无保留地带他们使活，把我会的都念给他们；舞台上，所有演出我认真对待，除非伤病，基本场场不落。</p>
<p>团队如日中天的那两年，公司没有社保，我一个月演满了，32场演出，到手的工资有四千多，当时觉得，一群人在一起为了一个目标努力，为了大家更好，值得，一场一百多也没什么。我实实在在的觉得这个团队不容易，我有感情，我也年轻，从没觉得是吃亏，苦尽甘来，吃亏是福，以后还能挣呢，那时候，我就是这么想的。</p>
<p>可后来，这种一团和气，共同前进的氛围在不知不觉中，变了。零六年我参加CCTV相声大赛，一路过关斩将到决赛，决赛是直播，大赛给了我18分钟，让我好好表现，可在直播的前一天，你告诉我：“退赛！”我问为什么？你说：“没有为什么，我让你退，你就得退。”我没办法，总导演气得摔了电话，师爷侯耀文先生打了两个小时候电话问我是不是疯了：“你这么不负责任，以后，谁还给你机会？”我只能说：“师爷，我没办法，您得和我师父说，您是他师父，我是他徒弟，有一句话说的好，人在屋檐下，怎能不低头，这是我的处境。”我还记得，师爷最后冲我嚷嚷了一句，：“他不接我电话，你们要造反！”之后也摔了电话。最终，这个事件以你勒令弟子退出央视相声大赛的新闻，铺天盖地而告终。我后来才明白，我可能会因为退赛失去央视这个平台，遭到封杀，你以后好控制管理，我再想出头就难了。</p>
<p>但当时我没想那么多，失去一个崭露头角的机会，我没气馁，继续安心演出。零七年你拍《窦天宝传奇》在天津拍摄三个月、一分钱都没给我，我要求尽量保证北京小剧场的演出，想尽一切办法赶场，因为拍戏没钱，演出有钱，我得赚钱，我得填饱肚子，一场演出150，我不敢落下，为了赶演出，我要自己承担油钱，来往的过桥过路费，最后一算，我还是赔了好几千。</p>
<p>零八年天津开分社，演出费低，没人愿意去演，我带队开专场，一场卖出十几万票房，我就拿着500块演出费，过路过桥费还是一律自付，不管吃不管住，演完赔钱这么干。晚上十一点多演出结束，我得连夜返回北京，因为，第二天下午北京还有演出，我当时没别的想法，就是挣钱，因为我得活着。</p>
<p>零九年拍《三笑才子佳人》，上海拍摄近两个月，也是分文没给，这回连演出费都没的赚了，就这么零收入生扛了过来；你总说你在钱上没亏欠过任何人，拍戏没钱，是因为片子没卖，所以不能给我片酬。我想不明白，我又不是投资人的身份，为什么要与你们担卖片子的风险？我在你那，连合作都谈不上，就是一个雇佣关系，为什么我演了戏，付出时间、付出了劳动，连养活自己的工资都没有呢？平心而论，没有收入，我真不知道靠什么活。你也穷过，你应该知道活不下去的滋味。最不能理解的是，后来片子播了，影片也上映了，这笔钱也没补还给我，这就是你对谁都毫无亏欠，是这样么？</p>
<p>也许在你眼里，你从没错过，回顾你出道以来，你先骂授业恩师杨志刚，捏造人家挪用公款，后来你转拜相声名家侯耀文，又骂李金斗、再骂姜昆、骂冯巩，几乎把中国声界骂遍了，你说相声圈里没有一个好人。尤其骂姜昆的时候，你强制要求所有在团队的人，都要发文开骂，我们不愿意，你说：“不写以后没演出排给你，以后别想挣钱。”你不断的威逼，要求徒弟们，要不断的表忠心，说你各种好，就是为了有朝一日，他们有心想走的时候，再说你的不是，也无从说起吧？</p>
<p>你还骂相声大赛，说里面肮脏黑暗，骂央视春晚，发誓一辈子都不会登那个舞台，但是到了2013年你还是上了春晚；你代言的藏秘排油被曝光，你骂中央电视台315晚会；你侵占绿地被曝光，所以辱骂北京电视台；你打完记者，骂记者不如妓女；你抄袭段子手的作品，人家找到你，你骂他们是来“碰瓷”的，还拉黑他们。有质疑你的观众，你当然也没饶了他们。所有人，都是你想骂就骂，想打就打。相应的，你也赢得了一轮又一轮的舆论争议和炒作，你不断登上热门新闻话题。</p>
<p>观众们喜欢你的艺术，粉丝们喜欢你的作品，你以弱者之姿，行敢言之态，收获着他们对你的支持和爱护，所以轻易地，你也煽动了他们，利用这些喜爱之情，跟着你，对那些“敌对势力”诅咒谩骂、口诛笔伐，几场仗干下来，你没受过挫，所以你越战越勇。</p>
<p>直到有一天，你突然给刚刚因病离世的北京台台长王晓东贴红喜字，写打油诗，逞口舌之快，这一仗你触碰了人们的情感底线，作为一个艺人，连死去的人都不放过，何况他与你的人生毫无瓜葛，所以第一次你吃了大亏，不得不收敛，低调了好一阵。其实我一直想问，难道一直以来，这些所有的事情，所有你骂的人，都是因为你对？别人错？世人都对不起你？你无辜至极？</p>
<p>你接受采访，告诉所有人，当今社会险恶，人心叵测，人人都有一颗阴暗的心理，你关闭评论，说评论你的人都不怀好意，可是为什么世上好的一面，你就看不到呢，也从来不鼓励，只一味强调记仇念恨、睚眦必报的手段，究竟是意欲何为呢，你到底在宣扬什么？</p>
<p>二零一零年，所谓“八月风波”，你四处哭诉，一行人在你危难时刻离去，背弃了你。可实际上，我当时毫无离开的想法，只是对你们合同的条约心存疑虑，在与你商量，得到你允许的情况下，暂时没有签约，你跟我说：“金子，任何时候，任何一家剧场，你都可以演出，这是你的特权，也是我对你的承诺。”我当时也对你说：“家里任何演出，我分文不取，这是我对你的回报。”</p>
<p>九月，你安排的团队自查结束，一切回归风平浪静，我依然在团队正常演出，然而，到了10月中旬，我却突然遭到禁演，一个从未听说过的“演出部”禁止我登台，为此我到处找你，沟通无门，直到十一月，失去舞台的我，才意识到，之前没有签约的行为导致我自己可能已经被赶出来了。可是我没签约，你是亲口同意了的啊？你忘了么？</p>
<p>十一月底，我寻找到新的舞台，仍然没有放弃缓和你我之间的关系，试图与你取得联络，你却关紧了所有的大门，我只能抱着一丝幻想对来看我的观众说：“我没有离开，你永远是我师父。”我总觉得，过几天，只要咱们见着面了，把事情说开了，我们还是会坐在一起，笑骂几句，这事儿就过去了，人生么，谁们家还没有个矛盾不快呢？做人阳光一点，想开了就完了。</p>
<p>结果，我没等来和你见面，是我想简单了，转眼到了二零一二年底，某次活动中，你突然对媒体说：“曹云金，我没法评价，他走了三年，我没有收到过任何一个短信，也没见过人。”当时在山东临沂拍戏的我，被前来探班的记者问得一头雾水，我几乎是不敢置信地拿出手机给记者看，三节两寿，你有大事小情的时候，我都有给你和师娘发送的问候信息，师娘也都有回复。</p>
<p>起初我还以为是媒体的误传，回酒店看了视频，才知道是你亲口所言，心里那叫一个委屈、伤心，心里顿时五味杂陈。</p>
<p>二零一三年初，你登上以前誓死不上的央视春晚，之前审查节目的某天，在央视门口，我与你不期而遇，我想，可能注定，我和你有这一面之缘，面对面说句话，还能跟以前一样，要说我和你之间也没有什么过不去的仇和怨。当时我和刘云天只是想上前问候寒暄，你却在眼看着我们走来的一刹那，立刻转身上车，把车门一关，隔绝了我们，你在车上躲避不理，我当时就愣在那儿，感觉挨了当头一棒，真的已经至于到，你不能，也不肯再与我面对了？我甚至感到绝望，第一次意识到，也许这个结，永远解不开了。</p>
<p>至此到二零一六年，也是我离开六年之后，我自认在任何公众场合，媒体面前，从没口出恶言，我没说过你一句不好，也没有抹黑过你的团队，因为我过去在那里生活发展，对过往的岁月我依然怀有深情，我希望能够给自己的人生，保留一份相对平和的回忆。我是打心眼里感恩过你的，是你带我入门，可最后，在情感上，是你硬生生把我亲手推出了门外。</p>
<p>为什么你和所有人，和媒体，都谈的是师徒感情，可转身到我这里，就谈的是一纸冷冰冰的合约？合同里全是束缚，没有发展，我有追求更高进步的愿望，我想拓展我的事业，我想尽快有能力接母亲来身边尽孝，于是才找到你商量，想求个中间之道。可就是因为这，我就被禁演，我就不再是你的徒弟了。就因为这，我甚至就成了你口里叛徒，我从此就是欺师灭祖，十恶不赦的罪人了？我不懂。</p>
<p>这些年，我总是遭到无缘无故地抹黑，你甚至让小舅子出书诟陷，他的书里满纸胡言，肆意污蔑我的人品，抹黑离开的所有人，连张文顺先生创始人的身份都都在他书里被矢口否认。这本书的节选至今以内幕爆料的形式在网络上广为流传，全都是对我和所有离开的人的横加诽谤，恶意造谣。其实你小舅子哪年来的你不知道么？你心里应该比谁都清楚，他怎么可能知道当年发生的事情呢？他连经历都没经历过。</p>
<p>你腕儿大，你很红，你有庞大的粉丝群，这是你的本事，所以你一有机会就在微博上，骂所有离开你发展的人，你骂我、骂刘云天，骂何云伟、骂李菁、骂徐德亮、骂王文林、骂曾经无私支持你的张德武，后来你干脆也不点名了，就是指桑骂槐，含沙射影，只要离开你的，无一幸免。郭鹤鸣、韩鹤晓、啜鹤熊、王鹤冠、张九芳，戴九安，连这些出来，独立靠自己发展的“小鹤”，“小九”科的师弟们，你都没放过。你竟然还在微博上说“有很多徒弟自己发展，我们关系都非常亲近。”没了，真的没了，所有走的，一个不落，你都骂干净了，还有谁跟你亲近？</p>
<p>你说你是伤的深，所以看不开，可是我的离开，其他人的离开，影响到你了吗？你该演出演出，该商演商演，该录节目录节目，风光无限。唯一不同的是，我们不再给你赚钱了，所以你就恨我们，骂我们？你每提一次，我就被你的粉丝、你的人，你的水军，铺天盖地的骂一次，如果那些骂声是刀，我已经被刀刀见血，活刮见骨了！我都伤透了！</p>
<p>我一开始想不通你为什么要这么做，现在明白了，你掌控话语权，用舆论压倒我，无非是想我过的不好罢了，我没有签那一张卖身契，不再给你赚钱，所以我得去死，我不该在娱乐圈混下去，碍着你的眼了。</p>
<p>尤其是从去年开始，你利用新的合作平台，新的发言契机，站在道德至高点，再一次旧事重提，却依然不敢指名道姓，用“背后插刀，置于死地”这种危言耸听的言论，混淆视听。你不再去招惹大的机构，大的平台，把苗头指向了我们这些离开的人，比你弱小的人，我们成为你新树立的谩骂对象，以此制造炒作话题，塑造你“遭人背叛，心慈手软”的完美形象。</p>
<p>网络上，你雇水军，歪曲过往的历史，我看到各种满怀恶意的谣言，不择手段地改写当年的历史，把我塑造成一个忘恩负义，不忠不孝的，永世不得翻身的“叛徒”，这完全是要用网络暴力毁灭了我，试问，如果我始终不辩不说，沉默以对，那最终到底是谁要置谁于死地呢？</p>
<p>生活上，你也四处为我设置难题：一零年底，我在天津体育馆开个人专场，你跟场馆人说：“让消防不过，给他搅和搅和。”一一年十一月，我在北展办十周年演出专场，演出头一天，舞美团队进场装台，你正好结束当晚商演，你找负责人说：“别给这小子装台，我看他怎么演。”我听了心里十分委屈，但也没想和你撕破脸，装台谁都能装，这事影响不到我；一三年，我接到天津卫视春晚的邀约，一切正常准备之后，导演组告诉我：“金子对不起，因为他在，你不能来了。”到了一四年，也是你第二年和春晚组接触，也许是有了第一年春晚合作的底气，你跟导演组说：“有我没他，有他没我。”但这事儿，很遗憾，谁能不能上春晚，只能看审查结果；你与某网络平台战略合作的三年，我在该平台没有一条属于我的新闻，也是你放话说：“要跟我独家合作，就不能有他的推广。”我都忍过去了，类似的事情，沟沟坎坎，这些年，多的我几乎数不过来，一桩桩，一件件，我也习惯了，心也逐渐寒了。</p>
<p>可能你真的打心眼里就不曾想我好过，我还记得零七年拍完《窦天宝传奇》，第二年后期做完，很多演员在后台说：“金子演的太好了，这小子能大火。” 那时我还是一个二十出头的毛头小子，听到这么直接的表扬后高兴得不得了，可你却指着我脸说：“信不信给你丫戏份都剪了，你就别想有火的那天。”我记得我当时一脸尴尬，安慰自己你在开玩笑，现在想想，你没开玩笑，你不喜欢我，所以根本不想我好，我最好一辈子平庸，为你赚钱就行了。</p>
<p>我可笑我自己曾经希望，也许会有云淡风轻的那一天，所以之前从未回应过你所说的一切的谎言，但这并不代表我是怕了你、也不是我心虚，是为你见不得光的过去，拿不上台面的手段，留最后一丝颜面。我没预料到今天，你这么恨我，恨不得我死，我猜想，一方面我不再给你赚钱了，另一方面你也要做给还留在你那里的徒弟们看，离开我，谁都没有好下场，你有太多的手段，你要杀一儆百，你想让我身败名裂，万劫不复，你知道我最清楚你那些见不得光的往事，我的名声臭了，说出来也没人信了，你这辈子，也就安全了。</p>
<p>可纸永远保不住火，除非你这辈子没亏心过，你还记的你04年为什么从右安门搬到大兴的邮局宿舍吗？你还记的你生命中有个人叫杨新华吗？你还记的那个跟着你的女记者吗？珠市口剧装店的事儿你也都忘干净了？可能这些细碎的事情，都随着你树立起的高大形象，渐渐被你淡忘了吧。</p>
<p>别再过分了，我的善意，和我一而再再而三的忍让，都没有让你对我感到一丝抱歉，反而使你的恶毒之心变本加厉，弄出一本“家谱”，鲜红的字体格外醒目：“曾用云字名者二人，欺天灭祖悖逆人伦，逢难变节卖师求荣，恶言构陷意狠心毒，似此寡廉鲜耻令人发指，为警效尤，夺回艺名逐出师门”，以上的无端指控，杀意十足，对我进行恶意栽赃，令我深感欲加之罪，何患无辞。你导向舆论，把对我的人身攻击上升到了前所未有的高度，你动了杀心，想把我们钉死在道德的《耻辱》柱上，死后还要任人唾骂，你才觉得快活？你说你要给留下的人一个交代，你这不是交代，是恐吓，你要告诉他们：“你们要敢离开，也是这个结果，我可以轻易操纵舆论，让你们败名裂、不得翻身、万劫不复。”</p>
<p>所以，我不想再保持沉默，是时候了，伤疤揭了是疼，但也该做个了结了，我不想一路支持我、理解我的粉丝、观众和朋友，一边替我承受你们疯狂的谩骂和侮辱，一边还要帮我澄清被你们掩盖的事实真相。没错，他们都没有你的粉丝多，也不如你的水军疯狂，但他们是真心爱护我的人。人再少，心在一起，也能让我感到温暖。也是我当下最值得珍惜的，所以我也不想他们再如我一样受到伤害。我想我应该站出来，给他们一个真实的解释，也还给我自己一个彻底的清白。</p>
<p>你说你要夺回“云”字，抱歉，云不是你的，是创始人张文顺先生给的。云字由来，摘自张文顺先生的书斋——听云轩，张先生自称“听云楼主”。是张先生，把云字给了我。先生说“听风太凄凉，听雨太残，云是鹤的故乡，云里的声音最美，你就叫曹云金。”他用“云”字，给我们做名，也是希望“德云同在”，可惜你“德”没有了，我“云”还在。后期先生病重，在家休养，我曾去探望，张先生赠予我他心爱之物“听云楼主”手使名章，对我说传承任重道远，我想，我有责任完成先生遗愿，将“云”字发扬光大，曹云金这个名字，我会一直用下去，此生不改。</p>
<p>《师说》有云，“师者,传道受业解惑也。”不是为了一言堂而赶尽杀绝，我跟你学艺不假，也回报了多年的血汗，真心和青春。最后，好言相劝，请你不要再极尽炒作之能事，打着传统的旗号，用一本家谱鼓吹“顺我者昌、逆我者亡”的封建思想，对我和他人进行道德绑架，这不是师者的行为。我本问心无愧，是你的江湖险恶，但我的世界阳光，道不相同不相为谋，如此，人生长路漫漫，确实不必再见。</p>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/20260717-edison-chen-apology/</id>
      <title type="text">【历史文献】陈冠希道歉信原文及翻译 (2008年)</title>
      <published>2008-02-21T00:00:00.000Z</published>
      <updated>2008-02-21T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/20260717-edison-chen-apology/"/>
      <summary type="text">2008年陈冠希就网络照片事件发表的道歉信全文及中文翻译归档。</summary>
      <content type="html"><![CDATA[<blockquote><p><strong>前言</strong>：本文档归档了 2008 年陈冠希就网络照片事件召开新闻发布会时的道歉信全文及其对应的中文翻译，保留了当时历史语境下的表达。</p></blockquote>
<hr />
<section><h2>📄 原文与翻译<a href="#-原文与翻译"><span>#</span></a></h2><p><strong>Today I have come back to Hong Kong to stand before you and account for myself. I have never escaped from my responsibility. During the past few weeks, I have been with my mother and my family and my loved ones to show support and care and at the same time to have them support and care for me.</strong></p><p>今天，我回到香港站在你们大家面前为关于我的事做一些解释——我从来没有推卸责任。在过去的几周里，我一直和我的母亲、家人和亲人们在一起以示对他们的支持和关心，与此同时也请他们支持和关心我。</p><hr /><p><strong>I admit that most of the photos being circulated on the Internet were taken by me. But these photos are very private and have not been shown to people and are never intended to be shown to anyone. These photos were stolen from me illegally and distributed without my consent.</strong></p><p>我承认传到网上的大部分照片是我拍摄的。但是这些照片是非常私密的，从来没有给别人看过，更没有给别人看的打算。这些照片是有人非法从我这里偷走的，并且没有经过我的同意就散发了出去。</p><hr /><p><strong>There is no doubt whoever obtained these photos have them uploaded on the Internet with malicious and deliberate intent. This matter has deteriorated to the extent that society as a whole has been affected by this. In this regard, I am deeply saddened. I would like now to apologize to all the people for all the suffering that has been caused and the problems that have arisen from this. I would like to apologize to all the ladies and to all their families for any harm or hurt that they have been feeling. I am sorry. I would like to also apologize to my mother and my father for the pain and suffering I have caused them during the past few weeks. Most importantly, I would like to say sorry to all the people of Hong Kong. I give my apology sincerely to you all, unreservedly and with my heart.</strong></p><p>这是可以肯定的，得到这些照片并把照片上传到网上的人有着恶意的蓄谋已久的目的。这件事情已经恶化到了整个社会都为之受到影响的地步。在这方面，我深感悲哀！现在我向所有因此事而遭受痛苦及麻烦的人道歉；我向受到任何伤害的所有相关女士和她们的家庭道歉，对不起；同时我还要向这几个星期以来因我而痛苦和伤害的爸爸妈妈道歉。最重要的是，我要向所有的香港市民说声对不起。我发自肺腑地毫无保留地向你们所有的人道歉。</p><hr /><p><strong>I know young people in Hong Kong look up to many figures in our society. And in this regard, I have failed. I failed as a role model. However, I wish this matter will teach everyone a lesson. To all the young people in our community, let this be a lesson for you all. This is not an example to be set for you.</strong></p><p>我知道香港的一些年轻人非常崇拜一些社会中的偶像，就这一点来说，我做得很失败。作为一个榜样，我是失败的。然而，我希望这个事件能够为每个人提供一个教训。对于这个社会上所有的年轻人来说，让这个事件成为一个教训。这不是你们学习的榜样。</p><hr /><p><strong>During my time away, I have made an important decision. I will whole-heartedly fulfill all commitments that I have to date. But after that, I decided to step away from the Hong Kong entertainment industry. I have decided to do this to give myself an opportunity to heal myself and to search my soul. I will dedicate my time to charity and community work within the next few months. I will be away from Hong Kong entertainment industry indefinitely. There is no time frame.</strong></p><p>在我离开的这段时间里，我做了一个重要的决定。我将全心全意地履行我以前许下的承诺，之后我将离开香港娱乐圈。我之所以做这个决定是为了给我自己一个机会去医治拯救自己，去寻找自己的灵魂。在将来的几个月中，我将全身心地投入到慈善事业和社区工作中。我将永远退出香港娱乐业，永远。</p><hr /><p><strong>I have been assisting the police since the first day the photos were published and I will continue to assist them. After this press con., I have obligation to help them with their investigation and hope that this case can end soon as everyone I think has the same wish.</strong></p><p>从照片被公布到网上的第一天起，我就已经协助警方调查此事，我将继续和他们配合。这次新闻发布会后，我有责任帮助警方进行调查并且我也希望这个案子能尽快了结，因为我想大家也是这样认为的。</p><hr /><p><strong>Lastly, I would like to thank everyone for coming here today and listening to what I have to say. I would like to also apologize once again to all the ladies and their families, my family and to everyone in Hong Kong and everyone in our society. I am deeply saddened by this. And I apologize to everyone who has to go through this. I would like to also thank you for giving me this opportunity to say what I have wanted to say all along in my heart. I hope, after today, I can have your forgiveness. With regard to this case, with everything, everything that has happened, I am deeply sorry. I hope you all accept my apology and give me a chance. Thank you.</strong></p><p>最后，我感谢大家今天来此并耐心地听我的解释。我再次向所以相关女性、她们的家庭、我的家人和所有香港、及这个社会的公民表示道歉。这件事情让我很伤心。我向所有经历这件事的人道歉。我同时要感谢那些给我这次机会表达我一直以来内心所想说的话。我希望今天以后我能够得到你们的原谅。对于这种情况，以及所发生的相关事件，我深感歉意。我希望大家都能够接受我的道歉并给我一次机会。谢谢。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/20260720-my-father-jia-pingwa/</id>
      <title type="text">【文学散记】贾浅浅：我的父亲贾平凹</title>
      <published>2007-06-04T00:00:00.000Z</published>
      <updated>2007-06-04T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/20260720-my-father-jia-pingwa/"/>
      <summary type="text">贾浅浅撰写的关于父亲贾平凹的随笔文章散记，记录父女相处的日常琐碎与文学印记。</summary>
      <content type="html"><![CDATA[<blockquote><p><strong>前言</strong>：本文为贾浅浅所写的随笔作品《我的父亲贾平凹》，文章通过细腻平实的视角，记录了生活中的贾平凹以及父女之间的日常点滴与情感记忆。</p></blockquote>
<hr />
<section><h2>我的父亲贾平凹<a href="#我的父亲贾平凹"><span>#</span></a></h2><p>文 / 贾浅浅</p><p>贾平凹是我的父亲。也是中国当代文坛比较勤奋和出色的作家之一。生活中的贾平凹，善良、朴实、幽默、风趣、豁达，平易近人，大智若愚，集各种特点于一身，是一个让人钦佩、值得我崇拜的好父亲。
　　——作者题记</p><p>　　要说到自己的父亲，那还得从头说起。</p><p>　　小时候，上小学三四年级吧，老师让我们写一篇“我的父亲”这样的作文。我当时很认真用力的握着铅笔一笔一画戳的满作文本的窟窿写道：我以后也要和我父亲一样，成为一个作家，有名了，就有很多叔叔、阿姨给送香烟呀、苹果呀，成为名人多好多好啊之类的话。结果我父亲看了后，和我母亲各站在我左右，一边前仰后翻地笑，一边小心翼翼并生怕人听见似的小声的教导我说：“娃呀，千万可不敢这样写，要不你老师会笑话哩，说你小小的娃没有远大理想，刚想着别人给你家送啥呢，说家长没把你教育好。”你想想本来三四年级的小孩写作文能有多长？即便是这样，我父亲也不放过。最后，这篇作文被我父亲大刀阔斧地修改成一个幼小的心灵怎样受到艺术的熏陶以至要立志作为一个对社会有用的人。</p><p>　　这是我第一次对作家、对我父亲这样的职业的亲近，而又被温柔地吹散了。</p><p>　　第二次，是上中学时写作文，我还是以父亲为原型，写“我的父亲”。文篇的开头是：在我家的镜子上贴着一个用红笔画的眼睛，我问那是什么，他告诉我是奥林匹克。我只知道奥林匹克运动会，不知道什么叫奥林匹克。但是每当他注视这只红眼睛的时候，眼睛里全是光，像是有一团火。我就在想象：在烈日炎炎的旷野上，我的父亲在永无止尽的奔跑，阳光灼伤了他的肌肤，汗水遮蔽了他的眼睛，他像夸父一样在追求自己心中的太阳，跑呀，跑呀，不远的身后还跟着一个小夸夫，也同他一起追寻心中的太阳。多年后在一次搬家的时候，我找到当年的这本作文，感觉自己很了不起，很早就把握住了父亲创作的脉率，写得这么好。</p><p>　　第三次是刚上大学那会儿，写了一篇文章叫《我爱辣椒》，通过写我对辣椒的衷爱，从吃辣椒体会到的人生哲理，其中还是透射出父亲对我的影响。那天给父亲看这篇文章的情形是这样的：当时，我和我父亲各占据一间房子，他写他的，我写我的，我当时就在我的小房子里誊抄这篇文章。写好后，父亲正在午睡，我就轻手轻脚把这篇文章放在他书桌上，然后摸上床也假寐。但是两个房间的门却没关，我就静心等待他起床后的反映，因为紧张我的两个太阳穴突突的跳。终于，父亲一个小时后蟋蟋嗦嗦的起床了，半个小时后听他给孙见喜伯伯打电话，说：“老孙呀，我这里有篇文章写得还行，刚好你办的刊物要稿子，就给你吧。”然后才笑嘻嘻地说：“这是我娃写的，趁我睡觉人家偷偷的给我放了篇稿子，上边还写着丑媳妇总要见公婆，把他家的……”这就是我第一篇发表的文章。日后我总结为什么这篇文章能发表，并不是我的措辞有多高妙，立意有多深远，关键就是我拍对了马屁，博得了老爷子的欢心，这点太重要了。这以后我经常装作虚心好学的文学青年形象，向我父亲讨教问题，他一高兴有时妙语连珠，滔滔不绝。我就像空手扑蝴蝶一样愣头愣脑的，左边抓一下，右边扑一下，把好不容易费力抓来的几只艰难的吞进肚子里，有的还挣扎着想要跑出来，等到上课时老师组织大家讨论，我才从容不迫的转转脑袋，爽快的把这几只放生掉。虽然有的没了触角，有的残了翅膀，有的断了腿脚，但毕竟有这些色彩斑澜的小精灵的环绕，我大放光彩，使得同学羡慕、老师赞许。那段时间，我被这种感觉所怂恿疯狂地写诗歌啊，散文啊，小说啊。常常深夜十一、二点了几个连环电话把我父亲叫回来看我写的文章，真跟着了魔似的。我想我和文学的这份亲近，父亲也许起了最最直接的关系。</p><p>　　所以我从小到大特崇拜我父亲，就是除了不读他的书，不看他写的文章。狂热到什么程度：模仿他吃辣子，经常和他比赛吃，小小的女孩把自己吃的胃痛；模仿他的字体，就感觉他写的“贾”字怎么那么好看，老是跟着他的笔迹偷偷练；模仿他写东西时总是用稿纸背面的习惯，也装模作样的在稿纸背面留了天地左右写东西；甚至有一度在西北大学住时看他每日写字画画，自己还央求他给我买了一套《三希堂画室》日日临摹，还别说画得有模有样。有一次兴致来了，照着他书房的陶俑画了一张，还受到他的赞许，说我的神态画得好。再比如，吃饭上，他不爱吃肉，很长一段时间，我也不沾一点荤腥；他爱吃杂粮，我也总点乔面饸咯，就感觉可以向人家靠齐了；喝稀饭时总喜欢喝汤是汤水是水的那种能照见人影的稀饭。我从来反感别人在我面前抽烟，但每次到他书房，虽然总看见雾气缭绕，但就是闻不见烟味，只是常常从书房出来时，头就疼得历害。甚至爱屋及乌，我看见香港一个男影星叫陈小春，长得憨憨的，嘴巴大大厚厚的，和父亲的嘴巴一样，我就感觉特亲切喜欢得要死。</p><p>　　父亲虽然寡言，但很幽默。我有时候也对自己偶尔的才思泉涌、妙语连珠而得意，我深信这不是我后天培养的结果，而是先天的遗传。说到我父亲的幽默，我想举一个例子。也是在我很小的时候，我老有剩饭的毛病，有一次吃饭又是剩那么小半碗，我母亲必须要求我吃完，不许浪费说她一会来检查。我坐在那一脸苦相又不敢把它倒掉，正为难的时候，我父亲悄悄地走过来，冲我摆摆手示意不要吭声，他愉愉帮我把饭倒掉了。我母亲果真来检查了，看见我俩挤眉弄眼的样，立刻觉察到什么似的质问我父亲道：“你帮她把饭倒掉了？”我父亲大声说：“倒掉了”。我当时吓得大气不敢出一声，眼看着我母亲好看的柳叶眉慢慢挑起来了，然后我父亲才不紧不慢的笑嘻嘻的说：“我帮她把饭倒进我肚子里了”。反正母亲当时又不在现场，又没有抓住我们的证据，只好又撇撇好看的小嘴走了，我当时紧张的心情一下子峰回路转不由得开怀大笑。这就是一个孩子最初从父亲那里体会到语言的智慧，说话的技巧，生活的快乐，所以对我来说，这么多年了，还依然记忆犹新。</p><p>　　说到男人要具有幽默感，我想说件更有意思的事情。有一次我和我老公吵架了，他很生气又无处诉说，于是跑到我父亲那里去告状说我怎样蛮不讲理，怎样耍脾气，怎么不温柔不善解人意，他说得理直气壮、声情并茂，动情处湿润了双眼；激愤处唾沫星子乱溅，与此形成的巨大反差是，我父亲只是低着头一声不吭的听着抽着烟。快到中午了，我父亲说：“走，我请你去吃西林春牛肉拉面。”下楼梯的时候，我父亲语重心长的拍了拍我老公的肩膀咧了嘴半开玩笑似的说：“男人要大气，要有幽默感。”你就可见老爷子多心疼闺女了。这事我一直不知道，都过了好长时间，有一次我老公才对我说起这事，他一直很感慨，自己为什么就晕了头找错申诉对象，原以为会在他这里得到安慰和公正，却不料想，老岳父告诉他，作男人要大气、幽默。我就说从那次吵架后，我老公大度多了，凡事也不和我计较了，还变得讨人欢心了，原来如此！我真要在这谢谢我老父亲了。但是这句话已成为我俩经典口头禅，凡是他同学小俩口闹别扭了，我老公经常笑嘻嘻的拍着人家的肩膀，大声说：“男人要大气，要有幽默。”甚至过后我俩又吵架时，我气极败坏的说出这句话，在短暂的几秒钟对视后，俩人噗嗤一笑，不计前嫌了。</p><p>　　话又说回来了，为何这么多年来，我不去读父亲的作品？就是因为大熟悉了。以前家里经常是高朋满座，大家都带着自己的见闻和故事，就像赛歌会似的他讲他的你讲你的，如果谁讲的好另一个还不服气，那叫一个热闹啊。没多久你就可以看见我父亲的小说里，把这些林林总总的故事全部囊括了。你甚至可以从小说主人公的形象塑造，知道这是那天晚上谁谁嗑着瓜子津津乐道他村子某一个人物形象，你也可以一眼看出来，这一段故事情节是从某某讲他自己人生经历幻化而来的。这就好比一盘非常诱人的菜肴，刀工也细致，色香味俱全。但是你就是提不起兴趣，为什么呢，因为你很清楚这道菜从头到尾的制作过程。比如，用萝卜雕刻成的一朵非常鲜艳、生动的花，你看了后感觉它很美，但如果你知道这个萝卜是糠了一节，把它剁掉后，用剩下的刻成的花，并且为了它的色泽鲜艳，还在福尔马林里浸泡过，你还会碰它吗？再比如制作肉汤的时候，炖肉汁的锅是从张大母亲家借来的铝锅，并且年月久了锅底还鼓起两个大包，锅沿被磕了个豁。你还觉得这汤汁有营养吗？再比如说这里头的配菜是由一个叫有才的跛子种的，这人整天不讲卫生脚后跟死皮一层，手指甲缝里黑黝黝一片，这样的菜你吃起来还觉得卫生吗？……总而言之，如果你知道了关于这道菜所有的细节，你还会不会抱着审美的眼光，来很有风度的品评这道菜了呢？这就像欣赏油画一样，距离产生美。如果你站得太近，你就感觉跟涂鸦一样，乱糟糟一片，但是你退后几步再看，立马色彩感，层次感，动态呼应的效果就呈现在你眼前。然后你就可以感受到这个画家他在构图色彩上的匠心独运，他的艺术感染力以及通过作品他所要传达的一些个人思考的形而上的一些东西。</p><p>　　但是终于有一天，我发现我虽然极度狂热的崇拜父亲，但是流于表面和形式，我不能真正走入父亲的内心，了解他的精神世界以及灵魂深处。这种感觉很沮丧，就好比隔着厚厚的橱窗看着你心爱的蛋糕，你虽然能看得见但你碰不到更吃不着。痛定思痛，我觉得我这个“粉皮”应该升级了。所以我作出一个伟大的决定，从此我要研究我父亲了。我跑去把我这个决定告诉他时，我发现他嘴角有一丝不易察觉的微笑，很隐藏可还是被我发现了。我装模作样的说我要从以下几个方面入手来研究，你意如何？他沉思一下，抽着烟说，你说的那几个方面的资料都不太好收集，别说你了，就是我本人这些资料都不全，不好作。你可以从以下某某某几个方面来研究，比如说一、二、三，于是我迅速掏出笔和纸来，把他说的一、二、三全记录下来，还装作很谦虚很恭敬的模样。这就是历史上不多见的，被研究者指导研究者如何写关于研究他的文章这样一个经典场面。所以，我日后要是有幸出什么研究我父亲的书，大家一定要坚信这是我们俩人共同研究的结晶。</p><p>　　小时候，只要看见漂亮女孩子和我父亲多站一会，多说几句话呀，我就很生气，吹胡子瞪眼睛的。现在长大了，觉得这也可以理解，说明我父亲个人魅力大啊，往往这个时候，他人也活泛了，精神头也足了，话也多了，挺好的。我上大学有一年去青岛玩，回来给他送了个钓鱼杆，就和他开玩笑说：“送你鱼杆，一是希望你在事业上年年钓得大鱼，满载而归。二是希望你在生活上碰见愿者上钩的一群美人鱼姐姐，从此快乐幸福的生活。就像童话故事里的结尾一样，从此王子和公主幸福快乐的生活在一起。”我真心希望这些能够养眼养心的美人鱼姐姐能够让父亲保持创作的激情，能够写出更多更好的作品。</p><p>　　我记得第一次去云南回来，给他买了件对衿的民族长衫，希望他能像陈道明那样很儒雅，很闲适的穿着绸衫，坐在那里和很好的朋友一起品诗下棋，喝茶聊天，但是那件长衫他一直没穿过。这几年去他书房，茶是喝着，总是上等的好茶伺候着，也和朋友天南地北的闲聊着，但是常常热热闹闹的打着挖坑牌。有时我就问他，为什么不和朋友聊聊有关文学的事，严肃的事情，他说他一天到晚都在想着写稿子的事，写得他手痛脑瓜子痛，打牌是种放松也只是和相熟的几个朋友玩玩而已。这就让我想起前几年我记得他常有得意之作时，便约几个朋友来家中，念给他们听，每当这时他手舞足蹈得意忘形，说是请大家提意见，其实大有卖弄之意。大家都火眼真金，心知肚明，笑着、骂着一起评论和品咂，气氛那真是相当的好！可现在除了有时候见他和他的几位画家朋友比如邢庆仁呀谈谈画画再者就是和收藏陶陶罐罐的行家有话可说外，更多的是沉默与孤独。正如他在那幅《孤独的走向未来》的画里所说：“尘世并不会轻易让一个人孤独的群居需要一种平衡，嫉妒而引发的绯谤，扼杀，羞辱，打击和迫害，你若不再脱颖将平凡，你若继续走，走，终于使众生无法赶超了，众生就会向你欢呼和崇拜，尊你是神圣。神圣是真正的孤独。”</p><p>　　父亲的《秦腔》小说刚刚出版之际，舆论界吵得沸沸扬扬。我记得有一位中央电视台某个栏目的记者也来采访他，问了他几个跟作品不沾边的一些道听途说的问题，我父亲当时很平静的笑笑说：“等你仔细读一遍，再来找我吧，我还会接受你的采访。”正因为有了这样的感触，所以我觉得他画的《大堂》格外生动，那颗随时引爆的手榴弹绝对会把这个世界照得通亮。我曾看过他的一幅画《海游图》，我想大家也都熟悉。没事时我还常常琢磨他画《海游图》包括《孤独的走向未来》《东坡问鹅图记》《蹭痒痒》这一类作品时，创作意图或动机是什么。其实就我个人的理解，拿《海游图》来说吧就是与庄子一样，一个人逍遥自在，无所羁绊，显示出个人精神世界的宽广，浩瀚，这是任何人都无法侵入、干涉的。这么多年来呕心沥血的作品，常常受到抨击与诋毁，人生压抑与苦闷对他这个老实又本份的人来说，只有精神的自我放逐，才能使他在苦难的现实中，超然物外，水火不侵，才能在短暂的喘息之后，又一次卯足了劲，拼命向前冲。曾经有一次聊天的时候说到他这几年作品频频获奖，但始终于矛盾文学奖无缘，谈到他这几年作品遭遇的时候，大家都忿忿不平七嘴八舌，他却很平静的坐在那里一边给大家倒茶一边说：“哎，这就是一个人的命，命里没有这个你就是争也争不来，咱现在为啥还没有，证明和人家的差距还不小，我现在只有自己努力争取把作品质量提高，到时候上下高低一目了然，别人也就无话可说，该你的别人是拿不走的。”一番话说的在场个个都无语。那一刻我真是打心眼里敬重和感动，他竟然有这样的心胸和气度！他不怨天尤人，更不顾影自恋，只是把所有的注意力投放在自己的作品上，如何写出更多更好的作品，才是他最最关注的。这种豁达、超然物外的风骨，值得我永远学习呀。</p><p>　　当然，生活中的他又是另外一个样子。今年3月份，他去广州开会的前几天，我和少龙，就是我老公商量了一下在他走之前提前给他过个生日，虽然好几次他都在电话里说不过，不过。那晚，我、父亲、志平（我父亲的一个熟人）在长安稼娃吃了饭，随后去他书房楼下的茶馆喝茶。陆续有少龙和志平的爱人，及茶楼老板一起，我们选在一个很雅致、安静的包间内喝茶聊天。其间就聊到室内装饰及盆景的摆放。志平看着摆放在房间一隅的一盆绿色植物，顿时来了兴致，说要和我父亲照张像，以示他们的友谊万古长青。设计的造型是，他们俩人各站在盆景一旁。说话其间，我父亲正在打电话，就被连人带椅平移的拉到盆景旁，放下电话俩人就进入状态神色庄严的合影。照完后，志平很自然的走掉了，悠闲的坐在自己的座位上，嗑着瓜子聊着天。而我父亲还坐在盆景旁边，离桌子还很远。很滑稽，就像被我们一脚踢出局一样，就在这样的状况下，人家还很认真的够着够着伸手抓了一把瓜子，满心欢喜的低着头专心的嗑着。我父亲这人也很有意思，在家从来不嗑瓜子，说把家里搞的脏，但奇怪出来嗑的比谁都凶，就这样足足过去了十分钟，大家都不觉有异，我实在看不过去了对少龙说：“我父亲好可怜啊，被别人当道具用完，随手也不放回原位”。大家听完都乐了，然后我父亲才自己把座位拉回原处，继续嗑瓜子。从这点可见，他丝毫没有架子，也不把自己当回事。但是，他照像却从来不笑，总是挺着肚子很配合的样子，作为模特很有职业道德感。</p><p>　　有一次到他书房，无意中看见父亲的手背有一道抓痕，红红的，我当时还很诧异，是不是磕了，还是撞了，结果他一脸严肃，愤愤不平的说：他昨天和某某打牌，三个人玩看谁跑得快，最后输的人就要把手里的牌折成钱给赢家，结果那人连输好几把，赖帐不给钱，他实在看不过去了，于是就奋不顾身的抢，那人使劲护着不给，说他以前也赖帐，结果在你争我夺中，把手抠烂了，我强忍着笑问他，钱有没有拿到。他一脸得意的模样。在这类生活小事上，他常常可爱的像个小孩子，如果不接触他的人，根本无法想象。</p><p>　　还有一次，宝鸡文理学院陕西文学研究所所长冯肖华教授和孙新峰副教授也在，一行人就是和他商量去宝鸡文理学院作报告的事。说话到中午了，父亲说请大家吃饭，我们就跟着他到了对面小巷子里，是一片城中村，窄窄的街道两旁都是卖吃喝的。没多远就看见一家小吃店的老板热情的招呼，说“贾老师来吃饭了！”我父亲就点着头，笑着给人家散烟，抬头一看，这家老板是买砂锅的。我就想起上次到我父亲这，他要请我吃饭，我想吃螃蟹，他说螃蟹有什么好吃的，走，父亲带你去一家店，可好吃了。然后，我父亲就带我来的这家店，确实口味不错，且干净实惠，他说这一阵子他总来，快十几天了，顿顿中午都吃这个，我还在暗暗寻思他连着吃这么多天砂锅也不厌烦，就见他站起身说：我到隔壁饺子馆打个招呼去，那个老板也是咱老乡。一会功夫，只见他进来轻松的说：我已经给那老板说了，晚上他作搅团我过来吃，我当时就感慨的说：你怎么对这这么熟悉！他随口说：方便啊。今天他带我们来的就是这家饺子店，从他和老板打招呼的态度，就可以看出他们已经很熟络了，但是老板依然很热情地让跑堂的把桌椅擦干净，又亲自倒茶，让烟，洗了手就开始包饺子下饺子。饺子馅有四种：芹菜肉，萝卜肉，韭菜肉，和青菜鸡蛋，个个装在小盆里又干净切得又细碎，引诱的你不吃都不行，大家说着笑着吃得飞快。我父亲不无得意的说，他有段时间也是经常来吃，兴致来了还自己动手包，甚至别的客人都吃过他亲手包的饺子。你说这事，今天我要是不给大家说，各位是绝对想像不到的，你要是去他书房次数多了，还经常可以看到他自己做的饭，都是些没明堂的饭，比如，油茶里头，他给自个下的面条、饺子，你别说吃起来还蛮好吃的呢。他经常自诩他的生活和沈从文一样，每天早早来到书房工作写稿，中午要么吃从家里带来的饭，要么自已给自己做，一天忙忙碌碌，充实又踏实。他绝不像有些成了名的腕啊，家啊，把自己端的就放不下了，他照样是该干啥干啥，照样到城中村去吃饭，照样给小吃店老板散烟，谝闲传，照样肚子饿时下厨房给自己做饭，这样一个本真自在的男人，真是可亲可爱。</p><p>　　大家都知道，我是去年上的陕西师范大学研究生。当时入学考完试，有一个多月了，我心里没底，不知道发挥的怎么样，能不能考上，分数会不会上线？我就想让我父亲给师大研究生处打一个电话，问问怎么样，看有没有希望。我父亲可好直接顺水推舟地说，我和人家不熟，有些问题具体我也不清楚，你先自己打电话问，不行了我再打电话。就把我撂在一边了。又过了两个多月，学校还不见公布成绩，我有些焦急了，想让他问问虚实，谁知逼他紧了，他反而很不耐烦地数落我，说我这么大的人了，什么事情都要他操心，他还是不打，嫌我万一考的不好，给他丢人了。没过几天分数网上公布了，我考得还不错，超出去年分数线很多，但今年分数线迟迟没有公布，我又提心吊胆，坐卧不宁了。这会他又忙着出差开会，还是让我自己主动和人家联系，但是人家师大回复的口气，没棱两可，让人更琢磨不透，我就生气地抱怨他，女儿考研也是一件大事，非但不关心、支持、帮助反而像没事人一样不闻不问。实话实说，有些时候家里人就是想借他的名气，走走后门，但人家总是摆出一幅事务缠身，爱莫能助，顺水推舟，自己解决的姿态，真是让人又气又恨。全然不像有些家长对待子女的态度。老天保佑，再加上我先前的努力复习，终于在网上看到包括我在内的录取通知单。颀喜之余给他打电话，只听他在电话那头嘿嘿直笑，挂断电话后，又很快收到他的短消息，上面写着：祝贺！热烈祝贺！！！从很多事情上，你都可以看出他其实是一个很怕被人麻烦，同时又很怕麻烦别人的人，通常越是自己亲近的人，他越怕求人办事，因为他脸皮薄，老是张不开嘴。反而，别人的事他总是尽心尽力。因此，这次考研，看到他这么个态度，我就已经作好打算，如果今年考不上，也不难为他开口求人，自己好好复习再考一年，但是有一件事，却让我总也忘不了。</p><p>　　那是三年前的一个冬天，11月底左右，忽然老家传来噩耗，说我外婆快不行了，当天，西安的大姨小姨就先回老家了，我母亲单位出差第二天下午才回来。其实那时，外婆已经去世了，但她还不知道，因为怕母亲接受起来太忽然，我和老公直到晚上的时候才慢慢告诉她，没想到母亲一听我外婆的事，立刻泪流满脸，失声痛哭，情绪激动说要立刻回老家看老母亲最后一眼。当时正值寒冬，而回老家的路，全是蜿蜓曲折的山路，伸手不见五指，路面又结着厚厚的冰霜，很是危险。借了好几辆车，司机路不熟都不敢开夜路，本来为了安全起见我还想劝我母亲明早再走，可看到她悲痛欲绝的模样我也不知如何是好了。这时，我老公就小声对我说，不行的话，你给咱父亲打个电话，看能不能弄辆车，他不是经常回老家吗，眼下也只有这个办法了。我于是就心急火燎的给父亲打了电话，说明了事情的紧迫性和重要性，我父亲二话没说，立刻答应弄辆车过来，并且说他也要一起回去。听他这么一说，我的心立刻踏实了许多。半小时之后，父亲和司机在楼下等着我们，上车的时候我才发现这并不是他单位的车，而是他一个朋友的私家车。在过后的一次闲聊中，偶尔提及这件事，他说公家的车，他很少用。除非开会用一下，自己的事很少向单位开口，麻烦也划不来让人家在背后说三道四，所以有什么事情就自己挡车，方便。坐熟人的车吧，因为熟络彼此不太计较，坐了也就坐了，顶多欠个人情，也是自己人。我说那你总麻烦别人也不好吧，他愤愤地说，他的车有什么坐不成的，四个轱辘都是我赞助的。我不解的问，此话怎讲？随后他又笑嘻嘻的说，还不是这些年你父亲我挖抗输给他的，你瞧他这人还公私分明的不行！话扯远了，说到他借了辆车，和我们一起回老家，我想大家又犯嘀咕了，这我父亲和我母亲离婚好些年了，这是大家都知道的事，怎么如今俩人还有往来，关系还不一般呢？其实，当年虽然他们因为情感的纠葛离婚了，但这么多年因为有孩子的关系，俩人因我的学习，成长，生活，工作还时常保持友好的联系，并不像有些家庭夫妻离婚后，反目成仇，老死不相往来，并且隔绝另一方和孩子的见面。他们对我很民主，又时常会为对方考虑，再加上他们本来又是同乡同村，很多人很多事都相互了解认识，必然在情感上还有着千丝万缕的联系，这也是这么多年来，我作为一个孩子，一个旁观者很感慨的一件事，真的很难得。所以我父亲决定要和我们一起回去的时候，我心里说不上来的踏实，我冒昧的想，我母亲当时可能也有这么一点想法吧，所以她也没有觉得我父亲此次回去的不合适宜吧，也许当时也顾不上想吧。总之，在艰难万险的几小时后，我们还算顺利的到老家了。自己的女儿，在老母亲最后的弥留之际，也没能看上一眼，心里的那种悲痛、内疚，那种无法弥补的遗憾，使得我母亲跪在外婆的遗体旁久久不肯起身，而我父亲，更像是回到自己家，在众乡亲诧异的目光中，很自然的和大家嘘寒问暖后，让我妗子给他拿一个孝帽，戴在头上，和我大舅他们一起坐在火盆旁，开始给我外婆守灵。我们老家的乡俗就是老人死了后，给穿好衣服停放在厅堂中央，孝子们就开始烧纸上香，供牌位。等三天后，再举行大的入睑仪式，才把老人安放在棺材中，抬到祖坟入土为安。这三天，孝子孝孙们不能睡觉，要为老人守灵，其他人大可不必整夜守灵，可我父亲，一进屋子先给我外婆烧了纸，磕了头，并且在详细端详老人后，还把她的手摸了摸，转头说：“手还是软的，说明她外婆走了后，会上天的”。关于他的这套理论是这样的：如果人在断气数小时之后，脚、腿摸上去还是软的，说明下辈子投胎牲畜；如果肚子、身体的中间部分是软的，说明下辈子还是人；如果上半身、头、手是软的，证明这人积德行善，下辈子会上天的，父亲的这番话，安慰了在场所有的人。大家都默想着外婆的好了。你知道，冬天的农村，院门大敞，里外一个温度，坐久了，寒气逼人，再别说深夜了，父亲在城里有暖气，暖和惯了，穿得少，再加上人到中年了，冻得他坐在火盆旁还直打哆嗦，流清鼻，大舅见状，忙把自己的一个皮大衣给父亲披在身上，才好些了。但是你要是看到我父亲当时这身打扮，一定想笑，头顶白帽子，身披羊皮袄，加上他地道的农民长相，真像一个放羊的羊倌。我半夜实在是困得不行，什么时候睡着都不知道了，等第二天一早睡来，已经不见他了，我母亲才说，父亲守了一夜灵，天一亮就走了，说是单位还有事。那一刻我心里真是说不上来的温暖。并且后来我才知道守夜的那晚他主动提出要给我大舅的大儿子解决工作调动的事。我可见过太多别人为了升官发财求他办事时的那个艰难样。这件事说明什么呢，首先，肯定是当年我外婆对我父亲特别好，我相信人心是可以换人心的。否则我父亲不会这样作的。另一方面也说明，我父亲是一个有良心的人，他心里记着别人对他的好，知道感恩和回报。这对家庭来说，肯定是一个好儿子，好丈夫，好父亲，对社会来说，必然是一个有责任感，有良知的好作家，这一点对一个作家来说太重要太可贵了。我为这世间的真情所感动，更为这样的一个好人所打动！因此我时常感慨，到底是因为他早期作品中比如《腊月·正月》《满月儿》《鸡窝洼人家》还有商州系列的散文中表现出的人情人性美感染了这位作家，使得他的生活也呈现出人性的光辉呢，还是因为他这样一位善良纯朴的、重情重义的汉子身上散发的那种气息使得他笔下的世界与人物也弥漫着自然、清新、醇香的味道？我直到现在也是迷惑不解。</p><p>　　也许这多年来，我父亲他从来没有手把手的教我做过任何一件事，也没有像其他家长一样不厌其烦的给自己的孩子传授过为人处事的道理。因为他总是太忙了，忙着写作，忙着应酬，忙着开会，忙着聊天打牌，甚至忙着写字挣钱，但是你从一个知天命的长者身上，学到了什么叫作言传身教，学到了什么叫作刻苦勤奋，什么叫作自强不息，什么叫作荣辱不惊，什么叫作大智大勇，什么叫作大辩不言，什么叫作朴实无华。我有时就觉得老天爷还是蛮公平的，因为自己的父亲比较特殊经常不在身边，不能陪自己学习，成长少了不少人间的天伦之乐，正因为这方面少了，孩子必然很关注，自己的父亲整天都在忙什么呀，写什么呀，就产生了很大的好奇心和讨究的意识，无形之中，就潜移默化，或是很自觉的学习和吸取一些有用的东西，因为她格外重视、用心了，自然收获的东西就很多甚至是受用无穷。反而，是那些揪心不下整天在自己孩子耳边唠唠叨叨的家长们，孩子听得多了，也就有了逆反心理，很多人生的道理，作人的道理他就不以为然了，忽视掉了，淡漠掉了，我行我素了。这样的孩子反而从家长身上学习到的东西少了。我作为贾平凹的女儿自有风光得意的时候，也碰上很多恼人失意的事，但这并不防碍我极度狂热地仰慕、崇拜他。如果有下辈子的话，我还要作他最宠爱的女儿！</p><p>　　（本文是作者2007年6月4日在“宝鸡文理学院贾平凹创作暨学术研究报告会”上的讲话，系陕西省政府和省教育厅贾平凹专题研究科研项目系列成果之一。）</p></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/code-examples/</id>
      <title type="text">Firefly 代码块示例</title>
      <published>1970-01-03T00:00:00.000Z</published>
      <updated>1970-01-03T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/code-examples/"/>
      <summary type="text">在Firefly中使用表达性代码的代码块在 Markdown 中的外观。</summary>
      <content type="html"><![CDATA[<p>在这里，我们将探索如何使用 <a href="https://expressive-code.com/" target="_blank">Expressive Code</a> 展示代码块。提供的示例基于官方文档，您可以参考以获取更多详细信息。</p>
<section><h2>表达性代码<a href="#表达性代码"><span>#</span></a></h2><section><h3>语法高亮<a href="#语法高亮"><span>#</span></a></h3><p><a href="https://expressive-code.com/key-features/syntax-highlighting/" target="_blank">语法高亮</a></p><section><h4>常规语法高亮<a href="#常规语法高亮"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span><span>console</span><span>.</span></span><span>log</span><span>(</span><span>'此代码有语法高亮!'</span><span>)</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>渲染 ANSI 转义序列<a href="#渲染-ansi-转义序列"><span>#</span></a></h4><div><div><div><figure><figcaption><span></span><span>Terminal window</span><span>展开</span><span>收起</span></figcaption><pre><code><div><div><div>1</div></div><div><span>Standard ANSI colors:</span></div></div><div><div><div>2</div></div><div><span>- Dimmed:     </span><span> Black </span><span> Red </span><span> Green </span><span> Yellow </span><span> Blue </span><span> Magenta </span><span> Cyan </span><span> White </span></div></div><div><div><div>3</div></div><div><span>- Foreground: </span><span> Black </span><span> Red </span><span> Green </span><span> Yellow </span><span> Blue </span><span> Magenta </span><span> Cyan </span><span> White </span></div></div><div><div><div>4</div></div><div><span>- Background: </span><span> Black </span><span> Red </span><span> Green </span><span> Yellow </span><span> Blue </span><span> Magenta </span><span> Cyan </span><span> White </span></div></div><div><div><div>5</div></div><div><span>- Reversed:   </span><span> Black </span><span> Red </span><span> Green </span><span> Yellow </span><span> Blue </span><span> Magenta </span><span> Cyan </span><span> White </span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>8-bit colors (showing colors 160-171 as an example):</span></div></div><div><div><div>8</div></div><div><span>- Dimmed:     </span><span> 160 </span><span> 161 </span><span> 162 </span><span> 163 </span><span> 164 </span><span> 165 </span><span> 166 </span><span> 167 </span><span> 168 </span><span> 169 </span><span> 170 </span><span> 171 </span></div></div><div><div><div>9</div></div><div><span>- Foreground: </span><span> 160 </span><span> 161 </span><span> 162 </span><span> 163 </span><span> 164 </span><span> 165 </span><span> 166 </span><span> 167 </span><span> 168 </span><span> 169 </span><span> 170 </span><span> 171 </span></div></div><div><div><div>10</div></div><div><span>- Background: </span><span> 160 </span><span> 161 </span><span> 162 </span><span> 163 </span><span> 164 </span><span> 165 </span><span> 166 </span><span> 167 </span><span> 168 </span><span> 169 </span><span> 170 </span><span> 171 </span></div></div><div><div><div>11</div></div><div><span>- Reversed:   </span><span> 160 </span><span> 161 </span><span> 162 </span><span> 163 </span><span> 164 </span><span> 165 </span><span> 166 </span><span> 167 </span><span> 168 </span><span> 169 </span><span> 170 </span><span> 171 </span></div></div><div><div><div>12</div></div><div>
</div></div><div><div><div>13</div></div><div><span>24-bit colors (full RGB):</span></div></div><div><div><div>14</div></div><div><span>- Dimmed:     </span><span> ForestGreen - RGB(34,139,34) </span><span> RebeccaPurple - RGB(102,51,153) </span></div></div><div><div><div>15</div></div><div><span>- Foreground: </span><span> ForestGreen - RGB(34,139,34) </span><span> RebeccaPurple - RGB(102,51,153) </span></div></div><div><div><div>16</div></div><div><span>- Background: </span><span> ForestGreen - RGB(34,139,34) </span><span> RebeccaPurple - RGB(102,51,153) </span></div></div><div><div><div>17</div></div><div><span>- Reversed:   </span><span> ForestGreen - RGB(34,139,34) </span><span> RebeccaPurple - RGB(102,51,153) </span></div></div><div><div><div>18</div></div><div>
</div></div><div><div><div>19</div></div><div><span>Font styles:</span></div></div><div><div><div>20</div></div><div><span>- Default</span></div></div><div><div><div>21</div></div><div><span>- </span><span>Bold</span></div></div><div><div><div>22</div></div><div><span>- </span><span>Dimmed</span></div></div><div><div><div>23</div></div><div><span>- </span><span>Italic</span></div></div><div><div><div>24</div></div><div><span>- </span><span>Underline</span></div></div><div><div><div>25</div></div><div><span>- </span><span>Reversed</span></div></div><div><div><div>26</div></div><div><span>- </span><span>Strikethrough</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section></section><section><h3>编辑器和终端框架<a href="#编辑器和终端框架"><span>#</span></a></h3><p><a href="https://expressive-code.com/key-features/frames/" target="_blank">编辑器和终端框架</a></p><section><h4>代码编辑器框架<a href="#代码编辑器框架"><span>#</span></a></h4><div><figure><figcaption><span>my-test-file.js</span></figcaption><pre><code><div><div><div>1</div></div><div><span><span>console</span><span>.</span></span><span>log</span><span>(</span><span>'标题属性示例'</span><span>)</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /><div><figure><figcaption><span>src/content/index.html</span></figcaption><pre><code><div><div><div>1</div></div><div><span>&lt;</span><span>div</span><span>&gt;文件名注释示例&lt;/</span><span>div</span><span>&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>终端框架<a href="#终端框架"><span>#</span></a></h4><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>echo</span><span> </span><span>"此终端框架没有标题"</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /><div><figure><figcaption><span>PowerShell 终端示例</span></figcaption><pre><code><div><div><div>1</div></div><div><span>Write-Output</span><span> </span><span>"这个有标题!"</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>覆盖框架类型<a href="#覆盖框架类型"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>echo</span><span> </span><span>"看，没有框架!"</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /><div><figure><figcaption><span>PowerShell Profile.ps1</span></figcaption><pre><code><div><div><div>1</div></div><div><span># 如果不覆盖，这将是一个终端框架</span></div></div><div><div><div>2</div></div><div><span>function</span><span> </span><span>Watch-Tail</span><span> { </span><span>Get-Content</span><span><span> </span><span>-</span><span>Tail </span></span><span>20</span><span><span> </span><span>-</span><span>Wait $args }</span></span></div></div><div><div><div>3</div></div><div><span>New-Alias</span><span> tail </span><span>Watch-Tail</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section><section><h3>文本和行标记<a href="#文本和行标记"><span>#</span></a></h3><p><a href="https://expressive-code.com/key-features/text-markers/" target="_blank">文本和行标记</a></p><section><h4>标记整行和行范围<a href="#标记整行和行范围"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 第1行 - 通过行号定位</span></div></div><div><div><div>2</div></div><div><span>// 第2行</span></div></div><div><div><div>3</div></div><div><span>// 第3行</span></div></div><div><div><div>4</div></div><div><span>// 第4行 - 通过行号定位</span></div></div><div><div><div>5</div></div><div><span>// 第5行</span></div></div><div><div><div>6</div></div><div><span>// 第6行</span></div></div><div><div><div>7</div></div><div><span>// 第7行 - 通过范围 "7-8" 定位</span></div></div><div><div><div>8</div></div><div><span>// 第8行 - 通过范围 "7-8" 定位</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>选择行标记类型 (mark, ins, del)<a href="#选择行标记类型-mark-ins-del"><span>#</span></a></h4><div><figure><figcaption><span>line-markers.js</span></figcaption><pre><code><div><div><div>1</div></div><div><span>function</span><span> </span><span>demo</span><span>() {</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>console</span><span>.</span><span>log</span><span>(</span><span>'此行标记为已删除'</span><span>)</span></div></div><div><div><div>3</div></div><div><span>  </span><span>// 此行和下一行标记为已插入</span></div></div><div><div><div>4</div></div><div><span><span>  </span></span><span>console</span><span>.</span><span>log</span><span>(</span><span>'这是第二个插入行'</span><span>)</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>  </span><span>return</span><span> </span><span>'此行使用中性默认标记类型'</span></div></div><div><div><div>7</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>为行标记添加标签<a href="#为行标记添加标签"><span>#</span></a></h4><div><figure><figcaption><span>labeled-line-markers.jsx</span></figcaption><pre><code><div><div><div>1</div></div><div><span>&lt;</span><span>button</span></div></div><div><div><div>2</div></div><div><span>  </span><span>role</span><span>=</span><span>"button"</span></div></div><div><div><div>3</div></div><div><span><span>  </span></span><span>{</span><span>...</span><span>props</span><span>}</span></div></div><div><div><div>4</div></div><div><span>  </span><span>value</span><span>=</span><span>{</span><span>value</span><span>}</span></div></div><div><div><div>5</div></div><div><span>  </span><span>className</span><span><span>=</span><span>{</span><span>buttonClassName</span><span>}</span></span></div></div><div><div><div>6</div></div><div><span>  </span><span>disabled</span><span>=</span><span>{</span><span>disabled</span><span>}</span></div></div><div><div><div>7</div></div><div><span>  </span><span>active</span><span>=</span><span>{</span><span>active</span><span>}</span></div></div><div><div><div>8</div></div><div><span>&gt;</span></div></div><div><div><div>9</div></div><div><span><span>  </span></span><span>{</span><span>children</span><span> </span><span>&amp;&amp;</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>!</span><span>active</span><span> </span><span>&amp;&amp;</span></div></div><div><div><div>11</div></div><div><span><span><span>    </span></span><span>(</span></span><span>typeof</span><span> </span><span>children</span><span> </span><span>===</span><span> </span><span>'string'</span><span> </span><span>?</span><span> &lt;</span><span>span</span><span>&gt;</span><span>{</span><span>children</span><span>}</span><span>&lt;/</span><span>span</span><span>&gt; </span><span>:</span><span> </span><span>children</span><span>)</span><span>}</span></div></div><div><div><div>12</div></div><div><span>&lt;/</span><span>button</span><span>&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>在单独行上添加长标签<a href="#在单独行上添加长标签"><span>#</span></a></h4><div><div><div><figure><figcaption><span>labeled-line-markers.jsx</span><span>展开</span><span>收起</span></figcaption><pre><code><div><div><div>1</div></div><div><span>&lt;</span><span>button</span></div></div><div><div><div>2</div></div><div><span>  </span><span>role</span><span>=</span><span>"button"</span></div></div><div><div><div>3</div></div><div><span><span>  </span></span><span>{</span><span>...</span><span>props</span><span>}</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>  </span><span>value</span><span>=</span><span>{</span><span>value</span><span>}</span></div></div><div><div><div>6</div></div><div><span>  </span><span>className</span><span><span>=</span><span>{</span><span>buttonClassName</span><span>}</span></span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span>  </span><span>disabled</span><span>=</span><span>{</span><span>disabled</span><span>}</span></div></div><div><div><div>9</div></div><div><span>  </span><span>active</span><span>=</span><span>{</span><span>active</span><span>}</span></div></div><div><div><div>10</div></div><div><span>&gt;</span></div></div><div><div><div>11</div></div><div>
</div></div><div><div><div>12</div></div><div><span><span>  </span></span><span>{</span><span>children</span><span> </span><span>&amp;&amp;</span></div></div><div><div><div>13</div></div><div><span><span>    </span></span><span>!</span><span>active</span><span> </span><span>&amp;&amp;</span></div></div><div><div><div>14</div></div><div><span><span><span>    </span></span><span>(</span></span><span>typeof</span><span> </span><span>children</span><span> </span><span>===</span><span> </span><span>'string'</span><span> </span><span>?</span><span> &lt;</span><span>span</span><span>&gt;</span><span>{</span><span>children</span><span>}</span><span>&lt;/</span><span>span</span><span>&gt; </span><span>:</span><span> </span><span>children</span><span>)</span><span>}</span></div></div><div><div><div>15</div></div><div><span>&lt;/</span><span>button</span><span>&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section><section><h4>使用类似 diff 的语法<a href="#使用类似-diff-的语法"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>此行将标记为已插入</span></div></div><div><div><div>2</div></div><div><span>此行将标记为已删除</span></div></div><div><div><div>3</div></div><div><span>这是常规行</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>--- a/README.md</span></div></div><div><div><div>2</div></div><div><span>+++ b/README.md</span></div></div><div><div><div>3</div></div><div><span>@@ -1,3 +1,4 @@</span></div></div><div><div><div>4</div></div><div><span>+this is an actual diff file</span></div></div><div><div><div>5</div></div><div><span>-all contents will remain unmodified</span></div></div><div><div><div>6</div></div><div><span><span> </span></span><span>no whitespace will be removed either</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>结合语法高亮和类似 diff 的语法<a href="#结合语法高亮和类似-diff-的语法"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>function</span><span> </span><span>thisIsJavaScript</span><span>() {</span></div></div><div><div><div>2</div></div><div><span>  </span><span>// 整个块都会以 JavaScript 高亮显示，</span></div></div><div><div><div>3</div></div><div><span>  </span><span>// 并且我们仍然可以为其添加 diff 标记！</span></div></div><div><div><div>4</div></div><div><span><span>  </span></span><span>console</span><span>.</span><span>log</span><span>(</span><span>'要删除的旧代码'</span><span>)</span></div></div><div><div><div>5</div></div><div><span><span>  </span></span><span>console</span><span>.</span><span>log</span><span>(</span><span>'新的闪亮代码！'</span><span>)</span></div></div><div><div><div>6</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>标记行内的单独文本<a href="#标记行内的单独文本"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>function</span><span> </span><span>demo</span><span>() {</span></div></div><div><div><div>2</div></div><div><span>  </span><span>// 标记行内的任何给定文本</span></div></div><div><div><div>3</div></div><div><span>  </span><span>return</span><span> </span><span>'支持给定文本的多个匹配项'</span><span>;</span></div></div><div><div><div>4</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>正则表达式<a href="#正则表达式"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span><span>console</span><span>.</span></span><span>log</span><span>(</span><span>'单词 </span><mark><span>yes</span></mark><span> 和 </span><mark><span>yep</span></mark><span> 将被标记。'</span><span>)</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>转义正斜杠<a href="#转义正斜杠"><span>#</span></a></h4><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>echo</span><span> </span><span>"Test"</span><span> &gt; </span><mark><span>/home/</span></mark><span>test.txt</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>选择内联标记类型 (mark, ins, del)<a href="#选择内联标记类型-mark-ins-del"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>function</span><span> </span><span>demo</span><span>() {</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>console</span><span>.</span><span>log</span><span>(</span><span>'这些是插入和删除的标记类型'</span><span>);</span></div></div><div><div><div>3</div></div><div><span>  </span><span>// return 语句使用默认标记类型</span></div></div><div><div><div>4</div></div><div><span>  </span><mark><span>return</span><span> </span><span>true</span><span>;</span></mark></div></div><div><div><div>5</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section><section><h3>自动换行<a href="#自动换行"><span>#</span></a></h3><p><a href="https://expressive-code.com/key-features/word-wrap/" target="_blank">自动换行</a></p><section><h4>为每个块配置自动换行<a href="#为每个块配置自动换行"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 启用换行的示例</span></div></div><div><div><div>2</div></div><div><span>function</span><span> </span><span>getLongString</span><span>() {</span></div></div><div><div><div>3</div></div><div><span>  </span><span>return</span><span> </span><span>'这是一个非常长的字符串，除非容器极宽，否则很可能无法适应可用空间'</span></div></div><div><div><div>4</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// wrap=false 的示例</span></div></div><div><div><div>2</div></div><div><span>function</span><span> </span><span>getLongString</span><span>() {</span></div></div><div><div><div>3</div></div><div><span>  </span><span>return</span><span> </span><span>'这是一个非常长的字符串，除非容器极宽，否则很可能无法适应可用空间'</span></div></div><div><div><div>4</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>配置换行的缩进<a href="#配置换行的缩进"><span>#</span></a></h4><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// preserveIndent 示例（默认启用）</span></div></div><div><div><div>2</div></div><div><span>function</span><span> </span><span>getLongString</span><span>() {</span></div></div><div><div><div>3</div></div><div><span>  </span><span>return</span><span> </span><span>'这是一个非常长的字符串，除非容器极宽，否则很可能无法适应可用空间'</span></div></div><div><div><div>4</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// preserveIndent=false 的示例</span></div></div><div><div><div>2</div></div><div><span>function</span><span> </span><span>getLongString</span><span>() {</span></div></div><div><div><div>3</div></div><div><span>  </span><span>return</span><span> </span><span>'这是一个非常长的字符串，除非容器极宽，否则很可能无法适应可用空间'</span></div></div><div><div><div>4</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section></section>
<section><h2>可折叠部分<a href="#可折叠部分"><span>#</span></a></h2><p><a href="https://expressive-code.com/plugins/collapsible-sections/" target="_blank">可折叠部分</a></p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div></div></div><div><span></span><span></span><span>5 collapsed lines</span></div></div><div><div><div>1</div></div><div><span>// 所有这些样板设置代码将被折叠</span></div></div><div><div><div>2</div></div><div><span>import</span><span> { </span><span>someBoilerplateEngine</span><span> } </span><span>from</span><span> </span><span>'@example/some-boilerplate'</span></div></div><div><div><div>3</div></div><div><span>import</span><span> { </span><span>evenMoreBoilerplate</span><span> } </span><span>from</span><span> </span><span>'@example/even-more-boilerplate'</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>const</span><span> </span><span>engine</span><span> </span><span>=</span><span> </span><span>someBoilerplateEngine</span><span>(</span><span>evenMoreBoilerplate</span><span>())</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>// 这部分代码默认可见</span></div></div><div><div><div>8</div></div><div><span><span>engine</span><span>.</span></span><span>doSomething</span><span>(</span><span>1</span><span>, </span><span>2</span><span>, </span><span>3</span><span><span>, </span><span>calcFn</span><span>)</span></span></div></div><div><div><div>9</div></div><div>
</div></div><div><div><div>10</div></div><div><span>function</span><span> </span><span>calcFn</span><span>() {</span></div></div><div><div><div>11</div></div><div><span>  </span><span>// 您可以有多个折叠部分</span></div></div><div><div><div></div></div><div><span></span><span></span><span>3 collapsed lines</span></div></div><div><div><div>12</div></div><div><span>  </span><span>const</span><span> </span><span>a</span><span> </span><span>=</span><span> </span><span>1</span></div></div><div><div><div>13</div></div><div><span>  </span><span>const</span><span> </span><span>b</span><span> </span><span>=</span><span> </span><span>2</span></div></div><div><div><div>14</div></div><div><span>  </span><span>const</span><span> </span><span>c</span><span> </span><span>=</span><span><span> </span><span>a</span><span> </span></span><span>+</span><span><span> </span><span>b</span></span></div></div><div><div><div>15</div></div><div>
</div></div><div><div><div>16</div></div><div><span>  </span><span>// 这将保持可见</span></div></div><div><div><div>17</div></div><div><span><span>  </span></span><span>console</span><span>.</span><span>log</span><span>(</span><span>`计算结果: </span><span>${</span><span>a</span><span>}</span><span> + </span><span>${</span><span>b</span><span>}</span><span> = </span><span>${</span><span>c</span><span>}</span><span>`</span><span>)</span></div></div><div><div><div>18</div></div><div><span>  </span><span>return</span><span><span> </span><span>c</span></span></div></div><div><div><div>19</div></div><div><span>}</span></div></div><div><div><div>20</div></div><div>
</div></div><div><div><div></div></div><div><span></span><span></span><span>4 collapsed lines</span></div></div><div><div><div>21</div></div><div><span>// 直到块末尾的所有代码将再次被折叠</span></div></div><div><div><div>22</div></div><div><span><span>engine</span><span>.</span></span><span>closeConnection</span><span>()</span></div></div><div><div><div>23</div></div><div><span><span>engine</span><span>.</span></span><span>freeMemory</span><span>()</span></div></div><div><div><div>24</div></div><div><span><span>engine</span><span>.</span></span><span>shutdown</span><span>({ </span><span>reason</span><span>:</span><span> </span><span>'示例样板代码结束'</span><span> })</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section>
<section><h2>行号<a href="#行号"><span>#</span></a></h2><p><a href="https://expressive-code.com/plugins/line-numbers/" target="_blank">行号</a></p><section><h3>为每个块显示行号<a href="#为每个块显示行号"><span>#</span></a></h3><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 此代码块将显示行号</span></div></div><div><div><div>2</div></div><div><span><span>console</span><span>.</span></span><span>log</span><span>(</span><span>'来自第2行的问候!'</span><span>)</span></div></div><div><div><div>3</div></div><div><span><span>console</span><span>.</span></span><span>log</span><span>(</span><span>'我在第3行'</span><span>)</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /><div><figure><figcaption></figcaption><pre><code><div><div><span>// 此块禁用行号</span></div></div><div><div><span><span>console</span><span>.</span></span><span>log</span><span>(</span><span>'你好?'</span><span>)</span></div></div><div><div><span><span>console</span><span>.</span></span><span>log</span><span>(</span><span>'抱歉，你知道我在第几行吗?'</span><span>)</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>更改起始行号<a href="#更改起始行号"><span>#</span></a></h3><div><figure><figcaption></figcaption><pre><code><div><div><div>5</div></div><div><span><span>console</span><span>.</span></span><span>log</span><span>(</span><span>'来自第5行的问候!'</span><span>)</span></div></div><div><div><div>6</div></div><div><span><span>console</span><span>.</span></span><span>log</span><span>(</span><span>'我在第6行'</span><span>)</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section></section>
<section><h2>Tab 代码块<a href="#tab-代码块"><span>#</span></a></h2><p>由 <a href="https://github.com/ITZSHOAIB/rehype-code-group" target="_blank">rehype-code-group</a> 提供，语法与 <a href="https://vitepress.dev/guide/markdown#code-groups" target="_blank">VitePress 代码组</a> 一致：用 <code>::: code-group labels=[...]</code> 包裹多个代码块，即可合并成一组标签页。</p><div><div><div></div><div>Note</div></div><div><p><code>labels=[...]</code> 中的标签按顺序对应组内的代码块，用英文逗号分隔；<code>:::</code> 与 <code>code-group</code> 之间的空格不能省略。</p></div></div><section><h3>基本用法<a href="#基本用法"><span>#</span></a></h3><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>::: code-group labels=[code.js, code.py, code.html]</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>```js</span></div></div><div><div><div>4</div></div><div><span>export</span><span> </span><span>function</span><span> </span><span>greet</span><span><span>(</span><span>name</span><span>) {</span></span></div></div><div><div><div>5</div></div><div><span>  </span><span>return</span><span> </span><span>`Hello, </span><span>${</span><span>name</span><span>}</span><span>!`</span><span>;</span></div></div><div><div><div>6</div></div><div><span>}</span></div></div><div><div><div>7</div></div><div><span>```</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>```py</span></div></div><div><div><div>10</div></div><div><span>def</span><span> </span><span>greet</span><span><span>(</span><span>name</span><span>):</span></span></div></div><div><div><div>11</div></div><div><span>    </span><span>return</span><span> </span><span>f</span><span>"Hello, </span><span>{</span><span>name</span><span>}</span><span>!"</span></div></div><div><div><div>12</div></div><div><span>```</span></div></div><div><div><div>13</div></div><div>
</div></div><div><div><div>14</div></div><div><span>```html</span></div></div><div><div><div>15</div></div><div><span>&lt;</span><span>p</span><span>&gt;Hello, world!&lt;/</span><span>p</span><span>&gt;</span></div></div><div><div><div>16</div></div><div><span>```</span></div></div><div><div><div>17</div></div><div>
</div></div><div><div><div>18</div></div><div><span>:::</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p>渲染效果：</p><div><div>code.jscode.pycode.html</div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>export</span><span> </span><span>function</span><span> </span><span>greet</span><span><span>(</span><span>name</span><span>) {</span></span></div></div><div><div><div>2</div></div><div><span>  </span><span>return</span><span> </span><span>`Hello, </span><span>${</span><span>name</span><span>}</span><span>!`</span><span>;</span></div></div><div><div><div>3</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>def</span><span> </span><span>greet</span><span>(</span><span>name</span><span>):</span></div></div><div><div><div>2</div></div><div><span>    </span><span>return</span><span> </span><span>f</span><span>"Hello, </span><span>{</span><span>name</span><span>}</span><span>!"</span></div></div></code></pre><div><div></div><div></div></div></figure></div></div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&lt;</span><span>p</span><span>&gt;Hello, world!&lt;/</span><span>p</span><span>&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div></div></div></section><section><h3>标签中使用 Emoji<a href="#标签中使用-emoji"><span>#</span></a></h3><p>标签支持 <a href="https://github.com/omnidan/node-emoji#readme" target="_blank">emoji 短代码</a>，构建时会自动转换成 emoji：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>::: code-group labels=[:package: npm, :package: pnpm, :yarn: yarn]</span></div></div></code></pre><div><div></div><div></div></div></figure></div><div><div>📦 npm📦 pnpm🧶 yarn</div><div><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>npm</span><span> </span><span>create</span><span> </span><span>astro@latest</span></div></div></code></pre><div><div></div><div></div></div></figure></div></div><div><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>pnpm</span><span> </span><span>create</span><span> </span><span>astro@latest</span></div></div></code></pre><div><div></div><div></div></div></figure></div></div><div><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>yarn</span><span> </span><span>create</span><span> </span><span>astro</span></div></div></code></pre><div><div></div><div></div></div></figure></div></div></div></section><section><h3>与其他代码块特性组合<a href="#与其他代码块特性组合"><span>#</span></a></h3><p>组内仍是普通的 Expressive Code 代码块，标题、行号、行标记、折叠、终端框架等特性都可以照常使用。</p><div><div>配置文件终端折叠</div><div><div><figure><figcaption><span>astro.config.mjs</span></figcaption><pre><code><div><div><div>1</div></div><div><span>export</span><span> </span><span>default</span><span> {</span></div></div><div><div><div>2</div></div><div><span>  </span><span>theme</span><span>:</span><span> </span><span>"firefly"</span><span>,</span></div></div><div><div><div>3</div></div><div><span>  </span><span>codeGroup</span><span>:</span><span> </span><span>true</span><span>,</span></div></div><div><div><div>4</div></div><div><span>};</span></div></div></code></pre><div><div></div><div></div></div></figure></div></div><div><div><figure><figcaption><span>部署</span></figcaption><pre><code><div><div><div>1</div></div><div><span>pnpm</span><span> </span><span>build</span><span> &amp;&amp; </span><span>pnpm</span><span> </span><span>preview</span></div></div></code></pre><div><div></div><div></div></div></figure></div></div><div><div><figure><figcaption></figcaption><pre><code><div><div><div></div></div><div><span></span><span></span><span>3 collapsed lines</span></div></div><div><div><div>1</div></div><div><span>// 这三行默认折叠</span></div></div><div><div><div>2</div></div><div><span>import</span><span> { </span><span>a</span><span> } </span><span>from</span><span> </span><span>"a"</span><span>;</span></div></div><div><div><div>3</div></div><div><span>import</span><span> { </span><span>b</span><span> } </span><span>from</span><span> </span><span>"b"</span><span>;</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span><span>console</span><span>.</span></span><span>log</span><span><span>(</span><span>a</span><span>, </span><span>b</span><span>);</span></span></div></div></code></pre><div><div></div><div></div></div></figure></div></div></div></section><section><h3>不止是代码块<a href="#不止是代码块"><span>#</span></a></h3><p>标签页内可以放任意内容，例如文字、列表或图片：</p><div><div>说明列表</div><div><p>这是一段普通的段落内容。</p></div><div><ul>
<li>列表项一</li>
<li>列表项二</li>
</ul></div></div><div><div><div></div><div>Tip</div></div><div><p>标签栏在构建期生成，默认展开第一项；支持鼠标点击与键盘 <kbd>←</kbd> / <kbd>→</kbd> / <kbd>Home</kbd> / <kbd>End</kbd> 切换。</p></div></div></section><section><h3>在提醒框内使用（MDX 组件）<a href="#在提醒框内使用mdx-组件"><span>#</span></a></h3><p><code>::: code-group</code> 和 <code>::: tip</code> 等 Docusaurus 风格提醒框都使用 <code>:::</code> 容器语法，而 micromark-directive 规定父子容器的冒号数必须不同，因此 <code>::: code-group</code> <strong>无法嵌套在 <code>::: tip</code> 等提醒框内</strong>（整块会失效）。</p><p>这种情况改用 MDX 组件 <a href="@/components/common/TabGroup.svelte"><code>TabGroup</code></a>：MDX 组件不经过 <code>:::</code> 指令解析，在提醒框内外都能正常使用，也方便日后扩展更多 UI 组件。把文章后缀改为 <code>.mdx</code>，从统一入口 <a href="@/components/firefly-mdx.ts"><code>@/components/firefly-mdx</code></a> 引入（可一次引入多个组件）：</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>import</span><span> { </span><span>TabGroup</span><span> } </span><span>from</span><span> </span><span>"@/components/firefly-mdx"</span><span>;</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>:::tip</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>&lt;</span><span>TabGroup</span><span> </span><span>labels</span><span>=</span><span>{</span><span>[</span><span>"test.js"</span><span>, </span><span>"test.py"</span><span>]</span><span>}</span><span> </span><span>client</span><span>:</span><span>load</span><span>&gt;</span></div></div><div><div><div>6</div></div><div><span>  </span><span>```</span><span>js</span></div></div><div><div><div>7</div></div><div><span><span>  </span></span><span>console</span><span>.</span><span>log</span><span>(</span><span>1</span><span>)</span></div></div><div><div><div>8</div></div><div><span>  </span><span>```</span></div></div><div><div><div>9</div></div><div>
</div></div><div><div><div>10</div></div><div><span>  </span><span>```</span><span>py</span></div></div><div><div><div>11</div></div><div><span>  </span><span>print</span><span>(</span><span>"hello world"</span><span>)</span></div></div><div><div><div>12</div></div><div><span>  </span><span>```</span></div></div><div><div><div>13</div></div><div><span>&lt;/</span><span>TabGroup</span><span>&gt;</span></div></div><div><div><div>14</div></div><div>
</div></div><div><div><div>15</div></div><div><span>:::</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><div><div><div></div><div>Tip</div></div><div><ul>
<li><code>labels</code> 数组给每个代码块声明标签，顺序一一对应</li>
<li>组件用 <code>client:load</code> 激活标签切换</li>
</ul></div></div></section></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/guide/firefly-layout-system/</id>
      <title type="text">Firefly 布局系统详解</title>
      <published>1970-01-03T00:00:00.000Z</published>
      <updated>1970-01-03T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/guide/firefly-layout-system/"/>
      <summary type="text">深入了解 Firefly 的布局系统，包括侧边栏布局（左侧/双侧）和文章列表布局（列表/网格），以及自适应网格列数。</summary>
      <content type="html"><![CDATA[<section><h2>📖 概述<a href="#-概述"><span>#</span></a></h2><p>Firefly 提供了灵活的布局系统，允许您根据内容需求和个人喜好自定义博客的视觉呈现方式。布局系统主要包括<strong>侧边栏布局</strong>和<strong>文章列表布局</strong>两个维度，它们相互配合，共同决定了页面的整体结构。</p><p>本文将详细介绍 Firefly 的各种布局模式、它们的特点、使用场景，以及不同布局组合的效果。</p><hr /><div><figure><img alt="左侧边栏+列表布局" loading="lazy" width="2192" height="1233" src="/_astro/left-list.CdJfuugk_23fiFf.webp" /><figcaption>左侧边栏+列表布局</figcaption></figure><figure><img alt="右侧边栏+网格布局" loading="lazy" width="2192" height="1233" src="/_astro/right-grid2.BDLeNFG9_Z1Ypd95.webp" /><figcaption>右侧边栏+网格布局</figcaption></figure><figure><img alt="左侧边栏+三列网格布局" loading="lazy" width="2192" height="1233" src="/_astro/left-grid3.DCIbm9j3_Z5Vd5j.webp" /><figcaption>左侧边栏+三列网格布局</figcaption></figure></div><div><figure><img alt="双侧边栏+列表布局" loading="lazy" width="2192" height="1233" src="/_astro/both-list.CybtDZTU_xxVkb.webp" /><figcaption>双侧边栏+列表布局</figcaption></figure><figure><img alt="双侧边栏+网格布局" loading="lazy" width="2192" height="1233" src="/_astro/both-grid.B-BFe9Al_1g1tLj.webp" /><figcaption>双侧边栏+网格布局</figcaption></figure><figure><img alt="双侧边栏+网格瀑布流布局" loading="lazy" width="2192" height="1233" src="/_astro/masonry.BgzRsBcp_2mfpqn.webp" /><figcaption>双侧边栏+网格瀑布流布局</figcaption></figure></div></section>
<section><h2>一、侧边栏布局系统<a href="#一侧边栏布局系统"><span>#</span></a></h2><p>侧边栏是博客页面的重要组成部分，用于展示导航、分类、标签、统计信息等辅助内容。Firefly 支持两种侧边栏布局模式。</p><section><h3>1.1 单侧边栏模式<a href="#11-单侧边栏模式"><span>#</span></a></h3><section><h4>左侧边栏 (position: “left”)<a href="#左侧边栏-position-left"><span>#</span></a></h4><p></p><figure><img alt="左侧边栏布局" loading="lazy" width="2192" height="1233" src="/_astro/left-list.CdJfuugk_23fiFf.webp" /><figcaption>左侧边栏布局</figcaption></figure><p></p></section><section><h4>右侧边栏 (position: “right”)<a href="#右侧边栏-position-right"><span>#</span></a></h4><p></p><figure><img alt="右侧边栏布局" loading="lazy" width="2192" height="1233" src="/_astro/right-grid2.BDLeNFG9_Z1Ypd95.webp" /><figcaption>右侧边栏布局</figcaption></figure><p></p></section><section><h4>特点<a href="#特点"><span>#</span></a></h4><ul>
<li>侧边栏固定在页面其中一侧</li>
<li>文章阅读区域体验更佳，更宽敞</li>
<li>更加简约，没有那么紧凑</li>
</ul></section><section><h4>适用场景<a href="#适用场景"><span>#</span></a></h4><ul>
<li>传统博客风格</li>
<li>强调导航和分类的博客</li>
<li>需要突出用户资料的个人博客</li>
<li>内容为主，辅助信息次之的场景</li>
</ul><div><div><div></div><div>Tip</div></div><div><p>文章详情页显示哪几侧，由**各组件的 <code>showOnPostPage</code>（以及 <code>hideOnNonPostPage</code>）**决定：某一侧在当前页型下没有任何可见组件时，该列会自动收起，把空间让给内容栏。</p><p>如果想在文章页同时显示双侧边栏，把 <code>position</code> 设为 <code>"both"</code>，并给两侧组件配好 <code>showOnPostPage</code> 即可。</p></div></div></section><section><h4>配置示例<a href="#配置示例"><span>#</span></a></h4><div><figure><figcaption><span>src/config/sidebarConfig.ts</span></figcaption><pre><code><div><div><div>1</div></div><div><span>export</span><span> </span><span>const</span><span> </span><span>sidebarLayoutConfig</span><span>:</span><span> </span><span>SidebarLayoutConfig</span><span> </span><span>=</span><span> {</span></div></div><div><div><div>2</div></div><div><span>  </span><span>enable</span><span>:</span><span> </span><span>true</span><span>,</span></div></div><div><div><div>3</div></div><div><span>  </span><span>position</span><span>:</span><span> </span><span>"left"</span><span>, </span><span>// 左侧边栏</span></div></div><div><div><div>4</div></div><div><span>};</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /></section></section><section><h3>1.2 双侧边栏模式 (position: “both”)<a href="#12-双侧边栏模式-position-both"><span>#</span></a></h3><section><h4>特点<a href="#特点-1"><span>#</span></a></h4><ul>
<li>左右两侧同时存在侧边栏</li>
<li>主内容区域位于中间</li>
<li>最大化利用屏幕空间</li>
<li>可以展示更多辅助信息</li>
<li>适合宽屏显示器</li>
</ul></section><section><h4>布局结构<a href="#布局结构"><span>#</span></a></h4><p></p><figure><img alt="双侧边栏+列表布局" loading="lazy" width="2192" height="1233" src="/_astro/both-list.CybtDZTU_xxVkb.webp" /><figcaption>双侧边栏+列表布局</figcaption></figure><p></p><p></p><figure><img alt="双侧边栏+网格布局" loading="lazy" width="2192" height="1233" src="/_astro/both-grid.B-BFe9Al_1g1tLj.webp" /><figcaption>双侧边栏+网格布局</figcaption></figure><p></p></section><section><h4>适用场景<a href="#适用场景-1"><span>#</span></a></h4><ul>
<li>宽屏桌面端浏览</li>
<li>信息密集型博客</li>
<li>需要展示大量辅助内容</li>
<li>专业性强的技术博客</li>
</ul></section><section><h4>配置示例<a href="#配置示例-1"><span>#</span></a></h4><div><figure><figcaption><span>src/config/sidebarConfig.ts</span></figcaption><pre><code><div><div><div>1</div></div><div><span>export</span><span> </span><span>const</span><span> </span><span>sidebarLayoutConfig</span><span>:</span><span> </span><span>SidebarLayoutConfig</span><span> </span><span>=</span><span> {</span></div></div><div><div><div>2</div></div><div><span>  </span><span>enable</span><span>:</span><span> </span><span>true</span><span>,</span></div></div><div><div><div>3</div></div><div><span>  </span><span>position</span><span>:</span><span> </span><span>"both"</span><span>, </span><span>// 双侧边栏</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /></section></section></section>
<section><h2>二、文章列表布局系统<a href="#二文章列表布局系统"><span>#</span></a></h2><p>文章列表是博客首页和归档页的核心内容，Firefly 提供两种展示方式，并支持多种网格配置。</p><section><h3>2.1 列表模式 (defaultMode: “list”)<a href="#21-列表模式-defaultmode-list"><span>#</span></a></h3><section><h4>特点<a href="#特点-2"><span>#</span></a></h4><ul>
<li>单列纵向排列</li>
<li>显示文章封面图，可配置在左侧或右侧</li>
<li>展示更多文章摘要</li>
<li>适合深度阅读</li>
</ul></section><section><h4>列表布局结构<a href="#列表布局结构"><span>#</span></a></h4><p></p><figure><img alt="列表模式布局" loading="lazy" width="2192" height="1233" src="/_astro/left-list.CdJfuugk_23fiFf.webp" /><figcaption>列表模式布局</figcaption></figure><p></p></section><section><h4>封面位置<a href="#封面位置"><span>#</span></a></h4><p>列表模式的封面图默认在卡片右侧，可以通过 <code>coverPosition</code> 改到左侧。改到左侧后，标题前的主题色竖线会自动隐藏（它是贴着卡片左边缘的设计），腾出的间距留给正文。</p><p>网格模式的封面固定在卡片顶部，不受这项配置影响。</p></section><section><h4>优点<a href="#优点"><span>#</span></a></h4><ul>
<li>✅ 视觉冲击力强，封面图吸引眼球</li>
<li>✅ 可以展示更多文章信息（摘要、标签等）</li>
<li>✅ 适合图片内容丰富的博客</li>
<li>✅ 移动端友好，单列更易阅读</li>
<li>✅ 兼容所有侧边栏配置（单侧、双侧）</li>
</ul></section><section><h4>配置示例<a href="#配置示例-2"><span>#</span></a></h4><div><figure><figcaption><span>src/config/siteConfig.ts</span></figcaption><pre><code><div><div><div>1</div></div><div><span>export</span><span> </span><span>const</span><span> </span><span>siteConfig</span><span>:</span><span> </span><span>SiteConfig</span><span> </span><span>=</span><span> {</span></div></div><div><div><div>2</div></div><div><span>  </span><span>postListLayout</span><span>:</span><span> {</span></div></div><div><div><div>3</div></div><div><span>    </span><span>defaultMode</span><span>:</span><span> </span><span>"list"</span><span>,    </span><span>// 列表模式</span></div></div><div><div><div>4</div></div><div><span>    </span><span>coverPosition</span><span>:</span><span> </span><span>"right"</span><span>, </span><span>// 封面图位置："right" 右侧，"left" 左侧</span></div></div><div><div><div>5</div></div><div><span><span>  </span></span><span>},</span></div></div><div><div><div>6</div></div><div><span>};</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /></section></section><section><h3>2.2 网格模式 (defaultMode: “grid”)<a href="#22-网格模式-defaultmode-grid"><span>#</span></a></h3><section><h4>特点<a href="#特点-3"><span>#</span></a></h4><ul>
<li>自适应列数，根据浏览器宽度自动调整</li>
<li>紧凑布局，信息密度高</li>
<li>适合快速浏览</li>
</ul></section><section><h4>自适应网格<a href="#自适应网格"><span>#</span></a></h4><p>网格模式通过 <code>columnWidth</code> 配置卡片的最小宽度（单位 px），浏览器会根据容器可用宽度自动计算能容纳多少列。</p><p></p><figure><img alt="网格布局" loading="lazy" width="2192" height="1233" src="/_astro/left-grid3.DCIbm9j3_Z5Vd5j.webp" /><figcaption>网格布局</figcaption></figure><p></p></section><section><h4>配置示例<a href="#配置示例-3"><span>#</span></a></h4><div><figure><figcaption><span>src/config/siteConfig.ts</span></figcaption><pre><code><div><div><div>1</div></div><div><span>export</span><span> </span><span>const</span><span> </span><span>siteConfig</span><span>:</span><span> </span><span>SiteConfig</span><span> </span><span>=</span><span> {</span></div></div><div><div><div>2</div></div><div><span>  </span><span>postListLayout</span><span>:</span><span> {</span></div></div><div><div><div>3</div></div><div><span>    </span><span>defaultMode</span><span>:</span><span> </span><span>"grid"</span><span>,</span></div></div><div><div><div>4</div></div><div><span>    </span><span>grid</span><span>:</span><span> {</span></div></div><div><div><div>5</div></div><div><span>      </span><span>masonry</span><span>:</span><span> </span><span>true</span><span>,      </span><span>// 开启瀑布流</span></div></div><div><div><div>6</div></div><div><span>      </span><span>columnWidth</span><span>:</span><span> </span><span>320</span><span>,   </span><span>// 卡片最小宽度(px)，浏览器自动计算列数</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>},</span></div></div><div><div><div>8</div></div><div><span><span>  </span></span><span>},</span></div></div><div><div><div>9</div></div><div><span>};</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /></section></section><section><h3>2.3 瀑布流布局 (Masonry)<a href="#23-瀑布流布局-masonry"><span>#</span></a></h3><p>Firefly 的网格模式内置了智能瀑布流布局支持，解决了网格布局中因图文混合文章导致的卡片高度不一致导致的空白问题。</p><p></p><figure><img alt="瀑布流布局" loading="lazy" width="2192" height="1233" src="/_astro/masonry.BgzRsBcp_2mfpqn.webp" /><figcaption>瀑布流布局</figcaption></figure><p></p><ul>
<li><strong>智能排版</strong>：自动将卡片放置到最短的列，最大化利用垂直空间。</li>
<li><strong>消除空白</strong>：通过绝对定位精确计算每个卡片的位置，让卡片紧贴上方卡片，消除垂直方向的空白间隙。</li>
<li><strong>自适应列数</strong>：瀑布流同样根据 <code>columnWidth</code> 和容器宽度动态计算列数，无需固定配置。</li>
<li><strong>配置灵活</strong>：您可以在 <code>siteConfig.ts</code> 中通过 <code>postListLayout.grid.masonry</code> 选项自由开启或关闭此功能。</li>
</ul><hr /></section></section>
<section><h2>三、布局组合指南<a href="#三布局组合指南"><span>#</span></a></h2><p>Firefly 允许您自由组合侧边栏和文章列表布局。以下是各种组合的效果说明。</p>

<table><thead><tr><th>侧边栏模式</th><th>文章列表模式</th><th>推荐度</th><th>适用场景</th></tr></thead><tbody><tr><td>单侧边栏</td><td>列表模式</td><td>⭐⭐⭐⭐⭐</td><td>摄影、设计、生活类博客，强调图片和沉浸感</td></tr><tr><td>单侧边栏</td><td>网格模式</td><td>⭐⭐⭐⭐⭐</td><td>技术、笔记类博客，平衡阅读与检索效率</td></tr><tr><td>双侧边栏</td><td>列表模式</td><td>⭐⭐⭐⭐⭐</td><td>需要展示大量侧边栏信息的站点</td></tr><tr><td>双侧边栏</td><td>网格模式</td><td>⭐⭐⭐⭐⭐</td><td>极客风格，追求最高信息密度</td></tr></tbody></table><hr /></section>
<section><h2>四、响应式布局行为<a href="#四响应式布局行为"><span>#</span></a></h2><p>Firefly 的布局系统具有智能的响应式设计，会根据屏幕尺寸自动调整。</p><p>为了保证最佳阅读体验，系统会在屏幕变窄时自动调整布局：</p><ol>
<li><strong>网格列数自动减少</strong>：网格模式的列数由 <code>columnWidth</code> 和容器宽度自动决定，屏幕越窄列数越少。</li>
<li><strong>列表模式 -&gt; 网格模式</strong>：当屏幕宽度小于 380px（超小屏设备）时，列表模式会自动切换为网格模式，以保证卡片内容的可读性。</li>
<li><strong>双侧边栏 -&gt; 单侧边栏</strong>：当屏幕宽度小于 1280px 时，会根据<code>tabletSidebar</code>配置显示单侧边栏，隐藏其中一个侧边栏，文章目录导航会切换成浮动目录导航。</li>
</ol><hr /></section>
<section><h2>五、常见问题<a href="#五常见问题"><span>#</span></a></h2><section><h3>Q1: 如何调整网格列数？<a href="#q1-如何调整网格列数"><span>#</span></a></h3><p><strong>A</strong>: 通过 <code>columnWidth</code> 配置卡片最小宽度即可。值越小，同等宽度下列数越多；值越大，列数越少。浏览器会自动根据可用宽度计算最佳列数。</p><hr /></section></section>
<section><h2>六、总结<a href="#六总结"><span>#</span></a></h2><p>Firefly 的布局系统给予了您更大的自由度，您都可以通过简单的配置实现。</p><p>我们建议您根据自己的内容类型和目标读者的设备偏好，尝试不同的组合，找到最适合您的博客形态。</p><hr /></section>
<section><h2>相关链接<a href="#相关链接"><span>#</span></a></h2><ul>
<li>📚 <a href="https://docs-firefly.cuteleaf.cn/config/sidebarConfig-usage/" target="_blank">侧边栏配置文档</a></li>
<li>📚 <a href="https://docs-firefly.cuteleaf.cn/config/siteConfig-usage/" target="_blank">站点配置文档</a></li>
<li>🏠 <a href="https://docs-firefly.cuteleaf.cn/" target="_blank">Firefly 官方文档</a></li>
<li>⭐ <a href="https://github.com/CuteLeaf/Firefly" target="_blank">Firefly GitHub</a></li>
</ul></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/guide/firefly-wiki-link/</id>
      <title type="text">Firefly Wiki Link 内部链接示例</title>
      <published>1970-01-03T00:00:00.000Z</published>
      <updated>1970-01-03T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/guide/firefly-wiki-link/"/>
      <summary type="text">在 Firefly 文章中使用 Obsidian 风格的 Wiki Link 内部链接，并自动生成文章链接卡片。</summary>
      <content type="html"><![CDATA[<p>Firefly 支持在 Markdown、MDX 文章中使用 Obsidian 风格的 Wiki Link 内部链接。链接目标填写文章的 slug 或文件路径，都不需要包含扩展名，具体匹配规则见下文「链接目标的三种写法」。</p>
<section><h2>文章链接卡片<a href="#文章链接卡片"><span>#</span></a></h2><p><code>[[slug]]</code> 单独成段时，会自动读取目标文章的标题、描述、发布时间、分类、标签和封面，渲染为链接卡片：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[</span><span>[</span><span>firefly</span><span>]</span><span>]</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>[</span><span>[</span><span>guide/index</span><span>]</span><span>]</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>[</span><span>[</span><span>markdown-extended</span><span>]</span><span>]</span></div></div></code></pre><div><div></div><div></div></div></figure></div><a href="/posts/firefly/"><div><div>Firefly 一款清新美观的 Astro 博客主题模板</div><div>Firefly 是一款基于 Astro 框架和 Fuwari 模板开发的清新美观且现代化个人博客主题模板，专为技术爱好者和内容创作者设计。该主题融合了现代 Web 技术栈，提供了丰富的功能模块和高度可定制的界面，让您能够轻松打造出专业且美观的个人博客网站。</div><div><span>1970-01-02</span><span>文章示例</span><span><span>#Markdown</span><span>#Firefly</span><span>#博客</span><span>#主题</span><span>#模板</span></span></div></div><div><img alt="" loading="lazy" width="480" height="259" src="/_astro/firefly2.dxmXG905_Z2o5m8L.webp" /></div></a><a href="/posts/guide/"><div><div>Firefly 简单使用指南</div><div>如何使用 Firefly 博客模板。</div><div><span>1970-01-02</span><span>博客指南</span><span><span>#Firefly</span><span>#博客</span><span>#Markdown</span><span>#指南</span></span></div></div><div><img alt="" loading="lazy" width="480" height="270" src="/_astro/cover.bDPQizdp_C8GFs.webp" /></div></a><a href="/posts/markdown-extended/"><div><div>Markdown 扩展功能</div><div>了解 Firefly 中的 Markdown 功能</div><div><span>1970-01-01</span><span>文章示例</span><span><span>#演示</span><span>#示例</span><span>#Markdown</span><span>#Firefly</span></span></div></div></a></section>
<section><h2>行内链接<a href="#行内链接"><span>#</span></a></h2><p><code>[[slug]]</code> 出现在正文中间时，渲染为普通链接，链接文字自动使用目标文章的标题</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>请参阅 [</span><span>[</span><span>firefly</span><span>]</span><span>] 了解主题特性。</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>请参阅 <a href="/posts/firefly/">Firefly 一款清新美观的 Astro 博客主题模板</a> 了解主题特性。</p></section>
<section><h2>自定义显示标题<a href="#自定义显示标题"><span>#</span></a></h2><p>在 <code>|</code> 后填写链接的显示文字。行内链接会用它替换文章标题；单独成段时依然渲染为卡片，卡片标题使用自定义文字，描述、时间、分类、标签和封面仍然读取目标文章：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>请参阅 [</span><span>[</span><span>firefly|主题介绍</span><span>]</span><span>] 了解主题特性。</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>[[firefly|Firefly 主题介绍]]</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>请参阅 <a href="/posts/firefly/">主题介绍</a> 了解主题特性。</p><a href="/posts/firefly/"><div><div>Firefly 主题介绍</div><div>Firefly 是一款基于 Astro 框架和 Fuwari 模板开发的清新美观且现代化个人博客主题模板，专为技术爱好者和内容创作者设计。该主题融合了现代 Web 技术栈，提供了丰富的功能模块和高度可定制的界面，让您能够轻松打造出专业且美观的个人博客网站。</div><div><span>1970-01-02</span><span>文章示例</span><span><span>#Markdown</span><span>#Firefly</span><span>#博客</span><span>#主题</span><span>#模板</span></span></div></div><div><img alt="" loading="lazy" width="480" height="259" src="/_astro/firefly2.dxmXG905_Z2o5m8L.webp" /></div></a><p>一个例外：如果 <code>|</code> 后的文字只是把链接目标又抄了一遍（<code>[[guide/index|index]]</code>），会被当作无效别名忽略，仍然显示文章标题。Obsidian 在插入的链接时会自动补上这样的别名，避免笔记里显示一长串路径，这个例外就是为它准备的。</p></section>
<section><h2>链接目标的三种写法<a href="#链接目标的三种写法"><span>#</span></a></h2><p>用 Obsidian 管理文章时，把 <code>src/content/posts</code> 目录本身作为 Obsidian 仓库（vault）打开。下文提到的「仓库根目录」都指这个目录，它正好也是 Firefly 解析链接路径的起点。</p><p>链接目标按以下顺序匹配：</p>

<table><thead><tr><th>写法</th><th>示例</th><th>在 Obsidian 中</th></tr></thead><tbody><tr><td>frontmatter 的 <code>slug</code></td><td><code>[[firefly-wiki-link]]</code></td><td>✗ 不支持</td></tr><tr><td>文件路径（相对仓库根目录）</td><td><code>[[guide/firefly-layout-system]]</code></td><td>✓ 需改设置（推荐）</td></tr><tr><td>裸文件名（仓库内唯一时）</td><td><code>[[firefly-layout-system]]</code></td><td>✓ 默认即是</td></tr></tbody></table><section><h3>第一种：slug<a href="#第一种slug"><span>#</span></a></h3><p><code>slug</code> 写法在 Obsidian 中不支持，<code>slug</code> 是 Firefly 自己的概念，Obsidian 不读取 frontmatter 里的 <code>slug</code>，所以按 slug 写的链接在 Obsidian 里既不会自动补全，也点不动，只有构建出的站点上能正常跳转。如果你主要在 Obsidian 里写作，用下面两种写法。</p></section><section><h3>第二种：文件路径（推荐）<a href="#第二种文件路径推荐"><span>#</span></a></h3><p>文件路径写法需要改 Obsidian 设置，在 <code>设置 → 文件与链接 → 链接 → 内部链接类型</code> 中选择<strong>基于仓库根目录的绝对路径</strong>，Obsidian 插入的链接才会带上目录：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[</span><span>[</span><span>guide/firefly-layout-system|firefly-layout-system</span><span>]</span><span>]</span></div></div></code></pre><div><div></div><div></div></div></figure></div><a href="/posts/guide/firefly-layout-system/"><div><div>Firefly 布局系统详解</div><div>深入了解 Firefly 的布局系统，包括侧边栏布局（左侧/双侧）和文章列表布局（列表/网格），以及自适应网格列数。</div><div><span>1970-01-03</span><span>博客指南</span><span><span>#Firefly</span><span>#布局</span><span>#博客</span><span>#指南</span></span></div></div><div><img alt="" loading="lazy" width="480" height="270" src="/_astro/firefly1.CZCuCN4V_1uGCKh.webp" /></div></a><p>因为仓库根目录就是 <code>src/content/posts</code>，Obsidian 写出的这个路径和 Firefly 需要的路径完全一致，不需要任何额外转换。</p><p>上面这行末尾的 <code>|firefly-layout-system</code> 是 Obsidian 自动补的别名，Firefly 会忽略它，卡片标题仍然取文章的 title，除非你把它修改和文件名不一致，才会变成你修改后的别名。</p><p>内部链接类型下拉框里的<strong>基于当前笔记的相对路径</strong>只在同目录内可用：它给同目录文章生成的是裸文件名，能正常匹配；但跨目录时会生成 <code>../</code> 前缀，Firefly 无法解析，链接会按原文显示。</p></section><section><h3>第三种：裸文件名<a href="#第三种裸文件名"><span>#</span></a></h3><p>「内部链接类型」的默认值就是<strong>尽可能简短的形式</strong>：只要文件名在整个仓库里唯一，Obsidian 插入的链接就只有文件名，不带目录。这种写法不需要改任何设置，效果和写完整路径完全一致：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[</span><span>[</span><span>firefly-layout-system</span><span>]</span><span>]</span></div></div></code></pre><div><div></div><div></div></div></figure></div><a href="/posts/guide/firefly-layout-system/"><div><div>Firefly 布局系统详解</div><div>深入了解 Firefly 的布局系统，包括侧边栏布局（左侧/双侧）和文章列表布局（列表/网格），以及自适应网格列数。</div><div><span>1970-01-03</span><span>博客指南</span><span><span>#Firefly</span><span>#布局</span><span>#博客</span><span>#指南</span></span></div></div><div><img alt="" loading="lazy" width="480" height="270" src="/_astro/firefly1.CZCuCN4V_1uGCKh.webp" /></div></a><p>文件名重名时这种写法会失效，构建日志里会给出提示，改用完整文件路径即可，所以推荐直接修改 Obsidian 内部链接类型设置为<strong>基于仓库根目录的绝对路径</strong>，使用第二种文件路径写法，一劳永逸</p></section></section>
<section><h2>链接到其他文章的标题<a href="#链接到其他文章的标题"><span>#</span></a></h2><p>在文章 slug 后添加 <code>#标题</code>。带标题锚点的链接始终渲染为普通链接：</p><p><a href="/posts/code-examples/#%E8%AF%AD%E6%B3%95%E9%AB%98%E4%BA%AE">查看代码块语法高亮</a></p><p><a href="/posts/guide/firefly-layout-system/#%E7%9B%B8%E5%85%B3%E9%93%BE%E6%8E%A5">Firefly 布局系统详解#相关链接</a></p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[</span><span>[</span><span>code-examples#语法高亮|查看代码块语法高亮</span><span>]</span><span>]</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>[</span><span>[</span><span>guide/firefly-layout-system#相关链接|firefly-layout-system</span><span>]</span><span>]</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>标题锚点使用与页面标题相同的 slug 规则，因此中文、空格和大小写都会按页面实际生成的 ID 处理。</p></section>
<section><h2>链接到本页标题<a href="#链接到本页标题"><span>#</span></a></h2><p>省略文章 slug，只填写标题即可链接到当前文章：</p><p><a href="#%E6%9C%AC%E9%A1%B5%E7%9B%AE%E6%A0%87">跳转到本页目标</a></p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[</span><span>[</span><span>#本页目标|跳转到本页目标</span><span>]</span><span>]</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>本页目标<a href="#本页目标"><span>#</span></a></h2><p>这是本页 Wiki Link 指向的标题。</p></section>
<section><h2>不支持附件嵌入<a href="#不支持附件嵌入"><span>#</span></a></h2><p>附件嵌入语法目前不会被转换，会按原文显示：</p><p>![[image.png]]</p><p>行内代码和代码块中的 <code>[[firefly]]</code> 也不会被转换。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/encrypted-demo/</id>
      <title type="text">Firefly 文章加密</title>
      <published>1970-01-02T00:00:00.000Z</published>
      <updated>1970-01-02T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/encrypted-demo/"/>
      <summary type="text">这是一篇密码保护的示例文章，用于演示文章加密功能。</summary>
      <content type="html"><![CDATA[本文已加密保护，请访问网站查看。]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/katex-math-example/</id>
      <title type="text">KaTeX 数学公式示例</title>
      <published>1970-01-02T00:00:00.000Z</published>
      <updated>1970-01-02T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/katex-math-example/"/>
      <summary type="text">展示 Firefly 主题对 KaTeX 数学公式的支持，包括行内公式、块级公式和复杂数学符号。</summary>
      <content type="html"><![CDATA[<p>本文展示了 <a href="https://github.com/CuteLeaf/Firefly" target="_blank">Firefly</a> 主题对 KaTeX 数学公式的渲染支持。</p>
<section><h2>行内公式 (Inline)<a href="#行内公式-inline"><span>#</span></a></h2><p>行内公式使用单个 <code>$</code> 符号包裹。</p><p>例如：欧拉公式 <span><span>eiπ+1=0e^{i\pi} + 1 = 0</span><span><span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>iπ</span></span></span></span></span></span></span></span></span><span></span><span>+</span><span></span></span><span><span></span><span>1</span><span></span><span>=</span><span></span></span><span><span></span><span>0</span></span></span></span> 是数学中最优美的公式之一。</p><p>质能方程 <span><span>E=mc2E = mc^2</span><span><span><span></span><span>E</span><span></span><span>=</span><span></span></span><span><span></span><span>m</span><span><span>c</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span> 也是家喻户晓。</p></section>
<section><h2>块级公式 (Block)<a href="#块级公式-block"><span>#</span></a></h2><p>块级公式使用两个 <code>$$</code> 符号包裹，会居中显示。</p><span><span><span>∫−∞∞e−x2dx=π\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}</span><span><span><span></span><span><span>∫</span><span><span><span><span><span><span></span><span><span><span>−</span><span>∞</span></span></span></span><span><span></span><span><span><span>∞</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span></span><span><span>e</span><span><span><span><span><span><span></span><span><span><span>−</span><span><span>x</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span>d</span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span><span><span><span><span><span></span><span><span>π</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span><span><span><span>x=−b±b2−4ac2ax = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}</span><span><span><span></span><span>x</span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>2</span><span>a</span></span></span><span><span></span><span></span></span><span><span></span><span><span>−</span><span>b</span><span></span><span>±</span><span></span><span><span><span><span><span><span></span><span><span><span>b</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span><span></span><span>−</span><span></span><span>4</span><span>a</span><span>c</span></span></span><span><span></span><span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span></section>
<section><h2>复杂示例<a href="#复杂示例"><span>#</span></a></h2><section><h3>矩阵 (Matrices)<a href="#矩阵-matrices"><span>#</span></a></h3><span><span><span>(abcd)(αβγδ)=(aα+bγaβ+bδcα+dγcβ+dδ)\begin{pmatrix}
a &amp; b \\
c &amp; d
\end{pmatrix}
\begin{pmatrix}
\alpha &amp; \beta \\
\gamma &amp; \delta
\end{pmatrix} =
\begin{pmatrix}
a\alpha + b\gamma &amp; a\beta + b\delta \\
c\alpha + d\gamma &amp; c\beta + d\delta
\end{pmatrix}</span><span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>a</span></span></span><span><span></span><span><span>c</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>b</span></span></span><span><span></span><span><span>d</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>α</span></span></span><span><span></span><span><span>γ</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>β</span></span></span><span><span></span><span><span>δ</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span><span>(</span></span><span><span><span><span><span><span><span><span></span><span><span>a</span><span>α</span><span></span><span>+</span><span></span><span>bγ</span></span></span><span><span></span><span><span>c</span><span>α</span><span></span><span>+</span><span></span><span>d</span><span>γ</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span></span><span><span><span><span><span><span></span><span><span>a</span><span>β</span><span></span><span>+</span><span></span><span>b</span><span>δ</span></span></span><span><span></span><span><span>c</span><span>β</span><span></span><span>+</span><span></span><span>d</span><span>δ</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span><span><span>)</span></span></span></span></span></span></span></section><section><h3>极限与求和 (Limits and Sums)<a href="#极限与求和-limits-and-sums"><span>#</span></a></h3><span><span><span>∑n=1∞1n2=π26\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}</span><span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span><span>=</span><span>1</span></span></span></span><span><span></span><span><span>∑</span></span></span><span><span></span><span><span><span>∞</span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>n</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span>1</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>6</span></span></span><span><span></span><span></span></span><span><span></span><span><span><span>π</span><span><span><span><span><span><span></span><span><span>2</span></span></span></span></span></span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span></span><span><span><span>lim⁡x→0sin⁡xx=1\lim_{x \to 0} \frac{\sin x}{x} = 1</span><span><span><span></span><span><span><span><span><span><span></span><span><span><span>x</span><span>→</span><span>0</span></span></span></span><span><span></span><span><span>lim</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span><span><span></span><span><span><span><span><span><span></span><span><span>x</span></span></span><span><span></span><span></span></span><span><span></span><span><span>sin</span><span></span><span>x</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span><span></span><span>=</span><span></span></span><span><span></span><span>1</span></span></span></span></span></section><section><h3>麦克斯韦方程组 (Maxwell’s Equations)<a href="#麦克斯韦方程组-maxwells-equations"><span>#</span></a></h3><span><span><span>∇⋅E=ρε0∇⋅B=0∇×E=−∂B∂t∇×B=μ0J+μ0ε0∂E∂t\begin{aligned}
\nabla \cdot \mathbf{E} &amp;= \frac{\rho}{\varepsilon_0} \\
\nabla \cdot \mathbf{B} &amp;= 0 \\
\nabla \times \mathbf{E} &amp;= -\frac{\partial \mathbf{B}}{\partial t} \\
\nabla \times \mathbf{B} &amp;= \mu_0\mathbf{J} + \mu_0\varepsilon_0\frac{\partial \mathbf{E}}{\partial t}
\end{aligned}</span><span><span><span></span><span><span><span><span><span><span><span><span></span><span><span>∇</span><span></span><span>⋅</span><span></span><span>E</span></span></span><span><span></span><span><span>∇</span><span></span><span>⋅</span><span></span><span>B</span></span></span><span><span></span><span><span>∇</span><span></span><span>×</span><span></span><span>E</span></span></span><span><span></span><span><span>∇</span><span></span><span>×</span><span></span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span><span><span><span><span><span></span><span><span></span><span></span><span>=</span><span></span><span><span></span><span><span><span><span><span><span></span><span><span><span>ε</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span><span><span></span><span></span></span><span><span></span><span><span>ρ</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span><span><span></span><span><span></span><span></span><span>=</span><span></span><span>0</span></span></span><span><span></span><span><span></span><span></span><span>=</span><span></span><span>−</span><span><span></span><span><span><span><span><span><span></span><span><span>∂</span><span>t</span></span></span><span><span></span><span></span></span><span><span></span><span><span>∂</span><span>B</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span><span><span></span><span><span></span><span></span><span>=</span><span></span><span><span>μ</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span>J</span><span></span><span>+</span><span></span><span><span>μ</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span>ε</span><span><span><span><span><span><span></span><span><span>0</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span><span><span></span><span><span><span><span><span><span></span><span><span>∂</span><span>t</span></span></span><span><span></span><span></span></span><span><span></span><span><span>∂</span><span>E</span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span><span></span></span></span></span></span><span>​</span></span><span><span><span></span></span></span></span></span></span></span></span></span></span></span></section><section><h3>化学方程式 (Chemical Equations)<a href="#化学方程式-chemical-equations"><span>#</span></a></h3><span><span><span>\ceCH4+2O2−&gt;CO2+2H2O\ce{CH4 + 2O2 -&gt; CO2 + 2H2O}</span><span><span><span></span><span><span>\ce</span></span><span><span>C</span><span>H</span><span>4</span><span></span><span>+</span><span></span><span>2</span><span>O</span><span>2</span><span>−</span><span></span><span>&gt;</span><span></span><span>C</span><span>O</span><span>2</span><span></span><span>+</span><span></span><span>2</span><span>H</span><span>2</span><span>O</span></span></span></span></span></span></section></section>
<section><h2>更多符号<a href="#更多符号"><span>#</span></a></h2>

<table><thead><tr><th>符号</th><th>代码</th><th>渲染结果</th></tr></thead><tbody><tr><td>Alpha</td><td><code>\alpha</code></td><td><span><span>α\alpha</span><span><span><span></span><span>α</span></span></span></span></td></tr><tr><td>Beta</td><td><code>\beta</code></td><td><span><span>β\beta</span><span><span><span></span><span>β</span></span></span></span></td></tr><tr><td>Gamma</td><td><code>\Gamma</code></td><td><span><span>Γ\Gamma</span><span><span><span></span><span>Γ</span></span></span></span></td></tr><tr><td>Pi</td><td><code>\pi</code></td><td><span><span>π\pi</span><span><span><span></span><span>π</span></span></span></span></td></tr><tr><td>Infinity</td><td><code>\infty</code></td><td><span><span>∞\infty</span><span><span><span></span><span>∞</span></span></span></span></td></tr><tr><td>Right Arrow</td><td><code>\rightarrow</code></td><td><span><span>→\rightarrow</span><span><span><span></span><span>→</span></span></span></span></td></tr><tr><td>Partial</td><td><code>\partial</code></td><td><span><span>∂\partial</span><span><span><span></span><span>∂</span></span></span></span></td></tr></tbody></table><p>更多 KaTeX 语法请参考 <a href="https://katex.org/docs/supported.html" target="_blank">KaTeX Supported Functions</a>。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/mdx-example/</id>
      <title type="text">MDX 格式文章示例</title>
      <published>1970-01-02T00:00:00.000Z</published>
      <updated>1970-01-02T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/mdx-example/"/>
      <summary type="text">这是一个 MDX 格式的示例文章，展示了如何在 Markdown 中使用 JSX。</summary>
      <content type="html"><![CDATA[<div><div><div></div><div>Tip</div></div><div><p><a href="https://github.com/CuteLeaf/Firefly" target="_blank">Firefly</a> 支持 <code>MDX</code> 和 <code>Markdown</code> 两种类型的文章，你可以在文章中混合使用两种格式，如果没有特别复杂内容和需求，推荐使用 Markdown 格式就够了。</p></div></div>
<section><h2>Markdown 和 MDX 的区别<a href="#markdown-和-mdx-的区别"><span>#</span></a></h2><ul>
<li>Markdown (MD) 是一种轻量级标记语言，允许用户使用纯文本格式编写文档，然后将其转换为格式化的HTML。它因其简洁易用的语法而广受欢迎，特别适合编写文档和博客文章。</li>
<li>MDX 是一种扩展了 Markdown 语法的格式，允许在 Markdown 文档中无缝地插入 JSX 代码。通过 MDX，用户可以在文档中嵌入 React 组件，从而实现更丰富的交互性和动态性。</li>
</ul>

<table><thead><tr><th>特性</th><th>Markdown</th><th>MDX</th></tr></thead><tbody><tr><td>基础语法</td><td>支持 (CommonMark)</td><td>支持 (CommonMark)</td></tr><tr><td>HTML 标签</td><td>支持</td><td>支持 (作为 JSX)</td></tr><tr><td>组件导入</td><td>不支持</td><td>支持 (import)</td></tr><tr><td>动态数据</td><td>不支持</td><td>支持 (JS 表达式)</td></tr><tr><td>样式定制</td><td>有限 (class/style)</td><td>灵活 (className/CSS-in-JS)</td></tr></tbody></table><hr /></section>
<section><h2>Firefly 内置的专属 MDX UI 组件<a href="#firefly-内置的专属-mdx-ui-组件"><span>#</span></a></h2><p>这里列出 Firefly 内置的 MDX UI 组件，方便在 MDX 文章中直接使用。</p><section><h3>Tab分组：<code>TabGroup</code><a href="#tab分组tabgroup"><span>#</span></a></h3><p>用于创建可切换的标签页，方便在文章中展示不同语言或不同版本的代码等等。</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&lt;</span><span>TabGroup</span><span> </span><span>labels</span><span>=</span><span>{</span><span>[</span><span>"test.js"</span><span>, </span><span>"test.py"</span><span>]</span><span>}</span><span> </span><span>client</span><span>:</span><span>load</span><span>&gt;</span></div></div><div><div><div>2</div></div><div><span>  </span><span>```</span><span>js</span></div></div><div><div><div>3</div></div><div><span><span>  </span></span><span>console</span><span>.</span><span>log</span><span>(</span><span>1</span><span>)</span></div></div><div><div><div>4</div></div><div><span>  </span><span>```</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span>  </span><span>```</span><span>py</span></div></div><div><div><div>7</div></div><div><span>  </span><span>print</span><span>(</span><span>"hello world"</span><span>)</span></div></div><div><div><div>8</div></div><div><span>  </span><span>```</span></div></div><div><div><div>9</div></div><div><span>&lt;/</span><span>TabGroup</span><span>&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><div><div>test.jstest.py</div> <div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span><span>console</span><span>.</span></span><span>log</span><span>(</span><span>1</span><span>)</span></div></div></code></pre><div><div></div><div></div></div></figure></div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>print</span><span>(</span><span>"hello world"</span><span>)</span></div></div></code></pre><div><div></div><div></div></div></figure></div></div></div><hr /></section><section><h3>时间线：<code>Timeline</code> / <code>TimelineItem</code><a href="#时间线timeline--timelineitem"><span>#</span></a></h3>

<table><thead><tr><th>属性</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td><code>date</code></td><td>否</td><td>时间标签，如 “2024-03-10”</td></tr><tr><td><code>title</code></td><td>否</td><td>条目标题</td></tr><tr><td><code>type</code></td><td>否</td><td>节点颜色，default 为主题色，其余对应提示框色板（tip / note / important / warning / caution）</td></tr><tr><td><code>icon</code></td><td>否</td><td>内置图标名，显示在圆点内：star / rocket / git / flag / book / heart / zap / bug / tag / calendar / code / edit</td></tr><tr><td>正文</td><td>否</td><td><code>&lt;TimelineItem&gt;</code> 标签内的内容，支持 Markdown</td></tr></tbody></table><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&lt;</span><span>Timeline</span><span>&gt;</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>&lt;</span><span>TimelineItem</span><span> </span><span>date</span><span>=</span><span>"2026-08-16"</span><span> </span><span>title</span><span>=</span><span>"新版本发布"</span><span> </span><span>icon</span><span>=</span><span>"rocket"</span><span>&gt;</span></div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>发布了全新版本，带来以下更新：</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>- 新增时间线组件</span></div></div><div><div><div>6</div></div><div><span><span>    </span></span><span>- 改进暗色主题</span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span><span>    </span></span><span>正文里支持 </span><span>**</span><span>Markdown</span><span>**</span><span> 内容。</span></div></div><div><div><div>9</div></div><div><span><span>  </span></span><span>&lt;/</span><span>TimelineItem</span><span>&gt;</span></div></div><div><div><div>10</div></div><div><span><span>  </span></span><span>&lt;</span><span>TimelineItem</span><span> </span><span>date</span><span>=</span><span>"2025-11-02"</span><span> </span><span>title</span><span>=</span><span>"站点上线"</span><span> </span><span>type</span><span>=</span><span>"tip"</span><span> </span><span>icon</span><span>=</span><span>"flag"</span><span>&gt;</span></div></div><div><div><div>11</div></div><div><span><span>    </span></span><span>欢迎来到我的博客。</span></div></div><div><div><div>12</div></div><div><span><span>  </span></span><span>&lt;/</span><span>TimelineItem</span><span>&gt;</span></div></div><div><div><div>13</div></div><div><span><span>  </span></span><span>&lt;</span><span>TimelineItem</span><span> </span><span>date</span><span>=</span><span>"2025-06-15"</span><span> </span><span>title</span><span>=</span><span>"项目立项"</span><span> </span><span>type</span><span>=</span><span>"note"</span><span>&gt;</span></div></div><div><div><div>14</div></div><div><span><span>    </span></span><span>开始规划 Firefly 主题。</span></div></div><div><div><div>15</div></div><div><span><span>  </span></span><span>&lt;/</span><span>TimelineItem</span><span>&gt;</span></div></div><div><div><div>16</div></div><div><span>&lt;/</span><span>Timeline</span><span>&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><ol><li><div><span></span></div><div><div>2026-08-16</div><div>新版本发布</div><div><p>发布了全新版本，带来以下更新：</p><ul>
<li>新增时间线组件</li>
<li>改进暗色主题</li>
</ul><p>正文里支持 <strong>Markdown</strong> 内容。</p></div></div></li><li><div><span></span></div><div><div>2025-11-02</div><div>站点上线</div><div><p>欢迎来到我的博客。</p></div></div></li><li><div></div><div><div>2025-06-15</div><div>项目立项</div><div><p>开始规划 Firefly 主题。</p></div></div></li></ol><hr /></section><section><h3>步骤条：<code>Steps</code> / <code>StepItem</code><a href="#步骤条steps--stepitem"><span>#</span></a></h3><p>编号步骤条，适合教程、部署流程。编号自动生成，无需手动传序号。</p>

<table><thead><tr><th>属性</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td><code>title</code></td><td>否</td><td>步骤标题</td></tr><tr><td><code>type</code></td><td>否</td><td>编号圆颜色，default 为主题色，其余对应提示框色板（tip / note / important / warning / caution）</td></tr><tr><td><code>icon</code></td><td>否</td><td>内置图标名，有图标时显示图标而非数字（star / rocket / git / flag / book / heart / zap / bug / tag / calendar / code / edit）</td></tr><tr><td>正文</td><td>否</td><td><code>&lt;StepItem&gt;</code> 标签内的内容，支持 Markdown</td></tr></tbody></table><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&lt;</span><span>Steps</span><span>&gt;</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>&lt;</span><span>StepItem</span><span> </span><span>title</span><span>=</span><span>"安装依赖"</span><span>&gt;</span></div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>运行 </span><span>`</span><span>pnpm install</span><span>`</span><span>。</span></div></div><div><div><div>4</div></div><div><span><span>  </span></span><span>&lt;/</span><span>StepItem</span><span>&gt;</span></div></div><div><div><div>5</div></div><div><span><span>  </span></span><span>&lt;</span><span>StepItem</span><span> </span><span>title</span><span>=</span><span>"启动开发服务器"</span><span> </span><span>type</span><span>=</span><span>"tip"</span><span> </span><span>icon</span><span>=</span><span>"rocket"</span><span>&gt;</span></div></div><div><div><div>6</div></div><div><span><span>    </span></span><span>运行 </span><span>`</span><span>pnpm dev</span><span>`</span><span>，打开 </span><span>`</span><span>localhost:4321</span><span>`</span><span>。</span></div></div><div><div><div>7</div></div><div><span><span>  </span></span><span>&lt;/</span><span>StepItem</span><span>&gt;</span></div></div><div><div><div>8</div></div><div><span><span>  </span></span><span>&lt;</span><span>StepItem</span><span> </span><span>title</span><span>=</span><span>"编写文章"</span><span>&gt;</span></div></div><div><div><div>9</div></div><div><span><span>    </span></span><span>在 </span><span>`</span><span>src/content/posts/</span><span>`</span><span> 新建 </span><span>`</span><span>.mdx</span><span>`</span><span> 文章。</span></div></div><div><div><div>10</div></div><div><span><span>  </span></span><span>&lt;/</span><span>StepItem</span><span>&gt;</span></div></div><div><div><div>11</div></div><div><span>&lt;/</span><span>Steps</span><span>&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><ol><li><span></span><div><div>安装依赖</div><div><p>运行 <code>pnpm install</code>。</p></div></div></li><li><span><span></span></span><div><div>启动开发服务器</div><div><p>运行 <code>pnpm dev</code>，打开 <code>localhost:4321</code>。</p></div></div></li><li><span></span><div><div>编写文章</div><div><p>在 <code>src/content/posts/</code> 新建 <code>.mdx</code> 文章。</p></div></div></li></ol><hr /></section><section><h3>徽章：<code>Badge</code><a href="#徽章badge"><span>#</span></a></h3><p>内联彩色小徽章，可嵌在段落或标题里。</p>

<table><thead><tr><th>属性</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td><code>type</code></td><td>否</td><td>default 为主题色，其余对应提示框色板（tip / note / important / warning / caution）</td></tr></tbody></table><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&lt;</span><span>Badge</span><span> </span><span>type</span><span>=</span><span>"tip"</span><span>&gt;提示&lt;/</span><span>Badge</span><span>&gt; &lt;</span><span>Badge</span><span> </span><span>type</span><span>=</span><span>"warning"</span><span>&gt;注意&lt;/</span><span>Badge</span><span>&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><span>新功能</span><span>提示</span><span>笔记</span><span>重要</span><span>注意</span><span>危险</span><hr /><p>更多信息，请查看 <a href="https://mdxjs.com/" target="_blank">MDX 文档</a></p></section></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/markdown-extended/</id>
      <title type="text">Markdown 扩展功能</title>
      <published>1970-01-01T00:00:00.000Z</published>
      <updated>1970-01-01T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/markdown-extended/"/>
      <summary type="text">了解 Firefly 中的 Markdown 功能</summary>
      <content type="html"><![CDATA[<section><h2>GitHub 仓库卡片<a href="#github-仓库卡片"><span>#</span></a></h2><p>您可以添加链接到 GitHub 仓库的动态卡片，在页面加载时，仓库信息会从 GitHub API 获取。</p><a href="https://github.com/CuteLeaf/Firefly" target="_blank"><div><div><div><div></div><div>CuteLeaf</div></div><div>/</div><div>Firefly</div></div><div></div></div><div>🍀Firefly, fresh and aesthetic Astro blog theme template. </div><div><div>—</div><div>—</div><div>MIT</div><span>Astro</span></div></a><p>使用代码 <code>::github{repo="CuteLeaf/Firefly"}</code> 创建 GitHub 仓库卡片。</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>::github{repo="CuteLeaf/Firefly"}</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>提醒框(Admonitions)配置<a href="#提醒框admonitions配置"><span>#</span></a></h2><p>Firefly 采用了 <a href="https://github.com/lin-stephanie/rehype-callouts" target="_blank">rehype-callouts</a> 插件，支持了四种风格的提醒框主题：<code>GitHub</code>、<code>Obsidian</code>、<code>VitePress</code> 和 <code>Docusaurus</code>。您可以在 <code>src/config/siteConfig.ts</code> 中进行配置：</p><div><figure><figcaption><span>src/config/siteConfig.ts</span></figcaption><pre><code><div><div><div>1</div></div><div><span>export</span><span> </span><span>const</span><span> </span><span>siteConfig</span><span>:</span><span> </span><span>SiteConfig</span><span> </span><span>=</span><span> {</span></div></div><div><div><div>2</div></div><div><span>  </span><span>// ...</span></div></div><div><div><div>3</div></div><div><span>  </span><span>rehypeCallouts</span><span>:</span><span> {</span></div></div><div><div><div>4</div></div><div><span>    </span><span>// 选项: "github" | "obsidian" | "vitepress" | "docusaurus"</span></div></div><div><div><div>5</div></div><div><span>    </span><span>theme</span><span>:</span><span> </span><span>"github"</span><span>,</span></div></div><div><div><div>6</div></div><div><span><span>  </span></span><span>},</span></div></div><div><div><div>7</div></div><div><span>  </span><span>// ...</span></div></div><div><div><div>8</div></div><div><span>};</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>注意：<strong>更改配置后需要重启开发服务器才能生效。</strong></p><p>以下是各个主题支持的类型列表，每个主题风格和语法不同，可根据喜好选择。</p><section><h3>1. GitHub 主题风格<a href="#1-github-主题风格"><span>#</span></a></h3><p>这是 GitHub 官方支持的 5 种基本类型。</p><p></p><figure><img alt="GitHub" loading="lazy" width="2144" height="1086" src="/_astro/github.urcbElKG_Z1bC9wS.webp" /><figcaption>GitHub</figcaption></figure><p></p><p><strong>基本语法</strong></p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&gt; </span><span>[</span><span>!NOTE</span><span>]</span><span> NOTE</span></div></div><div><div><div>2</div></div><div><span>&gt; 突出显示用户应该考虑的信息。</span></div></div><div><div><div>3</div></div><div>
</div></div><div><div><div>4</div></div><div><span>&gt; </span><span>[</span><span>!TIP</span><span>]</span><span> TIP</span></div></div><div><div><div>5</div></div><div><span>&gt; 可选信息，帮助用户更成功。</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>&gt; </span><span>[</span><span>!IMPORTANT</span><span>]</span><span> IMPORTANT</span></div></div><div><div><div>8</div></div><div><span>&gt; 用户成功所必需的关键信息。</span></div></div><div><div><div>9</div></div><div>
</div></div><div><div><div>10</div></div><div><span>&gt; </span><span>[</span><span>!WARNING</span><span>]</span><span> WARNING</span></div></div><div><div><div>11</div></div><div><span>&gt; 关键内容，需要立即注意。</span></div></div><div><div><div>12</div></div><div>
</div></div><div><div><div>13</div></div><div><span>&gt; </span><span>[</span><span>!CAUTION</span><span>]</span><span> CAUTION</span></div></div><div><div><div>14</div></div><div><span>&gt; 行动的负面潜在后果。</span></div></div><div><div><div>15</div></div><div>
</div></div><div><div><div>16</div></div><div><span>&gt; </span><span>[</span><span>!NOTE</span><span>]</span><span> 自定义标题</span></div></div><div><div><div>17</div></div><div><span>&gt; 这是一个带有自定义标题的示例。</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><hr /></section><section><h3>2. Obsidian 主题风格<a href="#2-obsidian-主题风格"><span>#</span></a></h3><p><a href="https://obsidian.md/" target="_blank">Obsidian</a> 风格支持非常丰富的类型和别名。</p>
点击展开 Obsidian 语法列表<div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&gt; </span><span>[</span><span>!NOTE</span><span>]</span><span> NOTE</span></div></div><div><div><div>2</div></div><div><span>&gt; 通用的笔记块。</span></div></div><div><div><div>3</div></div><div>
</div></div><div><div><div>4</div></div><div><span>&gt; </span><span>[</span><span>!ABSTRACT</span><span>]</span><span> ABSTRACT</span></div></div><div><div><div>5</div></div><div><span>&gt; 文章的摘要。</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>&gt; </span><span>[</span><span>!SUMMARY</span><span>]</span><span> SUMMARY</span></div></div><div><div><div>8</div></div><div><span>&gt; 文章的总结（同 Abstract）。</span></div></div><div><div><div>9</div></div><div>
</div></div><div><div><div>10</div></div><div><span>&gt; </span><span>[</span><span>!TLDR</span><span>]</span><span> TLDR</span></div></div><div><div><div>11</div></div><div><span>&gt; 太长不看（同 Abstract）。</span></div></div><div><div><div>12</div></div><div>
</div></div><div><div><div>13</div></div><div><span>&gt; </span><span>[</span><span>!INFO</span><span>]</span><span> INFO</span></div></div><div><div><div>14</div></div><div><span>&gt; 提供额外信息。</span></div></div><div><div><div>15</div></div><div>
</div></div><div><div><div>16</div></div><div><span>&gt; </span><span>[</span><span>!TODO</span><span>]</span><span> TODO</span></div></div><div><div><div>17</div></div><div><span>&gt; 需要完成的事项。</span></div></div><div><div><div>18</div></div><div>
</div></div><div><div><div>19</div></div><div><span>&gt; </span><span>[</span><span>!TIP</span><span>]</span><span> TIP</span></div></div><div><div><div>20</div></div><div><span>&gt; 实用技巧或提示。</span></div></div><div><div><div>21</div></div><div>
</div></div><div><div><div>22</div></div><div><span>&gt; </span><span>[</span><span>!HINT</span><span>]</span><span> HINT</span></div></div><div><div><div>23</div></div><div><span>&gt; 暗示（同 Tip）。</span></div></div><div><div><div>24</div></div><div>
</div></div><div><div><div>25</div></div><div><span>&gt; </span><span>[</span><span>!IMPORTANT</span><span>]</span><span> IMPORTANT</span></div></div><div><div><div>26</div></div><div><span>&gt; 重要信息（Obsidian 风格通常使用类似的图标）。</span></div></div><div><div><div>27</div></div><div>
</div></div><div><div><div>28</div></div><div><span>&gt; </span><span>[</span><span>!SUCCESS</span><span>]</span><span> SUCCESS</span></div></div><div><div><div>29</div></div><div><span>&gt; 操作成功。</span></div></div><div><div><div>30</div></div><div>
</div></div><div><div><div>31</div></div><div><span>&gt; </span><span>[</span><span>!CHECK</span><span>]</span><span> CHECK</span></div></div><div><div><div>32</div></div><div><span>&gt; 检查通过（同 Success）。</span></div></div><div><div><div>33</div></div><div>
</div></div><div><div><div>34</div></div><div><span>&gt; </span><span>[</span><span>!DONE</span><span>]</span><span> DONE</span></div></div><div><div><div>35</div></div><div><span>&gt; 已完成（同 Success）。</span></div></div><div><div><div>36</div></div><div>
</div></div><div><div><div>37</div></div><div><span>&gt; </span><span>[</span><span>!QUESTION</span><span>]</span><span> QUESTION</span></div></div><div><div><div>38</div></div><div><span>&gt; 提出问题。</span></div></div><div><div><div>39</div></div><div>
</div></div><div><div><div>40</div></div><div><span>&gt; </span><span>[</span><span>!HELP</span><span>]</span><span> HELP</span></div></div><div><div><div>41</div></div><div><span>&gt; 寻求帮助（同 Question）。</span></div></div><div><div><div>42</div></div><div>
</div></div><div><div><div>43</div></div><div><span>&gt; </span><span>[</span><span>!FAQ</span><span>]</span><span> FAQ</span></div></div><div><div><div>44</div></div><div><span>&gt; 常见问题（同 Question）。</span></div></div><div><div><div>45</div></div><div>
</div></div><div><div><div>46</div></div><div><span>&gt; </span><span>[</span><span>!WARNING</span><span>]</span><span> WARNING</span></div></div><div><div><div>47</div></div><div><span>&gt; 警告信息。</span></div></div><div><div><div>48</div></div><div>
</div></div><div><div><div>49</div></div><div><span>&gt; </span><span>[</span><span>!CAUTION</span><span>]</span><span> CAUTION</span></div></div><div><div><div>50</div></div><div><span>&gt; 注意事项（同 Warning）。</span></div></div><div><div><div>51</div></div><div>
</div></div><div><div><div>52</div></div><div><span>&gt; </span><span>[</span><span>!ATTENTION</span><span>]</span><span> ATTENTION</span></div></div><div><div><div>53</div></div><div><span>&gt; 引起注意（同 Warning）。</span></div></div><div><div><div>54</div></div><div>
</div></div><div><div><div>55</div></div><div><span>&gt; </span><span>[</span><span>!FAILURE</span><span>]</span><span> FAILURE</span></div></div><div><div><div>56</div></div><div><span>&gt; 操作失败。</span></div></div><div><div><div>57</div></div><div>
</div></div><div><div><div>58</div></div><div><span>&gt; </span><span>[</span><span>!FAIL</span><span>]</span><span> FAIL</span></div></div><div><div><div>59</div></div><div><span>&gt; 失败（同 Failure）。</span></div></div><div><div><div>60</div></div><div>
</div></div><div><div><div>61</div></div><div><span>&gt; </span><span>[</span><span>!MISSING</span><span>]</span><span> MISSING</span></div></div><div><div><div>62</div></div><div><span>&gt; 缺失内容（同 Failure）。</span></div></div><div><div><div>63</div></div><div>
</div></div><div><div><div>64</div></div><div><span>&gt; </span><span>[</span><span>!DANGER</span><span>]</span><span> DANGER</span></div></div><div><div><div>65</div></div><div><span>&gt; 危险操作警告。</span></div></div><div><div><div>66</div></div><div>
</div></div><div><div><div>67</div></div><div><span>&gt; </span><span>[</span><span>!ERROR</span><span>]</span><span> ERROR</span></div></div><div><div><div>68</div></div><div><span>&gt; 错误信息（同 Danger）。</span></div></div><div><div><div>69</div></div><div>
</div></div><div><div><div>70</div></div><div><span>&gt; </span><span>[</span><span>!BUG</span><span>]</span><span> BUG</span></div></div><div><div><div>71</div></div><div><span>&gt; 报告软件缺陷。</span></div></div><div><div><div>72</div></div><div>
</div></div><div><div><div>73</div></div><div><span>&gt; </span><span>[</span><span>!EXAMPLE</span><span>]</span><span> EXAMPLE</span></div></div><div><div><div>74</div></div><div><span>&gt; 展示一个例子。</span></div></div><div><div><div>75</div></div><div>
</div></div><div><div><div>76</div></div><div><span>&gt; </span><span>[</span><span>!QUOTE</span><span>]</span><span> QUOTE</span></div></div><div><div><div>77</div></div><div><span>&gt; 引用一段话。</span></div></div><div><div><div>78</div></div><div>
</div></div><div><div><div>79</div></div><div><span>&gt; </span><span>[</span><span>!CITE</span><span>]</span><span> CITE</span></div></div><div><div><div>80</div></div><div><span>&gt; 引证（同 Quote）。</span></div></div><div><div><div>81</div></div><div>
</div></div><div><div><div>82</div></div><div><span>&gt; </span><span>[</span><span>!NOTE</span><span>]</span><span> 自定义标题</span></div></div><div><div><div>83</div></div><div><span>&gt; 这是一个带有自定义标题的示例。</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p></p><figure><img alt="Obsidian" loading="lazy" width="2144" height="1320" src="/_astro/obsidian.Cwb2iYzd_1I7Wom.webp" /><figcaption>Obsidian</figcaption></figure><p></p><hr /></section><section><h3>3. VitePress 主题风格<a href="#3-vitepress-主题风格"><span>#</span></a></h3><p><a href="https://vitepress.dev/" target="_blank">VitePress</a> 风格提供了一套现代化的、扁平的默认样式。目前仅包含与 GitHub 一致的 <strong>5 种</strong> 基础类型。</p>
点击展开 VitePress 语法列表<div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&gt; </span><span>[</span><span>!NOTE</span><span>]</span><span> NOTE</span></div></div><div><div><div>2</div></div><div><span>&gt; 对应 GitHub 的 Note。</span></div></div><div><div><div>3</div></div><div>
</div></div><div><div><div>4</div></div><div><span>&gt; </span><span>[</span><span>!TIP</span><span>]</span><span> TIP</span></div></div><div><div><div>5</div></div><div><span>&gt; 对应 GitHub 的 Tip。</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>&gt; </span><span>[</span><span>!IMPORTANT</span><span>]</span><span> IMPORTANT</span></div></div><div><div><div>8</div></div><div><span>&gt; 对应 GitHub 的 Important。</span></div></div><div><div><div>9</div></div><div>
</div></div><div><div><div>10</div></div><div><span>&gt; </span><span>[</span><span>!WARNING</span><span>]</span><span> WARNING</span></div></div><div><div><div>11</div></div><div><span>&gt; 对应 GitHub 的 Warning。</span></div></div><div><div><div>12</div></div><div>
</div></div><div><div><div>13</div></div><div><span>&gt; </span><span>[</span><span>!CAUTION</span><span>]</span><span> CAUTION</span></div></div><div><div><div>14</div></div><div><span>&gt; 对应 GitHub 的 Caution。</span></div></div><div><div><div>15</div></div><div>
</div></div><div><div><div>16</div></div><div><span>&gt; </span><span>[</span><span>!TIP</span><span>]</span><span> 自定义标题</span></div></div><div><div><div>17</div></div><div><span>&gt; VitePress 风格同样支持自定义标题。</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p></p><figure><img alt="VitePress" loading="lazy" width="2144" height="1318" src="/_astro/vitepress.D2YnjBWE_Z1rUl1H.webp" /><figcaption>VitePress</figcaption></figure><p></p><hr /></section><section><h3>4. Docusaurus 主题风格<a href="#4-docusaurus-主题风格"><span>#</span></a></h3><p><a href="https://docusaurus.io/docs/markdown-features/admonitions" target="_blank">Docusaurus</a> 风格提供了一套现代化的提醒框样式，支持 5 种类型。</p>
点击展开 Docusaurus 语法列表 <p>支持以下类型的提醒框：<code>note</code> <code>tip</code> <code>info</code> <code>warning</code> <code>danger</code></p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>:::note</span></div></div><div><div><div>2</div></div><div><span>突出显示用户应该考虑的信息，即使在快速浏览时也是如此。</span></div></div><div><div><div>3</div></div><div><span>:::</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>:::tip</span></div></div><div><div><div>6</div></div><div><span>可选信息，帮助用户更成功。</span></div></div><div><div><div>7</div></div><div><span>:::</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>:::info</span></div></div><div><div><div>10</div></div><div><span>一般信息。</span></div></div><div><div><div>11</div></div><div><span>:::</span></div></div><div><div><div>12</div></div><div>
</div></div><div><div><div>13</div></div><div><span>:::warning</span></div></div><div><div><div>14</div></div><div><span>由于潜在风险需要用户立即注意的关键内容。</span></div></div><div><div><div>15</div></div><div><span>:::</span></div></div><div><div><div>16</div></div><div>
</div></div><div><div><div>17</div></div><div><span>:::danger</span></div></div><div><div><div>18</div></div><div><span>行动的负面潜在后果。</span></div></div><div><div><div>19</div></div><div><span>:::</span></div></div><div><div><div>20</div></div><div>
</div></div><div><div><div>21</div></div><div><span>:::tip</span><span>[</span><span>自定义标题</span><span>]</span></div></div><div><div><div>22</div></div><div><span>可选信息，帮助用户更成功。</span></div></div><div><div><div>23</div></div><div><span>:::</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><p></p><figure><img alt="Docusaurus" loading="lazy" width="2158" height="1394" src="/_astro/docusaurus.Cu-On_k2_Zy4rHX.webp" /><figcaption>Docusaurus</figcaption></figure><p></p><hr /></section></section>
<section><h2>剧透<a href="#剧透"><span>#</span></a></h2><p>您可以为文本添加剧透。文本也支持 <strong>Markdown</strong> 语法。</p><p>内容 被隐藏了 <strong>哈哈</strong>！</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>内容 :spoiler[被隐藏了 </span><span>**哈哈**</span><span>]！</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>图片画廊网格 (Image Grid)<a href="#图片画廊网格-image-grid"><span>#</span></a></h2><p>您可以使用 <code>[grid]</code> 和 <code>[/grid]</code> 标签将多张图片纵向并排展示。这对于展示照片画廊或对比图非常有用。系统会自动根据包裹在其中的图片数量（最多支持并排展示4张）以响应式网格进行布局。</p><p><strong>自动补齐图片高度：</strong> 同一排中如果有高度、大小或者比例不一的图片，会像「九宫格画廊相册」一样自动撑满。较短或不协调的图片会自动使用 object-cover 进行完美中心裁剪补充视野。图片边框水平彻底对齐无缝隙，但被裁剪后，只有点击图片通过灯箱才能查看完整图片，所以建议尽量避免使用长宽比例不一致的图片在同一排中。</p><p><strong>图注恒定底端对齐：</strong> 不论上面的图片长宽如何变化，在同一行的所有图像解释文字（图注）都会对标到一条完美的水平基线上了。</p><div><figure><img alt="示例图片一" loading="lazy" width="3328" height="1872" src="/_astro/firefly1.CZCuCN4V_1dgNYg.webp" /><figcaption>示例图片一</figcaption></figure><figure><img alt="示例图片二" loading="lazy" width="4096" height="2212" src="/_astro/firefly2.dxmXG905_ZyJm5m.webp" /><figcaption>示例图片二</figcaption></figure><figure><img alt="示例图片二" loading="lazy" width="3840" height="2160" src="/_astro/firefly3.CGzFXcxi_Z1Lz6q8.webp" /><figcaption>示例图片二</figcaption></figure></div><p><strong>基本语法</strong></p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[</span><span>grid</span><span>]</span></div></div><div><div><div>2</div></div><div><span>![</span><span>示例图片一</span><span>]</span><span><span>(</span><span>./images/firefly1.avif</span><span>)</span></span></div></div><div><div><div>3</div></div><div><span>![</span><span>示例图片二</span><span>]</span><span><span>(</span><span>./images/firefly2.avif</span><span>)</span></span></div></div><div><div><div>4</div></div><div><span>![</span><span>示例图片二</span><span>]</span><span><span>(</span><span>./images/firefly3.avif</span><span>)</span></span></div></div><div><div><div>5</div></div><div><span>[</span><span>/grid</span><span>]</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/markdown-mermaid/</id>
      <title type="text">Markdown Mermaid 图表</title>
      <published>1970-01-01T00:00:00.000Z</published>
      <updated>1970-01-01T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/markdown-mermaid/"/>
      <summary type="text">一个包含 Mermaid 的 Markdown 博客文章简单示例。</summary>
      <content type="html"><![CDATA[<section><h2>Markdown 中 Mermaid 图表完整指南<a href="#markdown-中-mermaid-图表完整指南"><span>#</span></a></h2><p>本文演示如何在 Markdown 文档中使用 Mermaid 创建各种复杂图表，包括流程图、时序图、ER 图、类图、状态图、XY 图、甘特图、思维导图等。</p><blockquote><p>Mermaid 图表由 <a href="https://github.com/Latias94/merman" target="_blank">Merman</a> 实现。Firefly 在 Astro 构建阶段生成亮色和深色两套静态 SVG，无需在浏览器中加载 Mermaid 渲染运行时。可以前往 <a href="http://frankorz.com/merman/" target="_blank">Merman Playground</a> 实时编辑语法并预览渲染结果。</p></blockquote></section>
<section><h2>流程图示例<a href="#流程图示例"><span>#</span></a></h2><p>流程图非常适合表示流程或算法步骤。</p><div><div><div><div><span></span></div><div><span><p>是</p></span></div><div><span><p>否</p></span></div><div><span><p>选项 1</p></span></div><div><span><p>选项 2</p></span></div><div><span><p>选项 3</p></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span><p>子过程详情</p></span></div><div><span></span></div><div><span></span></div><div><span><p>子步骤 1</p></span></div><div><span><p>子步骤 2</p></span></div><div><span><p>子步骤 3</p></span></div><div><span><p>开始</p></span></div><div><span><p>条件检查</p></span></div><div><span><p>处理步骤 1</p></span></div><div><span><p>处理步骤 2</p></span></div><div><span><p>另一个决策</p></span></div><div><span><p>结果 1</p></span></div><div><span><p>结果 2</p></span></div><div><span><p>结果 3</p></span></div><div><span><p>结束</p></span></div>
</div><div><div><span></span></div><div><span><p>是</p></span></div><div><span><p>否</p></span></div><div><span><p>选项 1</p></span></div><div><span><p>选项 2</p></span></div><div><span><p>选项 3</p></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span><p>子过程详情</p></span></div><div><span></span></div><div><span></span></div><div><span><p>子步骤 1</p></span></div><div><span><p>子步骤 2</p></span></div><div><span><p>子步骤 3</p></span></div><div><span><p>开始</p></span></div><div><span><p>条件检查</p></span></div><div><span><p>处理步骤 1</p></span></div><div><span><p>处理步骤 2</p></span></div><div><span><p>另一个决策</p></span></div><div><span><p>结果 1</p></span></div><div><span><p>结果 2</p></span></div><div><span><p>结果 3</p></span></div><div><span><p>结束</p></span></div>
</div></div></div></section>
<section><h2>时序图示例<a href="#时序图示例"><span>#</span></a></h2><p>时序图显示对象之间随时间的交互。</p><div><div><div>数据库服务器网页应用用户数据库服务器网页应用用户alt[认证成功][认证失败]提交登录请求发送认证请求查询用户凭据返回用户数据返回认证结果显示欢迎页面请求用户数据获取用户偏好返回偏好设置返回用户数据加载个性化界面显示错误消息提示重新输入
</div><div>数据库服务器网页应用用户数据库服务器网页应用用户alt[认证成功][认证失败]提交登录请求发送认证请求查询用户凭据返回用户数据返回认证结果显示欢迎页面请求用户数据获取用户偏好返回偏好设置返回用户数据加载个性化界面显示错误消息提示重新输入
</div></div></div></section>
<section><h2>ER 图示例<a href="#er-图示例"><span>#</span></a></h2><p>ER 图（实体关系图）非常适合表示数据库结构。</p><div><div><div>

<div><span><p>writes</p></span></div><div><span><p>posts</p></span></div><div><span><p>has</p></span></div><div><span><p>belongs to</p></span></div>
<div><span><p>USER</p></span></div><div><span><p>int</p></span></div><div><span><p>id</p></span></div><div><span><p>PK</p></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>username</p></span></div><div><span></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>email</p></span></div><div><span></span></div><div><span></span></div><div><span><p>datetime</p></span></div><div><span><p>created_at</p></span></div><div><span></span></div><div><span></span></div><div><span><p>ARTICLE</p></span></div><div><span><p>int</p></span></div><div><span><p>id</p></span></div><div><span><p>PK</p></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>title</p></span></div><div><span></span></div><div><span></span></div><div><span><p>text</p></span></div><div><span><p>content</p></span></div><div><span></span></div><div><span></span></div><div><span><p>datetime</p></span></div><div><span><p>published</p></span></div><div><span></span></div><div><span></span></div><div><span><p>int</p></span></div><div><span><p>author_id</p></span></div><div><span><p>FK</p></span></div><div><span></span></div><div><span><p>COMMENT</p></span></div><div><span><p>int</p></span></div><div><span><p>id</p></span></div><div><span><p>PK</p></span></div><div><span></span></div><div><span><p>text</p></span></div><div><span><p>content</p></span></div><div><span></span></div><div><span></span></div><div><span><p>datetime</p></span></div><div><span><p>created_at</p></span></div><div><span></span></div><div><span></span></div><div><span><p>int</p></span></div><div><span><p>user_id</p></span></div><div><span><p>FK</p></span></div><div><span></span></div><div><span><p>int</p></span></div><div><span><p>article_id</p></span></div><div><span><p>FK</p></span></div><div><span></span></div><div><span><p>CATEGORY</p></span></div><div><span><p>int</p></span></div><div><span><p>id</p></span></div><div><span><p>PK</p></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>name</p></span></div><div><span></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>description</p></span></div><div><span></span></div><div><span></span></div>

</div><div>

<div><span><p>writes</p></span></div><div><span><p>posts</p></span></div><div><span><p>has</p></span></div><div><span><p>belongs to</p></span></div>
<div><span><p>USER</p></span></div><div><span><p>int</p></span></div><div><span><p>id</p></span></div><div><span><p>PK</p></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>username</p></span></div><div><span></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>email</p></span></div><div><span></span></div><div><span></span></div><div><span><p>datetime</p></span></div><div><span><p>created_at</p></span></div><div><span></span></div><div><span></span></div><div><span><p>ARTICLE</p></span></div><div><span><p>int</p></span></div><div><span><p>id</p></span></div><div><span><p>PK</p></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>title</p></span></div><div><span></span></div><div><span></span></div><div><span><p>text</p></span></div><div><span><p>content</p></span></div><div><span></span></div><div><span></span></div><div><span><p>datetime</p></span></div><div><span><p>published</p></span></div><div><span></span></div><div><span></span></div><div><span><p>int</p></span></div><div><span><p>author_id</p></span></div><div><span><p>FK</p></span></div><div><span></span></div><div><span><p>COMMENT</p></span></div><div><span><p>int</p></span></div><div><span><p>id</p></span></div><div><span><p>PK</p></span></div><div><span></span></div><div><span><p>text</p></span></div><div><span><p>content</p></span></div><div><span></span></div><div><span></span></div><div><span><p>datetime</p></span></div><div><span><p>created_at</p></span></div><div><span></span></div><div><span></span></div><div><span><p>int</p></span></div><div><span><p>user_id</p></span></div><div><span><p>FK</p></span></div><div><span></span></div><div><span><p>int</p></span></div><div><span><p>article_id</p></span></div><div><span><p>FK</p></span></div><div><span></span></div><div><span><p>CATEGORY</p></span></div><div><span><p>int</p></span></div><div><span><p>id</p></span></div><div><span><p>PK</p></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>name</p></span></div><div><span></span></div><div><span></span></div><div><span><p>string</p></span></div><div><span><p>description</p></span></div><div><span></span></div><div><span></span></div>

</div></div></div></section>
<section><h2>类图示例<a href="#类图示例"><span>#</span></a></h2><p>类图显示系统的静态结构，包括类、属性、方法及其关系。</p><div><div><div><div><span><p>写作</p></span></div><div><span><p>发表</p></span></div><div><span><p>拥有</p></span></div><div><span><p>属于</p></span></div><div><span><p>1</p></span></div><div><span><p>1</p></span></div><div><span><p>1</p></span></div><div><span><p>1</p></span></div><div><span><p>*</p></span></div><div><span><p>*</p></span></div><div><span><p>*</p></span></div><div><span><p>*</p></span></div><div><span><p>User</p></span></div><div><span><p>+String username</p></span></div><div><span><p>+String password</p></span></div><div><span><p>+String email</p></span></div><div><span><p>+Boolean active</p></span></div><div><span><p>+login()</p></span></div><div><span><p>+logout()</p></span></div><div><span><p>+updateProfile()</p></span></div><div><span><p>Article</p></span></div><div><span><p>+String title</p></span></div><div><span><p>+String content</p></span></div><div><span><p>+Date publishDate</p></span></div><div><span><p>+Boolean published</p></span></div><div><span><p>+publish()</p></span></div><div><span><p>+edit()</p></span></div><div><span><p>+delete()</p></span></div><div><span><p>Comment</p></span></div><div><span><p>+String content</p></span></div><div><span><p>+Date commentDate</p></span></div><div><span><p>+addComment()</p></span></div><div><span><p>+deleteComment()</p></span></div><div><span><p>Category</p></span></div><div><span><p>+String name</p></span></div><div><span><p>+String description</p></span></div><div><span><p>+addArticle()</p></span></div><div><span><p>+removeArticle()</p></span></div></div><div><div><span><p>写作</p></span></div><div><span><p>发表</p></span></div><div><span><p>拥有</p></span></div><div><span><p>属于</p></span></div><div><span><p>1</p></span></div><div><span><p>1</p></span></div><div><span><p>1</p></span></div><div><span><p>1</p></span></div><div><span><p>*</p></span></div><div><span><p>*</p></span></div><div><span><p>*</p></span></div><div><span><p>*</p></span></div><div><span><p>User</p></span></div><div><span><p>+String username</p></span></div><div><span><p>+String password</p></span></div><div><span><p>+String email</p></span></div><div><span><p>+Boolean active</p></span></div><div><span><p>+login()</p></span></div><div><span><p>+logout()</p></span></div><div><span><p>+updateProfile()</p></span></div><div><span><p>Article</p></span></div><div><span><p>+String title</p></span></div><div><span><p>+String content</p></span></div><div><span><p>+Date publishDate</p></span></div><div><span><p>+Boolean published</p></span></div><div><span><p>+publish()</p></span></div><div><span><p>+edit()</p></span></div><div><span><p>+delete()</p></span></div><div><span><p>Comment</p></span></div><div><span><p>+String content</p></span></div><div><span><p>+Date commentDate</p></span></div><div><span><p>+addComment()</p></span></div><div><span><p>+deleteComment()</p></span></div><div><span><p>Category</p></span></div><div><span><p>+String name</p></span></div><div><span><p>+String description</p></span></div><div><span><p>+addArticle()</p></span></div><div><span><p>+removeArticle()</p></span></div></div></div></div></section>
<section><h2>状态图示例<a href="#状态图示例"><span>#</span></a></h2><p>状态图显示对象在其生命周期中经历的状态序列。</p><div><div><div><div><span></span></div><div><span><p>提交</p></span></div><div><span><p>拒绝</p></span></div><div><span><p>批准</p></span></div><div><span><p>发布</p></span></div><div><span><p>归档</p></span></div><div><span><p>撤回</p></span></div><div><span></span></div><div><span><p>草稿</p></span></div><div><span><p>审核中</p></span></div><div><span><p>已批准</p></span></div><div><span><p>已归档</p></span></div><div><span>已发布</span></div><div><span></span></div><div><span><p>临时隐藏</p></span></div><div><span><p>恢复</p></span></div><div><span></span></div><div><span></span></div><div><span><p>活跃</p></span></div><div><span><p>隐藏</p></span></div>
</div><div><div><span></span></div><div><span><p>提交</p></span></div><div><span><p>拒绝</p></span></div><div><span><p>批准</p></span></div><div><span><p>发布</p></span></div><div><span><p>归档</p></span></div><div><span><p>撤回</p></span></div><div><span></span></div><div><span><p>草稿</p></span></div><div><span><p>审核中</p></span></div><div><span><p>已批准</p></span></div><div><span><p>已归档</p></span></div><div><span>已发布</span></div><div><span></span></div><div><span><p>临时隐藏</p></span></div><div><span><p>恢复</p></span></div><div><span></span></div><div><span></span></div><div><span><p>活跃</p></span></div><div><span><p>隐藏</p></span></div>
</div></div></div></section>
<section><h2>XY 图示例<a href="#xy-图示例"><span>#</span></a></h2><p>XY 图表非常适合展示趋势和对比数据。</p><div><div><div>月度访问量趋势1月2月3月4月5月6月5000450040003500300025002000150010005000访问量
</div><div>月度访问量趋势1月2月3月4月5月6月5000450040003500300025002000150010005000访问量
</div></div></div></section>
<section><h2>饼图示例<a href="#饼图示例"><span>#</span></a></h2><p>饼图适合直观展示各部分在整体中的占比。</p><div><div><div>45%30%15%10%内容类型占比技术文章 [45]项目记录 [30]生活随笔 [15]其他 [10]
</div><div>45%30%15%10%内容类型占比技术文章 [45]项目记录 [30]生活随笔 [15]其他 [10]
</div></div></div></section>
<section><h2>甘特图示例<a href="#甘特图示例"><span>#</span></a></h2><p>甘特图可以按时间轴展示项目阶段、任务依赖和当前进度。</p><div><div><div>07/0107/0307/0507/0707/0907/1107/1307/1507/17需求整理 视觉设计 功能实现 内容迁移 构建检查 正式上线 准备开发发布博客版本发布计划
</div><div>07/0107/0307/0507/0707/0907/1107/1307/1507/17需求整理 视觉设计 功能实现 内容迁移 构建检查 正式上线 准备开发发布博客版本发布计划
</div></div></div></section>
<section><h2>思维导图示例<a href="#思维导图示例"><span>#</span></a></h2><p>思维导图适合梳理主题层级和知识结构。</p><div><div><div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span><p>Firefly</p></span></div><div><span><p>内容</p></span></div><div><span><p>技术文章</p></span></div><div><span><p>生活记录</p></span></div><div><span><p>体验</p></span></div><div><span><p>搜索</p></span></div><div><span><p>深色模式</p></span></div><div><span><p>图表</p></span></div><div><span><p>工程</p></span></div><div><span><p>Astro</p></span></div><div><span><p>Svelte</p></span></div><div><span><p>Merman</p></span></div>
</div><div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span></span></div><div><span><p>Firefly</p></span></div><div><span><p>内容</p></span></div><div><span><p>技术文章</p></span></div><div><span><p>生活记录</p></span></div><div><span><p>体验</p></span></div><div><span><p>搜索</p></span></div><div><span><p>深色模式</p></span></div><div><span><p>图表</p></span></div><div><span><p>工程</p></span></div><div><span><p>Astro</p></span></div><div><span><p>Svelte</p></span></div><div><span><p>Merman</p></span></div>
</div></div></div></section>
<section><h2>时间线示例<a href="#时间线示例"><span>#</span></a></h2><p>时间线用于按年份或阶段呈现项目的重要事件。</p><div><div><div>2024建立博客完成基础主题2025加入搜索与图库完善内容系统2026升级   Astro   7使用   Merman   渲染图表Firefly 演进时间线
</div><div>2024建立博客完成基础主题2025加入搜索与图库完善内容系统2026升级   Astro   7使用   Merman   渲染图表Firefly 演进时间线
</div></div></div></section>
<section><h2>用户旅程图示例<a href="#用户旅程图示例"><span>#</span></a></h2><p>用户旅程图能够描述用户在不同阶段的行为和体验评分。</p><div><div><div>读者<div><div>发现内容</div></div>发现内容读者<div><div>      打开首页</div></div>      打开首页读者<div><div>      搜索主题</div></div>      搜索主题<div><div>阅读文章</div></div>阅读文章读者<div><div>      浏览正文</div></div>      浏览正文读者<div><div>      查看图表</div></div>      查看图表<div><div>继续探索</div></div>继续探索读者<div><div>      查看相关文章</div></div>      查看相关文章读者<div><div>      分享文章</div></div>      分享文章读者浏览文章的旅程
</div><div>读者<div><div>发现内容</div></div>发现内容读者<div><div>      打开首页</div></div>      打开首页读者<div><div>      搜索主题</div></div>      搜索主题<div><div>阅读文章</div></div>阅读文章读者<div><div>      浏览正文</div></div>      浏览正文读者<div><div>      查看图表</div></div>      查看图表<div><div>继续探索</div></div>继续探索读者<div><div>      查看相关文章</div></div>      查看相关文章读者<div><div>      分享文章</div></div>      分享文章读者浏览文章的旅程
</div></div></div></section>
<section><h2>Git 图示例<a href="#git-图示例"><span>#</span></a></h2><p>Git 图可以清晰展示分支、提交和合并历史。</p><div><div><div>mainfeatureinitadd-diagramspolish-themesmerge-featurerelease
</div><div>mainfeatureinitadd-diagramspolish-themesmerge-featurerelease
</div></div></div></section>
<section><h2>看板示例<a href="#看板示例"><span>#</span></a></h2><p>看板适合展示任务在不同工作阶段之间的分布。</p><div><div><div><div><span><p>待办</p></span></div><div><span><p>进行中</p></span></div><div><span><p>已完成</p></span></div><div><span><p>整理需求</p></span></div><div><span></span></div><div><span></span></div><div><span><p>准备示例</p></span></div><div><span></span></div><div><span></span></div><div><span><p>接入 Merman</p></span></div><div><span></span></div><div><span></span></div><div><span><p>服务端渲染</p></span></div><div><span></span></div><div><span></span></div><div><span><p>亮暗主题</p></span></div><div><span></span></div><div><span></span></div>
</div><div><div><span><p>待办</p></span></div><div><span><p>进行中</p></span></div><div><span><p>已完成</p></span></div><div><span><p>整理需求</p></span></div><div><span></span></div><div><span></span></div><div><span><p>准备示例</p></span></div><div><span></span></div><div><span></span></div><div><span><p>接入 Merman</p></span></div><div><span></span></div><div><span></span></div><div><span><p>服务端渲染</p></span></div><div><span></span></div><div><span></span></div><div><span><p>亮暗主题</p></span></div><div><span></span></div><div><span></span></div>
</div></div></div></section>
<section><h2>Sankey 图示例<a href="#sankey-图示例"><span>#</span></a></h2><p>Sankey 图通过连线宽度展示流量在不同节点之间的流向。</p><div><div><div>Home
1650Post list
1200Search
450Post detail
1220Related posts
260External shares
180</div><div>Home
1650Post list
1200Search
450Post detail
1220Related posts
260External shares
180</div></div></div></section>
<section><h2>总结<a href="#总结"><span>#</span></a></h2><p>Mermaid 是在 Markdown 文档中创建各种类型图表的强大工具。本文演示了流程图、时序图、ER 图、类图、状态图、XY 图、饼图、甘特图、思维导图、时间线、用户旅程图、Git 图、看板和 Sankey 图。这些图表可以帮助您更清晰地表达复杂的概念、流程和数据结构。</p><p>要使用 Mermaid，只需在代码块中指定 mermaid 语言，并使用简洁的文本语法描述图表。图表会在构建时自动渲染为 SVG，无需客户端 JavaScript 加载。</p><p>可以前往 <a href="http://frankorz.com/merman/" target="_blank">Merman Playground</a> 尝试更多语法，再将图表代码粘贴到文章中。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/markdown-plantuml/</id>
      <title type="text">Markdown PlantUML 图表</title>
      <published>1970-01-01T00:00:00.000Z</published>
      <updated>1970-01-01T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/markdown-plantuml/"/>
      <summary type="text">用于验证 Firefly 中 PlantUML 插件渲染、主题切换与交互能力的示例文章。</summary>
      <content type="html"><![CDATA[<section><h2>Markdown 中 PlantUML 图表指南<a href="#markdown-中-plantuml-图表指南"><span>#</span></a></h2><p>PlantUML 是一种使用纯文本描述图表的工具。你只需要写一段结构化语法，就可以生成时序图、类图、用例图、活动图等常见工程图。</p><p>它特别适合写在技术博客和项目文档里：</p><ul>
<li>图表和正文一起版本管理，便于协作与审阅</li>
<li>修改图只需要改文本，适合频繁迭代</li>
<li>能和 Markdown 无缝结合，保持文档统一</li>
</ul><p>在 Firefly 中，<code>plantuml</code> 代码块会在构建阶段编码并生成服务器 SVG 地址，页面端再根据亮暗主题自动切换图源，并支持缩放、拖拽和全屏交互。</p><p>如果你想快速上手，可以记住这个最小模板：</p><div><div><img alt="@startuml
Alice -&gt; Bob: Hello
Bob --&gt; Alice: Hi
@enduml" src="https://www.plantuml.com/plantuml/svg/SoWkIImgAStDuNBCoKnELT2rKt3AJx9Iy4ZDoSddSifFKj3LjLC0orafU6HoEQJcfPJcvW00" loading="lazy" /></div></div></section>
<section><h2>活动图示例<a href="#活动图示例"><span>#</span></a></h2><div><div><img alt="@startuml
start
:用户提交订单;
if (库存充足?) then (是)
	:冻结库存;
	:创建支付单;
	if (支付成功?) then (是)
		:生成发货单;
		:通知仓库拣货;
	else (否)
		:取消订单;
		:释放库存;
	endif
else (否)
	:提示缺货;
endif
stop
@enduml" src="https://www.plantuml.com/plantuml/svg/NOuz2i9048NhtLEaZ5VO57eLmHM56CN4taODYYHYbA15mFz6BHI5ZNYQp6oyXMI38dRpcFTzl9BjbDjEfs5ITL0cWmEwT_JyH6pIqmh6CuFMgveEOWh747gzz7Of5ZIdnYrDn_1Se8H1FvRnD6yOMNQN40iCpaaSAW7937b6ruTXz6SWJ0PHzl4cwNMV8uIzkWiPRHDbnj4wlUuDIhXfSqq7VwSmyEPuSpyxCsOmnE3vdSAjIhrAVnc6dYytGZw4ykK5sscsQ8bRbKx3V0C0" loading="lazy" /></div></div></section>
<section><h2>状态图示例<a href="#状态图示例"><span>#</span></a></h2><div><div><img alt="@startuml
[*] --&gt; 草稿

草稿 --&gt; 待审核 : 提交
待审核 --&gt; 草稿 : 驳回
待审核 --&gt; 已发布 : 审核通过
已发布 --&gt; 已归档 : 到期归档
已发布 --&gt; 草稿 : 撤回修改

state 已发布 {
	[*] --&gt; 可见
	可见 --&gt; 隐藏 : 手动隐藏
	隐藏 --&gt; 可见 : 恢复展示
}

已归档 --&gt; [*]
@enduml" src="https://www.plantuml.com/plantuml/svg/SoWkIImgAStDuOhMYbNGrRLJUD7R-Np5VYuk20qMUhglzUcwXSyMx52mKdZMF-79hYLS22647WKhXPShDp-TFGzDzkdsJK_x9pxTqQnWfG0HVjamwyN-TYw414pPtadF5Yu6AUlOy6pEV0WNJHdShcUJbZoTFU_9_dNFfkpauYekIIn9HRAgceiJvgEd_UjVB6_aueJGOA6NioQycDuFCgIp-sdN2WYNYnCgZD04Kj6uwEcItgSRfpvViekhbeiBuKoGicYjM2w7rBoKqjmS0000" loading="lazy" /></div></div></section>
<section><h2>用例图示例<a href="#用例图示例"><span>#</span></a></h2><div><div><img alt="@startuml
left to right direction
actor 游客
actor 用户
actor 管理员

rectangle 博客系统 {
	usecase &quot;浏览文章&quot; as UC1
	usecase &quot;搜索内容&quot; as UC2
	usecase &quot;发表评论&quot; as UC3
	usecase &quot;点赞收藏&quot; as UC4
	usecase &quot;审核评论&quot; as UC5
	usec" src="https://www.plantuml.com/plantuml/svg/PP3BJi9058RNdASuOSz2Raj3uZFm09CoOfFI9krqPTm88XjJI8WQGv1s8ud9i02qoFFCvJ6CCf8EBh_pvJyvvsz5Z8GixddWqKk6BC3GxLunxBWXTPWR-40S5eGeyrpmp82QBkNeymzugiP3CNa6-8aGl-jH50ylWcTglLVxLxo6KXnHXqGKotARwBUHVBnNxuioaWZR5sT5FPwfJIQ6TuBlZAuMj4WcEbtgrK3pBwDh1QrkTtexbzCF_PGONI-cUIeNkPLksCj5thTEQy8DmE5rh5JEVu-ri0g7BexMmXDRix4En-hCfF5lqeGMzJjnp_i6" loading="lazy" /></div></div></section>
<section><h2>组件图示例<a href="#组件图示例"><span>#</span></a></h2><div><div><img alt="@startuml
package &quot;Firefly Site&quot; {
	[Astro App] as App
	[Markdown Parser] as Parser
	[PlantUML Encoder] as Encoder
	[Theme Switcher] as Theme
	[Search Indexer] as Search
}

cloud &quot;PlantUML Server&quot; as " src="https://www.plantuml.com/plantuml/svg/JL51QiCm43nxNp7u7dht8IIK5WeD15oVJ0-oj8sDPKcLvAIbzEz5YX9wqZ2pxCoiTY4A7zT5anDo5YT6_Jnv_j3VQAV8DNwewlSXUekzS-yG8RrKzGVXPsKl1aVX0_kiN25L_L4B4xl3AvwCjAge1LFLlusyCDhB5ELOn4nHrRSil1pnOXH_5UbAqI-Hr7PLgE_RM_PdzdMsxaY9A0OH6FMZDP5DH1kjvomNXcZl73QRROcA1Yu1BAKD5JwDbBnem1d19TzrqHYqbNEWsq3Urw61vy-LGqGud-v6rwuDGcuB9VpyeAVJ616yl4-LsWs6TT8ABdt4b6xmFz2jLZ8I2iw666Z7HgsB_WC0" loading="lazy" /></div></div></section>
<section><h2>部署图示例<a href="#部署图示例"><span>#</span></a></h2><div><div><img alt="@startuml
node &quot;User Device&quot; {
	artifact &quot;Browser&quot;
}

node &quot;CDN / Edge&quot; {
	artifact &quot;Static Assets&quot;
}

node &quot;Cloudflare Worker&quot; {
	artifact &quot;SSR Handler&quot;
}

node &quot;PlantUML Service&quot; {
	artifact &quot;SVG Re" src="https://www.plantuml.com/plantuml/svg/ROz1Jy9044RFxg_uqZlfdOD1WS11r53Hyz2TraAxYpDJE1Z_kqb3J6azxtkpxvkfaLZRr2v4pqXsoe85dwkS4toxEnAh2ieDoQF4Yx8axiTTsVdY6IcMlXoYcP5LEHvKsRGlrB7rHKt2-8XoP1bwsHPh2hw--UQrfc2xpHCobd-wilSLjXmyozNoPBGdPIGl-mFdXioYq2XoGtBqyH8mZy4uMEV-hSHaSZySWYbMopSSDCrLqwefHtYl7rC8VxMiXXELx6uVEtnKq3daSOfgezlzcPYYOCi_uIigXHhekNGp3hvjwby0" loading="lazy" /></div></div></section>
<section><h2>ER 图示例<a href="#er-图示例"><span>#</span></a></h2><div><div><img alt="@startuml
entity User {
	*id : uuid &lt;&lt;PK&gt;&gt;
	--
	username : varchar
	email : varchar
	created_at : datetime
}

entity Post {
	*id : uuid &lt;&lt;PK&gt;&gt;
	--
	author_id : uuid &lt;&lt;FK&gt;&gt;
	title : varchar
	content : " src="https://www.plantuml.com/plantuml/svg/VP2x2W9134NhoLUa5lO71X51iB6niPRiJc07vY6JZ0_KVvTTKHGVRKwIavkvA1MjCG0dzNh2ZN31CvY9TsYnLkzmEbslPZCmJGEc2fT4aT7YdahNKm73aNnuBNI5ITbjIT6Y8sNraU4A3ySwY_vnKDK-b-qhN8vGlOOtSvUJSXeioaS5iwjjyDB_KIzoZCF4R_ikYtvn3y6_bDliJa_zpzpZKo-NfiddUtYBX-ALvOqyRhDuNoGmzdxGdWJcd5oDuGO0" loading="lazy" /></div></div></section>
<section><h2>时序图示例（登录与刷新令牌）<a href="#时序图示例登录与刷新令牌"><span>#</span></a></h2><div><div><img alt="@startuml
autonumber
actor User as 用户
participant Web as 前端页面
participant API as 网关接口
participant Auth as 认证服务
database Redis as 会话缓存

用户 -&gt; 前端页面 : 输入账号密码并提交
前端页面 -&gt; 网关接口 : POST /login
网关接口 -&gt; 认证服务 : " src="https://www.plantuml.com/plantuml/svg/bP3BJi9068NtynJ_thGIbrqqk7GbyHANPYYZ4A4bxVG1M70D5GrAn42u2CPee2HUY0BwCioql8L1t0ma1jVVEJFVVu8MnIQr4t64RMheTY9CJ8GrQfXmQ14Ji0NUrGFF3L4IcpIcnP9Oft14mdF2yextvCvQhxDwM-3RePsVvkIIfP_vUPULxaHkq-WyuFSxlflYDOSLMYY2AGvZYy0UYSIiEPwERtstxetBh7U3qC8395Nu5nJmFyiitVLVxbbfoDoCrqonzpTUkfX-T90GbLH12HG8xUuVm6RSE8tfI42IAiY10hpPcZqMMRR7dJuIcAGAfg00orHPkWicEJ695JscnXdHbpghBbZJY6Kjmh2nL1RbLZVO2WJ0guxOv9hdBbYXWP0io-AJ_bUMrneWop9QRvPVW_M6-VFObO7yIPyxxNyEn2i3uQArHk6LmNJKyV9552Hwn4x4lm40" loading="lazy" /></div></div></section>
<section><h2>C4 风格容器图示例<a href="#c4-风格容器图示例"><span>#</span></a></h2><div><div><img alt="@startuml
!includeurl https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml

Person(user, &quot;博客访客&quot;, &quot;阅读文章与搜索内容&quot;)

System_Boundary(system, &quot;Firefly Blog&quot;) {
	Container(we" src="https://www.plantuml.com/plantuml/svg/PL7BJjj055tNNp7robP3l67L5I7b9GKHnQ6egyYE9udBn8x6Oq9KLQeeeLMbGDHIYWfL6fTAIAXs7w2cGOAVoTZENrHZfsaYTZFtddlkkUVCMKJ1nAuYxhvk596jGHiZK26aPZsK9ApKasMTL6pLjY0kcWQ11aaMpQfKGuh1ncOieY5TbTApCrbMMb_DI5N58X1BwTb2sZI8eXiG9sji1PU5s38DWP4b04zR7wdhXEujTHq-0VZXSJFqhlsZLy75vq5lts-V1fSEtMjIzmylSfpSi0Yi5kPDsz0Kt12iw9y0_AAEOGarm3mooxm8dd7tndk5EbGJWD-0AaZLQcn9oYBO10-0l0KHWQpYztxwdNV3xjNmapFexG_wPuF-MrwSOZ7nPYHPbdDW8_gmoJGoRQs450n7HOjLwTbkqDxpJrlqJJUuy6BwqFlj_zYPOdsa2YD76LNy0Z8nSQHgLS6RcbatW0JMrAUm6BUKSjIatuxfpldOgV1gr--tQVEb__wxttAdjLjGmSKAqnuzm8gXmMr6abNAiAGRMkJ1GNjmSqARZDF_yYAuT7YHUpxsV66R2FyIPvEZf84CyLPiHN3OyL-tWVnu2T2Jcx1xpXBBGJJAEeuXT6-77rm6Nyxdip8lHeYeDtOuDWeme-D8xi17oF_UXTurFJYAtPZa75_kTxw6daERluQ7RkYr9Z4JLyMRO_Ni47P19lLaRJrVo2mivWkvbQNbl21oSz3Gx2hw2m00" loading="lazy" /></div></div></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/markdown-tutorial/</id>
      <title type="text">Markdown 教程</title>
      <published>1970-01-01T00:00:00.000Z</published>
      <updated>1970-01-01T00:00:00.000Z</updated>
      <author><name>emn178</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/markdown-tutorial/"/>
      <summary type="text">一个简明的 Markdown 博客示例。</summary>
      <content type="html"><![CDATA[<p>这是一个展示如何编写 Markdown 文件的示例。本文档汇总了核心语法与常见扩展（GFM）。</p>
<ul>
<li><a href="#block-elements">块级元素</a>
<ul>
<li><a href="#paragraphs-and-line-breaks">段落与换行</a></li>
<li><a href="#headers">标题</a></li>
<li><a href="#blockquotes">引用</a></li>
<li><a href="#lists">列表</a></li>
<li><a href="#code-blocks">代码块</a></li>
<li><a href="#horizontal-rules">分割线</a></li>
<li><a href="#table">表格</a></li>
</ul>
</li>
<li><a href="#span-elements">内联元素</a>
<ul>
<li><a href="#links">链接</a></li>
<li><a href="#emphasis">强调</a></li>
<li><a href="#code">行内代码</a></li>
<li><a href="#images">图片</a></li>
<li><a href="#strikethrough">删除线</a></li>
</ul>
</li>
<li><a href="#miscellaneous">杂项</a>
<ul>
<li><a href="#automatic-links">自动链接</a></li>
<li><a href="#backslash-escapes">反斜杠转义</a></li>
</ul>
</li>
<li><a href="#inline-html">内联 HTML</a></li>
</ul>
<p><a></a></p>
<section><h2>块级元素<a href="#块级元素"><span>#</span></a></h2><p><a></a></p><section><h3>段落与换行<a href="#段落与换行"><span>#</span></a></h3><section><h4>段落<a href="#段落"><span>#</span></a></h4><p>HTML 标签：<code>&lt;p&gt;</code></p><p>使用一个或多个空行分隔段落。（仅包含<strong>空格</strong>或<strong>制表符</strong>的行也视为空行。）</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>This will be</span></div></div><div><div><div>2</div></div><div><span>inline.</span></div></div><div><div><div>3</div></div><div>
</div></div><div><div><div>4</div></div><div><span>This is second paragraph.</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p>This will be
inline.</p><p>This is second paragraph.</p><hr /></section><section><h4>换行<a href="#换行"><span>#</span></a></h4><p>HTML 标签：<code>&lt;br /&gt;</code></p><p>在行末添加<strong>两个或更多空格</strong>来产生换行。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>This will be not</span></div></div><div><div><div>2</div></div><div><span>inline.</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p>This will be not<br />
inline.</p><hr /><p><a></a></p></section></section><section><h3>标题<a href="#标题"><span>#</span></a></h3><p>Markdown 支持两种标题样式：Setext 与 atx。</p><section><h4>Setext<a href="#setext"><span>#</span></a></h4><p>HTML 标签：<code>&lt;h1&gt;</code>，<code>&lt;h2&gt;</code></p><p>使用<strong>等号 (=)</strong> 表示 <code>&lt;h1&gt;</code>、使用<strong>短横线 (-)</strong> 表示 <code>&lt;h2&gt;</code>，数量不限，作为“下划线”。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>This is an H1</span></div></div><div><div><div>2</div></div><div><span>=============</span></div></div><div><div><div>3</div></div><div><span>This is an H2</span></div></div><div><div><div>4</div></div><div><span>-------------</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /></section></section></section>
<section><h1>This is an H1<a href="#this-is-an-h1"><span>#</span></a></h1><section><h2>This is an H2<a href="#this-is-an-h2"><span>#</span></a></h2><hr /><section><h4>atx<a href="#atx"><span>#</span></a></h4><p>HTML 标签：<code>&lt;h1&gt;</code>，<code>&lt;h2&gt;</code>，<code>&lt;h3&gt;</code>，<code>&lt;h4&gt;</code>，<code>&lt;h5&gt;</code>，<code>&lt;h6&gt;</code></p><p>在行首使用 1-6 个<strong>井号 (#)</strong>，对应 <code>&lt;h1&gt;</code> 至 <code>&lt;h6&gt;</code>。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span># This is an H1</span></div></div><div><div><div>2</div></div><div><span>## This is an H2</span></div></div><div><div><div>3</div></div><div><span>###### This is an H6</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /></section></section></section>
<section><h1>This is an H1<a href="#this-is-an-h1-1"><span>#</span></a></h1><section><h2>This is an H2<a href="#this-is-an-h2-1"><span>#</span></a></h2><section><h6>This is an H6<a href="#this-is-an-h6"><span>#</span></a></h6><hr /><p>可选：你可以在行尾“闭合” atx 标题。末尾的井号数量<strong>不必与</strong>开头一致。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span># This is an H1 #</span></div></div><div><div><div>2</div></div><div><span>## This is an H2 ##</span></div></div><div><div><div>3</div></div><div><span>### This is an H3 ######</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /></section></section></section>
<section><h1>This is an H1<a href="#this-is-an-h1-2"><span>#</span></a></h1><section><h2>This is an H2<a href="#this-is-an-h2-2"><span>#</span></a></h2><section><h3>This is an H3<a href="#this-is-an-h3"><span>#</span></a></h3><hr /><p><a></a></p></section><section><h3>引用<a href="#引用"><span>#</span></a></h3><p>HTML 标签：<code>&lt;blockquote&gt;</code></p><p>Markdown 使用邮件风格的 <strong>&gt;</strong> 作为引用符号。若手动换行并在每行前加 &gt;，显示效果最佳。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,</span></div></div><div><div><div>2</div></div><div><span>&gt; consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.</span></div></div><div><div><div>3</div></div><div><span>&gt; Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.</span></div></div><div><div><div>4</div></div><div><span>&gt;</span></div></div><div><div><div>5</div></div><div><span>&gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse</span></div></div><div><div><div>6</div></div><div><span>&gt; id sem consectetuer libero luctus adipiscing.</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><blockquote><p>This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.</p><p>Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
id sem consectetuer libero luctus adipiscing.</p></blockquote><hr /><p>Markdown 允许“偷懒”：在一个硬换行段落中，只在第一行前加 &gt; 即可。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,</span></div></div><div><div><div>2</div></div><div><span>consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.</span></div></div><div><div><div>3</div></div><div><span>Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>&gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse</span></div></div><div><div><div>6</div></div><div><span>id sem consectetuer libero luctus adipiscing.</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><blockquote><p>This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.</p></blockquote><blockquote><p>Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
id sem consectetuer libero luctus adipiscing.</p></blockquote><hr /><p>引用可以嵌套（引用中的引用），通过增加 &gt; 层级实现。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&gt; This is the first level of quoting.</span></div></div><div><div><div>2</div></div><div><span>&gt;</span></div></div><div><div><div>3</div></div><div><span>&gt; &gt; This is nested blockquote.</span></div></div><div><div><div>4</div></div><div><span>&gt;</span></div></div><div><div><div>5</div></div><div><span>&gt; Back to the first level.</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><blockquote><p>This is the first level of quoting.</p><blockquote><p>This is nested blockquote.</p></blockquote><p>Back to the first level.</p></blockquote><hr /><p>引用内可包含其他 Markdown 元素，包括标题、列表与代码块。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&gt; ## This is a header.</span></div></div><div><div><div>2</div></div><div><span>&gt;</span></div></div><div><div><div>3</div></div><div><span>&gt; 1.   This is the first list item.</span></div></div><div><div><div>4</div></div><div><span>&gt; 2.   This is the second list item.</span></div></div><div><div><div>5</div></div><div><span>&gt;</span></div></div><div><div><div>6</div></div><div><span>&gt; Here's some example code:</span></div></div><div><div><div>7</div></div><div><span>&gt;</span></div></div><div><div><div>8</div></div><div><span>&gt;     return shell_exec("echo $input | $markdown_script");</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><blockquote><h2>This is a header.<a href="#this-is-a-header"><span>#</span></a></h2><ol>
<li>This is the first list item.</li>
<li>This is the second list item.</li>
</ol><p>Here’s some example code:</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>return shell_exec("echo $input | $markdown_script");</span></div></div></code></pre><div><div></div><div></div></div></figure></div></blockquote><hr /><p><a></a></p></section><section><h3>列表<a href="#列表"><span>#</span></a></h3><p>Markdown 支持有序（数字）与无序（圆点）列表。</p><section><h4>无序列表<a href="#无序列表"><span>#</span></a></h4><p>HTML 标签：<code>&lt;ul&gt;</code></p><p>无序列表可使用 <strong>星号 (*)</strong>、<strong>加号 (+)</strong> 或 <strong>短横线 (-)</strong>。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>*   Red</span></div></div><div><div><div>2</div></div><div><span>*   Green</span></div></div><div><div><div>3</div></div><div><span>*   Blue</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><ul>
<li>Red</li>
<li>Green</li>
<li>Blue</li>
</ul><hr /><p>等价于：</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>+   Red</span></div></div><div><div><div>2</div></div><div><span>+   Green</span></div></div><div><div><div>3</div></div><div><span>+   Blue</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>或者：</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>-   Red</span></div></div><div><div><div>2</div></div><div><span>-   Green</span></div></div><div><div><div>3</div></div><div><span>-   Blue</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h4>有序列表<a href="#有序列表"><span>#</span></a></h4><p>HTML 标签：<code>&lt;ol&gt;</code></p><p>有序列表使用数字加英文句点：</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>1.  Bird</span></div></div><div><div><div>2</div></div><div><span>2.  McHale</span></div></div><div><div><div>3</div></div><div><span>3.  Parish</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><ol>
<li>Bird</li>
<li>McHale</li>
<li>Parish</li>
</ol><hr /><p>注意：像下面这样可能会“意外触发”有序列表：</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>1986. What a great season.</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><ol>
<li>What a great season.</li>
</ol><hr /><p>你可以用<strong>反斜杠转义 (\)</strong> 句点：</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>1986\. What a great season.</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p>1986. What a great season.</p><hr /></section><section><h4>列表中的缩进内容<a href="#列表中的缩进内容"><span>#</span></a></h4><section><h5>列表项里的引用<a href="#列表项里的引用"><span>#</span></a></h5><p>在列表项内放置引用，需要将 &gt; 符号整体缩进：</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>*   A list item with a blockquote:</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>&gt; This is a blockquote</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>&gt; inside a list item.</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><ul>
<li>
<p>A list item with a blockquote:</p>
<blockquote><p>This is a blockquote
inside a list item.</p></blockquote>
</li>
</ul><hr /></section><section><h5>列表项里的代码块<a href="#列表项里的代码块"><span>#</span></a></h5><p>在列表项内放置代码块，需要缩进两层——<strong>8 个空格</strong>或<strong>两个 Tab</strong>：</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>*   A list item with a code block:</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span><span>        </span></span><span>&lt;code goes here&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><ul>
<li>
<p>A list item with a code block:</p>
<div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&lt;code goes here&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div>
</li>
</ul><hr /></section><section><h5>嵌套列表<a href="#嵌套列表"><span>#</span></a></h5><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>* A</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>* A1</span></div></div><div><div><div>3</div></div><div><span><span>  </span></span><span>* A2</span></div></div><div><div><div>4</div></div><div><span>* B</span></div></div><div><div><div>5</div></div><div><span>* C</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><ul>
<li>A
<ul>
<li>A1</li>
<li>A2</li>
</ul>
</li>
<li>B</li>
<li>C</li>
</ul><hr /><p><a></a></p></section></section></section><section><h3>代码块<a href="#代码块"><span>#</span></a></h3><p>HTML 标签：<code>&lt;pre&gt;</code></p><p>将代码块中的每行缩进至少<strong>4 个空格</strong>或<strong>1 个制表符</strong>。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>This is a normal paragraph:</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>This is a code block.</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p>This is a normal paragraph:</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>This is a code block.</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /><p>代码块会一直持续，直到遇到未缩进的行（或文末）。</p><p>在代码块内，<strong>与号 (&amp;)</strong> 和尖括号 <strong>(&lt; &gt;)</strong> 会自动转为 HTML 实体。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span><span>    </span></span><span>&lt;div class="footer"&gt;</span></div></div><div><div><div>2</div></div><div><span><span>        </span></span><span>&amp;copy; 2004 Foo Corporation</span></div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>&lt;/div&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&lt;div class="footer"&gt;</span></div></div><div><div><div>2</div></div><div><span><span>    </span></span><span>&amp;copy; 2004 Foo Corporation</span></div></div><div><div><div>3</div></div><div><span>&lt;/div&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /><p>下文的“围栏代码块”和“语法高亮”属于扩展语法，你也可以用它们来书写代码块。</p><section><h4>围栏代码块<a href="#围栏代码块"><span>#</span></a></h4><p>使用成对的反引号围起来（如下所示），就不需要四空格缩进了。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Here's an example:</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>```</span></div></div><div><div><div>4</div></div><div><span>function test() {</span></div></div><div><div><div>5</div></div><div><span><span>  </span></span><span>console.log("notice the blank line before this function?");</span></div></div><div><div><div>6</div></div><div><span>}</span></div></div><div><div><div>7</div></div><div><span>```</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p>Here’s an example:</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>function test() {</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>console.log("notice the blank line before this function?");</span></div></div><div><div><div>3</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /></section><section><h4>语法高亮<a href="#语法高亮"><span>#</span></a></h4><p>在围栏代码块后添加可选的语言标识，即可启用语法高亮（参见支持语言列表）。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>```ruby</span></div></div><div><div><div>2</div></div><div><span>require 'redcarpet'</span></div></div><div><div><div>3</div></div><div><span>markdown = Redcarpet.new("Hello World!")</span></div></div><div><div><div>4</div></div><div><span>puts markdown.to_html</span></div></div><div><div><div>5</div></div><div><span>```</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>require </span><span>'redcarpet'</span></div></div><div><div><div>2</div></div><div><span>markdown</span><span><span> </span><span>=</span><span> </span></span><span>Redcarpet</span><span>.</span><span>new</span><span>(</span><span>"Hello World!"</span><span>)</span></div></div><div><div><div>3</div></div><div><span>puts</span><span> markdown.</span><span>to_html</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /><p><a></a></p></section></section><section><h3>分割线（水平线）<a href="#分割线水平线"><span>#</span></a></h3><p>HTML 标签：<code>&lt;hr /&gt;</code>
一行中放置<strong>三个或以上的短横线 (-)、星号 (*) 或下划线 (_)</strong>。符号之间允许有空格。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>* * *</span></div></div><div><div><div>2</div></div><div><span>***</span></div></div><div><div><div>3</div></div><div><span>*****</span></div></div><div><div><div>4</div></div><div><span>- - -</span></div></div><div><div><div>5</div></div><div><span>---------------------------------------</span></div></div><div><div><div>6</div></div><div><span>___</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><p><a></a></p></section><section><h3>表格<a href="#表格"><span>#</span></a></h3><p>HTML 标签：<code>&lt;table&gt;</code></p><p>这是扩展语法。</p><p>用<strong>竖线 (|)</strong> 分隔列，用<strong>短横线 (-)</strong> 分隔表头，使用<strong>冒号 (:)</strong> 指定对齐方式。</p><p>两侧的<strong>竖线 (|)</strong> 与对齐可选。用于表头分隔时，每列至少需要 <strong>3 个短横线</strong>。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>| Left | Center | Right |</span></div></div><div><div><div>2</div></div><div><span>|:-----|:------:|------:|</span></div></div><div><div><div>3</div></div><div><span>|aaa   |bbb     |ccc    |</span></div></div><div><div><div>4</div></div><div><span>|ddd   |eee     |fff    |</span></div></div><div><div><div>5</div></div><div>
</div></div><div><div><div>6</div></div><div><span><span> </span></span><span>A | B</span></div></div><div><div><div>7</div></div><div><span>---|---</span></div></div><div><div><div>8</div></div><div><span>123|456</span></div></div><div><div><div>9</div></div><div>
</div></div><div><div><div>10</div></div><div>
</div></div><div><div><div>11</div></div><div><span>A |B</span></div></div><div><div><div>12</div></div><div><span>--|--</span></div></div><div><div><div>13</div></div><div><span>12|45</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr />

<table><thead><tr><th>Left</th><th>Center</th><th>Right</th></tr></thead><tbody><tr><td>aaa</td><td>bbb</td><td>ccc</td></tr><tr><td>ddd</td><td>eee</td><td>fff</td></tr></tbody></table>

<table><thead><tr><th>A</th><th>B</th></tr></thead><tbody><tr><td>123</td><td>456</td></tr></tbody></table>

<table><thead><tr><th>A</th><th>B</th></tr></thead><tbody><tr><td>12</td><td>45</td></tr></tbody></table><hr /><p><a></a></p></section></section><section><h2>内联元素<a href="#内联元素"><span>#</span></a></h2><p><a></a></p><section><h3>链接<a href="#链接"><span>#</span></a></h3><p>HTML 标签：<code>&lt;a&gt;</code></p><p>Markdown 支持两种链接样式：行内链接与引用式链接。</p><section><h4>行内链接<a href="#行内链接"><span>#</span></a></h4><p>行内链接格式：<code>[文本](URL "标题")</code></p><p>标题可选。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>This is [an example](http://example.com/ "Title") inline link.</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>[This link](http://example.net/) has no title attribute.</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p>This is <a href="http://example.com/" target="_blank">an example</a> inline link.</p><p><a href="http://example.net/" target="_blank">This link</a> has no title attribute.</p><hr /><p>如果引用同一站点的本地资源，可以使用相对路径：</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>See my [About](/about/) page for details.</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p>See my <a href="/about/">About</a> page for details.</p><hr /></section><section><h4>引用式链接<a href="#引用式链接"><span>#</span></a></h4><p>可以预定义链接引用。定义格式：<code>[id]: URL "标题"</code></p><p>标题同样可选。引用时使用：<code>[文本][id]</code></p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[id]: http://example.com/  "Optional Title Here"</span></div></div><div><div><div>2</div></div><div><span>This is [an example][id] reference-style link.</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p>This is <a href="http://example.com/" target="_blank">an example</a> reference-style link.</p><hr /><p>说明：</p><ul>
<li>方括号中包含链接标识（<strong>不区分大小写</strong>，可在左侧缩进最多三格空格）；</li>
<li>随后是冒号；</li>
<li>再跟一个或多个空格（或 tab）；</li>
<li>然后是链接 URL；</li>
<li>URL 可选地用尖括号包裹；</li>
<li>可选地跟随标题属性，用引号或圆括号包裹。</li>
</ul><p>以下三种定义等价：</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[foo]: http://example.com/  "Optional Title Here"</span></div></div><div><div><div>2</div></div><div><span>[foo]: http://example.com/  'Optional Title Here'</span></div></div><div><div><div>3</div></div><div><span>[foo]: http://example.com/  (Optional Title Here)</span></div></div><div><div><div>4</div></div><div><span>[foo]: &lt;http://example.com/&gt;  "Optional Title Here"</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>如果使用空的方括号，则链接文本本身会作为名称。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[Google]: http://google.com/</span></div></div><div><div><div>2</div></div><div><span>[Google][]</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p><a href="http://google.com/" target="_blank">Google</a></p><hr /><p><a></a></p></section></section><section><h3>强调<a href="#强调"><span>#</span></a></h3><p>HTML 标签：<code>&lt;em&gt;</code>，<code>&lt;strong&gt;</code></p><p>Markdown 使用 <strong>星号 (*)</strong> 或 <strong>下划线 (_)</strong> 表示强调。<strong>一个分隔符</strong>对应 <code>&lt;em&gt;</code>；<strong>两个分隔符</strong>对应 <code>&lt;strong&gt;</code>。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>*single asterisks*</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>_single underscores_</span></div></div><div><div><div>4</div></div><div>
</div></div><div><div><div>5</div></div><div><span>**double asterisks**</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>__double underscores__</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p><em>single asterisks</em></p><p><em>single underscores</em></p><p><strong>double asterisks</strong></p><p><strong>double underscores</strong></p><hr /><p>但如果两侧有空格，则会被视作普通字符而非强调语法。</p><p>你可以使用反斜杠进行转义：</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>\*this text is surrounded by literal asterisks\*</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p>*this text is surrounded by literal asterisks*</p><hr /><p><a></a></p></section><section><h3>行内代码<a href="#行内代码"><span>#</span></a></h3><p>HTML 标签：<code>&lt;code&gt;</code></p><p>用<strong>反引号 (`)</strong> 包裹。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>Use the `printf()` function.</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p>Use the <code>printf()</code> function.</p><hr /><p>若行内代码中需要包含反引号字符，可使用<strong>多重反引号</strong>作为定界符：</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>``There is a literal backtick (`) here.``</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p><code>There is a literal backtick (`) here.</code></p><hr /><p>行内代码两侧的定界符允许包含空格（开头一个、结尾一个），方便在代码起始或结尾放置反引号字符：</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>A single backtick in a code span: `` ` ``</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>A backtick-delimited string in a code span: `` `foo` ``</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p>A single backtick in a code span: <code>`</code></p><p>A backtick-delimited string in a code span: <code>`foo`</code></p><hr /><p><a></a></p></section><section><h3>图片<a href="#图片"><span>#</span></a></h3><p>HTML 标签：<code>&lt;img /&gt;</code></p><p>Markdown 的图片语法与链接类似，支持行内与引用两种方式。</p><section><h4>行内图片<a href="#行内图片"><span>#</span></a></h4><p>行内图片语法：<code>![替代文本](URL "标题")</code></p><p>标题可选。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>![Alt text](/path/to/img.jpg)</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>![Alt text](/path/to/img.jpg "Optional title")</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p></p><figure><img src="https://s2.loli.net/2024/08/20/5fszgXeOxmL3Wdv.webp" alt="Alt text" /><figcaption>Alt text</figcaption></figure><p></p><p></p><figure><img src="https://s2.loli.net/2024/08/20/5fszgXeOxmL3Wdv.webp" alt="Alt text" title="Optional title" /><figcaption>Alt text</figcaption></figure><p></p><hr /><p>说明：</p><ul>
<li>一个感叹号 !；</li>
<li>后接方括号，放置图片的替代文本；</li>
<li>再接圆括号，内含图片 URL/路径，及可选的标题（引号包裹）。</li>
</ul></section><section><h4>引用式图片<a href="#引用式图片"><span>#</span></a></h4><p>引用式图片语法：<code>![替代文本][id]</code></p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[img id]: https://s2.loli.net/2024/08/20/5fszgXeOxmL3Wdv.webp  "Optional title attribute"</span></div></div><div><div><div>2</div></div><div><span>![Alt text][img id]</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p></p><figure><img src="https://s2.loli.net/2024/08/20/5fszgXeOxmL3Wdv.webp" alt="Alt text" title="Optional title attribute" /><figcaption>Alt text</figcaption></figure><p></p><hr /><p><a></a></p></section></section><section><h3>删除线<a href="#删除线"><span>#</span></a></h3><p>HTML 标签：<code>&lt;del&gt;</code></p><p>这是扩展语法。</p><p>GFM 增加了删除线语法。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>~~Mistaken text.~~</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p>Mistaken text.</p><hr /><p><a></a></p></section></section><section><h2>杂项<a href="#杂项"><span>#</span></a></h2><p><a></a></p><section><h3>自动链接<a href="#自动链接"><span>#</span></a></h3><p>Markdown 支持一种便捷写法来创建“自动链接”（URL 与邮箱地址）：只需用尖括号将其包住即可。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&lt;http://example.com/&gt;</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>&lt;address@example.com&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p><a href="http://example.com/" target="_blank">http://example.com/</a></p><p><a href="#">address@example.com</a></p><hr /><p>GFM 会自动识别标准 URL 并转换为链接。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>https://github.com/emn178/markdown</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p><a href="https://github.com/emn178/markdown" target="_blank">https://github.com/emn178/markdown</a></p><hr /><p><a></a></p></section><section><h3>反斜杠转义<a href="#反斜杠转义"><span>#</span></a></h3><p>Markdown 允许使用反斜杠来转义那些本用于 Markdown 语法的特殊字符，使其按字面显示。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>\*literal asterisks\*</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p>*literal asterisks*</p><hr /><p>以下字符可通过反斜杠转义以按字面量输出：</p><p>Code:</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>\   backslash</span></div></div><div><div><div>2</div></div><div><span>`   backtick</span></div></div><div><div><div>3</div></div><div><span>*   asterisk</span></div></div><div><div><div>4</div></div><div><span>_   underscore</span></div></div><div><div><div>5</div></div><div><span>{}  curly braces</span></div></div><div><div><div>6</div></div><div><span>[]  square brackets</span></div></div><div><div><div>7</div></div><div><span>()  parentheses</span></div></div><div><div><div>8</div></div><div><span>#   hash mark</span></div></div><div><div><div>9</div></div><div><span>+   plus sign</span></div></div><div><div><div>10</div></div><div><span>-   minus sign (hyphen)</span></div></div><div><div><div>11</div></div><div><span>.   dot</span></div></div><div><div><div>12</div></div><div><span>!   exclamation mark</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p><a></a></p></section></section><section><h2>内联 HTML<a href="#内联-html"><span>#</span></a></h2><p>对于 Markdown 语法未覆盖的标记，直接使用原生 HTML 即可。无需特别声明从 Markdown 切换到 HTML，直接写标签就行。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>This is a regular paragraph.</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>&lt;table&gt;</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>&lt;tr&gt;</span></div></div><div><div><div>5</div></div><div><span><span>        </span></span><span>&lt;td&gt;Foo&lt;/td&gt;</span></div></div><div><div><div>6</div></div><div><span><span>    </span></span><span>&lt;/tr&gt;</span></div></div><div><div><div>7</div></div><div><span>&lt;/table&gt;</span></div></div><div><div><div>8</div></div><div>
</div></div><div><div><div>9</div></div><div><span>This is another regular paragraph.</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p>This is a regular paragraph.</p><table>
    <tbody><tr>
        <td>Foo</td>
    </tr>
</tbody></table><p>This is another regular paragraph.</p><hr /><p>请注意：在<strong>块级 HTML 标签</strong>内不会处理 Markdown 语法。</p><p>与块级标签不同，在<strong>行内级标签</strong>内会处理 Markdown 语法。</p><p>代码：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>&lt;span&gt;**Work**&lt;/span&gt;</span></div></div><div><div><div>2</div></div><div>
</div></div><div><div><div>3</div></div><div><span>&lt;div&gt;</span></div></div><div><div><div>4</div></div><div><span><span>    </span></span><span>**No Work**</span></div></div><div><div><div>5</div></div><div><span>&lt;/div&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>预览：</p><hr /><p><span><strong>Work</strong></span></p><div>
  **No Work**
</div>
***</section></section>]]></content>
    </entry>
    <entry>
      <id>https://firefly.cuteleaf.cn/posts/video/</id>
      <title type="text">在文章中嵌入视频</title>
      <published>1970-01-01T00:00:00.000Z</published>
      <updated>1970-01-01T00:00:00.000Z</updated>
      <author><name>XiaYe</name></author>
      <link rel="alternate" href="https://firefly.cuteleaf.cn/posts/video/"/>
      <summary type="text">这篇文章演示如何在博客文章中嵌入视频。</summary>
      <content type="html"><![CDATA[<p>只需从 YouTube 或其他平台复制嵌入代码，然后将其粘贴到 markdown 文件中。</p>
<div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>---</span></div></div><div><div><div>2</div></div><div><span>title</span><span>: </span><span>在文章中嵌入视频</span></div></div><div><div><div>3</div></div><div><span>published</span><span>: </span><span>2023-10-19</span></div></div><div><div><div>4</div></div><div><span>// ...</span></div></div><div><div><div>5</div></div><div><span>---</span></div></div><div><div><div>6</div></div><div>
</div></div><div><div><div>7</div></div><div><span>&lt;iframe width="100%" height="468" src="https://www.youtube.com/embed/5gIf0_xpFPI?si=N1WTorLKL0uwLsU_" title="YouTube video player" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;</span></div></div></code></pre><div><div></div><div></div></div></figure></div>
<section><h2>YouTube<a href="#youtube"><span>#</span></a></h2></section>
<section><h2>Bilibili<a href="#bilibili"><span>#</span></a></h2> </section>]]></content>
    </entry>
</feed>
