Центрированный заголовок со сфинксом - PullRequest
0 голосов
/ 22 сентября 2018

Я пишу документ в сфинксе с тремя основными типами элементов: заголовки, изображения и простой текст.Иногда некоторые элементы необходимо центрировать:

Heading
=======

.. rst-class:: center

A centered paragraph, followed by non-centered image.

.. image:: /_static/exhibit_a.png

A non-centered paragraph, followed by centered image.

.. image:: /_static/exhibit_b.png
   :class: center

Обычный текст и изображение центрируются очень хорошо, потому что я регистрирую файл CSS, который выглядит следующим образом:

.center { text-align: center; }
img.center {
    display: block;
    margin: auto;
}

Однако,следующее не работает должным образом:

.. rst-class: center

===================
A Heading 1 Element
===================

Some generic text

Директива reST class (sphinx rst-class) должна применяться только к элементу, который следует непосредственно за ним, но в этом случае весь раздел становитсяпо центру, со всем в нем.В этом примере Some generic text выходит по центру, но должен быть выровнен по левому краю.Фактически, центрирование первого заголовка в документе, как это, в значительной степени центрирует весь документ.

Как центрировать заголовок таким образом, чтобы он применялся только к тегу <h1>, а не ко всемураздел?

Я использую тему «Читать документы» на sphinx 1.8.0, если это имеет значение.

Дополнительные мысли

В моем случаеМне нужно изменить все <h1> и <h2> экземпляры и никаких других заголовков.Я знаю, что это просто сделать в CSS с помощью

h1 h2 { text-align: center; }

Однако этот конкретный документ является частью гораздо более крупного проекта, в котором я хочу сохранить все исходные стили без изменений.Единственный способ сделать это - включить мою настройку CSS только для этого одного документа.Это возможная альтернатива?

Еще несколько мыслей

Ошибка возникает из-за того, что класс center присоединяется к <div>, окружающему весь раздел,не тег <h1>.Тем не менее, я хотел бы иметь возможность позволить некоторым элементам div (например, расширенным строкам) иметь класс center.Только не div с классом section.

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Идея состоит в том, чтобы отменить выбор элемента <div>, содержащего разделы, которые я хочу, и выбрать заголовки непосредственно под ним в CSS:

.center:not(.section), .center>h1, .center>h2{
    text-align: center;
}

Это отменяет выбор элемента div внешнего уровня с * 1005.* класс, но центрирует заголовки под ним.:not представляется функцией CSS3, не поддерживаемой в IE8, но это меня совсем не беспокоит: https://stackoverflow.com/a/2482475/2988730

Использование .center>h1 вместо .center h1 гарантирует, что я получу только точные заголовкиЯ маркирую вместо всех вложенных также.Хотя последнее очень заманчиво удобно, я буду сталкиваться с проблемами, если буду его использовать, гарантировано.

0 голосов
/ 22 сентября 2018

Наряду с разметкой reST .. rst-class: center попробуйте объединить селекторы CSS, например, так:

.center h1,
.center h2 {
    text-align: center;
}

Таким образом, в документации будут отцентрированы только h1 и h2.

...