조건부 콘텐츠

특정 출력 포맷에서만 보여야 하는 콘텐츠(또는 특정 포맷 에서만 보여야 하는 콘텐츠)를 만들고 싶을 수 있습니다. 이를 위해 .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-formatunless-format을 함께 사용해 복잡한 조건을 만들 수도 있습니다.

::: {.content-visible when-format="html" unless-format="revealjs"}

HTML에서는 나타나고 Reveal.js에서는 표시되지 않습니다.

:::

::: {.content-visible when-format="revealjs"}

Reveal.js에서만 나타나고 HTML 및 기타 포맷에서는 보이지 않습니다.

:::

.content-hidden

특정 포맷에서 콘텐츠를 감추려면 .content-hidden 클래스를 사용합니다. 예를 들어 HTML에서 숨기려면:

::: {.content-hidden when-format="html"}

HTML에는 표시되지 않습니다.

:::

특정 포맷을 제외한 나머지에서 숨기도록 설정할 수도 있습니다.

::: {.content-hidden unless-format="pdf"}

PDF에서만 표시됩니다.

:::

포맷 매칭

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
```

:::

이 기능은 프로젝트 프로필과 함께 사용하면 유용합니다. 프로필마다 서로 다른 메타데이터 값을 지정할 수 있으므로 조건부 콘텐츠 제어가 쉬워집니다.