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 的词法分析器是极简主义的。