마크다운 문단 처리 개선

commonmark의 스펙에 따르면

문단(Paragraph)
줄 끝은 줄바꿈(U+000A), 줄바꿈 뒤에 따르지 않는 캐리지 리턴(U+000D), 또는 캐리지 리턴 그리고 그 뒤에 따르는 줄바꿈을 의미합니다.

또는 GitHub Flavored Markdown 스펙에 따르면

문단(Paragraph)
다른 종류의 블록으로 해석될 수 없는 비공백(non-blank) 줄들의 연속은 문단을 형성합니다. 문단의 내용은 문단의 원본(raw) 콘텐츠를 인라인(inlines)으로 파싱한 결과입니다. 문단의 원본 콘텐츠는 줄들을 연결(concatenating)하고 앞뒤의 공백을 제거하여 형성됩니다.

따라서

Foo
bar

는 다음과 같이 렌더링되어야 합니다.

Foo bar

하지만 실제로는 다음과 같이 렌더링됩니다.

Foo
bar

commonmark 예제 또는 GitHub의 예제를 참고하십시오.

이것은 버그인가요, 아니면 스펙에 대한 의도적인 이탈인가요?

사용 사례

이러한 문단 처리 방식은 특히 사용자가 이메일로 답변할 때 매우 번거로울 수 있습니다. 많은 이메일 클라이언트(Thunderbird 등)는 특정 문자 수마다 줄바꿈을 생성하기 때문입니다. 디자인 관점에서 볼 때, 이메일 사용자는 이러한 점을 고려하거나 이메일 설정을 변경해야 할 필요가 없어야 합니다.

다음은 예시입니다:

이 상황이 발생하는 다른 경우로 생각할 수 있는 유일한 경우는, 새로운 사용자가 Discourse를 처음 사용할 때 때때로 이러한 방식으로 수동으로 문단을 나누는 경우입니다.

3개의 좋아요

이것은 의도적인 것이며, GitHub의 동작과 동일한 방식을 따릅니다:

관리자는 사이트 설정에서 “전통적인 마크다운 줄바꿈” 설정을 활성화하여 동작 방식을 변경할 수 있습니다.

구현 방식에 대한 일부 근거를 설명하는 이 주제에 관심이 있을 수 있습니다.

5개의 좋아요

정말 감사합니다. 관련해서 좀 더 알아볼게요.

4개의 좋아요