Listings

listingsknitr の併用

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

オリジナルの更新日: 2011/12/10


このページは主に R Markdown ではなく Rnw を想定していることに注意してください.

knitr では, LaTeX の listings パッケージで結果を装飾するためにの出力フックを簡単に定義することができます. 以下のようなスニペットを使うことになるでしょう.

## a common hook for messages, warnings and errors
hook_lst_bf = function(x, options) {
    paste("\\begin{lstlisting}[basicstyle={\\bfseries}]\n", x, 
        "\\end{lstlisting}\n", sep = "")
}
knit_hooks$set(source = function(x, options) {
    paste("\\begin{lstlisting}[language=R,numbers=left,stepnumber=2]\n", x, 
        "\\end{lstlisting}\n", sep = "")
}, output = function(x, options) {
    paste("\\begin{lstlisting}[basicstyle={\\ttfamily}]\n", x, 
        "\\end{lstlisting}\n", sep = "")
}, warning = hook_lst_bf, message = hook_lst_bf, error = hook_lst_bf)

## empty highlight header since it is not useful any more
set_header(highlight = "")

見て分かるように, knitr は全てをユーザーに公開してます. 必要なのはこれらの R コードの部品と出力を適切な環境で包むことです.

ちょっと待ってください, 上記のコードをコピペしないでください. これはすでに少々の機能を追加した上で render_listings() 関数として knitr に組み込まれています. これが使用例になります.

PDFの出力のスクリーショットを1つお見せします:

knitr での listings の使用

図 4.5: knitr での listings の使用

LaTeX のスタイルファイル Sweavel.sty を提供してくれた Frank Harrell に感謝します.

4.1 さらなる listings オプション.

listings パッケージには膨大な数の使用可能なオプションがあるので, その全性能を引き出すにはマニュアルを読み込んでください. 以下はエラーメッセージで開業する方法の例を提示しています. このRnw ソースをダウンロードすることができます. ポイントは breaklines=true オプションです.

listings の出力の改行

図 4.6: listings の出力の改行