From 98892944c4e040cb259ec72e82618f79582ef111 Mon Sep 17 00:00:00 2001 From: Etienne Date: Fri, 25 Aug 2023 00:55:29 +0200 Subject: [PATCH] Properly render KaTeX formulas Add block and inline parameter to katex shortcode to encapsulate katex notation --- CHANGELOG.md | 1 + .../content/docs/shortcodes/index.ja.md | 23 +++++++++++------ exampleSite/content/docs/shortcodes/index.md | 25 ++++++++++++------- .../samples/mathematical-notation/index.de.md | 23 +++++++++-------- .../samples/mathematical-notation/index.es.md | 25 +++++++++++-------- .../samples/mathematical-notation/index.ja.md | 24 ++++++++++-------- .../samples/mathematical-notation/index.md | 24 ++++++++++-------- layouts/shortcodes/katex.html | 9 ++++++- 8 files changed, 92 insertions(+), 62 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35d537bf..b8906176 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Spanish translation of example site samples ([#606](https://github.com/jpanther/congo/pull/606)) - Japanese translation of docs and example site ([#618](https://github.com/jpanther/congo/pull/618)) - German translation of example site ([#631](https://github.com/jpanther/congo/pull/631)) +- Properly render KaTeX formulas by adding `block` or `inline` parameter to `katex` shortcode [#634](https://github.com/jpanther/congo/pull/634) ### Changed diff --git a/exampleSite/content/docs/shortcodes/index.ja.md b/exampleSite/content/docs/shortcodes/index.ja.md index 6ef62ecf..77c4336c 100644 --- a/exampleSite/content/docs/shortcodes/index.ja.md +++ b/exampleSite/content/docs/shortcodes/index.ja.md @@ -175,21 +175,28 @@ Congoは、標準的なMarkdown構文を使用した場合の画像について ## Katex -`katex` を使うと、KaTeXパッケージを使って記事の内容に数式を追加することができます。利用可能な構文については[supported TeX functions](https://katex.org/docs/supported.html)のオンラインリファレンスを参照してください。 +数式は `katex` ショートコードを使用し、パラメータに `block` (ブロック式の場合) または `inline` を指定してレンダリングすることができます。詳細は[数学的表記]({{< ref "mathematical-notation" >}})を参照してください。 -記事中に数式を含めるには、コンテンツ内の任意の場所にショートコードを配置するだけです。記事ごとに一度記述するだけで、KaTeXが自動的にそのページのマークアップをレンダリングします。インライン表記とブロック表記の両方がサポートされています。 - -インライン記法は、式を区切り記号 `\\(` と `\\)` で囲むことで生成できます。ブロック記法の場合は `$$` です。 +利用可能な構文については[サポートされているTeX関数](https://katex.org/docs/supported.html)のオンラインリファレンスを参照してください。 **例:** +``` +インライン記法: {{}}f(a,b,c) = (a^2+b^2+c^2)^3{{}} +``` +インライン記法: {{< katex inline >}}f(a,b,c) = (a^2+b^2+c^2)^3{{< /katex >}} + +ブロック表記 + ```md -{{}} -\\(f(a,b,c) = (a^2+b^2+c^2)^3\\) +{{}} +f(a,b,c) = (a^2+b^2+c^2)^3 +{{}} ``` -{{< katex >}} -\\(f(a,b,c) = (a^2+b^2+c^2)^3\\) +{{< katex block>}} +f(a,b,c) = (a^2+b^2+c^2)^3 +{{< /katex>}} [数学的表記のサンプル]({{< ref "mathematical-notation" >}})でより多くの例をチェックしてください。 diff --git a/exampleSite/content/docs/shortcodes/index.md b/exampleSite/content/docs/shortcodes/index.md index f3c43fe8..b1a79a33 100644 --- a/exampleSite/content/docs/shortcodes/index.md +++ b/exampleSite/content/docs/shortcodes/index.md @@ -175,21 +175,28 @@ Icons can also be used in partials by calling the [icon partial]({{< ref "partia ## Katex -The `katex` shortcode can be used to add mathematical expressions to article content using the KaTeX package. Refer to the online reference of [supported TeX functions](https://katex.org/docs/supported.html) for the available syntax. +Mathematical expressions can be rendered using either the `katex` shortcode, with either `block` (for block expression) or `inline` as parameter. See [mathematical notation]({{< ref "mathematical-notation" >}}) for more details. +It uses the KaTeX library to render mathematical notation within articles. -To include mathematical expressions in an article, simply place the shortcode anywhere with the content. It only needs to be included once per article and KaTeX will automatically render any markup on that page. Both inline and block notation are supported. - -Inline notation can be generated by wrapping the expression in `\\(` and `\\)` delimiters. Alternatively, block notation can be generated using `$$` delimiters. +Refer to the online reference of [supported TeX functions](https://katex.org/docs/supported.html) for the available syntax. **Example:** -```md -{{}} -\\(f(a,b,c) = (a^2+b^2+c^2)^3\\) +``` +Inline notation: {{}}f(a,b,c) = (a^2+b^2+c^2)^3{{}} +``` +Inline notation: {{< katex inline >}}f(a,b,c) = (a^2+b^2+c^2)^3{{< /katex >}} + +Block notation: +``` +{{}} +f(a,b,c) = (a^2+b^2+c^2)^3 +{{}} ``` -{{< katex >}} -\\(f(a,b,c) = (a^2+b^2+c^2)^3\\) +{{< katex block >}} +f(a,b,c) = (a^2+b^2+c^2)^3 +{{< /katex >}} Check out the [mathematical notation samples]({{< ref "mathematical-notation" >}}) page for more examples. diff --git a/exampleSite/content/samples/mathematical-notation/index.de.md b/exampleSite/content/samples/mathematical-notation/index.de.md index dd82fd64..2e99a428 100644 --- a/exampleSite/content/samples/mathematical-notation/index.de.md +++ b/exampleSite/content/samples/mathematical-notation/index.de.md @@ -9,38 +9,39 @@ KaTeX kann verwendet werden, um mathematische Notationen in Artikeln darzustelle -{{< katex >}} - -Congo bindet die KaTeX-Assets nur dann in das Projekt ein, wenn die mathematische Notation verwendet wird. Damit dies funktioniert, kann einfach der Shortcode [`katex`]({{< ref path="docs/shortcodes#katex" lang="en" >}}) in den Artikel eingefügt werden. Jede KaTeX-Syntax auf dieser Seite wird dann automatisch gerendert. +Congo bindet die KaTeX-Assets nur dann in das Projekt ein, wenn die mathematische Notation verwendet wird. Damit dies funktioniert, kann einfach der Shortcode [`katex`]({{< ref path="docs/shortcodes#katex" lang="en" >}}) der entweder mit `katex block` oder `katex inline` verwendet werden kann in den Artikel eingefügt werden. Jede KaTeX-Syntax auf dieser Seite wird dann automatisch gerendert. Die Online-Referenz der [unterstützten TeX-Funktionen](https://katex.org/docs/supported.html) zeigt Syntax-Beispiele. ## Inline-Schreibweise -Die Inline-Schreibweise kann erzeugt werden, indem der Ausdruck in die Trennzeichen `\(` und `\)` eingeschlossen wird. +Die Inline-Schreibweise kann erzeugt werden, indem der Ausdruck in den Shortcode `katex inline` oder `katex` eingeschlossen wird. **Beispiel:** ```tex % KaTeX Inline-Schreibweise -Inline-Schreibweise: \\(\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…\\) +Inline-Schreibweise: {{}}\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…{{}} +Kurzfassung: {{}}\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…{{}} ``` -Inline-Schreibweise: \\(\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…\\) +Inline-Schreibweise: {{< katex inline >}}\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…{{< /katex >}} + +Kurzfassung: {{< katex >}}\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…{{< /katex >}} ## Schreibweise als Block -Alternativ kann die Blockschreibweise mit Hilfe von `$$`-Trennzeichen erzeugt werden. Dadurch wird der Ausdruck in einem eigenen HTML-Block ausgegeben. +Alternativ kann die Blockschreibweise mit dem Parameter `block` erzeugt werden. Dadurch wird der Ausdruck in einem eigenen HTML-Block ausgegeben. **Beispiel:** ```tex % KaTeX mit Block-Schreibweise -$$ +{{}} \varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } } -$$ +{{}} ``` -$$ +{{< katex block >}} \varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } } -$$ +{{< /katex >}} diff --git a/exampleSite/content/samples/mathematical-notation/index.es.md b/exampleSite/content/samples/mathematical-notation/index.es.md index d9f77b8f..622d1aa0 100755 --- a/exampleSite/content/samples/mathematical-notation/index.es.md +++ b/exampleSite/content/samples/mathematical-notation/index.es.md @@ -9,38 +9,41 @@ Una breve muestra de notación matemática en Congo. -{{< katex >}} - -Congo solo incluirá los assets de KaTeX en su proyecto si utiliza notación matemática. Para que esto funcione, simplemente incluya el [`katex` shortcode]({{< ref path="docs/shortcodes#katex" lang="en" >}}) dentro del artículo. Cualquier sintaxis de KaTeX en esa página se renderizará automáticamente. +Congo sólo incluirá los recursos de KaTeX en su proyecto si hace uso de la notación matemática. Para que esto funcione, congo proporciona un shortcode [`katex`]({{< ref path="docs/shortcodes#katex" lang="en" >}}) que puede usarse con `katex block` o `katex inline`. +Cualquier sintaxis KaTeX dentro del shortcode se renderizará automáticamente. Utilice la documentación en línea de [funciones TeX admitidas](https://katex.org/docs/supported.html) para conocer la sintaxis disponible. ## Notación en línea -La notación en línea se puede generar envolviendo la expresión en los delimitadores `\\(` y `\\)`. +La notación inline puede generarse envolviendo la expresión en el shortcode `katex inline` o `katex`. **Ejemplo:** ```tex % KaTeX notación en línea -Notación en línea: \\(\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…\\) +Notación en línea: {{}}\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…{{}} +Versión abreviada: {{}}\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…{{}} ``` -Notación en línea: \\(\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…\\) +Notación en línea: {{< katex inline >}}\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…{{< /katex >}} + +Versión abreviada: {{< katex >}}\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…{{< /katex >}} + ## Notación en bloque -Alternativamente, la notación en bloque se puede generar usando delimitadores `$$`. Esto generará la expresión en su propio bloque HTML. +Alternativamente, puede generarse una notación en bloque utilizando el parámetro `block`. Esto mostrará la expresión en su propio bloque HTML. **Ejemplo:** ```tex % KaTeX notación en bloque -$$ +{{}} \varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } } -$$ +{{}} ``` -$$ +{{< katex block >}} \varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } } -$$ +{{< /katex >}} diff --git a/exampleSite/content/samples/mathematical-notation/index.ja.md b/exampleSite/content/samples/mathematical-notation/index.ja.md index c12d1341..c4271345 100644 --- a/exampleSite/content/samples/mathematical-notation/index.ja.md +++ b/exampleSite/content/samples/mathematical-notation/index.ja.md @@ -9,38 +9,40 @@ tags: ["sample", "katex", "maths", "shortcodes"] -{{< katex >}} +Congoは、数学的記法を使用する場合にのみ、KaTeXアセットをプロジェクトにバンドルします。これを動作させるために、congoは `katex block` または `katex inline` で使用できるショートコード [`katex`]({{< ref path="docs/shortcodes#katex" lang="en" >}}) を提供しています。 +ショートコード内のKaTeX構文は自動的にレンダリングされます。 -Congoは、数学的表記を使用する場合にのみ、KaTeXアセットをプロジェクトにバンドルします。これを動作させるには、単に記事内に[`katex` ショートコード]({{< ref "docs/shortcodes#katex" >}})をインクルードしてください。そのページ上のKaTeX構文は自動的にレンダリングされます。 +利用可能な構文については[サポートされているTeX関数](https://katex.org/docs/supported.html)のオンラインリファレンスを参照してください。 -使用可能な構文については、[supported TeX functions](https://katex.org/docs/supported.html)のオンラインリファレンスを参照してください。 ## インライン記法 -インライン記法は、式を `\\(` と `\\)` で囲むことで生成できます。 +インライン記法は `katex inline` または `katex` ショートコードで式をラップすることで生成できる。 **例:** ```tex % KaTeX inline notation -インライン記法: \\(\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…\\) +インライン記法: {{}}\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…{{}} +速記版: {{}}\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…{{}} ``` +インライン記法: {{< katex inline >}}\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…{{< /katex >}} -インライン記法: \\(\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…\\) +速記版: {{< katex >}}\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…{{< /katex >}} ## ブロック記法 -あるいは、 `$$` を使ってブロック記法で生成することもできます。これは式を独自のHTMLブロックとして出力します。 +また、`block` パラメータを使ってブロック表記を生成することもできます。これは式を独自のHTMLブロックで出力します。 **例:** ```tex % KaTeX block notation -$$ +{{}} \varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } } -$$ +{{}} ``` -$$ +{{< katex block >}} \varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } } -$$ +{{< /katex >}} diff --git a/exampleSite/content/samples/mathematical-notation/index.md b/exampleSite/content/samples/mathematical-notation/index.md index 0b184800..5df7a3d0 100755 --- a/exampleSite/content/samples/mathematical-notation/index.md +++ b/exampleSite/content/samples/mathematical-notation/index.md @@ -9,38 +9,40 @@ KaTeX can be used to render mathematical notation within articles. -{{< katex >}} - -Congo will only bundle the KaTeX assets into your project if you make use of mathematical notation. In order for this to work, simply include the [`katex` shortcode]({{< ref "docs/shortcodes#katex" >}}) within the article. Any KaTeX syntax on that page will then be automatically rendered. +Congo will only bundle the KaTeX assets into your project if you make use of mathematical notation. In order for this to work, congo provides a shortcode [`katex`]({{< ref "docs/shortcodes#katex" >}}) than can be used with either `katex block` or `katex inline`. +Any KaTeX syntax inside the shortcode will be automatically rendered. Use the online reference of [supported TeX functions](https://katex.org/docs/supported.html) for the available syntax. ## Inline notation -Inline notation can be generated by wrapping the expression in `\\(` and `\\)` delimiters. +Inline notation can be generated by wrapping the expression in the `katex inline` or `katex` shortcode. **Example:** ```tex % KaTeX inline notation -Inline notation: \\(\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…\\) +Inline notation: {{}}\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…{{}} +Shorthand version: {{}}\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…{{}} ``` -Inline notation: \\(\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…\\) +Inline notation: {{< katex inline >}}\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…{{< /katex >}} + +Shorthand version: {{< katex >}}\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…{{< /katex >}} ## Block notation -Alternatively, block notation can be generated using `$$` delimiters. This will output the expression in its own HTML block. +Alternatively, block notation can be generated using the `block` parameter. This will output the expression in its own HTML block. **Example:** ```tex % KaTeX block notation -$$ +{{}} \varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } } -$$ +{{}} ``` -$$ +{{< katex block >}} \varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } } -$$ +{{< /katex >}} diff --git a/layouts/shortcodes/katex.html b/layouts/shortcodes/katex.html index a4160bfb..77740b41 100644 --- a/layouts/shortcodes/katex.html +++ b/layouts/shortcodes/katex.html @@ -1 +1,8 @@ -{{/* Nothing to see here */}} +{{ $mode := .Get 0 }} +{{ if eq $mode "block" }} + $${{.Inner}}$$ +{{ else if or (eq $mode "inline") (eq $mode nil) }} + \({{.Inner}}\) +{{ else }} + {{ errorf "Invalid katex mode: expected block or inline" }} +{{ end }}