Edited at

R Markdownのhtml_documentで指定できるyamlヘッダ項目について

More than 1 year has passed since last update.

諸事情により作ってみることにしました。


session_info

devtools::session_info()

#> Session info --------------------------------------------------------------
#> setting value
#> version R version 3.3.2 (2016-10-31)
#> system x86_64, linux-gnu
#> ui X11
#> language ja
#> collate ja_JP.UTF-8
#> tz Japan
#> date 2017-01-17
#> Packages ------------------------------------------------------------------
#> package * version date source
#> Rcpp 0.12.8 2016-11-17 cran (@0.12.8)
#> backports 1.0.4 2016-10-24 cran (@1.0.4)
#> devtools 1.12.0 2016-06-24 CRAN (R 3.3.2)
#> digest 0.6.10 2016-08-02 CRAN (R 3.3.1)
#> evaluate 0.10 2016-10-11 CRAN (R 3.3.1)
#> htmltools 0.3.5 2016-03-21 CRAN (R 3.3.1)
#> knitr 1.15.5 2016-12-13 Github (yihui/knitr@64468a6)
#> magrittr 1.5 2014-11-22 CRAN (R 3.3.1)
#> memoise 1.0.0 2016-01-29 CRAN (R 3.3.1)
#> rmarkdown 1.2 2016-11-21 cran (@1.2)
#> rprojroot 1.1 2016-10-29 cran (@1.1)
#> stringi 1.1.2 2016-10-01 CRAN (R 3.3.2)
#> stringr 1.1.0 2016-08-19 CRAN (R 3.3.1)
#> withr 1.0.2 2016-06-20 CRAN (R 3.3.1)
#> yaml 2.1.14 2016-11-12 cran (@2.1.14)


調査方法

以下の内容にあたってみました:

これらの情報を参考に,色々やってみながら検証しました。


設定可能項目一覧

大体以下のような感じです:

---

title: "タイトル" #ページのタイトルで,h1要素としてbodyに入ります
subtitle: "サブタイトル" #ページのサブタイトルで,h1.titleのすぐ下にh2として入ります
title-prefix: "タイトルプリフィックス" #ウィンドウ上部枠に出てくるページ名タイトルの前に入ってきます
pagetitle: "ページタイトル" #ウィンドウ上部枠に出てくるページ名タイトルです
author: "オーサー" #著者で,複数名の時は'c("kosaki", "chitoge")'とすればOK
author-meta: "オーサーメタ" #head要素のmeta情報に書き込まれます
date: "2017/01/17" #日付です。決め打ちでもいいですし,rのコードでやる方法も
abstract: "このドキュメントのアブストラクト。" #本文のすぐ上にアブストラクトとして差し込まれます
output:
html_document:
# tocまわり
toc: FALSE #toc(table of contents)を自動生成するかどうか。論理値。
toc_depth: 2 #tocで拾う見出しレベルを指定。数値。
toc_float: FALSE #tocをページ冒頭ではなくサイドメニューとして浮かせて表示させるかどうか
number_sections: FALSE #見出しに通し番号をつけるかどうか
# figまわり
fig_width: 7 #図の大きさ。確かインチ
fig_height: 5 #図の高さ。確かインチ
fig_retina: 2 #retinaディスプレイに対応させていくかどうか
fig_caption: TRUE #図にキャプションを付与していくかどうか
dev: "png" #グラフィックデバイスを指定。この場合png形式。
# dfの処理
df_print: "default" #data.frameを表示させる際,kableとかtiblleとかpagedを指定。
# codeまわり
code_folding: "show" #デフォ値はc("none", "show", "hide") #デフォルトでRコード部分を表示させるかどうか。
code_download: FALSE #Rmdソースコードをhtmlに埋め込んでDLできるようにするかどうか。論理値。
highlight: "default" #シンタックスハイライトのテーマを指定。
# mathjax
mathjax: "default" #mathjaxをどう含めるか。
# テーマ・書式まわり
smart: TRUE #出力のタイポグラフィを変換するかどうか。ハイフンをem-dashesにするかなど。論理値。
theme: "default" #htmlのテーマを指定。NULLだとテーマ無し(プレーンなhtml)になる。
css: NULL #カスタムなcssを指定。
# ドキュメントまわり
templete: "default" #(Pandoc用)htmlテンプレートを指定。
include: #ドキュメントにhtmlを差し込むかどうか。
- in_header: NULL #<head>内に差し込む内容。htmlファイルを指定。通常はメタデータやjsコードなど
- before_body: NULL #<body>の一番最初に差し込む内容。htmlファイルを指定。通常はheader的な要素など
- after_body: NULL #<body>の一番最後に差し込む内容。htmlファイルを指定。通常はfooter的な要素など
# 拡張関連
extra_dependencies: NULL #新たに追加したいような要素や,拡張要素を指定。
lib_dir: NULL #jqueryとか依存するHTMLライブラリをコピーするディレクトリを指定。デフォは(ファイル名)_filesってディレクトリへ。
# 出力制御関連
md_extentions: NULL #Pandoc Markdown拡張で追加するand/or削除する要素を指定
pandoc_args: NULL #Pandocに送る引数を指定。
keep_md: FALSE #.mdファイルを残すかどうかを指定。論理値
self_contained: TRUE #jsやcss,画像データなどをbase64でhtmlファイルに埋め込み,単一ファイルにするかどうかを指定。論理値
---

この内容を実際のRmdにコピペして貼り付けてもちゃんと動作します。

簡単な説明はコメントとして記述しています。なお,subtitle:title-prefix:, pagetitle:, author-meta:, abstractを取り除けば,あとは全てデフォルト値となるように設定しています。


補足

以下の点について留意してください:


  1. これは2017/01/17現在で,前に示した各パッケージのバージョンでの内容です。


  2. md_extentionpandoc_args,あるいはextra_dependencies`とかを設定していけばまだまだ追加できますが省略します。

  3. これはあくまでrmarkdown::html_document`での内容ですので,他の出力形式だったり他のパッケージを利用した場合には変化します。

あと,自分用のメモとして起こしたので,細かい解説を追記するつもりは今のところありません。もし気になる点がありましたら,上述した資料をあたるか,Twitterの@kazutanもしくはslackのr-wakalang(詳しくはこちら)の,rmarkdownのチャンネルまでおねがいします。

Enjoy!