minidownパッケージはR Markdownにおけるhtml_document
をもっとイイ感じにしたものです。
作った理由や凄いところはTokyo.R 95の発表資料にまとめてます。
「minidownで軽量・高機能なHTMLレポートを作成する」
https://atusy.github.io/tokyor95-minidown/#minidown
0.4.0での主な変更
今回のリリース、中々変更は大きいのですが、魅力は伝わりにくいかも
SASSを使ってCSSファイルを統合・軽量化
ユーザー的には軽くなったところが嬉しいはず。
コンテンツの量にも依存しますが、シンプルなページだと標準のhtml_document
はminidownに比べて15倍から30倍ほど思いです。絶対値だと600KBくらい。スマホで閲覧する時なんか思うと馬鹿にならないですね。
ベンチマーク https://minidown.atusy.net/pkgdown/articles/Writing-vignettes-with-minidown.html
Shinyとの相性の改善
Shinyを使うと、インタラクティブなドキュメントを作成できます。人と共有するには若干ハードルが高いですが、クラスター分析のクラスター数を変えるなど、分析の結果をデモできるスライドを作りたい場合なんかに便利です。
R MarkdownでShinyを利用する https://qiita.com/kazutan/items/c249800a690f9222ba15
minidownでも、YAMLフロントマターにruntime: shiny
などと記述するだけで簡単に利用できます。
output: minidown::mini_document
runtime: shiny
ただ、目次や数式の挙動がおかしくなることがあるので修正しました。
タブセットの挙動改善
minidownでは、コンテンツをタブで切り替えることができます。
結果とソースコードとか、パラメータごとの結果とかでタブ分けすると便利なんじゃないでしょうか。
minidown experimentally adds the tabset feature like rmarkdown::html_document. The main advantage is you can navigate to the tab by ToC and URL.
— atusy (@Atsushi776) January 14, 2021
Yes, you can share the tab of interest!https://t.co/Tqq8ePtqjr #rstats #rmarkdown pic.twitter.com/TizRBmKNJX
以下に使い方の説明付きのデモがあります。
デモ https://minidown.atusy.net/?framework=sakura&theme=default#tabset
タブを修飾可能に
従来はタブのタイトルの修飾が難しかったのですが今回の更新で簡単になりました。
たとえば「Tab 1]というタイトルのタブに対し、PandocのSpan記法を用いて[Tab 1]{.important-tab}
と、いった具合にimportant-tab
クラスを付与できるようになりました。
# Tabset {.tabset}
## [Tab 1]{.important-tab}
これなら別途CSSを記述してやれば、文字色の変更などが簡単です。
.important-tab {
color: orange;
}
URLから特定のタブを開けるように
URLを使って特定のタブを人に見せたい時に便利ですね。
タブを開いた時点でブラウザのURL欄が更新されるのでコピペで共有できます。
HTMLウィジェットのサポート強化
DTパッケージを使うと、データフレームを検索可能な表に出力できます。便利。
DTでインタラクティブな表作り https://kazutan.github.io/SappoRoR5/DT_demo.html
しかしタブセット内で使うとうまく表示されない場合があったので修正しました。
DTパッケージに限らず不具合を抱えるHTMLウィジェットがあったかもしれませんが、改善したはず。
0.5.0に向けて
最近、rmarkdownパッケージの開発版で、html_document
などを使った時に数式のレンダリングに様々なエンジンを使えるようになりました。
- MathJax (JSでレンダリング。重いけど強い)
- KaTeX (JSでレンダリング。軽い)
- WebTeX (APIで画像化)
元々minidownを開発したモチベーションの一つにMathJaxからKaTeXへの移行がありました。
しかし、本家が色々な方法に対応するならminidownもそれに倣いたいなーと思う所存。
より正確には、本家が色々な方法に対応するよう私が働きかけてたのですが、年単位で放置されてました。
最近になってRStudioの中の人たちが私の実装をブラッシュアップしてくれた感じです。