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.
- checksums.yaml +4 -4
- data/.gitignore +36 -0
- data/.rubocop.yml +1 -0
- data/ChangeLog +102 -0
- data/README.rdoc +2 -2
- data/bin/review-check +18 -16
- data/bin/review-compile +49 -42
- data/bin/review-epubmaker +23 -993
- data/bin/review-epubmaker-legacy +1024 -0
- data/bin/review-index +17 -15
- data/bin/review-init +39 -9
- data/bin/review-pdfmaker +124 -89
- data/bin/review-preproc +16 -14
- data/bin/review-vol +17 -15
- data/debian/docs +1 -1
- data/doc/catalog.rdoc +34 -0
- data/doc/format.rdoc +16 -2
- data/doc/libepubmaker/{config.yaml → config.yml} +63 -19
- data/doc/quickstart.rdoc +1 -1
- data/doc/{sample.yaml → sample.yml} +0 -0
- data/lib/epubmaker.rb +1 -1
- data/lib/epubmaker/content.rb +9 -1
- data/lib/epubmaker/epubv2.rb +59 -7
- data/lib/epubmaker/epubv3.rb +14 -9
- data/lib/epubmaker/producer.rb +68 -27
- data/lib/epubmaker/resource.rb +3 -1
- data/lib/lineinput.rb +2 -2
- data/lib/review/book/base.rb +125 -24
- data/lib/review/book/chapter.rb +42 -0
- data/lib/review/book/compilable.rb +23 -4
- data/lib/review/book/image_finder.rb +64 -0
- data/lib/review/book/index.rb +64 -50
- data/lib/review/book/page_metric.rb +1 -1
- data/lib/review/builder.rb +19 -12
- data/lib/review/catalog.rb +47 -0
- data/lib/review/compiler.rb +3 -2
- data/lib/review/configure.rb +5 -3
- data/lib/review/epubmaker.rb +130 -46
- data/lib/review/ewbbuilder.rb +27 -31
- data/lib/review/extentions/string.rb +4 -4
- data/lib/review/htmlbuilder.rb +140 -79
- data/lib/review/htmllayout.rb +26 -4
- data/lib/review/htmlutils.rb +20 -1
- data/lib/review/i18n.rb +5 -2
- data/lib/review/{i18n.yaml → i18n.yml} +4 -2
- data/lib/review/idgxmlbuilder.rb +65 -39
- data/lib/review/latexbuilder.rb +72 -24
- data/lib/review/latexutils.rb +3 -1
- data/lib/review/makerhelper.rb +8 -2
- data/lib/review/preprocessor.rb +20 -20
- data/lib/review/review.tex.erb +4 -0
- data/lib/review/sec_counter.rb +9 -11
- data/lib/review/tocparser.rb +2 -2
- data/lib/review/tocprinter.rb +12 -12
- data/lib/review/topbuilder.rb +15 -15
- data/lib/review/version.rb +1 -1
- data/lib/uuid.rb +7 -7
- data/review.gemspec +2 -2
- data/rubocop-todo.yml +443 -0
- data/test/sample-book/src/config.yml +2 -2
- data/test/sample-book/src/{main.css → style.css} +0 -0
- data/test/test_book.rb +46 -48
- data/test/test_book_chapter.rb +25 -13
- data/test/test_builder.rb +3 -3
- data/test/test_catalog.rb +107 -0
- data/test/test_epubmaker.rb +6 -6
- data/test/test_htmlbuilder.rb +160 -39
- data/test/test_htmlutils.rb +22 -0
- data/test/test_i18n.rb +2 -2
- data/test/test_idgxmlbuilder.rb +33 -47
- data/test/test_image_finder.rb +82 -0
- data/test/test_inaobuilder.rb +1 -1
- data/test/test_latexbuilder.rb +35 -39
- data/test/test_lineinput.rb +2 -2
- data/test/test_markdownbuilder.rb +2 -2
- data/test/test_topbuilder.rb +39 -23
- metadata +23 -14
- data/bin/review-epubmaker-ng +0 -23
data/lib/review/latexbuilder.rb
CHANGED
@@ -13,6 +13,7 @@
|
|
13
13
|
require 'review/builder'
|
14
14
|
require 'review/latexutils'
|
15
15
|
require 'review/textutils'
|
16
|
+
require 'review/sec_counter'
|
16
17
|
|
17
18
|
module ReVIEW
|
18
19
|
|
@@ -33,12 +34,12 @@ module ReVIEW
|
|
33
34
|
end
|
34
35
|
|
35
36
|
def builder_init_file
|
36
|
-
#@index = indexes[:latex_index]
|
37
37
|
@blank_needed = false
|
38
38
|
@latex_tsize = nil
|
39
39
|
@tsize = nil
|
40
40
|
@table_caption = nil
|
41
41
|
@ol_num = nil
|
42
|
+
@sec_counter = SecCounter.new(5, @chapter)
|
42
43
|
end
|
43
44
|
private :builder_init_file
|
44
45
|
|
@@ -74,18 +75,30 @@ module ReVIEW
|
|
74
75
|
6 => 'subparagraph'
|
75
76
|
}
|
76
77
|
|
78
|
+
def headline_prefix(level)
|
79
|
+
@sec_counter.inc(level)
|
80
|
+
anchor = @sec_counter.anchor(level)
|
81
|
+
prefix = @sec_counter.prefix(level, @book.config["secnolevel"])
|
82
|
+
[prefix, anchor]
|
83
|
+
end
|
84
|
+
private :headline_prefix
|
85
|
+
|
86
|
+
|
77
87
|
def headline(level, label, caption)
|
88
|
+
_, anchor = headline_prefix(level)
|
78
89
|
prefix = ""
|
79
|
-
if level >
|
90
|
+
if level > @book.config["secnolevel"] || (@chapter.number.to_s.empty? && level > 1)
|
80
91
|
prefix = "*"
|
81
92
|
end
|
82
93
|
blank unless @output.pos == 0
|
83
94
|
puts macro(HEADLINE[level]+prefix, compile_inline(caption))
|
84
|
-
if prefix == "*" && level <=
|
95
|
+
if prefix == "*" && level <= @book.config["toclevel"].to_i
|
85
96
|
puts "\\addcontentsline{toc}{#{HEADLINE[level]}}{#{compile_inline(caption)}}"
|
86
97
|
end
|
87
98
|
if level == 1
|
88
99
|
puts macro('label', chapter_label)
|
100
|
+
else
|
101
|
+
puts macro('label', sec_label(anchor))
|
89
102
|
end
|
90
103
|
rescue
|
91
104
|
error "unknown level: #{level}"
|
@@ -102,8 +115,15 @@ module ReVIEW
|
|
102
115
|
def column_begin(level, label, caption)
|
103
116
|
blank
|
104
117
|
puts "\\begin{reviewcolumn}\n"
|
118
|
+
if label
|
119
|
+
puts "\\hypertarget{#{column_label(label)}}{}"
|
120
|
+
else
|
121
|
+
puts "\\hypertarget{#{column_label(caption)}}{}"
|
122
|
+
end
|
105
123
|
puts macro('reviewcolumnhead', nil, compile_inline(caption))
|
106
|
-
|
124
|
+
if level <= @book.config["toclevel"].to_i
|
125
|
+
puts "\\addcontentsline{toc}{#{HEADLINE[level]}}{#{compile_inline(caption)}}"
|
126
|
+
end
|
107
127
|
end
|
108
128
|
|
109
129
|
def column_end(level)
|
@@ -117,7 +137,7 @@ module ReVIEW
|
|
117
137
|
puts "\\reviewminicolumntitle{#{compile_inline(caption)}}\n"
|
118
138
|
end
|
119
139
|
|
120
|
-
if
|
140
|
+
if @book.config["deprecated-blocklines"].nil?
|
121
141
|
blocked_lines = split_paragraph(lines)
|
122
142
|
puts blocked_lines.join("\n\n")
|
123
143
|
else
|
@@ -206,7 +226,7 @@ module ReVIEW
|
|
206
226
|
blank
|
207
227
|
end
|
208
228
|
|
209
|
-
def parasep
|
229
|
+
def parasep
|
210
230
|
puts '\\parasep'
|
211
231
|
end
|
212
232
|
|
@@ -214,7 +234,7 @@ module ReVIEW
|
|
214
234
|
latex_block 'quotation', lines
|
215
235
|
end
|
216
236
|
|
217
|
-
|
237
|
+
alias_method :lead, :read
|
218
238
|
|
219
239
|
def emlist(lines, caption = nil)
|
220
240
|
blank
|
@@ -337,16 +357,22 @@ module ReVIEW
|
|
337
357
|
end
|
338
358
|
private :existence
|
339
359
|
|
340
|
-
def image_label(id)
|
341
|
-
|
360
|
+
def image_label(id, chapter=nil)
|
361
|
+
chapter ||= @chapter
|
362
|
+
"image:#{chapter.id}:#{id}"
|
342
363
|
end
|
343
364
|
private :image_label
|
344
365
|
|
345
|
-
def chapter_label
|
366
|
+
def chapter_label
|
346
367
|
"chap:#{@chapter.id}"
|
347
368
|
end
|
348
369
|
private :chapter_label
|
349
370
|
|
371
|
+
def sec_label(sec_anchor)
|
372
|
+
"sec:#{sec_anchor}"
|
373
|
+
end
|
374
|
+
private :sec_label
|
375
|
+
|
350
376
|
def table_label(id)
|
351
377
|
"table:#{@chapter.id}:#{id}"
|
352
378
|
end
|
@@ -357,6 +383,13 @@ module ReVIEW
|
|
357
383
|
end
|
358
384
|
private :bib_label
|
359
385
|
|
386
|
+
def column_label(id)
|
387
|
+
filename = @chapter.id
|
388
|
+
num = @chapter.column(id).number
|
389
|
+
"column:#{filename}:#{num}"
|
390
|
+
end
|
391
|
+
private :column_label
|
392
|
+
|
360
393
|
def indepimage(id, caption=nil, metric=nil)
|
361
394
|
metrics = parse_metric("latex", metric)
|
362
395
|
puts '\begin{reviewimage}'
|
@@ -372,7 +405,7 @@ module ReVIEW
|
|
372
405
|
puts '\end{reviewimage}'
|
373
406
|
end
|
374
407
|
|
375
|
-
|
408
|
+
alias_method :numberlessimage, :indepimage
|
376
409
|
|
377
410
|
def table(lines, id = nil, caption = nil)
|
378
411
|
rows = []
|
@@ -478,7 +511,7 @@ module ReVIEW
|
|
478
511
|
latex_block 'center', lines
|
479
512
|
end
|
480
513
|
|
481
|
-
|
514
|
+
alias_method :centering, :center
|
482
515
|
|
483
516
|
def flushright(lines)
|
484
517
|
latex_block 'flushright', lines
|
@@ -497,7 +530,7 @@ module ReVIEW
|
|
497
530
|
def latex_block(type, lines)
|
498
531
|
blank
|
499
532
|
puts macro('begin', type)
|
500
|
-
if
|
533
|
+
if @book.config["deprecated-blocklines"].nil?
|
501
534
|
blocked_lines = split_paragraph(lines)
|
502
535
|
puts blocked_lines.join("\n\n")
|
503
536
|
else
|
@@ -520,7 +553,7 @@ module ReVIEW
|
|
520
553
|
def comment(lines, comment = nil)
|
521
554
|
lines ||= []
|
522
555
|
lines.unshift comment unless comment.blank?
|
523
|
-
if
|
556
|
+
if @book.config["draft"]
|
524
557
|
str = lines.join("")
|
525
558
|
puts macro('pdfcomment', escape(str))
|
526
559
|
end
|
@@ -548,7 +581,7 @@ module ReVIEW
|
|
548
581
|
|
549
582
|
def inline_chapref(id)
|
550
583
|
title = super
|
551
|
-
if
|
584
|
+
if @book.config["chapterlink"]
|
552
585
|
"\\hyperref[chap:#{id}]{#{title}}"
|
553
586
|
else
|
554
587
|
title
|
@@ -559,7 +592,7 @@ module ReVIEW
|
|
559
592
|
end
|
560
593
|
|
561
594
|
def inline_chap(id)
|
562
|
-
if
|
595
|
+
if @book.config["chapterlink"]
|
563
596
|
"\\hyperref[chap:#{id}]{#{@chapter.env.chapter_index.number(id)}}"
|
564
597
|
else
|
565
598
|
@chapter.env.chapter_index.number(id)
|
@@ -570,7 +603,7 @@ module ReVIEW
|
|
570
603
|
end
|
571
604
|
|
572
605
|
def inline_title(id)
|
573
|
-
if
|
606
|
+
if @book.config["chapterlink"]
|
574
607
|
"\\hyperref[chap:#{id}]{#{@chapter.env.chapter_index.title(id)}}"
|
575
608
|
else
|
576
609
|
@chapter.env.chapter_index.title(id)
|
@@ -594,18 +627,18 @@ module ReVIEW
|
|
594
627
|
|
595
628
|
def inline_img(id)
|
596
629
|
chapter, id = extract_chapter_id(id)
|
597
|
-
macro('reviewimageref', "#{chapter.number}.#{chapter.image(id).number}", image_label(id))
|
630
|
+
macro('reviewimageref', "#{chapter.number}.#{chapter.image(id).number}", image_label(id, chapter))
|
598
631
|
end
|
599
632
|
|
600
633
|
def footnote(id, content)
|
601
|
-
if
|
634
|
+
if @book.config["footnotetext"]
|
602
635
|
puts macro("footnotetext[#{@chapter.footnote(id).number}]",
|
603
636
|
compile_inline(content.strip))
|
604
637
|
end
|
605
638
|
end
|
606
639
|
|
607
640
|
def inline_fn(id)
|
608
|
-
if
|
641
|
+
if @book.config["footnotetext"]
|
609
642
|
macro("footnotemark[#{@chapter.footnote(id).number}]", "")
|
610
643
|
else
|
611
644
|
macro('footnote', compile_inline(@chapter.footnote(id).content.strip))
|
@@ -639,7 +672,7 @@ module ReVIEW
|
|
639
672
|
|
640
673
|
# index
|
641
674
|
def inline_idx(str)
|
642
|
-
|
675
|
+
escape(str) + index(str)
|
643
676
|
end
|
644
677
|
|
645
678
|
# hidden index??
|
@@ -692,7 +725,22 @@ module ReVIEW
|
|
692
725
|
end
|
693
726
|
|
694
727
|
def inline_hd_chap(chap, id)
|
695
|
-
|
728
|
+
n = chap.headline_index.number(id)
|
729
|
+
if chap.number and @book.config["secnolevel"] >= n.split('.').size
|
730
|
+
str = "「#{chap.headline_index.number(id)} #{compile_inline(chap.headline(id).caption)}」"
|
731
|
+
else
|
732
|
+
str = "「#{compile_inline(chap.headline(id).caption)}」"
|
733
|
+
end
|
734
|
+
if @book.config["chapterlink"]
|
735
|
+
anchor = n.gsub(/\./, "-")
|
736
|
+
macro('reviewsecref', str, sec_label(anchor))
|
737
|
+
else
|
738
|
+
str
|
739
|
+
end
|
740
|
+
end
|
741
|
+
|
742
|
+
def inline_column(id)
|
743
|
+
macro('reviewcolumnref', "#{@chapter.column(id).caption}", column_label(id))
|
696
744
|
end
|
697
745
|
|
698
746
|
def inline_raw(str)
|
@@ -733,7 +781,7 @@ module ReVIEW
|
|
733
781
|
end
|
734
782
|
|
735
783
|
def inline_comment(str)
|
736
|
-
if
|
784
|
+
if @book.config["draft"]
|
737
785
|
macro('pdfcomment', escape(str))
|
738
786
|
else
|
739
787
|
""
|
@@ -797,7 +845,7 @@ module ReVIEW
|
|
797
845
|
end
|
798
846
|
|
799
847
|
def image_ext
|
800
|
-
"
|
848
|
+
"pdf"
|
801
849
|
end
|
802
850
|
|
803
851
|
def olnum(num)
|
data/lib/review/latexutils.rb
CHANGED
@@ -67,7 +67,7 @@ module ReVIEW
|
|
67
67
|
}
|
68
68
|
end
|
69
69
|
|
70
|
-
|
70
|
+
alias_method :escape, :escape_latex
|
71
71
|
|
72
72
|
def unescape_latex(str)
|
73
73
|
metachars_invert_re = Regexp.new(METACHARS_INVERT.keys.collect{|key| Regexp.escape(key)}.join('|'))
|
@@ -76,6 +76,8 @@ module ReVIEW
|
|
76
76
|
}
|
77
77
|
end
|
78
78
|
|
79
|
+
alias_method :unescape, :unescape_latex
|
80
|
+
|
79
81
|
def escape_index(str)
|
80
82
|
str.gsub(/[@!|"]/) {|s| '"' + s }
|
81
83
|
end
|
data/lib/review/makerhelper.rb
CHANGED
@@ -1,15 +1,21 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
#
|
3
|
-
# Copyright (c) 2012 Yuto HAYAMIZU
|
3
|
+
# Copyright (c) 2012-2014 Yuto HAYAMIZU, Kenshi Muto
|
4
4
|
#
|
5
5
|
# This program is free software.
|
6
6
|
# You can distribute or modify this program under the terms of
|
7
7
|
# the GNU LGPL, Lesser General Public License version 2.1.
|
8
8
|
# For details of the GNU LGPL, see the file "COPYING".
|
9
9
|
#
|
10
|
+
require 'pathname'
|
11
|
+
require 'fileutils'
|
10
12
|
|
11
13
|
module ReVIEW
|
12
14
|
class MakerHelper
|
15
|
+
# Return review/bin directory
|
16
|
+
def self.bindir
|
17
|
+
Pathname.new("#{Pathname.new(__FILE__).realpath.dirname}/../../bin").realpath
|
18
|
+
end
|
13
19
|
|
14
20
|
# Copy image files under from_dir to to_dir recursively
|
15
21
|
# ==== Args
|
@@ -36,7 +42,7 @@ module ReVIEW
|
|
36
42
|
if FileTest.directory?("#{from_dir}/#{fname}")
|
37
43
|
image_files += copy_images_to_dir("#{from_dir}/#{fname}", "#{to_dir}/#{fname}", options)
|
38
44
|
else
|
39
|
-
|
45
|
+
FileUtils.mkdir_p(to_dir) unless File.exist?(to_dir)
|
40
46
|
|
41
47
|
is_converted = false
|
42
48
|
(options[:convert] || {}).each do |orig_type, conv_type|
|
data/lib/review/preprocessor.rb
CHANGED
@@ -24,22 +24,22 @@ module ReVIEW
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def warn(msg)
|
27
|
-
if @
|
27
|
+
if @config["outencoding"] =~ /^EUC$/
|
28
28
|
msg = NKF.nkf("-W -e", msg)
|
29
|
-
elsif @
|
29
|
+
elsif @config["outencoding"] =~ /^SJIS$/
|
30
30
|
msg = NKF.nkf("-W -s", msg)
|
31
|
-
elsif @
|
31
|
+
elsif @config["outencoding"] =~ /^JIS$/
|
32
32
|
msg = NKF.nkf("-W -j", msg)
|
33
33
|
end
|
34
34
|
$stderr.puts "#{location()}: warning: #{msg}"
|
35
35
|
end
|
36
36
|
|
37
37
|
def error(msg)
|
38
|
-
if @
|
38
|
+
if @config["outencoding"] =~ /^EUC$/
|
39
39
|
msg = NKF.nkf("-W -e", msg)
|
40
|
-
elsif @
|
40
|
+
elsif @config["outencoding"] =~ /^SJIS$/
|
41
41
|
msg = NKF.nkf("-W -s", msg)
|
42
|
-
elsif @
|
42
|
+
elsif @config["outencoding"] =~ /^JIS$/
|
43
43
|
msg = NKF.nkf("-W -j", msg)
|
44
44
|
end
|
45
45
|
@errutils_err = true
|
@@ -106,7 +106,7 @@ module ReVIEW
|
|
106
106
|
|
107
107
|
def initialize(repo, param)
|
108
108
|
@repository = repo
|
109
|
-
@
|
109
|
+
@config = param
|
110
110
|
end
|
111
111
|
|
112
112
|
def process(inf, outf)
|
@@ -142,7 +142,7 @@ module ReVIEW
|
|
142
142
|
@f.print out.string
|
143
143
|
end
|
144
144
|
skip_list f
|
145
|
-
|
145
|
+
|
146
146
|
when /\A\#@mapfile/
|
147
147
|
direc = parse_directive(line, 1, 'eval')
|
148
148
|
path = expand(direc.arg)
|
@@ -166,7 +166,7 @@ module ReVIEW
|
|
166
166
|
#error "unkown directive: #{line.strip}" unless known_directive?(op)
|
167
167
|
warn "unkown directive: #{line.strip}" unless known_directive?(op)
|
168
168
|
@f.print line
|
169
|
-
|
169
|
+
|
170
170
|
when /\A\s*\z/ # empty line
|
171
171
|
@f.puts
|
172
172
|
else
|
@@ -185,21 +185,21 @@ module ReVIEW
|
|
185
185
|
|
186
186
|
def convert_outencoding(*s)
|
187
187
|
ine = ""
|
188
|
-
if @
|
188
|
+
if @config["inencoding"] =~ /^EUC$/i
|
189
189
|
ine = "-E,"
|
190
|
-
elsif @
|
190
|
+
elsif @config["inencoding"] =~ /^SJIS$/i
|
191
191
|
ine = "-S,"
|
192
|
-
elsif @
|
192
|
+
elsif @config["inencoding"] =~ /^JIS$/i
|
193
193
|
ine = "-J,"
|
194
|
-
elsif @
|
194
|
+
elsif @config["inencoding"] =~ /^UTF\-8$/i
|
195
195
|
ine = "-W,"
|
196
196
|
end
|
197
197
|
|
198
|
-
if @
|
198
|
+
if @config["outencoding"] =~ /^EUC$/i
|
199
199
|
NKF.nkf("#{ine} -m0x -e", *s)
|
200
|
-
elsif @
|
200
|
+
elsif @config["outencoding"] =~ /^SJIS$/i
|
201
201
|
NKF.nkf("#{ine} -m0x -s", *s)
|
202
|
-
elsif @
|
202
|
+
elsif @config["outencoding"] =~ /^JIS$/i
|
203
203
|
NKF.nkf("#{ine} -m0x -j", *s)
|
204
204
|
else
|
205
205
|
NKF.nkf("#{ine} -m0x -w", *s)
|
@@ -395,7 +395,7 @@ module ReVIEW
|
|
395
395
|
|
396
396
|
attr_reader :number
|
397
397
|
attr_reader :string
|
398
|
-
|
398
|
+
alias_method :to_s, :string
|
399
399
|
|
400
400
|
def edit
|
401
401
|
self.class.new(@number, yield(@string))
|
@@ -418,7 +418,7 @@ module ReVIEW
|
|
418
418
|
|
419
419
|
def initialize(param)
|
420
420
|
@repository = {}
|
421
|
-
@
|
421
|
+
@config = param
|
422
422
|
end
|
423
423
|
|
424
424
|
def fetch_file(file)
|
@@ -538,8 +538,8 @@ module ReVIEW
|
|
538
538
|
|
539
539
|
def canonical(line)
|
540
540
|
tabwidth = 8
|
541
|
-
if @
|
542
|
-
tabwidth = @
|
541
|
+
if @config['tabwidth']
|
542
|
+
tabwidth = @config['tabwidth']
|
543
543
|
end
|
544
544
|
if tabwidth > 0
|
545
545
|
detab(line, tabwidth).rstrip + "\n"
|
data/lib/review/review.tex.erb
CHANGED
data/lib/review/sec_counter.rb
CHANGED
@@ -47,19 +47,17 @@ module ReVIEW
|
|
47
47
|
|
48
48
|
if level == 1
|
49
49
|
if secnolevel >= 1
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
end
|
57
|
-
return "#{I18n.t(placeholder, @chapter.number)}#{I18n.t("chapter_postfix")}"
|
50
|
+
if @chapter.is_a? ReVIEW::Book::Part
|
51
|
+
num = @chapter.number
|
52
|
+
return "#{I18n.t('part', num)}#{I18n.t("chapter_postfix")}"
|
53
|
+
else
|
54
|
+
return "#{@chapter.format_number}#{I18n.t("chapter_postfix")}"
|
55
|
+
end
|
58
56
|
end
|
59
57
|
else
|
60
|
-
if secnolevel >= level
|
61
|
-
prefix =
|
62
|
-
0.upto(level-2) do |i|
|
58
|
+
if secnolevel >= level
|
59
|
+
prefix = @chapter.format_number(false)
|
60
|
+
0.upto(level - 2) do |i|
|
63
61
|
prefix << ".#{@counter[i]}"
|
64
62
|
end
|
65
63
|
prefix << I18n.t("chapter_postfix")
|