review 3.0.0.preview3 → 3.0.0.preview4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/NEWS.ja.md +26 -0
  3. data/NEWS.md +26 -0
  4. data/bin/review +2 -0
  5. data/bin/review-update +19 -0
  6. data/doc/format.ja.md +11 -0
  7. data/doc/format.md +11 -1
  8. data/doc/format_idg.ja.md +2 -4
  9. data/lib/review/book/chapter.rb +1 -0
  10. data/lib/review/book/compilable.rb +9 -0
  11. data/lib/review/book/index.rb +7 -1
  12. data/lib/review/builder.rb +29 -3
  13. data/lib/review/compiler.rb +2 -1
  14. data/lib/review/htmlbuilder.rb +40 -28
  15. data/lib/review/i18n.rb +8 -0
  16. data/lib/review/i18n.yml +22 -1
  17. data/lib/review/idgxmlbuilder.rb +42 -36
  18. data/lib/review/init.rb +2 -2
  19. data/lib/review/latexbuilder.rb +27 -1
  20. data/lib/review/makerhelper.rb +2 -1
  21. data/lib/review/plaintextbuilder.rb +27 -41
  22. data/lib/review/rstbuilder.rb +9 -1
  23. data/lib/review/topbuilder.rb +9 -1
  24. data/lib/review/update.rb +527 -0
  25. data/lib/review/version.rb +1 -1
  26. data/review.gemspec +1 -1
  27. data/samples/sample-book/README.md +1 -1
  28. data/samples/sample-book/src/Rakefile +2 -112
  29. data/samples/sample-book/src/config.yml +3 -1
  30. data/samples/sample-book/src/lib/tasks/review.rake +113 -0
  31. data/samples/sample-book/src/lib/tasks/z01_copy_sty.rake +17 -0
  32. data/samples/sample-book/src/sty/reviewmacro.sty +15 -1
  33. data/samples/syntax-book/Rakefile +2 -87
  34. data/samples/syntax-book/ch02.re +6 -1
  35. data/samples/syntax-book/config.yml +7 -4
  36. data/samples/syntax-book/images/cover-b5.ai +5735 -15
  37. data/samples/syntax-book/lib/tasks/review.rake +113 -0
  38. data/samples/syntax-book/lib/tasks/z01_copy_sty.rake +17 -0
  39. data/samples/syntax-book/sty/reviewmacro.sty +11 -35
  40. data/templates/latex/config.erb +1 -0
  41. data/templates/latex/review-jlreq/review-base.sty +4 -0
  42. data/templates/latex/review-jlreq/review-jlreq.cls +56 -2
  43. data/templates/latex/review-jlreq/review-style.sty +0 -6
  44. data/templates/latex/review-jsbook/review-base.sty +5 -0
  45. data/test/assets/test_template.tex +2 -1
  46. data/test/assets/test_template_backmatter.tex +2 -1
  47. data/test/test_htmlbuilder.rb +39 -1
  48. data/test/test_idgxmlbuilder.rb +24 -0
  49. data/test/test_latexbuilder.rb +39 -0
  50. data/test/test_pdfmaker_cmd.rb +1 -1
  51. data/test/test_plaintextbuilder.rb +19 -0
  52. data/test/test_topbuilder.rb +21 -0
  53. data/test/test_update.rb +450 -0
  54. metadata +12 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 066e6b67087079a39e24dc5a730b18bb090c1fa92e6d2e5a125ec1c8fc58694a
4
- data.tar.gz: 5043bb66d9a605c1edd817f6babff7121de11dd6c1e68d8ab102be77a72a361e
3
+ metadata.gz: a903b095f340bf40a4e98b60b691541b9ce7ba19a178db25b88463d9125144ca
4
+ data.tar.gz: 18f15f4b01e4deb47acbc22538e7d894d84338215f207da3efc22f21621d4ca8
5
5
  SHA512:
