이 문서는 HWPX 포맷을 Markdown으로 변환할 때 발생하는 구조적 차이점과 변환기의 처리 방식을 설명합니다.
HWPX는 한글 워드프로세서의 XML 기반 포맷으로, Markdown보다 훨씬 풍부한 레이아웃과 서식 기능을 지원합니다. 변환 과정에서 일부 기능은 Markdown의 제한으로 인해 대체 방식으로 처리됩니다.
| 항목 | 설명 |
|---|---|
| HWPX | 테이블 셀 안에 또 다른 테이블 삽입 가능 |
| Markdown | 중첩 테이블 미지원 |
| 변환 방식 | 내부 테이블을 텍스트로 변환하여 부모 셀에 인라인으로 포함 |
예시:
- HWPX: 연구논문 요약서 폼에서 SCI/SSCI 체크박스가 별도 테이블로 구성
- Markdown:
□ SCI | □ SSCI | □ A&HCI형태로 텍스트 변환
관련 코드: internal/parser/hwpx/parser.go - convertTableToText() 함수
| 항목 | 설명 |
|---|---|
| HWPX | cellSpan, rowSpan 속성으로 셀 병합 지원 |
| Markdown | 표준 Markdown은 셀 병합 미지원 |
| 변환 방식 | 세로 병합(rowspan)은 〃 표시, 가로 병합(colspan)은 빈 셀로 처리 |
예시:
원본 HWPX (2x2 셀이 세로로 병합된 경우):
| 항목 | 값1 |
| | 값2 |
변환된 Markdown:
| 항목 | 값1 |
| 〃 | 값2 |
설계 결정:
- 세로 병합:
〃(동일 부호) - 위 셀과 같은 내용임을 시각적으로 표시 - 가로 병합: 빈 셀 유지 - 테이블 구조 보존
관련 코드:
internal/parser/hwpx/parser.go-cellSpan파싱 로직internal/cli/convert.go-writeMarkdownTable()함수
| 항목 | 설명 |
|---|---|
| HWPX | <hp:fwSpace/>, <hp:hwSpace/> 요소로 특수 공백 표현 |
| Markdown | 일반 공백만 지원 |
| 변환 방식 | 모든 특수 공백을 일반 공백 문자로 변환 |
예시:
- HWPX:
①<hp:fwSpace/>소통·공감 - Markdown:
① 소통·공감
관련 코드: internal/parser/hwpx/parser.go - readElementText() 함수
| 항목 | 설명 |
|---|---|
| HWPX | 단일 컬럼 테이블로 강조 박스 표현 |
| Markdown | 테이블보다 목록/인용이 적합 |
| 변환 방식 | [제목] 또는 【제목】 패턴의 단일 컬럼 테이블을 목록 형식으로 변환 |
예시:
- HWPX: 법령 인용 박스
【국가공무원법 제33조】 - Markdown:
**【국가공무원법 제33조】**+ 번호 목록
관련 코드: internal/cli/convert.go - isInfoBoxTable(), writeLegalContentAsText() 함수
| 항목 | 설명 |
|---|---|
| HWPX | 바이너리 데이터로 이미지 임베드, OLE 객체 지원 |
| Markdown | 이미지 링크만 지원, OLE 미지원 |
| 변환 방식 | 이미지는 Base64 데이터 URI 또는 외부 파일 참조로 변환, OLE는 무시 |
| 항목 | 설명 |
|---|---|
| HWPX | 다양한 글꼴, 크기, 색상, 밑줄 스타일 지원 |
| Markdown | 굵게(**), 기울임(*), 취소선(~~)만 지원 |
| 변환 방식 | 기본 서식만 변환, 복잡한 스타일은 무시 |
| 항목 | 설명 |
|---|---|
| HWPX | 페이지 크기, 여백, 단 나누기, 머리글/바닥글 지원 |
| Markdown | 레이아웃 개념 없음 |
| 변환 방식 | 모든 페이지 레이아웃 정보 무시, 콘텐츠만 추출 |
| 항목 | 설명 |
|---|---|
| HWPX | 각주(footnote), 미주(endnote) 지원 |
| Markdown | 일부 확장에서만 각주 지원 |
| 변환 방식 | 현재 미구현 (향후 지원 예정) |
| 항목 | 설명 |
|---|---|
| HWPX | 자동 목차 생성 기능 |
| Markdown | 자동 목차 미지원 |
| 변환 방식 | 목차를 정적 텍스트로 변환 |
| 항목 | 설명 |
|---|---|
| HWPX | 한글 수식 에디터 포맷 |
| Markdown | LaTeX 수식 (일부 렌더러에서 지원) |
| 변환 방식 | 현재 미구현 (향후 LaTeX 변환 예정) |
Stage 2 (LLM 포맷팅)를 사용하면 위의 제한사항으로 인해 발생하는 가독성 문제를 개선할 수 있습니다:
# Stage 1만 (파서)
hwp2md convert document.hwpx
# Stage 2 포함 (LLM 포맷팅)
hwp2md convert document.hwpx --llm새로운 차이점을 발견하거나 변환 방식 개선 제안이 있으시면 GitHub Issues에 등록해 주세요.
이 문서는 hwp2md 변환기 개발 과정에서 발견된 차이점을 기록합니다. 마지막 업데이트: 2026-01-10