HTML 표 처리

개요

Quarto 1.3에서는 표 처리 방식에 몇 가지 변경을 적용했습니다. 최근 Pandoc 버전은 HTML 표를 Pandoc의 네이티브 데이터 구조(행/열 병합 등 포함)로 파싱하는 지원을 추가했으며, Quarto는 이를 활용해 더 많은 형식에서 올바르게 서식이 지정된 표를 만들기 쉽게 했습니다.

HTML 표가 이제 모든 형식에서 처리됨

구체적으로 Quarto는 이제 html 형식의 RawBlock 노드에 있는 HTML 표를 파싱하여 출력 형식과 무관하게(비-HTML 형식 포함) 마크다운 표로 변환하려고 시도합니다. 그 결과 문서에서 HTML 표 문법을 사용할 수 있고, 모든 형식에서 마크다운 표로 올바르게 변환됩니다. 또한 HTML 형식으로 계산 표를 출력하는 라이브러리도 다른 출력 형식에서 동작할 수 있습니다. 추가로 Lua 필터가 HTML 형식으로 지정된 표의 내용을 조작할 수 있게 됩니다.

Note

라이브러리 작성자라면 출력에 HTML 표를 생성하는 것을 고려해 주시기 바랍니다. 이렇게 하면 사용자가 모든 형식에서 Quarto의 표 처리 기능을 최대한 활용할 수 있습니다.

다만 HTML 표 처리 방식이 라이브러리의 처리와 충돌할 수도 있습니다. 그런 경우에는 다음 데이터 속성을 표에 추가하여 Quarto의 HTML 표 처리를 비활성화할 수 있습니다:

<table data-quarto-disable-processing="true">
  ...
</table>

Bootstrap 클래스를 표에 추가 가능

표 캡션 옆에 속성으로 지정된 Bootstrap 표 클래스가 이제 <table> 요소에 삽입됩니다. 허용되는 클래스는 표 전체에 적용되는 클래스이며, 다음과 같습니다: "primary", "secondary", "success", "danger", "warning", "info", "light", "dark", "striped", "hover", "active", "bordered", "borderless", "sm", "responsive", "responsive-sm", "responsive-md", "responsive-lg", "responsive-xl", "responsive-xxl". 예를 들어 다음 마크다운 표는 줄무늬가 적용되고, 행에 마우스를 올리면 강조 표시됩니다:

| fruit  | price  |
|--------|--------|
| apple  | 2.05   |
| pear   | 1.37   |
| orange | 3.09   |

: Fruit prices {.striped .hover}

임베디드 마크다운 콘텐츠 지정 가능

또한 Quarto는 이제 표 안에 임베디드 마크다운 콘텐츠를 지정할 수 있습니다. 이는 임베디드 span 또는 div 노드에 qmd 또는 qmd-base64 데이터 속성을 제공함으로써 가능합니다. 이러한 노드는 표의 머리글, 바닥글, 셀, 캡션 등 콘텐츠가 허용되는 어디든 위치할 수 있습니다. 예를 들어 다음 표를 살펴보세요:

<table>
  <caption><span data-qmd="As described in @Lovelace1864, computers are great."></span></caption>
  <thead>
    <tr>
      <th><span data-qmd="_Header 1_"></span></th>
      <th><span data-qmd="_Header 2_"></span></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><span data-qmd=""></span></td>
      <td>Regular output</td>
    </tr>
  </tbody>
</table>

data-qmd 속성을 가진 span 노드는 임베디드 마크다운 콘텐츠로 처리됩니다. 이를 통해 인용, 비디오 등 임의의 마크다운 콘텐츠를 표에 삽입할 수 있습니다. 한 가지 유의할 점은 data-qmd의 내용이 올바르게 이스케이프되어야 한다는 것입니다. 표 출력을 생성하는 라이브러리 작성자는 data-qmd-base64 속성 사용을 고려하세요. 이는 디코딩된 뒤 Quarto가 처리합니다.

제한 사항

Quarto는 다음의 처리를 지원하지 않습니다: