review 0.6.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +441 -0
- data/README.rdoc +25 -0
- data/Rakefile +13 -1
- data/VERSION +1 -1
- data/bin/review-check +1 -1
- data/bin/review-compile +19 -10
- data/bin/review-epubmaker +114 -17
- data/bin/review-index +8 -1
- data/bin/review-pdfmaker +378 -0
- data/bin/review-preproc +2 -3
- data/bin/review-vol +1 -2
- data/debian/README.Debian +12 -0
- data/debian/README.source +5 -0
- data/debian/changelog +5 -0
- data/debian/compat +1 -0
- data/debian/control +22 -0
- data/debian/copyright +60 -0
- data/debian/docs +5 -0
- data/debian/manpage.1.ex +59 -0
- data/debian/patches/path.diff +91 -0
- data/debian/patches/series +1 -0
- data/debian/review.install +13 -0
- data/debian/review.links +4 -0
- data/debian/rules +13 -0
- data/debian/source/format +1 -0
- data/doc/format.rdoc +477 -0
- data/doc/format.re +19 -0
- data/doc/format_idg.rdoc +180 -0
- data/doc/ruby-uuid/README +11 -0
- data/doc/ruby-uuid/README.ja +34 -0
- data/doc/sample.css +17 -0
- data/doc/sample.yaml +8 -4
- data/lib/lineinput.rb +1 -1
- data/lib/review/book.rb +43 -36
- data/lib/review/builder.rb +78 -33
- data/lib/review/compiler.rb +45 -48
- data/lib/review/epubbuilder.rb +1 -675
- data/lib/review/exception.rb +1 -1
- data/lib/review/htmlbuilder.rb +627 -49
- data/lib/review/htmlutils.rb +5 -0
- data/lib/review/idgxmlbuilder.rb +239 -250
- data/lib/review/index.rb +84 -7
- data/lib/review/latexbuilder.rb +261 -42
- data/lib/review/latexutils.rb +15 -6
- data/lib/review/preprocessor.rb +40 -6
- data/lib/review/textutils.rb +22 -0
- data/lib/review/topbuilder.rb +4 -1
- data/lib/uuid.rb +312 -0
- data/review.gemspec +44 -12
- data/test/CHAPS +2 -0
- data/test/bib.re +13 -0
- data/test/test.re +43 -0
- data/test/test_book.rb +1191 -0
- data/test/test_builder.rb +147 -0
- data/test/test_htmlbuilder.rb +191 -10
- data/test/test_htmlutils.rb +24 -0
- data/test/test_idgxmlbuilder.rb +310 -0
- data/test/test_index.rb +15 -0
- data/test/test_latexbuilder.rb +217 -6
- data/test/test_lineinput.rb +198 -0
- data/test/test_textutils.rb +68 -0
- data/test/test_uuid.rb +156 -0
- metadata +43 -10
- data/doc/format.txt +0 -434
- data/doc/format_idg.txt +0 -194
- data/doc/format_sjis.txt +0 -313
- data/setup.rb +0 -1587
- data/test/test_epubbuilder.rb +0 -73
    
        data/doc/format.re
    CHANGED
    
    | @@ -317,6 +317,7 @@ RD や各種 Wiki の文法をとりいれて簡素化しています。 | |
| 317 317 |  | 
| 318 318 | 
             
            リード文は //read{ 〜 //} で指定します。lead でなく read
         | 
| 319 319 | 
             
            なのは、ASCII の EWB が「read」を使っていたからです。
         | 
| 320 | 
            +
            //lead{ 〜 //} でも使えます。
         | 
| 320 321 |  | 
| 321 322 | 
             
            === [例]
         | 
| 322 323 |  | 
| @@ -327,6 +328,18 @@ RD や各種 Wiki の文法をとりいれて簡素化しています。 | |
| 327 328 | 
             
              //}
         | 
| 328 329 | 
             
            //}
         | 
| 329 330 |  | 
| 331 | 
            +
            == TeX式
         | 
| 332 | 
            +
             | 
| 333 | 
            +
            LaTeX の式を挿入するには、//texequation{ 〜 //} を使います。
         | 
| 334 | 
            +
             | 
| 335 | 
            +
            === [例]
         | 
| 336 | 
            +
             | 
| 337 | 
            +
            //emlist{
         | 
| 338 | 
            +
              //texequation{
         | 
| 339 | 
            +
              \sum_{i=1}^nf_n(x)
         | 
| 340 | 
            +
              //}
         | 
| 341 | 
            +
            //}
         | 
| 342 | 
            +
             | 
| 330 343 | 
             
            == 空白制御
         | 
| 331 344 |  | 
| 332 345 | 
             
            : //noindent
         | 
| @@ -398,6 +411,12 @@ ReVIEW は任意のブロックを追加可能なので、本によって専用 | |
| 398 411 | 
             
            : @<raw>{@<b>{どうしても\}}
         | 
