この記事の目的
私が大好きなRMarkdownについて、Tipsを集中的に連載しようという思いつきの企画です。あと自分の中で進めている別企画のメモという位置づけでもあります。なので大した中身はありません。
R Markdownとは
Markdown記法をベースに、チャンクという形でRのコードを記述して評価・出力することができるものです。RStudioのクイックリファレンスでは以下のように説明してあります:
R Markdown is an easy-to-write plain text format for creating dynamic documents and reports.
コードハイライトのテーマ
R Markdownを使っていると、コードハイライトの色がどれも同じで「あ、これRmdの色だね」とすぐにわかります。でもたまにはこのテーマをスイッチしてみたいと思うこともありますね。実は簡単にテーマを変更することが可能です。例えば、Rmdファイル冒頭のyaml領域を以下のように変更すると変化します:
---
title: "hogehoge"
output:
html_document:
highlight: "tango"
---
これで青っぽいテーマに変わるかと思います。
R Markdownでコードハイライトのテーマ設定
R Markdownで使用できるコードハイライトのテーマは、rmarkdown reference(pdf)によると以下のように記述があります。
Syntax highlighting style (e.g. "tango", "pygments", "kate", "zenburn", and "textmate") includes.
したがって、上述のhighlight: "tango"
のところをhighlight: "pygments"
のように指定すると変更できます。どんな感じになるかは、実際に試して確認してみてください。なお使用できるテーマは以下のとおりです:
- default(標準のテーマ)
- tango
- pygments
- kate
- monochrome
- espresso
- zenburn
- haddock
- textmate
補足: 標準の値とこまかい話
以前書いた、「RStudioの"knit HTML"でPandocに送っている内容」のこの箇所で、デフォルト値はこのようになってました:
--no-highlight
--variable highlightjs=/Library/Frameworks/R.framework/Versions/3.2/Resources/library/rmarkdown/rmd/h/highlight
この内容について説明します1。
まず最初の行の--no-highlight
は、pandocのユーザーガイドによれば「強調表示をなしにする」というオプションです。つまりこれが指定してあることで、pandoc本体が内包してるコードハイライト機能がOFFになります。
そして次の行では--variable highlightjs=...
とありますが、これは{rmarkdown}
内にあるhighlightjs
へのパスとなっています。{rmarkdown}
は内部にhighlightjsを内包しており、こちらを利用するように設定されているのでしょう。
この二つのエンジンはキーワードの見つけ方などが異なります。そのためデフォルトのhighlightjsでは強調されなかったものがテーマ設定をすると強調されるようになる、といったことが起こります2。割とめんどくさいです。
なお、highlightjs側のテーマはdefault
とtextmate
で、残りは全てpandoc内のエンジンを使用するテーマとなります3。またどうしても他のハイライトテーマを使用したい場合は、オンラインにあるhighlightjsをソースとして当てる方法がありますが、ここでは省略します。
Enjoy!
-
なお以下の説明は、pandocのユーザーガイドの内容、{rmarkdown}内に含まれるファイルのコード、そして出力されたhtmlのソースを比較して、多分こうなってるんだろうと私が推測したものです。これが当たってて内容を読んだところで、普通にRmdを使う分には全く影響しないと思います。 ↩
-
たとえば
summary
は、highlightjsエンジンではspan.identifier
になりますがpandoc内のエンジンではspan.kw
となります。強調やカラーリングがあたるかどうかはcss(テーマ)次第です。 ↩ -
本来のhighlightjsはすごくたくさんのテンプレートがあるんですけどね…。 ↩