diff --git a/.github/assets/sponsors/sponsor-rackn.png b/.github/assets/sponsors/sponsor-rackn.png
new file mode 100644
index 000000000..77bf33dc2
Binary files /dev/null and b/.github/assets/sponsors/sponsor-rackn.png differ
diff --git a/CHANGELOG b/CHANGELOG
index eaf07456a..763331419 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,8 @@
+mkdocs-material-8.5.11+insiders-4.27.0 (2022-12-20)
+
+ * Added built-in typeset plugin to preserve formatting in sidebars
+ * Added URL and table of contents support for blog categories
+
mkdocs-material-8.5.11 (2022-11-30)
* Let it snow, see https://twitter.com/squidfunk/status/1597939243090788352
diff --git a/README.md b/README.md
index ffbf2e6d0..362de9f31 100644
--- a/README.md
+++ b/README.md
@@ -146,6 +146,9 @@
+
diff --git a/docs/creating-your-site.md b/docs/creating-your-site.md
index d8f24664e..4fc90ff28 100644
--- a/docs/creating-your-site.md
+++ b/docs/creating-your-site.md
@@ -78,8 +78,8 @@ theme:
=== "Other"
- 3. Ensure your editor of choice has support for YAML schema validation.
- 4. Add the following lines at the top of `mkdocs.yml`:
+ 1. Ensure your editor of choice has support for YAML schema validation.
+ 2. Add the following lines at the top of `mkdocs.yml`:
``` yaml
# yaml-language-server: $schema=https://squidfunk.github.io/mkdocs-material/schema.json
diff --git a/docs/insiders/changelog.md b/docs/insiders/changelog.md
index 94b73d969..4a3e62dc5 100644
--- a/docs/insiders/changelog.md
+++ b/docs/insiders/changelog.md
@@ -2,6 +2,11 @@
## Material for MkDocs Insiders
+### 4.27.0 _ December 20, 2022 { id="4.27.0" }
+
+- Added built-in typeset plugin to preserve formatting in sidebars
+- Added URL and table of contents support for blog categories
+
### 4.26.6 _ November 28, 2022 { id="4.26.6" }
- Fixed #4683: Tags plugin crashes when a tag is empty
diff --git a/docs/insiders/index.md b/docs/insiders/index.md
index c1cc476b0..d6d18e6b3 100644
--- a/docs/insiders/index.md
+++ b/docs/insiders/index.md
@@ -88,14 +88,15 @@ a handful of them, [thanks to our awesome sponsors]!
## What's in it for me?
The moment you [become a sponsor][how to become a sponsor], you'll get __immediate
-access to 19 additional features__ that you can start using right away, and
+access to 20 additional features__ that you can start using right away, and
which are currently exclusively available to sponsors:
+- [x] [Typeset plugin]: :material-alert-decagram:{ .mdx-pulse title="Added on December 20, 2022" }
- [x] [Privacy plugin: external links] :material-alert-decagram:{ .mdx-pulse title="Added on October 18, 2022" }
- [x] [Navigation subtitles] :material-alert-decagram:{ .mdx-pulse title="Added on October 2, 2022" }
-- [x] [Tags plugin: allow list] + [custom sorting] :material-alert-decagram:{ .mdx-pulse title="Added on October 2, 2022" }
+- [x] [Tags plugin: allow list] + [custom sorting]
- [x] [Blog plugin: custom index pages]
- [x] [Blog plugin: related links]
- [x] [Blog plugin]
@@ -188,6 +189,7 @@ You can cancel your sponsorship anytime.[^5]
[![SealVault]](https://sealvault.org/){ target=_blank title="SealVault" }
[![Neptune]](https://neptune.ai/){ target=_blank title="Neptune" }
[![Cash App]](https://cash.app/){ target=_blank title="Cash App" }
+[![RackN]](https://rackn.com/){ target=_blank title="RackN" }
@@ -218,6 +220,7 @@ You can cancel your sponsorship anytime.[^5]
[SealVault]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-sealvault.png
[Neptune]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-neptune-ai.png
[Cash App]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-cashapp.png
+ [RackN]: https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/.github/assets/sponsors/sponsor-rackn.png
@@ -295,10 +298,12 @@ are released for general availability.
#### $ 20,000 – Jalapeño
+- [x] [Typeset plugin]
- [x] [Privacy plugin: external links]
- [ ] [Instant previews]
- ... more to be announced
+ [Typeset plugin]: ../reference/index.md#built-in-typeset-plugin
[Privacy plugin: external links]: ../setup/ensuring-data-privacy.md#+privacy.external_links
[Instant previews]: https://twitter.com/squidfunk/status/1466794654213492743
diff --git a/docs/philosophy.md b/docs/philosophy.md
index afdad982b..13960e962 100644
--- a/docs/philosophy.md
+++ b/docs/philosophy.md
@@ -14,7 +14,7 @@ discusses the [conventions] used in this documentation.
– let Material for MkDocs do the heavy lifting for you.
- __Works on all devices__: Serve your documentation with confidence – the
- underling layout automatically adapts to perfectly fit the available screen
+ underlying layout automatically adapts to perfectly fit the available screen
estate, no matter the type or size of the viewing device.
- __Made to measure__: Change the colors, fonts, language, icons, logo and much
diff --git a/docs/reference/index.md b/docs/reference/index.md
index 4cd5b6247..fd9b1e224 100644
--- a/docs/reference/index.md
+++ b/docs/reference/index.md
@@ -7,6 +7,28 @@ within Markdown files.
## Configuration
+### Built-in typeset plugin :material-alert-decagram:{ .mdx-pulse title="Added on December 20, 2022" }
+
+[:octicons-heart-fill-24:{ .mdx-heart } Sponsors only][Insiders]{ .mdx-insiders } ·
+[:octicons-tag-24: insiders-4.27.0][Insiders] ·
+:octicons-cpu-24: Plugin ·
+:octicons-beaker-24: Experimental
+
+The built-in typeset plugin __preserves HTML formatting__ in the navigation and
+table of contents. This means that now, code blocks, icons, emojis and other
+inline formatting will be preserved, which allows for a richer editing
+experience. Add the following lines to `mkdocs.yml`:
+
+``` yaml
+plugins:
+ - typeset
+```
+
+For a demo, just take a look at the table of contents of this page :material-arrow-right-circle: – code blocks and icons are preserved from the
+section headlines; even [highlighting inline code blocks] is supported :tada:
+
+ [highlighting inline code blocks]: code-blocks.md#highlighting-inline-code-blocks
+
### Built-in meta plugin
[:octicons-heart-fill-24:{ .mdx-heart } Sponsors only][Insiders]{ .mdx-insiders } ·
@@ -49,7 +71,7 @@ The following configuration options are available:
## Usage
-### Setting the page title
+### Setting the page `title`
Each page has a designated title, which is used in the navigation sidebar, for
[social cards] and in other places. While MkDocs attempts to automatically
@@ -76,7 +98,7 @@ title: Lorem ipsum dolor sit amet # (1)!
[head]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head
[site_name]: https://www.mkdocs.org/user-guide/configuration/#site_name
-### Setting the page description
+### Setting the page `description`
A Markdown file can include a description that is added to the `meta` tags of
a page, and is also used for [social cards]. It's a good idea to set a
@@ -97,7 +119,7 @@ description: Nullam urna elit, malesuada eget finibus ut, ac tortor. # (1)!
[site_description]: https://www.mkdocs.org/user-guide/configuration/#site_description
-### Setting the page icon
+### Setting the page `icon`
[:octicons-heart-fill-24:{ .mdx-heart } Sponsors only][Insiders]{ .mdx-insiders } ·
[:octicons-tag-24: insiders-4.5.0][Insiders] ·
@@ -132,7 +154,7 @@ icon: material/emoticon-happy # (1)!
[icon search]: icons-emojis.md#search
[navigation tabs]: ../setup/setting-up-navigation.md#navigation-tabs
-### Setting the page status
+### Setting the page `status`
[:octicons-heart-fill-24:{ .mdx-heart } Sponsors only][Insiders]{ .mdx-insiders } ·
[:octicons-tag-24: insiders-4.22.0][Insiders] ·
@@ -176,7 +198,7 @@ The following status identifiers are currently supported:
- :material-alert-decagram: – `new`
- :material-trash-can: – `deprecated`
-### Setting the page subtitle
+### Setting the page `subtitle` :material-alert-decagram:{ .mdx-pulse title="Added on October 2, 2022" }
[:octicons-heart-fill-24:{ .mdx-heart } Sponsors only][Insiders]{ .mdx-insiders } ·
[:octicons-tag-24: insiders-4.25.0][Insiders] ·
@@ -195,7 +217,7 @@ subtitle: Nullam urna elit, malesuada eget finibus ut, ac tortor
...
```
-### Setting the page template
+### Setting the page `template`
If you're using [theme extension] and created a new page template in the
`overrides` directory, you can enable it for a specific page. Add the following
@@ -227,7 +249,7 @@ template: custom.html
### Using metadata in templates
-#### on all pages
+#### :material-check-all: on all pages
In order to add custom `meta` tags to your document, you can [extend the theme
][theme extension] and [override the `extrahead` block][overriding blocks],
@@ -243,7 +265,7 @@ e.g. to add indexing policies for search engines via the `robots` property:
[overriding blocks]: ../customization.md#overriding-blocks
-#### on a single page
+#### :material-check: on a single page
If you want to set a `meta` tag on a single page, or want to set different
values for different pages, you can use the `page.meta` object inside your
diff --git a/docs/schema/plugins/blog.json b/docs/schema/plugins/blog.json
index ec7492776..39548988b 100644
--- a/docs/schema/plugins/blog.json
+++ b/docs/schema/plugins/blog.json
@@ -68,7 +68,9 @@
"oneOf": [
{
"enum": [
+ "\"{date}/{file}\"",
"\"{date}/{slug}\"",
+ "\"{file}\"",
"\"{slug}\""
]
},
@@ -77,6 +79,12 @@
}
]
},
+ "post_url_max_categories": {
+ "title": "Number of categories in post URLs",
+ "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#+blog.post_url_max_categories",
+ "type": "number",
+ "default": 1
+ },
"post_slugify": {
"title": "Post slugify function",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#+blog.post_slugify",
@@ -233,6 +241,12 @@
"type": "string",
"default": "\"-\""
},
+ "categories_toc": {
+ "title": "Category index table of contents",
+ "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#+blog.categories_toc",
+ "type": "boolean",
+ "default": false
+ },
"categories_allowed": {
"title": "Categories allowed",
"markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#+blog.categories_allowed",
diff --git a/docs/setup/setting-up-a-blog.md b/docs/setup/setting-up-a-blog.md
index 9eab7b222..e4291720c 100644
--- a/docs/setup/setting-up-a-blog.md
+++ b/docs/setup/setting-up-a-blog.md
@@ -210,6 +210,8 @@ The following configuration options are available for posts:
format string that is used for the URL of the post. The following
placeholders are currently supported:
+ - `categories` – Replaced with the post's slugified [categories].
+
- `date` – Replaced with the post's date, as configured in
[`post_url_date_format`][post_url_date_format].
@@ -237,6 +239,20 @@ The following configuration options are available for posts:
collide with other the URLs of other pages added to the blog section, as
this leads to undefined behavior.
+[`post_url_max_categories`](#+blog.post_url_max_categories){ #+blog.post_url_max_categories }
+
+: :octicons-milestone-24: Default: `1` – This option specifies the number of
+ categories that are included in the URL if the `categories` placeholder is
+ part of [`post_url_format`][post slugs]. If a post is assigned to multiple
+ categories, they are joined with `/`:
+
+ ``` yaml
+ plugins:
+ - blog:
+ post_url_format: "{categories}/{slug}"
+ post_url_max_categories: 2
+ ```
+
[`post_slugify`](#+blog.post_slugify){ #+blog.post_slugify }
: :octicons-milestone-24: Default: `headerid.slugify` – This option specifies
@@ -488,7 +504,7 @@ The following configuration options are available for category index generation:
[`categories`](#+blog.categories){ #+blog.categories }
: :octicons-milestone-24: Default: `true` – This option specifies whether the
- [built-in blog plugin] should generate category indexes. A category indexes
+ [built-in blog plugin] should generate category indexes. A category index
shows all posts for a specific category in reverse chronological order. If
you want to disable category index generation, add:
@@ -514,8 +530,8 @@ The following configuration options are available for category index generation:
[`categories_url_format`](#+blog.categories_url_format){ #+blog.categories_url_format }
: :octicons-milestone-24: Default: `category/{slug}` – This option specifies
- the format string that is used for the URL of the category index, and can
- be used to localize the URL:
+ the format string that is used for the URL of a category index, and can be
+ used to localize the URL:
=== ":material-link: blog/category/:material-dots-horizontal:/"
@@ -570,6 +586,18 @@ The following configuration options are available for category index generation:
categories_slugify_separator: "-"
```
+[`categories_toc`](#+blog.categories_toc){ #+blog.categories_toc }
+
+: :octicons-milestone-24: Default: `false` – This option specifies whether a
+ category index includes a table of contents with all post titles on the
+ right side as an overview:
+
+ ``` yaml
+ plugins:
+ - blog:
+ categories_toc: true
+ ```
+
[`categories_allowed`](#+blog.categories_allowed){ #+blog.categories_allowed }
: :octicons-milestone-24: Default: _none_ – This option specifies the
diff --git a/docs/setup/setting-up-tags.md b/docs/setup/setting-up-tags.md
index 9ef2a659d..8b84cecc6 100644
--- a/docs/setup/setting-up-tags.md
+++ b/docs/setup/setting-up-tags.md
@@ -160,7 +160,7 @@ The following configuration options are available:
tags_compare_reverse: true
```
-[`tags_allowed`](#+tags.tags_allowed){ #+tags.tags_allowed } :material-alert-decagram:{ .mdx-pulse title="Added on October 2, 2022" }
+[`tags_allowed`](#+tags.tags_allowed){ #+tags.tags_allowed }
: [:octicons-tag-24: insiders-4.25.0][Insiders] · :octicons-milestone-24:
Default: _none_ – This option allows the author to define explicitly which
diff --git a/material/partials/languages/it.html b/material/partials/languages/it.html
index 57ed4a175..1b607a216 100644
--- a/material/partials/languages/it.html
+++ b/material/partials/languages/it.html
@@ -5,8 +5,12 @@
"language": "it",
"action.edit": "Modifica",
"action.skip": "Vai al contenuto",
+ "announce.dismiss": "Non mostrare più",
"clipboard.copy": "Copia",
"clipboard.copied": "Copiato",
+ "consent.accept": "Accettazione",
+ "consent.manage": "Gestisci le opzioni",
+ "consent.reject": "Rifiuta",
"footer": "Piede",
"footer.next": "Prossimo",
"footer.previous": "Precedente",
diff --git a/src/partials/languages/it.html b/src/partials/languages/it.html
index af8b0f391..03f5e0a6b 100644
--- a/src/partials/languages/it.html
+++ b/src/partials/languages/it.html
@@ -25,8 +25,12 @@
"language": "it",
"action.edit": "Modifica",
"action.skip": "Vai al contenuto",
+ "announce.dismiss": "Non mostrare più",
"clipboard.copy": "Copia",
"clipboard.copied": "Copiato",
+ "consent.accept": "Accettazione",
+ "consent.manage": "Gestisci le opzioni",
+ "consent.reject": "Rifiuta",
"footer": "Piede",
"footer.next": "Prossimo",
"footer.previous": "Precedente",