review 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
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