From 116ec8ada9592d10aab878e11ca64d4d0d078176 Mon Sep 17 00:00:00 2001
From: Parsifa1 <li.aldric@gmail.com>
Date: Thu, 19 Sep 2024 03:41:28 +0800
Subject: [PATCH] add: new posts

---
 .vscode/astro-paper.code-snippets             |  34 ----
 .vscode/extensions.json                       |   4 -
 .vscode/launch.json                           |  11 --
 astro.config.ts                               |  19 +--
 package.json                                  |   2 +
 pnpm-lock.yaml                                |  97 +++++++++++
 src/content/blog/a_dp_question.md             |   9 +-
 src/content/blog/angle_beats.md               | 154 ++++++++++++++++++
 src/content/blog/assets/images/problemA.png   | Bin 0 -> 27090 bytes
 .../blog/neovim\346\225\231\347\250\213.md"   |  31 +---
 src/content/blog/test.md                      |   7 +-
 src/layouts/Layout.astro                      |   2 +-
 src/styles/base.css                           |   3 +
 13 files changed, 282 insertions(+), 91 deletions(-)
 delete mode 100644 .vscode/astro-paper.code-snippets
 delete mode 100644 .vscode/extensions.json
 delete mode 100644 .vscode/launch.json
 create mode 100644 src/content/blog/angle_beats.md
 create mode 100644 src/content/blog/assets/images/problemA.png

diff --git a/.vscode/astro-paper.code-snippets b/.vscode/astro-paper.code-snippets
deleted file mode 100644
index 869c4cb..0000000
--- a/.vscode/astro-paper.code-snippets
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-  "Frontmatter": {
-    "scope": "markdown",
-    "prefix": "frontmatter",
-    "body": [
-      "---",
-      "author: $1",
-      "pubDatetime: $CURRENT_YEAR-$CURRENT_MONTH-${CURRENT_DATE}T$CURRENT_HOUR:$CURRENT_MINUTE:$CURRENT_SECOND.000$CURRENT_TIMEZONE_OFFSET",
-      "modDatetime: $3",
-      "title: $4",
-      "featured: ${5|false,true|}",
-      "draft: ${6|true,false|}",
-      "tags:",
-      "  - $7",
-      "description: $8",
-      "---",
-    ],
-    "description": "Adds the frontmatter block for the AstroPaper Blog post"
-  },
-  "Blog Template": {
-    "scope": "markdown",
-    "prefix": "template",
-    "body": [
-      "${1:frontmatter}",
-      "",
-      "${2: Introductory Sentence}",
-      "",
-      "## Table of contents",
-      "",
-      "## ${3: heading 1}",
-    ],
-    "description": "Adds the template for the AstroPaper Blog post. You will need to trigger the snippet modal on the 'frontmatter' line to insert the other snipper."
-  }
-}
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
deleted file mode 100644
index 22a1505..0000000
--- a/.vscode/extensions.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "recommendations": ["astro-build.astro-vscode"],
-  "unwantedRecommendations": []
-}
diff --git a/.vscode/launch.json b/.vscode/launch.json
deleted file mode 100644
index d642209..0000000
--- a/.vscode/launch.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "version": "0.2.0",
-  "configurations": [
-    {
-      "command": "./node_modules/.bin/astro dev",
-      "name": "Development server",
-      "request": "launch",
-      "type": "node-terminal"
-    }
-  ]
-}
diff --git a/astro.config.ts b/astro.config.ts
index 05a15b6..9de3952 100644
--- a/astro.config.ts
+++ b/astro.config.ts
@@ -1,16 +1,16 @@
 import { defineConfig } from "astro/config";
 import tailwind from "@astrojs/tailwind";
 import react from "@astrojs/react";
-import remarkToc from "remark-toc";
-import remarkCollapse from "remark-collapse";
+import * as remarkToc from "remark-toc";
+import remarkMath from "remark-math";
+import rehypeKatex from "rehype-katex";
+// import remarkCollapse from "remark-collapse";
 import { typst } from "astro-typst";
 import mdx from "@astrojs/mdx";
 import sitemap from "@astrojs/sitemap";
 import { SITE } from "./src/config";
-
 import icon from "astro-icon";
 
