review 1.2.0 → 1.3.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.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +36 -0
  3. data/.rubocop.yml +1 -0
  4. data/ChangeLog +102 -0
  5. data/README.rdoc +2 -2
  6. data/bin/review-check +18 -16
  7. data/bin/review-compile +49 -42
  8. data/bin/review-epubmaker +23 -993
  9. data/bin/review-epubmaker-legacy +1024 -0
  10. data/bin/review-index +17 -15
  11. data/bin/review-init +39 -9
  12. data/bin/review-pdfmaker +124 -89
  13. data/bin/review-preproc +16 -14
  14. data/bin/review-vol +17 -15
  15. data/debian/docs +1 -1
  16. data/doc/catalog.rdoc +34 -0
  17. data/doc/format.rdoc +16 -2
  18. data/doc/libepubmaker/{config.yaml → config.yml} +63 -19
  19. data/doc/quickstart.rdoc +1 -1
  20. data/doc/{sample.yaml → sample.yml} +0 -0
  21. data/lib/epubmaker.rb +1 -1
  22. data/lib/epubmaker/content.rb +9 -1
  23. data/lib/epubmaker/epubv2.rb +59 -7
  24. data/lib/epubmaker/epubv3.rb +14 -9
  25. data/lib/epubmaker/producer.rb +68 -27
  26. data/lib/epubmaker/resource.rb +3 -1
  27. data/lib/lineinput.rb +2 -2
  28. data/lib/review/book/base.rb +125 -24
  29. data/lib/review/book/chapter.rb +42 -0
  30. data/lib/review/book/compilable.rb +23 -4
  31. data/lib/review/book/image_finder.rb +64 -0
  32. data/lib/review/book/index.rb +64 -50
  33. data/lib/review/book/page_metric.rb +1 -1
  34. data/lib/review/builder.rb +19 -12
  35. data/lib/review/catalog.rb +47 -0
  36. data/lib/review/compiler.rb +3 -2
  37. data/lib/review/configure.rb +5 -3
  38. data/lib/review/epubmaker.rb +130 -46
  39. data/lib/review/ewbbuilder.rb +27 -31
  40. data/lib/review/extentions/string.rb +4 -4
  41. data/lib/review/htmlbuilder.rb +140 -79
  42. data/lib/review/htmllayout.rb +26 -4
  43. data/lib/review/htmlutils.rb +20 -1
  44. data/lib/review/i18n.rb +5 -2
  45. data/lib/review/{i18n.yaml → i18n.yml} +4 -2
  46. data/lib/review/idgxmlbuilder.rb +65 -39
  47. data/lib/review/latexbuilder.rb +72 -24
  48. data/lib/review/latexutils.rb +3 -1
  49. data/lib/review/makerhelper.rb +8 -2
  50. data/lib/review/preprocessor.rb +20 -20
  51. data/lib/review/review.tex.erb +4 -0
  52. data/lib/review/sec_counter.rb +9 -11
  53. data/lib/review/tocparser.rb +2 -2
  54. data/lib/review/tocprinter.rb +12 -12
  55. data/lib/review/topbuilder.rb +15 -15
  56. data/lib/review/version.rb +1 -1
  57. data/lib/uuid.rb +7 -7
  58. data/review.gemspec +2 -2
  59. data/rubocop-todo.yml +443 -0
  60. data/test/sample-book/src/config.yml +2 -2
  61. data/test/sample-book/src/{main.css → style.css} +0 -0
  62. data/test/test_book.rb +46 -48
  63. data/test/test_book_chapter.rb +25 -13
  64. data/test/test_builder.rb +3 -3
  65. data/test/test_catalog.rb +107 -0
  66. data/test/test_epubmaker.rb +6 -6
  67. data/test/test_htmlbuilder.rb +160 -39
  68. data/test/test_htmlutils.rb +22 -0
  69. data/test/test_i18n.rb +2 -2
  70. data/test/test_idgxmlbuilder.rb +33 -47
  71. data/test/test_image_finder.rb +82 -0
  72. data/test/test_inaobuilder.rb +1 -1
  73. data/test/test_latexbuilder.rb +35 -39
  74. data/test/test_lineinput.rb +2 -2
  75. data/test/test_markdownbuilder.rb +2 -2
  76. data/test/test_topbuilder.rb +39 -23
  77. metadata +23 -14
  78. data/bin/review-epubmaker-ng +0 -23
@@ -2,12 +2,34 @@
2
2
  require 'erb'
