Python-Markdown의 테이블 렌더링 지원
Python
//
2024년 08월 05일 작성
//
2024년 08월 13일 업데이트
Python-Markdown으로 마크다운 문서를 HTML로 렌더링 할 때는 뭔가 고급(?) 기능이 빠진 것 같이 렌더링이 된다. 예를 들어 테이블의 경우가 그렇다.
다행히도 테이블 렌더링이 지원되지 않는 것은 아니다. 사실 아주 간단하다.
Python-Markdown에서 테이벌 렌더링 지원하기
테이블 렌더링을 지원하려면 간단히 tables
확장을 추가해 주면 된다. 예를 들자면 아래와 같은 식이다.
html = markdown.markdown(markdown_text, extensions=['tables'])
이 경우 테이블 문법으로 작성한 마크다운이 테이블 태그로 렌더링 된다.
정렬 속성 사용하기
위의 방식으로 테이블 확장을 사용할 경우 각 셀의 정렬(alignment)은 style 속성에 CSS가 명시되는 방식으로 적용된다. 만약 style이 아닌 align 속성으로 정렬되도록 하고 싶다면 별도의 옵션을 줄 수 있다. 이 경우 해당 확장 클래스 자체를 가져와서 매개변수를 전달해서 설정할 수 있다.
from markdown.extensions.tables import TableExtension
...
html = markdown.markdown(
markdown_text,
extensions=[TableExtension(use_align_attribute=True)]
)
위와 같은 식으로 확장을 추가할 경우 마크다운 문서에 정렬 방식을 설정할 경우 각 셀에 align
속성이 적용되는 것을 볼 수 있다.
실제 렌더링 결과물
이 렌더링 예시는 별도의 설정 없는 기본적인 확장을 사용한 경우다. 실제 HTML 태그는 소스보기로 확인해 보자.
입력 마크다운 문서는 아래와 같다.
| 좌측 정렬 항목 | 기본 항목 | 우측 정렬 항목 |
|:--------------------|------------------------------------|--------------------:|
| 왼쪽 | 기본 | 오른쪽 |
| 그냥 약간 긴 문자열 | 그냥 약간 아주 조금만 더 긴 문자열 | 그냥 약간 긴 문자열 |
| **당연히** | `다양한` *텍스트* 스타일을 | 쓸 수 있습니다. |
출력으로 렌더링 되는 결과는 아래와 같다.
좌측 정렬 항목 | 기본 항목 | 우측 정렬 항목 |
---|---|---|
왼쪽 | 기본 | 오른쪽 |
그냥 약간 긴 문자열 | 그냥 약간 아주 조금만 더 긴 문자열 | 그냥 약간 긴 문자열 |
당연히 | 다양한 텍스트 스타일을 |
쓸 수 있습니다. |
위 테이블이 잘 보인다면 별 문제는 없는 것이다.