@jet-w/astro-blog 0.1.6 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/chunk-6D3XRDNY.js +145 -0
  2. package/dist/chunk-A2E2VSAQ.js +246 -0
  3. package/dist/{chunk-GYLSY3OJ.js → chunk-TJTPX2WP.js} +1 -1
  4. package/dist/config/index.d.ts +3 -47
  5. package/dist/config/index.js +18 -2
  6. package/dist/i18n-PgMCFBw0.d.ts +222 -0
  7. package/dist/index.d.ts +204 -7
  8. package/dist/index.js +255 -3
  9. package/dist/integration.d.ts +9 -1
  10. package/dist/integration.js +2 -1
  11. package/dist/{sidebar-DNdiCKBw.d.ts → sidebar-Da-W_4Lr.d.ts} +1 -1
  12. package/dist/utils/sidebar.d.ts +1 -1
  13. package/package.json +1 -1
  14. package/src/components/blog/FloatingToc.vue +11 -3
  15. package/src/components/blog/Hero.astro +17 -2
  16. package/src/components/blog/NavigationTabs.vue +46 -15
  17. package/src/components/blog/PostCard.astro +28 -10
  18. package/src/components/blog/RelatedPosts.astro +23 -7
  19. package/src/components/blog/TableOfContents.astro +10 -4
  20. package/src/components/blog/TagCloud.astro +4 -3
  21. package/src/components/home/FeaturedPostsSection.astro +22 -6
  22. package/src/components/home/QuickNavSection.astro +33 -4
  23. package/src/components/home/RecentPostsSection.astro +22 -6
  24. package/src/components/home/StatsSection.astro +24 -6
  25. package/src/components/layout/Footer.astro +36 -20
  26. package/src/components/layout/Header.astro +75 -17
  27. package/src/components/layout/Sidebar.astro +40 -25
  28. package/src/components/ui/LanguageSwitcher.vue +183 -0
  29. package/src/components/ui/SearchBox.vue +13 -5
  30. package/src/components/ui/SearchInterface.vue +49 -25
  31. package/src/layouts/BaseLayout.astro +77 -52
  32. package/src/layouts/PageLayout.astro +22 -27
  33. package/src/layouts/SlidesLayout.astro +14 -2
  34. package/src/pages/archives/[year]/[month].astro +36 -17
  35. package/src/pages/archives/index.astro +36 -20
  36. package/src/pages/categories/[category].astro +33 -16
  37. package/src/pages/categories/index.astro +37 -14
  38. package/src/pages/posts/[...slug].astro +125 -18
  39. package/src/pages/posts/index.astro +59 -37
  40. package/src/pages/posts/page/[page].astro +65 -27
  41. package/src/pages/rss.xml.ts +18 -6
  42. package/src/pages/search.astro +50 -14
  43. package/src/pages/slides/index.astro +25 -6
  44. package/src/pages/tags/[tag].astro +32 -15
  45. package/src/pages/tags/index.astro +39 -16
  46. package/src/plugins/remark-containers.mjs +351 -322
  47. package/src/plugins/remark-protect-code.mjs +69 -0
  48. package/src/styles/global.css +35 -1
  49. package/templates/default/.claude/ralph-loop.local.md +48 -0
  50. package/templates/default/astro.config.mjs +33 -4
  51. package/templates/default/content/posts/blog_docs_en/01.get-started/01-intro.md +81 -0
  52. package/templates/default/content/posts/blog_docs_en/01.get-started/02-install.md +137 -0
  53. package/templates/default/content/posts/blog_docs_en/01.get-started/03-create-post.md +176 -0
  54. package/templates/default/content/posts/blog_docs_en/01.get-started/04-structure.md +173 -0
  55. package/templates/default/content/posts/blog_docs_en/01.get-started/05-deploy.md +208 -0
  56. package/templates/default/content/posts/blog_docs_en/01.get-started/README.md +52 -0
  57. package/templates/default/content/posts/blog_docs_en/02.guide/02-containers.md +245 -0
  58. package/templates/default/content/posts/blog_docs_en/02.guide/03-code-blocks.md +207 -0
  59. package/templates/default/content/posts/blog_docs_en/02.guide/03-mermaid.md +194 -0
  60. package/templates/default/content/posts/blog_docs_en/02.guide/04-icons.md +229 -0
  61. package/templates/default/content/posts/blog_docs_en/02.guide/06-latex.md +233 -0
  62. package/templates/default/content/posts/blog_docs_en/02.guide/07-video.md +184 -0
  63. package/templates/default/content/posts/blog_docs_en/02.guide/08-slides.md +359 -0
  64. package/templates/default/content/posts/blog_docs_en/02.guide/README.md +213 -0
  65. package/templates/default/content/posts/blog_docs_en/03.config/01-site.md +208 -0
  66. package/templates/default/content/posts/blog_docs_en/03.config/02-sidebar.md +240 -0
  67. package/templates/default/content/posts/blog_docs_en/03.config/03-i18n.md +349 -0
  68. package/templates/default/content/posts/blog_docs_en/03.config/README.md +85 -0
  69. package/templates/default/content/posts/blog_docs_en/README.md +79 -0
  70. package/templates/default/content/posts/blog_docs_zh/01.get-started/01-intro.md +81 -0
  71. package/templates/default/content/posts/blog_docs_zh/01.get-started/02-install.md +137 -0
  72. package/templates/default/content/posts/blog_docs_zh/01.get-started/03-create-post.md +176 -0
  73. package/templates/default/content/posts/blog_docs_zh/01.get-started/04-structure.md +173 -0
  74. package/templates/default/content/posts/blog_docs_zh/01.get-started/05-deploy.md +208 -0
  75. package/templates/default/content/posts/blog_docs_zh/01.get-started/README.md +52 -0
  76. package/templates/default/content/posts/blog_docs_zh/02.guide/02-containers.md +245 -0
  77. package/templates/default/content/posts/blog_docs_zh/02.guide/03-code-blocks.md +206 -0
  78. package/templates/default/content/posts/blog_docs_zh/02.guide/03-mermaid.md +194 -0
  79. package/templates/default/content/posts/blog_docs_zh/02.guide/04-icons.md +229 -0
  80. package/templates/default/content/posts/blog_docs_zh/02.guide/06-latex.md +233 -0
  81. package/templates/default/content/posts/blog_docs_zh/02.guide/07-video.md +184 -0
  82. package/templates/default/content/posts/blog_docs_zh/02.guide/08-slides.md +359 -0
  83. package/templates/default/content/posts/blog_docs_zh/02.guide/README.md +213 -0
  84. package/templates/default/content/posts/blog_docs_zh/03.config/01-site.md +208 -0
  85. package/templates/default/content/posts/blog_docs_zh/03.config/02-sidebar.md +240 -0
  86. package/templates/default/content/posts/blog_docs_zh/03.config/03-i18n.md +348 -0
  87. package/templates/default/content/posts/blog_docs_zh/03.config/README.md +85 -0
  88. package/templates/default/content/posts/blog_docs_zh/README.md +78 -0
  89. package/templates/default/package-lock.json +9667 -0
  90. package/templates/default/package.json +1 -1
  91. package/templates/default/src/config/footer.ts +14 -11
  92. package/templates/default/src/config/locales/en/footer.ts +17 -0
  93. package/templates/default/src/config/locales/en/index.ts +20 -0
  94. package/templates/default/src/config/locales/en/menu.ts +14 -0
  95. package/templates/default/src/config/locales/en/sidebar.ts +34 -0
  96. package/templates/default/src/config/locales/en/site.ts +7 -0
  97. package/templates/default/src/config/locales/en/ui.ts +29 -0
  98. package/templates/default/src/config/locales/index.ts +7 -0
  99. package/templates/default/src/config/locales/zh-CN/footer.ts +17 -0
  100. package/templates/default/src/config/locales/zh-CN/index.ts +20 -0
  101. package/templates/default/src/config/locales/zh-CN/menu.ts +14 -0
  102. package/templates/default/src/config/locales/zh-CN/sidebar.ts +34 -0
  103. package/templates/default/src/config/locales/zh-CN/site.ts +7 -0
  104. package/templates/default/src/config/locales/zh-CN/ui.ts +29 -0
  105. package/templates/default/src/config/sidebar.ts +10 -12
  106. package/templates/default/src/config/site.ts +2 -2
  107. package/templates/default/src/content.config.ts +15 -3
  108. package/templates/default/src/env.d.ts +7 -0
  109. package/dist/chunk-MQXPSOYB.js +0 -124
  110. package/templates/default/content/posts/blog_docs/01-quick-start.md +0 -162
  111. package/templates/default/content/posts/blog_docs/02-frontmatter.md +0 -277
  112. package/templates/default/content/posts/blog_docs/03-markdown-basic.md +0 -350
  113. package/templates/default/content/posts/blog_docs/04-containers.md +0 -331
  114. package/templates/default/content/posts/blog_docs/05-code-blocks.md +0 -388
  115. package/templates/default/content/posts/blog_docs/06-mermaid.md +0 -431
  116. package/templates/default/content/posts/blog_docs/07-video.md +0 -243
  117. package/templates/default/content/posts/blog_docs/08-latex.md +0 -382
  118. package/templates/default/content/posts/blog_docs/09-icons.md +0 -326
  119. package/templates/default/content/posts/blog_docs/10-sidebar.md +0 -445
  120. package/templates/default/content/posts/blog_docs/11-config.md +0 -334
  121. package/templates/default/content/posts/blog_docs/12-slides.mdx +0 -552
  122. package/templates/default/content/posts/blog_docs/README.md +0 -151