| 399 412 | 
             
                太字。
         | 
| 400 413 |  | 
| 414 | 
            +
            : @<raw>{@<br>{\}}
         | 
| 415 | 
            +
                段落中改行。
         | 
| 416 | 
            +
             | 
| 417 | 
            +
            : @<raw>{@<m>{a + \alpha\}}
         | 
| 418 | 
            +
                TeXインライン式。
         | 
| 419 | 
            +
             | 
| 401 420 | 
             
            == 著者用タグ (プリプロセッサ命令)
         | 
| 402 421 |  | 
| 403 422 | 
             
            これまでに説明したタグはすべて最終段階まで残り、見ために
         | 
    
        data/doc/format_idg.rdoc
    ADDED
    
    | @@ -0,0 +1,180 @@ | |
| 1 | 
            +
            = ReVIEW フォーマット InDesign XML 形式拡張
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            ReVIEW フォーマットから、Adobe 社の DTP ソフトウェア「InDesign」
         | 
| 4 | 
            +
            で読み込んで利用しやすい XML 形式に変換できます (通常の XML とほぼ同じ
         | 
| 5 | 
            +
            ですが、文書構造ではなく見た目を指向した形態になっています)。
         | 
| 6 | 
            +
            現時点では idgxmlbuilder.rb と topbuilder.rb のみが拡張に対応しています。
         | 
| 7 | 
            +
            実際には出力された XML を InDesign のスタイルに割り当てるフィルタをさらに
         | 
| 8 | 
            +
            作成・適用する必要があります。
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            == 章・節・項・段
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            従来の[column]のほかに、オプションを追加しています。
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            * [nonum] : これを指定している章・節・項・段には連番を振りません。
         | 
| 15 | 
            +
            * [circle]: 「・」を先頭に付けた小さな見出し(連番なし)を作成します。
         | 
| 16 | 
            +
            * [world]: Real Worldコラム。
         | 
| 17 | 
            +
            * [hood]: Under the Hoodコラム。
         | 
| 18 | 
            +
            * [edition]: Editionコラム。
         | 
| 19 | 
            +
            * [insideout]: インサイドアウトコラム。
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            == 書式ブロック
         | 
| 22 | 
            +
            //insn[タイトル]{ 〜 //} または //box[タイトル]{ 〜 //} で書式を指定し
         | 
| 23 | 
            +
            ます。
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            == ノート
         | 
| 26 | 
            +
            //note{ 〜 //} または //note[タイトル]{ 〜 //} で注意文章を指定します。
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            == メモ
         | 
| 29 | 
            +
            //memo{ 〜 //} または //memo[タイトル]{ 〜 //} でメモ文章を指定します。
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            == ヒント
         | 
| 32 | 
            +
            //tip{ 〜 //} または //tip[タイトル]{ 〜 //} でヒント(Tip)文章を指定します。
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            == 参照ブロック
         | 
| 35 | 
            +
            //info{ 〜 //} または //info[タイトル]{ 〜 //} で参照文章を指定します。
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            == プランニング
         | 
| 38 | 
            +
            //planning{ 〜 //} または //planning[タイトル]{ 〜 //} でプランニング文章を
         | 
| 39 | 
            +
            指定します。
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            == ベストプラクティス
         | 
| 42 | 
            +
            //best{ 〜 //} または //best[タイトル]{ 〜 //} でベストプラクティス文章を
         | 
| 43 | 
            +
            指定します。
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            == ここが重要 (キーワード)
         | 
| 46 | 
            +
            //important[タイトル]{ 〜 //} で重要項目を指定します。
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            == セキュリティ
         | 
| 49 | 
            +
            //security{ 〜 //} または //security[タイトル]{ 〜 //} でセキュリティ文章を
         | 
| 50 | 
            +
            指定します。
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            == 警告
         | 
| 53 | 
            +
            //caution{ 〜 //} または //caution[タイトル]{ 〜 //} で警告文章を指定します。
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            == エキスパートに訊く
         | 
| 56 | 
            +
            //expert{ 〜 //} で「エキスパートに訊く」を指定します (rawで<expert>〜
         | 
| 57 | 
            +
            </expert>を使うほうがよいかもしれません)。
         | 
| 58 | 
            +
            QとAは@<b>{Q}:〜 と @<b>{A}:〜 で示します。
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            == 注意
         | 
| 61 | 
            +
            //notice{ 〜 //} または //notice[タイトル]{ 〜 //} で注意を指定します。
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            == ワンポイント
         | 
| 64 | 
            +
            //point{ 〜 //} または //point[タイトル]{ 〜 //} でワンポイントを指定します。
         | 
| 65 | 
            +
             | 
| 66 | 
            +
            == トラブルシューティング
         | 
| 67 | 
            +
            //shoot{ 〜 //} または //shoot[タイトル]{ 〜 //} でトラブルシューティングを
         | 
