마크다운 볼드(**)가 그대로 노출될 때, 원인은 한글 조사였다

별표가 화면에 그대로 보인다

블로그 글을 올리고 나서 확인하는데 이상한 데가 있었다. 분명 굵게 쓴 부분인데 화면에는 이렇게 나왔다.

1
금리가 **9%**로 확정됐다

볼드가 적용되지 않고 별표 네 개가 글자 그대로 남아 있었다. 같은 글의 다른 볼드는 멀쩡해서 더 헷갈렸다. 비교해 보니 깨진 곳에는 공통점이 있었다.

  • 닫는 ** 바로 앞이 %, 따옴표, 괄호 같은 문장부호이고
  • 바로 뒤에 로, 를, 이 같은 한글 조사가 붙어 있었다

왜 그런가

Hexo의 마크다운 렌더러(marked)는 CommonMark 규칙을 따른다. 강조(**)를 닫으려면 닫는 구분자가 “오른쪽에 붙은(right-flanking)” 조건을 만족해야 한다. 규칙을 줄이면 이렇다.

  • 닫는 **의 바로 앞이 공백이면 안 된다.
  • 닫는 **의 바로 앞이 문장부호라면, 바로 뒤는 공백이거나 문장부호여야 한다.

**9%**로를 보면 ** 앞이 %(문장부호)인데 뒤가 로(글자)라서 이 조건에 걸린다. 그래서 **를 닫는 기호로 인정하지 않고 일반 문자로 두는 것이다. 영어는 **9%** is처럼 뒤에 공백이 오는 경우가 많아 잘 안 보이지만, 한글은 조사가 바로 붙으니 자주 걸린다.

이렇게 쓰면 깨진다

깨지는 예 이유
**9%**로 확정 앞이 %, 뒤가 한글
**"신중"**이라고 앞이 따옴표, 뒤가 한글
**(예정)**이다 앞이 괄호, 뒤가 한글

고치는 방법

1. 볼드 경계를 글자나 숫자로 끝낸다. 문장부호를 볼드 안쪽 끝에 두지 말고, 한글이나 숫자로 끝나게 문구를 바꾼다.

1
2
**9%로 확정**됐다        (OK: 안쪽 끝이 한글 '정')
**신중**이라고 했다 (OK: 따옴표를 볼드 밖으로)

2. 따옴표는 볼드 밖에 둔다. **"신중"**이라고 대신 "**신중**"이라고로 쓰면 된다.

3. 그래도 필요하면 HTML을 쓴다. <strong>9%</strong>로는 이 규칙과 상관없이 동작한다. 다만 마크다운 파일이 지저분해져서 나는 잘 쓰지 않는다.

확인 습관

눈으로 하나하나 찾기는 어려우니 빌드한 HTML에서 별표가 남아 있는지 검색한다.

1
grep -l '\*\*' public/2026/10/30/*/index.html

결과가 비어 있으면 깨진 볼드가 없는 것이다. 나는 하루 글을 올릴 때마다 이 한 줄을 돌린다. 한 번 나오면 해당 글을 열어서 ** 주변만 고치면 되니 금방이다.

마크다운은 “일단 되겠지” 하고 쓰기 쉬운데, 한글은 조사 때문에 영어권 예제가 그대로 안 통하는 경우가 있다는 걸 이번에 제대로 배웠다.