Как настроить пользовательские стили для reStructuredText, Sphinx, ReadTheDocs и т. д.?
Я хочу расширить тему, используемые сфинкс и ReadTheDocs с моей собственные стили.
Как лучше всего это сделать, чтобы мои изменения остались?
1 ответ:
Предположения
Ваш набор RTD doc имеет примерно следующую структуру:
- (корневой путь)
- (некоторые другие вещи, не относящиеся к этой дискуссии)
_static/
_templates/
conf.py
Вы также создаете локально, используя
sphinx-build
илиsphinx-autobuild
, используя тему по умолчанию, но ваш развернутый сервер может использовать вместо нееsphinx-rtd-theme
.Пример Использования: Hatnotes
Для этого иллюстрация, я собираюсь показать, как создать пользовательский стиль для "hatnotes", концепция, которая распространена в документах MediaWiki и которая соответствует приблизительно конструкции
admonition
в RST. Вы можете применить то, что показано здесь, чтобы создать любой пользовательский CSS и включить его в свой набор документов.Шаг 1: создание пользовательского CSS
Пользовательский CSS-файл должен находиться где-то в каталоге_static/
, так как именно там его найдет процесс сборки и скрипты. Я рекомендовал быcss/
подкаталог, так как вы можете добавить другие настройки, например файлы JavaScript.Создайте свой собственный CSS-файл и поместите его в этот каталог. Напишите свои спецификации стиля в виде наложения на все, что может уже существовать в теме, которую вы будете использовать в сборке. Кроме того, не предполагайте, что ваш стиль будет переопределять существующий стиль в теме, поскольку вы не можете гарантировать, когда ваши стили будут добавлены по отношению к стандартным.
Вот мой пользовательский CSS для шляпных сносок. Я сохранил это в
_static/css/hatnotes.css
..hatnote { border-color: #c8c8c8 ; border-style: solid ; border-width: 1px ; font-size: x-small ; font-style: italic ; margin-left: auto ; margin-right: auto ; padding: 3px 2em ; } .hatnote-gray { background-color: #e8e8e8 ; color: #000000 ; } .hatnote-yellow { background-color: #ffffe8 ; color: #000000 ; } .hatnote-red { background-color: #ffe8e8 ; color: #000000 ; } .hatnote-icon { height: 16px ; width: 16px ; }
Шаг 2: Добавление стилей в Шаблоны
Для темы по умолчанию достаточно создать шаблон, который переопределяет стандартную тему
layout.html
, чтобы добавить пользовательский CSS в макет. Использование шаблонов хорошо документировано на sphinxdoc.org . в вашем шаблоне переопределения просто установите переменнуюcss-files
(массив) с добавленным списком Ваших пользовательских файлов CSS.Вот мой шаблон, который добавляет HATNOTES CSS. Я сохранил это как
_templates/layout.html
.Это все, что вам нужно сделать для темы по умолчанию. Для темы Sphinx / RTD есть дополнительный шаг, где вы... Шаг 3: Добавление таблиц стилей в тему{% extends "!layout.html" %} {% set css_files = css_files + [ "_static/css/hatnotes.css" ] %}
Для темы Sphinx/RTD ваш шаблон будет проигнорирован. Вместо того, чтобы использовать механизм шаблона, вы должны добавить функцию в свой файл
conf.py
, которая добавляет CSS-файл в тему приложения. Где-то рядом с тем местом, где ваш файл conf устанавливает атрибутhtml_theme
, добавьте что-то вроде следующее:Обратите внимание, что на этот раз нетdef setup(app): app.add_stylesheet( "css/hatnotes.css" )
_static/
в передней части пути; функцияadd_stylesheet()
принимает эту часть пути.Завершение варианта использования
Теперь, когда вы настроили пользовательские стили как для темы по умолчанию, так и для темы Sphinx/RTD, вы можете использовать их в своем документе doc.
Следуя обычной парадигме определения фондовых hatnotes как "шаблонов" в MediaWiki (извините, не то же самое, что шаблоны в Sphinx и RTD), я установил
includes/
каталог, в котором будут храниться все мои шляпные сноски.Вот как построить hatnote с пользовательской информацией о стиле. Этот файл называется
includes/hatnotes/stub-article.rst
... container:: hatnote hatnote-gray |stub| This article is a stub. Please improve the docs by expanding it. .. |stub| image:: /images/icons/stub.png :class: hatnote-icon
Здесь мы настраиваем нашу" заглушку " hatnote, чтобы иметь стиль hatnote по умолчанию, серый фон, и используем значок "заглушки" в качестве встроенного изображения, с
Теперь мы можем использовать файл как включенный ресурс в документе.hatnote-icon
стилем, применяемым к этому изображению.Foo Article =========== .. include:: /includes/hatnotes/stub-article.rst Blah blah I haven't written this article yet.
Используете ли вы локальное значение по умолчанию тема или тема Sphinx/RTD, hatnote будет отображаться со стилями, которые вы добавили, настроив шаблон
_templates/layout.html
и сценарийconf.py
, чтобы оба они включали пользовательский CSS-файл, помещенный в каталог_static/
.Конечное Состояние
В вашем хранилище doc теперь есть этот материал:
- (корневой путь)
_static/
css/
- (пользовательские CSS файлы...)
_templates/
layout.html
- (добавляет пользовательский CSS в макет по умолчанию)conf.py
- (с новой функцией добавления пользовательского CSS в тему приложения)