さらに難しいことになってきました。
この記事について
以下の記事の続きです:
– RStudioの.Rpresのデフォルトについて(検証中)
先にオチから言うともうお手上げ状態になりました。
前回のまとめ
- Rpresはreveal.jsを利用してる
- 確かにRStduio内にreveal.jsが組み込まれてたし、あのRpresのデザインを記述してるcssもあった
- じゃあどうやってテーマを切り替える?
Rpresのテーマについて
前回の記事に記述したとおり、Rpresっぽいテーマを出しているのはslide.css
です。ただこれ単独ではなく、これにreveal.jsのsimple.css
というテーマもあたっています。このファイルの場所は以下のとおりです:
(略)/resource/presentation/revealjs/css/theme/simple.css/
むしろ、このreveal.jsのテーマが主な設定で、それにslide.cssの設定が上書きしてある、ととらえたほうがいいでしょう。したがって、テーマを切り替えるとするならば、こちらの記事やこちらの記事で書かれている内容でスイッチできます。面倒ですがこれが一番手っ取り早いは間違いないです。cssはかなりごちゃっとしますが。
これ以上cssに上書きを重ねて複雑になるのを避けたいのであれば、slide.css
を編集したり、simple.css
の中身をまるっと別のテーマのcssコードに差し替えるという手段もあります。ただどちらもあまりお勧めできません。
なんでreveal.jsのテーマがそのまま選べないの?
そもそもreveal.jsはテーマがいくつかあって、参照するテーマcssを切り替えるだけで変更できるはずです。実際reveal.jsのGithub内にあるテーマを確認すると、複数のテーマcssが存在しています。ところがこの記事の前で示したRStudio組み込みのreveal.jsのテーマはsimpleの一つだけでした。疑問です。仕方ないのでRStudioのGithubのソースを見に行くことにしました。
Github上のRStudioでのreveal.jsはこちらです。ここから辿っていくと、やっぱりテーマはsimpleひとつのみです。でもどうやらreveal.js 2.4.0とsyncさせているっぽいです。
探してみたところ、どうやらsyncを実行させてるのはこのファイルのようです。
このコードを見るに、本家のGithubからクローンして、それを上記ディレクトリにコピーしているようです。ただこの時、31行目でテーマ用cssを持ってきているのですが、simpleのみになっています。これがRStudioでreveal.jsのテーマがひとつしかない理由です。
テーマ切り替えはできるの?
残念ながら上述のテーマ用cssファイルがおいてあるディレクトリに他のテーマを突っ込んだだけでは切り替えできません。
reveal.jsでテーマを切り替えるためには、テーマ用cssを参照する部分を書き換える必要があります。具体的には、本家のこのファイルでいうと18行目にあたります。Rpresでのテンプレートでいうと、前回紹介したslide.htmlの23行目にある#!reveal_theme_css#
でセットされているはずです。そしておそらくはsimple決め打ち状態になってるようです。
そもそもテーマを切り替えるという機能が組み込まれているかどうか、現在検証できていません。なにせド素人なのでcppがよくわかりません。ただ色々見ていて、多分この辺りやこの辺り、そしてこの辺りが影響してそうだなぁとは感じています。
今後どうする?
Rpresのデフォルトにおいて、cssを上書きしてテーマを書き換えるのは可能ですが、テーマ用cssを切り替えるという機能はないということがわかりました。なので妥協して上書き法を採用するか、forkして俺俺RStudioを仕込むか、あるいはもっと別の方法を模索するか…。しばらくは影響してそうなcppを眺めながら考えていきます。
あと、このような仕様になっている理由について考えてみたのですが…なかなかにややこしいことになりそうです、はい。ただ気持ちは向いていますので、時間と能力が追いつけば続きをやります。
一体この試みと記事に何の意味があるのか、ますます分からなくなってきました。