| 68 | 
            +
            指定します。
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            == 用語解説
         | 
| 71 | 
            +
            //term{ 〜 //} で用語解説を指定します(ただし、ブロック指定ができないので
         | 
| 72 | 
            +
            実質的にはrawで<term>〜</term>を通常使うことになるでしょう)。
         | 
| 73 | 
            +
             | 
| 74 | 
            +
            == リンク
         | 
| 75 | 
            +
            //link{ 〜 //} または //link[タイトル]{ 〜 //} で他の章やファイルなどへの
         | 
| 76 | 
            +
            参照内容を指定します。
         | 
| 77 | 
            +
             | 
| 78 | 
            +
            == 練習問題
         | 
| 79 | 
            +
            //practice{ 〜 //} で練習問題を指定します。
         | 
| 80 | 
            +
             | 
| 81 | 
            +
            == 参考
         | 
| 82 | 
            +
            //reference{ 〜 //} で参考情報を指定します。
         | 
| 83 | 
            +
             | 
| 84 | 
            +
            == 相互参照
         | 
| 85 | 
            +
            //label[〜]でラベルを定義し、@<labelref>{〜}で参照します。
         | 
| 86 | 
            +
            XMLとしては<label id='〜' />と<labelref idref='〜' />というタグに
         | 
| 87 | 
            +
            置き換えられます。
         | 
| 88 | 
            +
            実際にどのような相互参照関係にするかは、処理系に依存します。
         | 
| 89 | 
            +
            想定の用途では、章や節の番号およびタイトルを記憶し、labelrefの出現箇所
         | 
| 90 | 
            +
            に"「節(あるいは章)番号 タイトル」"という文字列を配置します。
         | 
| 91 | 
            +
             | 
| 92 | 
            +
            @<chapref>の展開形式を、--chapref="前装飾文字列,中間装飾文字列,後装飾文字列"
         | 
| 93 | 
            +
            でコンパイル実行時に指定できます。デフォルトは",「,」"です。たとえば
         | 
| 94 | 
            +
            "第2章「コンパイラ」" のように普通は展開されます。
         | 
| 95 | 
            +
            "「, ,」"と指定すると、"「第2章 コンパイラ」" に展開されます。
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            == 丸数字
         | 
| 98 | 
            +
            @<maru>{数値} で丸数字を出力します。
         | 
| 99 | 
            +
             | 
| 100 | 
            +
            == キートップ
         | 
| 101 | 
            +
            @<keytop>{キー文字} でキーボードマークを出力します。
         | 
| 102 | 
            +
             | 
| 103 | 
            +
            == 吹き出し
         | 
| 104 | 
            +
            @<balloon>{〜} でコード内などでの吹き出しを作成します。吹き出しは右に寄せ
         | 
| 105 | 
            +
            られ、記入した箇所から吹き出しまで線が引かれます。
         | 
| 106 | 
            +
            @<>オペレータは入れ子ができないため、丸数字を使いたいときには@maru[数値]
         | 
| 107 | 
            +
            という特別な書式を代わりに使います。
         | 
| 108 | 
            +
             | 
| 109 | 
            +
            == ロー指定
         | 
| 110 | 
            +
            現時点で ReVIEW はブロックの入れ子処理ができないため、ロー指定で XML
         | 
| 111 | 
            +
            エレメントを指定しなければならないこともあります。
         | 
| 112 | 
            +
             | 
| 113 | 
            +
            インラインの@<raw>{ 〜 }の他に、単一行の//raw[〜]、ブロック版の //rawblock{ 〜 //} でも、フォーマット処理をせずにそのままの文字列が出力できます。
         | 
| 114 | 
            +
             | 
| 115 | 
            +
            == キャプションなし表
         | 
| 116 | 
            +
            //table{ 〜 //} のように id もキャプションも付けないブロックを利用できます。
         | 
| 117 | 
            +
            この場合、その表の連番付けを飛ばします。
         | 
| 118 | 
            +
             | 
| 119 | 
            +
            == 表セル幅の指定
         | 
| 120 | 
            +
            //tsize[1列目の幅,2列目の幅,...] で、続く //table の表の列幅を指定します
         | 
| 121 | 
            +
            (単位mm)。これを利用するときには、review2idgxml を実行する際、オプション
         | 
| 122 | 
            +
            --table=表幅 を付ける必要があります (表幅の単位は mm)。列幅指定の個数が
         | 
| 123 | 
            +
            実際の列数に満たない場合、残りの列は均等分割したものとなります。列幅の
         | 
| 124 | 
            +
            合計が表幅を超えるとエラーになります。
         | 
| 125 | 
            +
             | 
| 126 | 
            +
            == DTP 命令指定
         | 
| 127 | 
            +
            @<dtp>{ 〜 } で InDesign 向けに「<? dtp 〜 ?>」型の XML インストラクション
         | 
| 128 | 
            +
            を埋め込みます。処理系に渡す任意の文字列を指定できますが、次のような文字列
         | 
