<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-CN"><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://blog.zgqinc.gq/feed.xml" rel="self" type="application/atom+xml" /><link href="https://blog.zgqinc.gq/" rel="alternate" type="text/html" hreflang="zh-CN" /><updated>2026-08-13T20:46:28+08:00</updated><id>https://blog.zgqinc.gq/feed.xml</id><title type="html">ZGQ Inc.’s Blog</title><subtitle>博客原型。</subtitle><author><name>ZGQ Inc.</name></author><entry><title type="html">demo</title><link href="https://blog.zgqinc.gq/posts/text-demo/" rel="alternate" type="text/html" title="demo" /><published>2026-08-13T08:00:00+08:00</published><updated>2026-08-13T08:00:00+08:00</updated><id>https://blog.zgqinc.gq/posts/text-demo</id><content type="html" xml:base="https://blog.zgqinc.gq/posts/text-demo/"><![CDATA[]]></content><author><name>ZGQ Inc.</name></author><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">公告</title><link href="https://blog.zgqinc.gq/posts/welcome/" rel="alternate" type="text/html" title="公告" /><published>2026-08-13T08:00:00+08:00</published><updated>2026-08-13T08:00:00+08:00</updated><id>https://blog.zgqinc.gq/posts/welcome</id><content type="html" xml:base="https://blog.zgqinc.gq/posts/welcome/"><![CDATA[]]></content><author><name>ZGQ Inc.</name></author><summary type="html"><![CDATA[]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://images.unsplash.com/photo-1550745165-9bc0b252726f?q=80&amp;w=1200&amp;auto=format&amp;fit=crop" /><media:content medium="image" url="https://images.unsplash.com/photo-1550745165-9bc0b252726f?q=80&amp;w=1200&amp;auto=format&amp;fit=crop" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">老频道存档</title><link href="https://blog.zgqinc.gq/posts/zariyb/" rel="alternate" type="text/html" title="老频道存档" /><published>2026-08-05T10:32:11+08:00</published><updated>2026-08-05T10:32:11+08:00</updated><id>https://blog.zgqinc.gq/posts/zariyb</id><content type="html" xml:base="https://blog.zgqinc.gq/posts/zariyb/"><![CDATA[<p><a href="t.me/ZGQincLiqun2">ZGQincLiqun</a></p>

<p><a href="t.me/CopyRightZGQInc2">CopyRightZGQInc</a></p>

<p>有空会挑选一些有用文章重新发布。</p>]]></content><author><name>ZGQ Inc.</name></author><category term="telegram" /><category term="telegram" /><summary type="html"><![CDATA[ZGQincLiqun]]></summary></entry><entry><title type="html">占位</title><link href="https://blog.zgqinc.gq/posts/1/" rel="alternate" type="text/html" title="占位" /><published>2026-08-05T10:32:11+08:00</published><updated>2026-08-05T10:32:11+08:00</updated><id>https://blog.zgqinc.gq/posts/1</id><content type="html" xml:base="https://blog.zgqinc.gq/posts/1/"><![CDATA[]]></content><author><name>ZGQ Inc.</name></author><category term="telegram" /><category term="telegram" /><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">占位</title><link href="https://blog.zgqinc.gq/posts/1/" rel="alternate" type="text/html" title="占位" /><published>2026-08-05T10:32:11+08:00</published><updated>2026-08-05T10:32:11+08:00</updated><id>https://blog.zgqinc.gq/posts/1</id><content type="html" xml:base="https://blog.zgqinc.gq/posts/1/"><![CDATA[]]></content><author><name>ZGQ Inc.</name></author><category term="telegram" /><category term="telegram" /><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Jekyll 完整 Markup 与 Markdown 语法展示</title><link href="https://blog.zgqinc.gq/posts/npg6ht/" rel="alternate" type="text/html" title="Jekyll 完整 Markup 与 Markdown 语法展示" /><published>2026-07-31T21:40:26+08:00</published><updated>2026-07-31T21:40:26+08:00</updated><id>https://blog.zgqinc.gq/posts/npg6ht</id><content type="html" xml:base="https://blog.zgqinc.gq/posts/npg6ht/"><![CDATA[<p>这篇文章展示了 Jekyll（基于 kramdown 解析器）所支持的绝大多数 markup 语法，用于测试主题样式或作为撰写文章的参考规范。</p>

<h2 id="1-基础排版-text-formatting">1. 基础排版 (Text Formatting)</h2>

<p>这是普通的段落文本。你可以在段落中使用 <strong>粗体文本</strong>、<em>斜体文本</em>、<strong><em>粗斜体</em></strong>，或者删除线<del>被划掉的内容</del>。
还可以使用 <code class="language-plaintext highlighter-rouge">标记代码</code> (inline code)，或者添加脚注来补充说明<sup id="fnref:1"><a href="#fn:1" class="footnote" rel="footnote" role="doc-noteref">1</a></sup>。</p>

<p>通过 Kramdown 缩写扩展，你可以定义缩写，例如鼠标悬停在 <abbr title="Hyper Text Markup Language">HTML</abbr> 上会显示全称。</p>

<h2 id="2-标题层级-headings">2. 标题层级 (Headings)</h2>

<h3 id="三级标题-h3">三级标题 (H3)</h3>

<h4 id="四级标题-h4">四级标题 (H4)</h4>

<h5 id="五级标题-h5">五级标题 (H5)</h5>

<h6 id="六级标题-h6">六级标题 (H6)</h6>

