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

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

### session_info

```r
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)
```

### 調査方法

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

- [R Markdown reference guide](https://www.rstudio.com/wp-content/uploads/2015/03/rmarkdown-reference.pdf)
- `?rmarkdown::html_document`
- https://github.com/rstudio/rmarkdown/blob/master/inst/rmd/h/default.html
- https://github.com/rstudio/rmarkdown/blob/master/R/html_document.R
- https://github.com/rstudio/rmarkdown/blob/master/R/html_document_base.R
- http://sky-y.github.io/site-pandoc-jp/users-guide/
- https://github.com/jgm/pandoc-templates/blob/master/default.html

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

### 設定可能項目一覧

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

```yaml
---
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_extention`や`pandoc_args`，あるいはextra_dependencies`とかを設定していけばまだまだ追加できますが省略します。
3. これはあくまでrmarkdown::html_document`での内容ですので，他の出力形式だったり他のパッケージを利用した場合には変化します。

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

**Enjoy!**