| 129 | 
            +
            を特殊文字指定できます。
         | 
| 130 | 
            +
             | 
| 131 | 
            +
            * maru	番号リストの各段落先頭で使い、このリスト段落の番号は丸数字であることを示す
         | 
| 132 | 
            +
            * return  改行記号文字
         | 
| 133 | 
            +
             | 
| 134 | 
            +
            * autopagenumber	現ページ番号
         | 
| 135 | 
            +
            * nextpageunmber	次ページ番号
         | 
| 136 | 
            +
            * previouspagenumber	前ページ番号
         | 
| 137 | 
            +
            * sectionmarker	セクションマーカー
         | 
| 138 | 
            +
            * bulletcharacter	ビュレット (ナカグロ)
         | 
| 139 | 
            +
            * copyrightsymbol	著作権記号
         | 
| 140 | 
            +
            * degreesymbol	度記号
         | 
| 141 | 
            +
            * ellipsischaracter	省略記号
         | 
| 142 | 
            +
            * forcedlinebreak	強制改行
         | 
| 143 | 
            +
            * discretionarylinebreak	任意の改行
         | 
| 144 | 
            +
            * paragraphsymbol	段落記号
         | 
| 145 | 
            +
            * registeredtrademark	登録商標記号
         | 
| 146 | 
            +
            * sectionsymbol	セクション記号
         | 
| 147 | 
            +
            * trademarksymbol	商標記号
         | 
| 148 | 
            +
            * rightindenttab	右インデントタブ
         | 
| 149 | 
            +
            * indentheretab	「ここまでインデント」タブ
         | 
| 150 | 
            +
            * zerowidthnonjoiner	結合なし
         | 
| 151 | 
            +
            * emdash	EMダッシュ
         | 
| 152 | 
            +
            * endash	ENダッシュ
         | 
| 153 | 
            +
            * discretionaryhyphen	任意ハイフン
         | 
| 154 | 
            +
            * nonbreakinghyphen	分散禁止ハイフン
         | 
| 155 | 
            +
            * endnestedstyle	先頭文字スタイルの終了文字
         | 
| 156 | 
            +
            * doubleleftquote	左二重引用符
         | 
| 157 | 
            +
            * doublerightquote	右二重引用符
         | 
| 158 | 
            +
            * singleleftquote	左用符
         | 
| 159 | 
            +
            * singlerightquote	右引用符
         | 
| 160 | 
            +
            * singlestraightquote	半角一重左用符
         | 
| 161 | 
            +
            * doublestraightquote	半角二重引用符
         | 
| 162 | 
            +
            * emspace	EMスペース
         | 
| 163 | 
            +
            * enspace	ENスペース
         | 
| 164 | 
            +
            * flushspace	フラッシュスペース
         | 
| 165 | 
            +
            * hairspace	極細スペース
         | 
| 166 | 
            +
            * nonbreakingspace	分散禁止スペース
         | 
| 167 | 
            +
            * fixedwidthnonbreakingspace	分散禁止スペース(固定幅)
         | 
| 168 | 
            +
            * textvariable	全角スペース
         | 
| 169 | 
            +
            * thinspace	細いスペース
         | 
| 170 | 
            +
            * figurespace	数字の間隔
         | 
| 171 | 
            +
            * punctuationspace	句読点等の間隔
         | 
| 172 | 
            +
            * sixthspace	1/6スペース
         | 
| 173 | 
            +
            * quarterspace	1/4スペース
         | 
| 174 | 
            +
            * thirdspace	1/3スペース
         | 
| 175 | 
            +
            * columnbreak	改段
         | 
| 176 | 
            +
            * framebreak	改フレーム
         | 
| 177 | 
            +
            * pagebreak	改ページ
         | 
| 178 | 
            +
            * oddpagebreak	奇数改ページ
         | 
| 179 | 
            +
            * evenpagebreak	偶数改ページ
         | 
| 180 | 
            +
            * footnotesymbol	脚注記号
         | 
| @@ -0,0 +1,11 @@ | |
| 1 | 
            +
            For GitHub users;
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            This is  a pure-ruby  implementation of RFC4122  that I wrote  back in
         | 
| 4 | 
            +
            2005.  I have touched its  internals a few times (mainly bugfixes).  I
         | 
| 5 | 
            +
            know someone  has already uploaded  an old copy  of it to  GitHub, and
         | 
| 6 | 
            +
            thats' 100% legal he has the right to do so, but I believe what I have
         | 
| 7 | 
            +
            now is better than the older ones.  So I upload this.
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            It's  very  tiny  (<300 lines  ruby  code)  and  you can  simply  copy
         | 
| 10 | 
            +
            lib/uuid.rb to your  project.  The gemspec file can  help you maintain
         | 
| 11 | 
            +
            your dependency though.
         | 
