sphinx, rinohtype: цвет фона встроенного кода

Как мы можем изменить цвет фона встроенного кода.

Один из способов использования встроенного кода в реструктурированном тексте:

.. role::sql(code)
    :language: sql

You can use the query :sql:`select * from table` to execute...

При использовании rst2pdf он выводит красивую подсветку синтаксиса и тот же цвет фона, что и блоки кода. Как добиться того же, используя rinohtype?

В идеале что-нибудь that looks like this in stackoverflow

Это то, что я пробовал сам

stylesheet:

[code-paragraph: Paragraph(has_class="coder")]
background_color = #fdffd6

and rst:

.. role::sql(code)
    :language: sql
    :class: coder

You can use the query :sql:`select * from table` to execute...

но это не сработало, потому что role мог быть текстом, а не абзацем.


person Hamza Zubair    schedule 21.01.2021    source источник
comment
Обратите внимание, что после ..role:: должен быть пробел.   -  person Brecht Machiels    schedule 29.01.2021


Ответы (1)


На данный момент rinohtype не поддерживает установку цвета фона (или границы) для встроенных элементов. Пока мы ждем реализации этой функциональности, я буду обсуждать стили встроенного текста в целом.

Вот соответствующая часть stylelog для вашего фрагмента reStructuredText. :

Paragraph('You can use the query select * f...')   inline_code.rst:6 <paragraph>
     > (0,0,0,0,2) body
  MixedStyledText('You can use the query select * f...')
    SingleStyledText('You can use the query ')
    MixedStyledText('select * from table', style='monospaced')   None:None <literal>
         > (0,0,1,0,1) monospaced
      MixedStyledText('select')   None:None <inline>
        SingleStyledText('select')
      ...

Элемент, который вы хотите сопоставить с селектором, - это MixedStyledText со стилем моноширинный. Поскольку трудно предсказать, нужно ли вам сопоставлять элементы SingleStyledText или MixedStyledText, вы должны всегда использовать более общие элементы StyledText для селекторов.

В вашем примере определение code-paragraph в таблице стилей будет выглядеть следующим образом:

[inline-code: StyledText('monospaced', has_class='coder')]
base = monospaced
background_color = #fdffd6

Два замечания по этому поводу:

  • Поскольку стиль, указанный в селекторе, имеет больший вес, чем класс, вам необходимо указать его в дополнение к аргументу has_class или увеличить приоритет селектора. Подробнее читайте в селекторах.
  • Установите для основы стиля значение моноширинный, чтобы унаследовать свойства стандартного моноширинного стиля. В противном случае вам, вероятно, потребуется установить шрифт и другие атрибуты.

На данный момент rinohtype будет прерван с TypeError: background_color is not a supported attribute for TextStyle. См. Документацию для TextStyle, чтобы узнать, какие атрибуты стиля поддерживаются.

Для дальнейшего чтения см. Стили элементов в руководстве по rinohtype.

person Brecht Machiels    schedule 29.01.2021