diff --git a/package-lock.json b/package-lock.json
index 8662c2c8..adb44341 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,6 +12,7 @@
"@vuepress/client": "2.0.0-beta.67",
"vue": "^3.3.4",
"vuepress": "2.0.0-beta.67",
+ "vuepress-plugin-search-pro": "^2.0.0-beta.244",
"vuepress-theme-hope": "2.0.0-beta.243"
}
},
@@ -6712,6 +6713,12 @@
"node": ">=12"
}
},
+ "node_modules/slimsearch": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slimsearch/-/slimsearch-1.0.0.tgz",
+ "integrity": "sha512-ig1Du+U5LFngeDokhUupBqmEz3aKRJ4v+R2t6ZOi3aPGaFivYxxOiDcJX7fR0xPxjmTe94rAA6RW5gKlX5Gcsg==",
+ "dev": true
+ },
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
@@ -7962,6 +7969,163 @@
}
}
},
+ "node_modules/vuepress-plugin-search-pro": {
+ "version": "2.0.0-beta.244",
+ "resolved": "https://registry.npmjs.org/vuepress-plugin-search-pro/-/vuepress-plugin-search-pro-2.0.0-beta.244.tgz",
+ "integrity": "sha512-dx7iOPp/S9axVQ7n1ZyxyKatwTACu7okKjUsg8K5/tGuB3N8Si64rvhu67p1L7YIr3FfWgWsWW7vOk5OpR9wBA==",
+ "dev": true,
+ "dependencies": {
+ "@vuepress/client": "2.0.0-beta.67",
+ "@vuepress/shared": "2.0.0-beta.67",
+ "@vuepress/utils": "2.0.0-beta.67",
+ "@vueuse/core": "^10.5.0",
+ "cheerio": "1.0.0-rc.12",
+ "chokidar": "^3.5.3",
+ "slimsearch": "^1.0.0",
+ "vue": "^3.3.7",
+ "vue-router": "^4.2.5",
+ "vuepress-plugin-sass-palette": "2.0.0-beta.244",
+ "vuepress-shared": "2.0.0-beta.244"
+ },
+ "engines": {
+ "node": ">=18.16.0",
+ "npm": ">=8",
+ "pnpm": ">=7"
+ },
+ "peerDependencies": {
+ "sass-loader": "^13.3.2",
+ "vuepress": "2.0.0-beta.67",
+ "vuepress-vite": "2.0.0-beta.67",
+ "vuepress-webpack": "2.0.0-beta.67"
+ },
+ "peerDependenciesMeta": {
+ "sass-loader": {
+ "optional": true
+ },
+ "vuepress": {
+ "optional": true
+ },
+ "vuepress-vite": {
+ "optional": true
+ },
+ "vuepress-webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vuepress-plugin-search-pro/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vuepress-plugin-search-pro/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vuepress-plugin-search-pro/node_modules/vuepress-plugin-sass-palette": {
+ "version": "2.0.0-beta.244",
+ "resolved": "https://registry.npmjs.org/vuepress-plugin-sass-palette/-/vuepress-plugin-sass-palette-2.0.0-beta.244.tgz",
+ "integrity": "sha512-4J4x9DEypaP65EDj7tcwRXeegzzBKLN2oVCwfS+9H4o3PU7knEyplDx+4LmOUMY3OJUSSuEPTeXd/jvSkj8npg==",
+ "dev": true,
+ "dependencies": {
+ "@vuepress/shared": "2.0.0-beta.67",
+ "@vuepress/utils": "2.0.0-beta.67",
+ "chokidar": "^3.5.3",
+ "sass": "^1.69.5",
+ "vuepress-shared": "2.0.0-beta.244"
+ },
+ "engines": {
+ "node": ">=18.16.0",
+ "npm": ">=8",
+ "pnpm": ">=7"
+ },
+ "peerDependencies": {
+ "sass-loader": "^13.3.2",
+ "vuepress": "2.0.0-beta.67",
+ "vuepress-vite": "2.0.0-beta.67",
+ "vuepress-webpack": "2.0.0-beta.67"
+ },
+ "peerDependenciesMeta": {
+ "sass-loader": {
+ "optional": true
+ },
+ "vuepress": {
+ "optional": true
+ },
+ "vuepress-vite": {
+ "optional": true
+ },
+ "vuepress-webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vuepress-plugin-search-pro/node_modules/vuepress-shared": {
+ "version": "2.0.0-beta.244",
+ "resolved": "https://registry.npmjs.org/vuepress-shared/-/vuepress-shared-2.0.0-beta.244.tgz",
+ "integrity": "sha512-AhgRiXLiaOsd42jVEEEqZJNSp0uPobYt7oLMfzlX6SBze55wocoXHUWSvSgyJM5MMtX5yDrxfQbr8uX5VcWAJg==",
+ "dev": true,
+ "dependencies": {
+ "@vuepress/client": "2.0.0-beta.67",
+ "@vuepress/shared": "2.0.0-beta.67",
+ "@vuepress/utils": "2.0.0-beta.67",
+ "@vueuse/core": "^10.5.0",
+ "cheerio": "1.0.0-rc.12",
+ "dayjs": "^1.11.10",
+ "execa": "^8.0.1",
+ "fflate": "^0.8.1",
+ "gray-matter": "^4.0.3",
+ "semver": "^7.5.4",
+ "striptags": "^3.2.0",
+ "vue": "^3.3.7",
+ "vue-router": "^4.2.5"
+ },
+ "engines": {
+ "node": ">=18.16.0",
+ "npm": ">=8",
+ "pnpm": ">=7"
+ },
+ "peerDependencies": {
+ "vuepress": "2.0.0-beta.67",
+ "vuepress-vite": "2.0.0-beta.67",
+ "vuepress-webpack": "2.0.0-beta.67"
+ },
+ "peerDependenciesMeta": {
+ "vuepress": {
+ "optional": true
+ },
+ "vuepress-vite": {
+ "optional": true
+ },
+ "vuepress-webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vuepress-plugin-search-pro/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
"node_modules/vuepress-plugin-seo2": {
"version": "2.0.0-beta.243",
"resolved": "https://registry.npmmirror.com/vuepress-plugin-seo2/-/vuepress-plugin-seo2-2.0.0-beta.243.tgz",
diff --git a/package.json b/package.json
index 8326dcc3..c0991f64 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
"@vuepress/client": "2.0.0-beta.67",
"vue": "^3.3.4",
"vuepress": "2.0.0-beta.67",
+ "vuepress-plugin-search-pro": "^2.0.0-beta.244",
"vuepress-theme-hope": "2.0.0-beta.243"
}
}
diff --git a/src/.vuepress/config.ts b/src/.vuepress/config.ts
index d7cdbeda..7591cb32 100644
--- a/src/.vuepress/config.ts
+++ b/src/.vuepress/config.ts
@@ -1,14 +1,21 @@
import { defineUserConfig } from "vuepress";
+import { searchProPlugin } from "vuepress-plugin-search-pro";
import theme from "./theme.js";
+
export default defineUserConfig({
base: "/RenderDoc/",
lang: "zh-CN",
title: "RenderDoc",
description: "斯高和的文档",
+ plugins: [
+ searchProPlugin({
+ // 索引全部内容
+ indexContent: true,
+ }),
+ ],
theme,
-
// Enable it with pwa
// shouldPrefetch: false,
});
diff --git a/src/.vuepress/navbar.ts b/src/.vuepress/navbar.ts
index 1401f5ab..35ed9557 100644
--- a/src/.vuepress/navbar.ts
+++ b/src/.vuepress/navbar.ts
@@ -2,6 +2,26 @@ import { navbar } from "vuepress-theme-hope";
export default navbar([
"/",
- "/CPP/",
- "/Unreal/",
+ {
+ text: "开发语言",
+ icon: "signs-post",
+ prefix: "/language/",
+ children: ["markdown/"],
+ },
+ {
+ text: '开发工具',
+ icon: "screwdriver-wrench",
+ prefix: "/tools/",
+ children:["git/","github/","vscode/"],
+ },
+ // {
+ // text: '开发工具',
+ // icon: "screwdriver-wrench",
+ // prefix: "/tools/",
+ // children: [
+ // {text: 'Git', link: 'git/'},
+ // {text: 'Github', link: 'github/'},
+ // {text: 'VSCode', link: 'vscode/'},
+ // ]
+ // },
]);
diff --git a/src/.vuepress/sidebar.ts b/src/.vuepress/sidebar.ts
index 21d52ffc..079723f4 100644
--- a/src/.vuepress/sidebar.ts
+++ b/src/.vuepress/sidebar.ts
@@ -1,21 +1,72 @@
-import { sidebar } from "vuepress-theme-hope";
+import {sidebar} from "vuepress-theme-hope";
export default sidebar({
- "/": [
- {
- text: "C++",
- icon: "laptop-code",
- prefix: "CPP/",
- link: "CPP/",
- children: "structure",
- },
- ],
- "/Unreal/": [
- {
- text: "UnReal",
- prefix:"",
- link: "",
- children: "structure",
- }
- ],
+ "/": [
+ {
+ text: "目录",
+ //icon: "laptop-code",
+ prefix: "Fontend/",
+ link: "Fontend/",
+ children: "structure",
+ },
+ ],
+ "/language/": [
+ {
+ text: "目录",
+ prefix: "",
+ link: "",
+ children: "structure",
+ }
+ ],
+ "/tools/": [
+ {
+ text: "目录",
+ prefix: "",
+ link: "",
+ children: "structure",
+ }
+ ],
+ // "/tools/git/": [
+ // {
+ // "text": "GIT",
+ // "children": [
+ // "README.md",
+ // "commit-message.md",
+ // "gitignore.md",
+ // "repo-tool.md",
+ // "submodule.md"
+ // ]
+ // }
+ // ],
+ // "/tools/github/": [
+ // {
+ // "text": "GITHUB",
+ // "children": [
+ // "README.md",
+ // "dns-resolve-github-pages.md",
+ // "download-huge-project-from-github.md",
+ // "how-to-deploy-private-gitlab.md",
+ // "switch-multiple-github-accounts.md",
+ // "sync-a-fork.md"
+ // ]
+ // }
+ // ],
+ // "/tools/vscode/": [
+ // {
+ // "text": "VSCODE",
+ // "children": [
+ // "README.md",
+ // "errors.md",
+ // "fix-todo-highlight-links.md",
+ // "format-with-eslint.md",
+ // "identify-alias.md",
+ // "set-the-font.md",
+ // "settings-sync.md",
+ // "share-code-snippet.md",
+ // "vetur.md",
+ // "vscode-markdown-copilot-tab-do-not-work.md"
+ // ]
+ // }
+ // ],
+
});
diff --git a/src/.vuepress/styles/palette.scss b/src/.vuepress/styles/palette.scss
index f21ca107..a95607e6 100644
--- a/src/.vuepress/styles/palette.scss
+++ b/src/.vuepress/styles/palette.scss
@@ -19,19 +19,9 @@ html[data-theme=dark] {
flex-direction: column;
align-items: center;
}
-//strong {
-// font-weight: bold !important;
-// color: #d35400 !important;
-//}
-.custom-icon {
- width: 100px;
- height: 100px;
+@media (max-width: 959px) {
+ .search-pro-box {
+ margin-top: 5rem;
+ }
}
-.custom-icon::before {
- content: '';
- display: block;
- width: 100%;
- height: 100%;
- background: url('data:image/svg+xml;utf8, ') no-repeat center center;
-}
diff --git a/src/.vuepress/theme.ts b/src/.vuepress/theme.ts
index 0560e52e..a2963860 100644
--- a/src/.vuepress/theme.ts
+++ b/src/.vuepress/theme.ts
@@ -1,8 +1,8 @@
import { hopeTheme } from "vuepress-theme-hope";
import navbar from "./navbar.js";
import sidebar from "./sidebar.js";
-import {defaultTheme} from "@vuepress/theme-default";
export default hopeTheme({
+ darkmode : "toggle",
fullscreen: true,
hostname: "https://rendertool.github.io/RenderDoc/",
author: {
@@ -24,7 +24,7 @@ export default hopeTheme({
// sidebar
sidebar,
- footer: "默认页脚",
+ //footer: "MIT 协议, 斯高和版权所有 © 2023",
displayFooter: true,
@@ -39,6 +39,7 @@ export default hopeTheme({
editLink: "在 GitHub 上编辑此页",
},
plugins: {
+
// You should generate and use your own comment service
comment: {
provider: "Giscus",
@@ -47,7 +48,7 @@ export default hopeTheme({
category: "Announcements",
categoryId: "DIC_kwDOKnzR2s4Cam3R",
},
-
+
// All features are enabled for demo, only preserve features you need here
mdEnhance: {
align: true,
@@ -74,7 +75,8 @@ export default hopeTheme({
imgLazyload: true,
imgSize: true,
include: true,
-
+ imgMark: true,
+
// install katex before enabling it
// katex: true,
@@ -112,7 +114,7 @@ export default hopeTheme({
sup: true,
tabs: true,
vPre: true,
-
+
// install @vue/repl before enabling it
// vuePlayground: true,
},
@@ -174,9 +176,4 @@ export default hopeTheme({
// },
// },
},
-});
-// 在这里放置属于 @vuepress/theme-default 的配置项
-export const themeConfig = defaultTheme({
- colorMode: "dark",
-
});
\ No newline at end of file
diff --git a/src/CPP/README.md b/src/CPP/README.md
deleted file mode 100644
index b06775a7..00000000
--- a/src/CPP/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: C++
-index: false
-icon: laptop-code
-category:
- - 使用目录
----
-
-## 目录
-
-- [Markdown 展示](markdown.md)
-
-- [页面展示](page.md)
-
-- [加密展示](encrypt.md)
diff --git a/src/CPP/encrypt.md b/src/CPP/encrypt.md
deleted file mode 100644
index 25370d00..00000000
--- a/src/CPP/encrypt.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-icon: lock
-category:
- - 使用指南
-tag:
- - 文章加密
----
-
-# 密码加密的文章
-
-实际的文章内容。
-
-段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字。
-
-段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字。
diff --git a/src/CPP/markdown.md b/src/CPP/markdown.md
deleted file mode 100644
index 4e2f112f..00000000
--- a/src/CPP/markdown.md
+++ /dev/null
@@ -1,403 +0,0 @@
----
-title: Markdown 展示
-icon: fab fa-markdown
-order: 2
-category:
- - 使用指南
-tag:
- - Markdown
----
-
-VuePress 主要从 Markdown 文件生成页面。因此,你可以使用它轻松生成文档或博客站点。
-
-你应该创建和编写 Markdown 文件,以便 VuePress 可以根据文件结构将它们转换为不同的页面。
-
-
-
-## Markdown 介绍
-
-如果你是一个新手,还不会编写 Markdown,请先阅读 [Markdown 介绍](https://theme-hope.vuejs.press/zh/cookbook/markdown/) 和 [Markdown 演示](https://theme-hope.vuejs.press/zh/cookbook/markdown/demo.html)。
-
-## Markdown 配置
-
-VuePress 通过 Frontmatter 为每个 Markdown 页面引入配置。
-
-::: info
-
-Frontmatter 是 VuePress 中很重要的一个概念,如果你不了解它,你需要阅读 [Frontmatter 介绍](https://theme-hope.vuejs.press/zh/cookbook/vuepress/page.html#front-matter)。
-
-:::
-
-## Markdown 扩展
-
-VuePress 会使用 [markdown-it](https://github.com/markdown-it/markdown-it) 来解析 Markdown 内容,因此可以借助于 markdown-it 插件来实现 [语法扩展](https://github.com/markdown-it/markdown-it#syntax-extensions) 。
-
-### VuePress 扩展
-
-为了丰富文档写作,VuePress 对 Markdown 语法进行了扩展。
-
-关于这些扩展,请阅读 [VuePress 中的 Markdown 扩展](https://theme-hope.vuejs.press/zh/cookbook/vuepress/markdown.html)。
-
-### 主题扩展
-
-通过 [`vuepress-plugin-md-enhance`][md-enhance],主题扩展了更多 Markdown 语法,提供更加丰富的写作功能。
-
-#### 自定义容器
-
-::: v-pre
-
-安全的在 Markdown 中使用 {{ variable }}。
-
-:::
-
-::: info 自定义标题
-
-信息容器,包含 `代码` 与 [链接](#自定义容器)。
-
-```js
-const a = 1;
-```
-
-:::
-
-::: tip 自定义标题
-
-提示容器
-
-:::
-
-::: warning 自定义标题
-
-警告容器
-
-:::
-
-::: danger 自定义标题
-
-危险容器
-
-:::
-
-::: details 自定义标题
-
-详情容器
-
-:::
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/container.html)
-
-#### 代码块
-
-::: code-tabs
-
-@tab pnpm
-
-```bash
-pnpm add -D vuepress-theme-hope
-```
-
-@tab yarn
-
-```bash
-yarn add -D vuepress-theme-hope
-```
-
-@tab:active npm
-
-```bash
-npm i -D vuepress-theme-hope
-```
-
-:::
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/code-tabs.html)
-
-#### 上下角标
-
-19^th^ H~2~O
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/sup-sub.html)
-
-#### 自定义对齐
-
-::: center
-
-我是居中的
-
-:::
-
-::: right
-
-我在右对齐
-
-:::
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/align.html)
-
-#### Attrs
-
-一个拥有 ID 的 **单词**{#word}。
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/attrs.html)
-
-#### 脚注
-
-此文字有脚注[^first].
-
-[^first]: 这是脚注内容
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/footnote.html)
-
-#### 标记
-
-你可以标记 ==重要的内容== 。
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/mark.html)
-
-#### 任务列表
-
-- [x] 计划 1
-- [ ] 计划 2
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/tasklist.html)
-
-### 图片增强
-
-支持为图片设置颜色模式和大小
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/image.html)
-
-#### 卡片
-
-```card
-title: Mr.Hope
-desc: Where there is light, there is hope
-logo: https://mister-hope.com/logo.svg
-link: https://mister-hope.com
-color: rgba(253, 230, 138, 0.15)
-```
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/card.html)
-
-#### 导入文件
-
-
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/include.html)
-
-#### 代码演示
-
-::: normal-demo 一个普通 Demo
-
-```html
-
VuePress Theme Hope
-非常 强大!
-```
-
-```js
-document.querySelector("#very").addEventListener("click", () => {
- alert("非常强大");
-});
-```
-
-```css
-span {
- color: red;
-}
-```
-
-:::
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/demo.html)
-
-#### 样式化
-
-向 Mr.Hope 捐赠一杯咖啡。 _Recommended_
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/stylize.html)
-
-#### 交互演示
-
-::: playground#ts TS 案例
-
-@file index.ts
-
-```ts
-const msg = "hello world";
-
-const speak = (msg: string) => console.log(msg);
-
-speak(msg);
-```
-
-:::
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/playground.html)
-
-#### 图表
-
-::: chart 一个散点图案例
-
-```json
-{
- "type": "scatter",
- "data": {
- "datasets": [
- {
- "label": "散点数据集",
- "data": [
- { "x": -10, "y": 0 },
- { "x": 0, "y": 10 },
- { "x": 10, "y": 5 },
- { "x": 0.5, "y": 5.5 }
- ],
- "backgroundColor": "rgb(255, 99, 132)"
- }
- ]
- },
- "options": {
- "scales": {
- "x": {
- "type": "linear",
- "position": "bottom"
- }
- }
- }
-}
-```
-
-:::
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/chart.html)
-
-#### Echarts
-
-::: echarts 一个折线图案例
-
-```json
-{
- "xAxis": {
- "type": "category",
- "data": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
- },
- "yAxis": {
- "type": "value"
- },
- "series": [
- {
- "data": [150, 230, 224, 218, 135, 147, 260],
- "type": "line"
- }
- ]
-}
-```
-
-:::
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/echarts.html)
-
-#### 流程图
-
-```flow
-cond=>condition: 是否执行操作?
-process=>operation: 操作
-e=>end: 结束
-
-cond(yes)->process->e
-cond(no)->e
-```
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/flowchart.html)
-
-#### Mermaid
-
-```mermaid
----
-title: Flowchart
----
-flowchart TB
- c1-->a2
- subgraph one
- a1-->a2
- end
- subgraph two
- b1-->b2
- end
- subgraph three
- c1-->c2
- end
- one --> two
- three --> two
- two --> c2
-```
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/mermaid.html)
-
-#### Tex 语法
-
-$$
-\frac {\partial^r} {\partial \omega^r} \left(\frac {y^{\omega}} {\omega}\right)
-= \left(\frac {y^{\omega}} {\omega}\right) \left\{(\log y)^r + \sum_{i=1}^r \frac {(-1)^i r \cdots (r-i+1) (\log y)^{r-i}} {\omega^i} \right\}
-$$
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/tex.html)
-
-#### Vue 交互演示
-
-::: vue-playground Vue 交互演示
-
-@file App.vue
-
-```vue
-
-
-
- {{ msg }}
-
-
-```
-
-:::
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/vue-playground.html)
-
-#### 幻灯片
-
-@slidestart
-
-## 幻灯片 1
-
-一个有文字和 [链接](https://mister-hope.com) 的段落
-
----
-
-## 幻灯片 2
-
-- 项目 1
-- 项目 2
-
----
-
-## 幻灯片 3.1
-
-```js
-const a = 1;
-```
-
---
-
-## 幻灯片 3.2
-
-$$
-J(\theta_0,\theta_1) = \sum_{i=0}
-$$
-
-@slideend
-
-- [查看详情](https://theme-hope.vuejs.press/zh/guide/markdown/revealjs.html)
-
-[md-enhance]: https://plugin-md-enhance.vuejs.press/zh/
diff --git a/src/CPP/page.md b/src/CPP/page.md
deleted file mode 100644
index 841e152b..00000000
--- a/src/CPP/page.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-# 这是文章的标题
-title: 页面配置
-# 这是页面的图标
-icon: file
-# 这是侧边栏的顺序
-order: 1
-# 设置作者
-author: Ms.Hope
-# 设置写作时间
-date: 2020-01-01
-# 一个页面可以有多个分类
-category:
- - 使用指南
-# 一个页面可以有多个标签
-tag:
- - 页面配置
- - 使用指南
-# 此页面会在文章列表置顶
-sticky: true
-# 此页面会出现在文章收藏中
-star: true
-copyright: false
-footer: MIT 协议, 斯高和版权所有 © 2023
----
-
-`more` 注释之前的内容被视为文章摘要。
-
-
-
-## 页面信息
-
-你可以在 Markdown 的 Frontmatter 中设置页面信息。
-
-- 作者设置为 Ms.Hope。
-- 写作日期为 2020 年 1 月 1 日
-- 分类为 “使用指南”
-- 标签为 “页面配置” 和 “使用指南”
-
-## 页面内容
-
-你可以自由在这里书写你的 Markdown。
-
-::: tip
-
-- 你可以将图片和 Markdown 文件放置在一起,但是你需要使用**相对链接**`./` 进行引用。
-
-- 对于 `.vuepress/public` 文件夹的图片,请使用绝对链接 `/` 进行引用。
-
-:::
-
-主题包含了一个自定义徽章可以使用:
-
-> 文字结尾应该有深蓝色的 徽章文字 徽章。
-
-## 页面结构
-
-此页面应当包含:
-
-- [路径导航](https://theme-hope.vuejs.press/zh/guide/layout/breadcrumb.html)
-- [标题和页面信息](https://theme-hope.vuejs.press/zh/guide/feature/page-info.html)
-- [TOC (文章标题列表)](https://theme-hope.vuejs.press/zh/guide/layout/page.html#标题列表)
-- [贡献者、更新时间等页面元信息](https://theme-hope.vuejs.press/guide/feature/meta.html)
-- [评论](https://theme-hope.vuejs.press/zh/guide/feature/comment.html)
-- [导航栏](https://theme-hope.vuejs.press/zh/guide/layout/navbar.html)
-- [侧边栏](https://theme-hope.vuejs.press/zh/guide/layout/sidebar.html)
-- [页脚](https://theme-hope.vuejs.press/zh/guide/layout/footer.html)
-- 返回顶部按钮
-
-你可以通过主题选项和页面 Frontmatter 自定义它们。
diff --git a/src/README.md b/src/README.md
index 311b0a8e..c3b07092 100644
--- a/src/README.md
+++ b/src/README.md
@@ -11,7 +11,7 @@ heroText: RenderDoc
tagline: 斯高和的笔记
actions:
- text: 开始修炼
- link: ./CPP/
+ link: /#🤷%E2%80%8D♂%EF%B8%8F-写在前面
type: primary
features:
- title: 技术聚焦
@@ -21,8 +21,6 @@ features:
- title: 丰富表达
details: 图文代码结合,直观地展示解决方案,同时享受问题解决的过程。
-copyright: false
-footer: MIT 协议, 斯高和版权所有 © 2023
---
@@ -39,8 +37,14 @@ footer: MIT 协议, 斯高和版权所有 © 2023
::: info
* 当前BlueprintUE部分是外链,无法保证其长期有效性。因此,每个蓝图都会提供一个备用的图像版本。
- :::
-```cpp
+:::
+
+
+::: code-tabs#shell
+
+@tab:active cpp
+
+``` cpp
void AYourGameCharacter::BeginPlay()
{
// Super 表示调用父类的方法或属性,这里调用开始事件
@@ -50,13 +54,88 @@ void AYourGameCharacter::BeginPlay()
}
```
+@tab lua
+
+```lua
+
+-- 定义一个新的 Lua 类,继承自 Unreal Engine 的 AYourGameCharacter
+YourGameCharacter = AYourGameCharacter:new()
+
+-- 重写 BeginPlay 方法
+function YourGameCharacter:BeginPlay()
+ -- 调用父类的 BeginPlay 方法
+ self:SuperBeginPlay()
+
+ -- 控制台中打印 hello
+ UE_LOG("LogTemp", "Warning", "hello")
+end
+
+```
+:::
+
+
+[//]: # ()
+
+[//]: # (
)
+
+[//]: # (
)
+
+[//]: # ()
+[//]: # ()
::: tip
* 为了TA的视力健康,默认采用深色主题。
:::
-### 👦关于本人
-对游戏特感兴趣,我经常会犯错,我经常会遗忘。
## :email: 联系
diff --git a/src/Unreal/README.md b/src/Unreal/README.md
deleted file mode 100644
index a3fe0e89..00000000
--- a/src/Unreal/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: unreal
-#icon: /assets/image/UnrealEngine.svg
-index: false
-category:
- - 使用目录
----
-
-## 功能亮点
-
-### Bar
-
-- [baz](bar/baz.md)
-- ...
-
-### Foo
-
-- [ray](foo/ray.md)
-- ...
diff --git a/src/Unreal/bar/README.md b/src/Unreal/bar/README.md
deleted file mode 100644
index dbfeccd7..00000000
--- a/src/Unreal/bar/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: Bar 功能
-icon: lightbulb
----
-
-## 介绍
-
-我们支持 bar 功能,...
-
-## 详情
-
-- [baz](baz.md)
-- ...
diff --git a/src/Unreal/bar/baz.md b/src/Unreal/bar/baz.md
deleted file mode 100644
index 279514cd..00000000
--- a/src/Unreal/bar/baz.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Baz
-icon: circle-info
----
-
-功能详情...
diff --git a/src/Unreal/foo/README.md b/src/Unreal/foo/README.md
deleted file mode 100644
index d99a74f7..00000000
--- a/src/Unreal/foo/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: Foo 功能
-icon: lightbulb
----
-
-## 介绍
-
-我们支持 foo 功能,...
-
-## 详情
-
-- [ray](ray.md)
-- ...
diff --git a/src/Unreal/foo/ray.md b/src/Unreal/foo/ray.md
deleted file mode 100644
index d4cbb584..00000000
--- a/src/Unreal/foo/ray.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Ray
-icon: circle-info
----
-
-功能详情...
diff --git a/src/language/README.md b/src/language/README.md
new file mode 100644
index 00000000..77ff068f
--- /dev/null
+++ b/src/language/README.md
@@ -0,0 +1,10 @@
+---
+title: 开发语言
+icon: signs-post
+article: false
+---
+
+## 开发语言
+### Markdown
+- [Markdown](markdown/README.md)
+
diff --git a/src/language/markdown/README.md b/src/language/markdown/README.md
new file mode 100644
index 00000000..15f2b6c1
--- /dev/null
+++ b/src/language/markdown/README.md
@@ -0,0 +1,846 @@
+---
+title: Markdown
+icon: fab fa-markdown
+dir:
+ order: 2
+category:
+ - 教程知识
+ - Markdown
+tag:
+ - 介绍
+ - Markdown
+---
+
+Markdown 是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。
+
+Markdown 的目标是实现「易读易写」。
+
+
+
+## 概述
+
+不过最需要强调的便是它的可读性。一份使用 Markdown 格式撰写的文件应该可以直接以纯文字发佈,并且看起来不会像是由许多标签或是格式指令所构成。Markdown 语法受到一些既有 text-to-HTML 格式的影响,包括 [Setext][1]、[atx][2]、[Textile][3]、[reStructuredText][4]、[Grutatext][5] 和 [EtText][6],然而最大灵感来源其实是纯文字的电子邮件格式。
+
+因此 Markdown 的语法全由标点符号所组成,并经过严谨慎选,是为了让它们看起来就像所要表达的意思。像是在文字两旁加上星号,看起来就像\*强调\*。Markdown 的列表看起来,嗯,就是列表。假如你有使用过电子邮件,引言写法看起来就真的像是引用一段文字。
+
+Markdown 具有一系列衍生版本,用于扩展 Markdown 的功能 (如表格、脚注、内嵌 HTML 等等) ,这些功能原初的 Markdown 尚不具备,它们能让 Markdown 转换成更多的格式,例如 LaTeX,Docbook。Markdown 增强版中比较有名的有 Markdown Extra、MultiMarkdown、 Maruku 等。这些衍生版本要么基于工具,如 Pandoc;要么基于网站,如 GitHub 和 Wikipedia,在语法上基本兼容,但在一些语法和渲染效果上有改动。
+
+## 用途
+
+Markdown 的语法有个主要的目的: 用来作为一种网络内容的*写作*用语言。Markdown 的重点在于,它能让文件更容易阅读、编写。因此,Markdown 的格式语法只涵盖纯文字可以涵盖的范围。
+
+Markdown 的语法简洁明了、学习容易,而且功能比纯文本更强,因此有很多人用它写博客。世界上最流行的博客平台 WordPress 能很好的支持 Markdown。
+
+用于编写说明文档,并且以 `README.md` 的文件名保存在软件的目录下面。
+
+除此之外,我们还可以快速将 Markdown 转化为演讲 PPT、Word 产品文档、LaTex 论文甚至是用非常少量的代码完成最小可用原型。在数据科学领域,Markdown 已经广泛使用,极大地推进了动态可重复性研究的历史进程。
+
+### 行内 HTML
+
+不在 Markdown 涵盖范围之外的标签,都可以直接在文件里面用 HTML 撰写。不需要额外标注这是 HTML 或是 Markdown;只要直接加标签就可以了。
+
+只有块元素 ── 比如 ``、`
`、``、`` 等标签,必须在前后加上空行,以利与内容区隔。而且这些 (元素) 的开始与结尾标签,不可以用 tab 或是空白来缩进。Markdown 的解析器有智慧型判断,可以避免在块标签前后加上没有必要的 `
` 标签。
+
+举例来说,在 Markdown 文件里加上一段 HTML 表格:
+
+```md
+This is a regular paragraph.
+
+
+
+This is another regular paragraph.
+```
+
+请注意,Markdown 语法在 HTML 块标签中将不会被进行处理。例如,你无法在 HTML 块内使用 Markdown 形式的 `*强调*`。
+
+### 特殊字元自动转换
+
+在 HTML 文件中,有两个字元需要特殊处理: `<` 和 `&` 。 `<` 符号用于起始标签,`&` 符号则用于标记 HTML 实体,如果你只是想要使用这些符号,你必须要使用实体的形式,像是 `<` 和 `&`。
+
+`&` 符号其实很容易让写作网络文件的人感到困扰,如果你要打「AT&T」 ,你必须要写成「`AT&T`」 ,还得转换网址内的 `&` 符号,如果你要链接到 `http://images.google.com/images?num=30&q=larry+bird`
+
+你必须要把网址转成:
+
+```html
+http://images.google.com/images?num=30&q=larry+bird
+```
+
+才能放到链接标签的 `href` 属性里。不用说也知道这很容易忘记,这也可能是 HTML 标准检查所检查到的错误中,数量最多的。
+
+Markdown 允许你直接使用这些符号,但是你要小心跳脱字元的使用,如果你是在 HTML 实体中使用 `&` 符号的话,它不会被转换,而在其它情形下,它则会被转换成 `&`。所以你如果要在文件中插入一个著作权的符号,你可以这样写:
+
+```md
+©
+```
+
+Markdown 将不会对这段文字做修改,但是如果你这样写:
+
+```md
+AT&T
+```
+
+Markdown 就会将它转为:
+
+```html
+AT&T
+```
+
+类似的状况也会发生在 `<` 符号上,因为 Markdown 支持 [行内 HTML](#行内-html) ,如果你是使用 `<` 符号作为 HTML 标签使用,那 Markdown 也不会对它做任何转换,但是如果你是写:
+
+```md
+4 < 5
+```
+
+Markdown 将会把它转换为:
+
+```html
+4 < 5
+```
+
+不过需要注意的是,code 范围内,不论是行内还是块, `<` 和 `&` 两个符号都*一定*会被转换成 HTML 实体,这项特性让你可以很容易地用 Markdown 写 HTML code (和 HTML 相对而言, HTML 语法中,你要把所有的 `<` 和 `&` 都转换为 HTML 实体,才能在 HTML 文件里面写出 HTML code。)
+
+---
+
+## 块元素
+
+### 段落和换行
+
+一个段落是由一个以上相连接的行句组成,而一个以上的空行则会切分出不同的段落 (空行的定义是显示上看起来像是空行,便会被视为空行。比方说,若某一行只包含空白和 tab,则该行也会被视为空行) ,一般的段落不需要用空白或断行缩进。
+
+「一个以上相连接的行句组成」这句话其实暗示了 Markdown 允许段落内的强迫断行,这个特性和其他大部分的 text-to-HTML 格式不一样 (包括 MovableType 的「Convert Line Breaks」选项) ,其它的格式会把每个断行都转成 ` ` 标签。
+
+
+
+如果你*真的*想要插入 ` ` 标签的话,在行尾加上两个以上的空格 (` `) 或斜线 (`/`),然后按 Enter。
+
+
+
+是的,这确实需要花比较多功夫来插入 ` ` ,但是「每个换行都转换为 ` `」的方法在 Markdown 中并不适合, Markdown 中 email 式的 [块引言][bq] 和多段落的 [列表][l] 在使用换行来排版的时候,不但更好用,还更好阅读。
+
+### 标题
+
+标题能显示出文章的结构。
+
+Markdown 支持两种标题的语法,[Setext][1] 和 [atx][2] 形式。
+
+Setext 形式是用底线的形式,利用 `=` (最高阶标题) 和 `-` (第二阶标题) ,例如:
+
+```md
+# This is an H1
+
+## This is an H2
+```
+
+任何数量的 `=` 和 `-` 都可以有效果。
+
+Atx (推荐)形式则是在行首插入 1 到 6 个 `#` ,对应到标题 1 到 6 阶,例如:
+
+- H1: `# Header 1`
+- H2: `## Header 2`
+- H3: `### Header 3`
+- H4: `#### Header 4`
+- H5: `##### Header 5`
+- H6: `###### Header 6`
+
+### Blockquotes
+
+Markdown 使用 email 形式的块引言,如果你很熟悉如何在 email 信件中引言,你就知道怎么在 Markdown 文件中建立一个块引言,那会看起来像是你强迫断行,然后在每行的最前面加上 `>` :
+
+```md
+> 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.
+>
+> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+> id sem consectetuer libero luctus adipiscing.
+```
+
+Markdown 也允许你只在整个段落的第一行最前面加上 `>` :
+
+```md
+> 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.
+
+> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+> id sem consectetuer libero luctus adipiscing.
+```
+
+块引言可以有阶层 (例如: 引言内的引言) ,只要根据层数加上不同数量的 `>` :
+
+```md
+> This is the first level of quoting.
+>
+> > This is nested blockquote.
+>
+> Back to the first level.
+```
+
+引言的块内也可以使用其他的 Markdown 语法,包括标题、列表、代码块等:
+
+```md
+> ## This is a header.
+>
+> 1. This is the first list item.
+> 1. This is the second list item.
+>
+> Here's some example code:
+>
+> return shell_exec("echo $input | $markdown_script");
+```
+
+任何标准的文字编辑器都能简单地建立 email 样式的引言,例如 BBEdit ,你可以选取文字后然后从选单中选择*增加引言阶层*。
+
+### 列表
+
+Markdown 支持有序列表和无序列表。
+
+无序列表使用减号作为列表标记(也可使用星号、加号):
+
+```md
+- Red
+- Green
+- Blue
+```
+
+也可以(不建议):
+
+```md
+- Red
+- Green
+- Blue
+
+* Red
+* Green
+* Blue
+```
+
+有序列表则使用数字接着一个英文句点:
+
+```md
+1. Bird
+2. McHale
+3. Parish
+```
+
+很重要的一点是,你在列表标记上使用的数字并不会影响输出的 HTML 结果,上面的列表所产生的 HTML 标记为:
+
+```html
+
+ Bird
+ McHale
+ Parish
+
+```
+
+如果你的列表标记写成:
+
+```md
+1. Bird
+1. McHale
+1. Parish
+```
+
+你都会得到完全相同的 HTML 输出。重点在于,你可以让 Markdown 文件的列表数字和输出的结果相同,或是你懒一点都写作 `1` 你可以完全不用在意数字的正确性。
+
+列表项目标记通常是放在最左边,但是其实也可以缩进,最多三个空白,项目标记后面则一定要接着至少一个空白或 tab。
+
+要让列表看起来更漂亮,你可以把内容用固定的缩进整理好:
+
+```md
+- Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+- Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+```
+
+但是如果你很懒,那也不一定需要:
+
+```md
+- Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+- Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+```
+
+如果列表项目间用空行分开, Markdown 会把项目的内容在输出时用 `` 标签包起来,举例来说:
+
+```md
+- Bird
+- Magic
+```
+
+会被转换为:
+
+```html
+
+```
+
+但是这个:
+
+```md
+- Bird
+
+- Magic
+```
+
+会被转换为:
+
+```html
+
+```
+
+列表项目可以包含多个段落,每个项目下的段落都必须缩进 4 个空白或是一个 tab :
+
+```md
+1. This is a list item 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. Donec sit amet nisl. Aliquam semper ipsum
+ sit amet velit.
+
+2. Suspendisse id sem consectetuer libero luctus adipiscing.
+```
+
+如果你每行都有缩进,看起来会看好很多,当然,再次地,如果你很懒惰,Markdown 也允许:
+
+```md
+- This is a list item with two paragraphs.
+
+ This is the second paragraph in the list item. You're
+ only required to indent the first line. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit.
+
+- Another item in the same list.
+```
+
+如果要在列表项目内放进引言,那 `>` 就需要缩进:
+
+```md
+- A list item with a blockquote:
+
+ > This is a blockquote
+ > inside a list item.
+```
+
+当然,项目列表很可能会不小心产生,像是下面这样的写法:
+
+```md
+1986. What a great season.
+```
+
+换句话说,也就是在行首出现*数字-句点-空白*,要避免这样的状况,你可以在句点前面加上反斜线。
+
+```md
+1986\. What a great season.
+```
+
+### 代码块
+
+和代码相关的写作或是标签语言原始码通常会有已经排版好的代码块,通常这些块我们并不希望它以一般段落文件的方式去排版,而是照原来的样子显示,Markdown 会用 `` 和 `` 标签来把代码块包起来。
+
+要在 Markdown 中建立代码块很简单,只要简单地缩进 4 个空白或是 1 个 tab 就可以,例如,下面的输入:
+
+```md
+This is a normal paragraph:
+
+This is a code block.
+```
+
+Markdown 会转换成:
+
+```html
+This is a normal paragraph:
+
+
+ This is a code block.
+
+```
+
+这里的缩进 (4 个空白或是 1 个 tab) ,都会被移除,例如:
+
+```md
+Here is an example of AppleScript:
+
+tell application "Foo"
+beep
+end tell
+```
+
+会被转换为:
+
+```html
+Here is an example of AppleScript:
+
+tell application "Foo"
+ beep
+end tell
+
+```
+
+一个代码块会一直持续到没有缩进的那一行 (或是文件结尾) 。
+
+在代码块里面, `&` 、 `<` 和 `>` 会自动转成 HTML 实体,这样的方式让你非常容易使用 Markdown 插入范例用的 HTML 原始码,只需要复制粘贴,再加上缩进就可以了,剩下的 Markdown 都会帮你处理,例如:
+
+````md
+```
+
+```
+````
+
+会被转换为:
+
+```html
+
+ <div class="footer">
+ © 2004 Foo Corporation
+</div>
+
+```
+
+代码块中,一般的 Markdown 语法不会被转换,像是星号便只是星号,这表示你可以很容易地以 Markdown 语法撰写 Markdown 语法相关的文件。
+
+如果你想要在代码块里输入用 Markdown 表示的代码库,你可以进行嵌套。
+
+`````md
+````md
+```js
+const a = 1;
+```
+````
+`````
+
+会渲染为
+
+````md
+```js
+const a = 1;
+```
+````
+
+### 分隔线
+
+你可以在一行中用三个或以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。你也可以在星号中间插入空白。下面每种写法都可以建立分隔线:
+
+```html
+---(建议) * * * *** ***** - - - ---------------------------------------
+```
+
+## 行内元素
+
+### 链接
+
+Markdown 支持两种形式的链接语法: *行内*和*参考*两种形式。
+
+不管是哪一种,链接的文字都是用 `[方括号]` 来标记。
+
+要建立一个行内形式的链接,只要在方块括号后面马上接着括号并插入网址链接即可,如果你还想要加上链接的 title 文字,只要在网址后面,用双引号把 title 文字包起来即可,例如:
+
+```html
+This is [an example](http://example.com/ "Title") inline link. [This
+link](http://example.net/) has no title attribute.
+```
+
+会产生:
+
+```html
+
+ This is an example inline
+ link.
+
+
+This link has no title attribute.
+```
+
+如果你是要链接到同样主机的资源,你可以使用相对路径:
+
+```md
+See my [About](/about/) page for details.
+```
+
+参考形式的链接使用另外一个方括号接在链接文字的括号后面,而在第二个方括号里面要填入用以辨识链接的标签:
+
+```md
+This is [an example][id] reference-style link.
+```
+
+接着,在文件的任意处,你可以把这个标签的链接内容定义出来:
+
+```md
+[id]: http://example.com/ "Optional Title Here"
+```
+
+链接定义的形式为:
+
+- 方括号,输入链接的标识 ID
+- 冒号
+- 一个以上的空白或 tab
+- 链接的网址
+- 选择性地添加 title 内容,可以用单引号、双引号或是括号包括
+
+下面这三种链接的定义相同:
+
+```md
+[foo]: http://example.com/ "Optional Title Here"
+[foo]: http://example.com/ "Optional Title Here"
+[foo]: http://example.com/ "Optional Title Here"
+```
+
+**请注意:** 有一个已知的问题是 Markdown.pl 1.0.1 会忽略单引号包起来的链接 title。
+
+链接网址也可以用方括号包起来:
+
+```md
+[id]: http://example.com/ "Optional Title Here"
+```
+
+你也可以把 title 属性放到下一行,也可以加一些缩进,网址太长的话,这样会比较好看:
+
+```md
+[id]: http://example.com/longish/path/to/resource/here "Optional Title Here"
+```
+
+网址定义只有在产生链接的时候用到,并不会直接出现在文件之中。
+
+链接辨识标签可以有字母、数字、空白和标点符号,但是并**不**区分大小写,因此下面两个链接是一样的:
+
+```md
+[link text][a]
+[link text][a]
+```
+
+*预设的链接标签*功能让你可以省略指定链接标签,这种情形下,链接标签和链接文字会视为相同,要用预设链接标签只要在链接文字后面加上一个空的方括号,如果你要让 "Google" 链接到 google.com,你可以简化成:
+
+```md
+[Google][]
+```
+
+然后定义链接内容:
+
+```md
+[google]: http://google.com/
+```
+
+由于链接文字可能包含空白,所以这种简化的标签内也可以包含多个文字:
+
+```md
+Visit [Daring Fireball][] for more information.
+```
+
+然后接着定义链接:
+
+```md
+[daring fireball]: http://daringfireball.net/
+```
+
+链接的定义可以放在文件中的任何一个地方,我比较偏好直接放在链接出现段落的后面,你也可以把它放在文件最后面,就像是注解一样。
+
+下面是一个参考式链接的范例:
+
+```md
+I get 10 times more traffic from [Google][1] than from
+[Yahoo][2] or [MSN][3].
+
+[1]: http://google.com/ "Google"
+[2]: http://search.yahoo.com/ "Yahoo Search"
+[3]: http://search.msn.com/ "MSN Search"
+```
+
+如果改成用链接名称的方式写:
+
+```md
+I get 10 times more traffic from [Google][] than from
+[Yahoo][] or [MSN][].
+
+[google]: http://google.com/ "Google"
+[yahoo]: http://search.yahoo.com/ "Yahoo Search"
+[msn]: http://search.msn.com/ "MSN Search"
+```
+
+上面两种写法都会产生下面的 HTML。
+
+```html
+
+ I get 10 times more traffic from
+ Google than from
+ Yahoo
+ or MSN .
+
+```
+
+下面是用行内形式写的同样一段内容的 Markdown 文件,提供作为比较之用:
+
+```md
+I get 10 times more traffic from [Google](http://google.com/ "Google")
+than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
+[MSN](http://search.msn.com/ "MSN Search").
+```
+
+参考式的链接其实重点不在于它比较好写,而是它比较好读,比较一下上面的范例,使用参考式的文章本身只有 81 个字元,但是用行内形式的链接却会增加到 176 个字元,如果是用纯 HTML 格式来写,会有 234 个字元,在 HTML 格式中,标签比文字还要多。
+
+使用 Markdown 的参考式链接,可以让文件更像是浏览器最后产生的结果,让你可以把一些标记相关的资讯移到段落文字之外,你就可以增加链接而不让文章的阅读感觉被打断。
+
+### 强调
+
+Markdown 使用星号 (`*`) 和底线 (`_`) 作为标记强调字词的符号,被 `*` 或 `_` 包围的字词会被转成用 `` 标签包围,用两个 `*` 或 `_` 包起来的话,则会被转成 ``,例如:
+
+```md
+**double asterisks** (建议)
+
+**double underscores** (建议)
+
+_single asterisks_
+
+_single underscores_
+```
+
+会转成:
+
+```html
+single asterisks
+
+single underscores
+
+double asterisks
+
+double underscores
+```
+
+你可以随便用你喜欢的样式,唯一的限制是,你用什么符号开启标签,就要用什么符号结束。
+
+强调也可以直接插在文字中间:
+
+```md
+un*frigging*believable
+```
+
+但是如果你的 `*` 和 `_` 两边都有空白的话,它们就只会被当成普通的符号。
+
+如果要在文字前后直接插入普通的星号或底线,你可以用反斜线:
+
+```md
+\*this text is surrounded by literal asterisks\*
+```
+
+### 代码
+
+如果要标记一小段行内代码,你可以用反引号把它包起来 (`` ` ``) ,例如:
+
+```md
+Use the `printf()` function.
+```
+
+会产生:
+
+```md
+Use the printf()
function.
+```
+
+如果要在代码内插入反引号,你可以用多个反引号来开启和结束行内代码:
+
+```md
+``There is a literal backtick (`) here.``
+```
+
+这段语法会产生:
+
+```html
+There is a literal backtick (`) here.
+```
+
+代码码区段的起始和结束端都可以放入一个空白,起始端后面一个,结束端前面一个,这样你就可以在区段的一开始就插入反引号:
+
+```md
+A single backtick in a code span: `` ` ``
+
+A backtick-delimited string in a code span: `` `foo` ``
+```
+
+会产生:
+
+```html
+A single backtick in a code span: `
+
+A backtick-delimited string in a code span: `foo`
+```
+
+在代码码区段内,`&` 和方括号都会被转成 HTML 实体,这样会比较容易插入 HTML 原始码,Markdown 会把下面这段:
+
+```md
+Please don't use any `` tags.
+```
+
+转为:
+
+```html
+Please don't use any <blink>
tags.
+```
+
+你也可以这样写:
+
+```md
+`—` is the decimal-encoded equivalent of `—`.
+```
+
+以产生:
+
+```html
+
+ —
is the decimal-encoded equivalent of
+ —
.
+
+```
+
+### 图片
+
+很明显地,要在纯文字应用中设计一个「自然」的语法来插入图片是有一定难度的。
+
+Markdown 使用一种和链接很相似的语法来标记图片,同样也允许两种样式: _行内_ 和 _参考_。
+
+行内图片的语法看起来像是:
+
+```md
+![Alt text](/path/to/img.jpg)
+
+![Alt text](/path/to/img.jpg "Optional title")
+```
+
+详细叙述如下:
+
+- 一个惊叹号 `!`
+- 一个方括号,里面放上图片的替代文字
+- 一个普通括号,里面放上图片的网址,最后还可以用引号包住并加上
+ 选择性的 title 文字。
+
+参考式的图片语法则长得像这样:
+
+```md
+![Alt text][id]
+```
+
+「id」是图片参考的名称,图片参考的定义方式则和链接参考一样:
+
+```md
+[id]: url/to/image "Optional title attribute"
+```
+
+到目前为止, Markdown 还没有办法指定图片的宽高,如果你需要的话,你可以使用普通的 ` ` 标签。
+
+### 其他文本样式
+
+- 删除:`~~delete~~`
+- 段落: 段落之间空一行
+- 换行符: 一行结束时输入两个空格
+
+---
+
+## 其它
+
+### 自动链接
+
+Markdown 支持比较简短的自动链接形式来处理网址和电子邮件信箱,只要是用方括号包起来, Markdown 就会自动把它转成链接,链接的文字就和链接位置一样,例如:
+
+```md
+
+```
+
+Markdown 会转为:
+
+```html
+http://example.com/
+```
+
+自动的邮件链接也很类似,只是 Markdown 会先做一个编码转换的过程,把文字字元转成 16 进位码的 HTML 实体,这样的格式可以混淆一些不好的信箱地址收集机器人,例如:
+
+```md
+
+```
+
+Markdown 会转成:
+
+```html
+address@example.com
+```
+
+在浏览器里面,这段字串会变成一个可以点击的 链接。
+
+(这种作法虽然可以混淆不少的机器人,但并无法全部挡下来,不过这样也比什么都不做好些。无论如何,公开你的信箱终究会引来广告信件的。)
+
+### 转义字符
+
+Markdown 可以利用反斜线来插入一些在语法中有其它意义的符号,例如: 如果你想要用星号加在文字旁边的方式来做出强调效果 (但不用 `` 标签) ,你可以在星号的前面加上反斜线:
+
+```md
+\*literal asterisks\*
+```
+
+Markdown 支持在下面这些符号前面加上反斜线来帮助插入普通的符号:
+
+- `\` 反斜线
+- `` ` `` 反引号
+- `*` 星号
+- `_` 底线
+- `{}` 大括号
+- `[]` 方括号
+- `()` 括号
+- `#` 井字号
+- `+` 加号
+- `-` 减号
+- `.` 英文句点
+- `!` 惊叹号
+
+## 快捷键
+
+| 输出后的效果 | Markdown | 快捷键 |
+| ------------- | ---------- | -------------- |
+| **Bold** | `**text**` | Ctrl/⌘ + B |
+| _Emphasize_ | `*text*` | Ctrl/⌘ + I |
+| `Inline Code` | \`code\` | 选中后 `` ` `` |
+
+## 表格
+
+| 居中 | 右对齐 | 左对齐 |
+| :-----------: | -------------: | :------------- |
+| 居中使用`:-:` | 右对齐使用`-:` | 左对齐使用`:-` |
+| b | aaaaaaaaa | aaaa |
+| c | aaaa | a |
+
+## Emoji
+
+`:emoji名称:`
+
+Example: `:smile:` :smile:
+
+你可以在 [Emoji 列表](./emoji/README.md) 找到所有可用的 Emoji。
+
+## Markdown 效果演示
+
+- [查看详情](demo.md)
+
+[1]: http://docutils.sourceforge.net/mirror/setext.html
+[2]: http://www.aaronsw.com/2002/atx/
+[3]: http://textism.com/tools/textile/
+[4]: http://docutils.sourceforge.net/rst.html
+[5]: http://www.triptico.com/software/grutatxt.html
+[6]: http://ettext.taint.org/doc/
+[bq]: #blockquotes
+[l]: #列表
diff --git a/src/language/markdown/demo.md b/src/language/markdown/demo.md
new file mode 100644
index 00000000..3e257bc3
--- /dev/null
+++ b/src/language/markdown/demo.md
@@ -0,0 +1,321 @@
+---
+title: Markdown 示例
+icon: fab fa-markdown
+order: 2
+category:
+ - 教程知识
+ - Markdown
+tag:
+ - 示例
+ - Markdown
+---
+
+
+
+# 一级标题 {style="display: block;"}
+
+
+
+```md
+# 一级标题
+```
+
+## 二级标题
+
+```md
+## 二级标题
+```
+
+### 三级标题
+
+```md
+### 三级标题
+```
+
+#### 四级标题
+
+```md
+#### 四级标题
+```
+
+##### 五级标题
+
+```md
+##### 五级标题
+```
+
+###### 六级标题
+
+```md
+###### 六级标题
+```
+
+## 文本
+
+这句话里拥有**加粗**、*倾斜*和~~删除~~
+
+```md
+这句话里拥有**加粗**、*倾斜*和~~删除~~
+```
+
+## 段落
+
+这是一个段落。
+
+这是另一个段落。
+
+```md
+这是一个段落
+
+这是另一个段落。
+```
+
+## 换行
+
+这是一句话不过我要在这里
+换行且\
+再次换行
+
+```md
+这是一句话不过我要在这里
+换行且\
+再次换行
+```
+
+::: tip
+
+上方的代码中 `这里` 后面有两个空格
+
+:::
+
+## 引用
+
+> 引用也可以连用
+>
+> > 可以添加额外的大于号制造更深的引用
+
+```md
+> 引用也可以连用
+>
+> > 可以添加额外的大于号制造更深的引用
+```
+
+## 列表
+
+### 无序列表
+
+- 无序列表项
+- 无序列表项
+
+ - 列表中的列表项
+ - 更多的列表项
+ - 更多的列表项
+ - 更多的列表项
+ - 列表中的长列表项,这个列表项很长。
+
+ 而且由很多个段落构成。
+
+ 甚至最后一个段落还包含了[链接](#链接)。
+
+- 无序列表项
+
+```md
+- 无序列表项
+- 无序列表项
+
+ - 列表中的列表项
+ - 更多的列表项
+ - 更多的列表项
+ - 更多的列表项
+ - 列表中的长列表项,这个列表项很长。
+
+ 而且由很多个段落构成。
+
+ 甚至最后一个段落还包含了[链接](#链接)。
+
+- 无序列表项
+```
+
+### 有序列表
+
+1. 有序列表第一项
+1. 有序列表第二项
+ 第二项的需要换行\
+ 再次换行
+1. 有序列表第三项
+
+```md
+1. 有序列表第一项
+1. 有序列表第二项
+ 第二项的需要换行\
+ 再次换行
+1. 有序列表第三项
+```
+
+::: tip
+
+上方的代码中`换行`后面有也两个空格
+
+:::
+
+## 分割线
+
+---
+
+```md
+---
+```
+
+## 链接
+
+[根目录访问主页](/v2/)
+
+[相对路径访问主页](../../README.md)
+
+[根目录访问贡献指南](/v2/contribution)
+
+[相对路径访问贡献指南](../../contribution.md)
+
+```md
+[根目录访问主页](/v2/)
+
+[相对路径访问主页](../../README.md)
+
+[根目录访问贡献指南](/v2/contribution)
+
+[相对路径访问贡献指南](../../contribution.md)
+```
+
+::: tip
+
+VuePress 还兼容如下跳转到主页的写法:
+
+- [相对路径访问,兼容 Markdown 编写时相互跳转](../../README.md)
+
+- [根目录访问主页 2](/README.md)
+
+- [HTML 形式](../../index.html)
+
+如果希望在使用编辑器编辑 Markdown 时也能够进行相互跳转的话,则需要全部使用**相对路径**,并且`README.md`**不能省略**。
+
+代码:
+
+```md
+[根目录访问主页 2](/README.md)
+
+[相对路径访问,兼容 Markdown 编写时相互跳转](../../README.md)
+
+[HTML 形式](../../index.html)
+```
+
+:::
+
+## 图片
+
+![Logo](/logo.png)
+
+```md
+![Logo](/logo.png)
+```
+
+## Emoji
+
+经典方式:
+
+:wink: :cry: :laughing: :yum:
+
+```md
+:wink: :cry: :laughing: :yum:
+```
+
+简写:
+
+8-) :) :\* :( :-) :-( ;)
+
+```md
+8-) :) :\* :( :-) :-( ;)
+```
+
+::: tip
+
+更多详见[emoji 列表](emoji/README.md)
+
+:::
+
+## 表格
+
+| 居中 | 右对齐 | 左对齐 |
+| :-----------: | -------------: | :------------- |
+| 居中使用`:-:` | 右对齐使用`-:` | 左对齐使用`:-` |
+| b | aaaaaaaaa | aaaa |
+| c | aaaa | a |
+
+```md
+| 居中 | 右对齐 | 左对齐 |
+| :-----------: | -------------: | :------------- |
+| 居中使用`:-:` | 右对齐使用`-:` | 左对齐使用`:-` |
+| b | aaaaaaaaa | aaaa |
+| c | aaaa | a |
+```
+
+## 代码
+
+行内代码效果: `code`
+
+```md
+行内代码效果: `code`
+```
+
+缩进代码:
+
+```
+// Some comments
+line 1 of code
+line 2 of code
+line 3 of code
+```
+
+实际代码:
+
+```md
+ // Some comments
+ line 1 of code
+ line 2 of code
+ line 3 of code
+```
+
+块级代码
+
+```md
+Sample text here...
+```
+
+````md
+块级代码
+
+```
+Sample text here...
+```
+````
+
+高亮格式:
+
+```js
+var foo = function (bar) {
+ return bar++;
+};
+
+console.log(foo(5));
+```
+
+````md
+高亮格式:
+
+```js
+var foo = function (bar) {
+ return bar++;
+};
+
+console.log(foo(5));
+```
+````
diff --git a/src/language/markdown/emoji/README.md b/src/language/markdown/emoji/README.md
new file mode 100644
index 00000000..e6440284
--- /dev/null
+++ b/src/language/markdown/emoji/README.md
@@ -0,0 +1,9 @@
+---
+title: Emoji 列表
+icon: face-smile
+dir:
+ order: 3
+article: false
+---
+
+
diff --git a/src/language/markdown/emoji/nature.md b/src/language/markdown/emoji/nature.md
new file mode 100644
index 00000000..8846eb1b
--- /dev/null
+++ b/src/language/markdown/emoji/nature.md
@@ -0,0 +1,124 @@
+---
+title: 自然 Emoji
+icon: tree
+category:
+ - 教程知识
+ - Markdown
+tag:
+ - Markdown
+ - Emoji
+---
+
+- :sunny: `:sunny:`
+- :umbrella: `:umbrella:`
+- :cloud: `:cloud:`
+- :snowflake: `:snowflake:`
+- :snowman: `:snowman:`
+- :zap: `:zap:`
+- :cyclone: `:cyclone:`
+- :foggy: `:foggy:`
+- :ocean: `:ocean:`
+- :cat: `:cat:`
+- :dog: `:dog:`
+- :mouse: `:mouse:`
+- :hamster: `:hamster:`
+- :rabbit: `:rabbit:`
+- :wolf: `:wolf:`
+- :frog: `:frog:`
+- :tiger: `:tiger:`
+- :koala: `:koala:`
+- :bear: `:bear:`
+- :pig: `:pig:`
+- :pig_nose: `:pig_nose:`
+- :cow: `:cow:`
+- :boar: `:boar:`
+- :monkey_face: `:monkey_face:`
+- :monkey: `:monkey:`
+- :horse: `:horse:`
+- :racehorse: `:racehorse:`
+- :camel: `:camel:`
+- :sheep: `:sheep:`
+- :elephant: `:elephant:`
+- :panda_face: `:panda_face:`
+- :snake: `:snake:`
+- :bird: `:bird:`
+- :baby_chick: `:baby_chick:`
+- :hatched_chick: `:hatched_chick:`
+- :hatching_chick: `:hatching_chick:`
+- :chicken: `:chicken:`
+- :penguin: `:penguin:`
+- :turtle: `:turtle:`
+- :bug: `:bug:`
+- :honeybee: `:honeybee:`
+- :ant: `:ant:`
+- :beetle: `:beetle:`
+- :snail: `:snail:`
+- :octopus: `:octopus:`
+- :tropical_fish: `:tropical_fish:`
+- :fish: `:fish:`
+- :whale: `:whale:`
+- :whale2: `:whale2:`
+- :dolphin: `:dolphin:`
+- :cow2: `:cow2:`
+- :ram: `:ram:`
+- :rat: `:rat:`
+- :water_buffalo: `:water_buffalo:`
+- :tiger2: `:tiger2:`
+- :rabbit2: `:rabbit2:`
+- :dragon: `:dragon:`
+- :goat: `:goat:`
+- :rooster: `:rooster:`
+- :dog2: `:dog2:`
+- :pig2: `:pig2:`
+- :mouse2: `:mouse2:`
+- :ox: `:ox:`
+- :dragon_face: `:dragon_face:`
+- :blowfish: `:blowfish:`
+- :crocodile: `:crocodile:`
+- :dromedary_camel: `:dromedary_camel:`
+- :leopard: `:leopard:`
+- :cat2: `:cat2:`
+- :poodle: `:poodle:`
+- :paw_prints: `:paw_prints:`
+- :bouquet: `:bouquet:`
+- :cherry_blossom: `:cherry_blossom:`
+- :tulip: `:tulip:`
+- :four_leaf_clover: `:four_leaf_clover:`
+- :rose: `:rose:`
+- :sunflower: `:sunflower:`
+- :hibiscus: `:hibiscus:`
+- :maple_leaf: `:maple_leaf:`
+- :leaves: `:leaves:`
+- :fallen_leaf: `:fallen_leaf:`
+- :herb: `:herb:`
+- :mushroom: `:mushroom:`
+- :cactus: `:cactus:`
+- :palm_tree: `:palm_tree:`
+- :evergreen_tree: `:evergreen_tree:`
+- :deciduous_tree: `:deciduous_tree:`
+- :chestnut: `:chestnut:`
+- :seedling: `:seedling:`
+- :blossom: `:blossom:`
+- :ear_of_rice: `:ear_of_rice:`
+- :shell: `:shell:`
+- :globe_with_meridians: `:globe_with_meridians:`
+- :sun_with_face: `:sun_with_face:`
+- :full_moon_with_face: `:full_moon_with_face:`
+- :new_moon_with_face: `:new_moon_with_face:`
+- :new_moon: `:new_moon:`
+- :waxing_crescent_moon: `:waxing_crescent_moon:`
+- :first_quarter_moon: `:first_quarter_moon:`
+- :waxing_gibbous_moon: `:waxing_gibbous_moon:`
+- :full_moon: `:full_moon:`
+- :waning_gibbous_moon: `:waning_gibbous_moon:`
+- :last_quarter_moon: `:last_quarter_moon:`
+- :waning_crescent_moon: `:waning_crescent_moon:`
+- :last_quarter_moon_with_face: `:last_quarter_moon_with_face:`
+- :first_quarter_moon_with_face: `:first_quarter_moon_with_face:`
+- :crescent_moon: `:crescent_moon:`
+- :earth_africa: `:earth_africa:`
+- :earth_americas: `:earth_americas:`
+- :earth_asia: `:earth_asia:`
+- :volcano: `:volcano:`
+- :milky_way: `:milky_way:`
+- :partly_sunny: `:partly_sunny:`
diff --git a/src/language/markdown/emoji/object.md b/src/language/markdown/emoji/object.md
new file mode 100644
index 00000000..f536eca3
--- /dev/null
+++ b/src/language/markdown/emoji/object.md
@@ -0,0 +1,271 @@
+---
+title: 对象 Emoji
+icon: object-group
+category:
+ - 教程知识
+ - Markdown
+tag:
+ - Markdown
+ - Emoji
+---
+
+- :bamboo: `:bamboo:`
+- :gift_heart: `:gift_heart:`
+- :dolls: `:dolls:`
+- :school_satchel: `:school_satchel:`
+- :mortar_board: `:mortar_board:`
+- :flags: `:flags:`
+- :fireworks: `:fireworks:`
+- :sparkler: `:sparkler:`
+- :wind_chime: `:wind_chime:`
+- :rice_scene: `:rice_scene:`
+- :jack_o_lantern: `:jack_o_lantern:`
+- :ghost: `:ghost:`
+- :santa: `:santa:`
+- :christmas_tree: `:christmas_tree:`
+- :gift: `:gift:`
+- :bell: `:bell:`
+- :no_bell: `:no_bell:`
+- :tanabata_tree: `:tanabata_tree:`
+- :tada: `:tada:`
+- :confetti_ball: `:confetti_ball:`
+- :balloon: `:balloon:`
+- :crystal_ball: `:crystal_ball:`
+- :cd: `:cd:`
+- :dvd: `:dvd:`
+- :floppy_disk: `:floppy_disk:`
+- :camera: `:camera:`
+- :video_camera: `:video_camera:`
+- :movie_camera: `:movie_camera:`
+- :computer: `:computer:`
+- :tv: `:tv:`
+- :iphone: `:iphone:`
+- :phone: `:phone:`
+- :telephone: `:telephone:`
+- :telephone_receiver: `:telephone_receiver:`
+- :pager: `:pager:`
+- :fax: `:fax:`
+- :minidisc: `:minidisc:`
+- :vhs: `:vhs:`
+- :sound: `:sound:`
+- :speaker: `:speaker:`
+- :mute: `:mute:`
+- :loudspeaker: `:loudspeaker:`
+- :mega: `:mega:`
+- :hourglass: `:hourglass:`
+- :hourglass_flowing_sand: `:hourglass_flowing_sand:`
+- :alarm_clock: `:alarm_clock:`
+- :watch: `:watch:`
+- :radio: `:radio:`
+- :satellite: `:satellite:`
+- :loop: `:loop:`
+- :mag: `:mag:`
+- :mag_right: `:mag_right:`
+- :unlock: `:unlock:`
+- :lock: `:lock:`
+- :lock_with_ink_pen: `:lock_with_ink_pen:`
+- :closed_lock_with_key: `:closed_lock_with_key:`
+- :key: `:key:`
+- :bulb: `:bulb:`
+- :flashlight: `:flashlight:`
+- :high_brightness: `:high_brightness:`
+- :low_brightness: `:low_brightness:`
+- :electric_plug: `:electric_plug:`
+- :battery: `:battery:`
+- :calling: `:calling:`
+- :email: `:email:`
+- :mailbox: `:mailbox:`
+- :postbox: `:postbox:`
+- :bath: `:bath:`
+- :bathtub: `:bathtub:`
+- :shower: `:shower:`
+- :toilet: `:toilet:`
+- :wrench: `:wrench:`
+- :nut_and_bolt: `:nut_and_bolt:`
+- :hammer: `:hammer:`
+- :seat: `:seat:`
+- :moneybag: `:moneybag:`
+- :yen: `:yen:`
+- :dollar: `:dollar:`
+- :pound: `:pound:`
+- :euro: `:euro:`
+- :credit_card: `:credit_card:`
+- :money_with_wings: `:money_with_wings:`
+- :e-mail: `:e-mail:`
+- :inbox_tray: `:inbox_tray:`
+- :outbox_tray: `:outbox_tray:`
+- :envelope: `:envelope:`
+- :incoming_envelope: `:incoming_envelope:`
+- :postal_horn: `:postal_horn:`
+- :mailbox_closed: `:mailbox_closed:`
+- :mailbox_with_mail: `:mailbox_with_mail:`
+- :mailbox_with_no_mail: `:mailbox_with_no_mail:`
+- :package: `:package:`
+- :door: `:door:`
+- :smoking: `:smoking:`
+- :bomb: `:bomb:`
+- :gun: `:gun:`
+- :hocho: `:hocho:`
+- :pill: `:pill:`
+- :syringe: `:syringe:`
+- :page_facing_up: `:page_facing_up:`
+- :page_with_curl: `:page_with_curl:`
+- :bookmark_tabs: `:bookmark_tabs:`
+- :bar_chart: `:bar_chart:`
+- :chart_with_upwards_trend: `:chart_with_upwards_trend:`
+- :chart_with_downwards_trend: `:chart_with_downwards_trend:`
+- :scroll: `:scroll:`
+- :clipboard: `:clipboard:`
+- :calendar: `:calendar:`
+- :date: `:date:`
+- :card_index: `:card_index:`
+- :file_folder: `:file_folder:`
+- :open_file_folder: `:open_file_folder:`
+- :scissors: `:scissors:`
+- :pushpin: `:pushpin:`
+- :paperclip: `:paperclip:`
+- :black_nib: `:black_nib:`
+- :pencil2: `:pencil2:`
+- :straight_ruler: `:straight_ruler:`
+- :triangular_ruler: `:triangular_ruler:`
+- :closed_book: `:closed_book:`
+- :green_book: `:green_book:`
+- :blue_book: `:blue_book:`
+- :orange_book: `:orange_book:`
+- :notebook: `:notebook:`
+- :notebook_with_decorative_cover: `:notebook_with_decorative_cover:`
+- :ledger: `:ledger:`
+- :books: `:books:`
+- :bookmark: `:bookmark:`
+- :name_badge: `:name_badge:`
+- :microscope: `:microscope:`
+- :telescope: `:telescope:`
+- :newspaper: `:newspaper:`
+- :football: `:football:`
+- :basketball: `:basketball:`
+- :soccer: `:soccer:`
+- :baseball: `:baseball:`
+- :tennis: `:tennis:`
+- :8ball: `:8ball:`
+- :rugby_football: `:rugby_football:`
+- :bowling: `:bowling:`
+- :golf: `:golf:`
+- :mountain_bicyclist: `:mountain_bicyclist:`
+- :bicyclist: `:bicyclist:`
+- :horse_racing: `:horse_racing:`
+- :snowboarder: `:snowboarder:`
+- :swimmer: `:swimmer:`
+- :surfer: `:surfer:`
+- :ski: `:ski:`
+- :spades: `:spades:`
+- :hearts: `:hearts:`
+- :clubs: `:clubs:`
+- :diamonds: `:diamonds:`
+- :gem: `:gem:`
+- :ring: `:ring:`
+- :trophy: `:trophy:`
+- :musical_score: `:musical_score:`
+- :musical_keyboard: `:musical_keyboard:`
+- :violin: `:violin:`
+- :space_invader: `:space_invader:`
+- :video_game: `:video_game:`
+- :black_joker: `:black_joker:`
+- :flower_playing_cards: `:flower_playing_cards:`
+- :game_die: `:game_die:`
+- :dart: `:dart:`
+- :mahjong: `:mahjong:`
+- :clapper: `:clapper:`
+- :memo: `:memo:`
+- :pencil: `:pencil:`
+- :book: `:book:`
+- :art: `:art:`
+- :microphone: `:microphone:`
+- :headphones: `:headphones:`
+- :trumpet: `:trumpet:`
+- :saxophone: `:saxophone:`
+- :guitar: `:guitar:`
+- :shoe: `:shoe:`
+- :sandal: `:sandal:`
+- :high_heel: `:high_heel:`
+- :lipstick: `:lipstick:`
+- :boot: `:boot:`
+- :shirt: `:shirt:`
+- :tshirt: `:tshirt:`
+- :necktie: `:necktie:`
+- :womans_clothes: `:womans_clothes:`
+- :dress: `:dress:`
+- :running_shirt_with_sash: `:running_shirt_with_sash:`
+- :jeans: `:jeans:`
+- :kimono: `:kimono:`
+- :bikini: `:bikini:`
+- :ribbon: `:ribbon:`
+- :tophat: `:tophat:`
+- :crown: `:crown:`
+- :womans_hat: `:womans_hat:`
+- :mans_shoe: `:mans_shoe:`
+- :closed_umbrella: `:closed_umbrella:`
+- :briefcase: `:briefcase:`
+- :handbag: `:handbag:`
+- :pouch: `:pouch:`
+- :purse: `:purse:`
+- :eyeglasses: `:eyeglasses:`
+- :fishing_pole_and_fish: `:fishing_pole_and_fish:`
+- :coffee: `:coffee:`
+- :tea: `:tea:`
+- :sake: `:sake:`
+- :baby_bottle: `:baby_bottle:`
+- :beer: `:beer:`
+- :beers: `:beers:`
+- :cocktail: `:cocktail:`
+- :tropical_drink: `:tropical_drink:`
+- :wine_glass: `:wine_glass:`
+- :fork_and_knife: `:fork_and_knife:`
+- :pizza: `:pizza:`
+- :hamburger: `:hamburger:`
+- :fries: `:fries:`
+- :poultry_leg: `:poultry_leg:`
+- :meat_on_bone: `:meat_on_bone:`
+- :spaghetti: `:spaghetti:`
+- :curry: `:curry:`
+- :fried_shrimp: `:fried_shrimp:`
+- :bento: `:bento:`
+- :sushi: `:sushi:`
+- :fish_cake: `:fish_cake:`
+- :rice_ball: `:rice_ball:`
+- :rice_cracker: `:rice_cracker:`
+- :rice: `:rice:`
+- :ramen: `:ramen:`
+- :stew: `:stew:`
+- :oden: `:oden:`
+- :dango: `:dango:`
+- :egg: `:egg:`
+- :bread: `:bread:`
+- :doughnut: `:doughnut:`
+- :custard: `:custard:`
+- :icecream: `:icecream:`
+- :ice_cream: `:ice_cream:`
+- :shaved_ice: `:shaved_ice:`
+- :birthday: `:birthday:`
+- :cake: `:cake:`
+- :cookie: `:cookie:`
+- :chocolate_bar: `:chocolate_bar:`
+- :candy: `:candy:`
+- :lollipop: `:lollipop:`
+- :honey_pot: `:honey_pot:`
+- :apple: `:apple:`
+- :green_apple: `:green_apple:`
+- :tangerine: `:tangerine:`
+- :lemon: `:lemon:`
+- :cherries: `:cherries:`
+- :grapes: `:grapes:`
+- :watermelon: `:watermelon:`
+- :strawberry: `:strawberry:`
+- :peach: `:peach:`
+- :melon: `:melon:`
+- :banana: `:banana:`
+- :pear: `:pear:`
+- :pineapple: `:pineapple:`
+- :sweet_potato: `:sweet_potato:`
+- :eggplant: `:eggplant:`
+- :tomato: `:tomato:`
+- :corn: `:corn:`
diff --git a/src/language/markdown/emoji/people.md b/src/language/markdown/emoji/people.md
new file mode 100644
index 00000000..0a417482
--- /dev/null
+++ b/src/language/markdown/emoji/people.md
@@ -0,0 +1,189 @@
+---
+title: 人物 Emoji
+icon: person
+category:
+ - 教程知识
+ - Markdown
+tag:
+ - Markdown
+ - Emoji
+---
+
+- :smile: `:smile:`
+- :laughing: `:laughing:`
+- :blush: `:blush:`
+- :smiley: `:smiley:`
+- :smirk: `:smirk:`
+- :heart_eyes: `:heart_eyes:`
+- :kissing_heart: `:kissing_heart:`
+- :kissing_closed_eyes: `:kissing_closed_eyes:`
+- :flushed: `:flushed:`
+- :relieved: `:relieved:`
+- :satisfied: `:satisfied:`
+- :grin: `:grin:`
+- :wink: `:wink:`
+- :stuck_out_tongue_winking_eye: `:stuck_out_tongue_winking_eye:`
+- :stuck_out_tongue_closed_eyes: `:stuck_out_tongue_closed_eyes:`
+- :grinning: `:grinning:`
+- :kissing: `:kissing:`
+- :kissing_smiling_eyes: `:kissing_smiling_eyes:`
+- :stuck_out_tongue: `:stuck_out_tongue:`
+- :sleeping: `:sleeping:`
+- :worried: `:worried:`
+- :frowning: `:frowning:`
+- :anguished: `:anguished:`
+- :open_mouth: `:open_mouth:`
+- :grimacing: `:grimacing:`
+- :confused: `:confused:`
+- :hushed: `:hushed:`
+- :expressionless: `:expressionless:`
+- :unamused: `:unamused:`
+- :sweat_smile: `:sweat_smile:`
+- :sweat: `:sweat:`
+- :disappointed_relieved: `:disappointed_relieved:`
+- :weary: `:weary:`
+- :pensive: `:pensive:`
+- :disappointed: `:disappointed:`
+- :confounded: `:confounded:`
+- :fearful: `:fearful:`
+- :cold_sweat: `:cold_sweat:`
+- :persevere: `:persevere:`
+- :cry: `:cry:`
+- :sob: `:sob:`
+- :joy: `:joy:`
+- :astonished: `:astonished:`
+- :scream: `:scream:`
+- :tired_face: `:tired_face:`
+- :angry: `:angry:`
+- :rage: `:rage:`
+- :triumph: `:triumph:`
+- :sleepy: `:sleepy:`
+- :yum: `:yum:`
+- :mask: `:mask:`
+- :sunglasses: `:sunglasses:`
+- :dizzy_face: `:dizzy_face:`
+- :imp: `:imp:`
+- :smiling_imp: `:smiling_imp:`
+- :neutral_face: `:neutral_face:`
+- :no_mouth: `:no_mouth:`
+- :innocent: `:innocent:`
+- :alien: `:alien:`
+- :yellow_heart: `:yellow_heart:`
+- :blue_heart: `:blue_heart:`
+- :purple_heart: `:purple_heart:`
+- :heart: `:heart:`
+- :green_heart: `:green_heart:`
+- :broken_heart: `:broken_heart:`
+- :heartbeat: `:heartbeat:`
+- :heartpulse: `:heartpulse:`
+- :two_hearts: `:two_hearts:`
+- :revolving_hearts: `:revolving_hearts:`
+- :cupid: `:cupid:`
+- :sparkling_heart: `:sparkling_heart:`
+- :sparkles: `:sparkles:`
+- :star: `:star:`
+- :star2: `:star2:`
+- :dizzy: `:dizzy:`
+- :boom: `:boom:`
+- :collision: `:collision:`
+- :anger: `:anger:`
+- :exclamation: `:exclamation:`
+- :question: `:question:`
+- :grey_exclamation: `:grey_exclamation:`
+- :grey_question: `:grey_question:`
+- :zzz: `:zzz:`
+- :dash: `:dash:`
+- :sweat_drops: `:sweat_drops:`
+- :notes: `:notes:`
+- :musical_note: `:musical_note:`
+- :fire: `:fire:`
+- :hankey: `:hankey:`
+- :poop: `:poop:`
+- :shit: `:shit:`
+- :+1: `:+1:`
+- :thumbsup: `:thumbsup:`
+- :-1: `:-1:`
+- :thumbsdown: `:thumbsdown:`
+- :ok_hand: `:ok_hand:`
+- :punch: `:punch:`
+- :facepunch: `:facepunch:`
+- :fist: `:fist:`
+- :v: `:v:`
+- :wave: `:wave:`
+- :hand: `:hand:`
+- :raised_hand: `:raised_hand:`
+- :open_hands: `:open_hands:`
+- :point_up: `:point_up:`
+- :point_down: `:point_down:`
+- :point_left: `:point_left:`
+- :point_right: `:point_right:`
+- :raised_hands: `:raised_hands:`
+- :pray: `:pray:`
+- :point_up_2: `:point_up_2:`
+- :clap: `:clap:`
+- :muscle: `:muscle:`
+- :metal: `:metal:`
+- :fu: `:fu:`
+- :runner: `:runner:`
+- :running: `:running:`
+- :couple: `:couple:`
+- :family: `:family:`
+- :two_men_holding_hands: `:two_men_holding_hands:`
+- :two_women_holding_hands: `:two_women_holding_hands:`
+- :dancer: `:dancer:`
+- :dancers: `:dancers:`
+- :ok_woman: `:ok_woman:`
+- :no_good: `:no_good:`
+- :information_desk_person: `:information_desk_person:`
+- :raising_hand: `:raising_hand:`
+- :bride_with_veil: `:bride_with_veil:`
+- :person_with_pouting_face: `:person_with_pouting_face:`
+- :person_frowning: `:person_frowning:`
+- :bow: `:bow:`
+- :couple_with_heart: `:couple_with_heart:`
+- :massage: `:massage:`
+- :haircut: `:haircut:`
+- :nail_care: `:nail_care:`
+- :boy: `:boy:`
+- :girl: `:girl:`
+- :woman: `:woman:`
+- :man: `:man:`
+- :baby: `:baby:`
+- :older_woman: `:older_woman:`
+- :older_man: `:older_man:`
+- :person_with_blond_hair: `:person_with_blond_hair:`
+- :man_with_gua_pi_mao: `:man_with_gua_pi_mao:`
+- :man_with_turban: `:man_with_turban:`
+- :construction_worker: `:construction_worker:`
+- :cop: `:cop:`
+- :angel: `:angel:`
+- :princess: `:princess:`
+- :smiley_cat: `:smiley_cat:`
+- :smile_cat: `:smile_cat:`
+- :heart_eyes_cat: `:heart_eyes_cat:`
+- :kissing_cat: `:kissing_cat:`
+- :smirk_cat: `:smirk_cat:`
+- :scream_cat: `:scream_cat:`
+- :crying_cat_face: `:crying_cat_face:`
+- :joy_cat: `:joy_cat:`
+- :pouting_cat: `:pouting_cat:`
+- :japanese_ogre: `:japanese_ogre:`
+- :japanese_goblin: `:japanese_goblin:`
+- :see_no_evil: `:see_no_evil:`
+- :hear_no_evil: `:hear_no_evil:`
+- :speak_no_evil: `:speak_no_evil:`
+- :guardsman: `:guardsman:`
+- :skull: `:skull:`
+- :feet: `:feet:`
+- :lips: `:lips:`
+- :kiss: `:kiss:`
+- :droplet: `:droplet:`
+- :ear: `:ear:`
+- :eyes: `:eyes:`
+- :nose: `:nose:`
+- :tongue: `:tongue:`
+- :love_letter: `:love_letter:`
+- :bust_in_silhouette: `:bust_in_silhouette:`
+- :busts_in_silhouette: `:busts_in_silhouette:`
+- :speech_balloon: `:speech_balloon:`
+- :thought_balloon: `:thought_balloon:`
diff --git a/src/language/markdown/emoji/place.md b/src/language/markdown/emoji/place.md
new file mode 100644
index 00000000..a309f9e4
--- /dev/null
+++ b/src/language/markdown/emoji/place.md
@@ -0,0 +1,106 @@
+---
+title: 地点 Emoji
+icon: city
+category:
+ - 教程知识
+ - Markdown
+tag:
+ - Markdown
+ - Emoji
+---
+
+- :house: `:house:`
+- :house_with_garden: `:house_with_garden:`
+- :school: `:school:`
+- :office: `:office:`
+- :post_office: `:post_office:`
+- :hospital: `:hospital:`
+- :bank: `:bank:`
+- :convenience_store: `:convenience_store:`
+- :love_hotel: `:love_hotel:`
+- :hotel: `:hotel:`
+- :wedding: `:wedding:`
+- :church: `:church:`
+- :department_store: `:department_store:`
+- :european_post_office: `:european_post_office:`
+- :city_sunrise: `:city_sunrise:`
+- :city_sunset: `:city_sunset:`
+- :japanese_castle: `:japanese_castle:`
+- :european_castle: `:european_castle:`
+- :tent: `:tent:`
+- :factory: `:factory:`
+- :tokyo_tower: `:tokyo_tower:`
+- :japan: `:japan:`
+- :mount_fuji: `:mount_fuji:`
+- :sunrise_over_mountains: `:sunrise_over_mountains:`
+- :sunrise: `:sunrise:`
+- :stars: `:stars:`
+- :statue_of_liberty: `:statue_of_liberty:`
+- :bridge_at_night: `:bridge_at_night:`
+- :carousel_horse: `:carousel_horse:`
+- :rainbow: `:rainbow:`
+- :ferris_wheel: `:ferris_wheel:`
+- :fountain: `:fountain:`
+- :roller_coaster: `:roller_coaster:`
+- :ship: `:ship:`
+- :speedboat: `:speedboat:`
+- :boat: `:boat:`
+- :sailboat: `:sailboat:`
+- :rowboat: `:rowboat:`
+- :anchor: `:anchor:`
+- :rocket: `:rocket:`
+- :airplane: `:airplane:`
+- :helicopter: `:helicopter:`
+- :steam_locomotive: `:steam_locomotive:`
+- :tram: `:tram:`
+- :mountain_railway: `:mountain_railway:`
+- :bike: `:bike:`
+- :aerial_tramway: `:aerial_tramway:`
+- :suspension_railway: `:suspension_railway:`
+- :mountain_cableway: `:mountain_cableway:`
+- :tractor: `:tractor:`
+- :blue_car: `:blue_car:`
+- :oncoming_automobile: `:oncoming_automobile:`
+- :car: `:car:`
+- :red_car: `:red_car:`
+- :taxi: `:taxi:`
+- :oncoming_taxi: `:oncoming_taxi:`
+- :articulated_lorry: `:articulated_lorry:`
+- :bus: `:bus:`
+- :oncoming_bus: `:oncoming_bus:`
+- :rotating_light: `:rotating_light:`
+- :police_car: `:police_car:`
+- :oncoming_police_car: `:oncoming_police_car:`
+- :fire_engine: `:fire_engine:`
+- :ambulance: `:ambulance:`
+- :minibus: `:minibus:`
+- :truck: `:truck:`
+- :train: `:train:`
+- :station: `:station:`
+- :train2: `:train2:`
+- :bullettrain_front: `:bullettrain_front:`
+- :bullettrain_side: `:bullettrain_side:`
+- :light_rail: `:light_rail:`
+- :monorail: `:monorail:`
+- :railway_car: `:railway_car:`
+- :trolleybus: `:trolleybus:`
+- :ticket: `:ticket:`
+- :fuelpump: `:fuelpump:`
+- :vertical_traffic_light: `:vertical_traffic_light:`
+- :traffic_light: `:traffic_light:`
+- :warning: `:warning:`
+- :construction: `:construction:`
+- :beginner: `:beginner:`
+- :atm: `:atm:`
+- :slot_machine: `:slot_machine:`
+- :busstop: `:busstop:`
+- :barber: `:barber:`
+- :hotsprings: `:hotsprings:`
+- :checkered_flag: `:checkered_flag:`
+- :crossed_flags: `:crossed_flags:`
+- :izakaya_lantern: `:izakaya_lantern:`
+- :moyai: `:moyai:`
+- :circus_tent: `:circus_tent:`
+- :performing_arts: `:performing_arts:`
+- :round_pushpin: `:round_pushpin:`
+- :triangular_flag_on_post: `:triangular_flag_on_post:`
diff --git a/src/language/markdown/emoji/symbol.md b/src/language/markdown/emoji/symbol.md
new file mode 100644
index 00000000..412d4141
--- /dev/null
+++ b/src/language/markdown/emoji/symbol.md
@@ -0,0 +1,201 @@
+---
+title: 符号 Emoji
+icon: circle-right
+category:
+ - 教程知识
+ - Markdown
+tag:
+ - Markdown
+ - Emoji
+---
+
+- :one: `:one:`
+- :two: `:two:`
+- :three: `:three:`
+- :four: `:four:`
+- :five: `:five:`
+- :six: `:six:`
+- :seven: `:seven:`
+- :eight: `:eight:`
+- :nine: `:nine:`
+- :keycap_ten: `:keycap_ten:`
+- :1234: `:1234:`
+- :zero: `:zero:`
+- :hash: `:hash:`
+- :symbols: `:symbols:`
+- :arrow_backward: `:arrow_backward:`
+- :arrow_down: `:arrow_down:`
+- :arrow_forward: `:arrow_forward:`
+- :arrow_left: `:arrow_left:`
+- :capital_abcd: `:capital_abcd:`
+- :abcd: `:abcd:`
+- :abc: `:abc:`
+- :arrow_lower_left: `:arrow_lower_left:`
+- :arrow_lower_right: `:arrow_lower_right:`
+- :arrow_right: `:arrow_right:`
+- :arrow_up: `:arrow_up:`
+- :arrow_upper_left: `:arrow_upper_left:`
+- :arrow_upper_right: `:arrow_upper_right:`
+- :arrow_double_down: `:arrow_double_down:`
+- :arrow_double_up: `:arrow_double_up:`
+- :arrow_down_small: `:arrow_down_small:`
+- :arrow_heading_down: `:arrow_heading_down:`
+- :arrow_heading_up: `:arrow_heading_up:`
+- :leftwards_arrow_with_hook: `:leftwards_arrow_with_hook:`
+- :arrow_right_hook: `:arrow_right_hook:`
+- :left_right_arrow: `:left_right_arrow:`
+- :arrow_up_down: `:arrow_up_down:`
+- :arrow_up_small: `:arrow_up_small:`
+- :arrows_clockwise: `:arrows_clockwise:`
+- :arrows_counterclockwise: `:arrows_counterclockwise:`
+- :rewind: `:rewind:`
+- :fast_forward: `:fast_forward:`
+- :information_source: `:information_source:`
+- :ok: `:ok:`
+- :twisted_rightwards_arrows: `:twisted_rightwards_arrows:`
+- :repeat: `:repeat:`
+- :repeat_one: `:repeat_one:`
+- :new: `:new:`
+- :top: `:top:`
+- :up: `:up:`
+- :cool: `:cool:`
+- :free: `:free:`
+- :ng: `:ng:`
+- :cinema: `:cinema:`
+- :koko: `:koko:`
+- :signal_strength: `:signal_strength:`
+- :sa: `:sa:`
+- :restroom: `:restroom:`
+- :mens: `:mens:`
+- :womens: `:womens:`
+- :baby_symbol: `:baby_symbol:`
+- :no_smoking: `:no_smoking:`
+- :parking: `:parking:`
+- :wheelchair: `:wheelchair:`
+- :metro: `:metro:`
+- :baggage_claim: `:baggage_claim:`
+- :accept: `:accept:`
+- :wc: `:wc:`
+- :potable_water: `:potable_water:`
+- :put_litter_in_its_place: `:put_litter_in_its_place:`
+- :secret: `:secret:`
+- :congratulations: `:congratulations:`
+- :m: `:m:`
+- :passport_control: `:passport_control:`
+- :left_luggage: `:left_luggage:`
+- :customs: `:customs:`
+- :ideograph_advantage: `:ideograph_advantage:`
+- :cl: `:cl:`
+- :sos: `:sos:`
+- :id: `:id:`
+- :no_entry_sign: `:no_entry_sign:`
+- :underage: `:underage:`
+- :no_mobile_phones: `:no_mobile_phones:`
+- :do_not_litter: `:do_not_litter:`
+- :non-potable_water: `:non-potable_water:`
+- :no_bicycles: `:no_bicycles:`
+- :no_pedestrians: `:no_pedestrians:`
+- :children_crossing: `:children_crossing:`
+- :no_entry: `:no_entry:`
+- :eight_spoked_asterisk: `:eight_spoked_asterisk:`
+- :sparkle: `:sparkle:`
+- :eight_pointed_black_star: `:eight_pointed_black_star:`
+- :heart_decoration: `:heart_decoration:`
+- :vs: `:vs:`
+- :vibration_mode: `:vibration_mode:`
+- :mobile_phone_off: `:mobile_phone_off:`
+- :chart: `:chart:`
+- :currency_exchange: `:currency_exchange:`
+- :aries: `:aries:`
+- :taurus: `:taurus:`
+- :gemini: `:gemini:`
+- :cancer: `:cancer:`
+- :leo: `:leo:`
+- :virgo: `:virgo:`
+- :libra: `:libra:`
+- :scorpius: `:scorpius:`
+- :sagittarius: `:sagittarius:`
+- :capricorn: `:capricorn:`
+- :aquarius: `:aquarius:`
+- :pisces: `:pisces:`
+- :ophiuchus: `:ophiuchus:`
+- :six_pointed_star: `:six_pointed_star:`
+- :negative_squared_cross_mark: `:negative_squared_cross_mark:`
+- :a: `:a:`
+- :b: `:b:`
+- :ab: `:ab:`
+- :o2: `:o2:`
+- :diamond_shape_with_a_dot_inside: `:diamond_shape_with_a_dot_inside:`
+- :recycle: `:recycle:`
+- :end: `:end:`
+- :back: `:back:`
+- :on: `:on:`
+- :soon: `:soon:`
+- :clock1: `:clock1:`
+- :clock130: `:clock130:`
+- :clock10: `:clock10:`
+- :clock1030: `:clock1030:`
+- :clock11: `:clock11:`
+- :clock1130: `:clock1130:`
+- :clock12: `:clock12:`
+- :clock1230: `:clock1230:`
+- :clock2: `:clock2:`
+- :clock230: `:clock230:`
+- :clock3: `:clock3:`
+- :clock330: `:clock330:`
+- :clock4: `:clock4:`
+- :clock430: `:clock430:`
+- :clock5: `:clock5:`
+- :clock530: `:clock530:`
+- :clock6: `:clock6:`
+- :clock630: `:clock630:`
+- :clock7: `:clock7:`
+- :clock730: `:clock730:`
+- :clock8: `:clock8:`
+- :clock830: `:clock830:`
+- :clock9: `:clock9:`
+- :clock930: `:clock930:`
+- :heavy_dollar_sign: `:heavy_dollar_sign:`
+- :copyright: `:copyright:`
+- :registered: `:registered:`
+- :tm: `:tm:`
+- :x: `:x:`
+- :heavy_exclamation_mark: `:heavy_exclamation_mark:`
+- :bangbang: `:bangbang:`
+- :interrobang: `:interrobang:`
+- :o: `:o:`
+- :heavy_multiplication_x: `:heavy_multiplication_x:`
+- :heavy_plus_sign: `:heavy_plus_sign:`
+- :heavy_minus_sign: `:heavy_minus_sign:`
+- :heavy_division_sign: `:heavy_division_sign:`
+- :white_flower: `:white_flower:`
+- :100: `:100:`
+- :heavy_check_mark: `:heavy_check_mark:`
+- :ballot_box_with_check: `:ballot_box_with_check:`
+- :radio_button: `:radio_button:`
+- :link: `:link:`
+- :curly_loop: `:curly_loop:`
+- :wavy_dash: `:wavy_dash:`
+- :part_alternation_mark: `:part_alternation_mark:`
+- :trident: `:trident:`
+- :black_small_square: `:black_small_square:`
+- :white_small_square: `:white_small_square:`
+- :black_medium_small_square: `:black_medium_small_square:`
+- :white_medium_small_square: `:white_medium_small_square:`
+- :black_medium_square: `:black_medium_square:`
+- :white_medium_square: `:white_medium_square:`
+- :black_large_square: `:black_large_square:`
+- :white_large_square: `:white_large_square:`
+- :white_check_mark: `:white_check_mark:`
+- :black_square_button: `:black_square_button:`
+- :white_square_button: `:white_square_button:`
+- :black_circle: `:black_circle:`
+- :white_circle: `:white_circle:`
+- :red_circle: `:red_circle:`
+- :large_blue_circle: `:large_blue_circle:`
+- :large_blue_diamond: `:large_blue_diamond:`
+- :large_orange_diamond: `:large_orange_diamond:`
+- :small_blue_diamond: `:small_blue_diamond:`
+- :small_orange_diamond: `:small_orange_diamond:`
+- :small_red_triangle: `:small_red_triangle:`
+- :small_red_triangle_down: `:small_red_triangle_down:`
diff --git a/src/slides.md b/src/slides.md
deleted file mode 100644
index cb893923..00000000
--- a/src/slides.md
+++ /dev/null
@@ -1,429 +0,0 @@
----
-title: 幻灯片页
-icon: person-chalkboard
-layout: Slide
----
-
-
-
-@slidestart
-
-
-
-## 幻灯片演示
-
-
-
-一个简单的幻灯片演示与各种小贴士。
-
-
-
-> 作者 Mr.Hope. 请滚动鼠标滚轮进入下一页
-
----
-
-## 标注幻灯片
-
-
-
-[👇](#/1/1)
-
---
-
-## 标注幻灯片
-
-
-
-使用 `---` 标注水平幻灯片
-
-
-
-在水平幻灯片中使用 `--` 分割垂直幻灯片
-
-
-
-使用 `` 在幻灯片上添加属性
-
-
-
-使用 `` 在前一个 HTML 元素上添加属性
-
-
-
----
-
-
-
-## Markdown
-
-
-
-你可以在幻灯片中使用 Markdown 语法的各种标记.
-
-
-
---
-
-
-
-## Markdown
-
-你可以在幻灯片中使用 Markdown 语法的各种标记.
-
-### 这是一个 H3
-
-标题默认会自动转换为大写。
-
-这是一个有着 **粗体**, _斜体_, ~~删除线~~ 文字并包含 [一个链接](https://mister-hope.com) 的段落,并且它会自动换行。所以你无需担心它的长度。
-
---
-
-
-
-## Markdown
-
-你可以在幻灯片中使用 Markdown 语法的各种标记.
-
-列表默认为 `inline-block`
-
-- 项目
-- 项目
-- 项目
-
-1. 项目 1
-1. 项目 2
-1. 项目 3
-
---
-
-
-
-## Markdown
-
-你可以在幻灯片中使用 Markdown 语法的各种标记.
-
-在你启用 `highlight` 插件后,代码块会自动高亮。
-
-```js
-const a = 1;
-```
-
---
-
-
-
-## Markdown
-
-你可以在幻灯片中使用 Markdown 语法的各种标记.
-
-在你启用 `math` 插件后,你也可以使用 TEX 格式使用数学公式。
-
-$$
-J(\theta_0,\theta_1) = \sum_{i=0}
-$$
-
---
-
-
-
-## Markdown
-
-你可以在幻灯片中使用 Markdown 语法的各种标记.
-
-⚠**请注意**: 表格和分割线,以及所有不在 Markdown 标准语法中的内容均不受支持。
-
----
-
-
-
-## 布局
-
-
-
---
-
-
-
-## 布局
-
-
-
-👆 `r-fit-text` class 会让文字在不超出幻灯片范围的情况下尽可能大。
-
---
-
-
-
-## 布局
-
-![Logo](/logo.svg)
-
-
-
-👆 `r-stretch` class 帮助你控制注入图片或视频的大小,使它们填充满幻灯片垂直方向上的剩余空间。
-
---
-
-
-
-## 布局
-
-### 背景
-
-你可以通过向特定幻灯片添加 `data-background` 属性自定义幻灯片背景.
-
----
-
-
-
-## 动画片段
-
-
-
---
-
-
-
-## 动画片段
-
-
-
-动画片段用于高亮或显隐幻灯片中的元素。
-
-你需要在元素上添加 `fragment` 和动画 class。
-
---
-
-
-
-## 动画片段
-
-### 动画 class
-
-- `fade-in`
-
-
-- `fade-out`
-
-
-- `fade-up`
-
-
-
-
-- `fade-down`
-
-
-- `fade-left`
-
-
-- `fade-right`
-
-
-
-
-- `fade-in-then-out`
-
-
-- `fade-in-then-semi-out`
-
-
---
-
-
-
-## 动画片段
-
-### 动画 class
-
-- `grow`
-
-
-- `shrink`
-
-
-- `strike`
-
-
-
-
-- `highlight-red`
-
-
-- `highlight-green`
-
-
-- `highlight-blue`
-
-
-
-
-- `highlight-current-red`
-
-
-- `highlight-current-green`
-
-
-- `highlight-current-blue`
-
-
---
-
-
-
-## 动画片段
-
-### 多个动画片段
-
-你可以按照顺序包裹一个 HTML 元素使其拥有多个动画片段
-
-
-
-
- 渐入 > 变红 > 渐出
-
-
-
-
---
-
-
-
-## 动画片段
-
-### 顺序
-
-你可以使用 `data-fragment-index` 属性改变元素的动画顺序。
-
-不同元素可以有相同的动画顺序。
-
-- 最后显示
-
-
-- 第二个显示
-
-
-
-
-- 第一个显示
-
-
-- 第二个显示
-
-
----
-
-
-
-## 渐变
-
-
-
---
-
-
-
-## 渐变
-
-
-
-Transition 可以通过配置中的 `transition` 选项全局设置,也可以通过在特定幻灯片添加 `data-transition` 属性局部设置.
-
-可能的值:
-
-- none
-- fade
-- slide
-
-
-
-- convex
-- concave
-- zoom
-
---
-
-
-
-## 渐变
-
-
-
-### 过渡动画
-
-你可以在相邻的幻灯片上添加 `data-auto-animate` 使相同的 HTML 元素产生过渡动画效果。
-
----
-
-
-
-## 功能
-
-
-
---
-
-
-
-## 功能
-
-
-
-### 代码
-
-通过启用 `highlight` 插件,你可以对代码块进行高亮。
-
-你可以使用 `[a-b|c-d]` 语法来分布高亮特定行。
-
-```js [1-2|3|4]
-let a = 1;
-let b = 2;
-let c = (x) => 1 + 2 + x;
-c(3);
-```
-
---
-
-
-
-## 功能
-
-
-
-### 预览模式
-
-按下 `Esc` 或 `O` 即可在幻灯片获得焦点时进入预览模式。
-
---
-
-
-
-## 功能
-
-
-
-### 全屏模式
-
-按下 `F` 或 `F11` 即可在幻灯片获得焦点时进入全屏模式。
-
---
-
-
-
-## 功能
-
-
-
-### 缩放
-
-按下 `alt` (Linux 上使用 `ctrl`) 的同时点击幻灯片的任何元素,即可以向此元素进行放大。
-
-再次点击即可缩小。
-
----
-
-
-
-## 结束
-
-@slideend
diff --git a/src/tools/README.md b/src/tools/README.md
new file mode 100644
index 00000000..95212cd4
--- /dev/null
+++ b/src/tools/README.md
@@ -0,0 +1,26 @@
+---
+title: 开发工具
+icon: screwdriver-wrench
+article: false
+features:
+ - title: 技术聚焦
+ details: 以 UE4/5 C++ 为主线,专注于解决与 UE4/5 相关的技术问题。
+ - title: 踩坑记录
+ details: 包括多种技能的踩坑经验,涵盖 C++、Lua、Python、Js 等...
+ - title: 丰富表达
+ details: 图文代码结合,直观地展示解决方案,同时享受问题解决的过程。
+
+
+---
+
+## 版本控制工具
+
+* [Git](git/README.md)
+
+## 代码托管平台
+
+* [Github](github/README.md)
+
+## 代码创作工具(IDE)
+
+* [vscode](vscode/README.md)
diff --git a/src/tools/git/assets/logo@2x.png b/src/tools/git/assets/logo@2x.png
new file mode 100644
index 00000000..f4518b10
Binary files /dev/null and b/src/tools/git/assets/logo@2x.png differ
diff --git a/src/tools/github/assets/codeforgithub.png b/src/tools/github/assets/codeforgithub.png
new file mode 100644
index 00000000..a0420278
Binary files /dev/null and b/src/tools/github/assets/codeforgithub.png differ
diff --git a/src/tools/github/assets/gitcode.png b/src/tools/github/assets/gitcode.png
new file mode 100644
index 00000000..ae875e61
Binary files /dev/null and b/src/tools/github/assets/gitcode.png differ
diff --git a/src/tools/github/assets/github-dark.svg b/src/tools/github/assets/github-dark.svg
new file mode 100644
index 00000000..37fa923d
--- /dev/null
+++ b/src/tools/github/assets/github-dark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/tools/github/assets/github-light.svg b/src/tools/github/assets/github-light.svg
new file mode 100644
index 00000000..d5e64918
--- /dev/null
+++ b/src/tools/github/assets/github-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/tools/github/assets/pushtest.png b/src/tools/github/assets/pushtest.png
new file mode 100644
index 00000000..064d1b37
Binary files /dev/null and b/src/tools/github/assets/pushtest.png differ
diff --git a/src/tools/github/assets/ssh.png b/src/tools/github/assets/ssh.png
new file mode 100644
index 00000000..95bf2bbf
Binary files /dev/null and b/src/tools/github/assets/ssh.png differ
diff --git a/src/tools/github/host.md b/src/tools/github/host.md
new file mode 100644
index 00000000..276c1a13
--- /dev/null
+++ b/src/tools/github/host.md
@@ -0,0 +1,19 @@
+---
+title: Github- ssh key引发的push failed
+dir:
+ sidebar: 1
+tag:
+ - 踩坑记录
+ - Rider
+---
+
+## 问题详情
+本着能用一个IDE解决问题的想法,尝试用*Rider*开发前端,结果一开始Push就出问题了。
+1. 远程空仓库已经建立
+![pushtest.png](assets%2Fpushtest.png)
+2. 无法推送项目
+git@github.com: Permission denied (publickey). fatal: Could not read from remote...
+ ![保存信息](./assets/ssh.png)
+## 参考资料
+
+1. [CSDN](https://blog.csdn.net/W_317/article/details/106518894)
diff --git a/src/tools/vscode/assets/Visual_Studio_Code_1.35_icon.svg.png b/src/tools/vscode/assets/Visual_Studio_Code_1.35_icon.svg.png
new file mode 100644
index 00000000..77ef1ef5
Binary files /dev/null and b/src/tools/vscode/assets/Visual_Studio_Code_1.35_icon.svg.png differ
diff --git a/src/tools/vscode/assets/vscode-install-13810796.png b/src/tools/vscode/assets/vscode-install-13810796.png
new file mode 100644
index 00000000..c7b4d91f
Binary files /dev/null and b/src/tools/vscode/assets/vscode-install-13810796.png differ