Re:VIEWの構文拡張でブロック命令を追加する方法

Re:VIEW ブロック命令追加

Re:VIEW ブロック命令追加

Re:VIEWは構文拡張できる

2018年8月、review-ext.rbによる構文拡張でブロック命令を追加しました。

Re:VIEWのバージョンは2.5.0です。

Windows10に書籍執筆支援システム「Re:VIEW」をインストールして使用しています。

Windows10に Re:VIEW 執筆支援システムをインストールする方法

脚注本文を分離したい

Re:VIEWでは、脚注番号を付けるところに「@<fn>{識別ID}」インライン命令を記述し、脚注本文は「//footnote[識別ID][本文]」で記述します。

テスト原稿は、Re:VIEWのOverride拡張でEPUB生成を変更する方法と同じものを使います。

EPUBを生成すると脚注番号と脚注本文を出力しました。

脚注本文の生成

脚注本文の生成

脚注本文は、//footnoteを書いた位置に出力します。本文の直後に表示しているので、少々気になります。

本文の後にアンダーラインなどで、本文と脚注本文を分離できないでしょうか。脚注本文をひとつの節とすれば分離できます。しかし、かっこよくありません。

セクション命令を追加

Re:VIEWは、review-ext.rbによる構文拡張が可能です。インライン命令の追加は下記ブログに書きました。

Re:VIEWの構文拡張でインライン命令を追加する方法

今度は、ブロック命令(newsection)を追加します。

  • typeは、セクションの型を指定し<DIV>のクラス名を生成します。
  • Captionは、セクションのタイトルを指定します。

review-ext.rb

review-ext.rbのコードを書きます。

  • defblockでブロック命令を指定します。引数は、typeとcaptionの二つです。
  • PDF用のLATEXBuilderは、何も生成しません。
  • EPUB用のHTMLBuilderは、captionblock(type, lines, caption)を呼び出します。captionblock()関数は、囲み記事用の//noteや//memoで呼び出している関数です。同じようなXHTMLを生成することにします。

セクション命令の確認

テスト原稿

テスト原稿(sample5)を作成します。脚注本文を新しいブロック命令(newsection)の直後に配置します。typeは、footsectionとします。

スタイルシート

footsectionクラスのスタイルを定義します。

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システムがバージョンアップした場合に動かなくなる可能性があります。

モンキーパッチの使いすぎには、注意しましょう。