| @@ -0,0 +1,34 @@ | |
| 1 | 
            +
            UUID: Pure-ruby RFC4122 Implementation
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            RFC4122をフルサポート(はず)のライブラリ。使いかたは
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            require 'uuid'
         | 
| 6 | 
            +
            UUID.create # => instance
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            とか。
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            基本的にUUIDってのは存在していることに意味があるオブジェクトなため、それ自身には
         | 
| 11 | 
            +
            ほとんどインスタンスメソッドを持たない。以下はその数少ないメソッドたち
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            * UUID#==, UUID#<=>
         | 
| 14 | 
            +
            比較。RFC4122によるとなぜかUUIDは順序つきなんだそうだ。何に使うのか不明。RFCに準
         | 
| 15 | 
            +
            拠するためだけのメソッド。
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            * UUID#to_i, UUID#to_int
         | 
| 18 | 
            +
            128bit unsigned intとみなして整数化。
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            * UUID#to_s, UUID#to_uri, UUID#guid
         | 
| 21 | 
            +
            人間が読める文字列にする。to_uriはRFC4122が定めるURIとして変換。guidはよく
         | 
| 22 | 
            +
            Windowsとかで見るあれ。
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            * UUID#raw_bytes
         | 
| 25 | 
            +
            これも文字列を返すんだけど、基本的には読めない。128bit長のUUID値そのもの。
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            
         | 
| 28 | 
            +
            # Local Variables:
         | 
| 29 | 
            +
            # mode: text
         | 
| 30 | 
            +
            # indent-tabs-mode: t
         | 
| 31 | 
            +
            # tab-width: 8
         | 
| 32 | 
            +
            # fill-column: 79
         | 
| 33 | 
            +
            # default-justification: full
         | 
| 34 | 
            +
            # End:
         | 
    
        data/doc/sample.css
    CHANGED
    
    | @@ -89,3 +89,20 @@ div h5 { | |
| 89 89 | 
             
                font-size: larger;
         | 
| 90 90 | 
             
                border-bottom: solid 1px #000000;
         | 
| 91 91 | 
             
            }
         | 
| 92 | 
            +
             | 
| 93 | 
            +
            p {
         | 
| 94 | 
            +
                text-indent: 1em;
         | 
| 95 | 
            +
            }
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            p.caption {
         | 
| 98 | 
            +
                font-weight: bold;
         | 
| 99 | 
            +
                text-indent: 0em;
         | 
| 100 | 
            +
            }
         | 
| 101 | 
            +
             | 
| 102 | 
            +
            p.noindent {
         | 
| 103 | 
            +
                text-indent: 0em;
         | 
| 104 | 
            +
            }
         | 
| 105 | 
            +
             | 
| 106 | 
            +
            p.flushright {
         | 
| 107 | 
            +
                text-align: right;
         | 
| 108 | 
            +
            }
         | 
    
        data/doc/sample.yaml
    CHANGED
    
    | @@ -28,19 +28,23 @@ aut: 吟遊詩人 | |
| 28 28 | 
             
            #
         | 
| 29 29 | 
             
            # coverimage: カバー用画像。画像ディレクトリ内に置いてもディレクトリ名は不要(例: cover.jpg)
         | 
| 30 30 | 
             
            #
         | 
| 31 | 
            -
            # 固有ID | 
| 32 | 
            -
            urnid: example. | 
| 31 | 
            +
            # 固有IDに使用するドメイン。指定しない場合には、時刻に基づくランダムUUIDが入る
         | 
| 32 | 
            +
            # urnid: urn:uid:http://example.com/some-book-title/1.0.2/
         | 
| 33 33 | 
             
            # CSSファイル (yamlファイルおよびReVIEWファイルを置いたディレクトリにあること)
         | 
| 34 | 
            -
            stylesheet:  | 
| 34 | 
            +
            stylesheet: stylesheet.css
         | 
| 35 | 
            +
            # LaTeX用のスタイルファイル(styディレクトリ以下に置くこと)
         | 
| 36 | 
            +
            # texstyle: samplemacro
         | 
| 35 37 | 
             
            # 目次として抽出するレベル
         | 
| 36 38 | 
             
            toclevel: 3
         | 
| 37 39 | 
             
            # セクション番号を表示するレベル
         | 
| 38 40 | 
             
            secnolevel: 2
         | 
| 39 41 | 
             
            # EPUB標準の目次以外に目次を作成するか
         | 
| 40 42 | 
             
            # mytoc: nil
         | 
| 43 | 
            +
            # 奥付を作成するか。デフォルトでは作成されない。trueを指定するとデフォルトの奥付、ファイル名を指定するとそれがcolophon.htmlとしてコピーされる
         | 
| 44 | 
            +
            # colophon: true
         | 
| 41 45 | 
             
            # XHTML生成後に実行するプログラム。$1:HTMLの生成されたディレクトリ $2:ReVIEWファイルのあるディレクトリ $3:起動時指定のyamlファイル名
         | 