-// https://astro.build/config
 export default defineConfig({
   site: SITE.website,
   integrations: [
@@ -27,14 +27,11 @@ export default defineConfig({
   ],
   markdown: {
     remarkPlugins: [
-      remarkToc,
-      [
-        remarkCollapse,
-        {
-          test: "Table of contents",
-        },
-      ],
+      remarkMath,
+      [remarkToc as unknown as string, { heading: "目录" }],
     ],
+
+    rehypePlugins: [rehypeKatex],
     shikiConfig: {
       theme: "one-dark-pro",
       wrap: true,
diff --git a/package.json b/package.json
index 1b71a1e..7c8029b 100644
--- a/package.json
+++ b/package.json
@@ -33,7 +33,9 @@
     "github-slugger": "^2.0.0",
     "react": "^18.3.1",
     "react-dom": "^18.3.1",
+    "rehype-katex": "^7.0.1",
     "remark-collapse": "^0.1.2",
+    "remark-math": "^6.0.0",
     "remark-toc": "^9.0.0",
     "satori": "^0.10.11",
     "tailwindcss": "^3.4.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 17ac757..fb53671 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -59,9 +59,15 @@ importers:
       react-dom:
         specifier: ^18.3.1
         version: 18.3.1(react@18.3.1)
+      rehype-katex:
+        specifier: ^7.0.1
+        version: 7.0.1
       remark-collapse:
         specifier: ^0.1.2
         version: 0.1.2
+      remark-math:
+        specifier: ^6.0.0
+        version: 6.0.0
       remark-toc:
         specifier: ^9.0.0
         version: 9.0.0
@@ -1049,6 +1055,9 @@ packages:
   '@types/hast@3.0.4':
     resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
 
+  '@types/katex@0.16.7':
+    resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
+
   '@types/mdast@4.0.3':
     resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==}
 
@@ -1528,6 +1537,10 @@ packages:
     resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
     engines: {node: '>= 10'}
 
+  commander@8.3.0:
+    resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
+    engines: {node: '>= 12'}
+
   commitizen@4.3.0:
     resolution: {integrity: sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==}
     engines: {node: '>= 12'}
@@ -2105,6 +2118,12 @@ packages:
     resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
     engines: {node: '>= 0.4'}
 
+  hast-util-from-dom@5.0.0:
+    resolution: {integrity: sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==}
+
+  hast-util-from-html-isomorphic@2.0.0:
+    resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==}
+
   hast-util-from-html@2.0.1:
     resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==}
 
@@ -2415,6 +2434,10 @@ packages:
   jsonfile@6.1.0:
     resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
 
+  katex@0.16.11:
+    resolution: {integrity: sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==}
+    hasBin: true
+
   keyv@4.5.4:
     resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
 
@@ -2638,6 +2661,9 @@ packages:
   mdast-util-heading-range@2.1.5:
     resolution: {integrity: sha512-jXbFD0C+MfRkwsaze+btzG9CmVrxnc5kpcJLtx3SvSlPWnNdGMlDRHKDB9/TIPEq9nRHnkixppT8yvaUJ5agJg==}
 
+  mdast-util-math@3.0.0:
+    resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==}
+
   mdast-util-mdx-expression@2.0.0:
     resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==}
 
@@ -2711,6 +2737,9 @@ packages:
   micromark-extension-gfm@3.0.0:
     resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==}
 
+  micromark-extension-math@3.1.0:
+    resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==}
+
   micromark-extension-mdx-expression@3.0.0:
     resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==}
 
@@ -3270,6 +3299,9 @@ packages:
     resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
     engines: {node: '>=8.10.0'}
 
+  rehype-katex@7.0.1:
+    resolution: {integrity: sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==}
+
   rehype-parse@9.0.0:
     resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==}
 
@@ -3288,6 +3320,9 @@ packages:
   remark-gfm@4.0.0:
     resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==}
 
+  remark-math@6.0.0:
+    resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==}
+
   remark-mdx@3.0.1:
     resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==}
 
@@ -5004,6 +5039,8 @@ snapshots:
     dependencies:
       '@types/unist': 3.0.2
 
+  '@types/katex@0.16.7': {}
+
   '@types/mdast@4.0.3':
     dependencies:
       '@types/unist': 3.0.2
@@ -5635,6 +5672,8 @@ snapshots:
 
   commander@7.2.0: {}
 
+  commander@8.3.0: {}
+
   commitizen@4.3.0(@types/node@20.11.7)(typescript@5.3.3):
     dependencies:
       cachedir: 2.3.0
@@ -6291,6 +6330,19 @@ snapshots:
     dependencies:
       function-bind: 1.1.2
 
+  hast-util-from-dom@5.0.0:
+    dependencies:
+      '@types/hast': 3.0.4
+      hastscript: 8.0.0
+      web-namespaces: 2.0.1
+
+  hast-util-from-html-isomorphic@2.0.0:
+    dependencies:
+      '@types/hast': 3.0.4
+      hast-util-from-dom: 5.0.0
+      hast-util-from-html: 2.0.1
+      unist-util-remove-position: 5.0.0
+
   hast-util-from-html@2.0.1:
     dependencies:
       '@types/hast': 3.0.3
