読者です 読者をやめる 読者になる 読者になる

ReVIEWの自動採番やプレフィックス、番号参照を制御する

 以下の記事はReVIEW ML(要アカウント)でKADOさんにお教えいただいたことを、自分なりにメモしたものです。


 例えば、このようなReVIEWマーキングしたテキストを用意したとします。
f:id:seuzo:20120306165636p:plain
 これをまあ、スタイルシート以外のオプションをつけないで、review-compileしてHTML変換します。

$ review-compile --target html --stylesheet=main.css ch01.re > ch01.html

 HTMLだと変換後にすぐに確認できます*1
f:id:seuzo:20120307131111p:plain
 ReVIEWは当初、技術書を書くために設計されたので、下記の自動採番や番号参照などがデフォルトになっています。

  • 見出しのプレフィックスと採番
  • (図|表|リスト)のプレフィックスと採番
  • (図|表|リスト)の番号参照

見出しのプレフィックスを変更する

 章見出し(h1)のプレフィックスがデフォルトで「第n章 」になっています。これを「chapter n 」変更してみましょう。
 ReVIEWドキュメントと同じ階層に「locale.yaml」という名前のテキストファイルを用意します。このテキスト内容を下記の通りにしてみてください。

locale: ja
chapter: "chapter %d"
chapter_postfix: " "

f:id:seuzo:20120307135609p:plain
 このファイルを設置し終えたら、先ほどと同じコマンドでHTMLを生成してみます。
f:id:seuzo:20120307135728p:plain
 「第1章 」が「chapter 1 」になっていますね。.yaml上の「locale: ja」は日本語環境であるロケールを、「chapter: 」がh1要素のプレフィックス文字列を、「%d」が章番号の自動採番を、「chapter_postfix: 」がchapterプレフィックスと見出しとの間の文字列をそれぞれ表しています。
 YAMLのキーと値の初期値は「lib/review/i18n.yaml」にあります。GitHubでいうとこちら

 現在、定義されているキーの簡単な意味はこんな感じです。

キー 初期値 意味
image 図版(とその参照)の最初に置かれるプレフィックス
table 表(とその参照)の最初に置かれるプレフィックス
list リスト コードリスト(とその参照)の最初に置かれるプレフィックス
chapter 第%d章 章見出しのプレフィックス
chapter_postfix " " 章見出しのプレフィックスと見出しとの間にはさむ文字列"
numberless_image "図:" 自動採番をつけない「indepimage」マーキングを使った時の、図キャプションプレフィックス
format_number "%s.%d" 番号参照のフォーマット
format_number_header "%s.%d:" キャプションプレフィックスのフォーマット
format_number_without_chapter "%d" --level=0で章番号の自動採番をしなかった時、番号参照で使われるフォーマット
format_number_header_without_chapter "%d:" --level=0で章番号の自動採番をしなかった時、キャプションプレフィックスのフォーマット
caption_prefix " " キャプションプレフィックスとキャプションの間にはさむ文字列
caption_prefix_idgxml " " キャプションプレフィックスとキャプションの間にはさむ文字列(idgxmlを選んだ時)
ruby_prefix "(" rubyタグに非対応のデバイスでルビを開くとき、ルビ開始文字を表す文字列(rpタグに入る文字列)
ruby_postfix ")" rubyタグに非対応のデバイスでルビを開くとき、ルビ終了文字を表す文字列(rpタグに入る文字列)

見出しやキャプションのプレフィックスを抑制する

 技術書以外では見出しやキャプションのプレフィックスが不要な場合も多くあります。上の表を参考に、見出しやキャプションのプレフィックスをすべて生成しないようにしてみましょう。「locale.yaml」をこのように変更してみます。

locale: ja
image: ""
table: ""
list: ""
chapter: ""
chapter_postfix: ""
numberless_image: ""
format_number: ""
format_number_header: ""
format_number_without_chapter: ""
format_number_header_without_chapter: ""
caption_prefix: ""
caption_prefix_idgxml: ""

ruby_prefixとruby_postfix以外をすべて空文字列にしてみました。この時、生成したHTMLはこうなります。
f:id:seuzo:20120308001326p:plain
 自動採番をすべて空文字列にしているので、本文中の番号参照も空になるのを注意してください。
 ここで節見出しに「1.1 」という自動採番が残ってしまっているのにお気づきでしょうか。この部分を制御するには、review-compileコマンドに見出しレベルを追加するオプション「--level」が必要です。「--level=3」とすれば項見出しまでの自動採番を追加し、「--level=2」であれば節見出しまで、「--level=1」ならば章見出しのみ、「--level=0」では見出しの自動採番は追加されなくなります。つまり、この場合は「--level=1」以下を指定すればよいことになります。

$ review-compile --target html --level=0 --stylesheet=main.css ch01.re > ch01.html

f:id:seuzo:20120308003042p:plain

見出しの自動採番は追加しないが、図の参照番号やキャプションのプレフィックスは必要な場合

 先ほどのようにすべてを削除するのではなくて、図の参照番号やキャプションのプレフィックスは使いたいという場合もあります。この場合ですと、「--level=0」だけで目的は果たせそうです。「locale.yaml」ファイルを削除(またはリネーム)してください。生成したHTMLはこのようになるはずです。
f:id:seuzo:20120308005053p:plain

*1:xmlにしてInDesign流しても同じです