<blockquote id="custom-heading-section">
  <p><strong>技巧</strong>：Jekyll 支持通过 <code class="language-plaintext highlighter-rouge">{: #custom-id}</code> 显式为标题自定义 ID。</p>
</blockquote>

<h2 id="3-列表-lists">3. 列表 (Lists)</h2>

<h3 id="无序列表">无序列表</h3>

<ul>
  <li>顶级列表项 A
    <ul>
      <li>二级列表项 A1</li>
      <li>二级列表项 A2</li>
    </ul>
  </li>
  <li>顶级列表项 B</li>
  <li>顶级列表项 C</li>
</ul>

<h3 id="有序列表">有序列表</h3>

<ol>
  <li>第一步：准备 Jekyll 环境</li>
  <li>第二步：编写 Markdown 文件</li>
  <li>第三步：运行 <code class="language-plaintext highlighter-rouge">jekyll serve</code> 构建</li>
</ol>

<h3 id="任务列表-task-lists">任务列表 (Task Lists)</h3>

<ul class="task-list">
  <li class="task-list-item">
<input type="checkbox" class="task-list-item-checkbox" disabled checked>完成 Jekyll 配置文件设置</li>
  <li class="task-list-item">
<input type="checkbox" class="task-list-item-checkbox" disabled checked>撰写示例 Markdown 文章</li>
  <li class="task-list-item">
<input type="checkbox" class="task-list-item-checkbox" disabled>部署到 GitHub Pages</li>
</ul>

<h2 id="4-引用与块级元素-blockquotes">4. 引用与块级元素 (Blockquotes)</h2>

<blockquote>
  <p>这是一个单行块级引用 (Blockquote)。</p>

  <blockquote>
    <p>这是一个嵌套的引用块。
可以在这里提供出处或引申信息。</p>
  </blockquote>
</blockquote>

<h2 id="5-代码高亮-code-blocks">5. 代码高亮 (Code Blocks)</h2>

<p>Jekyll 支持通过标准的 Markdown 语法高亮代码块。并且我们启用了 Rouge 的行号显示：</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr>
<td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
</pre></td>
<td class="rouge-code"><pre><span class="c1">// JavaScript 示例</span>
<span class="kd">function</span> <span class="nf">greet</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
    <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="s2">`Hello, </span><span class="p">${</span><span class="nx">name</span><span class="p">}</span><span class="s2">! Welcome to Jekyll.`</span><span class="p">);</span>
<span class="p">}</span>

<span class="nf">greet</span><span class="p">(</span><span class="dl">'</span><span class="s1">Developer</span><span class="dl">'</span><span class="p">);</span>
</pre></td>
</tr></tbody></table></code></pre></div></div>

<p>同时，Jekyll 原生支持 Liquid 的 <code class="language-plaintext highlighter-rouge">highlight</code> 标签：</p>

<figure class="highlight"><pre><code class="language-python" data-lang="python"><span class="c1"># Python 示例
</span><span class="k">def</span> <span class="nf">calculate_factorial</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
    <span class="k">if</span> <span class="n">n</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
        <span class="k">return</span> <span class="mi">1</span>
    <span class="k">return</span> <span class="n">n</span> <span class="o">*</span> <span class="nf">calculate_factorial</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>

<span class="nf">print</span><span class="p">(</span><span class="sa">f</span><span class="sh">"</span><span class="s">Factorial of 5: </span><span class="si">{</span><span class="nf">calculate_factorial</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span><span class="si">}</span><span class="sh">"</span><span class="p">)</span></code></pre></figure>

<h2 id="6-表格-tables">6. 表格 (Tables)</h2>

<p>这里展示了一个标准对齐方式的表格。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">过滤器/属性</th>
      <th style="text-align: left">说明</th>
      <th style="text-align: center">示例输入</th>
      <th style="text-align: right">示例输出</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">date_to_string</code></td>
      <td style="text-align: left">日期转为字符串</td>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">site.time</code></td>
      <td style="text-align: right">01 Aug 2026</td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">upcase</code></td>
      <td style="text-align: left">字符转大写</td>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">"hello"</code></td>
      <td style="text-align: right">HELLO</td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">size</code></td>
      <td style="text-align: left">获取数组或字符串长度</td>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">page.tags</code></td>
      <td style="text-align: right">4</td>
    </tr>
  </tbody>
</table>

<h2 id="7-链接与媒体-links--media">7. 链接与媒体 (Links &amp; Media)</h2>

<ul>
  <li>
<a href="https://jekyllrb.com/" target="_blank" rel="noopener">访问 Jekyll 官网</a> <em>(含 Kramdown 扩展属性)</em>
</li>
  <li>
<a href="#custom-heading-section">跳转到本文的特殊标题</a> <em>(内部锚点)</em>
</li>
</ul>

<h3 id="图片展示">图片展示</h3>

<p><img src="/assets/images/jekyll.jpg" alt="Jekyll 封面图片">
<em>图：展示支持图片说明文本的效果</em></p>

<h2 id="8-jekyll-特有扩展-kramdown--liquid">8. Jekyll 特有扩展 (kramdown &amp; Liquid)</h2>

<h3 id="属性列表-attribute-lists">属性列表 (Attribute Lists)</h3>

<p>你可以直接给下一个元素添加 CSS 类名或内联样式：</p>

<p style="padding: 16px; border-left: 4px solid #f0ad4e; background: rgba(240, 173, 78, 0.1); border-radius: 4px;">这是一个带有自定义 CSS 类和背景样式的警告段落。</p>

<h3 id="定义列表-definition-lists">定义列表 (Definition Lists)</h3>

<dl>
  <dt>Jekyll / Liquid</dt>
  <dd>基于 Ruby 的静态网站生成器。</dd>
  <dt>kramdown</dt>
  <dd>Jekyll 默认使用的 Markdown 解析引擎，支持丰富的扩展语法。</dd>
  <dd>可以有多个解释。</dd>
</dl>

<h3 id="数学公式-latex">数学公式 (LaTeX)</h3>

<p>如果你的主题引入了 MathJax/KaTeX，可以渲染数学公式：</p>

\[E = mc^2\]

<h3 id="liquid-变量调用示例">Liquid 变量调用示例</h3>

<ul>
  <li>
<strong>本篇文章标题</strong>：Jekyll 完整 Markup 与 Markdown 语法展示</li>
  <li>
<strong>文章发布时间</strong>：2026年07月31日</li>
  <li>
<strong>标签数量</strong>：4 个</li>
</ul>

<h2 id="9-github-alerts-提示框">9. GitHub Alerts (提示框)</h2>

<p>我们通过自研的 AST 转换插件，原生支持了 GitHub 风格的 Alerts。在段落前加上 <code class="language-plaintext highlighter-rouge">&gt; [!NOTE]</code> 等标记即可触发：</p>

<div class="github-alert github-alert-note">
  <div class="github-alert-title">
<span class="material-symbols-outlined">info</span> Note</div>
<p>这是一个 Note 提示框。用于强调一般性的补充信息。</p>
</div>

<div class="github-alert github-alert-tip">
  <div class="github-alert-title">
