заголовок mkdocs nav отличается от заголовка страницы - PullRequest
1 голос
/ 13 февраля 2020

Мой mkdocs.yml файл содержит nav заголовков, которые укорачиваются для размещения только на 1 строке в левой части навигации, и я хочу, чтобы заголовок .md Markdown page был сокращенное полное название.

Например, в то время как мой mkdocs.yml файл содержит:

nav:
- BD, ML, DS: Big_Data,_Machine_Learning,_Data_Science.md
- AI, VI: Artificial_Intelligence,_Video_Intelligence.md

Я хочу, чтобы заголовок страницы .md был:

Big Data, Machine Learning, and Data Science

... вместо копирования / использования заголовка mkdocs.yml nav:

BD, ML, DS

Когда я добавил заголовок страницы уценки в 1-ю строку (# Big Data...) моего .md файла, Я получаю оба заголовка страницы, которые я хочу и унаследованное mkdocs.yml nav title:

BD, ML, DS
7 min (1,939 words)
Big Data, Machine Learning, and Data Science

Кажется, ответ находится в файле mkdocs.yml, чтобы указать другой / Второе «отображение страницы» имени, но многие поиски Google ничего не нашли.

Какие еще методы вы пробовали или слышали? Спасибо!

1 Ответ

0 голосов
/ 17 февраля 2020

Это возможно только с пользовательской темой, которая специально добавляет поддержку такой функции. Однако я не знаю ни одной темы, предлагающей такую ​​функцию.

Страница может иметь только один заголовок. Однако заголовок страницы может быть определен любым из четырех способов: документированный :

MkDocs попытается определить заголовок документа следующими способами, по порядку:

  1. Заголовок, определенный в параметре конфигурации nav для документа.
  2. Заголовок, определенный в ключе метаданных title документа.
  3. Заголовок Markdown уровня 1 в первой строке тела документа.
  4. Имя файла документа.

Найдя заголовок страницы, MkDo c не продолжает проверять какие-либо дополнительные источники в приведенном выше списке.

Последнее предложение является ключом к созданию этой работы. Поскольку MkDocs находит title, определенный в конфигурации nav вашего конфигурационного файла mkdocs.yml, он никогда не проверяет title, определенный где-либо еще (в том числе в метаданных). Он просто использует заголовок nav для страницы в качестве заголовка страницы везде (в атрибуте page.title).

Однако метаданные для страницы все еще сохраняются в атрибут page.meta. Следовательно, вы можете использовать page.title в разделе nav вашей пользовательской темы и page.meta.title в любом месте вашей темы.

Чтобы определить метаданные для страницы, добавьте раздел YAML в начало файла уценки:

---
title: Big Data, Machine Learning, and Data Science
---

The first line of your Markdown.

Конечно, определите заголовок в вашем конфигурационном файле, как раньше:

nav:
- 'BD, ML, DS': 'Big_Data,_Machine_Learning,_Data_Science.md'

Тогда в вашей теме вы можете использовать page.title там, где хотите BD, ML, DS появится и page.meta.title там, где вы хотите Big Data, Machine Learning, and Data Science.

Если вы не хотите создавать новую тему с нуля, вы можете объединить a custom_dir и шаблонных блоков для переопределения только определенных c разделов выбранной вами темы.

...