| 42 46 | 
             
            # posthook: hook.sh
         | 
| 43 47 | 
             
            # review-compileに渡すパラメータ
         | 
| 44 48 | 
             
            params: --stylesheet=sample.css
         | 
| 45 | 
            -
            # デバッグフラグ。nil | 
| 49 | 
            +
            # デバッグフラグ。nilでないときには一時ファイルをカレントディレクトリに作成し、削除もしない
         | 
| 46 50 | 
             
            # debug: nil
         | 
    
        data/lib/lineinput.rb
    CHANGED
    
    
    
        data/lib/review/book.rb
    CHANGED
    
    | @@ -27,9 +27,11 @@ module ReVIEW | |
| 27 27 |  | 
| 28 28 | 
             
              class Book
         | 
| 29 29 |  | 
| 30 | 
            +
                attr_accessor :param
         | 
| 31 | 
            +
             | 
| 30 32 | 
             
                def Book.load_default
         | 
| 31 33 | 
             
                  %w( . .. ../.. ).each do |basedir|
         | 
| 32 | 
            -
                    if File.file?("#{basedir}/ | 
| 34 | 
            +
                    if File.file?("#{basedir}/CHAPS")
         | 
| 33 35 | 
             
                      return load(basedir)
         | 
| 34 36 | 
             
                    end
         | 
| 35 37 | 
             
                  end
         | 
| @@ -38,14 +40,7 @@ module ReVIEW | |
| 38 40 |  | 
| 39 41 | 
             
                def Book.load(dir)
         | 
| 40 42 | 
             
                  update_rubyenv dir
         | 
| 41 | 
            -
                   | 
| 42 | 
            -
                  then new(dir, Parameters.load("#{dir}/PARAMS"))
         | 
| 43 | 
            -
                  else new(dir)
         | 
| 44 | 
            -
                  end
         | 
| 45 | 
            -
                end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                def setParameter(param)
         | 
| 48 | 
            -
                  @param = param
         | 
| 43 | 
            +
                  new(dir)
         | 
| 49 44 | 
             
                end
         | 
| 50 45 |  | 
| 51 46 | 
             
                @basedir_seen = {}
         | 
| @@ -73,9 +68,7 @@ module ReVIEW | |
| 73 68 | 
             
                               :chapter_file,
         | 
| 74 69 | 
             
                               :part_file,
         | 
| 75 70 | 
             
                               :bib_file,
         | 
| 76 | 
            -
                               :index_file,
         | 
| 77 71 | 
             
                               :reject_file,
         | 
| 78 | 
            -
                               :nocode_file,
         | 
| 79 72 | 
             
                               :predef_file,
         | 
| 80 73 | 
             
                               :postdef_file,
         | 
| 81 74 | 
             
                               :ext,
         | 
| @@ -109,7 +102,6 @@ module ReVIEW | |
| 109 102 |  | 
| 110 103 | 
             
                def chapter_index
         | 
| 111 104 | 
             
                  @chapter_index ||= ChapterIndex.new(chapters())
         | 
| 112 | 
            -
                  @chapter_index.setParameter(@param)
         | 
| 113 105 | 
             
                  @chapter_index
         | 
| 114 106 | 
             
                end
         | 
| 115 107 |  | 
| @@ -278,10 +270,8 @@ module ReVIEW | |
| 278 270 | 
             
                    :chapter_file => const_get_safe(mod, :CHAPS_FILE),
         | 
| 279 271 | 
             
                    :part_file    => const_get_safe(mod, :PART_FILE),
         | 
| 280 272 | 
             
                    :bib_file     => const_get_safe(mod, :BIB_FILE),
         | 
| 281 | 
            -
                    :index_file   => const_get_safe(mod, :INDEX_FILE),
         | 
| 282 273 | 
             
                    :reject_file  => const_get_safe(mod, :REJECT_FILE) ||
         | 
| 283 274 | 
             
                                     const_get_safe(mod, :WORDS_FILE),
         | 
| 284 | 
            -
                    :nocode_file  => const_get_safe(mod, :NOCODE_FILE),
         | 
| 285 275 | 
             
                    :predef_file  => const_get_safe(mod, :PREDEF_FILE),
         | 
| 286 276 | 
             
                    :postdef_file => const_get_safe(mod, :POSTDEF_FILE),
         | 
| 287 277 | 
             
                    :ext          => const_get_safe(mod, :EXT),
         | 
| @@ -313,16 +303,14 @@ module ReVIEW | |
| 313 303 | 
             
                def initialize(params = {})
         | 
| 314 304 | 
             
                  @chapter_file = params[:chapter_file] || 'CHAPS'
         | 
| 315 305 | 
             
                  @part_file = params[:part_file]       || 'CHAPS'
         | 
| 316 | 
            -
                  @index_file   = params[:index_file]   || 'INDEX'
         | 
| 317 306 | 
             
                  @reject_file  = params[:reject_file]  || 'REJECT'
         | 
| 318 | 
            -
                  @nocode_file  = params[:nocode_file]  || 'NOCODE'
         | 
| 319 307 | 
             
                  @predef_file  = params[:predef_file]  || 'PREDEF'
         | 
| 320 308 | 
             
                  @postdef_file = params[:postdef_file] || 'POSTDEF'
         | 
| 321 309 | 
             
                  @page_metric  = params[:page_metric]  || PageMetric.a5
         | 
| 322 310 | 
             
                  @ext          = params[:ext]          || '.re'
         | 
| 323 311 | 
             
                  @image_dir    = params[:image_dir]    || 'images'
         | 
| 324 312 | 
             
                  @image_types  = unify_exts(params[:image_types]  ||
         | 
| 325 | 
            -
                                             %w( eps tif tiff png bmp jpg jpeg gif svg ))
         | 
| 313 | 
            +
                                             %w( eps ai tif tiff png bmp jpg jpeg gif svg ))
         | 
