Как настроить пользовательские стили для 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 в тему приложения)