@@ -0,0 +1,229 @@
1
+ ---
2
+ title: 图标
3
+ description: 使用 Font Awesome、Material、Remix 和 Bootstrap 图标
4
+ pubDate: 2025-01-01
5
+ author: jet-w
6
+ categories:
7
+ - 文档
8
+ tags:
9
+ - 图标
10
+ - 设计
11
+ ---
12
+
13
+ # 图标
14
+
15
+ 使用多个流行图标库为你的内容添加视觉元素。
16
+
17
+ ## 可用图标库
18
+
19
+ | 图标库 | 前缀 | 图标数量 |
20
+ |--------|------|----------|
21
+ | Font Awesome | `fa-` | 2000+ |
22
+ | Material Icons | `material-icons` | 2500+ |
23
+ | Remix Icon | `ri-` | 2400+ |
24
+ | Bootstrap Icons | `bi-` | 2000+ |
25
+ | Ionicons | `ion-` | 1300+ |
26
+
27
+ ## Font Awesome
28
+
29
+ ### 实心图标
30
+
31
+ ```html
32
+ <i class="fas fa-home"></i>
33
+ <i class="fas fa-star"></i>
34
+ <i class="fas fa-heart"></i>
35
+ <i class="fas fa-user"></i>
36
+ ```
37
+
38
+ <i class="fas fa-home"></i> <i class="fas fa-star"></i> <i class="fas fa-heart"></i> <i class="fas fa-user"></i>
39
+
40
+ ### 常规图标
41
+
42
+ ```html
43
+ <i class="far fa-star"></i>
44
+ <i class="far fa-heart"></i>
45
+ <i class="far fa-comment"></i>
46
+ ```
47
+
48
+ <i class="far fa-star"></i> <i class="far fa-heart"></i> <i class="far fa-comment"></i>
49
+
50
+ ### 品牌图标
51
+
52
+ ```html
53
+ <i class="fab fa-github"></i>
54
+ <i class="fab fa-twitter"></i>
55
+ <i class="fab fa-linkedin"></i>
56
+ ```
57
+
58
+ <i class="fab fa-github"></i> <i class="fab fa-twitter"></i> <i class="fab fa-linkedin"></i>
59
+
60
+ ## Material Icons
61
+
62
+ ```html
63
+ <span class="material-icons">home</span>
64
+ <span class="material-icons">favorite</span>
65
+ <span class="material-icons">settings</span>
66
+ ```
67
+
68
+ <span class="material-icons">home</span> <span class="material-icons">favorite</span> <span class="material-icons">settings</span>
69
+
70
+ ### 轮廓风格
71
+
72
+ ```html
73
+ <span class="material-icons-outlined">home</span>
74
+ <span class="material-icons-outlined">favorite</span>
75
+ ```
76
+
77
+ <span class="material-icons-outlined">home</span> <span class="material-icons-outlined">favorite</span>
78
+
79
+ ### 圆角风格
80
+
81
+ ```html
82
+ <span class="material-icons-round">home</span>
83
+ <span class="material-icons-round">favorite</span>
84
+ ```
85
+
86
+ <span class="material-icons-round">home</span> <span class="material-icons-round">favorite</span>
87
+
88
+ ## Remix Icon
89
+
90
+ ```html
91
+ <i class="ri-home-line"></i>
92
+ <i class="ri-home-fill"></i>
93
+ <i class="ri-star-line"></i>
94
+ <i class="ri-star-fill"></i>
95
+ ```
96
+
97
+ <i class="ri-home-line"></i> <i class="ri-home-fill"></i> <i class="ri-star-line"></i> <i class="ri-star-fill"></i>
98
+
99
+ ### 常用图标
100
+
101
+ ```html
102
+ <i class="ri-github-fill"></i>
103
+ <i class="ri-twitter-fill"></i>
104
+ <i class="ri-code-line"></i>
105
+ <i class="ri-terminal-box-line"></i>
106
+ ```
107
+
108
+ <i class="ri-github-fill"></i> <i class="ri-twitter-fill"></i> <i class="ri-code-line"></i> <i class="ri-terminal-box-line"></i>
109
+
110
+ ## Bootstrap Icons
111
+
112
+ ```html
113
+ <i class="bi bi-house"></i>
114
+ <i class="bi bi-star"></i>
115
+ <i class="bi bi-heart"></i>
116
+ <i class="bi bi-github"></i>
117
+ ```
118
+
119
+ <i class="bi bi-house"></i> <i class="bi bi-star"></i> <i class="bi bi-heart"></i> <i class="bi bi-github"></i>
120
+
121
+ ## Ionicons
122
+
123
+ ```html
124
+ <ion-icon name="home"></ion-icon>
125
+ <ion-icon name="star"></ion-icon>
126
+ <ion-icon name="heart"></ion-icon>
127
+ ```
128
+
129
+ <ion-icon name="home"></ion-icon> <ion-icon name="star"></ion-icon> <ion-icon name="heart"></ion-icon>
130
+
131
+ ## 尺寸
132
+
133
+ ### Font Awesome
134
+
135
+ ```html
136
+ <i class="fas fa-star fa-xs"></i>
137
+ <i class="fas fa-star fa-sm"></i>
138
+ <i class="fas fa-star"></i>
139
+ <i class="fas fa-star fa-lg"></i>
140
+ <i class="fas fa-star fa-2x"></i>
141
+ <i class="fas fa-star fa-3x"></i>
142
+ ```
143
+
144
+ <i class="fas fa-star fa-xs"></i> <i class="fas fa-star fa-sm"></i> <i class="fas fa-star"></i> <i class="fas fa-star fa-lg"></i> <i class="fas fa-star fa-2x"></i> <i class="fas fa-star fa-3x"></i>
145
+
146
+ ### CSS 尺寸
147
+
148
+ ```html
149
+ <i class="ri-star-fill" style="font-size: 24px;"></i>
150
+ <i class="ri-star-fill" style="font-size: 32px;"></i>
151
+ ```
152
+
153
+ <i class="ri-star-fill" style="font-size: 24px;"></i> <i class="ri-star-fill" style="font-size: 32px;"></i>
154
+
155
+ ## 颜色
156
+
157
+ ```html
158
+ <i class="fas fa-star" style="color: gold;"></i>
159
+ <i class="fas fa-heart" style="color: red;"></i>
160
+ <i class="fas fa-leaf" style="color: green;"></i>
161
+ ```
162
+
163
+ <i class="fas fa-star" style="color: gold;"></i> <i class="fas fa-heart" style="color: red;"></i> <i class="fas fa-leaf" style="color: green;"></i>
164
+
165
+ ## 动画
166
+
167
+ ### Font Awesome
168
+
169
+ ```html
170
+ <i class="fas fa-spinner fa-spin"></i>
171
+ <i class="fas fa-circle-notch fa-spin"></i>
172
+ <i class="fas fa-sync fa-spin"></i>
173
+ ```
174
+
175
+ <i class="fas fa-spinner fa-spin"></i> <i class="fas fa-circle-notch fa-spin"></i> <i class="fas fa-sync fa-spin"></i>
176
+
177
+ ## 常见用例
178
+
179
+ ### 在文本中使用
180
+
181
+ 将图标与文本内联使用:
182
+
183
+ ```markdown
184
+ <i class="fas fa-check" style="color: green;"></i> 任务已完成
185
+
186
+ <i class="fas fa-times" style="color: red;"></i> 任务失败
187
+
188
+ <i class="fas fa-info-circle" style="color: blue;"></i> 信息
189
+ ```
190
+
191
+ <i class="fas fa-check" style="color: green;"></i> 任务已完成
192
+
193
+ <i class="fas fa-times" style="color: red;"></i> 任务失败
194
+
195
+ <i class="fas fa-info-circle" style="color: blue;"></i> 信息
196
+
197
+ ### 在列表中使用
198
+
199
+ ```markdown
200
+ - <i class="ri-checkbox-circle-fill" style="color: green;"></i> 功能 A
201
+ - <i class="ri-checkbox-circle-fill" style="color: green;"></i> 功能 B
202
+ - <i class="ri-close-circle-fill" style="color: red;"></i> 不支持
203
+ ```
204
+
205
+ - <i class="ri-checkbox-circle-fill" style="color: green;"></i> 功能 A
206
+ - <i class="ri-checkbox-circle-fill" style="color: green;"></i> 功能 B
207
+ - <i class="ri-close-circle-fill" style="color: red;"></i> 不支持
208
+
209
+ ## 图标搜索
210
+
211
+ 在这些网站查找图标:
212
+ - [Font Awesome](https://fontawesome.com/icons)
213
+ - [Material Icons](https://fonts.google.com/icons)
214
+ - [Remix Icon](https://remixicon.com/)
215
+ - [Bootstrap Icons](https://icons.getbootstrap.com/)
216
+ - [Ionicons](https://ionic.io/ionicons)
217
+
218
+ ::: tip 选择图标
219
+ 1. **保持一致** - 大部分图标使用同一个库
220
+ 2. **匹配风格** - 轮廓 vs 实心,细线 vs 粗线
221
+ 3. **考虑含义** - 图标应该直观易懂
222
+ 4. **不要过度使用** - 图标应该增强而不是杂乱
223
+ :::
224
+
225
+ ---
226
+
227
+ 下一步:[幻灯片](./08-slides) 创建交互式演示文稿。
228
+
229
+ 或继续阅读 [配置](../03.config/) 自定义你的博客。
@@ -0,0 +1,233 @@
1
+ ---
2
+ title: LaTeX 数学
3
+ description: 使用 LaTeX 和 KaTeX 编写数学公式
4
+ pubDate: 2025-01-01
5
+ author: jet-w
6
+ categories:
7
+ - 文档
8
+ tags:
9
+ - LaTeX
10
+ - 数学
11
+ ---
12
+
13
+ # LaTeX 数学
14
+
15
+ 使用 LaTeX 语法编写精美的数学公式,由 [KaTeX](https://katex.org) 渲染。
16
+
17
+ ## 行内公式
18
+
19
+ 使用单个 `$` 表示行内公式:
20
+
21
+ ```markdown
22
+ 著名的方程 $E = mc^2$ 改变了物理学。
23
+ ```
24
+
25
+ 著名的方程 $E = mc^2$ 改变了物理学。
26
+
27
+ 更多示例:
28
+ - 圆的面积:$A = \pi r^2$
29
+ - 勾股定理:$a^2 + b^2 = c^2$
30
+ - 求根公式:$x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}$
31
+
32
+ ## 块级公式
33
+
34
+ 使用双 `$$` 表示居中的块级公式:
35
+
36
+ ```markdown
37
+ $$
38
+ \int_0^\infty e^{-x^2} dx = \frac{\sqrt{\pi}}{2}
39
+ $$
40
+ ```
41
+
42
+ $$
43
+ \int_0^\infty e^{-x^2} dx = \frac{\sqrt{\pi}}{2}
44
+ $$
45
+
46
+ ## 基本语法
47
+
48
+ ### 上标和下标
49
+
50
+ | 语法 | 结果 |
51
+ |------|------|
52
+ | `x^2` | $x^2$ |
53
+ | `x_i` | $x_i$ |
54
+ | `x_i^2` | $x_i^2$ |
55
+ | `x^{10}` | $x^{10}$ |
56
+
57
+ ### 分数
58
+
59
+ ```latex
60
+ $$
61
+ \frac{a}{b} \quad \frac{1}{2} \quad \frac{x+1}{y-1}
62
+ $$
63
+ ```
64
+
65
+ $$
66
+ \frac{a}{b} \quad \frac{1}{2} \quad \frac{x+1}{y-1}
67
+ $$
68
+
69
+ ### 根号
70
+
71
+ ```latex
72
+ $$
73
+ \sqrt{2} \quad \sqrt{x+y} \quad \sqrt[3]{8}
74
+ $$
75
+ ```
76
+
77
+ $$
78
+ \sqrt{2} \quad \sqrt{x+y} \quad \sqrt[3]{8}
79
+ $$
80
+
81
+ ## 希腊字母
82
+
83
+ | 字母 | 语法 | 字母 | 语法 |
84
+ |------|------|------|------|
85
+ | $\alpha$ | `\alpha` | $\beta$ | `\beta` |
86
+ | $\gamma$ | `\gamma` | $\delta$ | `\delta` |
87
+ | $\pi$ | `\pi` | $\sigma$ | `\sigma` |
88
+ | $\theta$ | `\theta` | $\lambda$ | `\lambda` |
89
+ | $\Omega$ | `\Omega` | $\Sigma$ | `\Sigma` |
90
+
91
+ ## 运算符
92
+
93
+ ### 求和与连乘
94
+
95
+ ```latex
96
+ $$
97
+ \sum_{i=1}^{n} x_i \quad \prod_{i=1}^{n} x_i
98
+ $$
99
+ ```
100
+
101
+ $$
102
+ \sum_{i=1}^{n} x_i \quad \prod_{i=1}^{n} x_i
103
+ $$
104
+
105
+ ### 积分
106
+
107
+ ```latex
108
+ $$
109
+ \int_a^b f(x)dx \quad \iint_D f(x,y)dxdy \quad \oint_C f(z)dz
110
+ $$
111
+ ```
112
+
113
+ $$
114
+ \int_a^b f(x)dx \quad \iint_D f(x,y)dxdy \quad \oint_C f(z)dz
115
+ $$
116
+
117
+ ### 极限
118
+
119
+ ```latex
120
+ $$
121
+ \lim_{x \to \infty} \frac{1}{x} = 0
122
+ $$
123
+ ```
124
+
125
+ $$
126
+ \lim_{x \to \infty} \frac{1}{x} = 0
127
+ $$
128
+
129
+ ## 矩阵
130
+
131
+ ```latex
132
+ $$
133
+ \begin{pmatrix}
134
+ a & b \\
135
+ c & d
136
+ \end{pmatrix}
137
+ \quad
138
+ \begin{bmatrix}
139
+ 1 & 2 & 3 \\
140
+ 4 & 5 & 6
141
+ \end{bmatrix}
142
+ $$
143
+ ```
144
+
145
+ $$
146
+ \begin{pmatrix}
147
+ a & b \\
148
+ c & d
149
+ \end{pmatrix}
150
+ \quad
151
+ \begin{bmatrix}
152
+ 1 & 2 & 3 \\
153
+ 4 & 5 & 6
154
+ \end{bmatrix}
155
+ $$
156
+
157
+ ## 方程组
158
+
159
+ ### 对齐方程
160
+
161
+ ```latex
162
+ $$
163
+ \begin{aligned}
164
+ (a+b)^2 &= a^2 + 2ab + b^2 \\
165
+ (a-b)^2 &= a^2 - 2ab + b^2
166
+ \end{aligned}
167
+ $$
168
+ ```
169
+
170
+ $$
171
+ \begin{aligned}
172
+ (a+b)^2 &= a^2 + 2ab + b^2 \\
173
+ (a-b)^2 &= a^2 - 2ab + b^2
174
+ \end{aligned}
175
+ $$
176
+
177
+ ### 分段函数
178
+
179
+ ```latex
180
+ $$
181
+ f(x) = \begin{cases}
182
+ x^2 & \text{如果 } x \geq 0 \\
183
+ -x^2 & \text{如果 } x < 0
184
+ \end{cases}
185
+ $$
186
+ ```
187
+
188
+ $$
189
+ f(x) = \begin{cases}
190
+ x^2 & \text{如果 } x \geq 0 \\
191
+ -x^2 & \text{如果 } x < 0
192
+ \end{cases}
193
+ $$
194
+
195
+ ## 常用公式
196
+
197
+ ### 统计学
198
+
199
+ 标准差:
200
+ $$
201
+ \sigma = \sqrt{\frac{1}{N}\sum_{i=1}^{N}(x_i - \mu)^2}
202
+ $$
203
+
204
+ ### 微积分
205
+
206
+ 泰勒级数:
207
+ $$
208
+ e^x = \sum_{n=0}^{\infty} \frac{x^n}{n!} = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \cdots
209
+ $$
210
+
211
+ ### 物理学
212
+
213
+ 麦克斯韦方程组:
214
+ $$
215
+ \nabla \cdot \mathbf{E} = \frac{\rho}{\varepsilon_0}
216
+ $$
217
+
218
+ ## 提示
219
+
220
+ ::: tip 最佳实践
221
+ 1. **行内公式用于简单公式**
222
+ 2. **块级公式用于复杂或重要的方程**
223
+ 3. **使用 `\quad` 添加间距**
224
+ 4. **测试渲染** - KaTeX 不支持所有 LaTeX
225
+ :::
226
+
227
+ ::: info 参考
228
+ 完整 KaTeX 语法:[katex.org/docs/supported.html](https://katex.org/docs/supported.html)
229
+ :::
230
+
231
+ ---
232
+
233
+ 下一步:[视频嵌入](./07-video) 了解多媒体内容。
@@ -0,0 +1,184 @@
1
+ ---
2
+ title: 视频嵌入
3
+ description: 在文章中嵌入 YouTube、Bilibili 和自定义视频
4
+ pubDate: 2025-01-01
5
+ author: jet-w
6
+ categories:
7
+ - 文档
8
+ tags:
9
+ - 视频
10
+ - 多媒体
11
+ ---
12
+
13
+ # 视频嵌入
14
+
15
+ 添加视频使你的内容更加生动有趣。
16
+
17
+ ## YouTube
18
+
19
+ 使用组件嵌入 YouTube 视频:
20
+
21
+ ```markdown
22
+ <YouTube id="dQw4w9WgXcQ" />
23
+ ```
24
+
25
+ 或使用完整 URL:
26
+
27
+ ```markdown
28
+ <YouTube url="https://www.youtube.com/watch?v=dQw4w9WgXcQ" />
29
+ ```
30
+
31
+ ### 选项
32
+
33
+ ```markdown
34
+ <YouTube
35
+ id="dQw4w9WgXcQ"
36
+ title="视频标题"
37
+ start={30}
38
+ />
39
+ ```
40
+
41
+ | 选项 | 描述 |
42
+ |------|------|
43
+ | `id` | YouTube 视频 ID |
44
+ | `url` | 完整 YouTube URL |
45
+ | `title` | 视频标题(用于无障碍) |
46
+ | `start` | 开始时间(秒) |
47
+
48
+ ## Bilibili
49
+
50
+ 用于 Bilibili 视频:
51
+
52
+ ```markdown
53
+ <Bilibili bvid="BV1xx411c7mD" />
54
+ ```
55
+
56
+ 或使用 AV 号:
57
+
58
+ ```markdown
59
+ <Bilibili aid="123456789" />
60
+ ```
61
+
62
+ ### 选项
63
+
64
+ ```markdown
65
+ <Bilibili
66
+ bvid="BV1xx411c7mD"
67
+ page={1}
68
+ title="视频标题"
69
+ />
70
+ ```
71
+
72
+ | 选项 | 描述 |
73
+ |------|------|
74
+ | `bvid` | Bilibili BV ID |
75
+ | `aid` | Bilibili AV 号 |
76
+ | `page` | 分P号(用于多P视频) |
77
+ | `title` | 视频标题 |
78
+
79
+ ## 自托管视频
80
+
81
+ 用于 `public/` 文件夹中的视频:
82
+
83
+ ```markdown
84
+ <Video src="/videos/demo.mp4" />
85
+ ```
86
+
87
+ ### 选项
88
+
89
+ ```markdown
90
+ <Video
91
+ src="/videos/demo.mp4"
92
+ poster="/images/video-cover.jpg"
93
+ autoplay
94
+ muted
95
+ loop
96
+ />
97
+ ```
98
+
99
+ | 选项 | 描述 |
100
+ |------|------|
101
+ | `src` | 视频文件路径 |
102
+ | `poster` | 封面图片 URL |
103
+ | `autoplay` | 加载时自动播放 |
104
+ | `muted` | 默认静音 |
105
+ | `loop` | 循环播放 |
106
+ | `controls` | 显示控制条(默认:true) |
107
+
108
+ ## HTML5 视频
109
+
110
+ 你也可以使用标准 HTML5:
111
+
112
+ ```html
113
+ <video
114
+ src="/videos/demo.mp4"
115
+ controls
116
+ width="100%"
117
+ poster="/images/cover.jpg">
118
+ 您的浏览器不支持视频。
119
+ </video>
120
+ ```
121
+
122
+ ### 多源
123
+
124
+ ```html
125
+ <video controls width="100%">
126
+ <source src="/videos/demo.webm" type="video/webm">
127
+ <source src="/videos/demo.mp4" type="video/mp4">
128
+ 您的浏览器不支持视频。
129
+ </video>
130
+ ```
131
+
132
+ ## 视频格式
133
+
134
+ | 格式 | 扩展名 | 支持情况 |
135
+ |------|--------|----------|
136
+ | MP4 (H.264) | `.mp4` | 最佳兼容性 |
137
+ | WebM | `.webm` | 良好压缩 |
138
+ | Ogg | `.ogv` | 开放格式 |
139
+
140
+ ::: tip 推荐
141
+ 使用 **MP4 (H.264)** 获得最佳浏览器支持。WebM 是一个不错的备选。
142
+ :::
143
+
144
+ ## 响应式视频
145
+
146
+ 视频默认是响应式的。对于自定义宽高比:
147
+
148
+ ```html
149
+ <div style="aspect-ratio: 16/9;">
150
+ <Video src="/videos/demo.mp4" style="width: 100%; height: 100%;" />
151
+ </div>
152
+ ```
153
+
154
+ ## 最佳实践
155
+
156
+ ::: info 视频指南
157
+ 1. **优化文件大小** - 为网络压缩视频
158
+ 2. **添加封面图片** - 加载前显示预览
159
+ 3. **提供字幕** - 提高无障碍性
160
+ 4. **谨慎使用自动播放** - 可能会让人烦躁
161
+ 5. **使用懒加载** - 按需加载视频
162
+ :::
163
+
164
+ ::: warning 文件大小
165
+ 尽量将视频控制在 10MB 以内。对于较长的视频,考虑托管在 YouTube 或 Vimeo。
166
+ :::
167
+
168
+ ## 外部嵌入
169
+
170
+ 对于其他平台,使用它们的嵌入代码:
171
+
172
+ ```html
173
+ <iframe
174
+ src="https://player.vimeo.com/video/123456789"
175
+ width="640"
176
+ height="360"
177
+ frameborder="0"
178
+ allowfullscreen>
179
+ </iframe>
180
+ ```
181
+
182
+ ---
183
+
184
+ 下一步:[图标](./04-icons) 添加视觉元素。