From 29dbc03d6ba9954244558b970d04c9b4e56a9f1a Mon Sep 17 00:00:00 2001 From: Gyunseo Lee Date: Mon, 2 Oct 2023 17:25:20 +0900 Subject: [PATCH] obsidian(gyunseo laptop): M astro.config.mjs package-lock.json package.json src/content/blog/data-communications-and-networking-chapter-4-lans-part2.md src/layouts/Layout.astro, A src/assets/image/render-math-in-astro-markdown-pages-with-katex-1696235073061.jpeg src/content/blog/render-math-in-astro-markdown-pages-with-katex.md 2023-10-02 17:25:20 Affected files: astro.config.mjs package-lock.json package.json src/assets/image/render-math-in-astro-markdown-pages-with-katex-1696235073061.jpeg src/content/blog/data-communications-and-networking-chapter-4-lans-part2.md src/content/blog/render-math-in-astro-markdown-pages-with-katex.md src/layouts/Layout.astro --- astro.config.mjs | 6 + package-lock.json | 1255 ++++++++++++++++- package.json | 2 + ...rkdown-pages-with-katex-1696235073061.jpeg | Bin 0 -> 69762 bytes ...ons-and-networking-chapter-4-lans-part2.md | 28 +- ...math-in-astro-markdown-pages-with-katex.md | 125 ++ src/layouts/Layout.astro | 7 + 7 files changed, 1350 insertions(+), 73 deletions(-) create mode 100644 src/assets/image/render-math-in-astro-markdown-pages-with-katex-1696235073061.jpeg create mode 100644 src/content/blog/render-math-in-astro-markdown-pages-with-katex.md diff --git a/astro.config.mjs b/astro.config.mjs index 9e0eb8ff4..caa933d7d 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -8,6 +8,8 @@ import { updateImageLinkNode, updateLinkNode, } from "./src/utils/updateMarkdownASTNodeURLValue"; +import remarkMath from "remark-math"; +import rehypeKatex from "rehype-katex"; // https://astro.build/config export default defineConfig({ site: "https://gyunseo.xyz", // replace this with your deployed dom:wain @@ -21,6 +23,8 @@ export default defineConfig({ markdown: { remarkPlugins: [ remarkToc, + // to support a math syntax in markdown + remarkMath, [ remarkCollapse, { @@ -32,6 +36,8 @@ export default defineConfig({ // convert Markdown Link Node URL Value, updateLinkNode, ], + // to render math in HTML with KaTex + rehypePlugins: [rehypeKatex], shikiConfig: { theme: "one-dark-pro", wrap: true, diff --git a/package-lock.json b/package-lock.json index fb36a4af0..186a018b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,9 @@ "astro": "^3.1.3", "fuse.js": "^6.6.2", "github-slugger": "^2.0.0", + "rehype-katex": "^7.0.0", "remark-collapse": "^0.1.2", + "remark-math": "^6.0.0", "remark-toc": "^9.0.0", "satori": "^0.10.8", "tailwindcss": "^3.3.3", @@ -2158,6 +2160,11 @@ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.30.tgz", "integrity": "sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==" }, + "node_modules/@types/katex": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.3.tgz", + "integrity": "sha512-CeVMX9EhVUW8MWnei05eIRks4D5Wscw/W9Byz1s3PA+yJvcdvq9SaDjiUKvRvEgjpdTyJMjQA43ae4KTwsvOPg==" + }, "node_modules/@types/mdast": { "version": "3.0.12", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", @@ -4390,6 +4397,18 @@ "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==" }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -4555,7 +4574,6 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, "engines": { "node": ">=0.12" }, @@ -5607,6 +5625,208 @@ "node": ">=8" } }, + "node_modules/hast-util-from-dom": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.0.tgz", + "integrity": "sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==", + "dependencies": { + "@types/hast": "^3.0.0", + "hastscript": "^8.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-dom/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-from-dom/node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-dom/node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.1.tgz", + "integrity": "sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html-isomorphic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", + "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-dom": "^5.0.0", + "hast-util-from-html": "^2.0.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html-isomorphic/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-from-html/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-from-html/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, + "node_modules/hast-util-from-html/node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html/node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html/node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html/node_modules/vfile-location": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", + "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-from-parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz", @@ -5625,6 +5845,26 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/hast-util-parse-selector": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", @@ -5717,6 +5957,34 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-text": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.0.tgz", + "integrity": "sha512-EWiE1FSArNBPUo1cKWtzqgnuRQwEeQbQtnFJRYV1hb1BWDgrAlBU0ExptvZMM/KSA82cDpm2sFGf3Dmc5Mza3w==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/hast-util-to-text/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, "node_modules/hast-util-whitespace": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", @@ -6532,6 +6800,29 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/katex": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.8.tgz", + "integrity": "sha512-ftuDnJbcbOckGY11OO+zg3OofESlbR5DRl2cmN8HeWeeFIV7wTXvAOx8kEjZjobhA+9wh2fbKeO6cdcA9Mnovg==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, "node_modules/keyv": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", @@ -7429,78 +7720,93 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-phrasing": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", - "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", + "node_modules/mdast-util-math": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz", + "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==", "dependencies": { - "@types/mdast": "^3.0.0", - "unist-util-is": "^5.0.0" + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "longest-streak": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.1.0", + "unist-util-remove-position": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-hast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", - "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", + "node_modules/mdast-util-math/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-definitions": "^5.0.0", - "micromark-util-sanitize-uri": "^1.1.0", - "trim-lines": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "@types/unist": "*" } }, - "node_modules/mdast-util-to-hast/node_modules/mdast-util-definitions": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", - "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", + "node_modules/mdast-util-math/node_modules/@types/mdast": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", + "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "*" + } + }, + "node_modules/mdast-util-math/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, + "node_modules/mdast-util-math/node_modules/mdast-util-from-markdown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", + "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-hast/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "node_modules/mdast-util-math/node_modules/mdast-util-phrasing": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz", + "integrity": "sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-markdown": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", - "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", + "node_modules/mdast-util-math/node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" }, "funding": { @@ -7508,8 +7814,544 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-markdown/node_modules/mdast-util-to-string": { - "version": "3.2.0", + "node_modules/mdast-util-math/node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-math/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-core-commonmark": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz", + "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-util-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", + "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.0.tgz", + "integrity": "sha512-pIgcsGxpHEtTG/rPJRz/HOLSqp5VTuIIjXlPI+6JSDlK2oljApusG6KzpS8AF0ENUMCHlC/IBb5B9xdFiVlm5Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-math/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-math/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-util-subtokenize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", + "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-math/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-math/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mdast-util-math/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-math/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", + "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", + "dependencies": { + "@types/mdast": "^3.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", + "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-definitions": "^5.0.0", + "micromark-util-sanitize-uri": "^1.1.0", + "trim-lines": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast/node_modules/mdast-util-definitions": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", + "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", + "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/mdast-util-to-string": { + "version": "3.2.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", "dependencies": { @@ -7804,6 +8646,92 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/micromark-extension-math": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.0.0.tgz", + "integrity": "sha512-iJ2Q28vBoEovLN5o3GO12CpqorQRYDPT+p4zW50tGwTfJB+iv/VnB6Ini+gqa24K97DwptMBBIvVX6Bjk49oyQ==", + "dependencies": { + "@types/katex": "^0.16.0", + "devlop": "^1.0.0", + "katex": "^0.16.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-math/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-math/node_modules/micromark-util-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", + "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-math/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-extension-math/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, "node_modules/micromark-factory-destination": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", @@ -8782,7 +9710,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, "dependencies": { "entities": "^4.4.0" }, @@ -9633,6 +10560,101 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/rehype-katex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.0.tgz", + "integrity": "sha512-h8FPkGE00r2XKU+/acgqwWUlyzve1IiOKwsEkg4pDL3k48PiE0Pt+/uLtVHDVkN1yA4iurZN6UES8ivHVEQV6Q==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/katex": "^0.16.0", + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-to-text": "^4.0.0", + "katex": "^0.16.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-katex/node_modules/@types/hast": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz", + "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/rehype-katex/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, + "node_modules/rehype-katex/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-katex/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-katex/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-katex/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-katex/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/rehype-parse": { "version": "8.0.5", "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-8.0.5.tgz", @@ -9714,6 +10736,91 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-math": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-6.0.0.tgz", + "integrity": "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-math": "^3.0.0", + "micromark-extension-math": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-math/node_modules/@types/mdast": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz", + "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-math/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, + "node_modules/remark-math/node_modules/unified": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", + "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-math/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-math/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-math/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-parse": { "version": "10.0.2", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", @@ -11471,6 +12578,36 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-find-after/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, + "node_modules/unist-util-find-after/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unist-util-generated": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", @@ -11517,6 +12654,24 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, "node_modules/unist-util-stringify-position": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", diff --git a/package.json b/package.json index 07971b6be..fb813604f 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,9 @@ "astro": "^3.1.3", "fuse.js": "^6.6.2", "github-slugger": "^2.0.0", + "rehype-katex": "^7.0.0", "remark-collapse": "^0.1.2", + "remark-math": "^6.0.0", "remark-toc": "^9.0.0", "satori": "^0.10.8", "tailwindcss": "^3.3.3", diff --git a/src/assets/image/render-math-in-astro-markdown-pages-with-katex-1696235073061.jpeg b/src/assets/image/render-math-in-astro-markdown-pages-with-katex-1696235073061.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..ed89ff2fcc0bbeafffb7e3c9d0fa2c7761ca1310 GIT binary patch literal 69762 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 EKaJtDjsO4v literal 0 HcmV?d00001 diff --git a/src/content/blog/data-communications-and-networking-chapter-4-lans-part2.md b/src/content/blog/data-communications-and-networking-chapter-4-lans-part2.md index 267490ff7..0598760d3 100644 --- a/src/content/blog/data-communications-and-networking-chapter-4-lans-part2.md +++ b/src/content/blog/data-communications-and-networking-chapter-4-lans-part2.md @@ -109,26 +109,8 @@ slot time은 한 station이 **512 bits**를 보내는 데에 요구되는 시간 최악의 경우를 생각해 보자. station A가 있고, frame을 보내려는 destination station B가 있다고 하자. 두 station은 shared media에서 가장 양 끝단에 존재한다고 하자. - - - - - - - - - AB512bits 보내는 중...1bit가 B가 거의 도달하기 전에...B도 1bit를 보내기 시작하면A에서 보낸 bit가 B에 도착직전에 B에서 보낸 bit와 섞여서 A에 다시 도착하고collision을 감지하게 된다. - 위 그림과 같은 상황이 발생하게 된다. - 그러니깐, collision은 slot time의 first half 동안에만 일어나게 된다. - 이유는 위의 최악의 상황을 가정한 위의 그림을 보며 생각해 보자. (1bit가 B에 도달하기 직전에 B가 carrier sense를 하여, 자기도 512bits 중 1bit를 보내기 시작하고, 그래서 결국 $T_p$ 에 수렴한 시간 즉, half of slot time인 25.6μs에 collision이 발생하게 되는 것이다.) - 그리고 만약 first half of slot time에 collision이 일어난다면, 이 collision은 sender가 slot time 동안 sense할 수 있다. - 만약 이 시간 이후에 collision이 일어난다면, late collision이 일어났다고 한다. (주로 케이블 길이를 너무 길게 설정했을 때 이럴 때 주로 일어난다.) +위 그림과 같은 상황이 발생하게 된다. +그러니깐, collision은 slot time의 first half 동안에만 일어나게 된다. +이유는 위의 최악의 상황을 가정한 위의 그림을 보며 생각해 보자. (1bit가 B에 도달하기 직전에 B가 carrier sense를 하여, 자기도 512bits 중 1bit를 보내기 시작하고, 그래서 결국 $T_p$ 에 수렴한 시간 즉, half of slot time인 25.6μs에 collision이 발생하게 되는 것이다.) +그리고 만약 first half of slot time에 collision이 일어난다면, 이 collision은 sender가 slot time 동안 sense할 수 있다. +만약 이 시간 이후에 collision이 일어난다면, late collision이 일어났다고 한다. (주로 케이블 길이를 너무 길게 설정했을 때 이럴 때 주로 일어난다.) diff --git a/src/content/blog/render-math-in-astro-markdown-pages-with-katex.md b/src/content/blog/render-math-in-astro-markdown-pages-with-katex.md new file mode 100644 index 000000000..0fbda4422 --- /dev/null +++ b/src/content/blog/render-math-in-astro-markdown-pages-with-katex.md @@ -0,0 +1,125 @@ +--- +title: KaTex와 remark-math를 이용해 astro markdown page에서 수식을 렌더링하자. +pubDatetime: 2023-10-02T17:14:00Z +featured: false +draft: false +tags: + - remark + - Math + - KaTex + - Astro + - markdown +ogImage: "" +description: rehype-katex와 remark-math package를 프로젝트에 추가하고, 적용하는 과정을 담았습니다. +--- + +## Table of contents + +## 들어가며 + +컴퓨터네트워크 시험 공부를 astro markdown page에 정리하고, 이를 블로그에 배포하면서 하고 있었다. +그런데 배포한 블로그에 들어가서 post를 보니, 수식이 제대로 렌더링이 안 돼 있었다, +그래서 이를 해결하고자 한다. + +## package 설치 + +현재 내 블로그 프로젝트에 npm package로 하기 명령어에 나와 있는 패키지들을 설치한다. +저 두 패키지가 뭐냐하면은... + +- [`remark-math`](https://github.com/remarkjs/remark-math/blob/main/packages/remark-math) — remark plugin to support a math syntax in markdown +- [`rehype-katex`](https://github.com/remarkjs/remark-math/blob/main/packages/rehype-katex) — rehype plugin to render math in HTML with [KaTeX](https://github.com/Khan/KaTeX) + 라고 한다. + +```bash +npm install remark-math rehype-katex +``` + +## `astro.config.mjs` 파일 수정 + +하기와 같이 수정한다. + +`remarkPlugins`에 `remarkMath`를 추가하고, `rehypePlugins`에 `rehypeKatex`를 추가하면 되는 간단한 작업이다. + +```js +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 sitemap from "@astrojs/sitemap"; +import { + updateImageLinkNode, + updateLinkNode, +} from "./src/utils/updateMarkdownASTNodeURLValue"; +import remarkMath from "remark-math"; +import rehypeKatex from "rehype-katex"; +// https://astro.build/config +export default defineConfig({ + site: "https://gyunseo.xyz", // replace this with your deployed dom:wain + integrations: [ + tailwind({ + applyBaseStyles: false, + }), + react(), + sitemap(), + ], + markdown: { + remarkPlugins: [ + remarkToc, + // to support a math syntax in markdown + remarkMath, + [ + remarkCollapse, + { + test: "Table of contents", + }, + ], + // update Markdown ImageLink Node URL Value, + updateImageLinkNode, + // convert Markdown Link Node URL Value, + updateLinkNode, + ], + // to render math in HTML with KaTex + rehypePlugins: [rehypeKatex], + shikiConfig: { + theme: "one-dark-pro", + wrap: true, + }, + extendDefaultPlugins: true, + }, + vite: { + optimizeDeps: { + exclude: ["@resvg/resvg-js"], + }, + }, + scopedStyleStrategy: "where", +}); +``` + +## `Layout.astro`에 KaTex stylesheet 추가하기 + +`head` tag 안에 하기 코드를 추가하자. + +```html + + + + +``` + +## 결과 + +잘 나온다. + +![](/src/assets/image/render-math-in-astro-markdown-pages-with-katex-1696235073061.jpeg) + +## 참고 문서 + + + + diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index e3750ee4a..47dd799d6 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -56,6 +56,13 @@ const socialImageURL = new URL( + +