<span class="material-symbols-outlined">lightbulb</span> Tip</div>
<p>这是一个 Tip 提示框。用于提供有用的建议或快捷方式。</p>
</div>

<div class="github-alert github-alert-important">
  <div class="github-alert-title">
<span class="material-symbols-outlined">report</span> Important</div>
<p>这是一个 Important 提示框。用于向用户传达实现其目标必不可少的关键信息。</p>
</div>

<div class="github-alert github-alert-warning">
  <div class="github-alert-title">
<span class="material-symbols-outlined">warning</span> Warning</div>
<p>这是一个 Warning 提示框。用于提醒用户注意潜在的风险。</p>
</div>

<div class="github-alert github-alert-caution">
  <div class="github-alert-title">
<span class="material-symbols-outlined">dangerous</span> Caution</div>
<p>这是一个 Caution 提示框。用于警告可能导致数据丢失或严重后果的高危操作。</p>
</div>

<h2 id="10-可折叠详情区-details--summary">10. 可折叠详情区 (Details &amp; Summary)</h2>

<p>你可以直接使用原生 <abbr title="Hyper Text Markup Language">HTML</abbr> 的 <code class="language-plaintext highlighter-rouge">&lt;details&gt;</code> 和 <code class="language-plaintext highlighter-rouge">&lt;summary&gt;</code> 标签来包裹长文本或超长代码。我们已经为其适配了 MD3 风格的展开面板样式。</p>

<div class="github-alert github-alert-tip">
  <div class="github-alert-title">
<span class="material-symbols-outlined">lightbulb</span> Tip</div>
<p>如果你想在 <code class="language-plaintext highlighter-rouge">&lt;details&gt;</code> 内部继续使用 Markdown 语法（如代码块、加粗等），必须在 <code class="language-plaintext highlighter-rouge">&lt;details&gt;</code> 标签上添加 <code class="language-plaintext highlighter-rouge">markdown="1"</code> 属性，并且在 <code class="language-plaintext highlighter-rouge">&lt;summary&gt;</code> 和内容之间<strong>留一个空行</strong>。</p>
</div>

<details>
  <summary><b>点击展开查看详细构建日志</b></summary>

  <div class="language-bash highlighter-rouge">
<div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr>
<td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre></td>
<td class="rouge-code"><pre><span class="nv">$ </span>bundle <span class="nb">exec </span>jekyll build
Configuration file: /workspace/_config.yml
            Source: /workspace
       Destination: /workspace/_site
 Incremental build: disabled. Enable with <span class="nt">--incremental</span>
      Generating... 
       Jekyll Feed: Generating feed <span class="k">for </span>posts
                    <span class="k">done in </span>0.548 seconds.
 Auto-regeneration: disabled. Use <span class="nt">--watch</span> to enable.
</pre></td>
</tr></tbody></table></code></pre></div>  </div>

  <p>日志显示构建成功。</p>
</details>

<h2 id="11-mermaid-原生图表引擎">11. Mermaid 原生图表引擎</h2>

<p>本博客内置了高性能、<strong>按需懒加载 (Lazy Load)</strong> 的 Mermaid 渲染支持。你只需要用标准的代码块并指定语言为 <code class="language-plaintext highlighter-rouge">mermaid</code> 即可绘制流程图、时序图、甘特图等。</p>

<pre><code class="language-mermaid">graph TD;
    A[用户请求] --&gt; B{认证校验};
    B -- 成功 --&gt; C[请求后端 API];
    B -- 失败 --&gt; D[拒绝访问];
    C --&gt; E[返回组合数据];
    D --&gt; F[重定向到登录页];
</code></pre>

<h2 id="12-颜色色块自动预览-color-swatches">12. 颜色色块自动预览 (Color Swatches)</h2>

<p>在技术博客中，我们经常会讨论到颜色代码。现在，只要你在行内代码中写入规范的颜色值，系统就会自动在旁边生成一个 MD3 风格的圆形色块进行预览。</p>

<p>支持 HEX、RGB(A) 和 HSL(A) 格式：</p>

<ul>
  <li>主色调使用 <code class="language-plaintext highlighter-rouge">#FF5733</code> 或 <code class="language-plaintext highlighter-rouge">#0061A4</code>
</li>
  <li>也可以带透明度，比如 <code class="language-plaintext highlighter-rouge">#0061A480</code>
</li>
  <li>或者使用 <code class="language-plaintext highlighter-rouge">rgb(52, 152, 219)</code> 和 <code class="language-plaintext highlighter-rouge">rgba(52, 152, 219, 0.5)</code>
</li>
  <li>HSL 同样支持：<code class="language-plaintext highlighter-rouge">hsl(120, 100%, 25%)</code>
</li>
</ul>

<h2 id="13-stl-3d-模型原生渲染">13. STL 3D 模型原生渲染</h2>

<p>现在你可以直接在博客中预览 3D 模型了。只需将 STL 数据包裹在 <code class="language-plaintext highlighter-rouge">stl</code> 代码块中，前端的三维引擎会自动将其渲染为可通过鼠标拖拽旋转、支持物理光照材质的三维模型，完美契合 MD3 质感。</p>

<p>下面是一个基础的立方体 STL 渲染演示：</p>

<pre><code class="language-stl">solid cube
  facet normal 0 0 -1
    outer loop
      vertex 0 0 0
      vertex 1 1 0
      vertex 1 0 0
    endloop
  endfacet
  facet normal 0 0 -1
    outer loop
      vertex 0 0 0
      vertex 0 1 0
      vertex 1 1 0
    endloop
  endfacet
  facet normal 0 0 1
    outer loop
      vertex 0 0 1
      vertex 1 0 1
      vertex 1 1 1
    endloop
  endfacet
  facet normal 0 0 1
    outer loop
      vertex 0 0 1
      vertex 1 1 1
      vertex 0 1 1
    endloop
  endfacet
  facet normal 0 -1 0
    outer loop
      vertex 0 0 0
      vertex 1 0 0
      vertex 1 0 1
    endloop
  endfacet
  facet normal 0 -1 0
    outer loop
      vertex 0 0 0
      vertex 1 0 1
      vertex 0 0 1
    endloop
  endfacet
  facet normal 0 1 0
    outer loop
      vertex 0 1 0
      vertex 0 1 1
      vertex 1 1 1
    endloop
  endfacet
  facet normal 0 1 0
    outer loop
      vertex 0 1 0
      vertex 1 1 1
      vertex 1 1 0
    endloop
  endfacet
  facet normal -1 0 0
    outer loop
      vertex 0 0 0
      vertex 0 0 1
      vertex 0 1 1
    endloop
  endfacet
  facet normal -1 0 0
    outer loop
      vertex 0 0 0
      vertex 0 1 1
      vertex 0 1 0
    endloop
  endfacet
  facet normal 1 0 0
    outer loop
      vertex 1 0 0
      vertex 1 1 0
      vertex 1 1 1
    endloop
  endfacet
  facet normal 1 0 0
    outer loop
      vertex 1 0 0
      vertex 1 1 1
      vertex 1 0 1
    endloop
  endfacet
