From 081ec35b07efcf6c7a8bf1e61f2b53a561af6d26 Mon Sep 17 00:00:00 2001
From: Katsuyuki Karasawa <4ranci0ne@gmail.com>
Date: Mon, 13 Jan 2025 00:10:08 +0900
Subject: [PATCH] feat: self-host KaTeX CSS (#279)
---
package.json | 1 +
pnpm-lock.yaml | 138 +++++++++++++++++++++++----------------
src/layouts/Layout.astro | 9 ++-
3 files changed, 85 insertions(+), 63 deletions(-)
diff --git a/package.json b/package.json
index 2da44884..77694080 100644
--- a/package.json
+++ b/package.json
@@ -34,6 +34,7 @@
"astro-compress": "^2.3.5",
"astro-icon": "^1.1.1",
"hastscript": "^9.0.0",
+ "katex": "^0.16.19",
"markdown-it": "^14.1.0",
"mdast-util-to-string": "^4.0.0",
"overlayscrollbars": "^2.10.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2c891564..a78998c4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -65,6 +65,9 @@ importers:
hastscript:
specifier: ^9.0.0
version: 9.0.0
+ katex:
+ specifier: ^0.16.19
+ version: 0.16.19
markdown-it:
specifier: ^14.1.0
version: 14.1.0
@@ -1224,80 +1227,86 @@ packages:
cpu: [x64]
os: [win32]
- '@parcel/watcher-android-arm64@2.4.1':
- resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==}
+ '@parcel/watcher-android-arm64@2.5.0':
+ resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [android]
- '@parcel/watcher-darwin-arm64@2.4.1':
- resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==}
+ '@parcel/watcher-darwin-arm64@2.5.0':
+ resolution: {integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [darwin]
- '@parcel/watcher-darwin-x64@2.4.1':
- resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==}
+ '@parcel/watcher-darwin-x64@2.5.0':
+ resolution: {integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [darwin]
- '@parcel/watcher-freebsd-x64@2.4.1':
- resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==}
+ '@parcel/watcher-freebsd-x64@2.5.0':
+ resolution: {integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [freebsd]
- '@parcel/watcher-linux-arm-glibc@2.4.1':
- resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==}
+ '@parcel/watcher-linux-arm-glibc@2.5.0':
+ resolution: {integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==}
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
- '@parcel/watcher-linux-arm64-glibc@2.4.1':
- resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==}
+ '@parcel/watcher-linux-arm-musl@2.5.0':
+ resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ '@parcel/watcher-linux-arm64-glibc@2.5.0':
+ resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
- '@parcel/watcher-linux-arm64-musl@2.4.1':
- resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==}
+ '@parcel/watcher-linux-arm64-musl@2.5.0':
+ resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
- '@parcel/watcher-linux-x64-glibc@2.4.1':
- resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==}
+ '@parcel/watcher-linux-x64-glibc@2.5.0':
+ resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
- '@parcel/watcher-linux-x64-musl@2.4.1':
- resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==}
+ '@parcel/watcher-linux-x64-musl@2.5.0':
+ resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
- '@parcel/watcher-win32-arm64@2.4.1':
- resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==}
+ '@parcel/watcher-win32-arm64@2.5.0':
+ resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [win32]
- '@parcel/watcher-win32-ia32@2.4.1':
- resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==}
+ '@parcel/watcher-win32-ia32@2.5.0':
+ resolution: {integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==}
engines: {node: '>= 10.0.0'}
cpu: [ia32]
os: [win32]
- '@parcel/watcher-win32-x64@2.4.1':
- resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==}
+ '@parcel/watcher-win32-x64@2.5.0':
+ resolution: {integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [win32]
- '@parcel/watcher@2.4.1':
- resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==}
+ '@parcel/watcher@2.5.0':
+ resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==}
engines: {node: '>= 10.0.0'}
'@pkgjs/parseargs@0.11.0':
@@ -1970,6 +1979,10 @@ packages:
resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==}
engines: {node: '>= 14.16.0'}
+ chokidar@4.0.3:
+ resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
+ engines: {node: '>= 14.16.0'}
+
chownr@2.0.0:
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
engines: {node: '>=10'}
@@ -2941,8 +2954,8 @@ 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==}
+ katex@0.16.19:
+ resolution: {integrity: sha512-3IA6DYVhxhBabjSLTNO9S4+OliA3Qvb8pBQXMfC4WxXJgLwZgnfDl0BmB4z6nBMdznBsZ+CGM8DrGZ5hcguDZg==}
hasBin: true
kind-of@6.0.3:
@@ -6039,61 +6052,65 @@ snapshots:
'@pagefind/windows-x64@1.1.1':
optional: true
- '@parcel/watcher-android-arm64@2.4.1':
+ '@parcel/watcher-android-arm64@2.5.0':
optional: true
- '@parcel/watcher-darwin-arm64@2.4.1':
+ '@parcel/watcher-darwin-arm64@2.5.0':
optional: true
- '@parcel/watcher-darwin-x64@2.4.1':
+ '@parcel/watcher-darwin-x64@2.5.0':
optional: true
- '@parcel/watcher-freebsd-x64@2.4.1':
+ '@parcel/watcher-freebsd-x64@2.5.0':
optional: true
- '@parcel/watcher-linux-arm-glibc@2.4.1':
+ '@parcel/watcher-linux-arm-glibc@2.5.0':
optional: true
- '@parcel/watcher-linux-arm64-glibc@2.4.1':
+ '@parcel/watcher-linux-arm-musl@2.5.0':
optional: true
- '@parcel/watcher-linux-arm64-musl@2.4.1':
+ '@parcel/watcher-linux-arm64-glibc@2.5.0':
optional: true
- '@parcel/watcher-linux-x64-glibc@2.4.1':
+ '@parcel/watcher-linux-arm64-musl@2.5.0':
optional: true
- '@parcel/watcher-linux-x64-musl@2.4.1':
+ '@parcel/watcher-linux-x64-glibc@2.5.0':
optional: true
- '@parcel/watcher-win32-arm64@2.4.1':
+ '@parcel/watcher-linux-x64-musl@2.5.0':
optional: true
- '@parcel/watcher-win32-ia32@2.4.1':
+ '@parcel/watcher-win32-arm64@2.5.0':
optional: true
- '@parcel/watcher-win32-x64@2.4.1':
+ '@parcel/watcher-win32-ia32@2.5.0':
optional: true
- '@parcel/watcher@2.4.1':
+ '@parcel/watcher-win32-x64@2.5.0':
+ optional: true
+
+ '@parcel/watcher@2.5.0':
dependencies:
detect-libc: 1.0.3
is-glob: 4.0.3
micromatch: 4.0.8
node-addon-api: 7.1.1
optionalDependencies:
- '@parcel/watcher-android-arm64': 2.4.1
- '@parcel/watcher-darwin-arm64': 2.4.1
- '@parcel/watcher-darwin-x64': 2.4.1
- '@parcel/watcher-freebsd-x64': 2.4.1
- '@parcel/watcher-linux-arm-glibc': 2.4.1
- '@parcel/watcher-linux-arm64-glibc': 2.4.1
- '@parcel/watcher-linux-arm64-musl': 2.4.1
- '@parcel/watcher-linux-x64-glibc': 2.4.1
- '@parcel/watcher-linux-x64-musl': 2.4.1
- '@parcel/watcher-win32-arm64': 2.4.1
- '@parcel/watcher-win32-ia32': 2.4.1
- '@parcel/watcher-win32-x64': 2.4.1
+ '@parcel/watcher-android-arm64': 2.5.0
+ '@parcel/watcher-darwin-arm64': 2.5.0
+ '@parcel/watcher-darwin-x64': 2.5.0
+ '@parcel/watcher-freebsd-x64': 2.5.0
+ '@parcel/watcher-linux-arm-glibc': 2.5.0
+ '@parcel/watcher-linux-arm-musl': 2.5.0
+ '@parcel/watcher-linux-arm64-glibc': 2.5.0
+ '@parcel/watcher-linux-arm64-musl': 2.5.0
+ '@parcel/watcher-linux-x64-glibc': 2.5.0
+ '@parcel/watcher-linux-x64-musl': 2.5.0
+ '@parcel/watcher-win32-arm64': 2.5.0
+ '@parcel/watcher-win32-ia32': 2.5.0
+ '@parcel/watcher-win32-x64': 2.5.0
optional: true
'@pkgjs/parseargs@0.11.0':
@@ -6978,6 +6995,11 @@ snapshots:
dependencies:
readdirp: 4.0.2
+ chokidar@4.0.3:
+ dependencies:
+ readdirp: 4.0.2
+ optional: true
+
chownr@2.0.0: {}
ci-info@4.0.0: {}
@@ -8067,7 +8089,7 @@ snapshots:
optionalDependencies:
graceful-fs: 4.2.11
- katex@0.16.11:
+ katex@0.16.19:
dependencies:
commander: 8.3.0
@@ -8519,7 +8541,7 @@ snapshots:
dependencies:
'@types/katex': 0.16.7
devlop: 1.1.0
- katex: 0.16.11
+ katex: 0.16.19
micromark-factory-space: 2.0.0
micromark-util-character: 2.1.0
micromark-util-symbol: 2.0.0
@@ -9300,7 +9322,7 @@ snapshots:
'@types/katex': 0.16.7
hast-util-from-html-isomorphic: 2.0.0
hast-util-to-text: 4.0.2
- katex: 0.16.11
+ katex: 0.16.19
unist-util-visit-parents: 6.0.1
vfile: 6.0.3
@@ -9588,8 +9610,8 @@ snapshots:
sass@1.80.4:
dependencies:
- '@parcel/watcher': 2.4.1
- chokidar: 4.0.1
+ '@parcel/watcher': 2.5.0
+ chokidar: 4.0.3
immutable: 4.3.7
source-map-js: 1.2.1
optional: true
diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro
index 595f2a90..57f30e33 100644
--- a/src/layouts/Layout.astro
+++ b/src/layouts/Layout.astro
@@ -7,17 +7,18 @@ import { profileConfig, siteConfig } from '@/config'
import ConfigCarrier from '@components/ConfigCarrier.astro'
import {
AUTO_MODE,
- DARK_MODE,
- DEFAULT_THEME,
- LIGHT_MODE,
BANNER_HEIGHT,
BANNER_HEIGHT_EXTEND,
BANNER_HEIGHT_HOME,
+ DARK_MODE,
+ DEFAULT_THEME,
+ LIGHT_MODE,
PAGE_WIDTH,
} from '../constants/constants'
import { defaultFavicons } from '../constants/icon'
import type { Favicon } from '../types/config'
import { url, pathsEqual } from '../utils/url-utils'
+import 'katex/dist/katex.css'
interface Props {
title?: string
@@ -144,8 +145,6 @@ const bannerOffset =
-
-