Как настроить пользовательские стили для reStructuredText, Sphinx, ReadTheDocs и т. д.?
Я хочу расширить тему используется Сфинкс и ReadTheDocs С моими собственными стилями.
каков наилучший способ сделать это, чтобы мои изменения прилипли?
1 ответов
предположения
ваш набор RTD doc имеет что-то вроде следующей структуры:
-
(корневой каталог)
- (некоторые другие вещи, не относящиеся к этому обсуждению)
_static/
_templates/
conf.py
вы также строите локально, используя sphinx-build
или sphinx-autobuild
использовать тему по умолчанию, но ваш развернутый сервер может использовать the sphinx-rtd-theme
вместо.
Прецедент: Hatnotes
для этой иллюстрации я покажу, как создать пользовательский стиль для "hatnotes", концепция, которая распространена в документах MediaWiki и которая соответствует примерно до admonition
построить в RST. Вы можете применить то, что показано здесь, чтобы создать любой пользовательский CSS и включить его в набор документов.
Шаг 1: Создайте пользовательский CSS
пользовательский файл CSS должен идти где-то под _static/
каталог, так как именно там процесс сборки и скрипты найдут его. Я бы рекомендовал css/
подкаталог, так как у вас могут быть другие настройки для добавления, например файлы JavaScript.
создайте свой пользовательский файл CSS и поместите его в этот каталог. Напишите свои спецификации стиля как наложение на то, что уже может существовать в теме, которую вы будете использовать в сборке. Также не предполагайте ничего о том, будет ли ваш стиль переопределять существующий стиль в теме, Как вы не можете гарантировать, когда ваши стили будут добавлены по отношению к стилям по умолчанию.
вот мой пользовательский CSS для hatnotes. Я сохранил это в _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 в макет. Использование шаблонов хорошо документировано at sphinxdoc.org. В шаблоне переопределения просто установите css-files
переменная (массив) с добавленным списком Ваших пользовательских файлов CSS.
вот мой шаблон, который добавляет HATNOTES CSS. Я сохранил это как _templates/layout.html
.
{% extends "!layout.html" %}
{% set css_files = css_files + [ "_static/css/hatnotes.css" ] %}
это все, что вам нужно сделать для темы по умолчанию. Для темы Сфинкс / RTD есть дополнительный шаг, где вы...
Шаг 3: Добавьте Таблицы Стилей в тему
для темы Сфинкс / RTD ваш шаблон будет проигнорирован. Вместо использования механизма шаблона у вас есть чтобы добавить функцию в свой conf.py
файл, который добавляет файл CSS в тему приложения. Где-то рядом, где ваш файл conf задает добавить что-то вроде следующего:
def setup(app):
app.add_stylesheet( "css/hatnotes.css" )
обратите внимание, что на этот раз нет _static/
в начале пути;add_stylesheet()
функция предполагает эту часть пути.
завершение использования
теперь, когда вы настроили свои пользовательские стили для темы по умолчанию и темы Sphinx/RTD, вы можете на самом деле используйте их в своем документе.
следуя обычной парадигме определения фондовых сносок как "шаблонов" в MediaWiki (извините, не то же самое, что шаблоны в Sphinx и RTD), я установил includes/
каталог, где будут храниться все мои hatnotes.
вот как создать 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, который вы помещаете под