endsolid
</code></pre>

<div class="github-alert github-alert-tip">
  <div class="github-alert-title">
<span class="material-symbols-outlined">lightbulb</span> Tip</div>
<p><strong>引用外部文件与现场 JS 渲染</strong> 🎨
如果模型文件太大，你不需要将冗长的代码直接贴在文章里。你可以在 <code class="language-plaintext highlighter-rouge">stl</code> 中直接写入本地 STL 文件的路径（如 <code class="language-plaintext highlighter-rouge">/assets/models/example.stl</code>）或外部 URL，渲染器会自动去下载并解析。</p>

  <p>此外，我们还支持一种更硬核的极客玩法：使用 <code class="language-plaintext highlighter-rouge">stljs</code> 代码块。这允许你<strong>直接编写 JavaScript 三维场景构建代码</strong>！在代码内部，你已经拥有了预置好的 <code class="language-plaintext highlighter-rouge">THREE</code>, <code class="language-plaintext highlighter-rouge">scene</code>, 和 <code class="language-plaintext highlighter-rouge">material</code>。例如，下面是一段召唤一组“不可描述”抽象几何体的代码：</p>
</div>

<pre><code class="language-stljs">const mesh = new THREE.Group();

const cylGeo = new THREE.CylinderGeometry(8, 8, 40, 32);
const cyl = new THREE.Mesh(cylGeo, material);
cyl.position.y = 20;
mesh.add(cyl);

const sphGeo = new THREE.SphereGeometry(12, 32, 32);
const sph1 = new THREE.Mesh(sphGeo, material);
sph1.position.set(-10, 0, 0);
mesh.add(sph1);

const sph2 = new THREE.Mesh(sphGeo, material);
sph2.position.set(10, 0, 0);
mesh.add(sph2);

// 为自动缩放镜头设置一个虚拟的包裹盒
mesh.geometry = new THREE.BoxGeometry(40, 60, 24);
mesh.geometry.computeBoundingBox();

scene.add(mesh);
</code></pre>

<h2 id="14-geojson-交互式地图">14. GeoJSON 交互式地图</h2>

<p>同样地，地图数据也能原生渲染！只需要使用 <code class="language-plaintext highlighter-rouge">geojson</code> 或 <code class="language-plaintext highlighter-rouge">topojson</code>。系统会懒加载 Leaflet 地图组件，将坐标系精确绘制在全球地图上（使用 CartoDB 极简风格底图），并自动计算最佳缩放视角。</p>

<div class="github-alert github-alert-tip">
  <div class="github-alert-title">
<span class="material-symbols-outlined">lightbulb</span> Tip</div>
<p><strong>坐标点 (Point) 和 范围 (Polygon)</strong>
只要在 Markdown 里写上 <code class="language-plaintext highlighter-rouge">geojson</code> 代码块，渲染器会自动分别生成独立的地图，并且自适应缩放到最合适的观看距离。你可以点击图元查看附带的 Properties 属性。</p>
</div>

<h3 id="示例-1单点坐标-point">示例 1：单点坐标 (Point)</h3>

<pre><code class="language-geojson">{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [121.4442, 31.1895]
      },
      "properties": {
        "name": "宛平南路600号 (Point)",
        "description": "上海市精神卫生中心"
      }
    }
  ]
}
</code></pre>

<h3 id="示例-2范围多边形-polygon">示例 2：范围多边形 (Polygon)</h3>

<pre><code class="language-geojson">{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [116.38, 39.90],
            [116.42, 39.90],
            [116.42, 39.93],
            [116.38, 39.93],
            [116.38, 39.90]
          ]
        ]
      },
      "properties": {
        "name": "故宫范围 (Polygon)",
        "description": "这是一个自定义的多边形"
      }
    }
  ]
}
</code></pre>

<h2 id="15-键盘按键风格渲染-keyboard-input">15. 键盘按键风格渲染 (Keyboard Input)</h2>

<p>在编写技术文档、快捷键说明时，你可以使用原生 <code class="language-plaintext highlighter-rouge">&lt;kbd&gt;</code> 标签。我们为其量身定制了微立体质感的物理键帽样式，这让快捷键的指引在视觉上更加清晰且极具质感。</p>

<ul>
  <li>快速打开命令面板：<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd>
</li>
  <li>保存文件并退出：<kbd>Win</kbd> + <kbd>S</kbd> 然后按 <kbd>Esc</kbd>
</li>
  <li>在终端中止当前进程：<kbd>Ctrl</kbd> + <kbd>C</kbd>
</li>
</ul>

<h2 id="16-文件下载卡片-file-download-card">16. 文件下载卡片 (File Download Card)</h2>

<p>如果你需要提供 Cloudflare R2 或者其他云存储的外部文件下载链接，不要使用干瘪的普通超链接。Jekyll 原生支持 Liquid <code class="language-plaintext highlighter-rouge">include</code> 标签，我们为你定制了一个 MD3 风格的下载展示 UI。</p>

