<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>FangYuan</title><description>方圆</description><link>https://virace.github.io/FangYuan/</link><language>zh_CN</language><item><title>内容与主题分离，以及评论接入</title><link>https://virace.github.io/FangYuan/extra/</link><guid isPermaLink="true">https://virace.github.io/FangYuan/extra/</guid><description>说明 FangYuan 如何把主题仓库、站点内容和评论能力拆开维护。</description><pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;FangYuan 现在更适合按“双仓”来维护：公开仓库存放主题源码和 demo，私有仓库存放正式站点内容。这样做的重点不是把东西拆散，而是让主题演进和内容运营各自独立。&lt;/p&gt;
&lt;h2&gt;主题负责什么&lt;/h2&gt;
&lt;p&gt;主题仓库主要负责站点本身的结构和能力，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;src/components/&lt;/code&gt;、&lt;code&gt;src/layouts/&lt;/code&gt;、&lt;code&gt;src/styles/&lt;/code&gt; 里的界面与样式&lt;/li&gt;
&lt;li&gt;&lt;code&gt;src/plugins/&lt;/code&gt; 和 &lt;code&gt;src/utils/&lt;/code&gt; 里的 Markdown 扩展、路由规则和工具函数&lt;/li&gt;
&lt;li&gt;&lt;code&gt;src/default-config.ts&lt;/code&gt; 里的 demo 默认配置&lt;/li&gt;
&lt;li&gt;&lt;code&gt;src/content/&lt;/code&gt; 里的内置演示文章&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这层更像“可复用的站点外壳”。它可以持续迭代，但不必和真实内容仓库绑死在一起。&lt;/p&gt;
&lt;h2&gt;内容负责什么&lt;/h2&gt;
&lt;p&gt;真实站点内容更适合放在外部 &lt;code&gt;site/&lt;/code&gt; 输入层里维护：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;site/site.config.yaml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;site/content/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;site/assets/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样一来，主题仓库可以继续公开，正式文章、页面和站点配置则可以单独放在私有仓库里，再通过同步或挂载方式进入构建流程。&lt;/p&gt;
&lt;h2&gt;两种开发模式&lt;/h2&gt;
&lt;p&gt;当前仓库已经内置了内部演示模式和外部内容模式：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pnpm dev:internal
pnpm dev:external

