11.13 テキスト出力ブロックに属性を与える (*)

7.3節では, class.sourceclass.output を使い, ソース・テキスト出力のブロックにスタイルを定義する例をいくつかお見せしました. 実際には knitr には同様の様々なオプションがあります. それらは class.message, class.warning, class.error といったものです. これらのオプションはクラス名を対応するテキスト出力ブロックに追加するために使うことができます. 例えば class.error はチャンクオプション error = TRUE (11.2節参照) が設定されているとき, エラーメッセージに対してクラスを追加します. これらのオプションがもっともよく使われるのは, クラス名に対応して定義された CSS ルールで出力にスタイルを適用するときでしょう. この例の実演は7.3節でなされています.

典型的には, テキスト出力ブロックは最低限コードブロックに囲まれており, Markdown のソースはこのようになります.

```{.className}
出力された行
```

出力フォーマットが HTML ならば, たいていの場合で38このように変換されます.

<pre class="className">
<code>出力された行</code>
</pre>

class.* オプションは <pre> 要素の class 属性を制御します. この要素は先述のテキスト出力ブロックを入れたコンテナです.

実際には, クラスは HTML の <pre> 要素の属性に使用可能なものの1つにすぎません. HTML 要素は幅や高さやスタイルなどと, 他にも多くの属性を持ちます. attr.source, attr.output, attr.message, attr.warning, attr.error を含む一連のチャンクオプション attr.* によって, 任意の属性をテキスト出力ブロックに追加することができます. 例えば attr.source = 'style="background: pink;"' を使えばソースブロックの背景をピンク色にできます. 対応するコードブロックはこのようになります.

```{style="background: pink;"}
...
```

そして HTML 出力はこのようになります.

<pre style="background: pink;">
...
</pre>

5.7, 12.3節でさらなる例を見ることができます.

技術的なことをいいますと, チャンクオプション class.*attr.* の特殊形です. 例えば class.source = 'numberLines'attr.source = '.numberLines' と同じです (後者は先頭にドットがあることに注意). しかし attr.source は任意の属性をとることができ, 例えば attr.source = c('.numberLines', 'startFrom="11"') も可能です.

これらのオプションはほとんどの HTML 出力で有効です. 属性が他の出力フォーマットでも有効な場合もありますが, そのような場合になるのは比較的珍しいです. 属性は Pandoc か, 何らかのサードパーティ製パッケージ のいずれかでサポートされている必要があります. .numberLines 属性は Pandoc によって HTML と LaTeX の両方で動作し, サードパーティ製パッケージというのは大抵は4.20節で紹介したような Lua フィルターを使ったものになります.


  1. <div class="className"></div> に変換される場合もあります. 万全を期すには HTML 出力された文書を確認することもできます.↩︎