<p>你只需要在文章中插入：</p>
<div class="language-liquid highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr>
<td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre></td>
<td class="rouge-code"><pre>
<span class="cp">{%</span><span class="w"> </span><span class="nt">include</span><span class="w"> </span>file_download.html<span class="w"> 
   </span><span class="na">name</span><span class="o">=</span><span class="s2">"2026_Q3_Financial_Report.pdf"</span><span class="w"> 
   </span><span class="na">size</span><span class="o">=</span><span class="s2">"4.2 MB"</span><span class="w"> 
   </span><span class="na">date</span><span class="o">=</span><span class="s2">"2026-08-01"</span><span class="w"> 
   </span><span class="na">icon</span><span class="o">=</span><span class="s2">"picture_as_pdf"</span><span class="w"> 
   </span><span class="na">color</span><span class="o">=</span><span class="s2">"error"</span><span class="w"> 
   </span><span class="na">url</span><span class="o">=</span><span class="s2">"https://example.com/file.pdf"</span><span class="w"> </span><span class="cp">%}</span>

</pre></td>
</tr></tbody></table></code></pre></div></div>

<p><strong>实际渲染效果：</strong></p>

<div class="file-download-wrapper">
  <a href="https://example.com/file.pdf" class="file-download-card color-error" download="" target="_blank" rel="noopener">
    <div class="file-icon">
      <span class="material-symbols-outlined">picture_as_pdf</span>
    </div>
    <div class="file-info">
      <div class="file-name">2026_Q3_Financial_Report.pdf</div>
      <div class="file-meta">
        <span class="file-size">4.2 MB</span>
        <span class="separator">•</span>
        <span class="file-date">2026-08-01</span>
      </div>
    </div>
    <div class="file-action">
      <div class="icon-btn-mock" aria-hidden="true">
        <span class="material-symbols-outlined">download</span>
      </div>
    </div>
  </a>
</div>

<div class="file-download-wrapper">
  <a href="https://example.com/file.zip" class="file-download-card color-tertiary" download="" target="_blank" rel="noopener">
    <div class="file-icon">
      <span class="material-symbols-outlined">folder_zip</span>
    </div>
    <div class="file-info">
      <div class="file-name">Source_Code_v2.0.zip</div>
      <div class="file-meta">
        <span class="file-size">128 MB</span>
        <span class="separator">•</span>
        <span class="file-date">2026-08-03</span>
      </div>
    </div>
    <div class="file-action">
      <div class="icon-btn-mock" aria-hidden="true">
        <span class="material-symbols-outlined">download</span>
      </div>
    </div>
  </a>
</div>

<h2 id="17-媒体相册与全屏灯箱-md3-gallery--lightbox">17. 媒体相册与全屏灯箱 (MD3 Gallery &amp; Lightbox)</h2>

<p>在撰写博客时，经常需要展示多张照片、截图或是演示视频。为了提供最优雅的浏览体验，本博客最新引入了 <strong>自动相册 (Smart Gallery)</strong> 与 <strong>全屏悬浮灯箱 (MD3 Lightbox Viewer)</strong> 功能。</p>

<h3 id="自动组合的智能相册-smart-gallery">自动组合的智能相册 (Smart Gallery)</h3>

<p>你不需要在 Markdown 中书写任何复杂的 <abbr title="Hyper Text Markup Language">HTML</abbr> 代码。<strong>只要你将多张图片连续放置（即换行连续写 <code class="language-plaintext highlighter-rouge">![]()</code>，且中间不穿插其他文本），底层的引擎就会在页面加载时，自动识别并将它们打包成一个高级相册组件。</strong></p>

<p>生成的相册具有以下特性：</p>
<ul>
  <li>
<strong>上大图、下缩略图</strong>：采用现代化的 <code class="language-plaintext highlighter-rouge">16:9</code> 黄金比例展示主视图，下方提供可横向滑动的缩略图列表。</li>
  <li>
<strong>无缝切换动画</strong>：点击下方缩略图时，主视图会执行流畅的淡入淡出（Crossfade）切换动画，避免生硬的画面闪烁。</li>
  <li>
<strong>MD3 设计语言</strong>：选中的缩略图会有一圈柔和的强调色边框（Primary Color），并且带有细微的不透明度渐变反馈。</li>
</ul>

<p>下面是一个由 5 张图组成的相册示例，你可以点击下方的小图进行切换：</p>

<p><img src="https://static1.e621.net/data/sample/a7/22/a722e2d7bcc1fd2e33ae9923e797360d.webp" alt="e621.net/posts/4861104">
<img src="https://static1.e621.net/data/sample/b6/94/b6946fcb3ae99880a86552a10ca767bb.webp" alt="e621.net/posts/6042654">
<img src="https://static1.e621.net/data/sample/76/b6/76b6d8c639b1c0cdf60badbbfa9094c9.webp" alt="e621.net/posts/5440712">
<img src="https://static1.e621.net/data/27/78/27784f238af1765319351a773e1654ea.jpg" alt="e621.net/posts/3038">
<img src="https://static1.e621.net/data/sample/c9/6e/c96e15501406a1de7db54c43209b4abe.webp" alt="e621.net/posts/6161335"></p>

<h3 id="全屏沉浸式灯箱查看器-lightbox-viewer">全屏沉浸式灯箱查看器 (Lightbox Viewer)</h3>

<p>不仅相册里的大图可以点击，即便是文章中单独出现的一张图片，当你点击它时，都会立即唤出一个沉浸式的全屏灯箱。</p>

<div class="github-alert github-alert-tip">
  <div class="github-alert-title">
<span class="material-symbols-outlined">lightbulb</span> Tip</div>
<p><strong>操作指南</strong>：</p>
  <ol>
    <li>
<strong>缩放</strong>：在全屏状态下，你可以直接使用鼠标滚轮进行无级缩放。或者点击右上角的 🔍 放大/缩小按钮。</li>
    <li>
<strong>拖拽平移</strong>：当图片被放大后，你可以按住鼠标左键（或在手机上使用手指）随意拖动图片，查看细节。</li>
    <li>
<strong>快捷键切换</strong>：如果你是在相册中打开了灯箱，可以使用键盘上的 <kbd>←</kbd> 左箭头 和 <kbd>→</kbd> 右箭头 快速翻页。</li>
    <li>
<strong>退出</strong>：点击右上角的关闭按钮、点击背景黑色模糊区域，或者直接按下键盘上的 <kbd>Esc</kbd> 键即可退出全屏。</li>
  </ol>
</div>

<p>为了展示这个效果，这里有一张孤立的宽幅图片，点击它感受一下毛玻璃背景（Backdrop Blur）衬托下的极致阅图体验吧：</p>

<p><img src="https://static1.e621.net/data/c9/45/c9458f955ae9ca8f93f98678a4efa1df.png" alt="e621.net/posts/5289698"></p>

