niszetの日記

細かい情報を載せていくブログ

(R)revealjsパッケージが古い

CRANにあるものは4年前のリリースのもの。

まえがき

久々にPandocのことをやろうと思って。Pandocの変遷はissueを読むと大変なので、取り込まれたPRを見るか、release noteを追うのが良い。今回は後者。 最近はpatchがぽつぽつ出ているが、2.14になったところで大きな変化があったので頑張って読んで追いつくことにする。

R上でPandocのバージョン(rmarkdownパッケージが見ているPandocのバージョン)を確認するには以下の通りです。

> rmarkdown::pandoc_version()
[1]2.14.0.3’

現時点の最新にした。

revealjs

Rでhtmlスライド作る時にとても便利なパッケージ。だった。今も使えるのだが、CRANにあるのは2017年のものであり、その後更新がない。

cran.r-project.org

より正確にはGitHub上では更新はされている。しかし、本体?のreveal.jsのバージョンが上がっていない。

github.com

最新は4.1.2のようだ。Rの方は3.3.0.1のようである。とても古い。

github.com

Pandocは最新バージョンだけが真のPandocであるとばかりにその時点の最新の周囲環境に合わせてバンバン更新が入る。API changeも3つ4つ入っていた。 詳しいことは読んでください。

pandoc.org

Pandoc本体にもrevealjs出力向けのテンプレートが同梱されている。これが最新版では更新されている。どうやらfalseを指定したときに項目ごと抜けてしまうのをtemplateの方を修正してfalseの値を持って出力するように、という修正のようである(背景はよく知らないが)

github.com

と、このようにPandocは最新のreveal.jsのバージョンに合わせて更新をしていくので、Pandocの挙動が破壊的な変更を伴った場合にR側のrevealjsパッケージが対応できないと詰むんじゃないの?と思った次第。実際のところは知らんけど…。

修正は出来そう

Rの方はreveal.jsを同梱しているので、これを置き換え、参照するファイルをそこに向ければ良さそう。

また、ワークアラウンドとしてはPandoc同梱のテンプレートを使うという手がある。テンプレートを以下のようにして出力する。

pandoc -D revealjs > reveal.template

Rmdから出力する際、keep_md: trueをつけてmdファイルを作ったうえで、先のテンプレートを入力して使えばとりあえず出力は出来る。

pandoc -t revealjs input.md --template reveal.template -o output.html

デフォルトのテンプレートでは$revealjs-url$https://unpkg.com/reveal.js@^4/が入るようなので、テンプレートの該当箇所をあらかじめダウンロードしてきたreveal.jsのファイル一式が入ったディレクトリに全て置き換えればオフラインでも使用できるし、cssの修正も手元でできる(これを便利にしているのがrevealjsパッケージという認識)

…と、最小のチェックしかしていない半分妄想で書いた記事である。何か間違っているかもしれないので見つけたらご一報を。

この一連の作業は面倒くさいので、forkして自分のリポジトリにrevealjsパッケージを生やした方が楽だな、と思っているのでやってみようと思っています(やるとは言っていない)

本当はPandocをやる予定だったんだが…

追記

そうそう、rstudioがrevealjsパッケージに力を入れていないこと自体には特に不満がない…わけじゃないけど理由はわかるのでまぁしょうがないよねって感じで考えてます。 ただ、開発継続する意思がないのであれば、適当なタイミングでリポジトリごとフリーズしてその旨明記してもらった方が良いのではないかなと思いました。