왜 마크다운은 이런 동작을 하나요? (공백 제거 및 기타 기능)

제목이 모호해서 죄송합니다.

MyBB 포럼에서 넘어오는 커뮤니티의 필요에 더 잘 부응할 수 있도록 Discourse의 마크다운 기능 중 일부를 수정하고 있습니다.

저에게 Discourse는 마크다운을 처음 접하는 곳이며, "그 담장이 왜 세워져 있는지 모르면 허물지 말라"는 태도를 취하고 싶습니다. 하지만 마크다운이 특정 동작을 수행하는 이유를 파악하는 데 어려움을 겪고 있으며, 이를 이해하는 데 도움이 될 자료(특히 제가 놓치고 있을 수 있는 보안상의 우려 사항이 있다면)를 찾고 싶습니다.

이 주제에 대한 답변에는 초기 논의와 (현재는 폐쇄된) 플러그인을 포함한 몇 가지 좋은 일반적인 참고 자료가 있었습니다:

그리고 이 게시물은 개발 측면에서 매우 도움이 되었습니다:

하지만 다시 한번 말하지만, 저는 특정 기능이 존재하는 이유를 이해하여 이를 제거하거나 조정하는 것이 최적인지 평가하고 싶습니다.

현재 제 주목을 받고 있는 기능들은 다음과 같습니다:

  1. </br> 또는 다른 코드가 없는 경우 연속된 줄바꿈을 제거하는 것.
  2. 앞쪽에 4개 이상의 공백이 있는 줄에서 자동으로 코드 블록을 생성하는 것.
  3. 새 줄의 앞쪽 공백을 잘라내는 것.
  4. 연속적으로 증가하는 순서의 숫자 시퀀스를 번호가 매겨진 목록으로 변환하는 것.

어떤 조언도 감사하겠습니다! 감사합니다!

이 주제에 매우 관심이 있지만, 질문 중 대부분에 답할 수 있는 지식은 없습니다.

다만,

Discourse가 게시물을 깔끔하고 읽기 쉽게 유지하기를 원한다고 생각합니다.
여분 줄바꿈을 제거하고 줄 앞쪽의 공백을 정리함으로써 게시물 일관성을 유지합니다.
특히 사용자가(의식하지 못하는 경우도 꽤 많습니다!) 임의의 공백이나 줄을 추가할 때 내용이 읽기 어려워질 수 있으므로 이 기능이 도움이 됩니다.

목록에 간격을 두려고 할 때 이렇게 강제하는 것이 이상해 보일 수 있지만, 제 추측으로는 번호 매긴 목록을 최대한 단순하게 유지하기 위함입니다. 게시물(또는 위키 게시물)에 새 항목을 추가할 때마다 모든 항목의 번호를 다시 매길 필요가 없도록 하기 위해서죠.

실제로 모든 것을 너무 빡빡하게 유지하면 가독성이 떨어질 수 있습니다. 이미지 뒤에 오는 단락이 좋은 예시가 될 수 있습니다.

하지만… 저는 <br />를 사용하므로 전혀 문제가 되지 않습니다.

또 다른 점은… 정화 작업이 더 나은 읽기 경험과 아무런 상관이 없다고 확신합니다. 그것은 코드 자체에서 비롯된 것입니다. "마크다운은 코드 레벨에서 읽기 쉽다"는 매우 지친(?) 주장과 비슷한 경우입니다. 최종 사용자는 그런 상황에 놓여 있지 않습니다.

글쎄요. 이제 순수한 메타(meta) 논의가 되었습니다.

하지만 저는 줄과 여분의 공백을 정리하는 것이 최종 사용자에게 전체적인 경험을 더 좋게 만든다고 믿을 수 없습니다.

이것이 문제를 해결해 줄지는 확신할 수 없지만, Discourse에는 기본적으로 비활성화되어 있는 traditional markdown linebreaks(전통적 마크다운 줄바꿈) 사이트 설정이 있습니다. 이 설정을 활성화하면 줄바꿈을 만들려면 두 개의 공백이 필요합니다.

해당 설정이 활성화된 경우의 예시:

해당 설정이 비활성화된 경우의 예시(설정 기본값):

아래 페이지와 10분 마크다운 튜토리얼을 살펴보고 시도해 보시는 것이 좋습니다: Markdown Reference. Discourse 신규 사용자 튜토리얼에서 해당 페이지로 링크가 걸려 있지만, 튜토리얼을 진행하는 많은 사용자들이 이를 간과하는 경향이 있습니다:

확실히 ASCII 아트를 올바르게 표시하는 데는 도전이 됩니다. :wink:

이 통찰에 정말 감사드립니다. 제 커뮤니티에는 포럼 게임/스토리텔링을 즐기는 큰 하위 커뮤니티가 있으며,在那里 일관성보다 포맷팅의 자유도가 더 중요한 편입니다. 이러한 기능들의 핵심 이유가 정말로 일관되고 단순한 외관을 유지하는 데 도움이 되는 것이라면, 제 사용 사례에서는 이 기능들을 제거하는 것이 안전할 수 있거나, 적어도 사용자가 선택할 수 있는 토글을 제공하는 것이 적절할 것입니다.

매우 유용한 튜토리얼입니다. 그리고 "아름다운 텍스트 만들기"에 대한 강조는 앞서 언급된 일관성의 아이디어를 따르는 것 같습니다. 알려주셔서 감사합니다.

마크다운에 대해 추가로 읽으면서 이 사이트가 특히 많은 통찰을 주었습니다.

이것은 제가 생각하기에 마크다운의 원래 설명으로, commonmark 팀이 인용한 내용이며, 마크다운이 마크다운답게 작동하는 핵심 요소 중 하나가 HTML과의 근접성 때문임을 보여줍니다.

예를 들어,那里的 첫 문장은 다음과 같습니다:

Markdown is a text-to-HTML conversion tool for web writers.

그리고 마크다운의 이러한 특이한 점들은 조직적인 특성보다는 텍스트를 대응하는 HTML 코드로 깔끔하게 변환하려는 욕구에서 비롯된 측면이 더 크다고 생각합니다.

이것은 HTML이 공백을 제거(trim)하기 때문에 마크다운에서도 공백이 제거되는 이유를 설명합니다.

또한, 숫자 시퀀스를 증가하는 번호 목록으로 변환하는 이유는 다음 링크를 통해 조금 더 명확해집니다:

정렬된 목록에서 HTML은 번호를 할당하는 데 신경 쓰지 않기 때문에, 마크다운조차도 숫자를 살펴볼 필요조차 없습니다. (실제로 markdown-it의 코드는 첫 번째 위치의 문자를 확인하지만, 이는 해당 문자에서 번호 매기기를 시작하기 위한 것뿐입니다.)

이 외에도 더 많은 요인(예: 여러 기기 간의 포맷 일관성 등)이 있을 수 있지만, 특이한 측면 중 일부는 분명히 HTML에서 영감을 받은 것 같습니다.