Pygments вместо highlight.js для подсветки синтаксиса

Для подсветки синтаксиса Discourse полагается на highlight.js, но Pygments выглядит богаче. Например, вот как выглядит код на Python:

text = input('Type a number, and its factorial will be printed: ')
n = int(text)

if n < 0:
    raise ValueError('You must enter a non-negative integer')

factorial = 1
for i in range(2, n + 1):
    factorial *= i

print(factorial)

по сравнению с тем, как это могло бы выглядеть с Pygments:

Это ещё более заметно для блока кода LaTeX (к сожалению, этот язык в настоящее время не включён на нашем форуме), но вот как это выглядит на нашем форуме Discourse:

по сравнению с тем, как это могло бы выглядеть с Pygments:

или даже лучше с настраиваемой темой/лексером:

Возможно ли использовать Pygments вместо highlight.js?

1 лайк

Проблема в том, что это пакет Python, а не JavaScript :eyes:. Интересно, можно ли его конвертировать :thinking:

3 лайка

Ах, действительно, Pygments подходит для статических HTML-сайтов, но не для приложений, таких как Discourse.

Возможно, другая тема от highlight.js тоже улучшит цвета?

Вы можете попробовать их на Demo - highlight.js, и там есть компонент для их переключения
Codeblock Theme Picker

2 лайка

Действительно, другая тема могла бы предложить более приятные цвета, но проблема остаётся: лексер highlight.js минималистичен.