
안녕하세요.
마크다운(markdown)에서 가끔 보이는 조금 이상한 현상 하나를 가볍게 공유해보려 합니다. 아주 중요한 내용은 아니니, 업무나 공부 중 markdown 접할 일이 있는 분들만 편히 읽어보실 수 있습니다.
먼저 마크다운(markdown)이 무엇인지 아주 간단히 정리해보겠습니다.
텍스트를 전달하는 포맷은 크게 아래 세 가지로 나누어 생각할 수 있습니다.
1. plaintext
2. markdown
3. markup
plaintext는 서식이 전혀 없는 가장 기본적인 텍스트입니다. 메모장에서 글을 입력하면 plaintext로 표시, 저장됩니다.
markup 언어의 대표적인 예는 HTML(HyperText Markup Language)입니다. HTML은 태그를 사용하여 폰트 크기, 색상, 밑줄, 굵게 표시 같은 다양한 서식을 지정할 수 있습니다. 쉽게 말해 plaintext에 가장 화려한 옷을 입힌 버전이라고 볼 수 있습니다. 우리가 보는 웹페이지도 기본적으로는 이런 markup 언어로 작성됩니다.
markdown은 이런 markup을 훨씬 간단하게 줄여 놓은, 이른바 경량 마크업 언어입니다. 제목(heading), 굵게(bold), 기울임(italic), 취소선(strikethrough), 리스트, 표 등을 비교적 간단한 문법으로 표현할 수 있습니다. 반면 폰트 종류, 색상, 크기, 밑줄 같은 세부적인 꾸밈은 기본 markdown만으로는 표현하기 어렵습니다.
GPT나 Gemini 같은 LLM의 응답도 보통 markdown 형식을 이용합니다. 그래서 답변에 제목, 볼드, 리스트, 표 등이 자연스럽게 들어가지만, 빨간 글씨, 밑줄 등은 찾아볼 수 없습니다.
마크다운 태그가 붙어있는 GPT 응답을 그대로 보기 위해서는 마우스로 드래그해서 복사해서는 안 되고, 반드시 [복사] 버튼으로 복사해야 markdown 태그(#, **, ~~, - 등)가 들어있는 원본을 볼 수 있습니다.
|
실습 1: 한 번은 GPT 응답을 마우스로 복사한 후 메모장에 붙여넣고, 다른 한번은 [복사] 버튼으로 복사한 후 메모장에 붙여넣은 후 어떻게 다른지 관찰해보시기 바랍니다. |
이제 본론으로 들어가 보겠습니다.
브라우저에서 GPT를 사용할 때는 화면상에서 ##, ** 등의 기호를 볼 수는 없습니다. 사람이 보기 편하게 렌더링해서 보여주기 때문입니다. 하지만, 우리는 가끔 GPT 응답에서 마크다운 태그(#, **, ~~)가 사라지지 않고 그대로 남아 있는 경우를 봅니다. 특히 bold 표시를 위해 넣은 **가 그대로 보이는 경우가 대표적입니다.
아래 프롬프트를 GPT나 Gemini에 그대로 넣어 보시기 바랍니다.
어떤 결과가 나올지 먼저 한 번 예상해보셔도 좋습니다.
|
아래 내용 렌더링해서 보여줘. ----- 1. 저는 홍길동입니다. 2. 저는 **홍길동**입니다. 3. 저는 (**홍길동**)입니다. 4. 저는 **(홍길동)**입니다. 5. 저는 **(홍길동)** 입니다. |
아마 대부분 아래와 같이 보일 겁니다.
4번과 5번의 차이는 '입니다' 앞에 공백이 있고 없고 차이입니다.

즉,
- 저는 **홍길동**입니다. → 잘 렌더링됨
- 저는 (**홍길동**)입니다. → 잘 렌더링됨
- 저는 **(홍길동)**입니다. → 경우에 따라 **가 그대로 보임
- 저는 **(홍길동)** 입니다. → 뒤에 공백이 있으면 보통 정상 렌더링됨
이런 현상은 마크다운의 강조 규칙이 HTML처럼 항상 직관적으로 동작하지 않기 때문입니다. 특히 괄호, 따옴표, 쉼표, 마침표 같은 문장부호가 강조 기호 바로 안쪽에 붙어 있을 때, 그리고 강조가 끝난 뒤 곧바로 다른 글자가 이어질 때 예상과 다르게 렌더링되는 경우가 많습니다. 게다가 markdown은 구현체마다 동작이 조금씩 달라서, 어떤 곳에서는 되고 어떤 곳에서는 안 되는 경우도 있습니다.
이런 문제를 피하려면 아래 두 가지 정도만 기억하셔도 도움이 됩니다.
1. 가능하면 마크다운 태그(예: **) 바로 안쪽에는 괄호, 따옴표, 쉼표, 마침표, 콜론 같은 문장부호를 넣지 않는다.
(**홍길동**) O
**(홍길동)** X
2. 부득이하게 태그 안쪽에 문장부호를 넣어야 한다면, 태그가 끝난 뒤에는 공백이나 줄바꿈을 두어 경계를 분명하게 해준다.
**(홍길동)** 씨 O (씨 앞에 공백 포함)
**(홍길동)**씨 X
예를 들어 **주소:**처럼 쓰더라도(콜론:이 바로 안쪽에 포함됨) 그 뒤가 행의 끝이거나 공백으로 끊기면 잘 렌더링되는 경우가 많습니다. 반대로 **(홍길동)**입니다처럼 태그가 끝난 직후 다른 글자가 바로 이어지면 보통 제대로 렌더링되지 않습니다.
---
P.S. 수식과 마크다운
일반 텍스트 기반 응답은 markdown 기호가 조금 남아 있어도 대충 읽는 데 큰 지장은 없습니다. 하지만 수식이 포함되면 이야기가 달라집니다.
분수, 지수, 루트, 로그, 미적분 같은 수식은 기본 markdown 문법만으로는 표현하기 어렵기 때문에, markdown 안에서 보통 LaTeX(라텍) 문법을 함께 사용합니다. 인라인 수식은 보통 $ ... $로 감싸고, 블록 수식은 $$ ... $$ 또는 별도의 수식 블록 형식을 사용합니다.
예를 들어, GPT나 Gemini에 아래처럼 입력해보시기 바랍니다.
|
아래 수식 렌더링해서 보여줘. $9^{\frac{1}{4}} \times 3^{-\frac{1}{2}}$ 의 값은? |

위 스샷과 같이 나온 응답을 1. 마우스로 드래그하여 복사한 후 메모장에 붙여넣어보고, 2. [복사] 버튼으로 복사한 후 붙여넣어 보시기 바랍니다.
수학 선생님의 경우, 기존 문제의 수치를 조금만 바꾸어 새로운 연습문제를 만들어 학생들에게 풀게 하고 싶은 경우, 한글 수식 편집기 없이 GPT와 메모장만으로 가능합니다. 상기 수식을 [복사] 버튼으로 복사한 후 메모장에 가서 숫자 4를 찾아 5로 변경해보시기 바랍니다. 그런 다음 GPT나 Gemini에게 렌더링을 요청하면 아래와 같이 나옵니다.

절차 요약:
1. 수치 바꾸기 전의 수학문제 스샷을 GPT나 Gemini에 붙여넣고 'OCR Please'를 외친다.
2. OCR된 응답을 [복사] 버튼으로 복사하여 메모장에 붙여넣는다.
3. 자신이 원하는 수치나 문구를 수정한다. (이때 Latex 문법에 대해 전혀 몰라도 '감'으로 원하는 숫자를 찾는다. 물론, GPT에게 문의해도 됨)
4. 변형된 수식을 GPT나 Gemini에 붙여넣고 'Render this please'를 외친다.
5. 응답에 보여지는 수식의 스샷을 떠서 카톡 등에 붙여넣고 학생에게 보낸다.
상기 예는 이런 방법도 있다의 예시이고, 보통 수학문제는 한글 수식편집기를 이용하시기 바랍니다.
수식이 간단한 경우, GPT에게 바로 '첨부 문제에서 3차항의 지수를 A에서 B로 변경해줘'와 요청하실 수도 있습니다.
오늘은 여기까지입니다.
감사합니다.
💗💛💚💙💜
추천 포스팅: GPT 이미지 생성 시 꼭 알아야 할 3가지 프롬프트 꿀팁 (25가지 인기 스타일 키워드 포함)
평소에 궁금은 한데 귀찮아서 알아보지 않았던 내용이였는데 이번기회에 확실히 알게 되었습니다. 아주 감사합니다.
네, 감사합니다.
사실 마크업은 태그 기반 언어로 html은 물론 xml도 마크업에 속합니다. 아래는 GPT 정의이니 참조하실 수 있습니다.
-----
마크업 언어(markup language)는 텍스트에 구조와 의미를 부여하기 위해 태그(tag)를 사용하는 언어로, 문서의 내용뿐 아니라 형식과 데이터 구조를 함께 표현할 수 있게 해준다; 대표적으로 웹 페이지를 만드는 데 사용되는 HTML(HyperText Markup Language)은 제목, 문단, 링크 등을 태그로 표시하여 브라우저가 화면에 어떻게 보여줄지 결정하고, XML(eXtensible Markup Language)은 사용자가 직접 태그를 정의하여 데이터의 구조와 의미를 명확하게 표현하고 시스템 간 데이터 교환에 활용된다.
사실 저는 마크다운 형식은 아주 좋아했는데, 마크업의 반댓말이라는 것과, 마크업이라는게 있다는것 자체에서 신선한 충격을 받았어요 ㅋㅋㅋㅋㅋㅋ