개요

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

크로스레퍼런스

# 그림 참조
![캡션](image.png){#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 기반 프레젠테이션
교육 자료실습 가능한 튜토리얼 문서

관련 항목