ショートコード
1 ショートコードとは
ショートコードとは様々なタイプのコンテンツを生成する少し特殊なMarkdown記法である。Quartoは十数種類のショートコードを内蔵しており、ユーザーが作成したショートコードを使うこともできる。むろん、自分でショートコードを作る1ことも可能だ。ショートコードはLua言語で作成されている。プログラミングの経験のある人なら簡単なショートコードを作ることはすぐにでもできよう2。ショートコードを使う方法は{{< ショートコード >}}だ。これだけで動くものもあれば、引数が必要なショートコードもある。引数がある場合、{{< ショートコード 引数1 引数2 ... >}}のように記述する。たとえば、文書のメタ情報を呼び出すショートコードはmetaであり、その中でもタイトルを呼び出したい場合は引数としてtittleを使えば良い。つまり、ショートコードと入力すればその箇所には「ショートコード」が入ることになる。
ここでは宋がよく(?)使うショートコードを紹介する。Quarto内蔵ショートコードについては公式ホームページを参照されたい。
2 よく使うショートコード
2.1 include
includeは外部のqmdファイルを埋め込むショートコードであり、使い方は{{< include ファイル名.qmd >}}である。たとえば、以下のような2つのファイルがあるとする。
document.qmdの中身
---
title: My document
format: html
---
{{< include _common.qmd >}}_common.qmdの中身
```{r}
pacman::p_load(tidyverse, gt)
``` この場合、document.qmdのショートコードの箇所に_common.qmdが入ることになる。したがって、以上のqmdファイルは以下のコードと同じ内容となる。
---
title: My document
format: html
---
```{r}
pacman::p_load(tidyverse, gt)
```よく使うチャンク(パッケージの読み込みや、Rの環境設定、{ggplot2}のテーマ設定など)を再利用することもできるし、一つのqmdファイルが膨大になった場合、セクションごとにファイルを分割する目的として使用しても良い。
ただし、includeショートコードは対象のファイルをコピー&ペーストする点は注意する必要がある。言い換えれると、評価(evaluation)が終わった_common.qmdをdocument.qmdに埋め込むのではなく、_common.qmdをdocument.qmdにコピペしてから評価を行うことである。多くの場合は問題ないが、相対パスの使い方には注意する必要がある。もし、_common.qmdがdocument.qmdと異なるフォルダーに保存されている場合、_common.qmdに書く相対パスはdocument.qmdを基準に記述する必要がある。
2.2 video
文書やスライドに動画を入れることもできる。ローカルにある.mp4ファイルも良いし、YouTubeの動画も挿入可能だ。たとえば、史上初のYouTube動画(https://www.youtube.com/watch?v=jNQXAC9IVRw)3を文書の中に入れるためには以下のように入力する。
Input:
{{< video https://www.youtube.com/watch?v=jNQXAC9IVRw >}}Output:
videoショートコードにはいくつかのオプションが提供されている。動画を15秒からスタートしたい場合はにすれば良い。動画の大きさはwidthとheightで調節可能で、縦横比はaspect-ratioで変更できる4。
2.3 placeholder
placeholderは論文執筆やスライド作成段階で使える便利なショートコードだ。これは「ここに図/表が入る予定だが、まだ何も作っていない」といった場合、とりあえずダミーの画像を入れておく機能である。引数は横と縦の大きさ(px単位)を入れるだけだ5。デフォルトはPNG形式の画像が生成されるが、ベクトルベースのSVGがほしいのであればformat="svg"を追加しよう。
{{< placeholder 600 400 >}}2.4 pagebreak
pagebreakは「改ページ」のショートコードである。たとえばTeXの場合、\newpageや\clearpageで改ページを行う。Microsoft Wordとかであれば、改ページボタンを押せば良い。問題はQuartoはHTML、PDF、Microsoft Word、Open Documentなど様々なフォーマットで書き出すことができるということだ。つまり、改ページ方法が統一されていない。これを解決するショートコードがpagebreakである。を入れると、そこで改ページが行われる6。 統一されていない