구문 하이라이팅에 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를 사용했을 때의 모습과 비교해 볼 수 있습니다:

또는 커스터마이즈된 테마/렉서를 사용하면 더 좋아질 수 있습니다:

highlight.js 대신 Pygments에 의존할 수 있을까요?

1개의 좋아요

문제는 이게 Python 패키지이지 JavaScript 패키지가 아니라는 거예요 :eyes: . 변환이 가능할지 궁금하네요 :thinking: .

3개의 좋아요

아, 그렇군요. Pygments는 애플리케이션인 Discourse보다는 정적 HTML 사이트에는 적합해 보입니다.

highlight.js의 다른 테마를 사용하면 색상도 더 좋아질까요?

https://highlightjs.org/demo에서 테마를 시도해 볼 수 있으며, 이를 변경할 수 있는 컴포넌트도 있습니다.
Codeblock Theme Picker

2개의 좋아요

사실, 다른 테마를 사용하면 더 나은 색상을 제공할 수 있지만, 문제는 여전히 남아 있습니다: highlight.js 렉서(lexer)는 매우 최소한의 기능을 제공합니다.