Как сделать страницы в боковом меню MkDocs расширяемыми?

Я попытался найти это, но не смог получить никакого ответа, который указывал бы на решение. Я полагаю, сначала позвольте мне начать с некоторой предыстории.

Моя цель:

В настоящее время я выясняю, как получить приличную автоматизированную документацию, созданную для определенного репозитория скриптов Python. Это библиотека, а не «проект» как таковой. Он также живет в своем собственном месте, поскольку он поддерживается не отдельной установкой Python, а реализацией Python 2.7, которая поставляется с Autodesk Maya. Таким образом, в библиотеке есть несколько модулей, организованных так, как это имеет смысл для нас, и все функции имеют строку документации, которая написана в соответствии с reStructuredText (: param parameterName: Description и т. Д.). Я искал что-то, что бы просматривало весь репозиторий и создавало красивую html-документацию, которая выглядела бы аккуратно и упростила бы поиск существующих функций, думая, что она должна существовать, но, увы, я не смог найти ничего, что могло бы быть это удобно для пользователя.

Что я пробовал:

Sphinx, pdoc3 - оба доказали разные уровни неидеальности.

Что я решил делать:

Последнее, что я пробовал, - это mkdocs. Это кажется довольно упрощенным не только потому, что на самом деле он ничего не делает, а создает заглушку страницы, которая заполняется на основе одного файла конфигурации .yaml и файлов .md для каждой страницы, которые пользователь должен предоставить. К вашему сведению, я новичок как в yaml, так и в md, так как мне никогда не приходилось использовать ни то, ни другое. Я решил создать себе оболочку (для функции one-button-to-make-docs), которая в основном будет работать через мою библиотеку python, создавая страницу .md для каждого модуля и заполняя ее функциями / классами и их строками документации. Мне пришлось бы самому разбирать строки документации, но это не так уж важно. Это в основном превратило бы mkdocs в довольно приличную автоматизированную документацию без необходимости ручного ввода. Теперь ... Мне нравится тема readthedocs, которую вы можете установить для своей документации в конфигурационном файле yaml, но именно здесь я застрял.

Моя проблема

Когда я использую mkdocs для обслуживания своего сайта, я хотел бы, чтобы все, что имеет иерархию в боковом меню, было сворачиваемым, как в этом примере (обратите внимание на значки свертывания / развертывания на левой боковой панели):

Это идеал

Но я получаю не складываемость:

Моя попытка

Следует отметить, я полагаю, что в моем случае раздел 'attr' - это один сайт .md, который имеет просто простую структуру заголовка h3 для каждого имени функции и некоторого описания под, прежде чем иметь горизонтальное правило для разделения из следующей функции.

Кроме того, в конфигурационном файле yaml для структуры mydocs структура очень проста:

site_name: My Repo
nav:
    - Home: 'index.md'
    - 'Modules':
        - attr: 'pageA.md'
        - pageB: 'pageB.md'
        - pageC: 'pageC.md'
    - About: 'about.md'
theme:
    name: readthedocs
    include_homepage_in_sidebar: false
    highlightjs: true
    hijs_languages:
        - python
markdown_extensions:
    - toc:
        permalink: True
        separator: "_"

Итак, вопрос в том, как мне сделать так, чтобы на боковой панели были маленькие значки разворачивания / сворачивания? (а именно сайт attr на данный момент) Это выполнимо? Можно ли это сделать через файл конфигурации yaml или файлы .md каждой страницы?

И, возможно, есть лучшая альтернатива тому, что я делаю, которая не потребовала бы от меня написания собственного решения для создания документов с помощью одной кнопки?

Спасибо!


person Pete    schedule 24.01.2021    source источник
comment
FWIW, я обнаружил, что подразумеваемый код JavaScript (тот, который отвечает за развертывание / свертывание подменю в теме ReadTheDocs для MkDocs) содержит ошибки. Например, из коробки при загрузке страницы он настаивал на том, чтобы свернуть все и развернуть последний раздел, независимо от страницы, на которой я был. Я случайно решил это, отредактировав шаблон навигационного меню, чтобы вообще не создавать href="#" для меню товары, на которые нет ссылки. Но у меня все равно возникают другие глюки.   -  person Maëlan    schedule 25.04.2021


Ответы (1)


Возможно, стоит просто по-другому написать. Вот как это работает в моем проекте:

nav:
  - 'index.md'
  - 'glossary.md'
  - 'Subject1':
    - 'dir/file1.md'
    - 'dir/file2.md'
  - 'Subject2':
    - 'NestedSubject2_1':
      - 'dir/file1.md'
      - 'dir/file2.md'
    - 'NestedSubject2_2':
      - 'dir/file.md'
      - 'dir/file2.md'
      - 'dir/file3.md'
      - 'dir/file4.md'

И это меньшее, что я могу показать, извините. Такова структура моего проекта.

Как выглядит проект

person Lilya    schedule 25.01.2021
comment
Интересно ... Спасибо, что поделились и хотите помочь, Лиля. Я попытался структурировать его так же, как ваш пример, но все равно не смог получить складные секции. У меня есть ощущение, что это может быть связано с тем, что я использую python 2.7 и, следовательно, потенциально устаревшую версию mkdocs, возможно, ту, которая еще не поддерживает складные разделы. Я могу попробовать установить что-то вроде Python 3.9 и попробовать еще раз. - person Pete; 27.01.2021
comment
Это может быть так. Я проверил, что моя версия python - 3.8.5. Удачи! Надеюсь, это поможет! - person Lilya; 27.01.2021