24  Quarto入門

24.1 Quartoとは

以下のように、QuartoとR Markdownは同じやり方でHTML/PDF/Wordファイルを生成する。

  • R Markdown
    • .Rmd \(\rightarrow\) knitr \(\rightarrow\) .md \(\rightarrow\) pandoc \(\rightarrow\) HTML/PDF/Word…
  • Quarto
    • .qmd \(\rightarrow\) (knitr / Jupyter / Observable) \(\rightarrow\) .md \(\rightarrow\) pandoc \(\rightarrow\) HTML/PDF/Word…
  • R Markdownの場合、コードがRに限定されている(むろん、今はpythonなども使用可能)。
    • 一方、Quartoはマルチリンガル(R、Pyhton、Juliaなど)
  • R Markdownのエンジンはknitr
    • 一方、Quartoはknitr、Jupyter、Observableが使用可能であり、今後も追加予定
  • 文書作成のための{rmarkdown}、ホームページ作成のための{blogdown}、スライド作成のための{xaringan}など
    • Quartoはこれらを全て一つに統合
    • Quarto Extensionという拡張機能を追加する形式
  • QuartoはRStudio以外にもVS Code、Jupyterなどでも使用可能
  • QuartoはR Markdownの上位互換でもなく、R Markdownを代替するものでもない(参考)。
    • つまり、既存のR Markdownを問題なく使っているのであれば、Quartoへの移行は不要
    • 現在のところ、QuartoはR Markdown生態系を一つに統合したものに近く、文法などもほぼ同じであるため、移行のために新しい事をゼロベースから勉強する必要はほぼない

24.2 セットアップ

Quartoのインストール

{quarto}のインストール(インストールしておくだけで良い)

pacman::p_install("quarto") # または、install.packages("quarto")

24.3 簡単な使い方

24.3.1 とりあえずRender

  • R Markdownと同じ感覚で使用可能
    • File > New File > Quarto Document …
    • RStudioが最新版でない場合、アップデートする
    • R Markdownの「Knit」はQuartoだと「Render」
      • Quartoの場合、Knit以外にもJupyterなどのエンジンも使用可能であるため、名称がRender
      • Knitボタンと同じ位置であり、ショートカットキーは同じく「Cmd + Shift + K (macOS)」、または「Ctrl + Shift + K (Windows)」

24.3.2 チャンクオプションの付け方

 現時点においてR Markdownと同じ書き方でも問題ない。

```{r fig-scatter1, fig.height = 5, fig.width = 7, fig.cap = "図の例", cache = TRUE}
iris %>%
  mutate(Species2 = recode(Species,
                           "setosa"     = "セトナ",
                           "versicolor" = "バーシクル",
                           "virginica"  = "バージニカ")) %>%
  ggplot() +
  geom_point(aes(x = Sepal.Length, y = Sepal.Width, color = Species2)) +
  labs(x = "萼片の長さ (cm)", y = "萼片の幅 (cm)", color = "品種")
```

 Quarto特有の書き方としては、チャンクオプションを{r}内に書かず、チャンク内に#|で書く方法がある。#|とオプションの間には半角スペースを入れること。

```{r}
#| label: fig-scatter1
#| fig-cap: "図の例"
#| fig-height: 5
#| fig-width: 7
#| fig-align: "center"
#| cache: true
iris %>%
  mutate(Species2 = recode(Species,
                           "setosa"     = "セトナ",
                           "versicolor" = "バーシクル",
                           "virginica"  = "バージニカ")) %>%
  ggplot() +
  geom_point(aes(x = Sepal.Length, y = Sepal.Width, color = Species2)) +
  labs(x = "萼片の長さ (cm)", y = "萼片の幅 (cm)", color = "品種")
```

注意すべき点としては

  • 一部のオプションの仮引数名が異なる。
    • 例) fig.width(RMarkdown)とfig-width(Quarto)など
  • TRUEFALSEの代わりにtruefalseを使用(YAMLと同じ書き方)
  • 仮引数 = 実引数でなく、仮引数: 実引数で書く

24.3.3 相互参照について

以下の @fig-scatter1 は萼片の長さと幅を品種ごとに分けて示した散布図である。

```{r}
#| label: fig-scatter1
#| fig-cap: "萼片の長さと幅の関係(品種別)"
iris %>%
  mutate(Species2 = recode(Species,
                           "setosa"     = "セトナ",
                           "versicolor" = "バーシクル",
                           "virginica"  = "バージニカ")) %>%
  ggplot() +
  geom_point(aes(x = Sepal.Length, y = Sepal.Width, color = Species2)) +
  labs(x = "萼片の長さ (cm)", y = "萼片の幅 (cm)", color = "品種")
```
  • 章、図、表の場合、ラベルはsec-fig-tbl-で始まる必要がある
  • 相互参照の箇所は@ラベル名と書く。念の為に、前後に半角スペースを入れておく。
    • R Markdownの場合: 図\@ref(fig-scatter1)
    • Quartoの場合: @fig-scatter1
      • デフォルトのままだと「Figure X」と出力される。「図 X」の形式にしたい場合は言語を指定する必要がある(YAMLヘッダーにlang: jaを追加するか、language:で別途定義する)。

24.3.4 コールアウト

Input:

:::{.callout-note}
## Rはみんなの友達!

末永くよろしくね!
:::

:::{.callout-warning}
## Rはみんなの友達!

末永くよろしくね!
:::

:::{.callout-important}
## Rはみんなの友達!

末永くよろしくね!
:::

:::{.callout-tip}
## Rはみんなの友達!

末永くよろしくね!
:::

:::{.callout-caution}
## Rはみんなの友達!

末永くよろしくね!
:::

Output:

Rはみんなの友達!

末永くよろしくね!

Rはみんなの友達!

末永くよろしくね!

Rはみんなの友達!

末永くよろしくね!

Rはみんなの友達!

末永くよろしくね!

Rはみんなの友達!

末永くよろしくね!

Input:

:::{.callout-note collapse="true"}
## Rはみんなの友達!(クリック)

末永くよろしくね!
:::

Output:

末永くよろしくね!

24.3.5 段組み

段組みについて

24.3.6 図表について

  • 大きさの調整
  • キャプション

24.4 Quartoを知り尽くす