review 1.7.2 → 2.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -43
- data/.travis.yml +0 -9
- data/ChangeLog +0 -16
- data/Gemfile +1 -0
- data/README.rdoc +1 -1
- data/Rakefile +12 -1
- data/bin/review-check +21 -8
- data/bin/review-compile +15 -9
- data/bin/review-epubmaker-legacy +6 -6
- data/bin/review-index +13 -2
- data/bin/review-init +18 -12
- data/bin/review-preproc +14 -1
- data/bin/review-validate +1 -1
- data/bin/review-vol +13 -1
- data/doc/quickstart.ja.md +1 -1
- data/doc/quickstart.md +1 -1
- data/lib/epubmaker/content.rb +3 -3
- data/lib/epubmaker/epubcommon.rb +108 -91
- data/lib/epubmaker/epubv2.rb +67 -14
- data/lib/epubmaker/epubv3.rb +59 -25
- data/lib/epubmaker/producer.rb +1 -13
- data/lib/lineinput.rb +0 -48
- data/lib/review/book/base.rb +4 -12
- data/lib/review/book/compilable.rb +3 -1
- data/lib/review/book/index.rb +4 -4
- data/lib/review/builder.rb +54 -47
- data/lib/review/compiler.rb +4662 -326
- data/lib/review/compiler/literals_1_8.kpeg +19 -0
- data/lib/review/compiler/literals_1_8.rb +432 -0
- data/lib/review/compiler/literals_1_9.kpeg +22 -0
- data/lib/review/compiler/literals_1_9.rb +435 -0
- data/lib/review/configure.rb +8 -20
- data/lib/review/epubbuilder.rb +1 -1
- data/lib/review/epubmaker.rb +122 -52
- data/lib/review/ewbbuilder.rb +4 -4
- data/lib/review/exception.rb +1 -1
- data/lib/review/extentions.rb +1 -0
- data/lib/review/extentions/array.rb +25 -0
- data/lib/review/htmlbuilder.rb +286 -275
- data/lib/review/htmllayout.rb +0 -2
- data/lib/review/htmlutils.rb +4 -4
- data/lib/review/i18n.rb +2 -6
- data/lib/review/i18n.yml +1 -1
- data/lib/review/idgxmlbuilder.rb +239 -204
- data/lib/review/inaobuilder.rb +75 -73
- data/lib/review/latexbuilder.rb +265 -219
- data/lib/review/latexutils.rb +6 -6
- data/lib/review/layout.tex.erb +1 -1
- data/lib/review/location.rb +24 -0
- data/lib/review/markdownbuilder.rb +124 -79
- data/lib/review/node.rb +267 -0
- data/lib/review/pdfmaker.rb +92 -92
- data/lib/review/preprocessor.rb +51 -14
- data/lib/review/review.kpeg +724 -0
- data/lib/review/textbuilder.rb +1 -1
- data/lib/review/textutils.rb +24 -18
- data/lib/review/tocparser.rb +3 -3
- data/lib/review/tocprinter.rb +31 -8
- data/lib/review/topbuilder.rb +119 -111
- data/lib/review/unfold.rb +2 -2
- data/lib/review/version.rb +1 -1
- data/review.gemspec +2 -2
- data/rubocop-todo.yml +456 -0
- data/test/assets/test_template.tex +1 -1
- data/test/sample-book/src/config.yml +0 -1
- data/test/test.re +1 -1
- data/test/test_book.rb +4 -4
- data/test/test_book_chapter.rb +70 -0
- data/test/test_book_part.rb +1 -1
- data/test/test_builder.rb +6 -28
- data/test/test_compiler.rb +59 -14
- data/test/test_helper.rb +47 -4
- data/test/test_htmlbuilder.rb +104 -73
- data/test/test_i18n.rb +5 -3
- data/test/test_idgxmlbuilder.rb +5 -2
- data/test/test_inaobuilder.rb +4 -2
- data/test/test_latexbuilder.rb +18 -37
- data/test/test_lineinput.rb +25 -4
- data/test/test_markdownbuilder.rb +4 -22
- data/test/test_pdfmaker.rb +12 -11
- data/test/test_textutils.rb +0 -36
- data/test/test_topbuilder.rb +2 -0
- metadata +14 -28
- data/.rubocop_todo.yml +0 -605
- data/Dockerfile +0 -22
- data/doc/NEWS.ja.md +0 -362
- data/doc/NEWS.md +0 -366
- data/lib/review/htmltoc.rb +0 -45
- data/lib/review/template.rb +0 -21
- data/templates/html/layout-html5.html.erb +0 -17
- data/templates/html/layout-xhtml1.html.erb +0 -20
- data/templates/ncx/epubv2.ncx.erb +0 -11
- data/templates/opf/epubv2.opf.erb +0 -21
- data/templates/opf/epubv3.opf.erb +0 -18
- data/templates/xml/container.xml.erb +0 -6
- data/test/assets/test.xml.erb +0 -3
- data/test/sample-book/src/config-epub2.yml +0 -186
- data/test/test_configure.rb +0 -50
- data/test/test_htmltoc.rb +0 -32
- data/test/test_template.rb +0 -26
data/lib/review/htmllayout.rb
CHANGED
data/lib/review/htmlutils.rb
CHANGED
@@ -40,7 +40,7 @@ module ReVIEW
|
|
40
40
|
str.gsub('-', '-')
|
41
41
|
end
|
42
42
|
|
43
|
-
def
|
43
|
+
def highlight_pygments?
|
44
44
|
@book.config["pygments"].present? ||
|
45
45
|
@book.config["highlight"] && @book.config["highlight"]["html"] == "pygments"
|
46
46
|
end
|
@@ -58,7 +58,7 @@ module ReVIEW
|
|
58
58
|
if ops[:options] && ops[:options].kind_of?(Hash)
|
59
59
|
options.merge!(ops[:options])
|
60
60
|
end
|
61
|
-
return body if !
|
61
|
+
return body if !highlight_pygments?
|
62
62
|
|
63
63
|
begin
|
64
64
|
require 'pygments'
|
@@ -72,7 +72,7 @@ module ReVIEW
|
|
72
72
|
body
|
73
73
|
end
|
74
74
|
rescue LoadError
|
75
|
-
|
75
|
+
body
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
@@ -87,4 +87,4 @@ module ReVIEW
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
-
end
|
90
|
+
end # module ReVIEW
|
data/lib/review/i18n.rb
CHANGED
@@ -38,7 +38,7 @@ module ReVIEW
|
|
38
38
|
end
|
39
39
|
|
40
40
|
class << self
|
41
|
-
|
41
|
+
alias v t ## for EPUBMaker backward compatibility
|
42
42
|
end
|
43
43
|
|
44
44
|
def self.update(user_i18n, locale = nil)
|
@@ -65,11 +65,7 @@ module ReVIEW
|
|
65
65
|
locale = user_i18n["locale"]
|
66
66
|
if locale
|
67
67
|
user_i18n.delete("locale")
|
68
|
-
|
69
|
-
@store[locale].merge!(user_i18n)
|
70
|
-
else
|
71
|
-
@store[locale] = user_i18n
|
72
|
-
end
|
68
|
+
@store[locale].merge!(user_i18n)
|
73
69
|
else
|
74
70
|
user_i18n.each do |key, values|
|
75
71
|
raise KeyError, "Invalid locale file: #{path}" unless values.kind_of? Hash
|
data/lib/review/i18n.yml
CHANGED
data/lib/review/idgxmlbuilder.rb
CHANGED
@@ -23,7 +23,7 @@ module ReVIEW
|
|
23
23
|
[:ttbold, :hint, :maru, :keytop, :labelref, :ref, :pageref, :balloon].each {|e| Compiler.definline(e) }
|
24
24
|
Compiler.defsingle(:dtp, 1)
|
25
25
|
|
26
|
-
Compiler.
|
26
|
+
Compiler.defcodeblock(:insn, 1)
|
27
27
|
Compiler.defblock(:memo, 0..1)
|
28
28
|
Compiler.defblock(:tip, 0..1)
|
29
29
|
Compiler.defblock(:info, 0..1)
|
@@ -42,14 +42,6 @@ module ReVIEW
|
|
42
42
|
Compiler.defblock(:expert, 0)
|
43
43
|
Compiler.defblock(:rawblock, 0)
|
44
44
|
|
45
|
-
def pre_paragraph
|
46
|
-
'<p>'
|
47
|
-
end
|
48
|
-
|
49
|
-
def post_paragraph
|
50
|
-
'</p>'
|
51
|
-
end
|
52
|
-
|
53
45
|
def extname
|
54
46
|
'.xml'
|
55
47
|
end
|
@@ -74,14 +66,13 @@ module ReVIEW
|
|
74
66
|
@tsize = nil
|
75
67
|
@texblockequation = 0
|
76
68
|
@texinlineequation = 0
|
77
|
-
|
78
|
-
|
69
|
+
|
70
|
+
@output << %Q(<?xml version="1.0" encoding="UTF-8"?>\n)
|
71
|
+
@output << %Q(<#{@rootelement} xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/">)
|
79
72
|
if @book.config["nolf"].present?
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
end
|
84
|
-
end
|
73
|
+
@lf = ""
|
74
|
+
else
|
75
|
+
@lf = "\n"
|
85
76
|
end
|
86
77
|
@secttags = true unless @book.config["structuredxml"].nil?
|
87
78
|
end
|
@@ -102,7 +93,7 @@ module ReVIEW
|
|
102
93
|
def warn(msg)
|
103
94
|
if @no_error
|
104
95
|
@warns.push [@location.filename, @location.lineno, msg]
|
105
|
-
|
96
|
+
buf << "----WARNING: #{escape_html(msg)}----" << @lf
|
106
97
|
else
|
107
98
|
$stderr.puts "#{@location}: warning: #{msg}"
|
108
99
|
end
|
@@ -111,7 +102,7 @@ module ReVIEW
|
|
111
102
|
def error(msg)
|
112
103
|
if @no_error
|
113
104
|
@errors.push [@location.filename, @location.lineno, msg]
|
114
|
-
|
105
|
+
buf << "----ERROR: #{escape_html(msg)}----" << @lf
|
115
106
|
else
|
116
107
|
$stderr.puts "#{@location}: error: #{msg}"
|
117
108
|
end
|
@@ -142,63 +133,57 @@ module ReVIEW
|
|
142
133
|
end
|
143
134
|
|
144
135
|
def headline(level, label, caption)
|
136
|
+
buf = ""
|
145
137
|
case level
|
146
138
|
when 1
|
147
139
|
unless @secttags.nil?
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
140
|
+
buf << "</sect4>" if @subsubsubsection > 0
|
141
|
+
buf << "</sect3>" if @subsubsection > 0
|
142
|
+
buf << "</sect2>" if @subsection > 0
|
143
|
+
buf << "</sect>" if @section > 0
|
152
144
|
end
|
153
|
-
|
154
|
-
print %Q(<chapter id="chap:#{@chapter.number}">) unless @secttags.nil?
|
155
|
-
|
145
|
+
buf << %Q(<chapter id="chap:#{@chapter.number}">) unless @secttags.nil?
|
156
146
|
@section = 0
|
157
147
|
@subsection = 0
|
158
148
|
@subsubsection = 0
|
159
149
|
@subsubsubsection = 0
|
160
150
|
when 2
|
161
151
|
unless @secttags.nil?
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
152
|
+
buf << "</sect4>" if @subsubsubsection > 0
|
153
|
+
buf << "</sect3>" if @subsubsection > 0
|
154
|
+
buf << "</sect2>" if @subsection > 0
|
155
|
+
buf << "</sect>" if @section > 0
|
166
156
|
end
|
167
157
|
@section += 1
|
168
|
-
|
169
|
-
|
158
|
+
buf << %Q(<sect id="sect:#{@chapter.number}.#{@section}">) unless @secttags.nil?
|
170
159
|
@subsection = 0
|
171
160
|
@subsubsection = 0
|
172
161
|
@subsubsubsection = 0
|
173
162
|
when 3
|
174
163
|
unless @secttags.nil?
|
175
|
-
|
176
|
-
|
177
|
-
|
164
|
+
buf << "</sect4>" if @subsubsubsection > 0
|
165
|
+
buf << "</sect3>" if @subsubsection > 0
|
166
|
+
buf << "</sect2>" if @subsection > 0
|
178
167
|
end
|
179
|
-
|
180
168
|
@subsection += 1
|
181
|
-
|
182
|
-
|
169
|
+
buf << %Q(<sect2 id="sect:#{@chapter.number}.#{@section}.#{@subsection}">) unless @secttags.nil?
|
183
170
|
@subsubsection = 0
|
184
171
|
@subsubsubsection = 0
|
185
172
|
when 4
|
186
173
|
unless @secttags.nil?
|
187
|
-
|
188
|
-
|
174
|
+
buf << "</sect4>" if @subsubsubsection > 0
|
175
|
+
buf << "</sect3>" if @subsubsection > 0
|
189
176
|
end
|
190
|
-
|
191
177
|
@subsubsection += 1
|
192
|
-
|
193
|
-
|
178
|
+
buf << %Q(<sect3 id="sect:#{@chapter.number}.#{@section}.#{@subsection}.#{@subsubsection}">) unless @secttags.nil?
|
194
179
|
@subsubsubsection = 0
|
195
180
|
when 5
|
196
181
|
unless @secttags.nil?
|
197
|
-
|
182
|
+
buf << "</sect4>" if @subsubsubsection > 0
|
198
183
|
end
|
199
184
|
|
200
185
|
@subsubsubsection += 1
|
201
|
-
|
186
|
+
buf << %Q(<sect4 id="sect:#{@chapter.number}.#{@section}.#{@subsection}.#{@subsubsection}.#{@subsubsubsection}">) unless @secttags.nil?
|
202
187
|
else
|
203
188
|
raise "caption level too deep or unsupported: #{level}"
|
204
189
|
end
|
@@ -206,65 +191,68 @@ module ReVIEW
|
|
206
191
|
prefix, anchor = headline_prefix(level)
|
207
192
|
|
208
193
|
label = label.nil? ? "" : " id=\"#{label}\""
|
209
|
-
toccaption = escape_html(
|
210
|
-
|
194
|
+
toccaption = escape_html(caption.gsub(/@<fn>\{.+?\}/, '').gsub(/<[^>]+>/, ''))
|
195
|
+
buf << %Q(<title#{label} aid:pstyle="h#{level}">#{prefix}#{caption}</title><?dtp level="#{level}" section="#{prefix}#{toccaption}"?>) << @lf
|
196
|
+
|
197
|
+
buf
|
211
198
|
end
|
212
199
|
|
213
200
|
def ul_begin
|
214
201
|
level = block_given? ? yield : ""
|
215
202
|
level = nil if level == 1
|
216
|
-
|
203
|
+
"<ul#{level == 1 ? nil : level}>" + @lf
|
217
204
|
end
|
218
205
|
|
219
206
|
def ul_item(lines)
|
220
|
-
|
207
|
+
%Q(<li aid:pstyle="ul-item">#{lines.join.chomp}</li>) + @lf
|
221
208
|
end
|
222
209
|
|
223
210
|
def ul_item_begin(lines)
|
224
|
-
|
211
|
+
%Q(<li aid:pstyle="ul-item">#{lines.join.chomp})
|
225
212
|
end
|
226
213
|
|
227
214
|
def ul_item_end
|
228
|
-
|
215
|
+
"</li>" + @lf
|
229
216
|
end
|
230
217
|
|
231
218
|
def choice_single_begin
|
232
|
-
|
219
|
+
"<choice type='single'>" + @lf
|
233
220
|
end
|
234
221
|
|
235
222
|
def choice_multi_begin
|
236
|
-
|
223
|
+
"<choice type='multi'>" + @lf
|
237
224
|
end
|
238
225
|
|
239
226
|
def choice_single_end
|
240
|
-
|
227
|
+
"</choice>" + @lf
|
241
228
|
end
|
242
229
|
|
243
230
|
def choice_multi_end
|
244
|
-
|
231
|
+
"</choice>" + @lf
|
245
232
|
end
|
246
233
|
|
247
234
|
def ul_end
|
248
235
|
level = block_given? ? yield : ""
|
249
236
|
level = nil if level == 1
|
250
|
-
|
237
|
+
"</ul#{level}>" + @lf
|
251
238
|
end
|
252
239
|
|
253
240
|
def ol_begin
|
254
|
-
puts '<ol>'
|
255
241
|
if !@ol_num
|
256
242
|
@ol_num = 1
|
257
243
|
end
|
244
|
+
'<ol>' + @lf
|
258
245
|
end
|
259
246
|
|
260
247
|
def ol_item(lines, num)
|
261
|
-
|
248
|
+
buf = %Q(<li aid:pstyle="ol-item" olnum="#{@ol_num}" num="#{num}">#{lines.join.chomp}</li>) + @lf
|
262
249
|
@ol_num += 1
|
250
|
+
buf
|
263
251
|
end
|
264
252
|
|
265
253
|
def ol_end
|
266
|
-
puts '</ol>'
|
267
254
|
@ol_num = nil
|
255
|
+
'</ol>' + @lf
|
268
256
|
end
|
269
257
|
|
270
258
|
def olnum(num)
|
@@ -272,39 +260,42 @@ module ReVIEW
|
|
272
260
|
end
|
273
261
|
|
274
262
|
def dl_begin
|
275
|
-
|
263
|
+
'<dl>' + @lf
|
276
264
|
end
|
277
265
|
|
278
266
|
def dt(line)
|
279
|
-
|
267
|
+
"<dt>#{line}</dt>" + @lf
|
280
268
|
end
|
281
269
|
|
282
270
|
def dd(lines)
|
283
|
-
|
271
|
+
"<dd>#{lines.join.chomp}</dd>" + @lf
|
284
272
|
end
|
285
273
|
|
286
274
|
def dl_end
|
287
|
-
|
275
|
+
'</dl>' + @lf
|
288
276
|
end
|
289
277
|
|
290
278
|
def paragraph(lines)
|
279
|
+
buf = ""
|
291
280
|
if @noindent.nil?
|
292
281
|
if lines[0] =~ /\A(\t+)/
|
293
|
-
|
282
|
+
buf << %Q(<p inlist="#{$1.size}">#{lines.join('').sub(/\A\t+/, "")}</p>) << @lf
|
294
283
|
else
|
295
|
-
|
284
|
+
buf << "<p>#{lines.join}</p>" << @lf
|
296
285
|
end
|
297
286
|
else
|
298
|
-
|
287
|
+
buf << %Q(<p aid:pstyle="noindent" noindent='1'>#{lines.join}</p>) << @lf
|
299
288
|
@noindent = nil
|
300
289
|
end
|
290
|
+
buf
|
301
291
|
end
|
302
292
|
|
303
293
|
def read(lines)
|
304
294
|
if @book.config["deprecated-blocklines"].nil?
|
305
|
-
|
295
|
+
%Q[<lead>#{lines.join}</lead>] + @lf
|
306
296
|
else
|
307
|
-
|
297
|
+
str = lines.map{|l| l.sub(/^<p>/,"").sub(/<\/p>$/,"")}.join()
|
298
|
+
%Q[<p aid:pstyle="lead">#{str}</p>] + @lf
|
308
299
|
end
|
309
300
|
end
|
310
301
|
|
@@ -337,34 +328,40 @@ module ReVIEW
|
|
337
328
|
end
|
338
329
|
|
339
330
|
def list_header(id, caption, lang)
|
340
|
-
|
331
|
+
buf = ""
|
332
|
+
buf << %Q[<codelist>] << @lf
|
341
333
|
if get_chap.nil?
|
342
|
-
|
334
|
+
buf << %Q[<caption>#{I18n.t("list")}#{I18n.t("format_number_without_chapter", [@chapter.list(id).number])}#{I18n.t("caption_prefix_idgxml")}#{caption}</caption>] << @lf
|
343
335
|
else
|
344
|
-
|
336
|
+
buf << %Q[<caption>#{I18n.t("list")}#{I18n.t("format_number", [get_chap, @chapter.list(id).number])}#{I18n.t("caption_prefix_idgxml")}#{caption}</caption>] << @lf
|
345
337
|
end
|
338
|
+
buf
|
346
339
|
end
|
347
340
|
|
348
341
|
def codelines_body(lines)
|
342
|
+
buf = ""
|
349
343
|
no = 1
|
350
344
|
lines.each do |line|
|
351
345
|
unless @book.config["listinfo"].nil?
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
346
|
+
buf << "<listinfo line=\"#{no}\""
|
347
|
+
buf << " begin=\"1\"" if no == 1
|
348
|
+
buf << " end=\"#{no}\"" if no == lines.size
|
349
|
+
buf << ">"
|
356
350
|
end
|
357
|
-
|
358
|
-
|
359
|
-
|
351
|
+
buf << detab(line)
|
352
|
+
buf << "\n"
|
353
|
+
buf << "</listinfo>" unless @book.config["listinfo"].nil?
|
360
354
|
no += 1
|
361
355
|
end
|
356
|
+
buf
|
362
357
|
end
|
363
358
|
|
364
359
|
def list_body(id, lines, lang)
|
365
|
-
|
366
|
-
|
367
|
-
|
360
|
+
buf = ""
|
361
|
+
buf << %Q(<pre>)
|
362
|
+
buf << codelines_body(lines)
|
363
|
+
buf << "</pre></codelist>" << @lf
|
364
|
+
buf
|
368
365
|
end
|
369
366
|
|
370
367
|
def emlist(lines, caption = nil, lang = nil)
|
@@ -374,27 +371,30 @@ module ReVIEW
|
|
374
371
|
def emlistnum(lines, caption = nil, lang = nil)
|
375
372
|
_lines = []
|
376
373
|
lines.each_with_index do |line, i|
|
374
|
+
line.chomp! ## new parser don't remove LF in table (code block)
|
377
375
|
_lines << detab("<span type='lineno'>" + (i + 1).to_s.rjust(2) + ": </span>" + line)
|
378
376
|
end
|
379
377
|
quotedlist _lines, 'emlistnum', caption
|
380
378
|
end
|
381
379
|
|
382
380
|
def listnum_body(lines, lang)
|
383
|
-
|
381
|
+
buf = ""
|
382
|
+
buf << %Q(<pre>)
|
384
383
|
no = 1
|
385
384
|
lines.each_with_index do |line, i|
|
386
385
|
unless @book.config["listinfo"].nil?
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
386
|
+
buf << "<listinfo line=\"#{no}\""
|
387
|
+
buf << " begin=\"1\"" if no == 1
|
388
|
+
buf << " end=\"#{no}\"" if no == lines.size
|
389
|
+
buf << ">"
|
391
390
|
end
|
392
|
-
|
393
|
-
|
394
|
-
|
391
|
+
buf << detab("<span type='lineno'>" + (i + 1).to_s.rjust(2) + ": </span>" + line)
|
392
|
+
buf << "\n"
|
393
|
+
buf << "</listinfo>" unless @book.config["listinfo"].nil?
|
395
394
|
no += 1
|
396
395
|
end
|
397
|
-
|
396
|
+
buf << "</pre></codelist>" << @lf
|
397
|
+
buf
|
398
398
|
end
|
399
399
|
|
400
400
|
def cmd(lines, caption = nil)
|
@@ -402,32 +402,34 @@ module ReVIEW
|
|
402
402
|
end
|
403
403
|
|
404
404
|
def quotedlist(lines, css_class, caption)
|
405
|
-
|
406
|
-
|
407
|
-
|
405
|
+
buf = ""
|
406
|
+
buf << %Q[<list type='#{css_class}'>]
|
407
|
+
buf << "<caption aid:pstyle='#{css_class}-title'>#{caption}</caption>" + @lf unless caption.nil?
|
408
|
+
buf << %Q[<pre>]
|
408
409
|
no = 1
|
409
410
|
lines.each do |line|
|
410
411
|
unless @book.config["listinfo"].nil?
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
412
|
+
buf << "<listinfo line=\"#{no}\""
|
413
|
+
buf << " begin=\"1\"" if no == 1
|
414
|
+
buf << " end=\"#{no}\"" if no == lines.size
|
415
|
+
buf << ">"
|
415
416
|
end
|
416
|
-
|
417
|
-
|
418
|
-
|
417
|
+
buf << detab(line)
|
418
|
+
buf << "\n"
|
419
|
+
buf << "</listinfo>" unless @book.config["listinfo"].nil?
|
419
420
|
no += 1
|
420
421
|
end
|
421
|
-
|
422
|
+
buf << '</pre></list>' << @lf
|
423
|
+
buf
|
422
424
|
end
|
423
425
|
private :quotedlist
|
424
426
|
|
425
427
|
def quote(lines)
|
426
428
|
if @book.config["deprecated-blocklines"].nil?
|
427
|
-
|
428
|
-
puts "<quote>#{blocked_lines.join("")}</quote>"
|
429
|
+
"<quote>#{lines.join("")}</quote>" + @lf
|
429
430
|
else
|
430
|
-
|
431
|
+
str = lines.map{|l| l.sub(/^<p>/,"").sub(/<\/p>$/,"")}.join("\n")
|
432
|
+
"<quote>#{str}</quote>" + @lf
|
431
433
|
end
|
432
434
|
end
|
433
435
|
|
@@ -472,53 +474,59 @@ module ReVIEW
|
|
472
474
|
end
|
473
475
|
|
474
476
|
def image_image(id, caption, metric=nil)
|
477
|
+
buf = ""
|
475
478
|
metrics = parse_metric("idgxml", metric)
|
476
|
-
|
477
|
-
|
478
|
-
image_header
|
479
|
-
|
479
|
+
buf << "<img>" << @lf
|
480
|
+
buf << %Q[<Image href="file://#{@chapter.image(id).path.sub(/\A.\//, "")}"#{metrics} />] << @lf
|
481
|
+
buf << image_header(id, caption)
|
482
|
+
buf << "</img>" << @lf
|
483
|
+
buf
|
480
484
|
end
|
481
485
|
|
482
486
|
def image_dummy(id, caption, lines)
|
483
|
-
|
484
|
-
|
487
|
+
buf << "<img>" << @lf
|
488
|
+
buf << %Q[<pre aid:pstyle="dummyimage">]
|
485
489
|
lines.each do |line|
|
486
|
-
|
487
|
-
|
490
|
+
buf << detab(line)
|
491
|
+
buf << "\n"
|
488
492
|
end
|
489
|
-
|
493
|
+
buf << %Q[</pre>]
|
490
494
|
image_header id, caption
|
491
|
-
|
495
|
+
buf << "</img>" << @lf
|
492
496
|
warn "no such image: #{id}"
|
497
|
+
buf
|
493
498
|
end
|
494
499
|
|
495
500
|
def image_header(id, caption)
|
496
501
|
if get_chap.nil?
|
497
|
-
|
502
|
+
%Q[<caption>#{I18n.t("image")}#{I18n.t("format_number_without_chapter", [@chapter.image(id).number])}#{I18n.t("caption_prefix_idgxml")}#{caption}</caption>] + @lf
|
498
503
|
else
|
499
|
-
|
504
|
+
%Q[<caption>#{I18n.t("image")}#{I18n.t("format_number", [get_chap, @chapter.image(id).number])}#{I18n.t("caption_prefix_idgxml")}#{caption}</caption>] + @lf
|
500
505
|
end
|
501
506
|
end
|
502
507
|
|
503
508
|
def texequation(lines)
|
509
|
+
buf = ""
|
504
510
|
@texblockequation += 1
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
511
|
+
buf << %Q[<replace idref="texblock-#{@texblockequation}">] << @lf
|
512
|
+
buf << '<pre>' << @lf
|
513
|
+
buf << "#{lines.join("\n")}" << @lf
|
514
|
+
buf << '</pre>' << @lf
|
515
|
+
buf << '</replace>' << @lf
|
510
516
|
end
|
511
517
|
|
512
518
|
def table(lines, id = nil, caption = nil)
|
519
|
+
buf = ""
|
513
520
|
tablewidth = nil
|
514
521
|
col = 0
|
515
522
|
unless @book.config["tableopt"].nil?
|
516
523
|
tablewidth = @book.config["tableopt"].split(",")[0].to_f / 0.351 # mm -> pt
|
517
524
|
end
|
518
|
-
|
525
|
+
buf << "<table>"
|
519
526
|
rows = []
|
520
527
|
sepidx = nil
|
521
528
|
lines.each_with_index do |line, idx|
|
529
|
+
line.chomp! ## new parser don't remove LF in table (code block)
|
522
530
|
if /\A[\=\-]{12}/ =~ line
|
523
531
|
sepidx ||= idx
|
524
532
|
next
|
@@ -541,7 +549,7 @@ module ReVIEW
|
|
541
549
|
totallength = 0
|
542
550
|
cellwidth.size.times do |n|
|
543
551
|
cellwidth[n] = cellwidth[n].to_f / 0.351 # mm -> pt
|
544
|
-
totallength
|
552
|
+
totallength = totallength + cellwidth[n]
|
545
553
|
warn "total length exceeds limit for table: #{id}" if totallength > tablewidth
|
546
554
|
end
|
547
555
|
if cellwidth.size < col
|
@@ -555,66 +563,71 @@ module ReVIEW
|
|
555
563
|
end
|
556
564
|
|
557
565
|
begin
|
558
|
-
table_header
|
566
|
+
buf << table_header(id, caption) unless caption.nil?
|
559
567
|
rescue KeyError
|
560
568
|
error "no such table: #{id}"
|
561
569
|
end
|
562
570
|
return if rows.empty?
|
563
571
|
|
564
572
|
if tablewidth.nil?
|
565
|
-
|
573
|
+
buf << "<tbody>"
|
566
574
|
else
|
567
|
-
|
575
|
+
buf << %Q[<tbody xmlns:aid5="http://ns.adobe.com/AdobeInDesign/5.0/" aid:table="table" aid:trows="#{rows.length}" aid:tcols="#{col}">]
|
568
576
|
end
|
569
577
|
|
570
578
|
if sepidx
|
571
579
|
sepidx.times do |y|
|
572
580
|
if tablewidth.nil?
|
573
|
-
|
581
|
+
buf << %Q[<tr type="header">#{rows.shift}</tr>] << @lf
|
574
582
|
else
|
575
583
|
i = 0
|
576
584
|
rows.shift.split(/\t/).each_with_index do |cell, x|
|
577
|
-
|
585
|
+
buf << %Q[<td xyh="#{x + 1},#{y + 1},#{sepidx}" aid:table="cell" aid:theader="1" aid:crows="1" aid:ccols="1" aid:ccolwidth="#{sprintf("%.13f", cellwidth[i])}">#{cell.sub("DUMMYCELLSPLITTER", "")}</td>]
|
578
586
|
i += 1
|
579
587
|
end
|
580
588
|
end
|
581
589
|
end
|
582
590
|
end
|
583
|
-
trputs(tablewidth, rows, cellwidth, sepidx)
|
584
|
-
|
591
|
+
buf << trputs(tablewidth, rows, cellwidth, sepidx)
|
592
|
+
buf << "</tbody></table>" << @lf
|
585
593
|
@tsize = nil
|
594
|
+
buf
|
586
595
|
end
|
587
596
|
|
588
597
|
def trputs(tablewidth, rows, cellwidth, sepidx)
|
598
|
+
buf = ""
|
589
599
|
sepidx = 0 if sepidx.nil?
|
590
600
|
if tablewidth.nil?
|
591
601
|
lastline = rows.pop
|
592
|
-
rows.each {|row|
|
593
|
-
|
602
|
+
rows.each {|row| buf << %Q[<tr>#{row}</tr>] }
|
603
|
+
buf << %Q[<tr type="lastline">#{lastline}</tr>] + @lf unless lastline.nil?
|
594
604
|
else
|
595
605
|
rows.each_with_index do |row, y|
|
596
606
|
i = 0
|
597
607
|
row.split(/\t/).each_with_index do |cell, x|
|
598
|
-
|
608
|
+
buf << %Q[<td xyh="#{x + 1},#{y + 1 + sepidx},#{sepidx}" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="#{sprintf("%.13f", cellwidth[i])}">#{cell.sub("DUMMYCELLSPLITTER", "")}</td>]
|
599
609
|
i += 1
|
600
610
|
end
|
601
611
|
end
|
602
612
|
end
|
613
|
+
buf
|
603
614
|
end
|
604
615
|
|
605
616
|
def table_header(id, caption)
|
617
|
+
buf = ""
|
606
618
|
if get_chap.nil?
|
607
|
-
|
619
|
+
buf << %Q[<caption>#{I18n.t("table")}#{I18n.t("format_number_without_chapter", [@chapter.table(id).number])}#{I18n.t("caption_prefix_idgxml")}#{caption}</caption>] + @lf
|
608
620
|
else
|
609
|
-
|
621
|
+
buf << %Q[<caption>#{I18n.t("table")}#{I18n.t("format_number", [get_chap, @chapter.table(id).number])}#{I18n.t("caption_prefix_idgxml")}#{caption}</caption>] + @lf
|
610
622
|
end
|
623
|
+
buf
|
611
624
|
end
|
612
625
|
|
613
626
|
def table_begin(ncols)
|
614
627
|
end
|
615
628
|
|
616
629
|
def tr(rows)
|
617
|
-
|
630
|
+
%Q[<tr>#{rows.join("\t")}</tr>] + @lf
|
618
631
|
end
|
619
632
|
|
620
633
|
def th(str)
|
@@ -626,11 +639,11 @@ module ReVIEW
|
|
626
639
|
end
|
627
640
|
|
628
641
|
def table_end
|
629
|
-
|
642
|
+
"<?dtp tablerow last?>"
|
630
643
|
end
|
631
644
|
|
632
645
|
def comment(str)
|
633
|
-
|
646
|
+
%Q(<!-- [Comment] #{escape_html(str)} -->)
|
634
647
|
end
|
635
648
|
|
636
649
|
def footnote(id, str)
|
@@ -638,7 +651,7 @@ module ReVIEW
|
|
638
651
|
end
|
639
652
|
|
640
653
|
def inline_fn(id)
|
641
|
-
%Q[<footnote>#{
|
654
|
+
%Q[<footnote>#{@chapter.footnote(id).content.strip}</footnote>]
|
642
655
|
end
|
643
656
|
|
644
657
|
def compile_ruby(base, ruby)
|
@@ -648,13 +661,13 @@ module ReVIEW
|
|
648
661
|
def compile_kw(word, alt)
|
649
662
|
'<keyword>' +
|
650
663
|
if alt
|
651
|
-
then
|
652
|
-
else
|
664
|
+
then ("#{word}(#{alt.strip})")
|
665
|
+
else (word)
|
653
666
|
end +
|
654
667
|
'</keyword>' +
|
655
|
-
%Q[<index value="#{
|
668
|
+
%Q[<index value="#{word}" />] +
|
656
669
|
if alt
|
657
|
-
alt.split(/\s*,\s*/).collect! {|e| %Q[<index value="#{
|
670
|
+
alt.split(/\s*,\s*/).collect! {|e| %Q[<index value="#{(e.strip)}" />] }.join
|
658
671
|
else
|
659
672
|
""
|
660
673
|
end
|
@@ -725,11 +738,11 @@ module ReVIEW
|
|
725
738
|
end
|
726
739
|
|
727
740
|
def inline_tt(str)
|
728
|
-
%Q(<tt>#{
|
741
|
+
%Q(<tt>#{str}</tt>)
|
729
742
|
end
|
730
743
|
|
731
744
|
def inline_ttb(str)
|
732
|
-
%Q(<tt style='bold'>#{
|
745
|
+
%Q(<tt style='bold'>#{str}</tt>)
|
733
746
|
end
|
734
747
|
|
735
748
|
alias_method :inline_ttbold, :inline_ttb
|
@@ -760,13 +773,13 @@ module ReVIEW
|
|
760
773
|
end
|
761
774
|
|
762
775
|
def inline_labelref(idref)
|
763
|
-
%Q[<ref idref='#{
|
776
|
+
%Q[<ref idref='#{(idref)}'>「#{I18n.t("label_marker")}#{(idref)}」</ref>] # FIXME:節名とタイトルも込みで要出力
|
764
777
|
end
|
765
778
|
|
766
779
|
alias_method :inline_ref, :inline_labelref
|
767
780
|
|
768
781
|
def inline_pageref(idref)
|
769
|
-
%Q[<pageref idref='#{
|
782
|
+
%Q[<pageref idref='#{(idref)}'>●●</pageref>] # ページ番号を参照
|
770
783
|
end
|
771
784
|
|
772
785
|
def inline_balloon(str)
|
@@ -784,40 +797,43 @@ module ReVIEW
|
|
784
797
|
|
785
798
|
def noindent
|
786
799
|
@noindent = true
|
800
|
+
""
|
787
801
|
end
|
788
802
|
|
789
803
|
def linebreak
|
790
804
|
# FIXME:pが閉じちゃってるので一度戻らないといけないが、難しい…。
|
791
|
-
|
805
|
+
"<br />" + @lf
|
792
806
|
end
|
793
807
|
|
794
808
|
def pagebreak
|
795
|
-
|
809
|
+
"<pagebreak />" + @lf
|
796
810
|
end
|
797
811
|
|
798
812
|
def nonum_begin(level, label, caption)
|
799
|
-
|
813
|
+
%Q[<title aid:pstyle="h#{level}">#{caption}</title><?dtp level="#{level}" section="#{escape_html(caption)}"?>] + @lf
|
800
814
|
end
|
801
815
|
|
802
816
|
def nonum_end(level)
|
803
817
|
end
|
804
818
|
|
805
819
|
def circle_begin(level, label, caption)
|
806
|
-
|
820
|
+
%Q[<title aid:pstyle="smallcircle">•#{caption}</title>] + @lf
|
807
821
|
end
|
808
822
|
|
809
823
|
def circle_end(level)
|
810
824
|
end
|
811
825
|
|
812
826
|
def common_column_begin(type, caption)
|
827
|
+
buf = ""
|
813
828
|
@column += 1
|
814
829
|
a_id = %Q[id="column-#{@column}"]
|
815
|
-
|
816
|
-
|
830
|
+
buf << "<#{type}column #{a_id}>"
|
831
|
+
buf << %Q[<title aid:pstyle="#{type}column-title">#{compile_inline(caption)}</title>] << @lf
|
832
|
+
buf
|
817
833
|
end
|
818
834
|
|
819
835
|
def common_column_end(type)
|
820
|
-
|
836
|
+
"</#{type}column>" + @lf
|
821
837
|
end
|
822
838
|
|
823
839
|
def column_begin(level, label, caption)
|
@@ -870,50 +886,53 @@ module ReVIEW
|
|
870
886
|
|
871
887
|
def ref_begin(level, label, caption)
|
872
888
|
if !label.nil?
|
873
|
-
|
889
|
+
"<reference id='#{label}'>" + @lf
|
874
890
|
else
|
875
|
-
|
891
|
+
"<reference>" + @lf
|
876
892
|
end
|
877
893
|
end
|
878
894
|
|
879
895
|
def ref_end(level)
|
880
|
-
|
896
|
+
"</reference>" + @lf
|
881
897
|
end
|
882
898
|
|
883
899
|
def sup_begin(level, label, caption)
|
884
900
|
if !label.nil?
|
885
|
-
|
901
|
+
"<supplement id='#{label}'>" + @lf
|
886
902
|
else
|
887
|
-
|
903
|
+
"<supplement>" + @lf
|
888
904
|
end
|
889
905
|
end
|
890
906
|
|
891
907
|
def sup_end(level)
|
892
|
-
|
908
|
+
"</supplement>" + @lf
|
893
909
|
end
|
894
910
|
|
895
911
|
def flushright(lines)
|
896
912
|
if @book.config["deprecated-blocklines"].nil?
|
897
|
-
|
913
|
+
lines.join("").gsub("<p>", "<p align='right'>") + @lf
|
898
914
|
else
|
899
|
-
|
915
|
+
str = lines.map{|l| l.sub(/^<p>/,"").sub(/<\/p>$/,"")}.join("\n")
|
916
|
+
"<p align='right'>#{str}</p>" + @lf
|
900
917
|
end
|
901
918
|
end
|
902
919
|
|
903
920
|
def centering(lines)
|
904
|
-
|
921
|
+
lines.join("").gsub("<p>", "<p align='center'>") + @lf
|
905
922
|
end
|
906
923
|
|
907
924
|
def captionblock(type, lines, caption, specialstyle = nil)
|
908
|
-
|
925
|
+
buf = ""
|
926
|
+
buf << "<#{type}>"
|
909
927
|
style = specialstyle.nil? ? "#{type}-title" : specialstyle
|
910
|
-
|
928
|
+
buf << "<title aid:pstyle='#{style}'>#{(caption)}</title>" + @lf unless caption.nil?
|
911
929
|
if @book.config["deprecated-blocklines"].nil?
|
912
|
-
|
913
|
-
puts "#{blocked_lines.join}</#{type}>"
|
930
|
+
buf << "#{lines.join}</#{type}>" << @lf
|
914
931
|
else
|
915
|
-
|
932
|
+
str = lines.map{|l| l.sub(/^<p>/,"").sub(/<\/p>$/,"")}.join("\n")
|
933
|
+
buf << "#{str}</#{type}>" << @lf
|
916
934
|
end
|
935
|
+
buf
|
917
936
|
end
|
918
937
|
|
919
938
|
def note(lines, caption = nil)
|
@@ -997,8 +1016,9 @@ module ReVIEW
|
|
997
1016
|
end
|
998
1017
|
|
999
1018
|
def syntaxblock(type, lines, caption)
|
1019
|
+
buf = ""
|
1000
1020
|
if caption.nil?
|
1001
|
-
|
1021
|
+
buf << %Q[<#{type}>] << @lf
|
1002
1022
|
else
|
1003
1023
|
titleopentag = %Q[caption aid:pstyle="#{type}-title"]
|
1004
1024
|
titleclosetag = "caption"
|
@@ -1006,22 +1026,24 @@ module ReVIEW
|
|
1006
1026
|
titleopentag = %Q[floattitle type="insn"]
|
1007
1027
|
titleclosetag = "floattitle"
|
1008
1028
|
end
|
1009
|
-
|
1029
|
+
buf << %Q[<#{type}><#{titleopentag}>#{caption}</#{titleclosetag}>] << @lf
|
1010
1030
|
end
|
1011
1031
|
no = 1
|
1012
1032
|
lines.each do |line|
|
1033
|
+
line.chomp!
|
1013
1034
|
unless @book.config["listinfo"].nil?
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1035
|
+
buf << %Q[<listinfo line="#{no}"]
|
1036
|
+
buf << %Q[ begin="1"] if no == 1
|
1037
|
+
buf << %Q[ end="#{no}"] if no == lines.size
|
1038
|
+
buf << %Q[>]
|
1018
1039
|
end
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1040
|
+
buf << detab(line)
|
1041
|
+
buf << "\n"
|
1042
|
+
buf << "</listinfo>" unless @book.config["listinfo"].nil?
|
1022
1043
|
no += 1
|
1023
1044
|
end
|
1024
|
-
|
1045
|
+
buf << "</#{type}>" << @lf
|
1046
|
+
buf
|
1025
1047
|
end
|
1026
1048
|
|
1027
1049
|
def insn(lines, caption = nil)
|
@@ -1033,22 +1055,24 @@ module ReVIEW
|
|
1033
1055
|
end
|
1034
1056
|
|
1035
1057
|
def indepimage(id, caption=nil, metric=nil)
|
1058
|
+
buf = ""
|
1036
1059
|
metrics = parse_metric("idgxml", metric)
|
1037
|
-
|
1060
|
+
buf << "<img>" << @lf
|
1038
1061
|
begin
|
1039
|
-
|
1062
|
+
buf << %Q[<Image href="file://#{@chapter.image(id).path.sub(/\A\.\//, "")}"#{metrics} />] << @lf
|
1040
1063
|
rescue
|
1041
1064
|
warn %Q[no such image: #{id}]
|
1042
1065
|
end
|
1043
|
-
|
1044
|
-
|
1066
|
+
buf << %Q[<caption>#{caption}</caption>] + @lf if caption.present?
|
1067
|
+
buf << "</img>" << @lf
|
1068
|
+
buf
|
1045
1069
|
end
|
1046
1070
|
|
1047
1071
|
alias_method :numberlessimage, :indepimage
|
1048
1072
|
|
1049
1073
|
def label(id)
|
1050
1074
|
# FIXME
|
1051
|
-
|
1075
|
+
"<label id='#{id}' />"
|
1052
1076
|
end
|
1053
1077
|
|
1054
1078
|
def tsize(str)
|
@@ -1056,15 +1080,15 @@ module ReVIEW
|
|
1056
1080
|
end
|
1057
1081
|
|
1058
1082
|
def dtp(str)
|
1059
|
-
|
1083
|
+
%Q(<?dtp #{str} ?>)
|
1060
1084
|
end
|
1061
1085
|
|
1062
1086
|
def hr
|
1063
|
-
|
1087
|
+
"<hr />"
|
1064
1088
|
end
|
1065
1089
|
|
1066
1090
|
def bpo(lines)
|
1067
|
-
|
1091
|
+
%Q[<bpo>#{lines.join("\n")}</bpo>] + @lf
|
1068
1092
|
end
|
1069
1093
|
|
1070
1094
|
def inline_dtp(str)
|
@@ -1080,12 +1104,14 @@ module ReVIEW
|
|
1080
1104
|
end
|
1081
1105
|
|
1082
1106
|
def rawblock(lines)
|
1107
|
+
buf = ""
|
1083
1108
|
no = 1
|
1084
1109
|
lines.each do |l|
|
1085
|
-
|
1086
|
-
|
1087
|
-
no
|
1110
|
+
buf << l.gsub("<", "<").gsub(">", ">").gsub(""", "\"").gsub("&", "&")
|
1111
|
+
buf << "\n" unless lines.length == no
|
1112
|
+
no = no + 1
|
1088
1113
|
end
|
1114
|
+
buf
|
1089
1115
|
end
|
1090
1116
|
|
1091
1117
|
def text(str)
|
@@ -1095,7 +1121,8 @@ module ReVIEW
|
|
1095
1121
|
def inline_chapref(id)
|
1096
1122
|
chs = ["", "「", "」"]
|
1097
1123
|
unless @book.config["chapref"].nil?
|
1098
|
-
_chs = @book.config["chapref"]
|
1124
|
+
_chs = convert_inencoding(@book.config["chapref"],
|
1125
|
+
@book.config["inencoding"]).split(",")
|
1099
1126
|
if _chs.size != 3
|
1100
1127
|
error "--chapsplitter must have exactly 3 parameters with comma."
|
1101
1128
|
else
|
@@ -1138,31 +1165,39 @@ module ReVIEW
|
|
1138
1165
|
end
|
1139
1166
|
|
1140
1167
|
def source_header(caption)
|
1141
|
-
|
1142
|
-
|
1168
|
+
buf = ""
|
1169
|
+
buf << %Q[<source>] << @lf
|
1170
|
+
buf << %Q[<caption>#{caption}</caption>] << @lf
|
1171
|
+
buf
|
1143
1172
|
end
|
1144
1173
|
|
1145
|
-
def source_body(lines
|
1146
|
-
|
1147
|
-
|
1148
|
-
|
1174
|
+
def source_body(lines)
|
1175
|
+
buf = ""
|
1176
|
+
buf << %Q[<pre>] << @lf
|
1177
|
+
buf << codelines_body(lines)
|
1178
|
+
buf << %Q[</pre></source>] << @lf
|
1179
|
+
buf
|
1149
1180
|
end
|
1150
1181
|
|
1151
1182
|
def bibpaper(lines, id, caption)
|
1152
|
-
|
1183
|
+
buf = ""
|
1184
|
+
buf << bibpaper_header(id, caption)
|
1153
1185
|
unless lines.empty?
|
1154
|
-
bibpaper_bibpaper
|
1186
|
+
buf << bibpaper_bibpaper(id, caption, lines)
|
1155
1187
|
end
|
1156
|
-
|
1188
|
+
buf << %Q(</bibitem>) << @lf
|
1189
|
+
buf
|
1157
1190
|
end
|
1158
1191
|
|
1159
1192
|
def bibpaper_header(id, caption)
|
1160
|
-
|
1161
|
-
|
1193
|
+
buf = ""
|
1194
|
+
buf << %Q(<bibitem id="bib-#{id}">) << @lf
|
1195
|
+
buf << "<caption><span type='bibno'>[#{@chapter.bibpaper(id).number}] </span>#{caption}</caption>" << @lf
|
1196
|
+
buf
|
1162
1197
|
end
|
1163
1198
|
|
1164
1199
|
def bibpaper_bibpaper(id, caption, lines)
|
1165
|
-
|
1200
|
+
lines.join("")
|
1166
1201
|
end
|
1167
1202
|
|
1168
1203
|
def inline_bib(id)
|
@@ -1173,10 +1208,10 @@ module ReVIEW
|
|
1173
1208
|
if chap.number
|
1174
1209
|
n = chap.headline_index.number(id)
|
1175
1210
|
if @book.config["secnolevel"] >= n.split('.').size
|
1176
|
-
return I18n.t("chapter_quote", "#{n} #{
|
1211
|
+
return I18n.t("chapter_quote", "#{n} #{chap.headline(id).caption}")
|
1177
1212
|
end
|
1178
1213
|
end
|
1179
|
-
I18n.t("chapter_quote",
|
1214
|
+
I18n.t("chapter_quote", chap.headline(id).caption)
|
1180
1215
|
end
|
1181
1216
|
|
1182
1217
|
def inline_recipe(id)
|
@@ -1194,4 +1229,4 @@ module ReVIEW
|
|
1194
1229
|
|
1195
1230
|
end
|
1196
1231
|
|
1197
|
-
end
|
1232
|
+
end # module ReVIEW
|