<hr>

<h2 id="18-liquid-进阶语法-liquid-advanced-syntax">18. Liquid 进阶语法 (Liquid Advanced Syntax)</h2>

<p>除了前面展示的基础变量和部分功能外，Liquid 还是一个非常成熟的模板控制引擎。通过以下进阶语法，你可以让你的静态博客拥有极强的动态生成能力。</p>

<h3 id="181-逻辑控制-control-flow">18.1 逻辑控制 (Control Flow)</h3>

<p>Liquid 允许你在 Markdown 中进行各种逻辑判断，这在编写复杂的主题模板或根据条件显示特定内容时非常有用。</p>

<h4 id="if--elsif--else-与-unless">if / elsif / else 与 unless</h4>
<p><code class="language-plaintext highlighter-rouge">unless</code> 是 <code class="language-plaintext highlighter-rouge">if</code> 的反面，当条件为假时执行。</p>

<div class="language-liquid highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr>
<td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td>
<td class="rouge-code"><pre>
<span class="cp">{%</span><span class="w"> </span><span class="nt">if</span><span class="w"> </span><span class="nv">page</span><span class="p">.</span><span class="nv">comments</span><span class="w"> </span><span class="cp">%}</span>
  &lt;p&gt;评论功能已开启！快来留言吧。&lt;/p&gt;
