인라인 코드
개요
인라인 코드는 마크다운 안에서 코드를 실행할 수 있게 해줍니다. 예를 들어 서술형 텍스트에 최신 계산 결과를 자동으로 반영할 수 있습니다. Quarto는 Jupyter, Knitr, OJS 세 엔진 모두에서 동작하는 인라인 코드 문법을 제공합니다.
인라인 코드 문법은 코드 블록과 유사하지만, 삼중 백틱(``) 대신 단일 백틱()을 사용하며 마크다운 문장 중간에 넣을 수 있습니다. 예를 들어 아래 코드는 코드 블록에서 radius 변수를 저장한 다음, 인라인 코드로 문장에 값을 삽입합니다.
```{python}
radius = 5
```
The radius of the circle is `{python} radius`이 문법은 어떤 Jupyter 커널에서도 동작합니다. Julia의 경우 인라인 표현식은 `{julia} radius`처럼 작성합니다.
```{r}
radius <- 5
```
The radius of the circle is `{r} radius````{ojs}
radius = 5
```
The radius of the circle is `{ojs} radius`이 코드는 다음과 같은 마크다운 출력으로 렌더링됩니다.
The radius of the circle is 5.인라인 표현식은 일반 코드 셀에서 미리 계산한 단순 값에 한정하는 것이 좋습니다(복잡한 작업을 수행하는 함수 호출은 피하세요). 인라인 표현식에 사용되는 프로토콜은 일부 Python 라이브러리(특히 멀티스레딩/멀티프로세싱을 사용하는 라이브러리)와 호환되지 않을 수 있습니다.
Quarto는 Knitr과 OJS의 네이티브 문법도 지원합니다. 자세한 내용은 아래 문법 호환성을 참고하세요.
일반적으로 YAML 문자열 안에서는 인라인 표현식을 지원하지 않습니다. 예를 들어 title 문서 옵션이나 fig-cap 코드 셀 옵션을 인라인 코드로 생성할 수 없습니다.
동적 캡션이 필요하다면 fig-cap 또는 tbl-cap 코드 셀 옵션 대신 인라인 코드와 상호 참조 Div 문법을 함께 사용하세요.
노트북에서의 사용
.qmd 파일을 렌더링/미리보기할 때 인라인 표현식은 항상 평가됩니다. 하지만 노트북은 Quarto로 실행해야 인라인 표현식이 평가됩니다(즉, JupyterLab, Positron, VS Code, PyCharm 노트북 편집기 안에서는 평가되지 않습니다).
Quarto 실행 없이 선호하는 노트북 프런트엔드에서 작업한 뒤, 배포할 때 렌더링 과정에서 노트북을 실행하면 됩니다.
Terminal
$ quarto render notebook.ipynb --execute노트북의 YAML 옵션에서 실행을 켤 수도 있습니다. 예:
---
title: "My Notebooks"
execute:
enabled: true
---마크다운 출력
기본적으로 인라인 표현식의 출력은 일반 텍스트로 처리됩니다(즉, 안에 있는 마크다운은 렌더링되지 않습니다). 인라인 표현식 출력 안의 마크다운 형태 문법은 자동으로 이스케이프됩니다. 예를 들어 다음 인라인 표현식은:
`{python} '**not bold**'` 다음 마크다운을 출력합니다.
\*\*not bold\*\*명시적으로 마크다운 출력이 필요하다면 각 엔진에 맞는 함수를 사용해야 합니다.
IPython.display의 Markdown() 함수를 사용합니다.
```{python}
from IPython.display import Markdown
```
This is `{python} Markdown('**bold**')`I() 함수를 사용합니다.
This is `{r} I("**bold**")`md 함수를 사용합니다.
```{ojs}
text = md`This is **bold**`
```
`{ojs} text`이스케이프
인라인 표현식에 대한 문서를 작성하는 경우(이 문서처럼), 실행되지 않도록 문법을 이스케이프해야 할 수 있습니다. 방법은 두 가지입니다.
표현식을 이중 중괄호로 감싸기. 예:
`{{python}} x`표현식을 추가 백틱으로 감싸기. 예:
``{python} x``
위의 표현식은 모두 출력 문서에서 `{python} x`처럼 평가되지 않은 상태로 렌더링됩니다.
엔진 바인딩
실행 가능한 코드 블록이 없는 문서에서 인라인 표현식을 사용하는 경우, 표현식이 평가되도록 engine 문서 옵션을 명시적으로 설정해야 합니다(자동 엔진 바인딩은 블록에는 적용되지만 인라인에는 적용되지 않습니다). 예:
---
title: "My Document"
engine: jupyter
---
`{python} "hello"`문법 호환성
엔진 간 표현식을 쉽게 학습하고 사용할 수 있도록, Quarto는 모든 엔진에서 동작하는 단일 문법을 제공합니다. 하지만 Knitr과 Observable의 네이티브 문법도 사용할 수 있습니다.
Knitr
Knitr의 네이티브 문법도 단일 백틱()을 사용하지만r`을 중괄호로 감싸지 않습니다. 예:
The radius of the circle is `r radius`.Knitr의 네이티브 인라인 문법은 마크다운 출력 처리에 대한 기본 동작이 다릅니다. 구체적으로, 모든 인라인 출력을 마크다운을 포함하는 것으로 처리합니다. 즉, 위 예시는 다음과 같습니다.
The radius of the circle is `{r} I(radius)`.OJS
OJS는 네이티브로 ${expr} 문법을 사용합니다. 예:
The radius of the circle is ${radius}