pnpm build:internal
pnpm build:external
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;internal&lt;/code&gt;：使用仓库内 &lt;code&gt;src/content/&lt;/code&gt; 和默认配置，适合主题演示、功能测试和公开 demo&lt;/li&gt;
&lt;li&gt;&lt;code&gt;external&lt;/code&gt;：使用 &lt;code&gt;site/&lt;/code&gt; 下的真实内容与配置，适合联调正式站点&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样可以保证“同一套主题代码”既能展示 demo，又能服务正式站点。&lt;/p&gt;
&lt;h2&gt;评论、反馈和统计&lt;/h2&gt;
&lt;p&gt;评论相关能力已经按可选模块处理，不要求每个站点都必须启用。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;评论使用 &lt;code&gt;commentConfig&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;页面反馈使用 &lt;code&gt;pageFeedbackConfig&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;页面统计使用 &lt;code&gt;pageMetricsConfig&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些能力都可以接入 &lt;code&gt;QingYan&lt;/code&gt;。如果后端没有配置完成，前端会直接隐藏对应区块，而不是留下空壳组件。&lt;/p&gt;
&lt;p&gt;对于 demo 站点，这种做法很合适：可以先展示主题本身和内容结构，等正式站点准备好评论后端后，再在外部站点配置里接入。&lt;/p&gt;
&lt;h2&gt;适合的工作流&lt;/h2&gt;
&lt;p&gt;如果把这套方案落成双仓，比较顺的分工通常是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;公开仓库维护主题、演示内容和 Pages 站点&lt;/li&gt;
&lt;li&gt;私有仓库维护正式文章、页面、资源和站点配置&lt;/li&gt;
&lt;li&gt;正式部署时走外部内容模式&lt;/li&gt;
&lt;li&gt;主题更新时，先在 demo 验证，再同步到正式站点&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样既能保留一个稳定的公开演示入口，也不会把真实内容直接暴露在主题仓库里。&lt;/p&gt;</content:encoded></item><item><title>Expressive Code 示例</title><link>https://virace.github.io/FangYuan/expressive-code/</link><guid isPermaLink="true">https://virace.github.io/FangYuan/expressive-code/</guid><description>使用 Expressive Code 展示 Markdown 代码块效果。</description><pubDate>Mon, 16 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;下面集中展示 &lt;a href=&quot;https://expressive-code.com/&quot;&gt;Expressive Code&lt;/a&gt; 在 FangYuan 中的代码块效果。示例主要整理自官方文档，方便直接对照查看渲染结果。&lt;/p&gt;
&lt;h2&gt;Expressive Code&lt;/h2&gt;
&lt;h3&gt;语法高亮&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/key-features/syntax-highlighting/&quot;&gt;Syntax Highlighting&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;常规语法高亮&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;console.log(&quot;这段代码启用了语法高亮！&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;渲染 ANSI 转义序列&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-ansi&quot;&gt;ANSI colors:
- Regular: [31mRed[0m [32mGreen[0m [33mYellow[0m [34mBlue[0m [35mMagenta[0m [36mCyan[0m
- Bold:    [1;31mRed[0m [1;32mGreen[0m [1;33mYellow[0m [1;34mBlue[0m [1;35mMagenta[0m [1;36mCyan[0m
- Dimmed:  [2;31mRed[0m [2;32mGreen[0m [2;33mYellow[0m [2;34mBlue[0m [2;35mMagenta[0m [2;36mCyan[0m

256 colors (showing colors 160-177):
[38;5;160m160 [38;5;161m161 [38;5;162m162 [38;5;163m163 [38;5;164m164 [38;5;165m165[0m
[38;5;166m166 [38;5;167m167 [38;5;168m168 [38;5;169m169 [38;5;170m170 [38;5;171m171[0m
[38;5;172m172 [38;5;173m173 [38;5;174m174 [38;5;175m175 [38;5;176m176 [38;5;177m177[0m

Full RGB colors:
[38;2;34;139;34mForestGreen - RGB(34, 139, 34)[0m

Text formatting: [1mBold[0m [2mDimmed[0m [3mItalic[0m [4mUnderline[0m
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;编辑器与终端边框&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/key-features/frames/&quot;&gt;Editor &amp;amp; Terminal Frames&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;代码编辑器边框&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;console.log(&quot;标题属性示例&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;!-- src/content/index.html --&amp;gt;
&amp;lt;div&amp;gt;文件名注释示例&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;终端边框&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;echo &quot;这个终端边框没有标题&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;Write-Output &quot;这个终端边框带有标题！&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;覆写边框类型&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;echo &quot;看，这里没有边框！&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code class=&quot;language-ps&quot;&gt;# 如果不手动覆写，这里默认会显示成终端边框
function Watch-Tail { Get-Content -Tail 20 -Wait $args }
New-Alias tail Watch-Tail
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;文本与行标记&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/key-features/text-markers/&quot;&gt;Text &amp;amp; Line Markers&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;标记整行与行区间&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// 第 1 行 - 通过行号命中
// 第 2 行
// 第 3 行
// 第 4 行 - 通过行号命中
// 第 5 行
// 第 6 行
// 第 7 行 - 通过区间 &quot;7-8&quot; 命中
// 第 8 行 - 通过区间 &quot;7-8&quot; 命中
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;选择行标记类型（mark、ins、del）&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;function demo() {
  console.log(&quot;这一行会被标记为删除&quot;)
  // 这一行和下一行会被标记为新增
  console.log(&quot;这是第二行新增内容&quot;)

  return &quot;这一行使用默认的中性标记类型&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;给行标记添加标签&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-jsx&quot;&gt;// labeled-line-markers.jsx
&amp;lt;button
  role=&quot;button&quot;
  {...props}
  value={value}
  className={buttonClassName}
  disabled={disabled}
  active={active}
&amp;gt;
  {children &amp;amp;&amp;amp;
    !active &amp;amp;&amp;amp;
    (typeof children === &quot;string&quot; ? &amp;lt;span&amp;gt;{children}&amp;lt;/span&amp;gt; : children)}
&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;使用单独一行显示长标签&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-jsx&quot;&gt;// labeled-line-markers.jsx
&amp;lt;button
  role=&quot;button&quot;
  {...props}

  value={value}
  className={buttonClassName}

  disabled={disabled}
  active={active}
&amp;gt;

  {children &amp;amp;&amp;amp;
    !active &amp;amp;&amp;amp;
    (typeof children === &quot;string&quot; ? &amp;lt;span&amp;gt;{children}&amp;lt;/span&amp;gt; : children)}
&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;使用 diff 风格语法&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-diff&quot;&gt;+这一行会被标记为新增
-这一行会被标记为删除
这一行是普通内容
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code class=&quot;language-diff&quot;&gt;--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+这是一份真正的 diff 文件
-所有内容都会保持原样
 不会额外删除任何空白字符
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;结合语法高亮与 diff 风格语法&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-diff&quot;&gt;  function thisIsJavaScript() {
    // 这一整段都会按照 JavaScript 语法高亮，
    // 同时依然可以叠加 diff 标记！
-   console.log(&quot;旧代码将被移除&quot;)
+   console.log(&quot;这里换成新的代码&quot;)
  }
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;标记行内的局部文本&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;function demo() {
  // 可以在一行中标记任意指定文本
  return &quot;支持对指定文本进行多次匹配&quot;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;正则表达式&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;console.log(&quot;yes 和 yep 这两个单词都会被标记。&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;转义正斜杠&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;echo &quot;测试&quot; &amp;gt; /home/test.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;选择行内标记类型（mark、ins、del）&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;function demo() {
  console.log(&quot;这里演示新增与删除两种行内标记&quot;);
  // return 语句会使用默认标记类型
  return true;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;自动换行&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/key-features/word-wrap/&quot;&gt;Word Wrap&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;按代码块配置换行&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// 启用自动换行的示例
function getLongString() {
  return &quot;这是一段非常长的字符串，除非容器足够宽，否则大概率放不进可见区域&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// 禁用自动换行的示例
function getLongString() {
  return &quot;这是一段非常长的字符串，除非容器足够宽，否则大概率放不进可见区域&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;配置换行后的缩进&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// preserveIndent 示例（默认启用）
function getLongString() {
  return &quot;这是一段非常长的字符串，除非容器足够宽，否则大概率放不进可见区域&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// preserveIndent=false 示例
function getLongString() {
  return &quot;这是一段非常长的字符串，除非容器足够宽，否则大概率放不进可见区域&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;可折叠区块&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/plugins/collapsible-sections/&quot;&gt;Collapsible Sections&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// 这一段样板初始化代码会被折叠
import { someBoilerplateEngine } from &quot;@example/some-boilerplate&quot;
import { evenMoreBoilerplate } from &quot;@example/even-more-boilerplate&quot;

const engine = someBoilerplateEngine(evenMoreBoilerplate())

// 这部分代码默认会展开显示
engine.doSomething(1, 2, 3, calcFn)

function calcFn() {
  // 可以在同一个代码块里设置多个折叠区
  const a = 1
  const b = 2
  const c = a + b

  // 这一行会保持可见
  console.log(`计算结果：${a} + ${b} = ${c}`)
  return c
}

// 从这里到代码块结尾会再次折叠
engine.closeConnection()
engine.freeMemory()
engine.shutdown({ reason: &quot;示例样板代码结束&quot; })
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;行号&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/plugins/line-numbers/&quot;&gt;Line Numbers&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;按代码块显示行号&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// 这个代码块会显示行号
console.log(&quot;这里是第 2 行&quot;)
console.log(&quot;这里是第 3 行&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;// 这个代码块关闭了行号
console.log(&quot;你好&quot;)
console.log(&quot;现在你知道我在第几行了吗？&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;修改起始行号&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;console.log(&quot;这里是第 5 行&quot;)
console.log(&quot;这里是第 6 行&quot;)
&lt;/code&gt;&lt;/pre&gt;</content:encoded></item><item><title>内容指令扩展示例</title><link>https://virace.github.io/FangYuan/content-directives/</link><guid isPermaLink="true">https://virace.github.io/FangYuan/content-directives/</guid><description>集中展示 FangYuan 后续补充的内容指令组件。</description><pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这篇文章集中展示 FangYuan 后续补充的内容指令组件，便于单独检查它们的渲染和交互效果。&lt;/p&gt;
&lt;h2&gt;行内高亮&lt;/h2&gt;
&lt;p&gt;当一句话里只需要强调某个短语，而不希望用整块提示区域时，可以使用行内高亮。&lt;/p&gt;
&lt;p&gt;普通强调：&lt;mark class=&quot;md-highlight tone-note&quot; data-tone=&quot;note&quot;&gt;重点信息&lt;/mark&gt;&lt;/p&gt;
&lt;p&gt;建议提示：&lt;mark class=&quot;md-highlight tone-tip&quot; data-tone=&quot;tip&quot;&gt;推荐做法&lt;/mark&gt;&lt;/p&gt;
&lt;p&gt;强提醒：&lt;mark class=&quot;md-highlight tone-warning&quot; data-tone=&quot;warning&quot;&gt;需要特别注意&lt;/mark&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;&amp;lt;mark class=&quot;md-highlight tone-note&quot; data-tone=&quot;note&quot;&amp;gt;重点信息&amp;lt;/mark&amp;gt;

&amp;lt;mark class=&quot;md-highlight tone-tip&quot; data-tone=&quot;tip&quot;&amp;gt;推荐做法&amp;lt;/mark&amp;gt;

&amp;lt;mark class=&quot;md-highlight tone-warning&quot; data-tone=&quot;warning&quot;&amp;gt;需要特别注意&amp;lt;/mark&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;折叠块&lt;/h2&gt;
&lt;p&gt;折叠块适合放可选细节、更新记录，或者不想默认展开的较长示例。&lt;/p&gt;
&lt;details class=&quot;md-fold&quot; data-icon=&quot;file&quot;&gt;&lt;summary class=&quot;md-fold-summary&quot;&gt;展开示例&lt;/summary&gt;&lt;div class=&quot;md-fold-body&quot;&gt;
&lt;p&gt;这里是默认折叠的内容。&lt;/p&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;&amp;lt;details class=&quot;md-fold&quot; data-icon=&quot;file&quot;&amp;gt;&amp;lt;summary class=&quot;md-fold-summary&quot;&amp;gt;展开示例&amp;lt;/summary&amp;gt;&amp;lt;div class=&quot;md-fold-body&quot;&amp;gt;
&amp;lt;p&amp;gt;这里是默认折叠的内容。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;&amp;lt;/details&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;折叠块选项&lt;/h3&gt;
&lt;p&gt;可以直接在指令参数里控制默认展开状态以及标题图标。&lt;/p&gt;
&lt;p&gt;默认关闭，不写 &lt;code&gt;open&lt;/code&gt;：&lt;/p&gt;
&lt;details class=&quot;md-fold&quot; data-icon=&quot;file&quot;&gt;&lt;summary class=&quot;md-fold-summary&quot;&gt;默认关闭示例&lt;/summary&gt;&lt;div class=&quot;md-fold-body&quot;&gt;
&lt;p&gt;这里默认保持折叠。&lt;/p&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;p&gt;默认展开，显式写 &lt;code&gt;open=&quot;true&quot;&lt;/code&gt;：&lt;/p&gt;
&lt;details class=&quot;md-fold&quot; data-icon=&quot;file&quot; open&gt;&lt;summary class=&quot;md-fold-summary&quot;&gt;默认展开示例&lt;/summary&gt;&lt;div class=&quot;md-fold-body&quot;&gt;
&lt;p&gt;这里会在页面加载时直接展开。&lt;/p&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;p&gt;隐藏左侧图标：&lt;/p&gt;
&lt;details class=&quot;md-fold&quot; data-icon=&quot;none&quot;&gt;&lt;summary class=&quot;md-fold-summary&quot;&gt;无图标示例&lt;/summary&gt;&lt;div class=&quot;md-fold-body&quot;&gt;
&lt;p&gt;这里保留标题和箭头，但不显示左侧图标。&lt;/p&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;p&gt;替换图标：&lt;/p&gt;
&lt;details class=&quot;md-fold&quot; data-icon=&quot;bookmark&quot;&gt;&lt;summary class=&quot;md-fold-summary&quot;&gt;书签图标示例&lt;/summary&gt;&lt;div class=&quot;md-fold-body&quot;&gt;
&lt;p&gt;可选图标包括 &lt;code&gt;file&lt;/code&gt; &lt;code&gt;note&lt;/code&gt; &lt;code&gt;tip&lt;/code&gt; &lt;code&gt;warning&lt;/code&gt; &lt;code&gt;question&lt;/code&gt; &lt;code&gt;bookmark&lt;/code&gt; &lt;code&gt;sparkles&lt;/code&gt; &lt;code&gt;none&lt;/code&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;&amp;lt;details class=&quot;md-fold&quot; data-icon=&quot;file&quot;&amp;gt;&amp;lt;summary class=&quot;md-fold-summary&quot;&amp;gt;默认关闭示例&amp;lt;/summary&amp;gt;&amp;lt;div class=&quot;md-fold-body&quot;&amp;gt;
&amp;lt;p&amp;gt;这里默认保持折叠。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;&amp;lt;/details&amp;gt;

&amp;lt;details class=&quot;md-fold&quot; data-icon=&quot;file&quot; open&amp;gt;&amp;lt;summary class=&quot;md-fold-summary&quot;&amp;gt;默认展开示例&amp;lt;/summary&amp;gt;&amp;lt;div class=&quot;md-fold-body&quot;&amp;gt;
&amp;lt;p&amp;gt;这里会在页面加载时直接展开。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;&amp;lt;/details&amp;gt;

&amp;lt;details class=&quot;md-fold&quot; data-icon=&quot;none&quot;&amp;gt;&amp;lt;summary class=&quot;md-fold-summary&quot;&amp;gt;无图标示例&amp;lt;/summary&amp;gt;&amp;lt;div class=&quot;md-fold-body&quot;&amp;gt;
&amp;lt;p&amp;gt;这里保留标题和箭头，但不显示左侧图标。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;&amp;lt;/details&amp;gt;

&amp;lt;details class=&quot;md-fold&quot; data-icon=&quot;bookmark&quot;&amp;gt;&amp;lt;summary class=&quot;md-fold-summary&quot;&amp;gt;书签图标示例&amp;lt;/summary&amp;gt;&amp;lt;div class=&quot;md-fold-body&quot;&amp;gt;
&amp;lt;p&amp;gt;可选图标包括 &amp;lt;code&amp;gt;file&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;note&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;tip&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;warning&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;question&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;sparkles&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;&amp;lt;/details&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;补充说明块&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Aside&lt;/code&gt; 适合放不会打断正文主线的补充说明、附言或轻量提醒。&lt;/p&gt;
&lt;aside class=&quot;md-aside&quot;&gt;
&lt;p&gt;这是一段补充说明，适合放背景、PS 或轻量提醒。&lt;/p&gt;
&lt;/aside&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;&amp;lt;aside class=&quot;md-aside&quot;&amp;gt;
&amp;lt;p&amp;gt;这是一段补充说明，适合放背景、PS 或轻量提醒。&amp;lt;/p&amp;gt;
&amp;lt;/aside&amp;gt;
&lt;/code&gt;&lt;/pre&gt;</content:encoded></item><item><title>Markdown 扩展功能</title><link>https://virace.github.io/FangYuan/markdown-extended/</link><guid isPermaLink="true">https://virace.github.io/FangYuan/markdown-extended/</guid><description>了解 FangYuan 中支持的 Markdown 扩展能力。</description><pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;GitHub 仓库卡片&lt;/h2&gt;
&lt;p&gt;可以在文章里插入链接到 GitHub 仓库的动态卡片。页面加载时，会自动从 GitHub API 拉取仓库信息。&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;Fabrizz/MMM-OnSpotify&quot;}&lt;/p&gt;
&lt;p&gt;使用 &lt;code&gt;::github{repo=&quot;&amp;lt;owner&amp;gt;/&amp;lt;repo&amp;gt;&quot;}&lt;/code&gt; 就能创建一张 GitHub 仓库卡片。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;::github{repo=&quot;Virace/FangYuan&quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;提示块&lt;/h2&gt;
&lt;p&gt;当前支持以下几种提示块类型：&lt;code&gt;note&lt;/code&gt;、&lt;code&gt;tip&lt;/code&gt;、&lt;code&gt;important&lt;/code&gt;、&lt;code&gt;warning&lt;/code&gt;、&lt;code&gt;caution&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;:::note
即使只是快速浏览，也应该注意这类信息。
:::&lt;/p&gt;
&lt;p&gt;:::tip
这类补充信息可以帮助读者更顺利地完成操作。
:::&lt;/p&gt;
&lt;p&gt;:::important
这类信息通常是顺利完成任务所必需的关键内容。
:::&lt;/p&gt;
&lt;p&gt;:::warning
这类内容通常与潜在风险有关，需要读者立即关注。
:::&lt;/p&gt;
&lt;p&gt;:::caution
这类内容用于提醒某个操作可能带来的负面后果。
:::&lt;/p&gt;
&lt;h3&gt;基础语法&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;:::note
即使只是快速浏览，也应该注意这类信息。
:::

:::tip
这类补充信息可以帮助读者更顺利地完成操作。
:::
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;自定义标题&lt;/h3&gt;
&lt;p&gt;提示块标题也可以自定义。&lt;/p&gt;
&lt;p&gt;:::note[自定义标题]
这是一个带自定义标题的 &lt;code&gt;note&lt;/code&gt; 类型提示块。
:::&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;:::note[自定义标题]
这是一个带自定义标题的 `note` 类型提示块。
:::
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;GitHub 语法&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]
也兼容 &lt;a href=&quot;https://github.com/orgs/community/discussions/16925&quot;&gt;GitHub 提示块语法&lt;/a&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; [!NOTE]
&amp;gt; 也兼容 GitHub 的提示块语法。

&amp;gt; [!TIP]
&amp;gt; 也兼容 GitHub 的提示块语法。
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;剧透&lt;/h3&gt;
&lt;p&gt;可以在正文里插入剧透内容，剧透内部同样支持 &lt;strong&gt;Markdown&lt;/strong&gt; 语法。&lt;/p&gt;
&lt;p&gt;这段内容 :spoiler[会被隐藏 &lt;strong&gt;嘿嘿&lt;/strong&gt;]！&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;这段内容 :spoiler[会被隐藏 **嘿嘿**]！
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;行内高亮、折叠块和 Aside 这几类 FangYuan 后续补充的内容指令，已经单独整理到《内容指令扩展示例》里，方便分别查看效果。&lt;/p&gt;</content:encoded></item><item><title>在文章中嵌入视频</title><link>https://virace.github.io/FangYuan/video/</link><guid isPermaLink="true">https://virace.github.io/FangYuan/video/</guid><description>这篇文章演示如何在博客文章中嵌入视频。</description><pubDate>Mon, 26 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;只要把 YouTube 或其他平台提供的嵌入代码复制出来，再粘贴进 Markdown 文件即可。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;---
title: 在文章中嵌入视频
published: 2026-01-26
// ...
---

&amp;lt;iframe width=&quot;100%&quot; height=&quot;468&quot; src=&quot;https://www.youtube.com/embed/5gIf0_xpFPI?si=N1WTorLKL0uwLsU_&quot; title=&quot;YouTube 视频播放器&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;YouTube&lt;/h2&gt;

&lt;h2&gt;Bilibili&lt;/h2&gt;
 </content:encoded></item><item><title>FangYuan 简明指南</title><link>https://virace.github.io/FangYuan/guide/</link><guid isPermaLink="true">https://virace.github.io/FangYuan/guide/</guid><description>说明如何使用这个博客模板。</description><pubDate>Mon, 19 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;封面图来源：&lt;a href=&quot;https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/208fc754-890d-4adb-9753-2c963332675d/width=2048/01651-1456859105-(colour_1.5),girl,_Blue,yellow,green,cyan,purple,red,pink,_best,8k,UHD,masterpiece,male%20focus,%201boy,gloves,%20ponytail,%20long%20hair,.jpeg&quot;&gt;来源链接&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这个博客模板基于 &lt;a href=&quot;https://astro.build/&quot;&gt;Astro&lt;/a&gt; 构建。指南里没有展开说明的部分，通常都可以在 &lt;a href=&quot;https://docs.astro.build/&quot;&gt;Astro Docs&lt;/a&gt; 里找到答案。&lt;/p&gt;
&lt;h2&gt;文章 Frontmatter&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;---
title: 我的第一篇博客文章
published: 2026-01-12
description: 这是我新的 Astro 博客中的第一篇文章。
image: ./cover.jpg
tags: [示例, 前端]
category: 前端
draft: false
---
&lt;/code&gt;&lt;/pre&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;字段&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;文章标题。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;published&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;文章发布时间。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;description&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;文章简介，会展示在列表页。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;image&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;文章封面图路径。&lt;br /&gt;1. 以 &lt;code&gt;http://&lt;/code&gt; 或 &lt;code&gt;https://&lt;/code&gt; 开头：使用网络图片&lt;br /&gt;2. 以 &lt;code&gt;/&lt;/code&gt; 开头：表示图片位于 &lt;code&gt;public/&lt;/code&gt; 目录&lt;br /&gt;3. 没有这些前缀：表示相对当前 Markdown 文件的路径&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tags&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;文章标签。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;category&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;文章分类。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;draft&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;是否为草稿。草稿文章不会展示给访客。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;文章文件应该放在哪里&lt;/h2&gt;
&lt;p&gt;文章文件应该放在 &lt;code&gt;src/content/posts/&lt;/code&gt; 目录下。你也可以按需创建子目录，用来更好地组织文章和配套资源。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;src/content/posts/
├── post-1.md
└── post-2/
    ├── cover.png
    └── index.md
&lt;/code&gt;&lt;/pre&gt;</content:encoded></item><item><title>Markdown 示例</title><link>https://virace.github.io/FangYuan/markdown/</link><guid isPermaLink="true">https://virace.github.io/FangYuan/markdown/</guid><description>一篇用于展示 Markdown 基础语法的简单示例文章。</description><pubDate>Mon, 12 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;一级标题&lt;/h1&gt;
&lt;p&gt;段落之间使用空行分隔。&lt;/p&gt;
&lt;p&gt;第二段。&lt;em&gt;斜体&lt;/em&gt;、&lt;strong&gt;粗体&lt;/strong&gt;，以及 &lt;code&gt;等宽文本&lt;/code&gt;。无序列表看起来像这样：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第一项&lt;/li&gt;
&lt;li&gt;第二项&lt;/li&gt;
&lt;li&gt;第三项&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;请注意，正文内容会从缩进 4 个空格之后开始。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;引用块
可以这样写。&lt;/p&gt;
&lt;p&gt;如果需要，
也可以跨越多个段落。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;用 3 个连字符表示破折号。用 2 个连字符表示范围（例如“第 12--14 章”）。三个点 ... 会被转换为省略号。
支持 Unicode。☺&lt;/p&gt;
&lt;h2&gt;二级标题&lt;/h2&gt;
&lt;p&gt;下面是一个有序列表：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;第一项&lt;/li&gt;
&lt;li&gt;第二项&lt;/li&gt;
&lt;li&gt;第三项&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;再次注意，正文会从左侧第 4 列开始，也就是缩进 4 个字符。下面是一个代码示例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 再强调一次……
for i in 1 .. 10 { do-something(i) }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如你所见，这里用了 4 个空格缩进。除此之外，你也可以不用缩进，而是改用围栏代码块：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;define foobar() {
    print &quot;欢迎来到示例世界！&quot;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样复制和粘贴会更方便。你也可以额外给围栏代码块标记语言，让 Pandoc 执行语法高亮：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;import time
# 快一点，开始数到十！
for i in range(10):
    # （不过别太快）
    time.sleep(0.5)
    print(i)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;三级标题&lt;/h3&gt;
&lt;p&gt;下面是一个嵌套列表示例：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;先准备这些食材：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;胡萝卜&lt;/li&gt;
&lt;li&gt;芹菜&lt;/li&gt;
&lt;li&gt;扁豆&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;烧一锅水。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;把所有东西都倒进锅里，然后按下面这个流程操作：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 找到木勺
 打开锅盖
 搅拌
 盖上锅盖
 小心地把木勺架在锅柄上
 等 10 分钟
 回到第一步（或者煮好后关火）
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不要碰到木勺，否则它会掉下来。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;再看一次，正文总是会和 4 空格缩进对齐，包括上面接在第 3 项后面的那一行。&lt;/p&gt;
&lt;p&gt;这里有一个指向&lt;a href=&quot;http://foo.bar&quot;&gt;某个网站&lt;/a&gt;的链接、一个指向&lt;a href=&quot;local-doc.html&quot;&gt;本地文档&lt;/a&gt;的链接，以及一个指向&lt;a href=&quot;#%E4%BA%8C%E7%BA%A7%E6%A0%87%E9%A2%98&quot;&gt;当前文档章节标题&lt;/a&gt;的链接。这里还有一个脚注 &lt;a href=&quot;%E8%BF%99%E9%87%8C%E6%98%AF%E8%84%9A%E6%B3%A8%E5%86%85%E5%AE%B9%E3%80%82&quot;&gt;^1&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;表格可以这样写：&lt;/p&gt;
&lt;p&gt;尺码 材质 颜色&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;9 皮革 棕色
10 麻布 原色
11 玻璃 透明&lt;/p&gt;
&lt;p&gt;表：鞋子、尺码以及材质&lt;/p&gt;
&lt;p&gt;上面这一行就是表格标题。Pandoc 还支持多行表格：&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;关键词 文本&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;红色 日落、苹果，以及
其他偏红的
东西。&lt;/p&gt;
&lt;p&gt;绿色 树叶、草地、青蛙，
还有那些当绿色
并不轻松的东西。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;接下来是一条分隔线。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;下面是一个定义列表：&lt;/p&gt;
&lt;p&gt;苹果
: 适合拿来做苹果酱。
橙子
: 典型的柑橘类水果。
番茄
: 英文 tomato 里没有多余的 &lt;code&gt;e&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这里的正文同样缩进 4 个空格。（如果你想让版面更松一些，可以在每组术语和定义之间加一个空行。）&lt;/p&gt;
&lt;p&gt;下面是一个“行块”：&lt;/p&gt;
&lt;p&gt;| 第一行
| 第二行
| 第三行&lt;/p&gt;
&lt;p&gt;图片也可以这样写：&lt;/p&gt;
&lt;p&gt;行内数学公式可以这样写：$\omega = d\phi / dt$。独立成块的数学公式通常单独占一行，并放在双美元符号之间：&lt;/p&gt;
&lt;p&gt;$$I = \int \rho R^{2} dV$$&lt;/p&gt;
&lt;p&gt;$$
\begin{equation*}
\pi
=3.1415926535
;8979323846;2643383279;5028841971;6939937510;5820974944
;5923078164;0628620899;8628034825;3421170679;\ldots
\end{equation*}
$$&lt;/p&gt;
&lt;p&gt;另外，如果你希望某些标点按字面显示，可以用反斜杠进行转义，例如：`foo`、*bar* 等。&lt;/p&gt;</content:encoded></item></channel></rss>