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!

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.