補遺B パターン

入力文書から Rコードとチャンクオプションを取得するための正規表現のリストについて

オリジナルのページ: https://yihui.org/knitr/patterns/

オリジナルの更新日: 2017-02-03


オブジェクトknit_patternsknitr のパターンを管理します. たとえば現在の正規表現パターンのリストを取得するには knit_patterns$get() が使えます. パターンリストには以下のコンポネントが含まれています.

  • chunk.begin: コードチャンクの開始時点のパターンです. チャンクオプションを取りだすための, () で定義されたグループが含まれていなければなりません.
  • chunk.end: チャンクの終了時点のパターンです (文芸的プログラミングにおける本来の意味とは異なります. 本来は通常のテキストの開始時点を意味していました. 詳細は 1 章の filter.chunk.end オプションを参照してください).
  • chunk.code: このパターンにマッチする文字を除去することで, チャンクから R コードを取り出します.
  • inline.code: 地の文のなかにまぎれたインライン R コードを取りだすためのパターンです (つまり, コードチャンクの分離には使いません). chunk.begin 同様に, グループが含まれていなければなりません.
  • inline.comment: インラインコメントのパターンです (このパターンにマッチするインライン R コードのトークンは, 各行から除去されます)
  • header.begin: 文書のヘッダの開始点を見つけるためのパターンです. 出力文書にヘッダ情報を挿入する際に使われます (例: LaTeX のプリアンブルコマンド, HTML のCSS スタイル)
  • document.begin: 文書の本文開始点を見つけるためのパターンです (たとえば LaTeX プリアンブルを取りだすのに使うとして, tikz のグラフィックスを外部化したり, シンタックスハイライトのためにコードを挿入したりすることができます)

パターンが NULL である場合, 何もマッチしません.

Sweave のように, knitr には2種類の R コードがあります. パラグラフのようなまとまりである「コードチャンクと」, 地の文の中にあって実行される「インライン R コード」です. 文書内のチャンクのオプションは label, opt1=TRUE, opt2=FALSE, opt3='character.string' という形式になります (オプションは ,= で繋げられ, ラベルのみが label が暗黙に value とみなされるため, ラベルのみが value を必要としません).

B.1 ビルトインパターン

knitr には all_patterns を保存するいくつかのビルトインパターンがあります.

library(knitr)
str(all_patterns)

Knitr は最初に適切なパターンのセットを決定するために入力文書の中身を探索します. もしこの自動検出が失敗したら, 入力文書のファイル拡張子名から判定し, knitr は自動で上記のリストから適切な形式を選び出します. たとえば入力ファイルが file.Rnw ならは all_patterns$rnw を, file.html ならば all_patterns$html を, というふうに使用します.

pat_rnw(), pat_html(), pat_md(), pat_tex(), pat_brew() という一連の便利な関数はビルトインパターンを設定するために使われます.