`r pi` 이다. 파이 값은
10 쿼토
쿼토(Quarto)는 다양한 프로그래밍 언어를 지원하는 오픈소스 출판 시스템으로, Pandoc에 기반을 두고 있다. 쿼토는 R, 파이썬, 줄리아, 자바스크립트(Observable JS) 등의 프로그래밍 언어를 지원하며, 사용자는 싱글 소싱(Single Sourcing)을 통해 신속하게 다양한 출판 저작물을 생성할 수 있다. “차세대 R마크다운(Next-Generation R Markdown)”이라는 별명을 가진 쿼토는 약 10년 동안의 R 마크다운의 성공과 실패 경험을 바탕으로 새로운 아키텍처로 재탄생했다. 개발 및 유지보수 팀이 잘 구성되어 있어, 프로젝트 지속 가능성과 신뢰성이 높고, 무료로 제공되므로 누구나 쉽게 접근할 수 있을 뿐만 아니라 오픈소스 프로젝트에 누구나 기여할 수 있다.
앨리슨 호스트(Allison Horst)는 복잡하고 어려운 데이터 과학 및 R 관련 개념을 친근하며 쉬운 그래픽을 제작해 공유하는 것으로 유명한데, 쿼토 작업 프로세스를 그림 10.1를 통해 설명하고 있다. R, 파이썬, 줄리아, Observable JS와 같은 다양한 프로그래밍 언어를 사용해 쿼토로 PDF, HTML, 워드, 웹사이트 등 다양한 형식의 출판저작물을 만드는 방법을 직관적이고 친근한 방식으로 소개하고 있다.
디지털 글쓰기와 출판(Hyde, 2021)에 대한 고민은 콘텐츠, 디자인, 형식의 세 가지 측면으로 구분될 수 있다. 이러한 구분은 저작물의 제작과 배포 과정에서 중요한 역할을 한다.
디지털 출판의 진화는 단순히 기술 발전의 결과가 아니라, 지식 생산과 공유 방식의 근본적 변화를 반영한다. 1990년대 WYSIWYG 워드프로세서는 타자기의 디지털 버전에 불과했다. 문서와 최종 출력물이 동일했고, 한 번 작성하면 다시 작성해야 했다. 이 시대의 패러다임은 “문서가 곧 완성품”이었으며, 수정이나 형식 변경에는 막대한 시간과 노력이 필요했다.
2000년대 웹의 등장은 첫 번째 패러다임 전환을 가져왔다. HTML과 CSS의 분리는 콘텐츠와 디자인을 독립적으로 관리할 수 있게 했다. 이는 혁신적인 발전이었지만, 여전히 각 출력 형식마다 별도의 작업이 필요했고, 과학기술 문서의 복잡한 요구사항—데이터 시각화, 수식, 참고문헌 관리—을 충족시키기에는 한계가 있었다.
2010년대 마크다운과 판독(Pandoc)의 결합은 진정한 싱글 소싱 시대를 열었다. 플레인 텍스트 기반 저작은 버전 관리를 가능하게 했고, 협업의 새로운 가능성을 제시했다. 개발자들이 코드를 관리하는 방식을 문서 작성에도 적용할 수 있게 되었다. 그러나 코드와 데이터를 문서에 통합하는 것은 여전히 수동적이고 오류가 발생하기 쉬웠다. 통계 분석을 하고 그 결과를 문서에 반영하려면, 복사-붙여넣기의 연쇄 작업을 피할 수 없었다.
쿼토는 이 모든 진화의 정점에서 등장했다(그림 10.2 참조). 콘텐츠, 디자인, 형식의 완전한 분리를 실현하면서도, 동시에 코드와 데이터를 문서에 자연스럽게 통합했다. 이는 단순한 기술적 진보가 아니라, “문서가 곧 프로그램”이라는 새로운 패러다임의 실현이었다. 데이터가 변경되면 그래프가 자동으로 업데이트되고, 분석 결과가 바뀌면 해석도 함께 갱신되는 살아있는 문서의 시대가 열린 것이다.
특히 주목할 점은 쿼토가 AI 시대 직전에 등장했다는 것이다. ChatGPT와 같은 생성형 AI가 코드를 작성하고 분석을 제안할 수 있게 되었지만, 그 결과물들을 체계적으로 관리하고 재현 가능한 형태로 문서화할 수 있는 도구가 바로 쿼토였다. AI가 생성한 인사이트도 결국 검증 가능하고 재현 가능한 형태로 문서화되어야 하며, 이는 쿼토의 철학과 완벽하게 일치한다.
이러한 진화적 관점에서 콘텐츠, 디자인, 형식의 세 가지 요소를 재정의해보면 다음과 같다:
콘텐츠(Content): 과거 정적인 텍스트와 이미지에 국한되었던 콘텐츠는 이제 데이터, 코드, 계산 결과를 포함하는 동적 콘텐츠로 진화했다. 현대의 콘텐츠는 실행 가능하고 재현 가능하며, 원본 데이터의 변경에 따라 자동으로 갱신된다. 콘텐츠 품질은 정보의 정확성과 완전성뿐만 아니라 재현성과 검증 가능성에 의해서도 결정된다.
디자인(Design): 문서별로 수동으로 스타일링하던 과거와 달리, 현재는 템플릿과 테마 기반의 체계적 디자인이 주류가 되었다. CSS, LaTeX 템플릿, 쿼토 테마 등을 통해 일관된 디자인을 대량의 문서에 적용할 수 있으며, 브랜드 아이덴티티와 접근성을 고려한 디자인 시스템이 구축된다. 좋은 디자인은 다양한 출력 형식(웹, 모바일, 인쇄)에서 일관된 사용자 경험을 제공한다.
형식(Format): 과거 “하나의 문서, 하나의 형식”이던 제약에서 벗어나 싱글 소싱을 통한 다중 출력이 표준이 되었다. 하나의 원본에서 HTML, PDF, Word, PowerPoint, ePub 등 다양한 형식으로 자동 변환되며, 각 형식의 특성에 맞게 최적화된다. 형식은 더 이상 제약이 아니라 독자의 다양한 요구에 맞춘 서비스의 수단이 되었다.
쿼토는 콘텐츠, 디자인, 형식 세 가지 요소를 충족시키기 위해 다양한 기능을 제공한다. 팬독(pandoc)과 마크다운을 근간으로 수식, 인용, 서지 관리, 콜아웃(callout), 고급 레이아웃 같은 기능들이 포함된다. 저자는 문서 기본요소를 바탕으로 고품질의 논문, 보고서, 발표 슬라이드, 웹사이트, 블로그, 전자책 등 다양한 형태의 출판물을 제작할 수 있으며, 인쇄 매체 뿐만 아니라 HTML, PDF, MS 워드, ePub 등 다양한 디지털 매체를 통해 독자에게 적합한 형태로 전달될 수 있다. 특히, 쿼토는 프로그래밍 언어(R, 파이썬 등)와 문서 저작, 출판 산출물 사이에서 핵심 연결고리로 기능을 하며, 버전 제어, 협업, 재현 가능한 과학 기술 문서나 비즈니스에서 자동화된 생산성 높은 문서 저작에 큰 장점을 제공하고 있다.
RStudio(현 Posit) 쿼토(Quarto) 개발자들은 출판의 역사에서 의미 있는 이름을 선택하여 ’Quarto’라는 이름을 정했다. 쿼토는 전지에 8페이지 텍스트를 인쇄하여 한 면에 4페이지씩, 두 번 접어 네 장(4 leaves, 8페이지)을 만드는 책이나 팸플릿 형식을 의미한다. 흥미롭게도 유럽에서 인쇄된 것으로 알려진 가장 초기의 책인 구텐베르크의 Sibyllenbuch(1452-53년 추정)도 쿼토 형식이었다.
쿼토 한국어 번역에 기여한 한국 R 사용자회에서는 ’Quarto’를 콰르토, 쿼터, 쿼르토 등 다양한 한글 표기법을 검토하였으나 ’쿼토’가 원어민 발음에 가까고 의미를 잘 전달한다고 판단하여 쿼토로 통일하였다.
10.1 싱글 소싱 출판
데이터 과학과 과학기술 분야의 출판저작은 다른 분야와 약간 다를 수 있지만, 출판의 기본적인 접근 방식은 대부분 유사하다고 볼 수 있다. 싱글 소싱(Single Sourcing)은 하나의 원본 콘텐츠를 여러 형식이나 채널에 적용할 수 있도록 하는 문서 작성 및 관리 방법이다. 이는 콘텐츠 저작부터 디자인, 협업, 검수, 최종 출판물 관리까지 일원화하고 자동화하는 방법으로, 중복 작업과 낭비를 줄이고 재현 가능성을 높이는 데 있어 과학기술 출판저작물에 이상적인 방법으로 평가받고 있다.
Adam Hyde의 연구(Hyde, 2021)에 따르면, 싱글 소싱은 작업량을 최대 80%까지 감소시킬 수 있다. 콘텐츠를 한 번만 작성하고 다양한 출력 형식(PDF, 웹 페이지, PPT, 모바일 앱 등)으로 자동 변환함으로써, 콘텐츠 일관성 유지 및 업데이트와 관리가 훨씬 효율적이다. 특히 과학 저널의 경우 동일한 원본에서 웹사이트용 HTML, 배포용 PDF, 디지털 유통업체를 위한 XML 등 다중 형식을 생성할 수 있다.
이러한 접근법이 효과적으로 작동하려면 단순히 도구를 공유하는 것을 넘어 서로 다른 도구 문화를 존중하면서도 통합된 워크플로우를 제공해야 한다. WYSIWYM(What You See Is What You Mean) 패러다임을 따르는 Métopes, Editoria, Quire, Stylo 같은 프로젝트들이 이러한 철학을 구현하고 있으며, 쿼토 역시 이 흐름의 연장선상에 있다.
싱글 소싱 저작 방식은 데이터, 코드, 수식, 표, 그래프, 다이어그램, 텍스트 등 다양한 저작물 구성 요소를 하나의 소스코드로 관리함으로써, 수정이나 업데이트가 필요할 때 일관성을 유지하면서 효율적으로 출판작업을 수행할 수 있다. 과학기술 분야에서 연구결과의 정확성과 신뢰성을 높이는 재현 가능한 글쓰기에 중점을 두는 경향과도 맞닿아 있다.
챗GPT와 같은 생성형 AI 저작의 증가로 다양한 형태의 출판저작물을 정확하고 신속하게 제작하는 기능이 점점 더 중요해지고 있다. 특히, 싱글 소싱을 통한 자동화는 비즈니스 글쓰기 분야에서 중요성을 더해가고 있으며, 콘텐츠 일관성과 콘텐츠 제작 효율성 향상에 큰 기여를 하고 있다. 향후, AI 기반 글쓰기와 싱글 소싱 결합은 출판저작 과정을 더욱 빠르고 정확하게 만들어 전 세계적으로 글로벌 표준으로 자리매김할 것으로 예상된다. 그리고 과거 개발자와 비개발자로 나뉘어서 서로 다른 도구를 사용해서 문서 및 산출물을 생산했지만 이러한 구분은 생성형 AI의 보급으로 프로그램을 작성하는 것과 글을 저작하는 것의 차이는 점점 줄어들 것으로 예상된다.
10.2 작업흐름
데이터 과학에서는 다양한 언어가 필요하다. SQL은 자료 추출 과정에, R은 데이터 전처리, 시각화, 통계 및 다변량 분석에, 파이썬은 기계학습과 딥러닝에, 자바스크립트는 인터랙티브 시각화 및 웹 출판에, 그리고 논문 출판에는 \(\LaTeX\)(Knuth, 1984)이 필요하다. R마크다운이 RStudio에서 유사한 작업흐름을 제공했지만, 오직 R 언어만 지원하는 한계가 있었다. 쿼토는 R, 파이썬, 자바스크립트, 줄리아 등 기본적으로 4가지 언어를 지원하지만, 대부분의 데이터 과학 문제는 R과 파이썬으로 해결할 수 있다. 쿼토의 주요 특징 중 하나는 기존 R knitr
.Rmd
파일과 파이썬 주피터 .ipynb
파일을 .qmd 파일로 통합한 것이다. 저자 입장에서 보면 RStudio, 주피터 노트북, VS코드 등 특정 언어에 친화적인 개발환경에 얽매일 필요가 없게 되어 하나의 저작도구에서 마크다운, R, 파이썬 등 다양한 언어를 사용할 수 있게 되었다.
이러한 통합은 복잡한 작업 흐름을 단순화하고 서로 다른 언어를 사용하는 개발자와 연구자 간의 협업을 촉진할 수 있다. 사람과의 커뮤니케이션을 위해 제작되는 일반적인 텍스트는 마크다운으로 작성되고, 기계와 커뮤니케이션을 위해 제작되는 프로그래밍 코드는 R, 파이썬, 자바스크립트, 줄리아 등으로 작성된다. 쿼토는 사람과 기계와의 커뮤니케이션을 위해 제작된 콘텐츠를 컴파일하여 팬독 입력값으로 쓰일 수 있는 마크다운으로 변환시킨다. 팬독은 마크다운을 최종 출력물(PDF, HTML, 워드, PPT 등)로 변환하는 역할을 담당한다. 싱글 소싱 개념이 과거 특정 언어(\(\LaTeX\), R 마크다운 등) 중심에서 전개된 것을 쿼토가 마크다운과 팬독을 중심으로 조율하며 다양한 언어를 지원하는 방향으로 확장한 것으로 볼 수 있다.
10.3 쿼토 해부
쿼토는 데이터 과학 문서 작성의 새로운 패러다임을 제시하며, R마크다운의 후속임을 자처하고 있다. 10년 이상의 knitr
경험을 바탕으로 개발되었고, 최근에는 RStudio Visual 편집 기능을 통해 위지위그(What You See Is What You Get) 패러다임도 적극 수용함으로써 저작자는 복잡한 코드 작성 없이도 직관적으로 문서를 작성할 수 있게 되었다.
쿼토 저작은 메타데이터(전문, front matter), 텍스트, 코드라는 세 가지 주요 구성요소로 이뤄진다. 쿼토는 문학적 프로그래밍과 자동화 패러다임을 적극 반영하여 데이터 과학 프로그래밍과 과학기술 문서 작성을 더 효율적이고 일관된 방식으로 저작하고 출판할 수 있도록 지원한다.
- 메타데이터 (YAML): YAML은 “YAML Ain’t Markup Language”의 약자로, 데이터를 구조화하는 언어이다. 쿼토에서 이를 활용하여 문서 전문(Front Matter)을 구성한다. 문서 상단에 위치하며 문서 제목, 작성자, 날짜, 문서 형식 등을 포함하며 문서의 전반적인 설정과 구성을 담당한다.
- 텍스트 (마크다운): 마크다운은 2004년에 아론 스워츠와 존 그루버에 의해 개발된 언어로, HTML과 같은 복잡한 마크업 언어 대신 사용되는 간단한 형식의 문서 작성 도구다. 복잡한 디자인보다 콘텐츠 구조와 의미에 중점을 두기 때문에, 문서 저작자는 외양보다 내용에 더 집중할 수 있다.
-
코드 (
knitr
,jupyter
):knitr
는 R 코드를 문서에 통합할 수 있는 패키지,jupyter
는 파이썬 사용자에게 인기 있는 패키지이다. 쿼토에서는 이 두 패키지를 활용하여 작성된 코드를 문서에 포함시킬 수 있다. 데이터 분석, 통계값, 그래프, 다이어그램, 지도 등 다양한 코딩 결과물을 문서에 반영시킬 수 있다.
10.3.1 YAML
YAML(발음은 야믈)은 R 마크다운과 쿼토에서 주로 사용되는 경량언어다. YAML은 문서 전문(front matter) 부분에 위치해 코드와 텍스트로 구성된 문서 본문보다 먼저 위치하며, 문서 메타데이터를 설정하는 역할을 수행한다. 쿼토에서 YAML을 이용해 문서 제목, 작성자, 날짜, 문서 형식, 레이아웃 등을 정의한다. YAML은 기본적으로 KEY: Value
형태로 구성되어 있지만, 이러한 단순한 구조 덕분에 매우 편리하고 유용하다. YAML은 키와 값이 콜론(:)으로 구분되는 키값(key-value) 쌍을 사용해 각종 문서 설정정보를 표현하여 전반적인 문서 설정과 구성을 쉽게 관리한다. YAML을 통한 문서 저작을 경험하게 되면 YAML의 편리성과 유용함을 더 깊게 이해하게 된다.
키값 쌍
---
key: value
---
문서출력형식 PDF 지정
---
format: pdf
---
YAML을 이용한 문서 전문 작성은 가독성이 뛰어나 읽고 이해하기 쉽다는 장점이 있다. 특히 복잡한 문서 구조나 설정을 지정할 때 유용하며, 중첩된 선택옵션 같은 복잡한 구조도 들여쓰기를 통해 명확하게 표현할 수 있다. YAML은 재사용성이 뛰어나서 같은 설정 값을 여러 곳에서 사용해야 할 경우, 하나의 YAML 파일만 수정하면 모든 곳에 적용될 수 있어 시간과 노력을 크게 절약할 수 있다. 텍스트 기반인 만큼 Git과 같은 버전 제어 시스템과도 잘 통합되어, 여러 저자가 공동으로 작업할 때 진가를 발휘하지만, 들여쓰기에 민감하여 실수로 공백을 잘못 넣었을 경우 오류가 발생할 수 있어 주의가 필요하다.
10.3.2 YAML과 팬독
.qmd
파일에 문서 설정을 직접 정의함으로써, 저자는 문서가 어떻게 출력될지 쉽게 파악할 수 있다. 파일 자체에 출력 형식이 정의되어 있으면, 해당 파일을 다른 환경이나 사용자에게 보낼 때 별도의 설명이나 추가 명령어 없이 어디서나 동일한 방식으로 출력할 수 있다. 이는 YAML을 통한 복잡한 문서 설정 관리와 명령어 사용 시 출력 형식을 매번 지정할 필요가 없어지는 것을 의미한다. 특히, 같은 문서를 반복적으로 출력할 때 작업 효율성을 높이는 것은 물론, 배치 프로세스나 스크립트를 사용해 여러 문서를 처리할 때 각 문서의 YAML 설정에 따라 자동으로 다양한 형식으로 출력할 수 있다는 장점이 있다.
쿼토를 사용해 문서를 PDF 형식으로 변환할 때, quarto render document.qmd --to pdf
명령어의 --to pdf
옵션과 .qmd
파일 내 YAML 코드 format: pdf
는 같은 기능을 수행한다.
CLI PDF 지정
$ quarto render document.qmd --to pdf
YAML 문서형식 PDF
---
format: pdf
---
quarto render
명령을 사용하여 document.qmd
파일을 HTML
형식으로 제작하는 예시에서 CLI 옵션 -M code fold:true
을 사용하여 코드 섹션을 접을 수 있게 만들었다. 이러한 설정을 YAML
로 바꾸면, 설정 파일 내에 format
섹션을 생성하고 그 안에 html
을 정의한다. 그 후, html
포맷 설정에 목차 생성(toc: true
)과 코드 접기 기능(code-fold: true
)을 추가하는 것으로 바뀐다.
CLI 옵션을 직접 입력하는 것과 비교하여 YAML
파일에 설정을 담는 것이 훨씬 깔끔하고 우아하다. CLI에서 많은 선택옵션을 직접 입력하면 명령어가 길어져 가독성이 떨어지고, 나중에 어떤 옵션을 사용했는지 확인하기 어렵다. 하지만 YAML
파일을 사용하면, 모든 설정을 한 곳에서 명확하게 관리할 수 있어 유지보수가 쉽고, 공동 저작자들과 공유와 협업에도 유리하다.
CLI 코드접기
$ quarto render document.qmd --to html -M code fold:true
YAML 코드접기
---
format:
html:
toc: true
code-fold: true
---
10.3.3 브랜딩과 테마 설정
쿼토 1.7부터는 brand.yml
파일을 통해 문서의 브랜딩과 테마를 체계적으로 관리할 수 있다. 이는 조직이나 프로젝트의 일관된 디자인 아이덴티티를 유지하면서도 라이트/다크 모드 같은 현대적인 사용자 경험을 제공하는 데 매우 유용하다.
brand.yml
파일은 색상, 폰트, 로고 등의 브랜딩 요소를 중앙에서 관리할 수 있게 해준다. 특히 다크 모드 지원에서는 light
와 dark
테마를 각각 정의할 수 있으며, respect-user-color-scheme
옵션을 통해 사용자의 시스템 설정을 자동으로 따르도록 할 수 있다.
brand.yml 예시
brand:
primary: "#1f77b4"
secondary: "#ff7f0e"
success: "#2ca02c"
light:
background: "#ffffff"
foreground: "#333333"
dark:
background: "#1a1a1a"
foreground: "#ffffff"
YAML에서 브랜드 설정
---
format:
html:
theme:
light: [cosmo, brand.yml]
dark: [darkly, brand.yml]
respect-user-color-scheme: true
---
renderings
코드 셀 옵션을 사용하면 라이트 모드와 다크 모드에서 서로 다른 계산 출력을 보여줄 수도 있다. 예를 들어, 라이트 모드에서는 밝은 배경의 그래프를, 다크 모드에서는 어두운 배경의 그래프를 자동으로 표시할 수 있다.
이러한 기능들은 특히 기업이나 기관에서 공식 문서를 제작할 때 브랜드 일관성을 유지하면서도 현대적인 사용자 경험을 제공하는 데 매우 유용하다.
그림 10.8 에서 보는 바와 같이, brand.yml
파일이 중앙 허브 역할을 하여 모든 출력 형식에 일관된 디자인을 적용한다. 색상 팔레트, 폰트, 로고 등의 브랜딩 요소가 CSS/SCSS 테마 시스템과 결합되어 쿼토 엔진을 통해 HTML, PDF, PPT 등 모든 출력물에 자동으로 적용되며, 라이트/다크 모드도 사용자 환경에 따라 자동 전환된다.
10.3.4 코드 덩어리
쿼토는 다양한 프로그래밍 언어를 지원하여 문서 내에 계산(Computation) 기능을 쉽게 통합할 수 있는 현존하는 얼마 안되는 문학적 프로그래밍 저작도구다. R, 파이썬, SQL, 자바스크립트 등을 활용해 그래프, 표, 다이어그램, 인터랙티브 산출물을 문서에 반영하여 한층 진화된 디지털 문서 저작을 지원한다.
쿼토에서 프로그래밍 코드를 포함하는 방식은 .qmd
파일에서 RStudio를 사용한다면 코드 블록을 생성하고자 하는 위치에 커서를 두고 키보드 단축키 Ctrl
+Alt
+I
를 누르면 된다. 여는 괄호({
)와 닫는 괄호(}
) 사이에 r
, python
, sql
, julia
, ojs
뿐만 아니라 mermaid
, tikz
등 다양한 언어를 명세할 수 있고 쿼토 문서를 컴파일하면 실행결과를 쿼토 문서에 남길 수 있다.
인라인 코드 덩어리(inline code chunk)를 통해 문장 내에 작은 코드 조각을 포함시킬 수 있다. 예를 들어, 텍스트 중간에 계산 결과나 변수의 값을 직접 표시하고 싶을 때 유용하다. 쿼토에서 백틱(`
)과 r
표시를 사용하여 인라인 코드 덩어리를 표현한다. 예를 들어, 다음 코드를 실행시키면 “파이 값은 3.1415927 이다.”와 같이 표시된다.
인라인 코드
실행결과
파이 값은 3.1415927 이다.
코드 덩어리(code chunk)는 문서에 한줄이 아닌 여러줄로 구성된 보다 큰 코드 블록을 포함시킬 때 사용된다. 인라인 코드 덩어리와 마찬가지로 코드를 실행하고 결과를 문서에 직접 포함시킬 수 있다.
쿼토에서 세 개의 백틱(```
)과 언어 이름(예: r
, python
)을 사용하여 R 혹은 파이썬 코드를 여러줄에 걸쳐 작성하고 세 개의 백틱(```
)을 마지막에 넣어 닫는다. 예를 들면 R 내장 mtcars
데이터셋 1,2 변수에 대한 요약통계량을 다음과 같이 작성하여 실행시킬 수 있다.
R 코드 덩어리
```{r}
summary(mtcars[,1:2])
```
실행결과
#> mpg cyl
#> Min. :10.40 Min. :4.000
#> 1st Qu.:15.43 1st Qu.:4.000
#> Median :19.20 Median :6.000
#> Mean :20.09 Mean :6.188
#> 3rd Qu.:22.80 3rd Qu.:8.000
#> Max. :33.90 Max. :8.000
10.3.5 통합개발환경
쿼토는 다양한 통합개발환경(IDE)과의 호환성을 지원하고 있다. R 사용자는 RStudio IDE를, 파이썬 사용자는 주피터 노트북/파이참을, 범용 소프트웨어 개발 경험이 있는 사용자는 VS코드/이맥스/VIM 등을 사용해 쿼토와 통합할 수 있다. 또한, 쿼토 CLI를 통해 이러한 IDE에서 저작물을 다양한 형태로 쉽게 출판할 수 있다.
코딩기반 문서저작에 IDE가 필수적인 이유는 다양하다. IDE는 문서 작성 중 발생할 수 있는 오류를 신속하게 발견하고 수정하는 데 도움을 주며, 자동 완성, 구문 강조, 코드 정리와 같은 기능들을 통해 문서 작성의 생산성을 높일 수 있다. 또한, Git과 같은 버전 관리 시스템과의 통합은 문서의 이력을 관리하고 협업을 용이하게 하며, 다양한 프로그래밍 언어와 마크업 언어를 지원함으로써 사용자가 필요에 따라 다양한 언어로 문서를 즉각 작성할 수 있다. 이러한 장점들로 인해, IDE는 코딩기반 문서저작에 있어 필수불가결한 도구로 자리잡고 있다.
예를 들면, IDE에서 제공하는 탭-자동완성 기능은 YAML 전문 코드를 작성하는 데 매우 유용하다. 이 기능을 사용하면 저작자는 첫 글자나 몇 글자를 타이핑한 후 탭 키를 눌러 가능한 모든 명령어, 변수, 함수 이름 등을 볼 수 있다. 이는 오타의 가능성을 줄이고 문서 저작 속도를 향상시킨다. 특히 RStudio에서는 Ctrl + space
단축키를 사용해 YAML 전문 코드를 작성할 때 가능한 키값을 선택할 수 있는 목록을 제공한다. 이러한 기능들은 문서 저작 과정을 효율적으로 만들어 준다.
10.4 최신 쿼토 기능
쿼토는 지속적으로 발전하고 있으며, 최근 버전들에서 혁신적인 기능들이 추가되었다. 이러한 최신 기능들은 쿼토를 단순한 문서 제작 도구를 넘어 종합적인 출판 플랫폼으로 발전시키고 있다.
10.4.1 쿼토 1.4의 핵심 기능
대쉬보드 (Dashboards)는 쿼토 1.4에서 추가된 가장 주목할 만한 기능 중 하나다. 인터랙티브 대쉬보드를 쉽게 생성할 수 있으며, 다양한 시각화, 데이터, 주석을 효과적으로 배치할 수 있다. 여러 디자인 테마를 지원하고 인터랙티브 컴포넌트를 포함할 수 있어, 데이터 분석 결과를 직관적으로 전달하는 데 탁월하다.
Manuscripts 기능은 학술 논문 작성을 위한 새로운 프로젝트 유형이다. 노트북 기반 콘텐츠를 지원하며, 계산 작업과 함께 manuscript를 출판할 수 있다. 여러 문서 형식을 가진 웹사이트를 생성하여 독자가 다양한 형태로 연구 결과에 접근할 수 있게 해준다.
Typst 지원은 PDF 생성을 위한 새로운 선택지를 제공한다. Typst는 \(\LaTeX\)만큼 강력하면서도 훨씬 사용하기 쉬운 오픈소스 조판 시스템이다. format: typst
를 사용하여 학술 논문, 포스터, 문서용 템플릿을 간편하게 생성할 수 있다.
인라인 코드 통합 구문은 Jupyter, Knitr, Observable JS에서 통합된 구문으로 인라인 계산 표현식을 사용할 수 있게 한다. 예를 들어, `{python} radius`
형태로 일관된 방식으로 인라인 코드를 작성할 수 있다.
크로스 레퍼런스 개선에서는 보다 유연한 참조 정의가 가능해졌다. 코드 셀, 콜아웃, 리마크에 대한 상호 참조가 지원되고, 참조에 대한 호버 미리보기 기능도 추가되었다. 사용자 정의 참조 유형도 문서나 프로젝트 YAML을 통해 정의할 수 있다.
10.4.2 쿼토 1.7의 혁신
다크 모드 개선이 쿼토 1.7의 핵심 기능이다. 사용자는 brand.yml
을 통해 라이트와 다크 테마를 지정할 수 있으며, 새로운 renderings
코드 셀 옵션을 사용하여 계산 출력을 다양한 테마에 맞게 매핑할 수 있다. respect-user-color-scheme
옵션을 통해 사용자의 OS나 브라우저 색상 설정을 자동으로 따를 수도 있다.
Julia 엔진 향상에서는 juliaup
통합으로 특정 Julia 버전을 사용할 수 있게 되었다. RCall과 PythonCall 패키지를 통한 R과 Python 지원, 장시간 실행되는 노트북을 위한 캐싱, Revise.jl 통합으로 자동 함수 정의 업데이트 등이 지원된다.
기타 개선사항으로는 Pandoc이 3.6.3으로 업데이트되었고, 쿼토 버전을 삽입하는 새로운 version
숏코드가 추가되었으며, \(\LaTeX\)와 Beamer 템플릿이 개선되었다.
10.4.3 커뮤니티 확장과 생태계
쿼토의 확장 가능한 아키텍처 덕분에 커뮤니티에서 개발한 강력한 확장들이 활발히 개발되고 있다. 이러한 확장들은 쿼토의 기본 기능을 크게 확장하여 더욱 풍부한 인터랙티브 문서 제작을 가능하게 한다.
WebR 확장은 브라우저에서 R 서버 없이도 R 코드를 실행할 수 있는 혁신적인 기술이다. quarto-webr
확장을 통해 HTML, RevealJS, 웹사이트, 블로그, 책 등 다양한 쿼토 형식에서 WebR 코드 셀을 사용할 수 있다. 정적 웹 서비스(GitHub Pages, Quarto Pub, Netlify 등)만으로도 완전히 인터랙티브한 R 코드 실행 환경을 제공할 수 있어, 교육이나 데모 목적으로 매우 유용하다.
Quarto-Live는 WebAssembly를 활용한 R과 Python 언어 모두를 지원하는 코드 블록 확장이다. quarto-live
확장은 사용자의 웹 브라우저에서 동적으로 코드를 실행할 수 있으며, 다음과 같은 기능을 제공한다:
- 인터랙티브 R과 Python 코드 블록
- 선택적 힌트, 해답, 맞춤형 채점 알고리즘을 포함한 연습문제
- 인터랙티브 플롯, 이미지, HTML 위젯 같은 풍부한 클라이언트 측 출력
이러한 확장들은 특히 교육 분야에서 혁신을 가져오고 있다. 학생들이 별도의 R이나 Python 설치 없이도 웹 브라우저만으로 실제 코드를 실행하고 학습할 수 있어, 진입 장벽을 크게 낮춘다. 또한 데이터 과학 블로그나 기술 문서에서 독자가 직접 코드를 수정하고 실행해보며 내용을 이해할 수 있는 환경을 제공한다.
Shiny for Python 지원도 주목할 만한 발전이다. 기존 R Shiny의 강력한 인터랙티브 기능을 Python 사용자들도 활용할 수 있게 되어, 쿼토 문서 내에서 파이썬 기반의 인터랙티브 애플리케이션을 만들 수 있다.
10.5 R 마크다운과 쿼토
R마크다운이 파이썬(배쉬, 줄리아, C, SQL)과 호환되지만, R 마크다운은 주로 R 사용자를 위해 설계되었다. 쿼토는 꼭 R을 필요로 하지 않는다. 1 쿼토는 컴퓨팅을 교체 가능한 언어 “엔진(engine)”으로 실행시킴으로써 다양한 언어를 지원하기 위한 별도의 복잡한 설정이나 추가적인 시스템 구성을 최소화함으로써 사용자가 쉽게 여러 언어를 사용할 수 있게 해주는 내장 기능을 제공한다. 또한, 쿼토는 기존 형식과 호환되도록 설계되어 있기 때문에 대부분의 기존 .Rmd
파일과 주피터 노트북 .ipynb
파일을 쿼토에서 수정 없이 바로 사용할 수 있어 쿼토로의 전환을 수월하게 하고 있다.
쿼토는 “차세대 R 마크다운”이라는 별명에 걸맞게 R 마크다운의 다양한 패키지와 기능을 지원하고 있다. 그러나 쿼토의 개발 기간이 R 마크다운보다 상대적으로 짧기 때문에 아직은 R 마크다운의 모든 기능을 지원하지 않는다. 그럼에도 불구하고, 쿼토는 지속적으로 지원 범위를 확장하고 있으며, 고유한 기능도 추가하고 있다. 이러한 점들은 쿼토가 R 마크다운 생태계에 어떤 새로운 가치를 더하고 있는지를 잘 보여준다. 쿼토 1.4 버전에 대쉬보드(dashboards)가 추가되어 R 마크다운 기능 대부분을 지원하게 되었다. 다음 표 10.1 에 쿼토와 R 마크다운을 다양한 문서 기능별로 비교되어 있다.
기능 | R 마크다운 | 쿼토(Quarto) |
---|---|---|
파일형식 | html_document / pdf_document / word_document | html / pdf / docx |
비머(Beamer) | beamer_presentation | beamer |
파워포인트(PPT) | powerpoint_presentation | pptx |
웹 슬라이드 | xaringan / ioslides / revealjs | revealjs / Observable JS 통합 |
고급 레이아웃 | tufte / distill | Article Layout / Page Layout |
상호 참조 | html_document2 / pdf_document2 / word_document2 | Cross-references (1.4에서 대폭 개선) |
웹사이트/블로그 | blogdown / distill | Quarto Websites / Quarto Blogs |
책 | bookdown | Quarto Books |
인터랙티브 문서 | Shiny Documents | Shiny Interactive / Observable JS |
대시보드 | flexdashboard | Quarto Dashboards (1.4+) - Python, R, Julia, Observable JS 지원 |
학술 논문 | rticles | Journal Articles / Manuscripts (1.4+) |
Typst 조판 | LaTeX 필요 | Typst Format (1.4+) - LaTeX 대체 가능 |
페이지드 HTML | pagedown | Paged.js 통합 개발 중 |
웹 어셈블리 | 제한적 지원 | WebR / Quarto-Live 확장 |
다크 모드 | 수동 CSS 설정 | brand.yml 자동 테마 관리 (1.7+) |
인터랙티브 자습서 | learnr | Quarto-Live 확장으로 부분 지원 |
10.6 AI 기반 콘텐츠 제작의 미래
쿼토의 콘텐츠 제작은 현재 Markdown + Python/R/Julia/Observable JS로 구성되어 있지만, 2024년 이후 대규모 언어 모델(LLM)의 급속한 발전과 함께 AI 강화 콘텐츠 제작이 새로운 패러다임으로 부상하고 있다.
그림 10.10 에서 보는 바와 같이, AI는 더 이상 단순한 도구가 아니라 콘텐츠 제작 과정의 중심 허브 역할을 하게 된다. 8단계 콘텐츠 생성 파이프라인이 AI를 중심으로 통합되어, 데이터 수집부터 품질 검증까지 전 과정을 체계화한 차세대 과학기술 출판을 실현한다.
이 파이프라인은 3개 주요 단계로 구성된다: 연구/분석 단계(데이터 연결, 버전 관리, 프롬프트 설계), 생성/처리 단계(코드 생성, 텍스트 생성), 출력/검증 단계(시각화, 표/수식, 품질 검증).
10.7 연구/분석 단계
10.7.1 데이터 연결
AI가 다양한 데이터 소스에 자동으로 연결하여 연구에 필요한 정보를 수집한다. SQL 쿼리 자동 생성을 통해 복잡한 데이터베이스에서 원하는 정보를 자연어 명령으로 추출할 수 있다. “2023년 서울시 기온 데이터를 월별로 요약해줘”라는 요청에 자동으로 적절한 JOIN, GROUP BY, 집계 함수가 포함된 SQL을 생성한다.
CSV/JSON 파일 파싱도 자동화되어, 파일 구조를 분석하고 최적의 읽기 방법을 제안한다. API 연동을 통해 GitHub, 기상청, 통계청 등의 공공 데이터를 실시간으로 가져와 분석에 활용한다. 모든 데이터 수집 과정이 재현 가능하도록 코드로 기록되어, 연구의 투명성을 보장한다.
10.7.2 버전 관리와 협업
모든 AI 생성 콘텐츠가 Git 버전 관리 시스템에 통합되어 변경사항을 추적한다. AI가 제안한 수정사항, 인간 저자의 편집, 동료의 피드백이 모두 커밋으로 기록되어 누가 언제 무엇을 변경했는지 명확히 파악할 수 있다. 팀 협업 시 충돌하는 수정사항을 AI가 분석하여 최적의 병합 방안을 제시한다.
브랜치 전략을 통해 실험적인 AI 생성 콘텐츠를 안전하게 테스트할 수 있으며, 성과가 확인되면 메인 문서에 통합한다. 모든 AI 어시스턴트의 기여분이 Co-authored-by
태그로 명시되어, 인간과 AI의 협업 과정이 투명하게 기록된다.
10.7.3 프롬프트 설계
Chain-of-Thought (CoT) 방식을 통해 복잡한 논리적 추론을 단계별로 전개한다. “이 실험 결과가 가설을 지지하는지 분석해줘”라는 요청에 대해 ① 데이터 확인 → ② 통계 검정 → ③ 효과 크기 계산 → ④ 한계점 검토 → ⑤ 결론 도출의 순서로 체계적으로 접근한다.
Few-shot Learning을 활용하여 분야별 전문 용어와 서술 방식을 학습한다. 의학, 공학, 사회과학 등 도메인별로 특화된 프롬프트 템플릿을 구축하고, 사용자의 연구 분야에 맞게 자동으로 최적화한다. Meta-Prompting을 통해 AI가 스스로 더 나은 프롬프트를 생성하고 개선하는 순환 구조를 만든다.
10.8 생성/처리 단계
10.8.1 코드 생성 자동화
데이터 분석 요구사항을 자연어로 설명하면, AI가 R, Python, SQL, Julia, Observable JS 코드를 자동 생성한다. “이 데이터셋에서 상관관계를 시각화해줘”라는 요청에 자동으로 적절한 통계 검정과 ggplot2 시각화 코드를 생성한다. 자동 디버깅 기능을 통해 생성된 코드의 오류를 스스로 찾아 수정하며, 더 효율적인 알고리즘을 제안한다.
SQL 쿼리 최적화를 통해 대용량 데이터베이스에서도 빠른 처리가 가능한 쿼리를 생성하고, 실행 계획까지 분석하여 성능을 보장한다. Julia 언어 지원을 통해 고성능 과학 계산이 필요한 경우 자동으로 병렬 처리 코드를 생성한다. 모든 생성된 코드에는 주석과 설명이 포함되어, 다른 연구자들이 쉽게 이해하고 재사용할 수 있다.
10.8.2 텍스트 생성
학술 글쓰기 전문 AI가 연구 분야별 특성을 반영한 고품질 텍스트를 생성한다. 논문의 Introduction, Methods, Results, Discussion 각 섹션에 적합한 서술 방식과 전문 용어를 자동으로 적용한다. 다국어 지원을 통해 한글로 작성된 연구를 영어 논문으로, 또는 그 반대로 자연스럽게 번역하며, 각 언어의 학술 문체 특성을 정확히 반영한다.
인용 및 참고문헌 관리가 완전 자동화되어, 적절한 선행연구를 찾아 인용하고 올바른 형식으로 포맷팅한다. 논문의 초록(Abstract)과 키워드 자동 생성을 통해 연구의 핵심 내용을 효과적으로 요약한다. AI가 생성한 모든 텍스트는 표절 검사와 팩트 체킹을 거쳐 연구 윤리 기준을 준수한다.
10.9 출력/검증 단계
10.9.1 시각화 자동화
데이터의 특성을 AI가 자동 분석하여 가장 적합한 시각화 방법을 선택한다. 시계열 데이터는 선 그래프로, 카테고리별 비교는 막대 그래프로, 상관관계는 산점도로 자동 결정한다. ggplot2와 plotly를 활용한 인터랙티브 차트 생성으로, 독자가 직접 데이터를 탐색할 수 있다.
모든 시각화는 brand.yml
에 정의된 색상 팔레트와 폰트를 자동 적용하여 일관된 디자인을 유지한다. 접근성 고려를 통해 색약자도 구분할 수 있는 색상 조합을 선택하고, 대체 텍스트를 자동 생성한다. 복잡한 데이터는 대시보드 형태로 여러 차트를 조합하여 종합적인 인사이트를 제공한다.
10.9.2 표와 수식 생성
GT 패키지를 활용한 아름다운 표 자동 생성으로, 통계 결과를 전문적으로 표현한다. 각 열의 데이터 타입에 따라 적절한 포맷팅(소수점, 천 단위 구분, 퍼센트 등)을 자동 적용한다. LaTeX 수식 자동 생성을 통해 복잡한 통계 모델이나 수학 공식을 정확히 표현한다.
통계 요약표는 평균, 표준편차, 신뢰구간 등 필요한 지표를 자동 계산하여 표준 형식으로 제시한다. 모든 표와 수식에는 크로스 레퍼런스가 자동 연결되어, 본문에서 “Table 1”이나 “Equation 2”로 쉽게 참조할 수 있다. 한글 테마가 적용된 표는 한국어 학술 문서의 표준을 따르며, 국제 저널 투고 시에는 영문 표준으로 자동 전환된다.
10.9.3 품질 검증
재현가능성 자동 체크를 통해 모든 분석 과정이 다른 연구자에 의해 재현될 수 있는지 검증한다. 코드, 데이터, 결과가 일치하는지 확인하고, 누락된 패키지나 데이터 파일이 있으면 경고한다. 인용 검증을 통해 참고문헌이 올바른 형식인지, 접근 가능한 출처인지 자동으로 확인한다.
통계적 유의성과 효과 크기 검토를 통해 결과 해석이 적절한지 검사한다. p-hacking이나 다중 비교 문제를 자동으로 탐지하여 경고하고, 적절한 보정 방법을 제안한다. 연구 윤리 검사를 통해 이해충돌, 동의서, IRB 승인 등 필수 윤리 요소가 문서에 포함되어 있는지 확인한다.
10.10 쿼토 기존 생태계와 AI의 완벽한 통합
AI 강화 콘텐츠 제작은 기존의 쿼토 생태계를 완전히 대체하는 것이 아니라, 각 구성요소를 더욱 지능적으로 강화하는 통합 레이어 역할을 한다.
📝 마크다운 + AI 글쓰기: 기존 마크다운 문법을 그대로 유지하면서, AI가 내용 생성과 스타일 개선을 지원한다. 연구자는 익숙한 방식으로 작업하되, 품질은 전문가 수준으로 향상된다.
🔬 Python/R + AI 코딩: 기존 데이터 분석 워크플로우에 AI 코드 생성이 자연스럽게 통합된다. 복잡한 통계 분석이나 머신러닝 모델링도 자연어 명령으로 간단히 구현할 수 있다.
📚 싱글 소싱 출판: 하나의 소스에서 다양한 출력을 생성하는 철학은 그대로 유지하되, AI가 각 출력 형식에 최적화된 콘텐츠 조정을 자동으로 수행한다.
🎨 brand.yml 디자인: 브랜드 일관성은 AI에 의해 더욱 정교해진다. 색상, 폰트, 레이아웃 선택에서 AI가 브랜드 가이드라인을 학습하고 최적의 디자인 결정을 내린다.
연구자는 여전히 마크다운으로 아이디어를 정리하고, Python/R로 분석하며, 하나의 소스에서 다양한 출력을 생성한다. 다만 이 모든 과정에서 AI가 지능적인 어시스턴트로서 창의성과 정확성을 동시에 향상시킨다.
💭 생각해볼 점
AI 강화 콘텐츠 제작이 과학기술 출판에 가져올 가장 근본적인 변화는 무엇일까?
단순히 속도와 효율성의 문제를 넘어서, 이제 연구자는 “어떻게 쓸 것인가?”보다는 “무엇을 발견하고 전달할 것인가?”에 더 집중할 수 있게 된다. AI가 문서 구조, 인용 형식, 시각화 방법, 통계 검정까지 처리하는 동안, 인간은 창의적 통찰과 비판적 사고에 전념할 수 있다.
하지만 동시에 새로운 책임도 생긴다. AI가 생성한 내용의 정확성을 검증하고, 편향을 점검하며, 윤리적 기준을 유지하는 것은 여전히 인간의 몫이다. 특히 재현 가능성(Reproducibility)과 투명성(Transparency)은 AI 시대에 더욱 중요해진다.
질문해보자: AI가 당신의 연구 글쓰기를 90% 자동화한다면, 나머지 10%에서 당신만의 독창적 기여는 무엇이 될까? 그리고 그 10%야말로 진짜 연구자의 가치가 아닐까?