기존 Bookdown 책을 Quarto Book 변환

기존 Bookdown으로 제작된 리보그(Reeborg) 코딩 전자책을 Quato Book으로 변환한 경험을 공유합니다.

Quarto Book
Bookdown
전자책
리보그
Reeborg
저자
소속
공개

2022년 11월 10일

1 시작 배경

Yihui Xie가 시작한 bookdown 패키지는 다양한 데이터 과학 책을 제작하는데 꼭 필요한 텍스트와 프로그래밍 코드(R)를 재현가능하게 묶어 책을 다양한 형태로 출간하는데 큰 도움을 주었다. 하지만 R 언어 기반으로 시작한 다양한 문서생성 생태계는 각 문서를 제작하는데 서로 다른 패키지를 사용한다는 점에서 초창기에는 찬사를 받았지만, 지금은 너무 다양한 문서를 제작하는데 서로 다른 패키지와 조금 다른 구문을 적용한다는 점에서 어려움도 가중된 것도 사실이다. 예를 들어,

R과 마크다운(Markdown)을 결합한 Literate Programming 을 웹출판에 적용하면서 매해 새로운 패키지가 제공되면서 2015년 이후 Yihui Xie를 비롯한 동료 개발자들이 어떤 문서를 제작할지 흥미로운 시절을 보낸 것도 사실이다. 하지만 앞서 언급한 다양한 문서를 서로 다른 방식으로 제작한다는 피로감으로 Quarto가 등장하면서 이런 문제는 모두 사라질 것으로 보인다.

이제 남은 문제는 기존에 bookdown으로 제작한 책을 어떻게 quarto book으로 변환하냐는 문제다. 그래서 직접 해봤습니다.

정말 간단합니다.

7분 투자하여 Nicholas Tierney (2022-04-11), “Notes on Changing from Rmarkdown/Bookdown to Quarto”, Credibly Curious - Nick Tierney’s (mostly) rstats blog 블로그 읽고 기존 bookdown 저작파일을 Quarto Book으로 변환한 후 quarto render 끝.

2 리보그 전자책

리보그 세상(Reeborg’s World)컴퓨터 과학 언플러그드를 통해 전혀 컴퓨터가 없는 상태에서 주요 개념을 빠른 시간내에 잡을 수 있고, 이후 블록 프로그래밍(Block Programming)으로 MIT에서 개발한 스크래치(Scratch)와 타이디블록(Tidyblocks)를 통해 비쥬얼 프로그래밍을 즐길 수 있다. 그 다음 단계로 소프트웨어 프로그래밍 언어인 파이썬, 데이터 프로그래밍 언어인 R 로 바로 넘어가는 것이 아니라 move(), turn_left() 두개의 동사를 활용한 리보그 세상 (한글 전자책)로 기초를 탄탄히 다져놓아야 한다. 리보그 세상 도움말도 본격적인 프로그래밍으로 넘어가는데 도움이 될 것이다.

3 북다운 → Quarto 북

bookdown에서 Quato Book 으로 변환과정은 “Notes on Changing from Rmarkdown/Bookdown to Quarto” 을 참고하여 진행했습니다. 가장 핵심적인 사항은 다음 두 단계입니다. 이후 과정은 Quarto Book 제작과정과 동일합니다.

3.1 파일 확장자 변환

기존 bookdown 전자책은 .Rmd 파일로 되어 있어 .qmd 파일로 확장자를 변경시켜야된다. 책 자체가 대체로 많은 파일로 구성되어 있기 때문에 일괄 처리하는 것이 정확성을 높이고 속도도 빠르다.

# 1. change filenames: filename.Rmd —> filename.qmd -----
library(fs)
library(stringr)
rmd_names <- dir_ls(path = ".", glob = "*.Rmd")
qmd_names <- str_replace(string = rmd_names,
                         pattern = "Rmd",
                         replacement = "qmd")
file_move(path = rmd_names,
          new_path = qmd_names)

file_move(path = "_bookdown.yml",
          new_path = "_quarto.yml")

3.2 _quarto.yml 파일

bookdown_bookdown.yml, _output.yml을 포함한 각 역할을 담당하는 .yml 파일로 나눠져있지만 Quarto 는 이런 것을 단 하나의 _quarto.yml 파일로 제작해 놨습니다. 따라서 중요한 _bookdown.yml 파일의 .Rmd 파일을 앞서 변환시킨 .qmd 파일로 변화시켜 quarto.yml 파일을 준비한다.

# 2. Change _bookdown.yml to _quarto.yml and remove _output.yml ----

library(readr)
library(stringr)
quarto_yaml_rmd <- read_lines("_quarto.yml")

quarto_yaml_qmd <- str_replace_all(string = quarto_yaml_rmd,
                                   pattern = "Rmd",
                                   replacement = "qmd")

write_lines(
  x = quarto_yaml_qmd,
  file = "_quarto.yml"
)

3.3 Quarto Book 컴파일

_quarto.yml 파일을 열어 Quarto Book 문법에 맞춰 편집한 후 quarto preview, quarto render 명령어로 작업을 전자책을 제작한 후 GitHub Pages 나 Quarto Pub에 배포한다.

4 리보그 전자책

기존 bookdown 전자책

Quarto Book 전자책

그림 1: 리보그 전자책 Quarto Book 변환 전후 비교

일치 없음