Use a fixed event name (type:view) and pass the title as metadata
instead of embedding it in the event name, which caused issues with
long page titles.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The email obfuscation PR (#2815) incorrectly replaced the "share via
email" link with the author's email as recipient. Sharing links have no
email address to obfuscate — they just open a mailto: with the article
URL and title prefilled.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove @iamtraction/google-translate (and undici vulnerability) — translation
no longer needed, language files now copy English content directly
- Upgrade firebase-admin from ^12.0.0 to ^13.8.0
- Pin csv-parse to ~5.5.0 to avoid major version bump
- Use networkidle2 + 2s delay in processUsers.js for reliable screenshots
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fuse.js 7.3.0 removed dist/fuse.min.js (UMD), shipping only ESM/CJS.
Since Hugo concatenates vendor JS into a plain <script> tag, the ESM
export syntax causes a runtime error and breaks search. Pin to 7.2.0,
the last version with UMD support.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Resolve conflicts in icon sample pages by adopting upstream's {{< icon-ref >}}
shortcode, which dynamically generates the icon table.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Resolve conflicts in icon sample pages by adopting upstream's {{< icon-ref >}}
shortcode, which dynamically generates the icon table (replacing the static
table the PR had added strava to).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Switch all CI, dependabot, and docs references from dev to main
- Update users list and screenshots via processUsers
- Refresh contributors and sponsors data
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add thumbnailAspectRatio site parameter (default '1.5')
- Use decimal values instead of fractions for Hugo compatibility
- Sanitize user input to extract only numeric characters
- Apply to article cards, related cards, and term cards
- Update both source and compiled CSS
Closes#2839
Measure caption heights across slides at runtime and apply a shared min-height so switching between slides with and without caption text does not cause layout jump.
Keep this behavior scoped to carousels with captions and recalculate on load and resize for responsive stability.
Move carousel captions out of absolute positioning so they participate in normal height calculation and no longer overlap content below the carousel.
Constrain indicators and navigation buttons to the image region using container-based sizing, so controls do not extend into the caption area.
Languages with null entries in repoColors.json caused Go's fmt.Sprintf
to emit '%!s(<nil>)' as the color value, producing invalid CSS and
browser parse errors. Add a nil guard to skip those entries, letting
them fall back to the default dot color.
Fixes#2824
Replace complex title processing (9 lines) with single-line title filter approach.
Changes:
- Simplify $admonitionTitle definition from 5 variables to 1 line
- Remove $titleClass conditional logic (4 lines)
- Replace dynamic CSS class with static "grow" class
- Use Hugo title filter instead of CSS capitalize
- Remove TrimSpace processing per author feedback
This maintains the same visual behavior while significantly reducing code complexity.
Related: PR #2704 feedback from ZhenShuo2021
For example, given the following HTML:
<p class="text-primary-500"><strong>Hello</strong> world</p>
The rendered result shows `Hello` in the neutral color, while `world` is rendered in the primary color.
This change applies `color: inherit` to bold text so that both uses the primary color.
- Search engines do not consume the abstract property
- Platforms (Docusaurus, Vitepress, WordPress, Medium) do not use it
- .Summary method does not match the definition of abstract in schema.org
redo 0d21750932 due to incorrect merge manipulate
- Search engines do not consume the abstract property
- Platforms (Docusaurus, Vitepress, WordPress, Medium) do not use it
- .Summary method does not match the definition of abstract in schema.org
Many users configured the scheme with uppercase letters.
While uppercase works on macOS, it causes deployment failures on Ubuntu due to case sensitivity.
Pages with the 'excludeFromSearch' parameter set in their front matter are now omitted from the generated search index. This allows for finer control over which pages are searchable.
This allows users to customize Chroma CSS without building the TailwindCSS manually.
For example, add this to `custom.css`:
```
.chroma,
.chroma,
.chroma:is(.dark *),
.chroma:is(.dark *) * {
color: unset;
background-color: unset;
font-weight: unset;
}
```
Then use:
```
hugo gen chromastyles --style=github | sed 's/\./html.dark ./' >> assets/css/custom.css
hugo gen chromastyles --style=github | sed 's/\./html:not(.dark) ./' >> exampleSite/assets/css/custom.css
```
Fixes the issue introduced by commit 7cb8dcc which removed the
_external-link.html partial. The external link logic is now handled
inline in the card.html template to properly support both internal
and external URLs.
This reverts commit af221fbf3b.
fix language dot colors in repo-card not displaying
This occurs because head.html is rendered before the page content,
making .Page.Store unavailable at that point in the template
execution order.
This issue doesn't appear in local development because page refreshes
trigger full re-renders, allowing the Store values to be properly
populated from shortcodes.
Alternative solutions considered:
1. templates.Defer: too complex and unreliable
2. Moving CSS to footer: confusing and delayed load
3. Inline styles: incurs CSP issue
Final I choose pre-generate CSS for all languages. After zstd
compression, the CSS file is only 8KB and benefits from browser
caching across all pages.
Minor documentation change. The carousel documentation is misleading, because the code example is broken. The spaces added break the globbing/regex used in the one actually embedded in the page.
The group-hover prefix is redundant and cause the colour to flicker
for the anchor link tag - the colour should actually stay the same
and only have it's opacity (visibility really) controlled via group-hover.
- simplify html
- fix rtl item alignment
- fix empty span tag when showDate is false
- align hover effect with other element, removes group hover underline
The previous method was not intuitive since there was nothing in the <a> tag,
and required group-xxx classes for every element.
The new pseudo element method fixes those problems, see:
https://kittygiraudel.com/2022/04/02/accessible-cards/
The `.Params.images` and `.Site.Params.images` have existed since the creation of the files
but have never been referenced in the documentation since their initial commit (3cc1569fc1)
Also, Meta tags are not valid inside card elements
"description": "Use the Chart.js library to embed charts into articles using simple structured data. Blowfish chart Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#chart ",
},
},
"email": {
"prefix": ["BFS-email", "HSC-email", "email"],
"body": [
"{{< email email=\"mailto:${1:hello@test.com}\" text=\"${2:text}\" subject=\"${3:Reply to awesome article}\" >}}$0",
],
"description": "Creates an obfuscated mailto link. Documentation: https://blowfish.page/docs/shortcodes/#email ",
},
"figure": {
"prefix": ["BFS-figure", "HSC-figure", "figure"],
"body": [
@@ -178,6 +185,53 @@
],
"description": "Output a set of up to three different colors. Blowfish swatches Shortcode. Documentation: https://blowfish.page/docs/shortcodes/#swatches ",
All development occurs on the `main` branch and new PRs should be forked from here.
### Bugs & other issues
#### Found a bug? 🐛
@@ -11,7 +13,6 @@
#### Have a patch that fixes an issue?
- Great! Open a new GitHub pull request with the patch.
- All development occurs on the `dev` branch and new PRs should be forked from here.
- The commands `npm run example`, `npm run example:core`, and `npm run example:production` can be used to test local changes using the example site.
- Ensure the PR description clearly describes the problem and solution. Include the relevant issue number, if applicable.
- **Before submitting**, check the [coding conventions](#coding-conventions) section below to learn more about coding and commit message expectations.
@@ -30,6 +31,17 @@
- If you have a general question, these should be asked using [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions). Feel free to open a [new discussion](https://github.com/nunocoracao/blowfish/discussions/new) to ask your question using the "Q&A" category.
- Be sure to check if your question has already been answered by searching [existing Q&A discussions](https://github.com/nunocoracao/blowfish/discussions/categories/q-a).
### Breaking changes
- We do not accept breaking changes unless they are strictly required to keep supporting the project (e.g. a dependency deprecating a feature we rely on).
- Changes that would cause existing user customizations to silently stop working (such as renaming partial paths, removing config options, or changing template signatures) will be rejected.
- If you're unsure whether your change is breaking, open a discussion first.
### Pull request guidelines
- Keep PRs focused on a single change. Do not bundle unrelated modifications (e.g. bug fix + version bump + new user entry) into the same PR.
- PRs that mix multiple unrelated changes will be closed and the author will be asked to split them.
[](https://github.com/gohugoio/hugo/releases/tag/v0.141.0)
Blowfish ist ein leistungsstarkes, schlankes Theme für [Hugo](https://gohugo.io). Es wurde mit Tailwind CSS entwickelt und bietet ein klares, minimalistisches Design, das Ihre Inhalte in den Vordergrund stellt.
Blowfish verfügt über eine [umfangreiche Dokumentation](https://blowfish.page/docs/), die alle Aspekte des Themes abdeckt. Lesen Sie unbedingt die [Dokumentation](https://blowfish.page/docs/), um mehr über die Verwendung des Themes und seiner Funktionen zu erfahren.
---
## Installation
Blowfish unterstützt mehrere Installationsmethoden - als git submodule, als Hugo Module oder als vollständig manuelle Installation.
Detaillierte Anweisungen für jede Methode finden Sie in der [Installations-Dokumentation](https://blowfish.page/docs/installation). Für die einfachste Einrichtung sollten Sie die Dokumentation konsultieren. Im Folgenden finden Sie eine Schnellstartanleitung mit Submodulen, wenn Sie git verwenden, oder Hugo Modules, wenn Sie bereits Erfahrung mit der Installation von Hugo-Themes haben.
### Schnellstart mit Blowfish Tools
> **Hinweis:** Stellen Sie sicher, dass Sie **Node.js**, **Git** und **Hugo** installiert haben und dass Sie ein neues Hugo-Projekt erstellt haben, bevor Sie fortfahren.
Wir haben gerade ein neues CLI-Tool gestartet, das Ihnen beim Einstieg in Blowfish hilft. Es erstellt ein neues Hugo-Projekt, installiert das Theme und richtet die Theme-Konfigurationsdateien für Sie ein. Es befindet sich noch in der Beta-Phase, also [melden Sie bitte alle Probleme, die Sie finden](https://github.com/nunocoracao/blowfish-tools).
Installieren Sie das CLI-Tool global mit npm (oder einem anderen Paketmanager):
```shell
npm i -g blowfish-tools
```
Führen Sie dann den Befehl `blowfish-tools` aus, um eine interaktive Sitzung zu starten, die Sie durch Erstellungs- und Konfigurationsanwendungsfälle führt.
```shell
blowfish-tools
```
Sie können auch den Befehl `blowfish-tools new` ausführen, um ein neues Hugo-Projekt zu erstellen und das Theme in einem Schritt zu installieren. Weitere Informationen finden Sie in der CLI-Hilfe.
```shell
blowfish-tools new mynewsite
```
### Schnellstart mit git submodules
> **Hinweis:** Stellen Sie sicher, dass Sie **Git** und **Hugo** installiert haben und dass Sie ein neues Hugo-Projekt erstellt haben, bevor Sie fortfahren.
1. Initialisieren Sie git aus Ihrem Projektverzeichnis:
```shell
git init
```
2. Konfigurieren Sie Blowfish als git submodule:
```shell
git submodule add -b main https://github.com/nunocoracao/blowfish.git themes/blowfish
```
3. Löschen Sie im Stammordner Ihrer Website die von Hugo generierte Datei `hugo.toml`. Kopieren Sie die `*.toml` Konfigurationsdateien aus dem Theme in Ihren `config/_default/` Ordner.
Sie finden diese Theme-Konfigurationsdateien im Hugo-Cache-Verzeichnis oder [laden Sie eine Kopie](https://github.com/nunocoracao/blowfish/releases/latest/download/config-default.zip) von GitHub herunter.
4. Folgen Sie den Anweisungen unter [Erste Schritte](https://blowfish.page/docs/getting-started/), um Ihre Website zu konfigurieren.
### Schnellstart mit Hugo
> **Hinweis:** Stellen Sie sicher, dass Sie **Go** und **Hugo** installiert haben und dass Sie ein neues Hugo-Projekt erstellt haben, bevor Sie fortfahren.
1. Initialisieren Sie Hugo Modules aus Ihrem Projektverzeichnis:
```shell
hugo mod init github.com/<username>/<repo-name>
```
2. Erstellen Sie `config/_default/module.toml` und fügen Sie Folgendes hinzu:
```toml
[[imports]]
path = "github.com/nunocoracao/blowfish/v2"
```
3. Starten Sie Ihren Server mit `hugo server` und das Theme wird automatisch heruntergeladen.
4. Löschen Sie im Stammordner Ihrer Website die von Hugo generierte Datei `hugo.toml`. Kopieren Sie die `*.toml` Konfigurationsdateien aus dem Theme in Ihren `config/_default/` Ordner.
> **Hinweis:** Überschreiben Sie nicht die oben erstellte Datei `module.toml`!
Sie finden diese Theme-Konfigurationsdateien im Hugo-Cache-Verzeichnis oder [laden Sie eine Kopie](https://github.com/nunocoracao/blowfish/releases/latest/download/config-default.zip) von GitHub herunter.
5. Folgen Sie den Anweisungen unter [Erste Schritte](https://blowfish.page/docs/getting-started/), um Ihre Website zu konfigurieren.
### Theme-Updates installieren
Wenn neue Versionen veröffentlicht werden, können Sie das Theme mit Hugo aktualisieren. Führen Sie einfach `hugo mod get -u` aus Ihrem Projektverzeichnis aus und das Theme wird automatisch auf die neueste Version aktualisiert.
Detaillierte [Update-Anweisungen](https://blowfish.page/docs/installation/#installing-updates) sind in der Dokumentation verfügbar.
---
## Mitwirken
Blowfish wird sich voraussichtlich im Laufe der Zeit weiterentwickeln. Ich beabsichtige, weiterhin Funktionen hinzuzufügen und nach Bedarf Änderungen vorzunehmen.
Melden Sie sich gerne mit Problemen oder Vorschlägen für neue Funktionen, die Sie gerne sehen würden.
- 🐛 **Fehlerberichte & Issues:** Verwenden Sie [GitHub Issues](https://github.com/nunocoracao/blowfish/issues)
- 💡 **Ideen für neue Funktionen:** Eröffnen Sie eine Diskussion auf [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions)
- 🙋♀️ **Allgemeine Fragen:** Gehen Sie zu [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions)
Wenn Sie in der Lage sind, einen Fehler zu beheben oder eine neue Funktion zu implementieren, sind Pull Requests zu diesem Zweck willkommen. Erfahren Sie mehr in den [Richtlinien für Mitwirkende](https://github.com/nunocoracao/blowfish/blob/main/CONTRIBUTING.md).
---
## Stargazers im Zeitverlauf
[](https://starchart.cc/nunocoracao/blowfish)
[](https://github.com/gohugoio/hugo/releases/tag/v0.141.0)
Blowfish está diseñado para ser un tema potente y ligero para [Hugo](https://gohugo.io). Está construido usando Tailwind CSS con un diseño limpio y minimalista que prioriza tu contenido.
Blowfish tiene [documentación extensa](https://blowfish.page/docs/) que cubre todos los aspectos del tema. Asegúrate de [leer la documentación](https://blowfish.page/docs/) para aprender más sobre cómo usar el tema y sus características.
---
## Instalación
Blowfish soporta varios métodos de instalación - como submódulo de git, módulo de Hugo, o como una instalación completamente manual.
Las instrucciones detalladas para cada método se pueden encontrar en la documentación de [Instalación](https://blowfish.page/docs/installation). Deberías consultar la documentación para obtener la experiencia de configuración más simple. A continuación se presenta una guía de inicio rápido usando submódulos si estás usando git, o módulos de Hugo si ya tienes confianza instalando temas de Hugo.
### Inicio rápido usando Blowfish Tools
> **Nota:** Asegúrate de tener **Node.js**, **Git** y **Hugo** instalados, y de haber creado un nuevo proyecto Hugo antes de continuar.
Acabamos de lanzar una nueva herramienta CLI para ayudarte a comenzar con Blowfish. Creará un nuevo proyecto Hugo, instalará el tema y configurará los archivos de configuración del tema por ti. Todavía está en beta, así que por favor [reporta cualquier problema que encuentres](https://github.com/nunocoracao/blowfish-tools).
Instala la herramienta CLI globalmente usando npm (u otro gestor de paquetes):
```shell
npm i -g blowfish-tools
```
Luego ejecuta el comando `blowfish-tools` para iniciar una ejecución interactiva que te guiará a través de los casos de uso de creación y configuración.
```shell
blowfish-tools
```
También puedes ejecutar el comando `blowfish-tools new` para crear un nuevo proyecto Hugo e instalar el tema de una sola vez. Consulta la ayuda de CLI para más información.
```shell
blowfish-tools new mynewsite
```
### Inicio rápido usando submódulos de git
> **Nota:** Asegúrate de tener **Git** y **Hugo** instalados, y de haber creado un nuevo proyecto Hugo antes de continuar.
1. Desde el directorio de tu proyecto, inicializa git:
```shell
git init
```
2. Configura Blowfish como un submódulo de git:
```shell
git submodule add -b main https://github.com/nunocoracao/blowfish.git themes/blowfish
```
3. En la carpeta raíz de tu sitio web, elimina el archivo `hugo.toml` que fue generado por Hugo. Copia los archivos de configuración `*.toml` del tema en tu carpeta `config/_default/`.
Encontrarás estos archivos de configuración del tema en el directorio de caché de Hugo, o [descarga una copia](https://github.com/nunocoracao/blowfish/releases/latest/download/config-default.zip) desde GitHub.
4. Sigue las instrucciones de [Primeros Pasos](https://blowfish.page/docs/getting-started/) para configurar tu sitio web.
### Inicio rápido usando Hugo
> **Nota:** Asegúrate de tener **Go** y **Hugo** instalados, y de haber creado un nuevo proyecto Hugo antes de continuar.
1. Desde el directorio de tu proyecto, inicializa los Módulos de Hugo:
```shell
hugo mod init github.com/<username>/<repo-name>
```
2. Crea `config/_default/module.toml` y agrega lo siguiente:
```toml
[[imports]]
path = "github.com/nunocoracao/blowfish/v2"
```
3. Inicia tu servidor usando `hugo server` y el tema se descargará automáticamente.
4. En la carpeta raíz de tu sitio web, elimina el archivo `hugo.toml` que fue generado por Hugo. Copia los archivos de configuración `*.toml` del tema en tu carpeta `config/_default/`.
> **Nota:** ¡No sobrescribas el archivo `module.toml` que creaste arriba!
Encontrarás estos archivos de configuración del tema en el directorio de caché de Hugo, o [descarga una copia](https://github.com/nunocoracao/blowfish/releases/latest/download/config-default.zip) desde GitHub.
5. Sigue las instrucciones de [Primeros Pasos](https://blowfish.page/docs/getting-started/) para configurar tu sitio web.
### Instalación de actualizaciones del tema
A medida que se publiquen nuevas versiones, puedes actualizar el tema usando Hugo. Simplemente ejecuta `hugo mod get -u` desde el directorio de tu proyecto y el tema se actualizará automáticamente a la última versión.
Las [instrucciones de actualización](https://blowfish.page/docs/installation/#installing-updates) detalladas están disponibles en la documentación.
---
## Contribuciones
Se espera que Blowfish evolucione con el tiempo. Tengo la intención de seguir agregando características y haciendo cambios según sea necesario.
Siéntete libre de ponerte en contacto con cualquier problema o sugerencia de nuevas características que te gustaría ver.
- 🐛 **Reportes de errores y problemas:** Usa [GitHub Issues](https://github.com/nunocoracao/blowfish/issues)
- 💡 **Ideas para nuevas características:** Abre una discusión en [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions)
- 🙋♀️ **Preguntas generales:** Dirígete a [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions)
Si puedes corregir un error o implementar una nueva característica, acepto PRs para este propósito. Aprende más en las [guías de contribución](https://github.com/nunocoracao/blowfish/blob/main/CONTRIBUTING.md).
---
## Stargazers a lo largo del tiempo
[](https://starchart.cc/nunocoracao/blowfish)
[](https://github.com/gohugoio/hugo/releases/tag/v0.141.0)
Blowfish est conçu pour être un thème puissant et léger pour [Hugo](https://gohugo.io). Il est construit avec Tailwind CSS avec un design épuré et minimaliste qui donne la priorité à votre contenu.
Blowfish dispose d'une [documentation complète](https://blowfish.page/docs/) qui couvre tous les aspects du thème. Assurez-vous de [lire la documentation](https://blowfish.page/docs/) pour en savoir plus sur l'utilisation du thème et de ses fonctionnalités.
---
## Installation
Blowfish prend en charge plusieurs méthodes d'installation - en tant que sous-module git, module Hugo, ou en tant qu'installation complètement manuelle.
Des instructions détaillées pour chaque méthode se trouvent dans la documentation [Installation](https://blowfish.page/docs/installation). Vous devriez consulter la documentation pour l'expérience de configuration la plus simple. Ci-dessous se trouve un guide de démarrage rapide utilisant les sous-modules si vous utilisez git, ou les modules Hugo si vous êtes déjà à l'aise avec l'installation de thèmes Hugo.
### Démarrage rapide avec Blowfish Tools
> **Note :** Assurez-vous d'avoir **Node.js**, **Git** et **Hugo** installés, et d'avoir créé un nouveau projet Hugo avant de continuer.
Nous venons de lancer un nouvel outil CLI pour vous aider à démarrer avec Blowfish. Il créera un nouveau projet Hugo, installera le thème et configurera les fichiers de configuration du thème pour vous. Il est encore en version bêta, veuillez donc [signaler tout problème que vous rencontrez](https://github.com/nunocoracao/blowfish-tools).
Installez l'outil CLI globalement en utilisant npm (ou un autre gestionnaire de paquets) :
```shell
npm i -g blowfish-tools
```
Ensuite, exécutez la commande `blowfish-tools` pour démarrer une exécution interactive qui vous guidera à travers les cas d'utilisation de création et de configuration.
```shell
blowfish-tools
```
Vous pouvez également exécuter la commande `blowfish-tools new` pour créer un nouveau projet Hugo et installer le thème en une seule fois. Consultez l'aide du CLI pour plus d'informations.
```shell
blowfish-tools new mynewsite
```
### Démarrage rapide avec les sous-modules git
> **Note :** Assurez-vous d'avoir **Git** et **Hugo** installés, et d'avoir créé un nouveau projet Hugo avant de continuer.
1. Depuis le répertoire de votre projet, initialisez git :
```shell
git init
```
2. Configurez Blowfish comme un sous-module git :
```shell
git submodule add -b main https://github.com/nunocoracao/blowfish.git themes/blowfish
```
3. Dans le dossier racine de votre site web, supprimez le fichier `hugo.toml` qui a été généré par Hugo. Copiez les fichiers de configuration `*.toml` du thème dans votre dossier `config/_default/`.
Vous trouverez ces fichiers de configuration du thème dans le répertoire cache de Hugo, ou [téléchargez une copie](https://github.com/nunocoracao/blowfish/releases/latest/download/config-default.zip) depuis GitHub.
4. Suivez les instructions [Pour commencer](https://blowfish.page/docs/getting-started/) pour configurer votre site web.
### Démarrage rapide avec Hugo
> **Note :** Assurez-vous d'avoir **Go** et **Hugo** installés, et d'avoir créé un nouveau projet Hugo avant de continuer.
1. Depuis le répertoire de votre projet, initialisez les modules Hugo :
```shell
hugo mod init github.com/<username>/<repo-name>
```
2. Créez `config/_default/module.toml` et ajoutez ce qui suit :
```toml
[[imports]]
path = "github.com/nunocoracao/blowfish/v2"
```
3. Démarrez votre serveur en utilisant `hugo server` et le thème sera téléchargé automatiquement.
4. Dans le dossier racine de votre site web, supprimez le fichier `hugo.toml` qui a été généré par Hugo. Copiez les fichiers de configuration `*.toml` du thème dans votre dossier `config/_default/`.
> **Note :** Ne remplacez pas le fichier `module.toml` que vous avez créé ci-dessus !
Vous trouverez ces fichiers de configuration du thème dans le répertoire cache de Hugo, ou [téléchargez une copie](https://github.com/nunocoracao/blowfish/releases/latest/download/config-default.zip) depuis GitHub.
5. Suivez les instructions [Pour commencer](https://blowfish.page/docs/getting-started/) pour configurer votre site web.
### Installation des mises à jour du thème
Au fur et à mesure que de nouvelles versions sont publiées, vous pouvez mettre à jour le thème en utilisant Hugo. Exécutez simplement `hugo mod get -u` depuis le répertoire de votre projet et le thème se mettra automatiquement à jour vers la dernière version.
Des [instructions de mise à jour](https://blowfish.page/docs/installation/#installing-updates) détaillées sont disponibles dans la documentation.
---
## Contribuer
Blowfish est destiné à évoluer au fil du temps. J'ai l'intention de continuer à ajouter des fonctionnalités et à apporter des modifications selon les besoins.
N'hésitez pas à me contacter pour tout problème ou suggestion de nouvelles fonctionnalités que vous aimeriez voir.
- 🐛 **Rapports de bugs et problèmes :** Utilisez [GitHub Issues](https://github.com/nunocoracao/blowfish/issues)
- 💡 **Idées de nouvelles fonctionnalités :** Ouvrez une discussion sur [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions)
- 🙋♀️ **Questions générales :** Rendez-vous sur [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions)
Si vous êtes en mesure de corriger un bug ou de mettre en œuvre une nouvelle fonctionnalité, j'accueille les PR à cette fin. Apprenez-en plus dans les [directives de contribution](https://github.com/nunocoracao/blowfish/blob/main/CONTRIBUTING.md).
---
## Évolution des stargazers
[](https://starchart.cc/nunocoracao/blowfish)
[](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
[](https://github.com/gohugoio/hugo/releases/tag/v0.141.0)
@@ -40,7 +40,8 @@ Blowfish dirancang sebagai tema yang kuat dan ringan untuk [Hugo](https://gohugo
- Daftar isi yang dapat digulir
- Dukungan untuk konten multibahasa termasuk bahasa RTL
- Kemampuan untuk menautkan ke artikel di situs web pihak ketiga
- Dukungan untuk beberapa shortcode seperti Galeri, Timeline, Kartu GitHub, dan Carousel
- Dukungan untuk beberapa shortcode seperti Galeri, Timeline, Kartu GitHub, dan Carousel
- Sintaks GitHub Alerts, 15 jenis, dukungan lipat
- Integrasi BuyMeACoffee
- Pencarian situs berbasis klien dengan Fuse.js
- Diagram dan visualisasi menggunakan Mermaid
@@ -77,7 +78,7 @@ Instruksi terperinci untuk setiap metode dapat ditemukan dalam [dokumentasi inst
### Instalasi Cepat Menggunakan Blowfish Tools
> **Catatan:** Pastikan Anda sudah menginstal **Node.js**, **Git**, **Go**, dan **Hugo**, serta telah membuat proyek Hugo sebelum melanjutkan.
> **Catatan:** Pastikan Anda sudah menginstal **Node.js**, **Git**, dan **Hugo**, serta telah membuat proyek Hugo sebelum melanjutkan.
Kami baru saja meluncurkan alat CLI baru untuk membantu Anda memulai dengan Blowfish. Ini akan membuat proyek Hugo baru, menginstal tema, dan mengatur file konfigurasi tema untuk Anda.
@@ -98,7 +99,7 @@ blowfish-tools new mynewsite
### Instalasi Cepat Menggunakan Git Submodules
> **Catatan:** Pastikan Anda sudah menginstal **Git**, **Go**, dan **Hugo**, serta telah membuat proyek Hugo sebelum melanjutkan.
> **Catatan:** Pastikan Anda sudah menginstal **Git** dan **Hugo**, serta telah membuat proyek Hugo sebelum melanjutkan.
1. Dari direktori proyek Anda, inisialisasi git:
```shell
@@ -110,7 +111,7 @@ blowfish-tools new mynewsite
git submodule add -b main https://github.com/nunocoracao/blowfish.git themes/blowfish
```
3. Hapus file `config.toml` di root proyek dan salin file `*.toml` dari tema ke dalam folder `config/_default/`.
3. Hapus file `hugo.toml` di root proyek dan salin file `*.toml` dari tema ke dalam folder `config/_default/`.
4. Ikuti petunjuk [Memulai](https://blowfish.page/docs/getting-started/) untuk mengonfigurasi situs web Anda.
[](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
[](https://github.com/gohugoio/hugo/releases/tag/v0.141.0)
[](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
[](https://github.com/gohugoio/hugo/releases/tag/v0.141.0)
@@ -45,6 +45,7 @@ Blowfish is designed to be a powerful, lightweight theme for [Hugo](https://gohu
- Multilingual content support including support for RTL languages
- Ability to link to posts on third-party websites
- Support for several shortcodes like Gallery, Timeline, GitHub cards, and Carousels
- GitHub Alerts syntax, 15 types, collapsible support
- Buymeacoffee integration
- Client-side site search powered by Fuse.js
- Diagrams and visualisations using Mermaid
@@ -81,7 +82,7 @@ Detailed instructions for each method can be found in the [Installation](https:/
### Quick start using Blowfish Tools
> **Note:** Ensure you have **Node.js**, **Git**, **Go** and **Hugo** installed, and that you have created a new Hugo project before proceeding.
> **Note:** Ensure you have **Node.js**, **Git** and **Hugo** installed, and that you have created a new Hugo project before proceeding.
We just launched a new CLI tool to help you get started with Blowfish. It will create a new Hugo project, install the theme and set up the theme configuration files for you. It's still in beta so please [report any issues you find](https://github.com/nunocoracao/blowfish-tools).
@@ -102,7 +103,7 @@ blowfish-tools new mynewsite
### Quick start using git submodules
> **Note:** Ensure you have **Git**, **Go**, and **Hugo** installed, and that you have created a new Hugo project before proceeding.
> **Note:** Ensure you have **Git** and **Hugo** installed, and that you have created a new Hugo project before proceeding.
1. From your project directory, initialise git:
@@ -116,7 +117,7 @@ blowfish-tools new mynewsite
git submodule add -b main https://github.com/nunocoracao/blowfish.git themes/blowfish
```
3. In the root folder of your website, delete the `config.toml` file that was generated by Hugo. Copy the `*.toml` config files from the theme into your `config/_default/` folder.
3. In the root folder of your website, delete the `hugo.toml` file that was generated by Hugo. Copy the `*.toml` config files from the theme into your `config/_default/` folder.
You will find these theme config files in the Hugo cache directory, or [download a copy](https://github.com/nunocoracao/blowfish/releases/latest/download/config-default.zip) from GitHub.
[](https://github.com/gohugoio/hugo/releases/tag/v0.141.0)
Blowfish foi projetado para ser um tema poderoso e leve para [Hugo](https://gohugo.io). É construído usando Tailwind CSS com um design limpo e minimalista que prioriza o seu conteúdo.
Blowfish possui [documentação extensa](https://blowfish.page/docs/) que cobre todos os aspectos do tema. Certifique-se de [ler a documentação](https://blowfish.page/docs/) para saber mais sobre como usar o tema e seus recursos.
---
## Instalação
Blowfish suporta vários métodos de instalação - como submódulo git, Hugo Module, ou como uma instalação completamente manual.
Instruções detalhadas para cada método podem ser encontradas na documentação de [Instalação](https://blowfish.page/docs/installation). Você deve consultar a documentação para a experiência de configuração mais simples. Abaixo está um guia de início rápido usando submódulos se você estiver usando git, ou Hugo modules se você já estiver confiante em instalar temas Hugo.
### Início rápido usando Blowfish Tools
> **Nota:** Certifique-se de ter **Node.js**, **Git** e **Hugo** instalados, e que você criou um novo projeto Hugo antes de prosseguir.
Acabamos de lançar uma nova ferramenta CLI para ajudá-lo a começar com Blowfish. Ela criará um novo projeto Hugo, instalará o tema e configurará os arquivos de configuração do tema para você. Ainda está em beta, então por favor [reporte quaisquer problemas que encontrar](https://github.com/nunocoracao/blowfish-tools).
Instale a ferramenta CLI globalmente usando npm (ou outro gerenciador de pacotes):
```shell
npm i -g blowfish-tools
```
Em seguida, execute o comando `blowfish-tools` para iniciar uma execução interativa que o guiará pelos casos de uso de criação e configuração.
```shell
blowfish-tools
```
Você também pode executar o comando `blowfish-tools new` para criar um novo projeto Hugo e instalar o tema de uma vez. Verifique a ajuda da CLI para mais informações.
```shell
blowfish-tools new mynewsite
```
### Início rápido usando submódulos git
> **Nota:** Certifique-se de ter **Git** e **Hugo** instalados, e que você criou um novo projeto Hugo antes de prosseguir.
1. Do diretório do seu projeto, inicialize o git:
```shell
git init
```
2. Configure Blowfish como um submódulo git:
```shell
git submodule add -b main https://github.com/nunocoracao/blowfish.git themes/blowfish
```
3. Na pasta raiz do seu site, exclua o arquivo `hugo.toml` que foi gerado pelo Hugo. Copie os arquivos de configuração `*.toml` do tema para sua pasta `config/_default/`.
Você encontrará esses arquivos de configuração do tema no diretório de cache do Hugo, ou [baixe uma cópia](https://github.com/nunocoracao/blowfish/releases/latest/download/config-default.zip) do GitHub.
4. Siga as instruções de [Primeiros Passos](https://blowfish.page/docs/getting-started/) para configurar seu site.
### Início rápido usando Hugo
> **Nota:** Certifique-se de ter **Go** e **Hugo** instalados, e que você criou um novo projeto Hugo antes de prosseguir.
1. Do diretório do seu projeto, inicialize os Hugo Modules:
```shell
hugo mod init github.com/<username>/<repo-name>
```
2. Crie `config/_default/module.toml` e adicione o seguinte:
```toml
[[imports]]
path = "github.com/nunocoracao/blowfish/v2"
```
3. Inicie seu servidor usando `hugo server` e o tema será baixado automaticamente.
4. Na pasta raiz do seu site, exclua o arquivo `hugo.toml` que foi gerado pelo Hugo. Copie os arquivos de configuração `*.toml` do tema para sua pasta `config/_default/`.
> **Nota:** Não sobrescreva o arquivo `module.toml` que você criou acima!
Você encontrará esses arquivos de configuração do tema no diretório de cache do Hugo, ou [baixe uma cópia](https://github.com/nunocoracao/blowfish/releases/latest/download/config-default.zip) do GitHub.
5. Siga as instruções de [Primeiros Passos](https://blowfish.page/docs/getting-started/) para configurar seu site.
### Instalando atualizações do tema
À medida que novos lançamentos são publicados, você pode atualizar o tema usando Hugo. Simplesmente execute `hugo mod get -u` do diretório do seu projeto e o tema será atualizado automaticamente para a versão mais recente.
[Instruções detalhadas de atualização](https://blowfish.page/docs/installation/#installing-updates) estão disponíveis na documentação.
---
## Contribuindo
Blowfish deve evoluir ao longo do tempo. Pretendo continuar adicionando recursos e fazendo alterações conforme necessário.
Sinta-se à vontade para entrar em contato com quaisquer problemas ou sugestões de novos recursos que você gostaria de ver.
- 🐛 **Relatórios de bugs e problemas:** Use [GitHub Issues](https://github.com/nunocoracao/blowfish/issues)
- 💡 **Ideias para novos recursos:** Abra uma discussão em [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions)
- 🙋♀️ **Perguntas gerais:** Vá para [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions)
Se você for capaz de corrigir um bug ou implementar um novo recurso, dou as boas-vindas a PRs para este propósito. Saiba mais nas [diretrizes de contribuição](https://github.com/nunocoracao/blowfish/blob/main/CONTRIBUTING.md).
---
## Stargazers ao longo do tempo
[](https://starchart.cc/nunocoracao/blowfish)
[](https://github.com/gohugoio/hugo/releases/tag/v0.141.0)
Blowfish foi desenhado para ser um tema poderoso e leve para [Hugo](https://gohugo.io). É construído com Tailwind CSS com um design limpo e minimalista que prioriza o seu conteúdo.
Blowfish tem [documentação extensa](https://blowfish.page/docs/) que cobre todos os aspetos do tema. Certifique-se de [ler a documentação](https://blowfish.page/docs/) para saber mais sobre como usar o tema e as suas funcionalidades.
---
## Instalação
Blowfish suporta vários métodos de instalação - como um submódulo git, um Módulo Hugo, ou como uma instalação completamente manual.
Instruções detalhadas para cada método podem ser encontradas na documentação de [Instalação](https://blowfish.page/docs/installation). Deve consultar a documentação para a experiência de configuração mais simples. Abaixo está um guia de início rápido usando submódulos se estiver a usar git, ou módulos Hugo se já está confiante na instalação de temas Hugo.
### Início rápido usando Blowfish Tools
> **Nota:** Certifique-se de que tem **Node.js**, **Git** e **Hugo** instalados, e que criou um novo projeto Hugo antes de continuar.
Acabámos de lançar uma nova ferramenta CLI para ajudá-lo a começar com Blowfish. Ela irá criar um novo projeto Hugo, instalar o tema e configurar os ficheiros de configuração do tema para si. Ainda está em beta por isso [reporte quaisquer problemas que encontrar](https://github.com/nunocoracao/blowfish-tools).
Instale a ferramenta CLI globalmente usando npm (ou outro gestor de pacotes):
```shell
npm i -g blowfish-tools
```
Depois execute o comando `blowfish-tools` para iniciar uma execução interativa que irá guiá-lo através da criação e casos de uso de configuração.
```shell
blowfish-tools
```
Também pode executar o comando `blowfish-tools new` para criar um novo projeto Hugo e instalar o tema de uma só vez. Consulte a ajuda da CLI para mais informações.
```shell
blowfish-tools new mynewsite
```
### Início rápido usando submódulos git
> **Nota:** Certifique-se de que tem **Git** e **Hugo** instalados, e que criou um novo projeto Hugo antes de continuar.
1. A partir do diretório do seu projeto, inicialize o git:
```shell
git init
```
2. Configure Blowfish como um submódulo git:
```shell
git submodule add -b main https://github.com/nunocoracao/blowfish.git themes/blowfish
```
3. Na pasta raiz do seu site, elimine o ficheiro `hugo.toml` que foi gerado pelo Hugo. Copie os ficheiros de configuração `*.toml` do tema para a sua pasta `config/_default/`.
Irá encontrar estes ficheiros de configuração do tema no diretório de cache do Hugo, ou [descarregue uma cópia](https://github.com/nunocoracao/blowfish/releases/latest/download/config-default.zip) do GitHub.
4. Siga as instruções de [Introdução](https://blowfish.page/docs/getting-started/) para configurar o seu site.
### Início rápido usando Hugo
> **Nota:** Certifique-se de que tem **Go** e **Hugo** instalados, e que criou um novo projeto Hugo antes de continuar.
1. A partir do diretório do seu projeto, inicialize os Módulos Hugo:
```shell
hugo mod init github.com/<username>/<repo-name>
```
2. Crie `config/_default/module.toml` e adicione o seguinte:
```toml
[[imports]]
path = "github.com/nunocoracao/blowfish/v2"
```
3. Inicie o seu servidor usando `hugo server` e o tema será descarregado automaticamente.
4. Na pasta raiz do seu site, elimine o ficheiro `hugo.toml` que foi gerado pelo Hugo. Copie os ficheiros de configuração `*.toml` do tema para a sua pasta `config/_default/`.
> **Nota:** Não sobrescreva o ficheiro `module.toml` que criou acima!
Irá encontrar estes ficheiros de configuração do tema no diretório de cache do Hugo, ou [descarregue uma cópia](https://github.com/nunocoracao/blowfish/releases/latest/download/config-default.zip) do GitHub.
5. Siga as instruções de [Introdução](https://blowfish.page/docs/getting-started/) para configurar o seu site.
### Instalar atualizações do tema
À medida que novas versões são publicadas, pode atualizar o tema usando Hugo. Simplesmente execute `hugo mod get -u` a partir do diretório do seu projeto e o tema será automaticamente atualizado para a versão mais recente.
[Instruções detalhadas de atualização](https://blowfish.page/docs/installation/#installing-updates) estão disponíveis na documentação.
---
## Contribuir
Espera-se que Blowfish evolua ao longo do tempo. Pretendo continuar a adicionar funcionalidades e fazer alterações conforme necessário.
Sinta-se à vontade para entrar em contacto com quaisquer problemas ou sugestões para novas funcionalidades que gostaria de ver.
- 🐛 **Relatórios de erros & problemas:** Use [GitHub Issues](https://github.com/nunocoracao/blowfish/issues)
- 💡 **Ideias para novas funcionalidades:** Abra uma discussão em [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions)
- 🙋♀️ **Questões gerais:** Dirija-se a [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions)
Se conseguir corrigir um erro ou implementar uma nova funcionalidade, aceito PRs para este propósito. Saiba mais nas [diretrizes de contribuição](https://github.com/nunocoracao/blowfish/blob/main/CONTRIBUTING.md).
---
## Stargazers ao longo do tempo
[](https://starchart.cc/nunocoracao/blowfish)
[](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
[](https://github.com/gohugoio/hugo/releases/tag/v0.141.0)
vare,t;e=this,t=function(){"use strict";functione(e,t){varn=Object.keys(e);if(Object.getOwnPropertySymbols){varr=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){returnObject.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}returnn}functiont(t){for(varn=1;n<arguments.length;n++){varr=null!=arguments[n]?arguments[n]:{};n%2?e(Object(r),!0).forEach((function(e){o(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):e(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}returnt}functionn(e){returnn="function"==typeofSymbol&&"symbol"==typeofSymbol.iterator?function(e){returntypeofe}:function(e){returne&&"function"==typeofSymbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeofe},n(e)}functionr(e,t){if(!(einstanceoft))thrownewTypeError("Cannot call a class as a function")}functioni(e,t){for(varn=0;n<t.length;n++){varr=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"inr&&(r.writable=!0),Object.defineProperty(e,v(r.key),r)}}functionu(e,t,n){returnt&&i(e.prototype,t),n&&i(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}functiono(e,t,n){return(t=v(t))ine?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}functionc(e,t){if("function"!=typeoft&&null!==t)thrownewTypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&s(e,t)}functiona(e){returna=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){returne.__proto__||Object.getPrototypeOf(e)},a(e)}functions(e,t){returns=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){returne.__proto__=t,e},s(e,t)}functionh(e,t){if(t&&("object"==typeoft||"function"==typeoft))returnt;if(void0!==t)thrownewTypeError("Derived constructors may only return object or undefined");returnfunction(e){if(void0===e)thrownewReferenceError("this hasn't been initialised - super() hasn't been called");returne}(e)}functionl(e){vart=function(){if("undefined"==typeofReflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeofProxy)return!0;try{returnBoolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();returnfunction(){varn,r=a(e);if(t){vari=a(this).constructor;n=Reflect.construct(r,arguments,i)}elsen=r.apply(this,arguments);returnh(this,n)}}functionf(e){returnfunction(e){if(Array.isArray(e))returnd(e)}(e)||function(e){if("undefined"!=typeofSymbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])returnArray.from(e)}(e)||function(e,t){if(e){if("string"==typeofe)returnd(e,t);varn=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void0}}(e)||function(){thrownewTypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}functiond(e,t){(null==t||t>e.length)&&(t=e.length);for(varn=0,r=newArray(t);n<t;n++)r[n]=e[n];returnr}functionv(e){vart=function(e,t){if("object"!=typeofe||null===e)returne;varn=e[Symbol.toPrimitive];if(void0!==n){varr=n.call(e,t||"default");if("object"!=typeofr)returnr;thrownewTypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeoft?t:String(t)}functiong(e){returnArray.isArray?Array.isArray(e):"[object Array]"===M(e)}vary=1/0;functionp(e){returnnull==e?"":function(e){if("string"==typeofe)returne;vart=e+"";return"0"==t&&1/e==-y?"-0":t}(e)}functionA(e){return"string"==typeofe}functionm(e){return"number"==typeofe}functionC(e){return!0===e||!1===e||function(e){returnk(e)&&null!==e}(e)&&"[object Boolean]"==M(e)}functionk(e){return"object"===n(e)}functionE(e){returnnull!=e}functionF(e){return!e.trim().length}functionM(e){returnnull==e?void0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}varb=function(e){return"Missing ".concat(e," property in key")},D=function(e){return"Property 'weight' in key '".concat(e,"' must be a positive integer")},B=Object.prototype.hasOwnProperty,x=function(){functione(t){varn=this;r(this,e),this._keys=[],this._keyMap={};vari=0;t.forEach((function(e){vart=w(e);n._keys.push(t),n._keyMap[t.id]=t,i+=t.weight})),this._keys.forEach((function(e){e.weight/=i}))}returnu(e,[{key:"get",value:function(e){returnthis._keyMap[e]}},{key:"keys",value:function(){returnthis._keys}},{key:"toJSON",value:function(){returnJSON.stringify(this._keys)}}]),e}();functionw(e){vart=null,n=null,r=null,i=1,u=null;if(A(e)||g(e))r=e,t=S(e),n=L(e);else{if(!B.call(e,"name"))thrownewErLine truncated
vare,t;e=this,t=function(){"use strict";functione(e,t){varn=Object.keys(e);if(Object.getOwnPropertySymbols){varr=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){returnObject.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}returnn}functiont(t){for(varn=1;n<arguments.length;n++){varr=null!=arguments[n]?arguments[n]:{};n%2?e(Object(r),!0).forEach((function(e){o(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):e(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}returnt}functionn(e){returnn="function"==typeofSymbol&&"symbol"==typeofSymbol.iterator?function(e){returntypeofe}:function(e){returne&&"function"==typeofSymbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeofe},n(e)}functionr(e,t){if(!(einstanceoft))thrownewTypeError("Cannot call a class as a function")}functioni(e,t){for(varn=0;n<t.length;n++){varr=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"inr&&(r.writable=!0),Object.defineProperty(e,v(r.key),r)}}functionu(e,t,n){returnt&&i(e.prototype,t),n&&i(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}functiono(e,t,n){return(t=v(t))ine?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}functionc(e,t){if("function"!=typeoft&&null!==t)thrownewTypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&a(e,t)}functions(e){returns=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){returne.__proto__||Object.getPrototypeOf(e)},s(e)}functiona(e,t){returna=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){returne.__proto__=t,e},a(e,t)}functionh(e,t){if(t&&("object"==typeoft||"function"==typeoft))returnt;if(void0!==t)thrownewTypeError("Derived constructors may only return object or undefined");returnfunction(e){if(void0===e)thrownewReferenceError("this hasn't been initialised - super() hasn't been called");returne}(e)}functionl(e){vart=function(){if("undefined"==typeofReflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeofProxy)return!0;try{returnBoolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();returnfunction(){varn,r=s(e);if(t){vari=s(this).constructor;n=Reflect.construct(r,arguments,i)}elsen=r.apply(this,arguments);returnh(this,n)}}functionf(e){returnfunction(e){if(Array.isArray(e))returnd(e)}(e)||function(e){if("undefined"!=typeofSymbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])returnArray.from(e)}(e)||function(e,t){if(e){if("string"==typeofe)returnd(e,t);varn=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void0}}(e)||function(){thrownewTypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}functiond(e,t){(null==t||t>e.length)&&(t=e.length);for(varn=0,r=newArray(t);n<t;n++)r[n]=e[n];returnr}functionv(e){vart=function(e,t){if("object"!=typeofe||null===e)returne;varn=e[Symbol.toPrimitive];if(void0!==n){varr=n.call(e,t||"default");if("object"!=typeofr)returnr;thrownewTypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeoft?t:String(t)}functiong(e){returnArray.isArray?Array.isArray(e):"[object Array]"===M(e)}vary=1/0;functionp(e){returnnull==e?"":function(e){if("string"==typeofe)returne;vart=e+"";return"0"==t&&1/e==-y?"-0":t}(e)}functionA(e){return"string"==typeofe}functionm(e){return"number"==typeofe}functionC(e){return!0===e||!1===e||function(e){returnk(e)&&null!==e}(e)&&"[object Boolean]"==M(e)}functionk(e){return"object"===n(e)}functionF(e){returnnull!=e}functionb(e){return!e.trim().length}functionM(e){returnnull==e?void0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}varE=function(e){return"Missing ".concat(e," property in key")},D=function(e){return"Property 'weight' in key '".concat(e,"' must be a positive integer")},B=Object.prototype.hasOwnProperty,x=function(){functione(t){varn=this;r(this,e),this._keys=[],this._keyMap={};vari=0;t.forEach((function(e){vart=_(e);n._keys.push(t),n._keyMap[t.id]=t,i+=t.weight})),this._keys.forEach((function(e){e.weight/=i}))}returnu(e,[{key:"get",value:function(e){returnthis._keyMap[e]}},{key:"keys",value:function(){returnthis._keys}},{key:"toJSON",value:function(){returnJSON.stringify(this._keys)}}]),e}();function_(e){vart=null,n=null,r=null,i=1,u=null;if(A(e)||g(e))r=e,t=S(e),n=w(e);else{if(!B.call(e,"name"))thrownewErLine truncated
/*! jQuery v3.7.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween | (c) OpenJS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeofmodule&&"object"==typeofmodule.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)thrownewError("jQuery requires a window with a document");returnt(e)}:t(e)}("undefined"!=typeofwindow?window:this,function(ie,e){"use strict";varoe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){returnoe.flat.call(e)}:function(e){returnoe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeofe&&"number"!=typeofe.nodeType&&"function"!=typeofe.item},y=function(e){returnnull!=e&&e===e.window},m=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};functionb(e,t,n){varr,i,o=(n=n||m).createElement("script");if(o.text=e,t)for(rinu)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}functionx(e){returnnull==e?e+"":"object"==typeofe||"function"==typeofe?n[i.call(e)]||"object":typeofe}vart="3.7.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween",l=/HTML$/i,ce=function(e,t){returnnewce.fn.init(e,t)};functionc(e){vart=!!e&&"length"ine&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeoft&&0<t&&t-1ine)}functionfe(e,t){returne.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}ce.fn=ce.prototype={jquery:t,constructor:ce,length:0,toArray:function(){returnae.call(this)},get:function(e){returnnull==e?ae.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){vart=ce.merge(this.constructor(),e);returnt.prevObject=this,t},each:function(e){returnce.each(this,e)},map:function(n){returnthis.pushStack(ce.map(this,function(e,t){returnn.call(e,t,e)}))},slice:function(){returnthis.pushStack(ae.apply(this,arguments))},first:function(){returnthis.eq(0)},last:function(){returnthis.eq(-1)},even:function(){returnthis.pushStack(ce.grep(this,function(e,t){return(t+1)%2}))},odd:function(){returnthis.pushStack(ce.grep(this,function(e,t){returnt%2}))},eq:function(e){vart=this.length,n=+e+(e<0?t:0);returnthis.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){returnthis.prevObject||this.constructor()},push:s,sort:oe.sort,splice:oe.splice},ce.extend=ce.fn.extend=function(){vare,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeofa&&(l=a,a=arguments[s]||{},s++),"object"==typeofa||v(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(tine)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(ce.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||ce.isPlainObject(n)?n:{},i=!1,a[t]=ce.extend(l,o,r)):void0!==r&&(a[t]=r));returna},ce.extend({expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){thrownewError(e)},noop:function(){},isPlainObject:function(e){vart,n;return!(!e||"[object Object]"!==i.call(e))&&(!(t=r(e))||"function"==typeof(n=ue.call(t,"constructor")&&t.constructor)&&o.call(n)===a)},isEmptyObject:function(e){vart;for(tine)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){varn,r=0;if(c(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}elsefor(rine)if(!1===t.call(e[r],r,e[r]))break;returne},text:function(e){vart,n="",r=0,i=e.nodeType;if(!i)while(t=e[r++])n+=ce.text(t);return1===i||11===i?e.textContent:9===i?e.documentElement.textContent:3===i||4===i?e.nodeValue:n},makeArray:function(e,t){varn=t||[];returnnull!=e&&(c(Object(e))?ce.merge(n,"string"==typeofe?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){returnnull==t?-1:se.call(t,e,n)},isXMLDoc:function(e){vart=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!l.test(t||n&&n.nodeName||"HTML")},merge:function(e,t){for(varn=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];returne.length=i,e},grep:function(e,t,n){for(varr=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);returnr},map:function(e,t,n){varr,i,o=0,a=[];if(c(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);elsefor(oine)null!=(i=t(e[o],o,n))&&a.push(i);returng(a)},guid:1,support:le}),"function"==typeofSymbol&&(ce.fn[Symbol.iterator]=oe[Symbol.iterator]),ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});varde=oe.pop,pe=oe.sort,he=oe.splice,ge="[\\x20\\t\\r\\n\\f]",ve=newRegExp("^"+ge+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ge+"+$","g");ce.contains=function(e,t){varn=t&&t.parentNode;returne===n||!(!n||1!==n.nodeType||!(e.contains?e.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))};varf=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;functiond(e,t){returnt?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}ce.escapeSelector=function(e){return(e+Line truncated
!function(e,t){"object"==typeofexports&&"object"==typeofmodule?module.exports=t(require("katex")):"function"==typeofdefine&&define.amd?define(["katex"],t):"object"==typeofexports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeofself?self:this,(function(e){returnfunction(){"use strict";vart={757:function(t){t.exports=e}},n={};functionr(e){varo=n[e];if(void0!==o)returno.exports;vari=n[e]={exports:{}};returnt[e](i,i.exports,r),i.exports}r.n=function(e){vart=e&&e.__esModule?function(){returne.default}:function(){returne};returnr.d(t,{a:t}),t},r.d=function(e,t){for(varnint)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){returnObject.prototype.hasOwnProperty.call(e,t)};varo={};r.d(o,{default:function(){returnp}});vari=r(757),a=r.n(i);constl=function(e,t,n){letr=n,o=0;consti=e.length;for(;r<t.length;){constn=t[r];if(o<=0&&t.slice(r,r+i)===e)returnr;"\\"===n?r++:"{"===n?o++:"}"===n&&o--,r++}return-1},s=/^\\begin{/;vard=function(e,t){letn;constr=[],o=newRegExp("("+t.map((e=>e.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"))).join("|")+")");for(;n=e.search(o),-1!==n;){n>0&&(r.push({type:"text",data:e.slice(0,n)}),e=e.slice(n));consto=t.findIndex((t=>e.startsWith(t.left)));if(n=l(t[o].right,e,t[o].left.length),-1===n)break;consti=e.slice(0,n+t[o].right.length),a=s.test(i)?i:e.slice(t[o].left.length,n);r.push({type:"math",data:a,rawData:i,display:t[o].display}),e=e.slice(n+t[o].right.length)}return""!==e&&r.push({type:"text",data:e}),r};constc=function(e,t){constn=d(e,t.delimiters);if(1===n.length&&"text"===n[0].type)returnnull;constr=document.createDocumentFragment();for(lete=0;e<n.length;e++)if("text"===n[e].type)r.appendChild(document.createTextNode(n[e].data));else{consto=document.createElement("span");leti=n[e].data;t.displayMode=n[e].display;try{t.preProcess&&(i=t.preProcess(i)),a().render(i,o,t)}catch(o){if(!(oinstanceofa().ParseError))throwo;t.errorCallback("KaTeX auto-render: Failed to parse `"+n[e].data+"` with ",o),r.appendChild(document.createTextNode(n[e].rawData));continue}r.appendChild(o)}returnr},f=function(e,t){for(letn=0;n<e.childNodes.length;n++){constr=e.childNodes[n];if(3===r.nodeType){leto=r.textContent,i=r.nextSibling,a=0;for(;i&&i.nodeType===Node.TEXT_NODE;)o+=i.textContent,i=i.nextSibling,a++;constl=c(o,t);if(l){for(lete=0;e<a;e++)r.nextSibling.remove();n+=l.childNodes.length-1,e.replaceChild(l,r)}elsen+=a}elseif(1===r.nodeType){conste=" "+r.className+" ";-1===t.ignoredTags.indexOf(r.nodeName.toLowerCase())&&t.ignoredClasses.every((t=>-1===e.indexOf(" "+t+" ")))&&f(r,t)}}};varp=function(e,t){if(!e)thrownewError("No element provided to render");constn={};for(consteint)t.hasOwnProperty(e)&&(n[e]=t[e]);n.delimiters=n.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],n.ignoredTags=n.ignoredTags||["script","noscript","style","textarea","pre","code","option"],n.ignoredClasses=n.ignoredClasses||[],n.errorCallback=n.errorCallback||console.error,n.macros=n.macros||{},f(e,n)};returno=o.default}()}));
!function(e,t){"object"==typeofexports&&"object"==typeofmodule?module.exports=t(require("katex")):"function"==typeofdefine&&define.amd?define(["katex"],t):"object"==typeofexports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeofself?self:this,function(e){returnfunction(){"use strict";vart={757:function(t){t.exports=e}},n={};functionr(e){varo=n[e];if(void0!==o)returno.exports;vari=n[e]={exports:{}};returnt[e](i,i.exports,r),i.exports}r.n=function(e){vart=e&&e.__esModule?function(){returne.default}:function(){returne};returnr.d(t,{a:t}),t},r.d=function(e,t){for(varnint)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){returnObject.prototype.hasOwnProperty.call(e,t)};varo={};r.d(o,{default:function(){returnp}});vari=r(757),a=r.n(i);constl=function(e,t,n){letr=n,o=0;consti=e.length;for(;r<t.length;){constn=t[r];if(o<=0&&t.slice(r,r+i)===e)returnr;"\\"===n?r++:"{"===n?o++:"}"===n&&o--,r++}return-1},s=/^\\begin{/;vard=function(e,t){letn;constr=[],o=newRegExp("("+t.map(e=>e.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")).join("|")+")");for(;n=e.search(o),-1!==n;){n>0&&(r.push({type:"text",data:e.slice(0,n)}),e=e.slice(n));consto=t.findIndex(t=>e.startsWith(t.left));if(n=l(t[o].right,e,t[o].left.length),-1===n)break;consti=e.slice(0,n+t[o].right.length),a=s.test(i)?i:e.slice(t[o].left.length,n);r.push({type:"math",data:a,rawData:i,display:t[o].display}),e=e.slice(n+t[o].right.length)}return""!==e&&r.push({type:"text",data:e}),r};constc=function(e,t){constn=d(e,t.delimiters);if(1===n.length&&"text"===n[0].type)returnnull;constr=document.createDocumentFragment();for(lete=0;e<n.length;e++)if("text"===n[e].type)r.appendChild(document.createTextNode(n[e].data));else{consto=document.createElement("span");leti=n[e].data;t.displayMode=n[e].display;try{t.preProcess&&(i=t.preProcess(i)),a().render(i,o,t)}catch(o){if(!(oinstanceofa().ParseError))throwo;t.errorCallback("KaTeX auto-render: Failed to parse `"+n[e].data+"` with ",o),r.appendChild(document.createTextNode(n[e].rawData));continue}r.appendChild(o)}returnr},f=function(e,t){for(leto=0;o<e.childNodes.length;o++){consti=e.childNodes[o];if(3===i.nodeType){varn;leta=null!=(n=i.textContent)?n:"",l=i.nextSibling,s=0;for(;l&&l.nodeType===Node.TEXT_NODE;){varr;a+=null!=(r=l.textContent)?r:"",l=l.nextSibling,s++}constd=c(a,t);if(d){for(lete=0;e<s;e++)i.nextSibling.remove();o+=d.childNodes.length-1,e.replaceChild(d,i)}elseo+=s}elseif(1===i.nodeType){conste=" "+i.className+" ";!t.ignoredTags.has(i.nodeName.toLowerCase())&&t.ignoredClasses.every(t=>!e.includes(" "+t+" "))&&f(i,t)}}};varp=function(e,t){if(!e)thrownewError("No element provided to render");constn={};Object.assign(n,t),n.delimiters=n.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],n.ignoredTags=newSet((null==t?void0:t.ignoredTags)||["script","noscript","style","textarea","pre","code","option"]),n.ignoredClasses=n.ignoredClasses||[],n.errorCallback=n.errorCallback||console.error,n.macros=n.macros||{},f(e,n)};returno=o.default}()});
!function(e,t){"object"==typeofexports&&"object"==typeofmodule?module.exports=t():"function"==typeofdefine&&define.amd?define([],t):"object"==typeofexports?exports.katex=t():e.katex=t()}("undefined"!=typeofself?self:this,(function(){returnfunction(){"use strict";vare={d:function(t,r){for(varninr)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){returnObject.prototype.hasOwnProperty.call(e,t)}},t={};e.d(t,{default:function(){returnWn}});classr{constructor(e,t){this.name=void0,this.position=void0,this.length=void0,this.rawMessage=void0;letn,o,s="KaTeX parse error: "+e;consti=t&&t.loc;if(i&&i.start<=i.end){conste=i.lexer.input;n=i.start,o=i.end,n===e.length?s+=" at end of input: ":s+=" at position "+(n+1)+": ";constt=e.slice(n,o).replace(/[^]/g,"$&\u0332");letr,a;r=n>15?"\u2026"+e.slice(n-15,n):e.slice(0,n),a=o+15<e.length?e.slice(o,o+15)+"\u2026":e.slice(o),s+=r+t+a}consta=newError(s);returna.name="ParseError",a.__proto__=r.prototype,a.position=n,null!=n&&null!=o&&(a.length=o-n),a.rawMessage=e,a}}r.prototype.__proto__=Error.prototype;varn=r;consto=/([A-Z])/g,s={"&":"&",">":">","<":"<",'"':""","'":"'"},i=/[&><"']/g;consta=function(e){return"ordgroup"===e.type||"color"===e.type?1===e.body.length?a(e.body[0]):e:"font"===e.type?a(e.body):e};varl={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){returnvoid0===e?t:e},escape:function(e){returnString(e).replace(i,(e=>s[e]))},hyphenate:function(e){returne.replace(o,"-$1").toLowerCase()},getBaseElem:a,isCharacterBox:function(e){constt=a(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){constt=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);returnt?":"!==t[2]?null:/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?t[1].toLowerCase():null:"_relative"}};consth={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand <n>",cliProcessor:e=>"Infinity"===e?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};functionc(e){if(e.default)returne.default;constt=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeofr)returnr.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return0;case"object":return{}}}classm{constructor(e){this.displayMode=void0,this.output=void0,this.leqno=void0,this.fleqn=void0,this.throwOnError=void0Line truncated
!function(e,t){"object"==typeofexports&&"object"==typeofmodule?module.exports=t():"function"==typeofdefine&&define.amd?define([],t):"object"==typeofexports?exports.katex=t():e.katex=t()}("undefined"!=typeofself?self:this,function(){returnfunction(){"use strict";vare={d:function(t,r){for(varninr)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){returnObject.prototype.hasOwnProperty.call(e,t)}},t={};e.d(t,{default:function(){returnio}});classrextendsError{constructor(e,t){letn,o,s="KaTeX parse error: "+e;consti=t&&t.loc;if(i&&i.start<=i.end){conste=i.lexer.input;n=i.start,o=i.end,n===e.length?s+=" at end of input: ":s+=" at position "+(n+1)+": ";constt=e.slice(n,o).replace(/[^]/g,"$&\u0332");letr,l;r=n>15?"\u2026"+e.slice(n-15,n):e.slice(0,n),l=o+15<e.length?e.slice(o,o+15)+"\u2026":e.slice(o),s+=r+t+l}super(s),this.name="ParseError",Object.setPrototypeOf(this,r.prototype),this.position=n,null!=n&&null!=o&&(this.length=o-n),this.rawMessage=e}}varn=r;consto=/([A-Z])/g,s=e=>e.replace(o,"-$1").toLowerCase(),i={"&":"&",">":">","<":"<",'"':""","'":"'"},l=/[&><"']/g,a=e=>String(e).replace(l,e=>i[e]),c=e=>"ordgroup"===e.type||"color"===e.type?1===e.body.length?c(e.body[0]):e:"font"===e.type?c(e.body):e,h=newSet(["mathord","textord","atom"]),m=e=>h.has(c(e).type),u={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand <n>",cliProcessor:e=>"Infinity"===e?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};functionp(e){if("default"ine)returne.default;constt=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeofr)returnr.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return0;case"object":return{}}}classd{constructor(e){void0===e&&(e={}),e=e||{};for(consttofObject.keys(u)){constr=u[t],n=e[t];this[t]=void0!==n?r.processor?r.processor(n):n:p(r)}}reportNonstrict(e,t,r){leto=this.strict;if("function"==typeofo&&(o=o(e,t,r)),o&&"ignore"!==o){if(!0===o||"error"===o)thrownewn("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",r);"warn"===o?"undefined"!=typeofconsole&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeofconsole&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+o+"': "+t+" ["+e+"]")}}useStrictBehavior(e,t,r)Line truncated
showTaxonomies=false# use showTaxonomies OR showCategoryOnly, not both
showCategoryOnly=false# use showTaxonomies OR showCategoryOnly, not both
showTaxonomies=false# Enable the display of taxonomies for the related article.
showCategories=true# These will show if showTaxonomies is true.
showTags=true# These will show if showTaxonomies is true.
showCategoriesInSecondaryColor=false# This will change the color of category badges, so the user can better distinguish between the two. Only if showTaxonomies is true.
Loaded 100 of 1882 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.