조건부 콘텐츠
특정 출력 포맷에서만 보여야 하는 콘텐츠(또는 특정 포맷 외 에서만 보여야 하는 콘텐츠)를 만들고 싶을 수 있습니다. 이를 위해 .content-visible, .content-hidden 클래스를 적용한 div, span, 코드 블록을 사용할 수 있습니다.
.content-visible
특정 포맷에서만 보이게 하려면 .content-visible 클래스를 가진 div(:::)를 사용합니다. 예를 들어 HTML에서만 표시하고 싶다면:
::: {.content-visible when-format="html"}
HTML에서만 표시됩니다.
:::실행되지 않는 코드 블록에도 조건을 적용할 수 있습니다.
```{.python .content-visible when-format="html"}
# HTML에서만 표시되는 코드
2+2
```문단의 일부에만 조건을 적용하려면 span([]{})을 사용합니다.
예시 문장
[HTML에서만 보임.]{.content-visible when-format="html"}
[PDF에서만 보임.]{.content-visible when-format="pdf"}특정 포맷을 제외한 나머지 포맷에서 표시되도록 설정할 수도 있습니다. 예:
::: {.content-visible unless-format="pdf"}
PDF에는 표시되지 않습니다.
:::when-format, unless-format 속성은 현재 Pandoc 출력 포맷과 일치 여부를 판단하면서, 유사 포맷(html, html4, html5 등)을 자동으로 묶어 처리합니다. 자세한 매칭 규칙은 아래 포맷 매칭 섹션을 참고하세요.
when-format과 unless-format을 함께 사용해 복잡한 조건을 만들 수도 있습니다.
::: {.content-visible when-format="html" unless-format="revealjs"}
HTML에서는 나타나고 Reveal.js에서는 표시되지 않습니다.
:::
::: {.content-visible when-format="revealjs"}
Reveal.js에서만 나타나고 HTML 및 기타 포맷에서는 보이지 않습니다.
:::포맷 매칭
when-format, unless-format 조건은 관련 포맷을 미리 묶어 두어 콘텐츠 타깃팅을 쉽게 해 줍니다. 적용되는 별칭은 다음과 같습니다.
| 별칭 | 포맷 |
|---|---|
latex |
latex, pdf, beamer |
pdf |
latex, pdf, beamer |
epub |
epub* |
html |
html*, epub*, revealjs, dashboard, email |
html:js |
html*, revealjs, dashboard, email |
markdown |
markdown*, commonmark*, gfm, markua, hugo-md, docusaurus-md |
odt |
odt, opendocument |
hugo |
hugo-md |
docusaurus |
docusaurus-md |
asciidoc |
asciidoc, asciidoctor |
html:js 별칭은 대상 포맷이 JavaScript를 실행할 수 있음을 뜻합니다(ePub을 제외한 모든 HTML 포맷과 매핑).
그 외에는 dashboard, email, confluence처럼 포맷 이름을 그대로 지정해 사용할 수 있습니다.
메타데이터 조건
불리언 메타데이터 값을 조건으로 사용할 수도 있습니다. unless-meta, when-meta 속성을 사용하며, 메타데이터 키는 마침표(.)로 구분합니다. 예:
::: {.content-hidden unless-meta="path.to.metadata"}
아래와 같이 메타데이터 항목이 있을 때만 숨겨집니다.
```yml
path:
to:
metadata: true
```
:::이 기능은 프로젝트 프로필과 함께 사용하면 유용합니다. 프로필마다 서로 다른 메타데이터 값을 지정할 수 있으므로 조건부 콘텐츠 제어가 쉬워집니다.