@@ -6673,6 +6725,10 @@ snapshots:
     optionalDependencies:
       graceful-fs: 4.2.11
 
+  katex@0.16.11:
+    dependencies:
+      commander: 8.3.0
+
   keyv@4.5.4:
     dependencies:
       json-buffer: 3.0.1
@@ -6958,6 +7014,18 @@ snapshots:
     dependencies:
       mdast-util-to-string: 1.1.0
 
+  mdast-util-math@3.0.0:
+    dependencies:
+      '@types/hast': 3.0.4
+      '@types/mdast': 4.0.4
+      devlop: 1.1.0
+      longest-streak: 3.1.0
+      mdast-util-from-markdown: 2.0.1
+      mdast-util-to-markdown: 2.1.0
+      unist-util-remove-position: 5.0.0
+    transitivePeerDependencies:
+      - supports-color
+
   mdast-util-mdx-expression@2.0.0:
     dependencies:
       '@types/estree-jsx': 1.0.5
@@ -7150,6 +7218,16 @@ snapshots:
       micromark-util-combine-extensions: 2.0.0
       micromark-util-types: 2.0.0
 
+  micromark-extension-math@3.1.0:
+    dependencies:
+      '@types/katex': 0.16.7
+      devlop: 1.1.0
+      katex: 0.16.11
+      micromark-factory-space: 2.0.0
+      micromark-util-character: 2.1.0
+      micromark-util-symbol: 2.0.0
+      micromark-util-types: 2.0.0
+
   micromark-extension-mdx-expression@3.0.0:
     dependencies:
       '@types/estree': 1.0.5
@@ -7760,6 +7838,16 @@ snapshots:
     dependencies:
       picomatch: 2.3.1
 
+  rehype-katex@7.0.1:
+    dependencies:
+      '@types/hast': 3.0.4
+      '@types/katex': 0.16.7
+      hast-util-from-html-isomorphic: 2.0.0
+      hast-util-to-text: 4.0.2
+      katex: 0.16.11
+      unist-util-visit-parents: 6.0.1
+      vfile: 6.0.2
+
   rehype-parse@9.0.0:
     dependencies:
       '@types/hast': 3.0.3
@@ -7801,6 +7889,15 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
+  remark-math@6.0.0:
+    dependencies:
+      '@types/mdast': 4.0.4
+      mdast-util-math: 3.0.0
+      micromark-extension-math: 3.1.0
+      unified: 11.0.5
+    transitivePeerDependencies:
+      - supports-color
+
   remark-mdx@3.0.1:
     dependencies:
       mdast-util-mdx: 3.0.0
diff --git a/src/content/blog/a_dp_question.md b/src/content/blog/a_dp_question.md
index bee5ec0..9d64513 100644
--- a/src/content/blog/a_dp_question.md
+++ b/src/content/blog/a_dp_question.md
@@ -1,10 +1,11 @@
 ---
-title: "一道简单dp问题一些对dp(动态规划)的思考"
+title: 一道简单dp问题一些对dp(动态规划)的思考
 pubDatetime: 2023-12-31T21:00:00Z
-description: "我一直不擅长dp😭"
-author: "Parsifal"
+description: 我一直不擅长dp😭
+author: Parsifal
 draft: true
-tags: ["computer"]
+tags:
+  - computer
 ---
 
 ## 未完待续
diff --git a/src/content/blog/angle_beats.md b/src/content/blog/angle_beats.md
new file mode 100644
index 0000000..fd77777
--- /dev/null
+++ b/src/content/blog/angle_beats.md
@@ -0,0 +1,154 @@
+---
+title: CCPC2019 秦皇岛站 A题 Angle Beats 题解
+tags:
+  - math
+author: Parsifal
+description: 一道有趣的计算几何
+modDatetime: 2024-09-19T03:41:24Z
+pubDatetime: 2024-09-19T01:56:21Z
+---
+
+# 目录
+
+# 大意
+
+> 给定2维平面上的 $n$ 个点,然后进行 $q$ 次询问,每次询问时提供一个点,询问该平面上有多少个包含该点 (指询问时提供的点) 的直角三角形。
+
+# 输入
+
+$2 ≤ n ≤ 2000$, $1 ≤ q ≤ 2000$。
+
+# 分析
+
+从 $n$ 最大 2000,从而排除 $O(n^3)$ 的纯暴力做法,考虑 $O(n^2logn)$ 时间复杂度。
+
+考虑极角排序:
+
+![](./assets/images/problemA.png)
+
+```cpp
+    friend Point in(Point a) {
+        auto [x, y] = a;
+        if (x < 0 || (x == 0 && y < 0))
+            return Point{-x, -y};
+        else
+            return Point{x, y};
+    }
+    friend bool operator<(Point a, Point b) {
+        auto aa = in(a), bb = in(b);
+        return aa.x * bb.y < aa.y * bb.x;
+    }
+```
+
+可以直接使用 `std::map` 维护,并将 $x < 0$ 的部分都映射到平行的另一半部分,从而方便直接判断平行,并且对共线的向量直接判断相等。
+
+## 第一部分
+
+先假设每次询问的点 $a$ 一定是对应直角顶点。从而预处理所有点 $a$ 到点集每个点的向量,全部加入 `std::map`,然后对于每个 `map` 中的点,构造对应的垂直向量`tmp`,使用 `map.count` 计算数量,时间复杂度 $O(nqlogn)$。
+
+## 第二部分
+
+第二部分保证每次询问的点 $a$ 一定不是对应直角顶点。我们考虑离线做法。
+对于给定的点集,其中的每个点 $q$ 作为直角顶点,和其他的点均连出一条向量,将这些向量加入 `map` 并进行极角扫描。
+然后再处理每次的询问,对于每次询问的点 $a$,都和 $q$ 构造对应垂直向量并技术,此处均与第一部分一致。
+
+```cpp
+ // 询问边不为直角顶点
+    for (auto x : p) {
+        mp.clear();
+        for (auto y : p) {
+            if (x != y) {
+                mp[x - y]++;
+            }
+        }
+        for (int i = 0; i < q; i++) {
+            auto st = x - a[i];
+            auto temp = Point{-st.y, st.x};
+            if (mp.count(temp)) ans[i] += mp[temp];
+        }
+    }
+
+```
+
+## 完整代码
+
+```cpp
+#include <bits/stdc++.h>
+using i64 = long long;
+const double eps = 1e-9;
+constexpr i64 INF = 1e18;
+struct Point {
+    i64 x, y;
+    Point(i64 x = 0, i64 y = 0) : x(x), y(y) {}
+    // Point(double x = 0, double y = 0) : x(x), y(y) {}
+    friend Point operator+(Point A, Point B) { return Point(A.x + B.x, A.y + B.y); }
+    friend Point operator-(Point A, Point B) { return Point(A.x - B.x, A.y - B.y); }
+    friend Point operator*(Point A, double p) { return Point(A.x * p, A.y * p); }
+    friend Point operator/(Point A, double p) { return Point(A.x / p, A.y / p); }
+    friend Point in(Point a) {
+        auto [x, y] = a;
+        if (x < 0 || (x == 0 && y < 0))
+            return Point{-x, -y};
+        else
+            return Point{x, y};
+    }
+    friend bool operator<(Point a, Point b) {
+        auto aa = in(a), bb = in(b);
+        return aa.x * bb.y < aa.y * bb.x;
+    }
+    friend i64 dot(const Point& x) { return x.x * x.x + x.y * x.y; }
+    friend i64 dot(Point A, Point B) { return A.x * B.x + A.y * B.y; }
+    friend double det(Point A, Point B) { return A.x * B.y - B.x * A.y; }
+    friend bool operator==(const Point& a, const Point& b) {
+        auto dcmp = [](double x) {
+            if (fabs(x) < eps)
+                return 0;
+            else
+                return x < 0 ? -1 : 1;
+        };
+        return !dcmp(a.x - b.x) && !dcmp(a.y - b.y);
+    }
+};
+
+inline auto read() {
+    std::cin.tie(nullptr)->sync_with_stdio(false);
+    return [](auto x) { return std::cin >> x, x; }(0ll);
+}
+
+void solve() {
+    int n = read(), q = read();
+    std::vector<Point> p(n);
+    std::map<Point, int> mp;
+    std::vector<Point> a(q);
+    std::vector<int> ans(q);
+    for (int i = 0; i < n; i++) p[i] = {read(), read()};
+    for (int i = 0; i < q; i++) {
+        mp.clear();
+        a[i] = {read(), read()};
+        // 询问边为直角点
+        for (auto x : p) mp[x - a[i]]++;
+
+        for (auto [p, y] : mp) {
+            auto temp = Point{-p.y, p.x};
+            if (mp.count(temp)) ans[i] += y * mp[temp];
+        }
+        ans[i] /= 2;
+    }
+    // 询问边不为直角点
+    for (auto x : p) {
+        mp.clear();
+        for (auto y : p) {
+            if (x != y) {
+                mp[x - y]++;
+            }
+        }
+        for (int i = 0; i < q; i++) {
+            auto st = x - a[i];
+            auto temp = Point{-st.y, st.x};
+            if (mp.count(temp)) ans[i] += mp[temp];
+        }
+    }
+    for (auto x : ans) std::cout << x << '\n';
+}
+signed main() { solve(); }
+```
diff --git a/src/content/blog/assets/images/problemA.png b/src/content/blog/assets/images/problemA.png
new file mode 100644
index 0000000000000000000000000000000000000000..638042ee11c87ec2783499aa3cd8128bccdd6f5d
GIT binary patch
literal 27090
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
M1M}@AB<hj>0pl2(n*aa+

literal 0
HcmV?d00001

diff --git "a/src/content/blog/neovim\346\225\231\347\250\213.md" "b/src/content/blog/neovim\346\225\231\347\250\213.md"
index 8490c13..3d40eb9 100644
--- "a/src/content/blog/neovim\346\225\231\347\250\213.md"
+++ "b/src/content/blog/neovim\346\225\231\347\250\213.md"
@@ -1,30 +1,15 @@
 ---
-title: "Neovim浅谈与安利"
+title: Neovim浅谈与安利
 pubDatetime: 2023-12-21T08:00:00Z
-modDatetime: 2024-03-02T01:01:00Z
-description: "你应该使用这个世界上最快的编辑器(确信"
-author: "Parsifal"
-tags: ["computer", "neovim"]
+modDatetime: 2024-09-19T03:41:30Z
+description: 你应该使用这个世界上最快的编辑器(确信
+author: Parsifal
+tags:
+  - computer
+  - neovim
 ---
 
-<details open>
-<summary><span style="font-size: 1.5em; font-weight: bold;">目录</span></summary>
-
-- [Neovim的前世今生](#neovim的前世今生)
-- [Neovim的简单配置](#neovim的简单配置)
-  - [关于Lua](#关于lua)
-  - [配置的文件结构](#配置的文件结构)
-  - [写给曾经的 Vim用户](#写给曾经的-vim用户)
-  - [安装Neovim](#安装neovim)
-  - [简单按键配置](#简单按键配置)
-  - [选择插件管理器](#选择插件管理器)
-  - [主题配置](#主题配置)
-  - [Tree-sitter 设置](#tree-sitter-设置)
-  - [LSP 设置](#lsp-设置)
-  - [CMP 设置](#cmp-设置)
-- [参考文章](#参考文章)
-
-</details>
+# 目录
 
 # Neovim 的前世今生
 
diff --git a/src/content/blog/test.md b/src/content/blog/test.md
index 7773b9d..bfc041e 100644
--- a/src/content/blog/test.md
+++ b/src/content/blog/test.md
@@ -1,8 +1,9 @@
 ---
-title: "Website Testing"
+title: Website Testing
 pubDatetime: 2023-12-21T08:10:00Z
-description: "从hexo迁移到Astro框架"
-author: "Parsifal"
+description: 从hexo迁移到Astro框架
+author: Parsifal
+modDatetime: 2024-09-19T03:11:05Z
 ---
 
 # 测试
diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro
index bd2ec35..1cce06d 100644
--- a/src/layouts/Layout.astro
+++ b/src/layouts/Layout.astro
@@ -1,6 +1,7 @@
 ---
 import { LOCALE, SITE } from "@config";
 import "@styles/base.css";
+import "/node_modules/katex/dist/katex.min.css";
 import { ViewTransitions } from "astro:transitions";
 
 const googleSiteVerification = import.meta.env.PUBLIC_GOOGLE_SITE_VERIFICATION;
@@ -57,7 +58,6 @@ const socialImageURL = new URL(
     <meta property="og:description" content={description} />
     <meta property="og:url" content={canonicalURL} />
     <meta property="og:image" content={socialImageURL} />
-
     <!-- Article Published/Modified time -->
     {
       pubDatetime && (
diff --git a/src/styles/base.css b/src/styles/base.css
index 9a8c620..60d463d 100644
--- a/src/styles/base.css
+++ b/src/styles/base.css
@@ -85,6 +85,9 @@
   .prose h2#table-of-contents {
     @apply mb-2;
   }
+  .prose blockquote {
+    @apply not-italic;
+  }
   .prose details {
     @apply inline-block cursor-pointer select-none text-skin-base;
   }