| 326 314 | 
             
                  @bib_file  = params[:bib_file]        || "bib#{@ext}"
         | 
| 327 315 | 
             
                end
         | 
| 328 316 |  | 
| @@ -342,9 +330,7 @@ module ReVIEW | |
| 342 330 | 
             
                path_param  :chapter_file
         | 
| 343 331 | 
             
                path_param  :part_file
         | 
| 344 332 | 
             
                path_param  :bib_file
         | 
| 345 | 
            -
                path_param  :index_file
         | 
| 346 333 | 
             
                path_param  :reject_file
         | 
| 347 | 
            -
                path_param  :nocode_file
         | 
| 348 334 | 
             
                path_param  :predef_file
         | 
| 349 335 | 
             
                path_param  :postdef_file
         | 
| 350 336 | 
             
                attr_reader :ext
         | 
| @@ -438,10 +424,9 @@ module ReVIEW | |
| 438 424 | 
             
                  @table_index = nil
         | 
| 439 425 | 
             
                  @footnote_index = nil
         | 
| 440 426 | 
             
                  @image_index = nil
         | 
| 441 | 
            -
             | 
| 442 | 
            -
             | 
| 443 | 
            -
             | 
| 444 | 
            -
                  @param = param
         | 
| 427 | 
            +
                  @numberless_image_index = nil
         | 
| 428 | 
            +
                  @indepimage_index = nil
         | 
| 429 | 
            +
                  @headline_index = nil
         | 
| 445 430 | 
             
                end
         | 
| 446 431 |  | 
| 447 432 | 
             
                def env
         | 
| @@ -482,11 +467,11 @@ module ReVIEW | |
| 482 467 | 
             
                      end
         | 
| 483 468 | 
             
                    }
         | 
| 484 469 | 
             
                  }
         | 
| 485 | 
            -
                  if  | 
| 470 | 
            +
                  if ReVIEW.book.param["inencoding"] =~ /^EUC$/
         | 
| 486 471 | 
             
                    @title = NKF.nkf("-E -w", @title)
         | 
| 487 | 
            -
                  elsif  | 
| 472 | 
            +
                  elsif ReVIEW.book.param["inencoding"] =~ /^SJIS$/
         | 
| 488 473 | 
             
                    @title = NKF.nkf("-S -w", @title)
         | 
| 489 | 
            -
                  elsif  | 
| 474 | 
            +
                  elsif ReVIEW.book.param["inencoding"] =~ /^JIS$/
         | 
| 490 475 | 
             
                    @title = NKF.nkf("-J -w", @title)
         | 
| 491 476 | 
             
                  else
         | 
| 492 477 | 
             
                    @title = NKF.nkf("-w", @title)
         | 
| @@ -507,11 +492,11 @@ module ReVIEW | |
| 507 492 | 
             
                end
         | 
| 508 493 |  | 
| 509 494 | 
             
                def content
         | 
| 510 | 
            -
                  if  | 
| 495 | 
            +
                  if ReVIEW.book.param["inencoding"] =~ /^EUC$/i
         | 
| 511 496 | 
             
                    @content = NKF.nkf("-E -w", File.read(path()))
         | 
| 512 | 
            -
                  elsif  | 
| 497 | 
            +
                  elsif ReVIEW.book.param["inencoding"] =~ /^SJIS$/i
         | 
| 513 498 | 
             
                    @content = NKF.nkf("-S -w", File.read(path()))
         | 
| 514 | 
            -
                  elsif  | 
| 499 | 
            +
                  elsif ReVIEW.book.param["inencoding"] =~ /^JIS$/i
         | 
| 515 500 | 
             
                    @content = NKF.nkf("-J -w", File.read(path()))
         | 
| 516 501 | 
             
                  else
         | 
| 517 502 | 
             
                    @content = NKF.nkf("-w", File.read(path())) # auto detect
         | 
