개요
Quarto는 Python, R, Julia, JavaScript 코드를 실행 결과와 함께 문서로 만드는 오픈소스 과학·기술 출판 시스템입니다. .qmd (Quarto Markdown) 파일 형식을 사용하며, 하나의 소스로 HTML, PDF, Word, 슬라이드 등 다양한 포맷을 출력합니다.
- 개발: Posit (구 RStudio)
- 공식 사이트: https://quarto.org
- 엔진: Jupyter (Python), Knitr (R), Observable (JS) 지원
- 확장자:
.qmd
Jupyter Notebook(.ipynb) 과의 차이
| 항목 | Quarto (.qmd) | Jupyter (.ipynb) |
|---|---|---|
| 형식 | 텍스트(Markdown) 기반 | JSON 기반 |
| 버전 관리 | git diff 가능 | diff 어려움 |
| 출력 포맷 | HTML, PDF, Word, 슬라이드 등 다양 | 주로 HTML/nbviewer |
| 언어 | Python, R, Julia, JS 멀티 | 주로 단일 언어 |
| 협업 | 텍스트 파일이라 편집 쉬움 | 충돌 해결 어려움 |
기본 구조
---
title: "분석 보고서"
author: "bigstones"
date: today
format: html
---
## 개요
텍스트와 코드를 함께 작성합니다.
```{python}
import pandas as pd
df = pd.read_csv("data.csv")
df.head()결과가 바로 아래에 렌더링됩니다.
---
## YAML 헤더 (Frontmatter)
```yaml
---
title: "제목"
subtitle: "부제목"
author: "작성자"
date: today # 또는 "2026-04-04"
date-format: "YYYY-MM-DD"
# 출력 형식
format:
html:
toc: true # 목차
toc-depth: 3
number-sections: true # 섹션 번호
code-fold: true # 코드 접기
theme: cosmo # Bootstrap 테마
pdf:
documentclass: article
docx: default
# 코드 실행 설정
execute:
echo: true # 코드 표시 여부
eval: true # 코드 실행 여부
warning: false # 경고 숨기기
cache: true # 결과 캐시
# 참고문헌
bibliography: references.bib
csl: apa.csl
---
코드 청크 옵션
#| 접두사로 청크별 옵션 지정:
```{python}
#| label: fig-scatter # 레이블 (크로스레퍼런스용)
#| fig-cap: "산점도" # 그림 캡션
#| echo: false # 코드 숨기기 (결과만 표시)
#| eval: true # 실행 여부
#| warning: false # 경고 숨기기
#| cache: true # 이 청크만 캐시
import matplotlib.pyplot as plt
plt.scatter([1,2,3], [4,5,6])
plt.show()
```주요 청크 옵션
| 옵션 | 설명 | 기본값 |
|---|---|---|
echo | 코드 표시 여부 | true |
eval | 코드 실행 여부 | true |
output | 출력 표시 여부 | true |
warning | 경고 표시 여부 | true |
error | 에러 표시 여부 | false |
cache | 결과 캐시 | false |
fig-width | 그림 너비 (인치) | 7 |
fig-height | 그림 높이 (인치) | 5 |
fig-cap | 그림 캡션 | - |
label | 청크 레이블 (크로스레퍼런스) | - |
출력 포맷
# HTML (기본)
quarto render document.qmd --to html
# PDF (LaTeX 필요)
quarto render document.qmd --to pdf
# MS Word
quarto render document.qmd --to docx
# 슬라이드 (Revealjs)
quarto render slides.qmd --to revealjs
# 슬라이드 (PowerPoint)
quarto render slides.qmd --to pptx
# 미리보기 (라이브 리로드)
quarto preview document.qmd프로젝트 타입
# 웹사이트
quarto create project website mysite
# 블로그
quarto create project blog myblog
# 책
quarto create project book mybook
# 논문
quarto create project manuscript mypaper크로스레퍼런스
# 그림 참조
{#fig-example}
본문에서 @fig-example 참조.
# 표 참조
| A | B |
|---|---|
| 1 | 2 |
: 표 캡션 {#tbl-example}
@tbl-example 참조.
# 수식 참조
$$E = mc^2$$ {#eq-einstein}
@eq-einstein 참조.확장 마크다운 문법
# Callout 블록
::: {.callout-note}
참고 사항
:::
::: {.callout-warning}
주의 사항
:::
::: {.callout-tip}
팁
:::
# 탭 패널
::: {.panel-tabset}
## Python
```{python}
print("hello")R
print("hello"):::
다단 레이아웃
:::: {.columns} ::: {.column width=“50%”} 왼쪽 내용 ::: ::: {.column width=“50%”} 오른쪽 내용 ::: ::::
---
## 설치
```bash
# Quarto CLI 설치 (https://quarto.org/docs/get-started/)
# Ubuntu/Debian
wget https://quarto.org/download/latest/quarto-linux-amd64.deb
sudo dpkg -i quarto-linux-amd64.deb
# Python 패키지
pip install jupyter
# 버전 확인
quarto --version
# VS Code 확장
# "Quarto" 확장 설치 (quarto.quarto)
활용 사례
| 용도 | 설명 |
|---|---|
| 데이터 분석 보고서 | 코드+결과+설명 통합 문서 |
| 학술 논문 | 저널 템플릿, 참고문헌, LaTeX 출력 |
| 기술 블로그 | 코드 실행 가능한 블로그 포스트 |
| 대시보드 | Observable JS로 인터랙티브 시각화 |
| 슬라이드 | Revealjs 기반 프레젠테이션 |
| 교육 자료 | 실습 가능한 튜토리얼 문서 |