<span class="cp">{%</span><span class="w"> </span><span class="nt">elsif</span><span class="w"> </span><span class="nv">page</span><span class="p">.</span><span class="nv">title</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s2">"特殊文章"</span><span class="w"> </span><span class="cp">%}</span>
  &lt;p&gt;这是一篇特殊文章。&lt;/p&gt;
<span class="cp">{%</span><span class="w"> </span><span class="nt">else</span><span class="w"> </span><span class="cp">%}</span>
  &lt;p&gt;默认内容。&lt;/p&gt;
<span class="cp">{%</span><span class="w"> </span><span class="nt">endif</span><span class="w"> </span><span class="cp">%}</span>

<span class="cp">{%</span><span class="w"> </span><span class="nt">unless</span><span class="w"> </span><span class="nv">page</span><span class="p">.</span><span class="nv">draft</span><span class="w"> </span><span class="cp">%}</span>
  &lt;p&gt;这篇文章不是草稿，已向公众展示。&lt;/p&gt;
<span class="cp">{%</span><span class="w"> </span><span class="nt">endunless</span><span class="w"> </span><span class="cp">%}</span>

</pre></td>
</tr></tbody></table></code></pre></div></div>

<h4 id="case--when">case / when</h4>
<p>当你需要检查一个变量是否有多个特定值时：</p>

<div class="language-liquid highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr>
<td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
</pre></td>
<td class="rouge-code"><pre>
<span class="cp">{%</span><span class="w"> </span><span class="nt">assign</span><span class="w"> </span><span class="nv">animal</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"cat"</span><span class="w"> </span><span class="cp">%}</span>
<span class="cp">{%</span><span class="w"> </span><span class="nt">case</span><span class="w"> </span><span class="nv">animal</span><span class="w"> </span><span class="cp">%}</span>
  <span class="cp">{%</span><span class="w"> </span><span class="nt">when</span><span class="w"> </span><span class="s2">"dog"</span><span class="w"> </span><span class="cp">%}</span>
    &lt;p&gt;汪汪！&lt;/p&gt;
  <span class="cp">{%</span><span class="w"> </span><span class="nt">when</span><span class="w"> </span><span class="s2">"cat"</span><span class="w"> </span><span class="cp">%}</span>
    &lt;p&gt;喵喵！&lt;/p&gt;
  <span class="cp">{%</span><span class="w"> </span><span class="nt">else</span><span class="w"> </span><span class="cp">%}</span>
    &lt;p&gt;未知动物。&lt;/p&gt;
<span class="cp">{%</span><span class="w"> </span><span class="nt">endcase</span><span class="w"> </span><span class="cp">%}</span>

</pre></td>
</tr></tbody></table></code></pre></div></div>

<h3 id="182-循环与遍历-iteration">18.2 循环与遍历 (Iteration)</h3>

<p>你可以使用 <code class="language-plaintext highlighter-rouge">for</code> 循环遍历数组，或者直接迭代一定次数。这在生成文章列表、标签页时必不可少。</p>

<h4 id="基础遍历与限制">基础遍历与限制</h4>
<div class="language-liquid highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr>
<td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td>
<td class="rouge-code"><pre>
&lt;!-- 遍历标签数组，只输出前两个 --&gt;
&lt;ul&gt;
<span class="cp">{%</span><span class="w"> </span><span class="nt">for</span><span class="w"> </span><span class="nv">tag</span><span class="w"> </span><span class="nt">in</span><span class="w"> </span><span class="nv">page</span><span class="p">.</span><span class="nv">tags</span><span class="w"> </span><span class="na">limit</span><span class="o">:</span><span class="mi">2</span><span class="w"> </span><span class="cp">%}</span>
  &lt;li&gt;标签: <span class="cp">{{</span><span class="w"> </span><span class="nv">tag</span><span class="w"> </span><span class="cp">}}</span>&lt;/li&gt;
<span class="cp">{%</span><span class="w"> </span><span class="nt">endfor</span><span class="w"> </span><span class="cp">%}</span>
&lt;/ul&gt;

&lt;!-- 循环固定次数，或者反向循环 --&gt;
<span class="cp">{%</span><span class="w"> </span><span class="nt">for</span><span class="w"> </span><span class="nv">i</span><span class="w"> </span><span class="nt">in</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">..</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="na">reversed</span><span class="w"> </span><span class="cp">%}</span>
  &lt;p&gt;倒计时：<span class="cp">{{</span><span class="w"> </span><span class="nv">i</span><span class="w"> </span><span class="cp">}}</span>&lt;/p&gt;
<span class="cp">{%</span><span class="w"> </span><span class="nt">endfor</span><span class="w"> </span><span class="cp">%}</span>

</pre></td>
</tr></tbody></table></code></pre></div></div>

<h4 id="cycle-轮流输出">Cycle (轮流输出)</h4>
<p>在循环中非常有用的语法，可以在每次迭代时交替输出不同的类名或字符串，通常用于给列表的奇偶行加上不同的颜色：</p>
<div class="language-liquid highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr>
<td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
</pre></td>
<td class="rouge-code"><pre>
<span class="cp">{%</span><span class="w"> </span><span class="nt">for</span><span class="w"> </span><span class="nv">i</span><span class="w"> </span><span class="nt">in</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">..</span><span class="mi">4</span><span class="p">)</span><span class="w"> </span><span class="cp">%}</span>
  &lt;div class="<span class="cp">{%</span><span class="w"> </span><span class="nt">cycle</span><span class="w"> </span><span class="s1">'odd-row'</span><span class="p">,</span><span class="w"> </span><span class="s1">'even-row'</span><span class="w"> </span><span class="cp">%}</span>"&gt;项目 <span class="cp">{{</span><span class="w"> </span><span class="nv">i</span><span class="w"> </span><span class="cp">}}</span>&lt;/div&gt;
<span class="cp">{%</span><span class="w"> </span><span class="nt">endfor</span><span class="w"> </span><span class="cp">%}</span>

</pre></td>
</tr></tbody></table></code></pre></div></div>

<h4 id="tablerow-自动生成-html-表格">Tablerow (自动生成 <abbr title="Hyper Text Markup Language">HTML</abbr> 表格)</h4>
<p><code class="language-plaintext highlighter-rouge">tablerow</code> 可以自动帮你把一维数组渲染为 <abbr title="Hyper Text Markup Language">HTML</abbr> 的 <code class="language-plaintext highlighter-rouge">&lt;table&gt;</code> 元素。</p>
<div class="language-liquid highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr>
<td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
</pre></td>
<td class="rouge-code"><pre>
&lt;table&gt;
<span class="cp">{%</span><span class="w"> </span><span class="nt">tablerow</span><span class="w"> </span><span class="nv">tag</span><span class="w"> </span><span class="nt">in</span><span class="w"> </span><span class="nv">page</span><span class="p">.</span><span class="nv">tags</span><span class="w"> </span><span class="na">cols</span><span class="o">:</span><span class="mi">2</span><span class="w"> </span><span class="cp">%}</span>
  <span class="cp">{{</span><span class="w"> </span><span class="nv">tag</span><span class="w"> </span><span class="cp">}}</span>
<span class="cp">{%</span><span class="w"> </span><span class="nt">endtablerow</span><span class="w"> </span><span class="cp">%}</span>
&lt;/table&gt;

</pre></td>
</tr></tbody></table></code></pre></div></div>

<h3 id="183-变量操作与逃逸-variables--raw">18.3 变量操作与逃逸 (Variables &amp; Raw)</h3>

<h4 id="assign-与-capture">assign 与 capture</h4>
<p><code class="language-plaintext highlighter-rouge">assign</code> 用于单行变量赋值，而 <code class="language-plaintext highlighter-rouge">capture</code> 可以把一大块包含 Liquid 渲染内容的块级元素打包存进一个变量里。</p>

<div class="language-liquid highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr>
<td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td>
<td class="rouge-code"><pre>
<span class="cp">{%</span><span class="w"> </span><span class="nt">assign</span><span class="w"> </span><span class="nv">primary_color</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"#0061A4"</span><span class="w"> </span><span class="cp">%}</span>

<span class="cp">{%</span><span class="w"> </span><span class="nt">capture</span><span class="w"> </span><span class="nv">alert_html</span><span class="w"> </span><span class="cp">%}</span>
  &lt;div style="color: <span class="cp">{{</span><span class="w"> </span><span class="nv">primary_color</span><span class="w"> </span><span class="cp">}}</span>"&gt;
    &lt;h4&gt;注意&lt;/h4&gt;
    &lt;p&gt;这是被捕获的一段复杂 HTML 文本。&lt;/p&gt;
  &lt;/div&gt;
<span class="cp">{%</span><span class="w"> </span><span class="nt">endcapture</span><span class="w"> </span><span class="cp">%}</span>

&lt;!-- 在其他地方输出被捕获的内容 --&gt;
<span class="cp">{{</span><span class="w"> </span><span class="nv">alert_html</span><span class="w"> </span><span class="cp">}}</span>

</pre></td>
</tr></tbody></table></code></pre></div></div>

<h4 id="原样输出-raw-与-注释-comment">原样输出 (Raw) 与 注释 (Comment)</h4>
<p>如果你正在写技术博客教别人怎么用 Liquid（就像本文一样），你可以用 <code class="language-plaintext highlighter-rouge">raw</code> 让 Liquid 停止解析大括号。用 <code class="language-plaintext highlighter-rouge">comment</code> 则可以写只在源码可见、连编译后的 <abbr title="Hyper Text Markup Language">HTML</abbr> 里面都不会出现的极密注释。</p>

<p>’ %}</p>

<div class="language-liquid highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr>
<td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
</pre></td>
<td class="rouge-code"><pre><span class="cp">{%</span><span class="w"> </span><span class="nt">raw</span><span class="w"> 
</span>这里面的<span class="w"> </span><span class="cp">{{</span><span class="w"> </span>不会被解析<span class="w"> </span><span class="cp">}}</span>，{%<span class="w"> </span><span class="nv">include</span><span class="w"> </span>也会失效<span class="w"> </span>。<span class="w">
</span>{%<span class="w"> </span><span class="nv">endraw</span><span class="w"> 

</span>{%<span class="w"> </span><span class="nv">comment</span><span class="w"> 
</span>这个注释在<span class="w"> </span>`jekyll<span class="w"> </span><span class="nv">build</span>`<span class="w"> </span>的时候会被彻底抹去，用户<span class="w"> </span><span class="nv">F12</span><span class="w"> </span>绝对看不到。<span class="w">
</span>{%<span class="w"> </span><span class="nv">endcomment</span><span class="w"> 
</span></pre></td>
</tr></tbody></table></code></pre></div></div>

<h3 id="184-丰富的过滤器-filters">18.4 丰富的过滤器 (Filters)</h3>

<p>过滤器用于修改变量的输出结果，你可以用管道符 <code class="language-plaintext highlighter-rouge">|</code> 把它们串联起来。</p>

<div class="language-liquid highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr>
<td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
</pre></td>
<td class="rouge-code"><pre>
* **转为大写**: <span class="cp">{{</span><span class="w"> </span><span class="s2">"hello world"</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">upcase</span><span class="w"> </span><span class="cp">}}</span> =&gt; HELLO WORLD
* **首字母大写**: <span class="cp">{{</span><span class="w"> </span><span class="s2">"hello world"</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">capitalize</span><span class="w"> </span><span class="cp">}}</span> =&gt; Hello world
* **去除 HTML 标签**: <span class="cp">{{</span><span class="w"> </span><span class="s2">"&lt;b&gt;粗体&lt;/b&gt;"</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">strip_html</span><span class="w"> </span><span class="cp">}}</span> =&gt; 粗体
* **截断字符**: <span class="cp">{{</span><span class="w"> </span><span class="s2">"这是一段非常长的测试文本，超过长度会被截断。"</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">truncate</span><span class="p">:</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="s2">"..."</span><span class="w"> </span><span class="cp">}}</span> =&gt; 这是一段非常长...
* **默认值后备**: <span class="cp">{{</span><span class="w"> </span><span class="nv">page</span><span class="p">.</span><span class="nv">author</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">default</span><span class="p">:</span><span class="w"> </span><span class="s2">"佚名"</span><span class="w"> </span><span class="cp">}}</span> =&gt; 佚名
* **获取数组首项**: <span class="cp">{{</span><span class="w"> </span><span class="nv">page</span><span class="p">.</span><span class="nv">tags</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">first</span><span class="w"> </span><span class="cp">}}</span>

</pre></td>
</tr></tbody></table></code></pre></div></div>

<h3 id="185-jekyll-专属超级链接-post--link">18.5 Jekyll 专属超级链接 (Post &amp; Link)</h3>

<p>在文章中插入站内链接时，千万不要把 URL 写死（如 <code class="language-plaintext highlighter-rouge">[点击这里](/2026/07/31/npg6ht.html)</code>）。通过 Jekyll 扩展的 <code class="language-plaintext highlighter-rouge">post_url</code> 和 <code class="language-plaintext highlighter-rouge">link</code> 语法，你可以通过文件名来关联，哪怕未来你修改了 Jekyll 的固定链接路由规则 (Permalinks)，你的历史文章链接也<strong>永远不会失效/404</strong>。</p>

<div class="language-liquid highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr>
<td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
</pre></td>
<td class="rouge-code"><pre>
&lt;!-- 链接到当前文章 (文件名去掉后缀即可) --&gt;
[了解 Jekyll 语法展示](<span class="cp">{%</span><span class="w"> </span><span class="nt">post_url</span><span class="w"> </span><span class="mi">2026</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">31</span><span class="o">-</span><span class="nv">npg6ht</span><span class="w"> </span><span class="cp">%}</span>)

&lt;!-- 链接到普通页面或静态资源文件 --&gt;
[下载这张图片](<span class="cp">{%</span><span class="w"> </span><span class="nt">link</span><span class="w"> </span>assets/images/jekyll.jpg<span class="w"> </span><span class="cp">%}</span>)

</pre></td>
</tr></tbody></table></code></pre></div></div>

<hr>

<h2 id="19-定制化媒体播放器-md3-player">19. 定制化媒体播放器 (MD3 Player)</h2>

<p>Antigravity 主题支持自动拦截浏览器原生的 <code class="language-plaintext highlighter-rouge">&lt;video&gt;</code> 和 <code class="language-plaintext highlighter-rouge">&lt;audio&gt;</code> 标签，并将其替换为符合 Material Design 3 (MD3) 设计规范的毛玻璃风格自定义播放器。</p>

<p>只需在插入音视频时带有 <code class="language-plaintext highlighter-rouge">controls</code> 属性，系统便会自动接管。</p>

<h3 id="视频播放器-video">视频播放器 (Video)</h3>
<p>带有全屏支持和底部悬浮控制栏的响应式视频播放器：</p>

<video src="/assets/videos/rickroll.mp4" controls=""></video>

<h3 id="音乐播放器-audio">音乐播放器 (Audio)</h3>
<p>简洁美观的内嵌式音频播放栏，支持丝滑的进度拖拽：</p>

<audio src="/assets/audios/Record_Makers_Kavinsky_Testarossa_Autodrive_Official_Audio.mp3" controls="" data-title="Testarossa Autodrive" data-artist="Kavinsky" data-album="Teddy Boy" data-cover="https://i.scdn.co/image/ab67616d0000b2732d2f53ca63206d3dd852f250">
</audio>

<audio src="/assets/audios/Record_Makers_Kavinsky_Nightcall_Drive_Original_Movie_Soundtrack.mp3" controls="" data-title="Nightcall" data-artist="Kavinsky" data-album="Nightcall" data-cover="https://i.scdn.co/image/ab67616d0000b273d6d8c2eaa1f9031b62f7a3f7">
</audio>

<p><strong>RIP Kavinsky</strong></p>

<audio src="https://zgqinc.gq/music/Running_in_the_Night-FM-84&amp;Ollie_Wride.mp3" controls="" data-title="Running in the Night" data-artist="FM-84 &amp; Ollie Wride" data-album="Atlas" data-cover="https://zgqinc.gq/music/Running_in_the_Night-FM-84&amp;Ollie_Wride.png">
</audio>

<audio src="https://zgqinc.gq/music/The_Midnight&amp;Timecop1983-River_of_Darkness_(feat._Timecop1983).mp3" controls="" data-title="River of Darkness (feat. Timecop1983)" data-artist="The Midnight &amp; Timecop1983" data-album="Nocturnal">
</audio>

<hr>
<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1">
      <p>这里是脚注的具体内容说明，Kramdown 会自动将其放在页面底部并生成双向跳转链接。 <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
    </li>
  </ol>
</div>]]></content><author><name>ZGQ Inc.</name></author><category term="教程" /><category term="Jekyll" /><category term="markdown" /><category term="jekyll" /><category term="kramdown" /><category term="demo" /><summary type="html"><![CDATA[这篇文章展示了 Jekyll（基于 kramdown 解析器）所支持的绝大多数 markup 语法，用于测试主题样式或作为撰写文章的参考规范。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blog.zgqinc.gq/assets/images/jekyll.jpg" /><media:content medium="image" url="https://blog.zgqinc.gq/assets/images/jekyll.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>