| @@ -529,7 +514,6 @@ module ReVIEW | |
| 529 514 |  | 
| 530 515 | 
             
                def list_index
         | 
| 531 516 | 
             
                  @list_index ||= ListIndex.parse(lines())
         | 
| 532 | 
            -
                  @list_index.setParameter(@param)
         | 
| 533 517 | 
             
                  @list_index
         | 
| 534 518 | 
             
                end
         | 
| 535 519 |  | 
| @@ -539,7 +523,6 @@ module ReVIEW | |
| 539 523 |  | 
| 540 524 | 
             
                def table_index
         | 
| 541 525 | 
             
                  @table_index ||= TableIndex.parse(lines())
         | 
| 542 | 
            -
                  @table_index.setParameter(@param)
         | 
| 543 526 | 
             
                  @table_index
         | 
| 544 527 | 
             
                end
         | 
| 545 528 |  | 
| @@ -549,22 +532,36 @@ module ReVIEW | |
| 549 532 |  | 
| 550 533 | 
             
                def footnote_index
         | 
| 551 534 | 
             
                  @footnote_index ||= FootnoteIndex.parse(lines())
         | 
| 552 | 
            -
                  @footnote_index.setParameter(@param)
         | 
| 553 535 | 
             
                  @footnote_index
         | 
| 554 536 | 
             
                end
         | 
| 555 537 |  | 
| 556 538 | 
             
                def image(id)
         | 
| 557 | 
            -
                  image_index()[id]
         | 
| 539 | 
            +
                  return image_index()[id] if image_index().has_key?(id)
         | 
| 540 | 
            +
                  return numberless_image_index()[id] if numberless_image_index().has_key?(id)
         | 
| 541 | 
            +
                  indepimage_index()[id]
         | 
| 542 | 
            +
                end
         | 
| 543 | 
            +
             | 
| 544 | 
            +
                def numberless_image_index
         | 
| 545 | 
            +
                  @numberless_image_index ||=
         | 
| 546 | 
            +
                    NumberlessImageIndex.parse(lines(), id(),
         | 
| 547 | 
            +
                                               "#{book.basedir}#{@book.image_dir}",
         | 
| 548 | 
            +
                                               @book.image_types)
         | 
| 558 549 | 
             
                end
         | 
| 559 550 |  | 
| 560 551 | 
             
                def image_index
         | 
| 561 552 | 
             
                  @image_index ||= ImageIndex.parse(lines(), id(),
         | 
| 562 553 | 
             
                                                    "#{book.basedir}#{@book.image_dir}",
         | 
| 563 554 | 
             
                                                    @book.image_types)
         | 
| 564 | 
            -
                  @image_index.setParameter(@param)
         | 
| 565 555 | 
             
                  @image_index
         | 
| 566 556 | 
             
                end
         | 
| 567 557 |  | 
| 558 | 
            +
                def indepimage_index
         | 
| 559 | 
            +
                  @indepimage_index ||=
         | 
| 560 | 
            +
                    IndepImageIndex.parse(lines(), id(),
         | 
| 561 | 
            +
                                               "#{book.basedir}#{@book.image_dir}",
         | 
| 562 | 
            +
                                               @book.image_types)
         | 
| 563 | 
            +
                end
         | 
| 564 | 
            +
             | 
| 568 565 | 
             
                def bibpaper(id)
         | 
| 569 566 | 
             
                  bibpaper_index()[id]
         | 
| 570 567 | 
             
                end
         | 
| @@ -572,9 +569,19 @@ module ReVIEW | |
| 572 569 | 
             
                def bibpaper_index
         | 
| 573 570 | 
             
                  raise FileNotFound, "no such bib file: #{@book.bib_file}" unless @book.bib_exist?
         | 
| 574 571 | 
             
                  @bibpaper_index ||= BibpaperIndex.parse(@book.read_bib.lines.to_a)
         | 
| 575 | 
            -
                  @bibpaper_index.setParameter(@param)
         | 
| 576 572 | 
             
                  @bibpaper_index
         | 
| 577 573 | 
             
                end
         | 
| 578 | 
            -
              end
         | 
| 579 574 |  | 
| 575 | 
            +
                def headline(caption)
         | 
| 576 | 
            +
                  headline_index()[caption]
         | 
| 577 | 
            +
                end
         | 
| 578 | 
            +
             | 
| 579 | 
            +
                def headline_index
         | 
| 580 | 
            +
                  @headline_index ||= HeadlineIndex.parse(lines(), self)
         | 
| 581 | 
            +
                end
         | 
| 582 | 
            +
             | 
| 583 | 
            +
                def on_CHAPS?
         | 
| 584 | 
            +
                  @book.read_CHAPS().lines.map(&:strip).include?(id() + @book.ext())
         | 
| 585 | 
            +
                end
         | 
| 586 | 
            +
              end
         | 
| 580 587 | 
             
            end
         |