ショートコード

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.qmddocument.qmdに埋め込むのではなく、_common.qmddocument.qmdにコピペしてから評価を行うことである。多くの場合は問題ないが、相対パスの使い方には注意する必要がある。もし、_common.qmddocument.qmdと異なるフォルダーに保存されている場合、_common.qmdに書く相対パスはdocument.qmdを基準に記述する必要がある。

2.2 video

 文書やスライドに動画を入れることもできる。ローカルにある.mp4ファイルも良いし、YouTubeの動画も挿入可能だ。たとえば、史上初のYouTube動画(https://www.youtube.com/watch?v=jNQXAC9IVRw3を文書の中に入れるためには以下のように入力する。

Input:

{{< video https://www.youtube.com/watch?v=jNQXAC9IVRw >}}

Output:

 videoショートコードにはいくつかのオプションが提供されている。動画を15秒からスタートしたい場合はにすれば良い。動画の大きさはwidthheightで調節可能で、縦横比は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。 統一されていない

脚注

  1. https://quarto.org/docs/extensions/shortcodes.html↩︎

  2. Lua言語の簡単な使用はhttps://learnxinyminutes.com/lua/から確認できる。↩︎

  3. 動画一本しかないのに、チャンネル登録者数が500万人を超えている…。↩︎

  4. 既定値は"16x9"であり、他に"1x1""4x3""21x9"が指定できる。↩︎

  5. 大きさを指定しないと100 x 100の画像が生成される↩︎

  6. HTMLの場合、画面上では改ページされているかどうかは分からないが、印刷の際にはちゃんと改ページされる。↩︎