{"id":15147172,"url":"https://github.com/d-sketon/hexo-theme-reimu","last_synced_at":"2026-01-18T17:05:07.660Z","repository":{"id":65318718,"uuid":"584252754","full_name":"D-Sketon/hexo-theme-reimu","owner":"D-Sketon","description":"一款博丽灵梦风格的Hexo主题 | A Hakurei Reimu style Hexo theme. 💘Touhou💘","archived":false,"fork":false,"pushed_at":"2025-05-11T04:20:20.000Z","size":5134,"stargazers_count":296,"open_issues_count":1,"forks_count":28,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-15T17:05:16.395Z","etag":null,"topics":["blog","giscus","gitalk","hexo","hexo-theme","pjax","reimu","touhou","twikoo","valine","waline"],"latest_commit_sha":null,"homepage":"https://d-sketon.github.io","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/D-Sketon.png","metadata":{"files":{"readme":"README.en.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-01-02T02:09:44.000Z","updated_at":"2025-05-15T10:08:50.000Z","dependencies_parsed_at":"2023-12-30T05:22:20.120Z","dependency_job_id":"1b7cb3f4-4018-4e5f-afb5-db1c6c2b0121","html_url":"https://github.com/D-Sketon/hexo-theme-reimu","commit_stats":{"total_commits":254,"total_committers":5,"mean_commits":50.8,"dds":0.08267716535433067,"last_synced_commit":"0189d13782410983612e5b829e3d9f295fc87fc1"},"previous_names":[],"tags_count":43,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D-Sketon%2Fhexo-theme-reimu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D-Sketon%2Fhexo-theme-reimu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D-Sketon%2Fhexo-theme-reimu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D-Sketon%2Fhexo-theme-reimu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/D-Sketon","download_url":"https://codeload.github.com/D-Sketon/hexo-theme-reimu/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254384988,"owners_count":22062422,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blog","giscus","gitalk","hexo","hexo-theme","pjax","reimu","touhou","twikoo","valine","waline"],"created_at":"2024-09-26T12:23:08.862Z","updated_at":"2026-01-18T17:05:07.651Z","avatar_url":"https://github.com/D-Sketon.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003cdiv align = center\u003e\n  \u003cimg src=\"https://fastly.jsdelivr.net/gh/D-Sketon/blog-img/icon.png\"/\u003e\n  \u003ch1\u003ehexo-theme-reimu\u003c/h1\u003e\n  \u003cimg alt=\"NPM License\" src=\"https://img.shields.io/npm/l/hexo-theme-reimu\"\u003e\n  \u003cimg alt=\"NPM Version\" src=\"https://img.shields.io/npm/v/hexo-theme-reimu\"\u003e\n  \u003cimg alt=\"NPM Downloads\" src=\"https://img.shields.io/npm/dm/hexo-theme-reimu\"\u003e\n  \u003cimg alt=\"GitHub Repo stars\" src=\"https://img.shields.io/github/stars/D-Sketon/hexo-theme-reimu\"\u003e\n\n💘 Hakurei Reimu 💘\n\n[Demo](https://d-sketon.github.io)\n\n[简体中文](https://github.com/D-Sketon/hexo-theme-reimu/blob/main/README.md) | English\n\n\u003cimg src=\"https://cdn.jsdelivr.net/gh/D-Sketon/hexo-theme-reimu@main/_screenshot/Reimu.png\"/\u003e\n\u003c/div\u003e\n\n---\n\n\u003e [!WARNING]\n\u003e Versions below v1.0.0 have been deprecated. Please upgrade to version v1.0.0 or above as soon as possible.\n\nA Hakurei Reimu style Hexo theme.  \nA combination of [landscape](https://github.com/hexojs/hexo-theme-landscape)、[Tangyuxian](https://github.com/tangyuxian/hexo-theme-tangyuxian) and [Shoka](https://github.com/amehime/hexo-theme-shoka) themes.\n\n| framework                    | repository                                                         | version                                                                                                                                                                                     | stars                                                                                              |\n| ---------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |\n| [Hexo](https://hexo.io/)     | [hexo-theme-reimu](https://github.com/D-Sketon/hexo-theme-reimu)   | \u003cimg alt=\"version\" src=\"https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fgithub.com%2FD-Sketon%2Fhexo-theme-reimu%2Fraw%2Fmain%2Fpackage.json\u0026query=%24.version\u0026label=version\"\u003e  | \u003cimg alt=\"GitHub Repo stars\" src=\"https://img.shields.io/github/stars/D-Sketon/hexo-theme-reimu\"\u003e  |\n| [Hugo](https://gohugo.io)    | [hugo-theme-reimu](https://github.com/D-Sketon/hugo-theme-reimu)   | \u003cimg alt=\"version\" src=\"https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fgithub.com%2FD-Sketon%2Fhugo-theme-reimu%2Fraw%2Fmain%2Fpackage.json\u0026query=%24.version\u0026label=version\"\u003e  | \u003cimg alt=\"GitHub Repo stars\" src=\"https://img.shields.io/github/stars/D-Sketon/hugo-theme-reimu\"\u003e  |\n| [Astro](https://astro.build) | [astro-theme-reimu](https://github.com/D-Sketon/astro-theme-reimu) | \u003cimg alt=\"version\" src=\"https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fgithub.com%2FD-Sketon%2Fastro-theme-reimu%2Fraw%2Fmain%2Fpackage.json\u0026query=%24.version\u0026label=version\"\u003e | \u003cimg alt=\"GitHub Repo stars\" src=\"https://img.shields.io/github/stars/D-Sketon/astro-theme-reimu\"\u003e |\n\n**ISSUE and PR Welcome!**\n\n## Features\n\n### Basic Features\n- ✨ Full blog functionality\n- 🔄 Compatible with Hexo 6+\n- 📱 Responsive layout\n- 🌙 Dark mode support\n- 🅰️ i18n support\n\n### Code \u0026 Math\n- 🖥️ Code highlighting \u0026 copying\n- ➗ KaTeX / MathJax3 math formula support\n- 📊 Mermaid flowchart support\n\n### Search \u0026 Comments\n- 🔍 Algolia search integration\n- 🔍 Local search integration\n- 💬 Multiple comment systems support:\n  - Valine\n  - Waline\n  - Twikoo\n  - Gitalk\n  - Giscus\n  - Disqus\n  - Utterances\n\n### Statistics \u0026 Analytics\n- 📊 Article reading statistics (Valine / Waline)\n- 👥 Visitor statistics (Busuanzi)\n\n### Media \u0026 Interactive Features\n- 🎵 Music player support:\n  - Aplayer\n  - Meting\n- 🖼️ Lazy loading for images\n- ⚡ Loading animations\n- 🖱️ Mouse effects:\n  - Animation effects\n  - Reimu cursor style\n- 👾 Live2D / Live2D-widgets integration\n\n### Navigation \u0026 Structure\n- 📑 Table of Contents\n- 🔄 PJAX support\n- 🔧 ServiceWorker implementation\n- 📰 RSS feed\n\n### Design \u0026 Customization\n- 🎨 Icon support:\n  - Iconfont\n  - FontAwesome7\n- 🔗 Built-in tag plugins:\n  - Internal links\n  - External links\n  - Friend links\n  - Heatmap\n  - Tag Roulette\n  - Tabs\n  - Gallery\n- 🎨 Dynamic theme color adaptation\n- 🎨 Custom Containers\n- ©️ Article copyright declaration\n- 🌐 Custom CDN source configuration\n- 📜 Custom Font Family\n- 🎨 Share card functionality\n\n## Installation\n\n\u003e For beginners, you can directly use [reimu-template](https://github.com/D-Sketon/reimu-template). It comes pre-installed with hexo, hexo-theme-reimu and other functional packages. You only need to clone the repository, install dependencies, and modify the configuration to get a basic blog!\n\nUsing npm\n\n```bash\nnpm install hexo-theme-reimu --save\n```\n\nOr clone this repository directly to the `/themes` folder and rename it to `reimu`\n\n```bash\ngit clone https://github.com/D-Sketon/hexo-theme-reimu.git\n```\n\nAnd modify the theme in `_config.yml`\n\n```yaml\ntheme: reimu\n```\n\n## Usage\n\n\u003cdetails\u003e\n\u003csummary\u003eBasic structure\u003c/summary\u003e\n\n### Basic structure\n\nTo ensure correct display, please refer to `_example` and create `_data`, `about`, and `friend` folders in `source` (Note: This is the `source` folder in your blog's root directory, not the one in the theme!)\n\n**Directory Structure Example:**\n\n```\nsource/\n├── images/\n│   └── favicon.ico        # Website favicon\n├── _data/\n│   ├── avatar/\n│   │   └── avatar.webp    # Avatar file\n│   ├── covers.yml         # Article cover URL list\n│   └── covers/            # Article cover folder\n├── about/                 # About page\n│   └── index.md\n├── friend/                # Friend links page\n│   ├── index.md\n│   └── _data.yml          # Friend links data\n└── _posts/                # Posts folder\n    └── xxxx.md\n```\n\n#### \\_data\n\n- The `avatar` folder stores the author's avatar, default named `avatar.webp`. You can configure it in the inner `_config.yml` as follows:\n\n```yaml\navatar: \"avatar.webp\" # By default, it looks for the avatar in the avatar folder. Do not include the path, or it will result in a 404 error\n```\n\n- The `covers` folder stores article cover images\n- The `covers.yml` stores article cover URLs\n\n#### about\n\n`index.md` serves as the **About** page\n\n#### friend\n\n`index.md` serves as the **Friends** page. Fill in friend link information in `_data.yml` to display corresponding friend cards on the page\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCover Images, Banner and Favicon\u003c/summary\u003e\n\n### Cover Images, Banner, and Favicon\n\n#### Cover Images\n\nThe cover image display logic is as follows:\n\n- If the article's Front matter contains a cover URL, both the article header image and homepage thumbnail will display this URL\n\n```yaml\n---\ntitle: Hello World\ncover: https://example.com\n---\n```\n\n- If the article's Front matter contains cover: `false`, no header image will be displayed for that article (the homepage thumbnail will still show a random image)\n\n```yaml\n---\ntitle: Hello World\ncover: false\n---\n```\n\n- If the article's Front matter contains cover: `rgb(xxx,xxx,xxx)`, the article's header image will be a gradient of that solid color (the homepage thumbnail will still show a random image)\n\n```yaml\n---\ntitle: Hello World\ncover: rgb(255,117,117)\n---\n```\n\n- Otherwise, the homepage thumbnail will search for images in the `covers` folder and `covers.yml` and randomly select one; the in-article header image will look for the `cover` configuration in the inner `_config.yml`\n- If none of the above files/configurations exist, it will display the `banner` header image as a fallback\n\n#### banner\n\nThe banner image is stored at `themes/reimu/source/images/banner.webp`, and can be modified in the inner `_config.yml`:\n\n```yaml\nbanner: \"/images/banner.webp\"\n```\n\n#### favicon\n\nThe favicon is stored at `themes/reimu/source/images/favicon.ico`, and can be modified in the inner `_config.yml`:\n\n```yaml\nfavicon: \"/images/favicon.ico\"\n```\n\n#### Pinned Posts\n\nAdd `sticky: true` to the article's Front-matter to pin it:\n\n```yaml\n---\ntitle: Hello World\nsticky: true\n---\n```\n\n#### Article Summary\n\nDisabled by default. You can choose to display the article summary in the subtitle or at the beginning of the article.\n\n```yaml\nsummary:\n  enable: false\n  style: 'subtitle' # 'subtitle' or 'blockquote'\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\n\u003csummary\u003eSidebar\u003c/summary\u003e\n\n### Sidebar\n\n#### Sidebar Position\n\nDefault on the right. You can modify it in the inner `_config.yml`.\n\n```yaml\nsidebar:\n  position: right # left | right | false\n  menu: true # whether to show the sidebar menu button, ignored on mobile devices\n  article:\n    show_common: true # whether to show common sidebar on article pages, ignored on mobile devices\n```\n\nAdditionally, you can control it through the article's front-matter, which takes precedence over the global configuration.\n\n```yaml\n---\nsidebar: left # left | right | false\n---\n```\n\n\u003e When sidebar is set to false, the sidebar will be hidden, and the aplayer player and widgets will not be displayed at the same time.\n\n#### TOC\n\nDefault enabled. You can modify it in the inner `_config.yml`.\n\n```yaml\ntoc: true # true | false\n```\n\nAdditionally, you can control it through the article's front-matter, which takes precedence over the global configuration.\n\n```yaml\n---\ntoc: true # true | false\n---\n```\n\nYou can also configure the behavior of the TOC through the following configuration:\n\n```yaml\ntoc_options:\n  list_number: true # Whether to display the list number\n  min_depth: 1 # Minimum depth\n  max_depth: 6 # Maximum depth\n```\n\n#### Social Links\n\nYou can configure the social links in the sidebar in the inner `_config.yml`.\n\n```yaml\nsocial:\n  # github: https://github.com/yourname\n  # bilibili: https://space.bilibili.com/yourname\n  # ...\n```\n\n#### Widgets\n\nYou can configure the widgets in the sidebar in the inner `_config.yml`.\n\n```yaml\nwidgets:\n  # - category\n  # - tag\n  # - tagcloud\n  # - archive\n  # - recent_posts\n```\n\nYou can also configure the behavior of the widgets through the following configuration:\n\n```yaml\narchive_type: \"monthly\" # monthly | yearly, archive type\nshow_count: false # whether to show count in archive\ntag_limits:\nrecent_posts_limits: 5\ntagcloud_limits:\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eFooter\u003c/summary\u003e\n\n### Footer\n\n#### Basic Information\n\nThe footer section allows you to configure basic display information and statistics.\n\n```yaml\nfooter:\n  since: 2020 # The starting year displayed in the copyright information (e.g., 2020-current year)\n  powered: true # Whether to display copyright information\n  count: true # Whether to display word count and reading time statistics\n  busuanzi: true # Whether to enable Busuanzi visitor counting statistics\n```\n\n#### ICP Filing\n\nFor websites hosted in mainland China, you can display ICP filing information as required by regulations.\n\n```yaml\nicp:\n  icpnumber: # ICP filing number\n  beian: # Public Security Bureau filing number\n  recordcode: # Record code parameter from the Public Security Bureau filing link\n```\n\n#### Moe ICP Filing (v1.9.1+)\n\n[Moe ICP Filing](https://icp.gov.moe/)\n\n```yaml\nmoe_icp:\n  icpnumber: # Moe ICP filing number\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eCode Blocks\u003c/summary\u003e\n\n### Code Blocks\n\nTo ensure proper display of code blocks, make sure your outer `_config.yml` has the following configuration:  \n(Hexo \u003c7.0.0)\n\n```yaml\nhighlight:\n  enable: true\n  wrap: true\n  hljs: false\nprismjs:\n  enable: false\n```\n\n(Hexo \u003e=7.0.0)\n\n```yaml\nsyntax_highlighter: highlight.js\nhighlight:\n  wrap: true\n  hljs: false\n```\n\nCode blocks also provide a code copying feature - click the copy button in the top right corner of the code block to copy the code. You can configure the copy functionality in the inner `_config.yml`.  \n\n`success` is the prompt shown when copying is successful, `fail` is shown when copying fails. Additionally, you can configure copyright notices - when the copied text exceeds `count` characters, the copyright notice will be added after the copied content.\n\n```yaml\nclipboard:\n  success: \n    en: Copy successfully (*^▽^*)\n    zh-CN: 复制成功 (*^▽^*)\n    zh-TW: 複製成功 (*^▽^*)\n    ja: コピー成功 (*^▽^*)\n  fail: \n    en: Copy failed (ﾟ⊿ﾟ)ﾂ\n    zh-CN: 复制失败 (ﾟ⊿ﾟ)ﾂ\n    zh-TW: 複製失敗 (ﾟ⊿ﾟ)ﾂ\n    ja: コピー失敗 (ﾟ⊿ﾟ)ﾂ\n  copyright:\n    enable: false\n    count: 50 # Add copyright notice when character count exceeds this number\n    license_type: by-nc-sa # https://creativecommons.org/licenses\n```\n\nv1.1.0 added configuration to control the default expansion state of code blocks. `expand` can be set to `true`, `false`, or a number - the number indicates that code blocks will be collapsed by default when the number of lines exceeds this value.\n\n```yaml\ncode_block:\n  expand: true # true | false | number\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eSite comments\u003c/summary\u003e\n\n### Site comments\n\n\u003e Site comments can be individually controlled for each article using `comments` in the Front matter.  \n\u003e When `comments` is `false`, comments won't be displayed. When it's `true` or not specified, the display will be determined by the `_config.yml` configuration.\n\n\u003e Support for multiple comment systems simultaneously after version 1.7.0+\n\nGlobal comment system configuration:\n\n```yaml\ncomment:\n  title: Say something! # Title of the comment box  \n  default: waline # Default comment system used when multiple are enabled\n```\n\nIf using [Valine](https://valine.js.org/)  \nPlease refer to their official documentation to complete the `LeanCloud` configuration, then set `valine.enable` to `true` in the inner `_config.yml` and fill in your `appId` and `appKey`\n\n```yaml\nvaline:\n  enable: true\n  appId: \"your appId\"\n  appKey: \"your appKey\"\n  pageSize: 10 # comment list page size\n  avatar: mp # gravatar style https://valine.js.org/#/avatar\n  # lang: zh-cn # deprecated, use html.lang instead\n  placeholder: Just go go # valine comment input placeholder(like: Please leave your footprints )\n  guest_info: nick,mail,link #valine comment header info\n  recordIP: true # whether to record the IP address of the commenters\n  highlight: true # whether to highlight the code blocks\n  visitor: false # whether to display the number of visitors\n  serverURLs: # leancloud server url\n```\n\nIf using [Waline](https://waline.js.org/)  \nPlease refer to their [official documentation](https://waline.js.org/guide/get-started/) to complete the `LeanCloud` configuration, then set `waline.enable` to `true` in the inner `_config.yml` and fill in your `serverURL`\n\n```yaml\nwaline:\n  enable: true\n  serverURL: \"your server url\"\n  locale: {} # https://waline.js.org/guide/features/i18n.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E8%AF%AD%E8%A8%80\n  emoji:\n    - https://unpkg.com/@waline/emojis@1.2.0/weibo\n    - https://unpkg.com/@waline/emojis@1.2.0/alus\n    - https://unpkg.com/@waline/emojis@1.2.0/bilibili\n    - https://unpkg.com/@waline/emojis@1.2.0/qq\n    - https://unpkg.com/@waline/emojis@1.2.0/tieba\n    - https://unpkg.com/@waline/emojis@1.2.0/tw-emoji\n  meta:\n    - nick\n    - mail\n    - link\n  requiredMeta:\n    - nick\n    - mail\n  wordLimit: 0\n  pageSize: 10\n  pageview: true\n```\n\nIf using [twikoo](https://twikoo.js.org)  \nPlease refer to their [official documentation](https://twikoo.js.org/quick-start.html) to complete Tencent Cloud or Vercel deployment, then set `twikoo.enable` to `true` in the inner `_config.yml` and fill in your `envId`\n\n```yml\ntwikoo:\n  enable: true\n  envId: # For Tencent Cloud environment, fill in envId; For Vercel environment, fill in the URL (https://xxx.vercel.app)\n  region:\n```\n\nIf using [giscus](https://giscus.app/)  \nPlease refer to the documentation to complete repository configuration, then set `giscus.enable` to `true` in the inner `_config.yml` and fill in the corresponding data\n\n```yml\ngiscus:\n  enable: true\n  repo: \"your repo\"\n  repoId: \"your repoId\"\n  category: \"your category\"\n  categoryId: \"your categoryId\"\n  mapping: mapping\n  strict: 0\n  reactionsEnabled: 1\n  emitMetadata: 0\n  inputPosition: bottom\n```\n\nIf using [gitalk](https://gitalk.github.io/)  \nPlease refer to their [official documentation](https://github.com/gitalk/gitalk?tab=readme-ov-file#usage) to complete repository configuration, then set `gitalk.enable` to `true` in the inner `_config.yml` and fill in the corresponding data\n\n```yml\ngitalk:\n  enable: true\n  clientID: \"your application client ID\"\n  clientSecret: \"your application client secret\"\n  repo: \"your repo\"\n  owner: \"repo owner\"\n  admin: \"repo owner and collaborators\"\n  md5: false # Whether to use md5 to encrypt the path\n```\n\nIf using [Disqus](https://disqus.com/)  \nPlease set `disqus.enable` to `true` in the inner `_config.yml`, and fill in your `shortname`\n\n```yml\ndisqus:\n  enable: true\n  shortname: \"your shortname\"\n  count: true # Whether to enable comment count statistics\n```\n\nIf using utterance [utterances](https://utteranc.es/)\nPlease set `utterances.enable` to `true `in your theme's `_config.yml` and fill in your own `repo`\n```yml\nutterances:\n  enable: true\n  repo: owner/repo # Change this to \"Your GitHub Username/The Repository Name\" used for storing blog comments\n  issue_term: title\n  theme: github-light # You can use auto to automatically adapt to dark and light themes\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eSite search\u003c/summary\u003e\n\n### Site search\n\n\u003e Note: Do not enable both Algolia search and local search at the same time.\n\nIf choosing [Algolia](https://www.algolia.com/), please install [@reimujs/hexo-algoliasearch](https://github.com/D-Sketon/hexo-algoliasearch)\n\n```bash\nnpm install @reimujs/hexo-algoliasearch --save\n```\n\nThen refer to its [README](https://github.com/D-Sketon/hexo-algoliasearch#readme) to complete the `Algolia` account configuration, and add the following configuration to the outer `_config.yml`\n\n\u003e Note: The search redirect link is a permanent link, so please ensure the `url` in the outer `_config.yml` is filled in correctly.\n\n```yml\nalgolia:\n  appId: \"your applicationID\"\n  apiKey: \"your apiKey\"\n  adminApiKey: \"your adminApiKey\"\n  indexName: \"your indexName\"\n  chunkSize: 5000\n  fields:\n    - content:strip:truncate,0,500\n    - excerpt:strip\n    - gallery\n    - permalink\n    - photos\n    - slug\n    - tags\n    - title\n```\n\nIn the inner `_config.yml`, set `algolia_search.enable` to `true`\n\n```yaml\nalgolia_search:\n  enable: true\n```\n\nAnd run the following command to generate the search index\n\n```bash\nhexo algolia\n```\n\n\u003e After version 1.5.0, the theme has built-in `hexo-generator-search`, so there is no need to install `hexo-generator-search` separately.\n\nThis theme comes with `hexo-generator-search` built-in. If you choose to use local search, please set `generator_search.enable` to `true` in the inner `_config.yml`. For other configurations, refer to [hexo-generator-search](https://github.com/wzpan/hexo-generator-search).\n\n```yaml\ngenerator_search:\n  enable: true\n  field: post\n  content: true\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMathematical formulas\u003c/summary\u003e\n\n### Mathematical formulas\n\nplease install [@reimujs/hexo-renderer-markdown-it-plus](https://github.com/D-Sketon/hexo-renderer-markdown-it-plus)\n\n```bash\nnpm uninstall hexo-renderer-marked --save\nnpm install @reimujs/hexo-renderer-markdown-it-plus --save\n```\n\nMathematical formula support is disabled by default. To enable it, set `math.enable` to `true` in the inner `_config.yml`\n\n\u003e Note: Do not enable both KaTeX and MathJax3 at the same time.\n\n#### KaTeX\n\nFor server-side rendering, set `math.katex.enable` to `true` in the inner `_config.yml`\n\n```yaml\nmath:\n  enable: true\n  katex:\n    enable: true\n    autoRender: false\n```\n\nFor client-side rendering, set both `math.katex.enable` and `autoRender` to `true` in the inner `_config.yml`\n\n```yaml\nmath:\n  enable: true\n  katex:\n    enable: true\n    autoRender: true\n```\n\nAdd the following configuration to the outer `_config.yml`\n\n```yaml\nmarkdown_it_plus:\n  rawLaTeX: true\n```\n\n#### MathJax3\n\nTo use MathJax3, set `math.mathjax.enable` to `true` in the inner `_config.yml`\n\n```yaml\nmath:\n  enable: true\n  mathjax:\n    enable: true\n    options: # MathJax3 Options\n```\n\nAdd the following configuration to the outer `_config.yml`\n\n```yaml\nmarkdown_it_plus:\n  rawLaTeX: true\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMermaid Diagrams\u003c/summary\u003e\n\n### Mermaid Diagrams\n\nPlease install [hexo-filter-mermaid-diagrams](https://github.com/webappdevelp/hexo-filter-mermaid-diagrams)\n\n```bash\nnpm install hexo-filter-mermaid-diagrams --save\n```\n\nSet `mermaid.enable` to `true` in the inner `_config.yml`\n\n```yaml\nmermaid:\n  enable: true\n  zoom: false # whether to enable zoom\n```\n\nAnd add `mermaid: true` to the front-matter of any article where you want to use mermaid diagrams\n\n```yaml\n---\ntitle: Hello World\nmermaid: true\n---\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eRSS\u003c/summary\u003e\n\n### RSS\n\nPlease install [hexo-generator-feed](https://github.com/hexojs/hexo-generator-feed)\n\n```bash\nnpm install hexo-generator-feed --save\n```\n\nRefer to its [README](https://github.com/hexojs/hexo-generator-feed#readme) to complete the `feed` configuration in the outer `_config.yml`   \n\nThen add the generated `xml` path to the inner `_config.yml`\n\n```yaml\nrss: atom.xml\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003ei18n\u003c/summary\u003e\n\n### i18n\n\nThis theme provides five languages by default: `en`, `zh-CN`, `zh-TW`, `ja` and `pt-BR`. You can switch the language by modifying the `language` in the outer `_config.yml`.\n\n```yaml\nlanguage: zh-CN\n```\n\n\u003e The following is an experimental feature and may contain bugs.\n\nv1.4.0+ experimentally introduced `hexo-generator-i18n` and added multi-language switching functionality. You can configure `i18n` in the inner `_config.yml` to add custom languages. The configuration can be referenced from [hexo-generator-i18n](https://github.com/Jamling/hexo-generator-i18n):\n\n```yaml\ni18n:\n  enable: false # false | true\n  type: [page, post]\n  generator: [archive, category, tag, index]\n  languages: [zh-CN, en] # List of languages, the first one is the default language\n```\n\nFor multilingual support in posts, you can add `lang` in the Front-matter to specify languages **other than the default language** (the default language does not need to be added).\n\n```yaml\nlang: en\n```\n\nThe above will generate a page at `/en/:permalink`.\n\nFor multilingual support in pages, you can directly create a folder for the corresponding language in the `source` directory and place an `index.md` file inside it, such as `source/en/about/index.md`. This will generate a page at `/en/about`.\n\nFor more information, please refer to [How to add multi-language support to Hexo](https://d-sketon.github.io/en/20250223/hexo-theme-reimu-i18n/)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eIcon\u003c/summary\u003e\n\n### Icon\n\nBy default, this theme uses its own provided iconfont (v0.1.3+)\n\n```yml\nicon_font: 4552607_0khxww3tj3q9\n```\n\nIf you want to continue using fontawesome icons, set `icon_font` to `false`. This will use the corresponding fontawesome from the `vendor`\n\n```yml\nfontawesome:\n  high_priority:\n    - src: webcache|@fortawesome/fontawesome-free@7.1.0/css/regular.min.css\n      integrity: sha384-4qYppzjH8EiA+cGdaubu2vL7Rk8WGiqCSj7oRuP1uwtFWkfKNHD20lPfcrbQc8dU\n    - src: webcache|@fortawesome/fontawesome-free@7.1.0/css/solid.min.css\n      integrity: sha384-wbMWab3UDSPm2kvIgVOn/d9KPTecgPU1+Nb3zoQrm/oVu0EkPL6IaKinjbwW0rum\n  low_priority:\n    - src: webcache|@fortawesome/fontawesome-free@7.1.0/css/brands.min.css\n      integrity: sha384-KTGeC2hIMzpeQakhsmzB9bZfhCD5xZZCgI1iZH6f/O457SxzlkzTQg/WXFNoi3ih\n    - src: webcache|@fortawesome/fontawesome-free@7.1.0/css/v5-font-face.min.css\n      integrity: sha384-nJ1ThfldViXoLpJ6jlKcP2beas8BMbYq26SG9Hi8cH89bZi4RZ644v7helMCqJxd\n    - src: webcache|@fortawesome/fontawesome-free@7.1.0/css/v4-font-face.min.css\n      integrity: sha384-UlkrhOIvZxJFd4MElSUp7ow6/RUeYKi/orfCZIRRiOENFuQPIAA3T3HjYfmBRhNq\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eExtended features\u003c/summary\u003e\n\n### Extended features\n\n#### Back to Top\n\nEnabled by default\n\n```yaml\ntop:\n  enable: true\n  position: right # left | right\n```\n\n#### Dark Mode\n\nThe default setting is `auto`, which automatically switches based on the user's system settings. It can be set to `true` or `false` to change the default state.\n\n```yaml\ndark_mode:\n  # true means that the dark mode is enabled by default\n  # false means that the dark mode is disabled by default\n  # auto means that the dark mode is automatically switched according to the system settings\n  enable: auto # true | false | auto\n```\n\n#### Analytics\n\nDisabled by default, supports Baidu Analytics, Google Analytics and Microsoft Clarity\n\n```yaml\nbaidu_analytics: false\ngoogle_analytics: false\nclarity: false\n```\n\n#### Pace Progress Bar\n\nEnabled by default\n\n```yaml\npace:\n  enable: true\n```\n\n#### Firework\n\nEnabled by default\n\n```yaml\nfirework:\n  enable: true\n  disable_on_mobile: false # whether to disable on mobile devices, which can improve performance\n  options: # mouse-firework options\n```\n\nFor detailed configuration, please check [mouse-firework](https://github.com/D-Sketon/mouse-firework)\n\n#### PJAX\n\nDisabled by default\n\n```yaml\npjax:\n  enable: false\n```\n\n\u003e PJAX cannot be used with `relative_link: true`!\n\n#### ServiceWorker\n\nDisabled by default\n\n```yaml\nservice_worker:\n  enable: false\n```\n\n#### Live2D\n\nDisabled by default\n\n```yaml\nlive2d:\n  enable: false\n  position: left # left | right\n```\n\n#### Live2D Widgets\n\nDisabled by default\n\n```yaml\nlive2d_widgets:\n  enable: false\n  position: left # left | right\n```\n\n#### Reimu Cursor\n\nEnabled by default\n\n```yml\nreimu_cursor:\n  enable: true\n  cursor:\n    default: ../images/cursor/reimu-cursor-default.png\n    pointer: ../images/cursor/reimu-cursor-pointer.png\n    text: ../images/cursor/reimu-cursor-text.png\n```\n\n#### Responsive Banner (v0.2.0+)\n\nDisabled by default. When enabled and provided with corresponding image sizes and media queries, it can improve mobile LCP performance\n\n```yml\nbanner_srcset:\nenable: false\nsrcset:\n  - src: \"/images/banner-600w.webp\"\n    media: \"(max-width: 479px)\"\n  - src: \"/images/banner-800w.webp\"\n    media: \"(max-width: 799px)\"\n  - src: \n    - \"/images/banner.avif\"\n    - \"/images/banner.webp\" # support array format\n    media: \"(min-width: 800px)\"\n```\n\n#### Article Copyright Notice (v0.2.0+)\n\nDisabled by default\n\n``` yml\narticle_copyright: \n  enable: false # Display copyright card?\n  content:\n    author: # true | false Show author in copyright card?\n    link: # true | false Show link in copyright card?\n    title: # true | false Show title in copyright card?\n    date: # true | false Show creation date in copyright card?\n    updated: # true | false Show update date in copyright card?\n    license: # true | false Show license in copyright card?\n    license_type: by-nc-sa # https://creativecommons.org/licenses\n```\n\nAdditionally, this can be controlled through article front-matter, which takes precedence over global configuration\n\n```yaml\n---\ncopyright: true # Display copyright card?\n---\n```\n\n#### Quicklink (v0.2.3+)\n\nDisabled by default. When enabled, it preloads links while users stay on the page to improve user experience\n\n```yaml\nquicklink:\n  enable: false\n  timeout: 3000 # Preload timeout\n  priority: true # Whether to prioritize loading the page\n  ignores: [] # Ignore the specified link, supports string array only\n```\n\n#### Outdate Content Warning (v0.2.4+)\n\nDisabled by default\n\n```yaml\noutdate:\n  enable: false\n  daysAgo: 180 # How many days old before an article is considered outdated\n  message:\n    en: This article was last updated on {time}. Please note that the content may no longer be applicable.\n    zh-CN: 本文最后更新于 {time}，请注意文中内容可能已不适用。\n    zh-TW: 本文最後更新於 {time}，請注意文中內容可能已不適用。\n    ja: この記事は最終更新日：{time}。記載内容が現在有効でない可能性がありますのでご注意ください。\n```\n\n#### Sponsorship (v0.3.2+)\n\nDisabled by default\n\n```yaml\nsponsor:\n  enable: false # Display sponsorship QR code?\n  tip: # Sponsorship prompt\n    zh-CN: 请作者喝杯咖啡吧\n    zh-TW: 請作者喝杯咖啡吧\n    en: Buy me a coffee\n    ja: コーヒーを買ってください\n  icon:\n    url: \"../images/taichi.png\" # Sponsorship icon, path relative to css/style.css, so need to go up one level to find images folder\n    rotate: true # Rotate icon?\n    mask: true # Use image as mask (only show PNG image outline)?\n  qr:\n    - name: Alipay # QR code name\n      src: \"/sponsor/alipay.jpg\" # QR code path, please fill in yourself\n```\n\nAdditionally, this can be controlled through article front-matter, which takes precedence over global configuration\n\n```yaml\n---\nsponsor: true # Display sponsorship QR code?\n---\n```\n\n#### Home Categories Card (v1.0.0+)\n\nDisabled by default. When enabled, displays category cards on homepage as an alternative to widget categories\n\n```yaml\nhome_categories:\n  enable: false # Display home categories card?\n  content:\n    - categories: # Category name, format matches categories in front-matter, can be string (single-level) or array (multi-level)\n      cover: # Card cover, uses random cover if not specified\n    - categories:\n      cover:\n```\n\n#### Music Player (v1.2.0+)\n\n\u003e It's recommended to enable Pjax first, otherwise the player may auto-pause\n\nUses Aplayer + Meting (optional), disabled by default\n\n##### Music Player Position (v1.9.1+)\n\nDefault is after sidebar\n\n```yml\nplayer:\n  position: before_sidebar # before_sidebar / after_sidebar / after_widget\n```\n\n##### Pure Aplayer\n\nSet `player.aplayer.enable` to `true` and configure `player.aplayer.options` according to [Aplayer Docs](https://aplayer.js.org/#/home?id=options)\n\n```yaml\nplayer:\n  aplayer:\n    enable: true\n    options:\n      audio: [] # audio list\n      fixed:\n      autoplay:\n      loop:\n      order:\n      preload: \n      volume:\n      mutex:\n      listFolded:\n      lrcType:\n```\n\n##### Aplayer + Meting\n\nSet both `player.aplayer.enable` and `player.meting.enable` to `true`, configure `player.meting.options` according to [Meting Docs](https://github.com/metowolf/MetingJS?tab=readme-ov-file#option), `player.aplayer.options` is for Aplayer configuration\n\n```yaml\nplayer:\n  aplayer:\n    enable: true\n    options:\n      audio: [] # this option will be overwritten by meting\n      fixed:\n      autoplay:\n      loop:\n      order:\n      preload: \n      volume:\n      mutex:\n      listFolded:\n      lrcType:\n  meting:\n    enable: true\n    meting_api: # custom api\n    options:\n      id: \n      server: \n      type: \n      auto:\n```\n\n#### Share Link / Card (v1.3.0+)\n\nDisabled by default, currently supports `facebook`, `twitter`, `linkedin`, `reddit`, `weibo`, `qq`, `weixin`.\n\n```yaml\nshare:\n  # - facebook\n  # - twitter\n  # - linkedin\n  # - reddit\n  # - weibo\n  # - qq\n  # - weixin\n```\n\nFor `weixin`, it generates a share card with QR code that can be saved locally and shared to WeChat Moments (Note: when the article cover has cross-origin issues, snapdom cannot correctly generate cards with images!)\n\n#### Injector (v1.5.1+)\n\nUsed to inject custom code, similar to [Hexo#Injector](https://hexo.io/api/injector), supports `head`, `body` and `sidebar` injection\n\n```yaml\ninjector:\n  head_begin: # Inject code snippet right after \u003chead\u003e\n  head_end: # Inject code snippet right before \u003c/head\u003e\n  body_begin: # Inject code snippet right after \u003cbody\u003e\n  body_end: # Inject code snippet right before \u003c/body\u003e\n  sidebar_begin: # Inject code snippet right after \u003caside\u003e\n  sidebar_end: # Inject code snippet right before \u003c/aside\u003e\n```\n\n#### Triangle Badge (v1.10.2+)\n\nDisabled by default. When enabled, it will display a triangle badge in the upper right corner, supporting custom links and icons.\n\n```yaml\ntriangle_badge:\n  enable: false\n  icon: github # Same as the icon in the social config\n  link: https://github.com/D-Sketon/hexo-theme-reimu\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eBuilt-in Tag Plugins\u003c/summary\u003e\n\n### Built-in Tag Plugins\n\n#### friendLink - Friend Link Card\n\n```markdown\n{% friendsLink path %}\n```\n\nThe first parameter `path` indicates the path to the friend links yaml file\n\n#### postLinkCard - Internal Link Card (Not recommended, use `link` instead)\n\n```markdown\n{% postLinkCard slug [cover]|\"auto\" [escape] %}\n```\n\nNot recommended to use this tag. It is advised to use the `link` tag instead.\n\nThe first parameter is the article's `slug`; the second parameter (optional) is the cover image displayed on the card, if set to `auto` it will automatically use the blog's `banner`; the third parameter (optional) indicates whether the article title should be escaped\n\n\u003e Slug generation algorithm: https://github.com/hexojs/hexo-util/blob/master/lib/slugize.ts\n\u003e In simple terms, it removes invisible characters from the article title and replaces special characters `\\s~!@#$%^\u0026*()\\-_+=[]{}|\\;:\"'\u003c\u003e,.?/` with the separator `-`, merges consecutive separators and removes leading/trailing separators\n\n#### externalLinkCard - External Link Card (Not recommended, use `link` instead)\n\n```markdown\n{% externalLinkCard title link [cover]|\"auto\" %}\n```\n\nNot recommended to use this tag. It is advised to use the `link` tag instead.\n\nThe first parameter is the article title; the second parameter is the external link to the article; the third parameter (optional) is the cover image displayed on the card, if set to `auto` it will automatically use the default cover\n\n#### Heat Map Card Article Heatmap (v1.7.0+)\n\n```markdown\n{% heatMapCard levelStandard %}\n```\n\nThe first parameter is the level standard for the heatmap (graded based on the word count of the articles), with the default value being `\"1000,5000,10000\"`. \n\n#### tagRoulette (v1.9.0+)\n\n```markdown\n{% heatMapCard tags icon %}\n```\n\ntagRoulette is an interactive element that provides a random tag display feature. When the button is clicked, a tag is randomly selected and displayed from a predefined pool of tags.  \n\n- tags: Optional parameter specifying the tag pool. Multiple tags should be separated by English commas (,). If not provided, a few example tags will be used by default. Example: `tags=\"memory decline, loss of expression, increased laziness, numbness, so sleepy\"`  \n- icon: Optional parameter to customize the trigger button's icon. Default: 🕹️ (game controller emoji). Can be replaced with any emoji or text, such as 🎲, 🎯, 🔄, etc.\n\n#### link (v1.11.0+)\n\n```markdown\n{% link slug|title [title] [cover]|\"auto\" [escape] %}\n```\n\nUpgraded version of `externalLinkCard` and `postLinkCard`. It is recommended to use this tag.\n\nThe first parameter is the `slug` of the article or the `title` of the external link;  \nThe second parameter (optional) is the title displayed on the card;  \nThe third parameter (optional) is the cover image displayed on the card. If set to `auto`, the blog's `banner` or default cover will be used automatically;  \nThe fourth parameter (optional) indicates whether the article title is escaped.\n\n#### tabs (v1.11.0+)\n\n```markdown\n{% tabs [activeTab] [\"center\"] %}\n\u003c!-- tabName --\u003e\nTab content\n\u003c!-- tabName --\u003e\nTab content\n{% endtabs %}\n```\n\nAdapted from the next, volantis, and stellar themes, this feature supports creating tabbed switching effects within articles.\n\n- activeTab: Optional parameter, specifies the default active tab index (counting starts from 1). Default is 1.\n- \"center\": Optional parameter, specifies that tab titles should be center-aligned. Default is left-aligned.\n- tabName: The title of each tab, must be wrapped in `\u003c!-- tabName --\u003e`. Supports displaying icons using `@` + icon hexadecimal code. Examples:\n  - Title only: `\u003c!-- Title --\u003e`\n  - Icon only: `\u003c!-- @e60c --\u003e`\n  - Icon + Title: `\u003c!-- Title@e60c --\u003e`\n\n#### Gallery Photo Wall (v1.11.0+)\n\n```markdown\n{% gallery %}\n![alt text](image_url1)\n![alt text](image_url2)\n...\n{% endgallery %}\n```\n\nDisplay multiple images in a photo wall format, supporting automatic arrangement and responsive layout.\n\n#### grid Grid Layout (v1.11.1+)\n\n```markdown\n{% grid [width] [col] %}\n\u003c!-- cell --\u003e\nContent 1\n\u003c!-- cell --\u003e\nContent 2\n\u003c!-- cell --\u003e\nContent 3\n{% endgrid %}\n```\n\nDisplay content in a grid layout with responsive design.\n\n- width: Optional parameter, sets the minimum column width, e.g., `300` means a minimum column width of 300px. Default is `240`\n- col: Optional parameter, sets a fixed number of columns, e.g., `col:3` means a fixed 3-column layout. Default is auto column count\n- Use `\u003c!-- cell --\u003e` to separate each grid cell, and each cell's content will be rendered independently\n\n#### alertBlockquote Warning Quote Block (v1.11.1+)\n\n```markdown\n{% alertBlockquote [type] [title] %}\nQuote content\n{% endalertBlockquote %}\n```\n\nFallback version of the custom container, suitable for renderers that do not support custom containers.\n\n- type: Optional parameter, specifies the warning type, optional values are `info`, `tip`, `important`, `warning`, `danger`, default is `info`\n- title: Optional parameter, specifies the warning title, if not provided, the default title will be used\n\n#### details Collapsible Details Block (v1.11.1+)\n\n```markdown\n{% details [summary] %}\nDetails content\n{% enddetails %}\n```\n\nFallback version of the custom container, suitable for renderers that do not support custom containers.\n\n- summary: Optional parameter, specifies the details title, if not provided, the default title will be used\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eCustom Containers\u003c/summary\u003e\n\n### Custom Containers\n\nThis theme provides custom container functionality similar to Vitepress. Before using it, you need to install [@reimujs/hexo-renderer-markdown-it-plus](https://github.com/D-Sketon/hexo-renderer-markdown-it-plus).\n\nUsage is as follows:\n\n```markdown\n::: info\nThis is an info box.\n:::\n\n::: tip\nThis is a tip.\n:::\n\n::: important\nThis is an important box.\n:::\n\n::: warning\nThis is a warning.\n:::\n\n::: danger\nThis is a dangerous warning.\n:::\n\n::: danger STOP\nDanger zone, do not proceed\n:::\n\n::: details INFO\nThis is a details block.\n:::\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eCustomize theme\u003c/summary\u003e\n\n### Customize theme\n\nThe hexo-theme-reimu theme supports extensive customization. You can customize your theme by modifying `_config.yml`.\n\n#### Dynamic Theme Color Adaptation (Experimental Feature in v1.7.0+)\n\nDisabled by default. When enabled, it dynamically generates theme colors based on the dominant color of the article's banner image, following Google's Material You design guidelines.\n\n```yml\nmaterial_theme:\n  enable: false # true | false\n```\n\n\u003e Note: When this feature is enabled, the `crossorigin=\"anonymous\"` attribute will be added to the `img` element of the banner to fetch the dominant color of the image. Please ensure your image server supports cross-origin access or use a third-party image proxy.\n\n#### Manual Customizing Theme Colors\n\nThe hexo-theme-reimu theme supports theme color customization through CSS variables. You can customize your theme colors by modifying CSS variables under the `:root` pseudo-class.\n\nv1.8.0 added `internal_theme` configuration to customize theme colors. You can change the theme colors by modifying the `internal_theme` configuration in `params.yml`. The default theme colors are as follows:\n\n```yaml\ninternal_theme:\n  light:\n    --red-0: \"#ff0000\"\n    --red-1: \"#ff5252\"\n    --red-2: \"#ff7c7c\"\n    --red-3: \"#ffafaf\"\n    --red-4: \"#ffd0d0\"\n    --red-5: \"#ffecec\"\n    --red-5-5: \"#fff3f3\"\n    --red-6: \"#fff7f7\"\n    --color-red-6-shadow: \"rgba(255, 78, 78, 0.6)\"\n    --color-red-3-shadow: \"rgba(255, 78, 78, 0.3)\"\n\n    --highlight-nav: \"#f5f5f5\"\n    --highlight-scrollbar: \"#d6d6d6\"\n    --highlight-background: \"#fdfdfd\"\n    --highlight-selection: \"#e9e9e988\"\n    --highlight-foreground: \"#24292e\"\n    --highlight-comment: \"#7d7d7d\"\n    --highlight-red: \"#d73a49\"\n    --highlight-orange: \"#e36209\"\n    --highlight-yellow: \"#cb911d\"\n    --highlight-green: \"#22863a\"\n    --highlight-aqua: \"#005cc5\"\n    --highlight-blue: \"#032f62\"\n    --highlight-purple: \"#6f42c1\"\n    --highlight-deletion: \"#b31d28\"\n    --highlight-deletion-bg: \"#ffeef0\"\n    --highlight-addition: \"#22863a\"\n    --highlight-addition-bg: \"#f0fff4\"\n  dark:\n    --red-4: \"rgba(255, 208, 208, 0.5)\"\n    --red-5: \"rgba(255,228,228,0.15)\"\n    --red-5-5: \"rgba(255,236,236,0.05)\"\n    --red-6: \"rgba(255, 243, 243, 0.2)\"\n\n    --highlight-nav: \"#222830\"\n    --highlight-scrollbar: \"#454d59\"\n    --highlight-background: \"#1e2027\"\n    --highlight-selection: \"#51515155\"\n    --highlight-foreground: \"#c9d1d9\"\n    --highlight-comment: \"#8b949e\"\n    --highlight-red: \"#ff7b72\"\n    --highlight-orange: \"#ffa657\"\n    --highlight-yellow: \"#ffcc66\"\n    --highlight-green: \"#7ee787\"\n    --highlight-aqua: \"#a5d6ff\"\n    --highlight-blue: \"#79c0ff\"\n    --highlight-purple: \"#d2a8ff\"\n    --highlight-deletion: \"#ffa198\"\n    --highlight-deletion-bg: \"#490202\"\n    --highlight-addition: \"#7ee787\"\n    --highlight-addition-bg: \"#04260f\"\n```\n\n#### Custom Fonts\n\nYou can define Google Fonts through the following configuration:\n\n```yaml\n# https://fonts.google.com/\nfont:\n  enable: true # Enable Google Fonts\n  article:\n    - Mulish\n    - Noto Serif SC\n  code:\n    # - Ubuntu Mono\n    # - Source Code Pro\n    # - JetBrains Mono\n```\n\nv1.1.0 added `local_font` configuration for defining local fonts, which has lower priority than Google Fonts:\n\n```yaml\nlocal_font:\n  article:\n    - \"-apple-system\"\n    - PingFang SC\n    - Microsoft YaHei\n    - sans-serif\n  code:\n    - Menlo\n    - Monaco\n    - Consolas\n    - monospace\n```\n\nv1.8.0 added `custom_font` configuration for defining custom fonts, which has the highest priority:\n\n```yaml\ncustom_font:\n  enable: true\n  article:\n    - css: https://fontsapi.zeoseven.com/292/main/result.css # font css\n      name: LXGW WenKai # font css\n  code:\n```\n\n#### Customizing Icons\n\nv1.0.0 underwent significant refactoring and exposed many configurations for changing the original icons\n\n##### Header / Sidebar Icons\n\nThe `menu` configuration structure changed in v1.0.0, allowing users to customize icons. When icon is empty, it defaults to the Taichi icon. You can fill in a hexadecimal number to customize the icon, supporting both FontAwesome, icon font and `false`.\n\nv1.8.4 icon supports image path, such as `/avatar/avatar.webp`.\n\n```yaml\nmenu:\n  - name: home\n    url: /\n    icon: # Defaults to Taichi icon when empty\n  - name: archives\n    url: /archives\n    icon: f0c1 # You can fill in a hexadecimal number to customize the icon, supports FontAwesome and icon font. If set to false, no icon will be displayed.\n  - name: about\n    url: /about\n    icon:\n  - name: friend\n    url: /friend\n    icon:\n```\n\n##### Footer / Back to Top / Sponsor Icons\n\nv1.0.0 added `icon` configuration to `footer`, `top`, and `sponsor` configurations for customizing icons.\n\n- `url` is the path to the icon, relative to `css/style.css`, so you need to go up one level to find the images folder.\n- `rotate` determines whether to rotate the icon, defaults to `true`.\n- `mask` determines whether to use the image as a mask (only showing PNG image outline), defaults to `true`.\n\n```yaml\nfooter:\n  icon:\n    url: \"../images/taichi.png\" # If set to false, no icon will be displayed\n    rotate: true\n    mask: true\n\ntop:\n  icon:\n    url: \"../images/taichi.png\"\n    rotate: true\n    mask: true\n\nsponsor:\n  icon:\n    url: \"../images/taichi.png\" # If set to false, no icon will be displayed\n    rotate: true\n    mask: true\n```\n\n##### Loading Icon\n\nv1.0.0 added `icon` configuration to `preloader` for customizing the loading icon. When icon is empty, it defaults to using inline SVG (ensuring first-screen loading speed). You can enter a link to customize the loading icon.\n\nIt's not recommended to use oversized icons to avoid affecting loading speed.\n\n```yaml\npreloader:\n  enable: true\n  text:\n    zh-CN: 少女祈祷中...\n    zh-TW: 少女祈禱中...\n    en: Loading...\n    ja: 少女祈祷中...\n  icon: # if the icon is empty, the default svg is used, which is inlined to ensure the loading speed of the first screen. You can fill in a link to customize the loading icon, such as '/images/taichi.png'\n  rotate: true\n```\n\n##### Anchor Icon\n\nv1.0.0 added `anchor_icon` configuration for customizing anchor icons, defaults to using the `#` icon. You can fill in a hexadecimal number to customize the icon, supporting both FontAwesome and icon font.\n\n```yaml\nanchor_icon: # if the icon is empty, the default # icon is used\n```\n\nv1.8.5 `anchor_icon` supports passing `false` to hide anchor icon.\n\n##### Cursor Icon (v1.3.0+)\n\nv1.3.0 added `reimu_cursor.cursor` configuration for customizing cursor icons. You can fill in a path relative to `css/style.css` to customize cursor icons.\n\n```yaml\nreimu_cursor:\n  enable: true\n  cursor:\n    default: ../images/cursor/reimu-cursor-default.png\n    pointer: ../images/cursor/reimu-cursor-pointer.png\n    text: ../images/cursor/reimu-cursor-text.png\n```\n\n#### Custom Scroll Animation\n\nBased on [AOS.js](https://github.com/D-Sketon/aos.js) scroll animation effects, default is `true`, you can enable or disable through the following configuration, and set different animation effects for different pages.\n\n```yaml\nanimation:\n  enable: true\n  options:\n    header:\n    home:\n    article:\n    archive:\n```\n\n**Available Animation Effects:**\n\n- **Fade**: fade, fade-up, fade-down, fade-left, fade-right, fade-up-right, fade-up-left, fade-down-right, fade-down-left\n- **Flip**: flip-up, flip-down, flip-left, flip-right\n- **Slide**: slide-up, slide-down, slide-left, slide-right\n- **Zoom**: zoom-in, zoom-in-up, zoom-in-down, zoom-in-left, zoom-in-right, zoom-out, zoom-out-up, zoom-out-down, zoom-out-left, zoom-out-right\n\n#### Custom Styles\n\nYou can customize the maximum width of the main content area by modifying `layout.max_width`, default is `1350px`.\n\n```yaml\nlayout:\n  max_width: 1350px # Maximum width of the main content area\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eVendor\u003c/summary\u003e\n\n### Vendor\n\n`vendor` is used to store third-party resources such as fontawesome, iconfont, katex, mathjax, etc.\n\nThe `vendor` structure in hexo-theme-reimu is very flexible and supports the following formats:\n\n- `:cdn|:package@:version/:file`: Uses CDN acceleration, for example `cdn_jsdelivr_gh|katex@0.13.11/dist/katex.min.css`. The `:cdn` can be configured in `vendor`. Currently includes the following CDN sources:\n  ```yaml\n  cdn_jsdelivr_gh: https://cdn.jsdelivr.net/gh/ # GitHub acceleration only\n  cdn_jsdelivr_npm: https://cdn.jsdelivr.net/npm/ # NPM acceleration only\n  fastly_jsdelivr_gh: https://fastly.jsdelivr.net/gh/ # GitHub acceleration only\n  fastly_jsdelivr_npm: https://fastly.jsdelivr.net/npm/ # NPM acceleration only\n  unpkg: https://unpkg.com/ # NPM acceleration only\n  webcache: https://npm.webcache.cn/ # NPM acceleration only\n  ```\n  Users can switch CDN sources based on their network conditions.\n- Starting with `https://`: Uses absolute links directly, such as `https://cdn.jsdelivr.net/npm/katex@0.13.11/dist/katex.min.css`\n- Starting with `/`: Local resources. You can place resources in the `source` folder at the same level as `_posts`, then reference them using paths like `/katex.min.css`\n\nAdditionally, `vendor` supports SRI (Subresource Integrity) verification. You can use `SHA-384` in `vendor` to verify resource integrity, for example:\n\n```yaml\njs:\n  clipboard: # Using SRI verification\n    src: webcache|clipboard@2.0.11/dist/clipboard.min.js\n    integrity: sha384-J08i8An/QeARD9ExYpvphB8BsyOj3Gh2TSh1aLINKO3L0cMSH2dN3E22zFoXEi0Q\n  lazysizes: webcache|lazysizes@5.3.2/lazysizes.min.js # Without SRI verification\n```\n\nBoth formats are supported. It's recommended to use SRI verification for external CDN resources to ensure resource integrity.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eFront-matter Fields\u003c/summary\u003e\n\n### Front-matter Fields\n\n| meta        | Description                                                              | Type                                               | Value Logic                               | Version       |\n| ----------- | ------------------------------------------------------------------------ | -------------------------------------------------- | ----------------------------------------- | ------------- |\n| title       | Title                                                                    | `string`                                           | Article file name                         | Hexo Built-in |\n| date        | Creation Date                                                            | `date`                                             | File creation date                        | Hexo Built-in |\n| updated     | Update Date                                                              | `date`                                             | File update date                          | Hexo Built-in |\n| tags        | Tags                                                                     | `string[] \\| string[][]`                           | -                                         | Hexo Built-in |\n| categories  | Categories                                                               | `string[] \\| string[][]`                           | -                                         | Hexo Built-in |\n| permalink   | Override the article's permanent link                                    | `string`                                           | -                                         | Hexo Built-in |\n| excerpt     | Article Excerpt                                                          | `string`                                           | -                                         | Hexo Built-in |\n| description | Article Description                                                      | `string`                                           | -                                         | 0.0.1         |\n| link        | Directs the article to an external link                                  | `string`                                           | -                                         | 0.0.1         |\n| sticky      | Whether to pin the article                                               | `boolean`                                          | `false`                                   | 0.0.1         |\n| photos      | Article photo gallery                                                    | `string[]`                                         | -                                         | 0.0.1         |\n| mermaid     | Whether to enable mermaid (requires configuration with `mermaid` config) | `boolean`                                          | `false`                                   | 0.2.0         |\n| copyright   | Whether to enable article copyright notice                               | `boolean`                                          | Defaults to global config if not provided | 0.3.1         |\n| sponsor     | Whether to enable article sponsorship                                    | `boolean`                                          | Defaults to global config if not provided | 0.3.2         |\n| comments    | Whether to enable article comments                                       | `boolean`                                          | Defaults to global config if not provided | 0.3.2         |\n| cover       | Article cover                                                            | `https://example.com \\| false \\| rgb(255,117,117)` | Defaults to global config if not provided | 0.0.7         |\n| sidebar     | Article sidebar position                                                 | `false \\| 'left' \\| 'right'`                       | Defaults to global config if not provided | 1.3.0         |\n| lang        | Article language (requires configuration with `i18n` config)             | `string`                                           | -                                         | 1.4.0         |\n| toc         | Whether to enable article table of contents                              | `boolean`                                          | Defaults to global config if not provided | 1.6.0         |\n| outdated    | Whether the article is outdated                                          | `boolean`                                          | Defaults to global config if not provided | 1.10.1        |\n| author      | Article author (used for article copyright and sharing cards)            | `string`                                           | Defaults to global config if not provided | 1.10.2        |\n| keywords    | Article keywords for SEO                                                 | `string[] \\| string`                               | Defaults to global config if not provided | 1.10.4        |\n\n\u003c/details\u003e\n\n## Contributors\n\n[![](https://contributors-img.web.app/image?repo=D-Sketon/hexo-theme-reimu)](https://github.com/D-Sketon/hexo-theme-reimu/graphs/contributors)\n\n## Related Projects\n\n| package name                                                                                          | version                                                                              | npm                                                                                     | jsdelivr                                                                                         |\n| ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |\n| [hexo-theme-reimu](https://github.com/D-Sketon/hexo-theme-reimu)                                      | ![NPM Version](https://img.shields.io/npm/v/hexo-theme-reimu)                        | ![NPM Downloads](https://img.shields.io/npm/dm/hexo-theme-reimu)                        | ![jsDelivr Hits](https://img.shields.io/jsdelivr/npm/hm/hexo-theme-reimu)                        |\n| [theme-shokax-pjax](https://github.com/theme-shoka-x/theme-shokax-pjax)                               | ![NPM Version](https://img.shields.io/npm/v/theme-shokax-pjax)                       | ![NPM Downloads](https://img.shields.io/npm/dm/theme-shokax-pjax)                       | ![jsDelivr Hits](https://img.shields.io/jsdelivr/npm/hm/theme-shokax-pjax)                       |\n| [theme-shokax-anime](https://github.com/theme-shoka-x/theme-shokax-anime)                             | ![NPM Version](https://img.shields.io/npm/v/theme-shokax-anime)                      | ![NPM Downloads](https://img.shields.io/npm/dm/theme-shokax-anime)                      | ![jsDelivr Hits](https://img.shields.io/jsdelivr/npm/hm/theme-shokax-anime)                      |\n| [mouse-firework](https://github.com/D-Sketon/mouse-firework)                                          | ![NPM Version](https://img.shields.io/npm/v/mouse-firework)                          | ![NPM Downloads](https://img.shields.io/npm/dm/mouse-firework)                          | ![jsDelivr Hits](https://img.shields.io/jsdelivr/npm/hm/mouse-firework)                          |\n| [@reimujs/aos](https://github.com/D-Sketon/aos.js)                                                    | ![NPM Version](https://img.shields.io/npm/v/@reimujs/aos)                            | ![NPM Downloads](https://img.shields.io/npm/dm/@reimujs/aos)                            | ![jsDelivr Hits](https://img.shields.io/jsdelivr/npm/hm/@reimujs/aos)                            |\n| [@reimujs/hexo-algoliasearch](https://github.com/D-Sketon/hexo-algoliasearch)                         | ![NPM Version](https://img.shields.io/npm/v/@reimujs/hexo-algoliasearch)             | ![NPM Downloads](https://img.shields.io/npm/dm/@reimujs/hexo-algoliasearch)             | ![jsDelivr Hits](https://img.shields.io/jsdelivr/npm/hm/@reimujs/hexo-algoliasearch)             |\n| [@reimujs/hexo-renderer-markdown-it-plus](https://github.com/D-Sketon/hexo-renderer-markdown-it-plus) | ![NPM Version](https://img.shields.io/npm/v/@reimujs/hexo-renderer-markdown-it-plus) | ![NPM Downloads](https://img.shields.io/npm/dm/@reimujs/hexo-renderer-markdown-it-plus) | ![jsDelivr Hits](https://img.shields.io/jsdelivr/npm/hm/@reimujs/hexo-renderer-markdown-it-plus) |\n| [@reimujs/instantsearch.js](https://github.com/D-Sketon/instantsearch)                                | ![NPM Version](https://img.shields.io/npm/v/@reimujs/instantsearch.js)               | ![NPM Downloads](https://img.shields.io/npm/dm/@reimujs/instantsearch.js)               | ![jsDelivr Hits](https://img.shields.io/jsdelivr/npm/hm/@reimujs/instantsearch.js)               |\n| [plugin-live2d](https://github.com/D-Sketon/plugin-live2d)                                            | -                                                                                    | -                                                                                       | ![jsDelivr hits (GitHub)](https://img.shields.io/jsdelivr/gh/hm/D-Sketon/plugin-live2d)          |\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=D-Sketon/hexo-theme-reimu\u0026type=date\u0026legend=top-left)](https://www.star-history.com/#D-Sketon/hexo-theme-reimu\u0026type=date\u0026legend=top-left)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd-sketon%2Fhexo-theme-reimu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fd-sketon%2Fhexo-theme-reimu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd-sketon%2Fhexo-theme-reimu/lists"}