3
3
 
4
4
  class HTMLLayout
5
- def initialize(src, title, template)
6
- @body = src
7
- @title = title
5
+ include ERB::Util
6
+
7
+ def initialize(params, template)
8
+ @body = params['body']
9
+ @title = params['title']
10
+ @toc = params['toc']
11
+ @next = params['next']
12
+ @prev = params['prev']
13
+ @builder = params['builder']
8
14
  @template = template
9
15
  end
10
- attr_reader :body, :title
16
+ attr_reader :body, :title, :toc
17
+
18
+ def next_chapter
19
+ if @next.present?
20
+ "<a href='#{h @next.id}.html'>#{h @builder.compile_inline @next.title}</a>"
21
+ else
22
+ ""
23
+ end
24
+ end
25
+
26
+ def prev_chapter
27
+ if @prev.present?
28
+ "<a href='#{h @prev.id}.html'>#{h @builder.compile_inline @prev.title}</a>"
29
+ else
30
+ ""
31
+ end
32
+ end
11
33
 
12
34
  def result
13
35
  if File.exist?(@template)
@@ -23,21 +23,29 @@ module ReVIEW
23
23
  str.gsub(/[&"<>]/) {|c| t[c] }
24
24
  end
25
25
 
26
+ alias_method :escape, :escape_html
27
+
26
28
  def unescape_html(str)
27
29
  # FIXME better code
28
30
  str.gsub('&quot;', '"').gsub('&gt;', '>').gsub('&lt;', '<').gsub('&amp;', '&')
29
31
  end
30
32
 
33
+ alias_method :unescape, :unescape_html
34
+
31
35
  def strip_html(str)
32
36
  str.gsub(/<\/?[^>]*>/, "")
33
37
  end
34
38
 
39
+ def escape_comment(str)
40
+ str.gsub('-', '&#45;')
41
+ end
42
+
35
43
  def highlight(ops)
36
44
  body = ops[:body] || ''
37
45
  lexer = ops[:lexer] || ''
38
46
  format = ops[:format] || ''
39
47
 
40
- return body if ReVIEW.book.param["pygments"].nil?
48
+ return body if @book.config["pygments"].nil?
41
49
 
42
50
  begin
43
51
  require 'pygments'
@@ -57,5 +65,16 @@ module ReVIEW
57
65
  body
58
66
  end
59
67
  end
68
+
69
+ def normalize_id(id)
70
+ if id =~ /\A[a-z][a-z0-9_.-]*\Z/i
71
+ return id
72
+ elsif id =~ /\A[0-9_.-][a-z0-9_.-]*\Z/i
73
+ return "id_#{id}" # dummy prefix
74
+ else
75
+ return "id_#{CGI.escape(id.gsub("_", "__")).gsub("%", "_").gsub("+", "-")}" # escape all
76
+ end
77
+ end
60
78
  end
79
+
61
80
  end # module ReVIEW
@@ -4,7 +4,10 @@ require 'yaml'
4
4
  module ReVIEW
5
5
  class I18n
6
6
  def self.setup
7
- user_i18n = YAML.load_file(File.expand_path "locale.yaml", ENV["PWD"])
7
+ lfile = File.expand_path "locale.yml", ENV["PWD"]
8
+ # backward compatibility
9
+ lfile = File.expand_path "locale.yaml", ENV["PWD"] unless File.exist?(lfile)
10
+ user_i18n = YAML.load_file(lfile)
8
11
  I18n.i18n user_i18n["locale"], user_i18n
9
12
  rescue
10
13
  I18n.i18n "ja"
@@ -12,7 +15,7 @@ module ReVIEW
12
15
 
13
16
  def self.i18n(locale, user_i18n = {})
14
17
  locale ||= "ja"
15
- i18n_yaml_path = File.expand_path "i18n.yaml", File.dirname(__FILE__)
18
+ i18n_yaml_path = File.expand_path "i18n.yml", File.dirname(__FILE__)
16
19
  @i18n = YAML.load_file(i18n_yaml_path)[locale]
17
20
  if @i18n
18
21
  @i18n.merge!(user_i18n)
@@ -2,10 +2,11 @@ ja:
2
2
  image: 図
3
3
  table: 表
4
4
  list: リスト
5
+ column: "コラム「%s」"
5
6
  part: 第%d部
6
7
  chapter: 第%d章
7
8
  chapter_postfix: " "
8
- appendix: 付録%d
9
+ appendix: 付録%s
9
10
  numberless_image: "図:"
10
11
  format_number: "%s.%d"
11
12
  format_number_header: "%s.%d:"
@@ -25,6 +26,7 @@ en:
25
26
  image: "Figure "
26
27
  table: "Table "
27
28
  list: "List "
29
+ column: "Column %s"
28
30
  chapter: Chapter %d
29
31
  chapter_postfix: ". "
30
32
  appendix: Appendix %s
@@ -46,7 +48,7 @@ zh_TW:
46
48
  part: 第%d部份
47
49
  chapter: 第%d章
48
50
  chapter_postfix: " "
49
- appendix: 附錄%d
51
+ appendix: 附錄%s
50
52
  numberless_image: "圖:"
51
53
  format_number: "%s.%d"
52
54
  format_number_header: "%s.%d:"
@@ -66,6 +66,7 @@ module ReVIEW
66
66
  @subsection = 0
67
67
  @subsubsection = 0
68
68
  @subsubsubsection = 0
69
+ @column = 0
69
70
  @noindent = nil
70
71
  @rootelement = "doc"
71
72
  @secttags = nil
@@ -75,8 +76,14 @@ module ReVIEW
75
76
 
76
77
  print %Q(<?xml version="1.0" encoding="UTF-8"?>\n)
77
78
  print %Q(<#{@rootelement} xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/">)
78
- alias puts print unless ReVIEW.book.param["nolf"].nil?
79
- @secttags = true unless ReVIEW.book.param["structuredxml"].nil?
79
+ if @book.config["nolf"].present?
80
+ IDGXMLBuilder.class_eval do
81
+ def puts(arg)
82
+ print arg
83
+ end
84
+ end
85
+ end
86
+ @secttags = true unless @book.config["structuredxml"].nil?
80
87
  end
81
88
  private :builder_init_file
82
89
 
@@ -173,7 +180,7 @@ module ReVIEW
173
180
  end
174
181
  @section += 1
175
182
  print %Q(<sect id="sect:#{@chapter.number}.#{@section}">) unless @secttags.nil?
176
- if ReVIEW.book.param["secnolevel"] >= 2
183
+ if @book.config["secnolevel"] >= 2
177
184
  if @chapter.number.blank? or @chapter.on_POSTDEF?
178
185
  prefix = ""
179
186
  else
@@ -193,7 +200,7 @@ module ReVIEW
193
200
 
194
201
  @subsection += 1
195
202
  print %Q(<sect2 id="sect:#{@chapter.number}.#{@section}.#{@subsection}">) unless @secttags.nil?
196
- if ReVIEW.book.param["secnolevel"] >= 3
203
+ if @book.config["secnolevel"] >= 3
197
204
  if @chapter.number.blank? or @chapter.on_POSTDEF?
198
205
  prefix = ""
199
206
  else
@@ -210,8 +217,8 @@ module ReVIEW
210
217
  end
211
218
 
212
219
  @subsubsection += 1
213
- print %Q(<sect3 id="sect:#{@chapter.number}.#{@section}.#{@subsection}.#{@subsubsection}">) unless @secttags.nil?
214
- if ReVIEW.book.param["secnolevel"] >= 4
220
+ print %Q(<sect3 id="sect:#{@chapter.number}.#{@section}.#{@subsection}.#{@subsubsection}">) unless @secttags.nil?
221
+ if @book.config["secnolevel"] >= 4
215
222
  if @chapter.number.blank? or @chapter.on_POSTDEF?
216
223
  prefix = ""
217
224
  else
@@ -227,7 +234,7 @@ module ReVIEW
227
234
 
228
235
  @subsubsubsection += 1
229
236
  print %Q(<sect4 id="sect:#{@chapter.number}.#{@section}.#{@subsection}.#{@subsubsection}.#{@subsubsubsection}">) unless @secttags.nil?
230
- if ReVIEW.book.param["secnolevel"] >= 5
237
+ if @book.config["secnolevel"] >= 5
231
238
  if @chapter.number.blank? or @chapter.on_POSTDEF?
232
239
  prefix = ""
233
240
  else
@@ -239,7 +246,7 @@ module ReVIEW
239
246
  raise "caption level too deep or unsupported: #{level}"
240
247
  end
241
248
 
242
- prefix = "" if (level.to_i > ReVIEW.book.param["secnolevel"])
249
+ prefix = "" if (level.to_i > @book.config["secnolevel"])
243
250
  label = label.nil? ? "" : " id=\"#{label}\""
244
251
  toccaption = escape_html(compile_inline(caption.gsub(/@<fn>\{.+?\}/, '')).gsub(/<[^>]+>/, ''))
245
252
  puts %Q(<title#{label} aid:pstyle="h#{level}">#{prefix}#{compile_inline(caption)}</title><?dtp level="#{level}" section="#{prefix}#{toccaption}"?>)
@@ -336,14 +343,31 @@ module ReVIEW
336
343
  end
337
344
 
338
345
  def read(lines)
339
- if ReVIEW.book.param["deprecated-blocklines"].nil?
346
+ if @book.config["deprecated-blocklines"].nil?
340
347
  puts %Q[<lead>#{split_paragraph(lines).join}</lead>]
341
348
  else
342
349
  puts %Q[<p aid:pstyle="lead">#{lines.join}</p>]
343
350
  end
344
351
  end
345
352
 
346
- alias :lead read
353
+ alias_method :lead, :read
354
+
355
+ def column_label(id)
356
+ num = @chapter.column(id).number
357
+ "column-#{num}"
358
+ end
359
+ private :column_label
360
+
361
+ def inline_column(id)
362
+ if @book.config["chapterlink"]
363
+ %Q(<link href="#{column_label(id)}">#{escape_html(@chapter.column(id).caption)}</link>)
364
+ else
365
+ escape_html(@chapter.column(id).caption)
366
+ end
367
+ rescue KeyError
368
+ error "unknown column: #{id}"
369
+ nofunc_text("[UnknownColumn:#{id}]")
370
+ end
347
371
 
348
372
  def inline_list(id)
349
373
  chapter, id = extract_chapter_id(id)
@@ -366,7 +390,7 @@ module ReVIEW
366
390
  def codelines_body(lines)
367
391
  no = 1
368
392
  lines.each do |line|
369
- unless ReVIEW.book.param["listinfo"].nil?
393
+ unless @book.config["listinfo"].nil?
370
394
  print "<listinfo line=\"#{no}\""
371
395
  print " begin=\"1\"" if no == 1
372
396
  print " end=\"#{no}\"" if no == lines.size
@@ -374,7 +398,7 @@ module ReVIEW
374
398
  end
375
399
  print detab(line)
376
400
  print "\n"
377
- print "</listinfo>" unless ReVIEW.book.param["listinfo"].nil?
401
+ print "</listinfo>" unless @book.config["listinfo"].nil?
378
402
  no += 1
379
403
  end
380
404
  end
@@ -401,7 +425,7 @@ module ReVIEW
401
425
  print %Q(<pre>)
402
426
  no = 1
403
427
  lines.each_with_index do |line, i|
404
- unless ReVIEW.book.param["listinfo"].nil?
428
+ unless @book.config["listinfo"].nil?
405
429
  print "<listinfo line=\"#{no}\""
406
430
  print " begin=\"1\"" if no == 1
407
431
  print " end=\"#{no}\"" if no == lines.size
@@ -409,7 +433,7 @@ module ReVIEW
409
433
  end
410
434
  print detab("<span type='lineno'>" + (i + 1).to_s.rjust(2) + ": </span>" + line)
411
435
  print "\n"
412
- print "</listinfo>" unless ReVIEW.book.param["listinfo"].nil?
436
+ print "</listinfo>" unless @book.config["listinfo"].nil?
413
437
  no += 1
414
438
  end
415
439
  puts "</pre></codelist>"
@@ -425,7 +449,7 @@ module ReVIEW
425
449
  print %Q[<pre>]
426
450
  no = 1
427
451
  lines.each do |line|
428
- unless ReVIEW.book.param["listinfo"].nil?
452
+ unless @book.config["listinfo"].nil?
429
453
  print "<listinfo line=\"#{no}\""
430
454
  print " begin=\"1\"" if no == 1
431
455
  print " end=\"#{no}\"" if no == lines.size
@@ -433,7 +457,7 @@ module ReVIEW
433
457
  end
434
458
  print detab(line)
435
459
  print "\n"
436
- print "</listinfo>" unless ReVIEW.book.param["listinfo"].nil?
460
+ print "</listinfo>" unless @book.config["listinfo"].nil?
437
461
  no += 1
438
462
  end
439
463
  puts '</pre></list>'
@@ -441,7 +465,7 @@ module ReVIEW
441
465
  private :quotedlist
442
466
 
443
467
  def quote(lines)
444
- if ReVIEW.book.param["deprecated-blocklines"].nil?
468
+ if @book.config["deprecated-blocklines"].nil?
445
469
  blocked_lines = split_paragraph(lines)
446
470
  puts "<quote>#{blocked_lines.join("")}</quote>"
447
471
  else
@@ -466,12 +490,12 @@ module ReVIEW
466
490
  "<span type='image'>#{I18n.t("image")}#{I18n.t("format_number", [get_chap(chapter), chapter.image(id).number])}</span>"
467
491
  end
468
492
  end
469
-
493
+
470
494
  def handle_metric(str)
471
495
  k, v = str.split('=', 2)
472
496
  return %Q|#{k}=\"#{v.sub(/\A["']/, '').sub(/["']\Z/, '')}\"|
473
497
  end
474
-
498
+
475
499
  def result_metric(array)
476
500
  " #{array.join(' ')}"
477
501
  end
@@ -516,8 +540,8 @@ module ReVIEW
516
540
  def table(lines, id = nil, caption = nil)
517
541
  tablewidth = nil
518
542
  col = 0
519
- unless ReVIEW.book.param["tableopt"].nil?
520
- tablewidth = ReVIEW.book.param["tableopt"].split(",")[0].to_f / 0.351 # mm -> pt
543
+ unless @book.config["tableopt"].nil?
544
+ tablewidth = @book.config["tableopt"].split(",")[0].to_f / 0.351 # mm -> pt
521
545
  end
522
546
  puts "<table>"
523
547
  rows = []
@@ -628,7 +652,7 @@ module ReVIEW
628
652
  def td(str)
629
653
  str
630
654
  end
631
-
655
+
632
656
  def table_end
633
657
  print "<?dtp tablerow last?>"
634
658
  end
@@ -681,7 +705,7 @@ module ReVIEW
681
705
  end
682
706
 
683
707
  def inline_hint(str)
684
- if ReVIEW.book.param["nolf"].nil?
708
+ if @book.config["nolf"].nil?
685
709
  %Q[\n<hint>#{escape_html(str)}</hint>]
686
710
  else
687
711
  %Q[<hint>#{escape_html(str)}</hint>]
@@ -737,7 +761,7 @@ module ReVIEW
737
761
  %Q(<tt style='bold'>#{escape_html(str)}</tt><index value='#{index}' />)
738
762
  end
739
763
 
740
- alias :inline_ttbold inline_ttb
764
+ alias_method :inline_ttbold, :inline_ttb
741
765
 
742
766
  def inline_tti(str)
743
767
  %Q(<tt style='italic'>#{escape_html(str)}</tt>)
@@ -768,7 +792,7 @@ module ReVIEW
768
792
  %Q[<ref idref='#{escape_html(idref)}'>「●● #{escape_html(idref)}」</ref>] # FIXME:節名とタイトルも込みで要出力
769
793
  end
770
794
 
771
- alias inline_ref inline_labelref
795
+ alias_method :inline_ref, :inline_labelref
772
796
 
773
797
  def inline_pageref(idref)
774
798
  %Q[<pageref idref='#{escape_html(idref)}'>●●</pageref>] # ページ番号を参照
@@ -815,7 +839,9 @@ module ReVIEW
815
839
  end
816
840
 
817
841
  def common_column_begin(type, caption)
818
- print "<#{type}column>"
842
+ @column += 1
843
+ a_id = %Q[id="column-#{@column}"]
844
+ print "<#{type}column #{a_id}>"
819
845
  puts %Q[<title aid:pstyle="#{type}column-title">#{compile_inline(caption)}</title>]
820
846
  end
821
847
 
@@ -896,7 +922,7 @@ module ReVIEW
896
922
  end
897
923
 
898
924
  def flushright(lines)
899
- if ReVIEW.book.param["deprecated-blocklines"].nil?
925
+ if @book.config["deprecated-blocklines"].nil?
900
926
  puts split_paragraph(lines).join.gsub("<p>", "<p align='right'>")
901
927
  else
902
928
  puts "<p align='right'>#{lines.join("\n")}</p>"
@@ -911,7 +937,7 @@ module ReVIEW
911
937
  print "<#{type}>"
912
938
  style = specialstyle.nil? ? "#{type}-title" : specialstyle
913
939
  puts "<title aid:pstyle='#{style}'>#{compile_inline(caption)}</title>" unless caption.nil?
914
- if ReVIEW.book.param["deprecated-blocklines"].nil?
940
+ if @book.config["deprecated-blocklines"].nil?
915
941
  blocked_lines = split_paragraph(lines)
916
942
  puts "#{blocked_lines.join}</#{type}>"
917
943
  else
@@ -994,7 +1020,7 @@ module ReVIEW
994
1020
  def practice(lines)
995
1021
  captionblock("practice", lines, nil)
996
1022
  end
997
-
1023
+
998
1024
  def expert(lines)
999
1025
  captionblock("expert", lines, nil)
1000
1026
  end
@@ -1013,7 +1039,7 @@ module ReVIEW
1013
1039
  end
1014
1040
  no = 1
1015
1041
  lines.each do |line|
1016
- unless ReVIEW.book.param["listinfo"].nil?
1042
+ unless @book.config["listinfo"].nil?
1017
1043
  print %Q[<listinfo line="#{no}"]
1018
1044
  print %Q[ begin="1"] if no == 1
1019
1045
  print %Q[ end="#{no}"] if no == lines.size
@@ -1021,7 +1047,7 @@ module ReVIEW
1021
1047
  end
1022
1048
  print detab(line)
1023
1049
  print "\n"
1024
- print "</listinfo>" unless ReVIEW.book.param["listinfo"].nil?
1050
+ print "</listinfo>" unless @book.config["listinfo"].nil?
1025
1051
  no += 1
1026
1052
  end
1027
1053
  puts "</#{type}>"
@@ -1047,7 +1073,7 @@ module ReVIEW
1047
1073
  puts "</img>"
1048
1074
  end
1049
1075
 
1050
- alias :numberlessimage indepimage
1076
+ alias_method :numberlessimage, :indepimage
1051
1077
 
1052
1078
  def label(id)
1053
1079
  # FIXME
@@ -1097,9 +1123,9 @@ module ReVIEW
1097
1123
 
1098
1124
  def inline_chapref(id)
1099
1125
  chs = ["", "「", "」"]
1100
- unless ReVIEW.book.param["chapref"].nil?
1101
- _chs = convert_inencoding(ReVIEW.book.param["chapref"],
1102
- ReVIEW.book.param["inencoding"]).split(",")
1126
+ unless @book.config["chapref"].nil?
1127
+ _chs = convert_inencoding(@book.config["chapref"],
1128
+ @book.config["inencoding"]).split(",")
1103
1129
  if _chs.size != 3
1104
1130
  error "--chapsplitter must have exactly 3 parameters with comma."
1105
1131
  else
@@ -1108,7 +1134,7 @@ module ReVIEW
1108
1134
  else
1109
1135
  end
1110
1136
  s = "#{chs[0]}#{@chapter.env.chapter_index.number(id)}#{chs[1]}#{@chapter.env.chapter_index.title(id)}#{chs[2]}"
1111
- if ReVIEW.book.param["chapterlink"]
1137
+ if @book.config["chapterlink"]
1112
1138
  %Q(<link href="#{id}">#{s}</link>)
1113
1139
  else
1114
1140
  s
@@ -1119,7 +1145,7 @@ module ReVIEW
1119
1145
  end
1120
1146
 
1121
1147
  def inline_chap(id)
1122
- if ReVIEW.book.param["chapterlink"]
1148
+ if @book.config["chapterlink"]
1123
1149
  %Q(<link href="#{id}">#{@chapter.env.chapter_index.number(id)}</link>)
1124
1150
  else
1125
1151
  @chapter.env.chapter_index.number(id)
@@ -1130,7 +1156,7 @@ module ReVIEW
1130
1156
  end
1131
1157
 
1132
1158
  def inline_title(id)
1133
- if ReVIEW.book.param["chapterlink"]
1159
+ if @book.config["chapterlink"]
1134
1160
  %Q(<link href="#{id}">#{@chapter.env.chapter_index.title(id)}</link>)
1135
1161
  else
1136
1162
  @chapter.env.chapter_index.title(id)
@@ -1175,7 +1201,7 @@ module ReVIEW
1175
1201
  def inline_hd_chap(chap, id)
1176
1202
  if chap.number
1177
1203
  n = chap.headline_index.number(id)
1178
- if ReVIEW.book.param["secnolevel"] >= n.split('.').size
1204
+ if @book.config["secnolevel"] >= n.split('.').size
1179
1205
  return "「#{n} #{compile_inline(chap.headline(id).caption)}」"
1180
1206
  end
1181
1207
  end