rmarkdown::html_documentをrmarkdown::output_formatで拡張する時、引数の指定方法を注意しないと、self_contained引数やkeep_md引数がうまく機能しなくなります(参考: オリジナルなR Markdownの出力形式を作るoutput_format関数事始め)。
rmarkdown ≧ 2.2
私が出したPR 1823により、
rmarkdown::html_documentのself_containedやkeep_mdの状態を、
rmarkdown::output_formatが引き継げるようになりました。他の引数と同様に、base_formatの内容を引き継ぐにはclean_supportingとkeep_mdをNULLにしましょう。
my_html_document <- function(
self_contained = TRUE, keep_md = FALSE, ...
) {
rmarkdown::output_format(
clean_supporting = NULL,
keep_md = NULL,
base_format = rmarkdown::html_document(
self_contained = self_contained,
keep_md = keep_md,
...
)
)
}rmarkdown < 2.2
rmarkdown::html_documentのself_contained引数とkeep_md引数に与えた値を、それぞれrmarkdown::output_formatのclean_supporting引数とkeep_md引数にも与えておきます。両方に与えるのがポイントです。
rmarkdown::html_documentに与えず、rmarkdown::output_formatにだけ与えておくと、
rmarkdown::html_documentがそれぞれの引数に対して内部で行う処理を無視してしまいます。特に、self_containedはTRUEかFALSEかでPandocに与える引数が変わります。私はこれを知らずにminidownパッケージを実装したがために、
self_contained = FALSEにすると画像ファイルなどを別フォルダにも出力しつつ、
self_contained = TRUEなHTMLファイルを出力するフォーマットを作ってしまいました。この問題は開発版で修正済みで、CRANには0.0.2として近い内にアップする予定です。
my_html_document <- function(
self_contained = TRUE, keep_md = FALSE, ...
) {
rmarkdown::output_format(
clean_supporting = self_contained,
keep_md = keep_md,
base_format = rmarkdown::html_document(
self_contained = self_contained,
keep_md = keep_md,
...
)
)
}
Atusy's blog