Re:VIEWは構文拡張できる
2018年8月、review-ext.rbによる構文拡張でブロック命令を追加しました。
Re:VIEWのバージョンは2.5.0です。
>review version 2.5.0
Windows10に書籍執筆支援システム「Re:VIEW」をインストールして使用しています。
脚注本文を分離したい
Re:VIEWでは、脚注番号を付けるところに「@<fn>{識別ID}」インライン命令を記述し、脚注本文は「//footnote[識別ID][本文]」で記述します。
テスト原稿は、Re:VIEWのOverride拡張でEPUB生成を変更する方法と同じものを使います。
EPUBを生成すると脚注番号と脚注本文を出力しました。
脚注本文は、//footnoteを書いた位置に出力します。本文の直後に表示しているので、少々気になります。
本文の後にアンダーラインなどで、本文と脚注本文を分離できないでしょうか。脚注本文をひとつの節とすれば分離できます。しかし、かっこよくありません。
セクション命令を追加
Re:VIEWは、review-ext.rbによる構文拡張が可能です。インライン命令の追加は下記ブログに書きました。
今度は、ブロック命令(newsection)を追加します。
//newsection[type][Caption]{ ・・・ //}
- typeは、セクションの型を指定し<DIV>のクラス名を生成します。
- Captionは、セクションのタイトルを指定します。
review-ext.rb
review-ext.rbのコードを書きます。
module ReVIEW class Compiler defblock :newsection ,2 end class ReVIEW::LATEXBuilder def newsection(lines ,type ,caption) end end class ReVIEW::HTMLBuilder def newsection(lines ,type ,caption) captionblock(type, lines, caption) end end end
- defblockでブロック命令を指定します。引数は、typeとcaptionの二つです。
- PDF用のLATEXBuilderは、何も生成しません。
- EPUB用のHTMLBuilderは、captionblock(type, lines, caption)を呼び出します。captionblock()関数は、囲み記事用の//noteや//memoで呼び出している関数です。同じようなXHTMLを生成することにします。
セクション命令の確認
テスト原稿
テスト原稿(sample5)を作成します。脚注本文を新しいブロック命令(newsection)の直後に配置します。typeは、footsectionとします。
= はじめてのRe:VIEW == Re:VIEWとは @<b>{Re:VIEW}@<fn>{ChangeName}は、電子書籍向けの簡易なマークアップ言語で 記述したテキストファイルをEPUBやPDFなどの形式に変換する ツールセットです。 @<b>{Re:VIEW}は、2002年ごろに青木峰郎さんが開発しました。 その後、武藤健志@<fn>{Participation}さんが開発・保守を引き継いでいます。 == Re:VIEWの文書変換 @<b>{Re:VIEW}は、マークアップファイル(.re)で書いた原稿から EPUBやPDFを出力することができます。 //newsection[footsection][脚注]{ (≪)をクリックすると本文に戻ります //} //footnote[ChangeName][ 最初は「ReVIEW」という名称でしたが、2014年に「Re:VIEW」となりました] //footnote[Participation][ 武藤さんは、2018年1月から参画しました]
スタイルシート
footsectionクラスのスタイルを定義します。
div.footsection { margin: 1em 0 1em 0.5em; border-top: 2px solid silver; border-left: 10px solid silver; page-break-before: always; } div.footsection p.caption { text-align: left; font-weight: bold; line-height: 1.6; font-size: 1.4em; } div.footsection p { font-weight: normal ; line-height: 1.2; font-size: 0.75em; }
EPUB生成結果
EPUB生成すると、改ページして脚注セクションタイトルに続いて脚注本文が並びます。
本文と脚注本文を分離することができました。
まとめ
書籍執筆支援システム「Re:VIEW」でreview-ext.rbによる構文拡張でブロック命令を追加しました。
Re:VIEWシステムは、モンキーパッチによりオリジナルのソースコードを変更することなくコードを拡張できるので便利です。
review-ext.rbによる構文拡張は、システムのコード(「C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\review-2.5.0\」)に合わせて拡張するのでRe:VIEWシステムがバージョンアップした場合に動かなくなる可能性があります。
モンキーパッチの使いすぎには、注意しましょう。