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

Re:VIEW ブロック命令追加

Re:VIEW ブロック命令追加

Re:VIEWは構文拡張できる

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

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

>review version
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)を追加します。

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

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