6
- metadata.gz: dc585bb29ed7a24ebc02083d3fb98c2e62dd1c13774a41217ed155aa132c551940b583fddccf0f2c5d8619e9d6fffa667e79239df0eeed15f9a871c8a388408c
7
- data.tar.gz: 426205db45b5dbbc557c4c54a1f3b54fda75da331ffb12b7566cdd17a4ef66feb69857c8f0841839743a24f8df89b7ba15a1e9a5d2d46fa3b1931a88c2fd0a38
6
+ metadata.gz: 71f9400d75229765b867201152a2bcb7a48d9ce208da28f83adcac2f5f322a37ee0f3efa338b0a012e377c84d75d5c2afc6e9d25ad04306b0a27da7cbea0d75d
7
+ data.tar.gz: e3e8e3ef0d54aadff4c02206791e2f1c2477c05ec857a7b8ef5cac53d5922a9da99786fa5daf1a00ab7afbdb1a0c5d62ccec0622ffab92201655ad8ffd51c650
data/NEWS.ja.md CHANGED
@@ -1,3 +1,29 @@
1
+ # Version 3.0.0 preview 4
2
+ ## 新機能
3
+ * 旧バージョンのプロジェクトを新しいバージョンに合わせたものに更新する `review-update` コマンドを導入しました ([#1144])
4
+ * 式を表す `//texequation` に ID の指定による採番およびキャプションを付けられるようにし、`@<eq>` 命令でその参照もできるようにしました ([#1167])
5
+
6
+ ## 非互換の変更
7
+ * IDGXMLBuilder、PlaintextBuilder、TextBuilder において `@<chapref>` の展開結果を独自に作成していたのを止め、ほかのビルダと同様に `chapter_quote` のロケール文字列を使うようにしました ([#1160])
8
+
9
+ ## バグ修正
10
+ * samples フォルダ内のサンプル集は preview3 でそのままでは PDF を生成できませんでしたが、`rake pdf` だけで動作するように修正しました ([#1156])
11
+
12
+ ## 機能強化
13
+ * PDFMaker: review-jlreq.cls クラスファイルでも hiddenfolio パラメータを利用できるようにしました ([#1147])
14
+ * EPUBMaker/WEBMaker: imgmath 機能を有効にしたときに、各 `//texequation` に対してフォントサイズを明示して渡すようにしました ([#1146])
15
+
16
+ ## ドキュメント
17
+
18
+ ## コントリビューターのみなさん
19
+
20
+ [#1144]: https://github.com/kmuto/review/issues/1144
21
+ [#1146]: https://github.com/kmuto/review/issues/1146
22
+ [#1147]: https://github.com/kmuto/review/issues/1147
23
+ [#1156]: https://github.com/kmuto/review/issues/1156
24
+ [#1160]: https://github.com/kmuto/review/issues/1160
25
+ [#1167]: https://github.com/kmuto/review/issues/1167
26
+
1
27
  # Version 3.0.0 preview 3
2
28
  ## 新機能
3
29
  * PDFMaker: これまでの jsbook.cls クラスファイルをそのまま使用する方法に代わり、紙・電子双方の書籍制作に適するよう拡張した review-jsbook.cls (jsbook.cls 基盤、デフォルト)、および review-jlreq.cls (jlreq.cls 基盤) を導入しました ([#1032],[#1117])
data/NEWS.md CHANGED
@@ -1,3 +1,29 @@
1
+ # Version 3.0.0 preview 4
2
+ ## New Features
3
+ * new command `review-update` is added, which updates the setting of the project files to the new version ([#1144])
4
+ * `texequation` representing an expression can now be numbered and captioned. To reference this you can use the `@<eq>` operator ([#1167])
5
+
6
+ ## Breaking Changes
7
+ * In IDGXMLBuilder, PlaintextBuilder, and TextBuilder, the expansion result of `@<chapref>` is no longer created in a unique way. Like other builders, it uses the `chapter_quote` locale string ([#1160])
8
+
9
+ ## Bug Fixes
10
+ * samples collection could not generate PDF in preview 3. Now it works with `rake pdf` ([#1156])
11
+
12
+ ## Enhancements
13
+ * PDFMaker: support hiddenfolio parameter with review-jlreq.cls ([#1147])
14
+ * EPUBMaker/WEBMaker: when imgmath function is enabled, font size is passed to each `//texequation` ([#1146])
15
+
16
+ ## Docs
17
+
18
+ ## Contributors
19
+
20
+ [#1144]: https://github.com/kmuto/review/issues/1144
21
+ [#1146]: https://github.com/kmuto/review/issues/1146
22
+ [#1147]: https://github.com/kmuto/review/issues/1147
23
+ [#1156]: https://github.com/kmuto/review/issues/1156
24
+ [#1160]: https://github.com/kmuto/review/issues/1160
25
+ [#1167]: https://github.com/kmuto/review/issues/1167
26
+
1
27
  # Version 3.0.0 preview 3
2
28
  ## New Features
3
29
  * PDFMaker: instead of using jsbook.cls as it is, review-jsbook.cls (based on jsbook.cls, default) and review-jlreq.cls (based on jlreq.cls) are introduced. These supports the creation both paper and electronic PDF books. ([#1032],[#1117])
data/bin/review CHANGED
@@ -25,10 +25,12 @@ usage: review <command> [<args>]
25
25
 
26
26
  Re:VIEW commands are:
27
27
  init : generate Re:VIEW project directory.
28
+ update : update Re:VIEW project to newest environment.
28
29
  preproc : preprocess Re:VIEW document file.
29
30
  compile : convert Re:VIEW document file.
30
31
  epubmaker : build EPUB.
31
32
  webmaker : build web pages.
33
+ epub2html : convert EPUB to single HTML.
32
34
  pdfmaker : build PDF with LaTeX.
33
35
  textmaker : build text files.
34
36
  vol : show volume of Re:VIEW document.
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Copyright (c) 2018 Kenshi Muto
4
+ #
5
+ # This program is free software.
6
+ # You can distribute or modify this program under the terms of
7
+ # the GNU LGPL, Lesser General Public License version 2.1.
8
+ # For details of the GNU LGPL, see the file "COPYING".
9
+
10
+ require 'pathname'
11
+
12
+ bindir = Pathname.new(__FILE__).realpath.dirname
13
+ $LOAD_PATH.unshift((bindir + '../lib').realpath)
14
+
15
+ require 'review/update'
16
+
17
+ if File.basename($PROGRAM_NAME) == File.basename(__FILE__)
18
+ ReVIEW::Update.execute(*ARGV)
19
+ end
@@ -573,6 +573,16 @@ LaTeX の式を挿入するには、`//texequation{ 〜 //}` を使います。
573
573
  //}
574
574
  ```
575
575
 
576
+ 「式1.1」のように連番を付けたいときには、識別子とキャプションを指定します。
577
+
578
+ ```
579
+ //texequationl[emc][質量とエネルギーの等価性]{
580
+ \sum_{i=1}^nf_n(x)
581
+ //}
582
+ ```
583
+
584
+ 参照するにはインライン命令 `@<eq>` を使います(たとえば `@<eq>{emc}`)。
585
+
576
586
  インライン命令では `@<m>{〜}` を使います。インライン命令の式中に「}」を含む場合、`\}` とエスケープする必要があることに注意してください(`{` はエスケープ不要)。「インライン命令のフェンス記法」も参照してください。
577
587
 
578
588
  LaTeX の数式が正常に整形されるかどうかは処理系に依存します。LaTeX を利用する PDFMaker では問題なく利用できます。
@@ -908,6 +918,7 @@ LaTeXビルダを使用している場合:
908
918
  * `@<list>{識別子}` : リストを参照します。
909
919
  * `@<img>{識別子}` : 図を参照します。
910
920
  * `@<table>{識別子}` : 表を参照します。
921
+ * `@<eq>{識別子}` : 式を参照します。
911
922
  * `@<hd>{ラベルまたは見出し}` : 節や項を参照します。
912
923
  * `@<column>{ラベルまたは見出し}` : コラムを参照します。
913
924
 
@@ -617,6 +617,16 @@ Usage:
617
617
  //}
618
618
  ```
619
619
 
620
+ If you'd like to assign a number like 'Equation 1.1`, specify the identifier and caption.
621
+
622
+ ```
623
+ //texequationl[emc][The Equivalence of Mass and Energy]{
624
+ \sum_{i=1}^nf_n(x)
625
+ //}
626
+ ```
627
+
628
+ To reference this, use the inline command `@<eq>`.
629
+
620
630
  There is `@<m>{ ... }` for inline (see "Fence notation for inline commands" section also).
621
631
 
622
632
  Whether LaTeX formula is correctly displayed or not depends on the processing system. PDFMaker uses LaTeX internally, so there is no problem.
@@ -961,6 +971,7 @@ this is a special line.
961
971
  @<list>{program}:: `List 1.5`
962
972
  @<img>{unixhistory}:: `Figure 1.3`
963
973
  @<table>{ascii}:: `Table 1.2`
974
+ @<eq>{emc2}:: `Equation 1.1`
964
975
  @<hd>{advanced|Other Topics}:: `7-3. Other Topics`
965
976
  @<column>{another-column}:: reference of column.
966
977
  ```
@@ -1100,4 +1111,3 @@ Sample layout file(layout.html.erb):
1100
1111
  </body>
1101
1112
  </html>
1102
1113
  ```
1103
-
@@ -4,7 +4,7 @@ Re:VIEW フォーマットから、Adobe 社の DTP ソフトウェア「InDesig
4
4
 
5
5
  基本のフォーマットのほかにいくつかの拡張命令を追加しています。
6
6
 
7
- このドキュメントは、Re:VIEW 2.0 に基づいています。
7
+ このドキュメントは、Re:VIEW 3.0 に基づいています。
8
8
 
9
9
  ## 追加したブロック
10
10
  これらのブロックは基本的に特定の書籍向けのものであり、将来廃棄する可能性があります。
@@ -27,8 +27,6 @@ Re:VIEW フォーマットから、Adobe 社の DTP ソフトウェア「InDesig
27
27
 
28
28
  実際にどのような相互参照関係にするかは、処理プログラムに依存します。想定の用途では、章や節の番号およびタイトルを記憶し、labelref の出現箇所に `「節(あるいは章)番号 タイトル」` という文字列を配置します。
29
29
 
30
- `@<chapref>` の展開形式を、`--chapref="前装飾文字列,中間装飾文字列,後装飾文字列"` でコンパイル実行時に指定できます。デフォルトは`",「,」"`です。たとえば "`第2章「コンパイラ」`" のように普通は展開されます。`"「, ,」"`と指定すると、"`「第2章 コンパイラ」`" に展開されます。
31
-
32
30
  ## 丸数字
33
31
 
34
32
  `@<maru>{数値}` で丸数字を出力します。UTF-8 の丸数字を直接使うほうが適切です。
@@ -93,7 +91,7 @@ Re:VIEW フォーマットから、Adobe 社の DTP ソフトウェア「InDesig
93
91
 
94
92
  ## 表セル幅の指定
95
93
 
96
- `//tsize[1列目の幅,2列目の幅,...]` で、続く `//table` の表の列幅を指定します(単位mm)。これを利用するときには、`review compile --target=idgxml` を実行する際、オプション`--table=表幅` を付ける必要があります(表幅の単位は mm)。列幅指定の個数が実際の列数に満たない場合、残りの列は均等分割したものとなります。列幅の合計が表幅を超えると警告が表示されます。
94
+ `//tsize[|latex|1列目の幅,2列目の幅,...]` で、続く `//table` の表の列幅を指定します(単位mm)。これを利用するときには、`review compile --target=idgxml` を実行する際、オプション`--table=表幅` を付ける必要があります(表幅の単位は mm)。列幅指定の個数が実際の列数に満たない場合、残りの列は均等分割したものとなります。列幅の合計が表幅を超えると警告が表示されます。
97
95
 
98
96
  ## 表セルの結合やスタイル指定
99
97
  `@<dtp>{table 表オプション}` を各セルに入れることで、そのセルの挙動を制御します。
@@ -40,6 +40,7 @@ module ReVIEW
40
40
  end
41
41
  @list_index = nil
42
42
  @table_index = nil
43
+ @equation_index = nil
43
44
  @footnote_index = nil
44
45
  @image_index = nil
45
46
  @icon_index = nil
@@ -82,6 +82,15 @@ module ReVIEW
82
82
  @table_index
83
83
  end
84
84
 
85
+ def equation(id)
86
+ equation_index[id]
87
+ end
88
+
89
+ def equation_index
90
+ @equation_index ||= EquationIndex.parse(lines)
91
+ @equation_index
92
+ end
93
+
85
94
  def footnote(id)
86
95
  footnote_index[id]
87
96
  end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2008-2017 Minero Aoki, Kenshi Muto
1
+ # Copyright (c) 2008-2018 Minero Aoki, Kenshi Muto
2
2
  # 2002-2007 Minero Aoki
3
3
  #
4
4
  # This program is free software.
@@ -128,6 +128,12 @@ module ReVIEW
128
128
  end
129
129
  end
130
130
 
131
+ class EquationIndex < Index
132
+ def self.item_type
133
+ '(texequation)'
134
+ end
135
+ end
136
+
131
137
  class FootnoteIndex < Index
132
138
  Item = Struct.new(:id, :number, :content)
133
139
 
@@ -248,13 +248,23 @@ module ReVIEW
248
248
  end
249
249
 
250
250
  def inline_list(id)
251
- "#{I18n.t('list')}#{@chapter.list(id).number}"
251
+ chapter, id = extract_chapter_id(id)
252
+ if get_chap(chapter)
253
+ %Q(#{I18n.t('list')}#{I18n.t('format_number', [get_chap(chapter), chapter.list(id).number])})
254
+ else
255
+ %Q(#{I18n.t('list')}#{I18n.t('format_number_without_chapter', [chapter.list(id).number])})
256
+ end
252
257
  rescue KeyError
253
258
  error "unknown list: #{id}"
254
259
  end
255
260
 
256
261
  def inline_img(id)
257
- "#{I18n.t('image')}#{@chapter.image(id).number}"
262
+ chapter, id = extract_chapter_id(id)
263
+ if get_chap(chapter)
264
+ %Q(#{I18n.t('image')}#{I18n.t('format_number', [get_chap(chapter), chapter.image(id).number])})
265
+ else
266
+ %Q(#{I18n.t('image')}#{I18n.t('format_number_without_chapter', [chapter.image(id).number])})
267
+ end
258
268
  rescue KeyError
259
269
  error "unknown image: #{id}"
260
270
  end
@@ -270,11 +280,27 @@ module ReVIEW
270
280
  end
271
281
 
272
282
  def inline_table(id)
273
- "#{I18n.t('table')}#{@chapter.table(id).number}"
283
+ chapter, id = extract_chapter_id(id)
284
+ if get_chap(chapter)
285
+ %Q(#{I18n.t('table')}#{I18n.t('format_number', [get_chap(chapter), chapter.table(id).number])})
286
+ else
287
+ %Q(#{I18n.t('table')}#{I18n.t('format_number_without_chapter', [chapter.table(id).number])})
288
+ end
274
289
  rescue KeyError
275
290
  error "unknown table: #{id}"
276
291
  end
277
292
 
293
+ def inline_eq(id)
294
+ chapter, id = extract_chapter_id(id)
295
+ if get_chap(chapter)
296
+ %Q(#{I18n.t('equation')}#{I18n.t('format_number', [get_chap(chapter), chapter.equation(id).number])})
297
+ else
298
+ %Q(#{I18n.t('equation')}#{I18n.t('format_number_without_chapter', [chapter.equation(id).number])})
299
+ end
300
+ rescue KeyError
301
+ error "unknown equation: #{id}"
302
+ end
303
+
278
304
  def inline_fn(id)
279
305
  @chapter.footnote(id).content
280
306
  rescue KeyError
@@ -141,7 +141,7 @@ module ReVIEW
141
141
  defblock :bibpaper, 2..3, true
142
142
  defblock :doorquote, 1
143
143
  defblock :talk, 0
144
- defblock :texequation, 0
144
+ defblock :texequation, 0..2
145
145
  defblock :graph, 1..3
146
146
  defblock :indepimage, 1..3, true
147
147
  defblock :numberlessimage, 1..3, true
@@ -184,6 +184,7 @@ module ReVIEW
184
184
  definline :icon
185
185
  definline :list
186
186
  definline :table
187
+ definline :eq
187
188
  definline :fn
188
189
  definline :kw
189
190
  definline :ruby
@@ -539,7 +539,28 @@ module ReVIEW
539
539
  puts '</div>'
540
540
  end
541
541
 
542
- def texequation(lines)
542
+ def texequation(lines, id = nil, caption = '')
543
+ if id
544
+ texequation_header id, caption
545
+ end
546
+
547
+ texequation_body(lines)
548
+
549
+ if id
550
+ puts '</div>'
551
+ end
552
+ end
553
+
554
+ def texequation_header(id, caption)
555
+ puts %Q(<div id="#{normalize_id(id)}" class="caption-equation">)
556
+ if get_chap
557
+ puts %Q(<p class="caption">#{I18n.t('equation')}#{I18n.t('format_number_header', [get_chap, @chapter.equation(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)}</p>)
558
+ else
559
+ puts %Q(<p class="caption">#{I18n.t('equation')}#{I18n.t('format_number_header_without_chapter', [@chapter.equation(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)}</p>)
560
+ end
561
+ end
562
+
563
+ def texequation_body(lines)
543
564
  puts %Q(<div class="equation">)
544
565
  if @book.config['mathml']
545
566
  require 'math_ml'
@@ -547,7 +568,9 @@ module ReVIEW
547
568
  p = MathML::LaTeX::Parser.new(symbol: MathML::Symbol::CharacterReference)
548
569
  puts p.parse(unescape(lines.join("\n")), true)
549
570
  elsif @book.config['imgmath']
550
- math_str = "\\begin{equation*}\n" + unescape(lines.join("\n")) + "\n\\end{equation*}\n"
571
+ fontsize = @book.config['imgmath_options']['fontsize'].to_f
572
+ lineheight = @book.config['imgmath_options']['lineheight'].to_f
573
+ math_str = "\\begin{equation*}\n\\fontsize{#{fontsize}}{#{lineheight}}\\selectfont\n#{unescape(lines.join("\n"))}\n\\end{equation*}\n"
551
574
  key = Digest::SHA256.hexdigest(math_str)
552
575
  math_dir = File.join(@book.config['imagedir'], '_review_math')
553
576
  Dir.mkdir(math_dir) unless Dir.exist?(math_dir)
@@ -1006,54 +1029,43 @@ module ReVIEW
1006
1029
  end
1007
1030
 
1008
1031
  def inline_list(id)
1032
+ str = super(id)
1009
1033
  chapter, id = extract_chapter_id(id)
1010
- str =
1011
- if get_chap(chapter)
1012
- "#{I18n.t('list')}#{I18n.t('format_number', [get_chap(chapter), chapter.list(id).number])}"
1013
- else
1014
- "#{I18n.t('list')}#{I18n.t('format_number_without_chapter', [chapter.list(id).number])}"
1015
- end
1016
1034
  if @book.config['chapterlink']
1017
- %Q(<span class="listref"><a href="./#{chapter.id}#{extname}##{id}">#{str}</a></span>)
1035
+ %Q(<span class="listref"><a href="./#{chapter.id}#{extname}##{normalize_id(id)}">#{str}</a></span>)
1018
1036
  else
1019
1037
  %Q(<span class="listref">#{str}</span>)
1020
1038
  end
1021
- rescue KeyError
1022
- error "unknown list: #{id}"
1023
1039
  end
1024
1040
 
1025
1041
  def inline_table(id)
1042
+ str = super(id)
1026
1043
  chapter, id = extract_chapter_id(id)
1027
- str =
1028
- if get_chap(chapter)
1029
- "#{I18n.t('table')}#{I18n.t('format_number', [get_chap(chapter), chapter.table(id).number])}"
1030
- else
1031
- "#{I18n.t('table')}#{I18n.t('format_number_without_chapter', [chapter.table(id).number])}"
1032
- end
1033
1044
  if @book.config['chapterlink']
1034
- %Q(<span class="tableref"><a href="./#{chapter.id}#{extname}##{id}">#{str}</a></span>)
1045
+ %Q(<span class="tableref"><a href="./#{chapter.id}#{extname}##{normalize_id(id)}">#{str}</a></span>)
1035
1046
  else
1036
1047
  %Q(<span class="tableref">#{str}</span>)
1037
1048
  end
1038
- rescue KeyError
1039
- error "unknown table: #{id}"
1040
1049
  end
1041
1050
 
1042
1051
  def inline_img(id)
1052
+ str = super(id)
1043
1053
  chapter, id = extract_chapter_id(id)
1044
- str =
1045
- if get_chap(chapter)
1046
- "#{I18n.t('image')}#{I18n.t('format_number', [get_chap(chapter), chapter.image(id).number])}"
1047
- else
1048
- "#{I18n.t('image')}#{I18n.t('format_number_without_chapter', [chapter.image(id).number])}"
1049
- end
1050
1054
  if @book.config['chapterlink']
1051
1055
  %Q(<span class="imgref"><a href="./#{chapter.id}#{extname}##{normalize_id(id)}">#{str}</a></span>)
1052
1056
  else
1053
1057
  %Q(<span class="imgref">#{str}</span>)
1054
1058
  end
1055
- rescue KeyError
1056
- error "unknown image: #{id}"
1059
+ end
1060
+
1061
+ def inline_eq(id)
1062
+ str = super(id)
1063
+ chapter, id = extract_chapter_id(id)
1064
+ if @book.config['chapterlink']
1065
+ %Q(<span class="eqref"><a href="./#{chapter.id}#{extname}##{normalize_id(id)}">#{str}</a></span>)
1066
+ else
1067
+ %Q(<span class="eqref">#{str}</span>)
1068
+ end
1057
1069
  end
1058
1070
 
1059
1071
  def inline_asis(str, tag)
@@ -59,6 +59,10 @@ module ReVIEW
59
59
  @i18n.get(word, locale)
60
60
  end
61
61
 
62
+ def self.set(word, str)
63
+ @i18n.set(word, str)
64
+ end
65
+
62
66
  attr_accessor :locale
63
67
 
64
68
  def initialize(locale = nil)
@@ -112,6 +116,10 @@ module ReVIEW
112
116
  @store[locale][word]
113
117
  end
114
118
 
119
+ def set(word, str)
120
+ @store[@locale][word] = str
121
+ end
122
+
115
123
  def t(str, args = nil)
116
124
  frmt = @store[@locale][str].dup
117
125
  frmt.gsub!('%%', '##')
@@ -2,6 +2,7 @@ ja:
2
2
  image: 図
3
3
  table: 表
4
4
  list: リスト
5
+ equation: 式
5
6
  column: "コラム「%s」"
6
7
  columnname: "コラム"
7
8
  column_head: "■コラム"
@@ -62,11 +63,30 @@ ja:
62
63
  advtitle: "広告"
63
64
  profiletitle: "著者紹介"
64
65
  backcovertitle: "裏表紙"
66
+ "!! No *.yml file with 'review_version' was found. Aborted. !!": "!! 'review_version' を持つ *.yml ファイルが見つかりませんでした。中止します。 !!"
67
+ "!! %s file(s) is obsoleted. Run 'review-catalog-converter' to convert to 'catalog.yml' and remove old files. Aborted. !!": "!! %s ファイルはもう使われません。'review-catalog-converter' を実行して 'catalog.yml' に変換し、古いファイルは削除してください。中止します。 !!"
68
+ "** review-update updates your project to %s **": "** review-update はプロジェクトを %s に更新します **"
69
+ "** There is custom layouts/layout.tex.erb file. Updating may break to make PDF until you fix layout.tex.erb. Do you really proceed to update? **": "** 固有の layouts/layout.tex.erb ファイルが存在します。プロジェクトを更新した後、このファイルを修正しないと、PDF の生成に問題が生じるかもしれません。本当に進めますか? **"
70
+ "** There is review-ext.rb file. You need to update it by yourself. **": "** review-ext.rb ファイルが存在します。このファイルはご自身で更新してください。 **"
71
+ "%s: Update '%s' to '%s'?": "%s: '%s' を '%s' に更新しますか?"
72
+ "%s will be overridden with Re:VIEW version (%s). Do you really proceed?": "%s は Re:VIEW バージョンのもの (%s) で置き換えられます。本当に進めますか?"
73
+ "%s: 'chapter_quote' now takes 2 values. Update '%s' to '%s'?": "%s: 'chapter_quote' は2つの値を取るようになりました。'%s' を '%s' に更新しますか?"
74
+ "%s: !! 'texdocumentclass' uses new class '%s' already, but you specified '%s'. This tool can't handle such migration. Ignored. !!": "%s: !! 'texdocumentclass' は新クラス '%s' をすでに使うようになっていますが、'%s' が指定されました。このツールはそのような移行には対応していません。無視します。 !!"
75
+ "%s: 'texdocumentclass' uses the old class '%s'. By default it is migrated to '%s', but you specify '%s'. Do you really migrate 'texdocumentclass' to '%s'?": "%s: 'texdocumentclass' は旧クラス '%s' を使っています。デフォルトの移行先は '%s' ですが、'%s' が指定されました。本当に 'texdocumentclass' を '%s' に移行しますか?"
76
+ "%s: 'texdocumentclass' uses the old class '%s'. By default it is migrated to '%s'. Do you really migrate 'texdocumentclass' to '%s'?": "%s: 'texdocumentclass' は旧クラス '%s' を使っています。デフォルトの移行先は '%s' です。本当に 'texdocumentclass' を '%s' に移行しますか?"
77
+ "%s: previous 'texdocumentclass' option '%s' is safely replaced with '%s'.": "%s: 'texdocumentclass' の古いオプション '%s' は '%s' に安全に置き換えられました。"
78
+ "%s: previous 'texdocumentclass' option '%s' couldn't be converted fully. '%s' is suggested. Do you really proceed?": "%s: 'texdocumentclass' の古いオプション '%s' は完全には置き換えできませんでした。'%s' を提案します。本当に進めますか?"
79
+ "%s: ** 'texdocumentclass' specifies '%s'. Because this is unknown class for this tool, you need to update it by yourself if it won't work. **": "%s: ** 'texdocumentclass' はクラス '%s' を指定しています。このツールには未知のクラスなので、もし動作しないようであればご自身で更新する必要があります。 **"
80
+ "%s: ** '%s' is unknown class. Ignored. **": "%s: ** '%s' は未知のクラスです。無視します。 **"
81
+ "%s: 'texcommand' has options ('%s'). Move it to 'texoptions'?": "%s: 'texcommand' にオプションがあります ('%s')。'texoptions' に移動しますか?"
82
+ "%s: 'dvicommand' has options ('%s'). Move it to 'dvioptions'?": "%s: 'dvicommand' にオプションがあります ('%s')。'dvioptions' に移動しますか?"
83
+ "Finished.": "完了しました。"
65
84
 
66
85
  en:
67
86
  image: "Figure "
68
87
  table: "Table "
69
88
  list: "List "
89
+ equation: "Equation "
70
90
  column: "Column %s"
71
91
  columnname: "Column"
72
92
  column_head: "Column"
@@ -131,7 +151,8 @@ en:
131
151
  zh-TW:
132
152
  image: 圖
133
153
  table: 表
134
- list: List
154
+ list: "List "
155
+ equation: "Equation "
135
156
  column: "Column %s"
136
157
  columnname: "Column"
137
158
  column_head: "Column"