review 2.3.0 → 2.4.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/.rubocop.yml +90 -66
- data/.travis.yml +1 -1
- data/Gemfile +0 -1
- data/NEWS.ja.md +82 -0
- data/NEWS.md +83 -0
- data/README.md +5 -3
- data/Rakefile +8 -8
- data/bin/review +1 -5
- data/bin/review-catalog-converter +22 -27
- data/bin/review-check +36 -43
- data/bin/review-checkdep +10 -15
- data/bin/review-compile +37 -55
- data/bin/review-epubmaker +4 -5
- data/bin/review-index +21 -29
- data/bin/review-init +26 -37
- data/bin/review-pdfmaker +0 -2
- data/bin/review-preproc +25 -45
- data/bin/review-validate +19 -18
- data/bin/review-vol +15 -27
- data/doc/config.yml.sample +5 -2
- data/doc/format.ja.md +20 -1
- data/doc/format.md +21 -5
- data/doc/images/review-generate.png +0 -0
- data/lib/epubmaker.rb +1 -3
- data/lib/epubmaker/content.rb +24 -27
- data/lib/epubmaker/epubcommon.rb +135 -148
- data/lib/epubmaker/epubv2.rb +39 -46
- data/lib/epubmaker/epubv3.rb +93 -103
- data/lib/epubmaker/producer.rb +138 -151
- data/lib/epubmaker/zip_exporter.rb +21 -26
- data/lib/review/book.rb +3 -6
- data/lib/review/book/base.rb +78 -103
- data/lib/review/book/chapter.rb +36 -40
- data/lib/review/book/compilable.rb +28 -31
- data/lib/review/book/image_finder.rb +6 -13
- data/lib/review/book/index.rb +100 -121
- data/lib/review/book/page_metric.rb +2 -7
- data/lib/review/book/part.rb +18 -20
- data/lib/review/book/volume.rb +9 -13
- data/lib/review/builder.rb +81 -116
- data/lib/review/catalog.rb +15 -19
- data/lib/review/compiler.rb +64 -83
- data/lib/review/configure.rb +87 -97
- data/lib/review/converter.rb +2 -7
- data/lib/review/epubbuilder.rb +1 -3
- data/lib/review/epubmaker.rb +213 -205
- data/lib/review/exception.rb +2 -4
- data/lib/review/extentions.rb +0 -1
- data/lib/review/extentions/hash.rb +2 -2
- data/lib/review/extentions/string.rb +5 -30
- data/lib/review/htmlbuilder.rb +320 -375
- data/lib/review/htmltoc.rb +4 -7
- data/lib/review/htmlutils.rb +29 -32
- data/lib/review/i18n.rb +33 -44
- data/lib/review/i18n.yml +3 -3
- data/lib/review/idgxmlbuilder.rb +309 -345
- data/lib/review/latexbuilder.rb +175 -212
- data/lib/review/latexindex.rb +2 -8
- data/lib/review/latexutils.rb +33 -43
- data/lib/review/lineinput.rb +1 -1
- data/lib/review/logger.rb +21 -0
- data/lib/review/makerhelper.rb +1 -4
- data/lib/review/markdownbuilder.rb +44 -53
- data/lib/review/md2inaobuilder.rb +6 -12
- data/lib/review/pdfmaker.rb +143 -173
- data/lib/review/preprocessor.rb +64 -101
- data/lib/review/rstbuilder.rb +126 -158
- data/lib/review/sec_counter.rb +18 -34
- data/lib/review/template.rb +4 -5
- data/lib/review/textbuilder.rb +2 -3
- data/lib/review/textutils.rb +7 -13
- data/lib/review/tocparser.rb +31 -56
- data/lib/review/tocprinter.rb +26 -52
- data/lib/review/topbuilder.rb +219 -247
- data/lib/review/unfold.rb +15 -24
- data/lib/review/version.rb +1 -1
- data/lib/review/webmaker.rb +75 -99
- data/lib/review/webtocprinter.rb +15 -20
- data/lib/review/yamlloader.rb +13 -15
- data/review.gemspec +20 -22
- data/templates/latex/layout.tex.erb +2 -2
- data/templates/opf/epubv2.opf.erb +7 -7
- data/templates/opf/epubv3.opf.erb +7 -7
- data/templates/web/html/layout-html5.html.erb +2 -2
- data/test/assets/black.eps +280 -0
- data/test/assets/fit.png +0 -0
- data/test/assets/large.gif +0 -0
- data/test/assets/large.jpg +0 -0
- data/test/assets/large.png +0 -0
- data/test/assets/large.svg +65 -0
- data/test/assets/test_template.tex +1 -1
- data/test/book_test_helper.rb +2 -2
- data/test/run_test.rb +4 -4
- data/test/sample-book/src/Rakefile +21 -22
- data/test/syntax-book/Gemfile +4 -0
- data/test/syntax-book/Rakefile +72 -0
- data/test/syntax-book/appA.re +22 -0
- data/test/syntax-book/bib.re +6 -0
- data/test/syntax-book/catalog.yml +15 -0
- data/test/syntax-book/ch01.re +136 -0
- data/test/syntax-book/ch02.re +351 -0
- data/test/syntax-book/ch03.re +82 -0
- data/test/syntax-book/config.yml +35 -0
- data/test/syntax-book/images/ball.png +0 -0
- data/test/syntax-book/images/cover.jpg +0 -0
- data/test/syntax-book/images/fractal.png +0 -0
- data/test/syntax-book/images/img3-1.png +0 -0
- data/test/syntax-book/images/inlineicon.jpg +0 -0
- data/test/syntax-book/images/logic.png +0 -0
- data/test/syntax-book/images/logic2.png +0 -0
- data/test/syntax-book/images/puzzle.jpg +0 -0
- data/test/syntax-book/images/table.jpg +0 -0
- data/test/syntax-book/part2.re +6 -0
- data/test/syntax-book/pre01.re +26 -0
- data/test/syntax-book/review-ext.rb +14 -0
- data/test/syntax-book/sty/jumoline.sty +310 -0
- data/test/syntax-book/sty/reviewmacro.sty +39 -0
- data/test/syntax-book/style.css +494 -0
- data/test/syntax-book/syntax.dic +2 -0
- data/test/test_book.rb +106 -111
- data/test/test_book_chapter.rb +21 -22
- data/test/test_book_part.rb +3 -5
- data/test/test_builder.rb +11 -22
- data/test/test_catalog.rb +17 -18
- data/test/test_catalog_converter_cmd.rb +5 -5
- data/test/test_compiler.rb +18 -16
- data/test/test_configure.rb +35 -38
- data/test/test_converter.rb +3 -4
- data/test/test_epub3maker.rb +136 -117
- data/test/test_epubmaker.rb +107 -114
- data/test/test_epubmaker_cmd.rb +2 -4
- data/test/test_extentions_hash.rb +32 -33
- data/test/test_helper.rb +9 -11
- data/test/test_htmlbuilder.rb +454 -420
- data/test/test_htmltoc.rb +8 -12
- data/test/test_htmlutils.rb +0 -2
- data/test/test_i18n.rb +159 -150
- data/test/test_idgxmlbuilder.rb +190 -197
- data/test/test_image_finder.rb +21 -22
- data/test/test_index.rb +24 -29
- data/test/test_latexbuilder.rb +274 -264
- data/test/test_lineinput.rb +7 -10
- data/test/test_location.rb +7 -7
- data/test/test_makerhelper.rb +13 -25
- data/test/test_markdownbuilder.rb +23 -26
- data/test/test_md2inaobuilder.rb +8 -11
- data/test/test_pdfmaker.rb +114 -123
- data/test/test_pdfmaker_cmd.rb +1 -3
- data/test/test_review_ext.rb +3 -5
- data/test/test_rstbuilder.rb +92 -97
- data/test/test_template.rb +3 -7
- data/test/test_textutils.rb +27 -27
- data/test/test_tocparser.rb +2 -2
- data/test/test_topbuilder.rb +98 -103
- data/test/test_webtocprinter.rb +5 -6
- data/test/test_yamlloader.rb +42 -42
- data/test/test_zip_exporter.rb +12 -18
- metadata +86 -9
- data/lib/review/ewbbuilder.rb +0 -382
data/lib/review/latexbuilder.rb
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
1
|
# Copyright (c) 2002-2007 Minero Aoki
|
|
4
2
|
# 2008-2009 Minero Aoki, Kenshi Muto
|
|
5
3
|
# 2010-2017 Minero Aoki, Kenshi Muto, TAKAHASHI Masayoshi
|
|
@@ -15,15 +13,11 @@ require 'review/latexutils'
|
|
|
15
13
|
require 'review/textutils'
|
|
16
14
|
|
|
17
15
|
module ReVIEW
|
|
18
|
-
|
|
19
16
|
class LATEXBuilder < Builder
|
|
20
|
-
|
|
21
17
|
include LaTeXUtils
|
|
22
18
|
include TextUtils
|
|
23
19
|
|
|
24
|
-
[
|
|
25
|
-
Compiler.definline(e)
|
|
26
|
-
}
|
|
20
|
+
%i[dtp hd_chap].each { |e| Compiler.definline(e) }
|
|
27
21
|
|
|
28
22
|
Compiler.defsingle(:latextsize, 1)
|
|
29
23
|
|
|
@@ -32,7 +26,7 @@ module ReVIEW
|
|
|
32
26
|
end
|
|
33
27
|
|
|
34
28
|
def builder_init_file
|
|
35
|
-
@chapter.book.image_types = %w
|
|
29
|
+
@chapter.book.image_types = %w[.ai .eps .pdf .tif .tiff .png .bmp .jpg .jpeg .gif]
|
|
36
30
|
@blank_needed = false
|
|
37
31
|
@latex_tsize = nil
|
|
38
32
|
@tsize = nil
|
|
@@ -41,24 +35,23 @@ module ReVIEW
|
|
|
41
35
|
@first_line_num = nil
|
|
42
36
|
@sec_counter = SecCounter.new(5, @chapter)
|
|
43
37
|
setup_index
|
|
44
|
-
initialize_metachars(@book.config[
|
|
38
|
+
initialize_metachars(@book.config['texcommand'])
|
|
45
39
|
end
|
|
46
40
|
private :builder_init_file
|
|
47
41
|
|
|
48
42
|
def setup_index
|
|
49
43
|
@index_db = {}
|
|
50
44
|
@index_mecab = nil
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
end
|
|
45
|
+
return true unless @book.config['pdfmaker']['makeindex']
|
|
46
|
+
|
|
47
|
+
@index_db = load_idxdb(@book.config['pdfmaker']['makeindex_dic']) if @book.config['pdfmaker']['makeindex_dic']
|
|
48
|
+
return true unless @book.config['pdfmaker']['makeindex_mecab']
|
|
49
|
+
begin
|
|
50
|
+
require 'MeCab'
|
|
51
|
+
require 'nkf'
|
|
52
|
+
@index_mecab = MeCab::Tagger.new(@book.config['pdfmaker']['makeindex_mecab_opts'])
|
|
53
|
+
rescue LoadError
|
|
54
|
+
error 'not found MeCab'
|
|
62
55
|
end
|
|
63
56
|
end
|
|
64
57
|
|
|
@@ -101,50 +94,48 @@ module ReVIEW
|
|
|
101
94
|
4 => 'subsubsection',
|
|
102
95
|
5 => 'paragraph',
|
|
103
96
|
6 => 'subparagraph'
|
|
104
|
-
}
|
|
97
|
+
}.freeze
|
|
105
98
|
|
|
106
99
|
def headline(level, label, caption)
|
|
107
100
|
_, anchor = headline_prefix(level)
|
|
108
101
|
headline_name = HEADLINE[level]
|
|
109
|
-
if @chapter.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
end
|
|
102
|
+
headline_name = 'part' if @chapter.is_a? ReVIEW::Book::Part
|
|
103
|
+
prefix = if level > @book.config['secnolevel'] || (@chapter.number.to_s.empty? && level > 1)
|
|
104
|
+
'*'
|
|
105
|
+
else
|
|
106
|
+
''
|
|
107
|
+
end
|
|
116
108
|
blank unless @output.pos == 0
|
|
117
|
-
puts macro(headline_name+prefix, compile_inline(caption))
|
|
118
|
-
if prefix ==
|
|
119
|
-
puts "\\addcontentsline{toc}{#{headline_name}}{#{compile_inline(caption)}}"
|
|
120
|
-
end
|
|
109
|
+
puts macro(headline_name + prefix, compile_inline(caption))
|
|
110
|
+
puts "\\addcontentsline{toc}{#{headline_name}}{#{compile_inline(caption)}}" if prefix == '*' && level <= @book.config['toclevel'].to_i
|
|
121
111
|
if level == 1
|
|
122
112
|
puts macro('label', chapter_label)
|
|
123
113
|
else
|
|
124
114
|
puts macro('label', sec_label(anchor))
|
|
115
|
+
puts macro('label', label) if label
|
|
125
116
|
end
|
|
126
117
|
rescue
|
|
127
118
|
error "unknown level: #{level}"
|
|
128
119
|
end
|
|
129
120
|
|
|
130
|
-
def nonum_begin(level,
|
|
121
|
+
def nonum_begin(level, _label, caption)
|
|
131
122
|
blank unless @output.pos == 0
|
|
132
|
-
puts macro(HEADLINE[level]+
|
|
123
|
+
puts macro(HEADLINE[level] + '*', compile_inline(caption))
|
|
133
124
|
puts macro('addcontentsline', 'toc', HEADLINE[level], compile_inline(caption))
|
|
134
125
|
end
|
|
135
126
|
|
|
136
127
|
def nonum_end(level)
|
|
137
128
|
end
|
|
138
129
|
|
|
139
|
-
def notoc_begin(level,
|
|
130
|
+
def notoc_begin(level, _label, caption)
|
|
140
131
|
blank unless @output.pos == 0
|
|
141
|
-
puts macro(HEADLINE[level]+
|
|
132
|
+
puts macro(HEADLINE[level] + '*', compile_inline(caption))
|
|
142
133
|
end
|
|
143
134
|
|
|
144
135
|
def notoc_end(level)
|
|
145
136
|
end
|
|
146
137
|
|
|
147
|
-
def nodisp_begin(level,
|
|
138
|
+
def nodisp_begin(level, _label, caption)
|
|
148
139
|
blank unless @output.pos == 0
|
|
149
140
|
puts macro('clearpage') if @output.pos == 0
|
|
150
141
|
puts macro('addcontentsline', 'toc', HEADLINE[level], compile_inline(caption))
|
|
@@ -163,21 +154,17 @@ module ReVIEW
|
|
|
163
154
|
puts "\\hypertarget{#{column_label(caption)}}{}"
|
|
164
155
|
end
|
|
165
156
|
puts macro('reviewcolumnhead', nil, compile_inline(caption))
|
|
166
|
-
if level <= @book.config[
|
|
167
|
-
puts "\\addcontentsline{toc}{#{HEADLINE[level]}}{#{compile_inline(caption)}}"
|
|
168
|
-
end
|
|
157
|
+
puts "\\addcontentsline{toc}{#{HEADLINE[level]}}{#{compile_inline(caption)}}" if level <= @book.config['toclevel'].to_i
|
|
169
158
|
end
|
|
170
159
|
|
|
171
|
-
def column_end(
|
|
160
|
+
def column_end(_level)
|
|
172
161
|
puts "\\end{reviewcolumn}\n"
|
|
173
162
|
blank
|
|
174
163
|
end
|
|
175
164
|
|
|
176
|
-
def captionblock(
|
|
165
|
+
def captionblock(_type, lines, caption)
|
|
177
166
|
puts "\\begin{reviewminicolumn}\n"
|
|
178
|
-
|
|
179
|
-
puts "\\reviewminicolumntitle{#{compile_inline(caption)}}\n"
|
|
180
|
-
end
|
|
167
|
+
puts "\\reviewminicolumntitle{#{compile_inline(caption)}}\n" if caption
|
|
181
168
|
|
|
182
169
|
blocked_lines = split_paragraph(lines)
|
|
183
170
|
puts blocked_lines.join("\n\n")
|
|
@@ -187,13 +174,9 @@ module ReVIEW
|
|
|
187
174
|
|
|
188
175
|
def box(lines, caption = nil)
|
|
189
176
|
blank
|
|
190
|
-
if caption
|
|
191
|
-
puts macro('reviewboxcaption', "#{compile_inline(caption)}")
|
|
192
|
-
end
|
|
177
|
+
puts macro('reviewboxcaption', compile_inline(caption)) if caption
|
|
193
178
|
puts '\begin{reviewbox}'
|
|
194
|
-
lines.each
|
|
195
|
-
puts detab(line)
|
|
196
|
-
end
|
|
179
|
+
lines.each { |line| puts detab(line) }
|
|
197
180
|
puts '\end{reviewbox}'
|
|
198
181
|
blank
|
|
199
182
|
end
|
|
@@ -205,7 +188,7 @@ module ReVIEW
|
|
|
205
188
|
|
|
206
189
|
def ul_item(lines)
|
|
207
190
|
str = lines.join
|
|
208
|
-
str.sub!(/\A(\[)/){'\lbrack{}'}
|
|
191
|
+
str.sub!(/\A(\[)/) { '\lbrack{}' }
|
|
209
192
|
puts '\item ' + str
|
|
210
193
|
end
|
|
211
194
|
|
|
@@ -217,15 +200,14 @@ module ReVIEW
|
|
|
217
200
|
def ol_begin
|
|
218
201
|
blank
|
|
219
202
|
puts '\begin{enumerate}'
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
end
|
|
203
|
+
return true unless @ol_num
|
|
204
|
+
puts "\\setcounter{enumi}{#{@ol_num - 1}}"
|
|
205
|
+
@ol_num = nil
|
|
224
206
|
end
|
|
225
207
|
|
|
226
|
-
def ol_item(lines,
|
|
208
|
+
def ol_item(lines, _num)
|
|
227
209
|
str = lines.join
|
|
228
|
-
str.sub!(/\A(\[)/){'\lbrack{}'}
|
|
210
|
+
str.sub!(/\A(\[)/) { '\lbrack{}' }
|
|
229
211
|
puts '\item ' + str
|
|
230
212
|
end
|
|
231
213
|
|
|
@@ -240,8 +222,8 @@ module ReVIEW
|
|
|
240
222
|
end
|
|
241
223
|
|
|
242
224
|
def dt(str)
|
|
243
|
-
str.sub!(/\[/){'\lbrack{}'}
|
|
244
|
-
str.sub!(/\]/){'\rbrack{}'}
|
|
225
|
+
str.sub!(/\[/) { '\lbrack{}' }
|
|
226
|
+
str.sub!(/\]/) { '\rbrack{}' }
|
|
245
227
|
puts '\item[' + str + '] \mbox{} \\\\'
|
|
246
228
|
end
|
|
247
229
|
|
|
@@ -256,9 +238,7 @@ module ReVIEW
|
|
|
256
238
|
|
|
257
239
|
def paragraph(lines)
|
|
258
240
|
blank
|
|
259
|
-
lines.each
|
|
260
|
-
puts line
|
|
261
|
-
end
|
|
241
|
+
lines.each { |line| puts line }
|
|
262
242
|
blank
|
|
263
243
|
end
|
|
264
244
|
|
|
@@ -273,7 +253,7 @@ module ReVIEW
|
|
|
273
253
|
alias_method :lead, :read
|
|
274
254
|
|
|
275
255
|
def highlight_listings?
|
|
276
|
-
@book.config[
|
|
256
|
+
@book.config['highlight'] && @book.config['highlight']['latex'] == 'listings'
|
|
277
257
|
end
|
|
278
258
|
private :highlight_listings?
|
|
279
259
|
|
|
@@ -282,21 +262,17 @@ module ReVIEW
|
|
|
282
262
|
if highlight_listings?
|
|
283
263
|
common_code_block_lst(nil, lines, 'reviewemlistlst', 'title', caption, lang)
|
|
284
264
|
else
|
|
285
|
-
common_code_block(nil, lines, 'reviewemlist', caption, lang)
|
|
286
|
-
detab(line) + "\n"
|
|
287
|
-
end
|
|
265
|
+
common_code_block(nil, lines, 'reviewemlist', caption, lang) { |line, _idx| detab(line) + "\n" }
|
|
288
266
|
end
|
|
289
267
|
end
|
|
290
268
|
|
|
291
269
|
def emlistnum(lines, caption = nil, lang = nil)
|
|
292
270
|
blank
|
|
293
|
-
first_line_num =
|
|
271
|
+
first_line_num = line_num
|
|
294
272
|
if highlight_listings?
|
|
295
273
|
common_code_block_lst(nil, lines, 'reviewemlistnumlst', 'title', caption, lang, first_line_num: first_line_num)
|
|
296
274
|
else
|
|
297
|
-
common_code_block(nil, lines, 'reviewemlist', caption, lang)
|
|
298
|
-
detab((idx+first_line_num).to_s.rjust(2)+": " + line) + "\n"
|
|
299
|
-
end
|
|
275
|
+
common_code_block(nil, lines, 'reviewemlist', caption, lang) { |line, idx| detab((idx + first_line_num).to_s.rjust(2) + ': ' + line) + "\n" }
|
|
300
276
|
end
|
|
301
277
|
end
|
|
302
278
|
|
|
@@ -305,21 +281,17 @@ module ReVIEW
|
|
|
305
281
|
if highlight_listings?
|
|
306
282
|
common_code_block_lst(id, lines, 'reviewlistlst', 'caption', caption, lang)
|
|
307
283
|
else
|
|
308
|
-
common_code_block(id, lines, 'reviewlist', caption, lang)
|
|
309
|
-
detab(line) + "\n"
|
|
310
|
-
end
|
|
284
|
+
common_code_block(id, lines, 'reviewlist', caption, lang) { |line, _idx| detab(line) + "\n" }
|
|
311
285
|
end
|
|
312
286
|
end
|
|
313
287
|
|
|
314
288
|
## override Builder#listnum
|
|
315
289
|
def listnum(lines, id, caption, lang = nil)
|
|
316
|
-
first_line_num =
|
|
290
|
+
first_line_num = line_num
|
|
317
291
|
if highlight_listings?
|
|
318
292
|
common_code_block_lst(id, lines, 'reviewlistnumlst', 'caption', caption, lang, first_line_num: first_line_num)
|
|
319
293
|
else
|
|
320
|
-
common_code_block(id, lines, 'reviewlist', caption, lang)
|
|
321
|
-
detab((idx+first_line_num).to_s.rjust(2)+": " + line) + "\n"
|
|
322
|
-
end
|
|
294
|
+
common_code_block(id, lines, 'reviewlist', caption, lang) { |line, idx| detab((idx + first_line_num).to_s.rjust(2) + ': ' + line) + "\n" }
|
|
323
295
|
end
|
|
324
296
|
end
|
|
325
297
|
|
|
@@ -328,75 +300,65 @@ module ReVIEW
|
|
|
328
300
|
common_code_block_lst(nil, lines, 'reviewcmdlst', 'title', caption, lang)
|
|
329
301
|
else
|
|
330
302
|
blank
|
|
331
|
-
common_code_block(nil, lines, 'reviewcmd', caption, lang)
|
|
332
|
-
detab(line) + "\n"
|
|
333
|
-
end
|
|
303
|
+
common_code_block(nil, lines, 'reviewcmd', caption, lang) { |line, _idx| detab(line) + "\n" }
|
|
334
304
|
end
|
|
335
305
|
end
|
|
336
306
|
|
|
337
|
-
def common_code_block(id, lines, command, caption,
|
|
307
|
+
def common_code_block(id, lines, command, caption, _lang)
|
|
338
308
|
if caption
|
|
339
309
|
if command =~ /emlist/ || command =~ /cmd/ || command =~ /source/
|
|
340
|
-
puts macro(command + 'caption',
|
|
310
|
+
puts macro(command + 'caption', compile_inline(caption))
|
|
341
311
|
else
|
|
342
312
|
begin
|
|
343
313
|
if get_chap.nil?
|
|
344
|
-
puts macro('reviewlistcaption', "#{I18n.t(
|
|
314
|
+
puts macro('reviewlistcaption', "#{I18n.t('list')}#{I18n.t('format_number_header_without_chapter', [@chapter.list(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)}")
|
|
345
315
|
else
|
|
346
|
-
puts macro('reviewlistcaption', "#{I18n.t(
|
|
316
|
+
puts macro('reviewlistcaption', "#{I18n.t('list')}#{I18n.t('format_number_header', [get_chap, @chapter.list(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)}")
|
|
347
317
|
end
|
|
348
318
|
rescue KeyError
|
|
349
319
|
error "no such list: #{id}"
|
|
350
320
|
end
|
|
351
321
|
end
|
|
352
322
|
end
|
|
353
|
-
body =
|
|
354
|
-
lines.each_with_index
|
|
355
|
-
|
|
356
|
-
end
|
|
357
|
-
puts macro('begin',command)
|
|
323
|
+
body = ''
|
|
324
|
+
lines.each_with_index { |line, idx| body.concat(yield(line, idx)) }
|
|
325
|
+
puts macro('begin', command)
|
|
358
326
|
print body
|
|
359
|
-
puts macro('end',command)
|
|
327
|
+
puts macro('end', command)
|
|
360
328
|
blank
|
|
361
329
|
end
|
|
362
330
|
|
|
363
|
-
def common_code_block_lst(
|
|
364
|
-
if title ==
|
|
365
|
-
|
|
366
|
-
end
|
|
367
|
-
body = lines.inject(''){|i, j| i + detab(unescape_latex(j)) + "\n"}
|
|
331
|
+
def common_code_block_lst(_id, lines, command, title, caption, lang, first_line_num: 1)
|
|
332
|
+
print '\vspace{-1.5em}' if title == 'title' && caption.blank?
|
|
333
|
+
body = lines.inject('') { |i, j| i + detab(unescape_latex(j)) + "\n" }
|
|
368
334
|
args = make_code_block_args(title, caption, lang, first_line_num: first_line_num)
|
|
369
|
-
puts
|
|
335
|
+
puts %Q(\\begin{#{command}}[#{args}])
|
|
370
336
|
print body
|
|
371
|
-
puts
|
|
337
|
+
puts %Q(\\end{#{command}})
|
|
372
338
|
blank
|
|
373
339
|
end
|
|
374
340
|
|
|
375
341
|
def make_code_block_args(title, caption, lang, first_line_num: 1)
|
|
376
|
-
caption_str = compile_inline((caption ||
|
|
377
|
-
if title ==
|
|
378
|
-
caption_str =
|
|
379
|
-
end
|
|
380
|
-
if @book.config[
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
342
|
+
caption_str = compile_inline((caption || ''))
|
|
343
|
+
if title == 'title' && caption_str == ''
|
|
344
|
+
caption_str = '\relax' ## dummy charactor to remove lstname
|
|
345
|
+
end
|
|
346
|
+
lexer = if @book.config['highlight'] && @book.config['highlight']['lang']
|
|
347
|
+
@book.config['highlight']['lang'] # default setting
|
|
348
|
+
else
|
|
349
|
+
''
|
|
350
|
+
end
|
|
385
351
|
lexer = lang if lang.present?
|
|
386
|
-
args = title
|
|
387
|
-
if first_line_num != 1
|
|
388
|
-
args += ",firstnumber=#{first_line_num}"
|
|
389
|
-
end
|
|
352
|
+
args = %Q(#{title}={#{caption_str}},language={#{lexer}})
|
|
353
|
+
args += ",firstnumber=#{first_line_num}" if first_line_num != 1
|
|
390
354
|
args
|
|
391
355
|
end
|
|
392
356
|
|
|
393
|
-
def source(lines, caption, lang = nil)
|
|
357
|
+
def source(lines, caption = nil, lang = nil)
|
|
394
358
|
if highlight_listings?
|
|
395
359
|
common_code_block_lst(nil, lines, 'reviewsourcelst', 'title', caption, lang)
|
|
396
360
|
else
|
|
397
|
-
common_code_block(nil, lines, 'reviewsource', caption, lang)
|
|
398
|
-
detab(line) + "\n"
|
|
399
|
-
end
|
|
361
|
+
common_code_block(nil, lines, 'reviewsource', caption, lang) { |line, _idx| detab(line) + "\n" }
|
|
400
362
|
end
|
|
401
363
|
end
|
|
402
364
|
|
|
@@ -404,18 +366,18 @@ module ReVIEW
|
|
|
404
366
|
end
|
|
405
367
|
|
|
406
368
|
def handle_metric(str)
|
|
407
|
-
if @book.config[
|
|
369
|
+
if @book.config['image_scale2width'] && str =~ /\Ascale=([\d.]+)\Z/
|
|
408
370
|
return "width=#{$1}\\maxwidth"
|
|
409
371
|
end
|
|
410
372
|
str
|
|
411
373
|
end
|
|
412
374
|
|
|
413
375
|
def result_metric(array)
|
|
414
|
-
|
|
376
|
+
array.join(',')
|
|
415
377
|
end
|
|
416
378
|
|
|
417
379
|
def image_image(id, caption, metric)
|
|
418
|
-
metrics = parse_metric(
|
|
380
|
+
metrics = parse_metric('latex', metric)
|
|
419
381
|
# image is always bound here
|
|
420
382
|
puts '\begin{reviewimage}'
|
|
421
383
|
if metrics.present?
|
|
@@ -423,20 +385,17 @@ module ReVIEW
|
|
|
423
385
|
else
|
|
424
386
|
puts "\\includegraphics[width=\\maxwidth]{#{@chapter.image(id).path}}"
|
|
425
387
|
end
|
|
426
|
-
if caption.present?
|
|
427
|
-
puts macro('caption', compile_inline(caption))
|
|
428
|
-
end
|
|
388
|
+
puts macro('caption', compile_inline(caption)) if caption.present?
|
|
429
389
|
puts macro('label', image_label(id))
|
|
430
390
|
puts '\end{reviewimage}'
|
|
431
391
|
end
|
|
432
392
|
|
|
433
393
|
def image_dummy(id, caption, lines)
|
|
394
|
+
warn "image not bound: #{id}"
|
|
434
395
|
puts '\begin{reviewdummyimage}'
|
|
435
|
-
path = @chapter.image(id).path
|
|
436
|
-
puts "--[[path = #{
|
|
437
|
-
lines.each
|
|
438
|
-
puts detab(line.rstrip)
|
|
439
|
-
end
|
|
396
|
+
# path = @chapter.image(id).path
|
|
397
|
+
puts "--[[path = #{id} (#{existence(id)})]]--"
|
|
398
|
+
lines.each { |line| puts detab(line.rstrip) }
|
|
440
399
|
puts macro('label', image_label(id))
|
|
441
400
|
puts compile_inline(caption)
|
|
442
401
|
puts '\end{reviewdummyimage}'
|
|
@@ -447,7 +406,7 @@ module ReVIEW
|
|
|
447
406
|
end
|
|
448
407
|
private :existence
|
|
449
408
|
|
|
450
|
-
def image_label(id, chapter=nil)
|
|
409
|
+
def image_label(id, chapter = nil)
|
|
451
410
|
chapter ||= @chapter
|
|
452
411
|
"image:#{chapter.id}:#{id}"
|
|
453
412
|
end
|
|
@@ -463,7 +422,7 @@ module ReVIEW
|
|
|
463
422
|
end
|
|
464
423
|
private :sec_label
|
|
465
424
|
|
|
466
|
-
def table_label(id, chapter=nil)
|
|
425
|
+
def table_label(id, chapter = nil)
|
|
467
426
|
chapter ||= @chapter
|
|
468
427
|
"table:#{chapter.id}:#{id}"
|
|
469
428
|
end
|
|
@@ -474,26 +433,37 @@ module ReVIEW
|
|
|
474
433
|
end
|
|
475
434
|
private :bib_label
|
|
476
435
|
|
|
477
|
-
def column_label(id)
|
|
478
|
-
filename =
|
|
479
|
-
num =
|
|
436
|
+
def column_label(id, chapter = @chapter)
|
|
437
|
+
filename = chapter.id
|
|
438
|
+
num = chapter.column(id).number
|
|
480
439
|
"column:#{filename}:#{num}"
|
|
481
440
|
end
|
|
482
441
|
private :column_label
|
|
483
442
|
|
|
484
|
-
def indepimage(id, caption=nil, metric=nil)
|
|
485
|
-
metrics = parse_metric(
|
|
486
|
-
|
|
487
|
-
if
|
|
488
|
-
puts
|
|
443
|
+
def indepimage(lines, id, caption = nil, metric = nil)
|
|
444
|
+
metrics = parse_metric('latex', metric)
|
|
445
|
+
|
|
446
|
+
if @chapter.image(id).path
|
|
447
|
+
puts '\begin{reviewimage}'
|
|
448
|
+
if metrics.present?
|
|
449
|
+
puts "\\includegraphics[#{metrics}]{#{@chapter.image(id).path}}"
|
|
450
|
+
else
|
|
451
|
+
puts "\\includegraphics[width=\\maxwidth]{#{@chapter.image(id).path}}"
|
|
452
|
+
end
|
|
489
453
|
else
|
|
490
|
-
|
|
454
|
+
warn "image not bound: #{id}"
|
|
455
|
+
puts '\begin{reviewdummyimage}'
|
|
456
|
+
puts "--[[path = #{id} (#{existence(id)})]]--"
|
|
457
|
+
lines.each { |line| puts detab(line.rstrip) }
|
|
491
458
|
end
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
459
|
+
|
|
460
|
+
puts macro('reviewindepimagecaption', %Q(#{I18n.t('numberless_image')}#{I18n.t('caption_prefix')}#{compile_inline(caption)})) if caption.present?
|
|
461
|
+
|
|
462
|
+
if @chapter.image(id).path
|
|
463
|
+
puts '\end{reviewimage}'
|
|
464
|
+
else
|
|
465
|
+
puts '\end{reviewdummyimage}'
|
|
495
466
|
end
|
|
496
|
-
puts '\end{reviewimage}'
|
|
497
467
|
end
|
|
498
468
|
|
|
499
469
|
alias_method :numberlessimage, :indepimage
|
|
@@ -504,11 +474,11 @@ module ReVIEW
|
|
|
504
474
|
lines.each_with_index do |line, idx|
|
|
505
475
|
if /\A[\=\{\-\}]{12}/ =~ line
|
|
506
476
|
# just ignore
|
|
507
|
-
#error "too many table separator" if sepidx
|
|
477
|
+
# error "too many table separator" if sepidx
|
|
508
478
|
sepidx ||= idx
|
|
509
479
|
next
|
|
510
480
|
end
|
|
511
|
-
rows.push(line.strip.split(/\t+/).map {|s| s.sub(/\A\./, '') })
|
|
481
|
+
rows.push(line.strip.split(/\t+/).map { |s| s.sub(/\A\./, '') })
|
|
512
482
|
end
|
|
513
483
|
rows = adjust_n_cols(rows)
|
|
514
484
|
|
|
@@ -520,16 +490,12 @@ module ReVIEW
|
|
|
520
490
|
return if rows.empty?
|
|
521
491
|
table_begin rows.first.size
|
|
522
492
|
if sepidx
|
|
523
|
-
sepidx.times
|
|
524
|
-
|
|
525
|
-
end
|
|
526
|
-
rows.each do |cols|
|
|
527
|
-
tr(cols.map {|s| td(s) })
|
|
528
|
-
end
|
|
493
|
+
sepidx.times { tr(rows.shift.map { |s| th(s) }) }
|
|
494
|
+
rows.each { |cols| tr(cols.map { |s| td(s) }) }
|
|
529
495
|
else
|
|
530
496
|
rows.each do |cols|
|
|
531
497
|
h, *cs = *cols
|
|
532
|
-
tr([th(h)] + cs.map {|s| td(s) })
|
|
498
|
+
tr([th(h)] + cs.map { |s| td(s) })
|
|
533
499
|
end
|
|
534
500
|
end
|
|
535
501
|
table_end
|
|
@@ -558,7 +524,7 @@ module ReVIEW
|
|
|
558
524
|
elsif @tsize
|
|
559
525
|
if @tsize =~ /\A[\d., ]+\Z/
|
|
560
526
|
cellwidth = @tsize.split(/\s*,\s*/)
|
|
561
|
-
puts macro('begin', 'reviewtable', '|'+cellwidth.collect{|i| "p{#{i}mm}"}.join('|')+'|')
|
|
527
|
+
puts macro('begin', 'reviewtable', '|' + cellwidth.collect { |i| "p{#{i}mm}" }.join('|') + '|')
|
|
562
528
|
else
|
|
563
529
|
puts macro('begin', 'reviewtable', @tsize)
|
|
564
530
|
end
|
|
@@ -571,7 +537,7 @@ module ReVIEW
|
|
|
571
537
|
end
|
|
572
538
|
|
|
573
539
|
def table_separator
|
|
574
|
-
#puts '\hline'
|
|
540
|
+
# puts '\hline'
|
|
575
541
|
end
|
|
576
542
|
|
|
577
543
|
def th(s)
|
|
@@ -599,9 +565,7 @@ module ReVIEW
|
|
|
599
565
|
|
|
600
566
|
def table_end
|
|
601
567
|
puts macro('end', 'reviewtable')
|
|
602
|
-
if @table_caption
|
|
603
|
-
puts '\end{table}'
|
|
604
|
-
end
|
|
568
|
+
puts '\end{table}' if @table_caption
|
|
605
569
|
@table_caption = nil
|
|
606
570
|
blank
|
|
607
571
|
end
|
|
@@ -611,7 +575,7 @@ module ReVIEW
|
|
|
611
575
|
end
|
|
612
576
|
|
|
613
577
|
def imgtable(lines, id, caption = nil, metric = nil)
|
|
614
|
-
|
|
578
|
+
unless @chapter.image(id).bound?
|
|
615
579
|
warn "image not bound: #{id}"
|
|
616
580
|
image_dummy id, caption, lines
|
|
617
581
|
return
|
|
@@ -634,8 +598,8 @@ module ReVIEW
|
|
|
634
598
|
blank
|
|
635
599
|
end
|
|
636
600
|
|
|
637
|
-
def imgtable_image(id,
|
|
638
|
-
metrics = parse_metric(
|
|
601
|
+
def imgtable_image(id, _caption, metric)
|
|
602
|
+
metrics = parse_metric('latex', metric)
|
|
639
603
|
# image is always bound here
|
|
640
604
|
puts '\begin{reviewimage}'
|
|
641
605
|
if metrics.present?
|
|
@@ -662,10 +626,8 @@ module ReVIEW
|
|
|
662
626
|
|
|
663
627
|
def texequation(lines)
|
|
664
628
|
blank
|
|
665
|
-
puts macro('begin','equation*')
|
|
666
|
-
lines.each
|
|
667
|
-
puts unescape_latex(line)
|
|
668
|
-
end
|
|
629
|
+
puts macro('begin', 'equation*')
|
|
630
|
+
lines.each { |line| puts unescape_latex(line) }
|
|
669
631
|
puts macro('end', 'equation*')
|
|
670
632
|
blank
|
|
671
633
|
end
|
|
@@ -682,18 +644,15 @@ module ReVIEW
|
|
|
682
644
|
|
|
683
645
|
def direct(lines, fmt)
|
|
684
646
|
return unless fmt == 'latex'
|
|
685
|
-
lines.each
|
|
686
|
-
puts line
|
|
687
|
-
end
|
|
647
|
+
lines.each { |line| puts line }
|
|
688
648
|
end
|
|
689
649
|
|
|
690
650
|
def comment(lines, comment = nil)
|
|
691
651
|
lines ||= []
|
|
692
652
|
lines.unshift comment unless comment.blank?
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
end
|
|
653
|
+
return true unless @book.config['draft']
|
|
654
|
+
str = lines.join('\par ')
|
|
655
|
+
puts macro('pdfcomment', escape(str))
|
|
697
656
|
end
|
|
698
657
|
|
|
699
658
|
def hr
|
|
@@ -718,7 +677,7 @@ module ReVIEW
|
|
|
718
677
|
|
|
719
678
|
def inline_chapref(id)
|
|
720
679
|
title = super
|
|
721
|
-
if @book.config[
|
|
680
|
+
if @book.config['chapterlink']
|
|
722
681
|
"\\hyperref[chap:#{id}]{#{title}}"
|
|
723
682
|
else
|
|
724
683
|
title
|
|
@@ -729,7 +688,7 @@ module ReVIEW
|
|
|
729
688
|
end
|
|
730
689
|
|
|
731
690
|
def inline_chap(id)
|
|
732
|
-
if @book.config[
|
|
691
|
+
if @book.config['chapterlink']
|
|
733
692
|
"\\hyperref[chap:#{id}]{#{@book.chapter_index.number(id)}}"
|
|
734
693
|
else
|
|
735
694
|
@book.chapter_index.number(id)
|
|
@@ -741,7 +700,7 @@ module ReVIEW
|
|
|
741
700
|
|
|
742
701
|
def inline_title(id)
|
|
743
702
|
title = super
|
|
744
|
-
if @book.config[
|
|
703
|
+
if @book.config['chapterlink']
|
|
745
704
|
"\\hyperref[chap:#{id}]{#{title}}"
|
|
746
705
|
else
|
|
747
706
|
title
|
|
@@ -751,53 +710,54 @@ module ReVIEW
|
|
|
751
710
|
nofunc_text("[UnknownChapter:#{id}]")
|
|
752
711
|
end
|
|
753
712
|
|
|
713
|
+
def inline_pageref(id)
|
|
714
|
+
"\\pageref{#{id}}"
|
|
715
|
+
end
|
|
716
|
+
|
|
754
717
|
# FIXME: use TeX native label/ref.
|
|
755
718
|
def inline_list(id)
|
|
756
719
|
chapter, id = extract_chapter_id(id)
|
|
757
720
|
if get_chap(chapter).nil?
|
|
758
|
-
macro('reviewlistref', I18n.t(
|
|
721
|
+
macro('reviewlistref', I18n.t('format_number_without_chapter', [chapter.list(id).number]))
|
|
759
722
|
else
|
|
760
|
-
macro('reviewlistref', I18n.t(
|
|
723
|
+
macro('reviewlistref', I18n.t('format_number', [get_chap(chapter), chapter.list(id).number]))
|
|
761
724
|
end
|
|
762
725
|
end
|
|
763
726
|
|
|
764
727
|
def inline_table(id)
|
|
765
728
|
chapter, id = extract_chapter_id(id)
|
|
766
729
|
if get_chap(chapter).nil?
|
|
767
|
-
macro('reviewtableref', I18n.t(
|
|
730
|
+
macro('reviewtableref', I18n.t('format_number_without_chapter', [chapter.table(id).number]), table_label(id, chapter))
|
|
768
731
|
else
|
|
769
|
-
macro('reviewtableref', I18n.t(
|
|
732
|
+
macro('reviewtableref', I18n.t('format_number', [get_chap(chapter), chapter.table(id).number]), table_label(id, chapter))
|
|
770
733
|
end
|
|
771
734
|
end
|
|
772
735
|
|
|
773
736
|
def inline_img(id)
|
|
774
737
|
chapter, id = extract_chapter_id(id)
|
|
775
738
|
if get_chap(chapter).nil?
|
|
776
|
-
macro('reviewimageref', I18n.t(
|
|
739
|
+
macro('reviewimageref', I18n.t('format_number_without_chapter', [chapter.image(id).number]), image_label(id, chapter))
|
|
777
740
|
else
|
|
778
|
-
macro('reviewimageref', I18n.t(
|
|
741
|
+
macro('reviewimageref', I18n.t('format_number', [get_chap(chapter), chapter.image(id).number]), image_label(id, chapter))
|
|
779
742
|
end
|
|
780
743
|
end
|
|
781
744
|
|
|
782
745
|
def footnote(id, content)
|
|
783
|
-
if @book.config[
|
|
784
|
-
puts macro("footnotetext[#{@chapter.footnote(id).number}]",
|
|
785
|
-
compile_inline(content.strip))
|
|
786
|
-
end
|
|
746
|
+
puts macro("footnotetext[#{@chapter.footnote(id).number}]", compile_inline(content.strip)) if @book.config['footnotetext']
|
|
787
747
|
end
|
|
788
748
|
|
|
789
749
|
def inline_fn(id)
|
|
790
|
-
if @book.config[
|
|
791
|
-
macro("footnotemark[#{@chapter.footnote(id).number}]",
|
|
750
|
+
if @book.config['footnotetext']
|
|
751
|
+
macro("footnotemark[#{@chapter.footnote(id).number}]", '')
|
|
792
752
|
else
|
|
793
753
|
macro('footnote', compile_inline(@chapter.footnote(id).content.strip))
|
|
794
754
|
end
|
|
795
755
|
end
|
|
796
756
|
|
|
797
|
-
BOUTEN =
|
|
757
|
+
BOUTEN = '・'.freeze
|
|
798
758
|
|
|
799
759
|
def inline_bou(str)
|
|
800
|
-
str.split(//).map {|c| macro('ruby', escape(c), macro('textgt', BOUTEN)) }.join('\allowbreak')
|
|
760
|
+
str.split(//).map { |c| macro('ruby', escape(c), macro('textgt', BOUTEN)) }.join('\allowbreak')
|
|
801
761
|
end
|
|
802
762
|
|
|
803
763
|
def compile_ruby(base, ruby)
|
|
@@ -824,7 +784,7 @@ module ReVIEW
|
|
|
824
784
|
escape(str) + index(str)
|
|
825
785
|
end
|
|
826
786
|
|
|
827
|
-
# hidden index
|
|
787
|
+
# hidden index
|
|
828
788
|
def inline_hidx(str)
|
|
829
789
|
index(str)
|
|
830
790
|
end
|
|
@@ -835,13 +795,13 @@ module ReVIEW
|
|
|
835
795
|
end
|
|
836
796
|
|
|
837
797
|
# line break
|
|
838
|
-
def inline_br(
|
|
798
|
+
def inline_br(_str)
|
|
839
799
|
"\\\\\n"
|
|
840
800
|
end
|
|
841
801
|
|
|
842
|
-
def inline_dtp(
|
|
802
|
+
def inline_dtp(_str)
|
|
843
803
|
# ignore
|
|
844
|
-
|
|
804
|
+
''
|
|
845
805
|
end
|
|
846
806
|
|
|
847
807
|
## @<code> is same as @<tt>
|
|
@@ -875,13 +835,13 @@ module ReVIEW
|
|
|
875
835
|
|
|
876
836
|
def inline_hd_chap(chap, id)
|
|
877
837
|
n = chap.headline_index.number(id)
|
|
878
|
-
if chap.number and @book.config[
|
|
879
|
-
str = I18n.t(
|
|
838
|
+
if chap.number and @book.config['secnolevel'] >= n.split('.').size
|
|
839
|
+
str = I18n.t('chapter_quote', "#{chap.headline_index.number(id)} #{compile_inline(chap.headline(id).caption)}")
|
|
880
840
|
else
|
|
881
|
-
str = I18n.t(
|
|
841
|
+
str = I18n.t('chapter_quote', compile_inline(chap.headline(id).caption))
|
|
882
842
|
end
|
|
883
|
-
if @book.config[
|
|
884
|
-
anchor = n.gsub(/\./,
|
|
843
|
+
if @book.config['chapterlink']
|
|
844
|
+
anchor = n.gsub(/\./, '-')
|
|
885
845
|
macro('reviewsecref', str, sec_label(anchor))
|
|
886
846
|
else
|
|
887
847
|
str
|
|
@@ -890,8 +850,8 @@ module ReVIEW
|
|
|
890
850
|
|
|
891
851
|
def inline_column_chap(chapter, id)
|
|
892
852
|
macro('reviewcolumnref',
|
|
893
|
-
I18n.t(
|
|
894
|
-
column_label(id))
|
|
853
|
+
I18n.t('chapter_quote', compile_inline(chapter.column(id).caption)),
|
|
854
|
+
column_label(id, chapter))
|
|
895
855
|
end
|
|
896
856
|
|
|
897
857
|
def inline_raw(str)
|
|
@@ -923,7 +883,12 @@ module ReVIEW
|
|
|
923
883
|
end
|
|
924
884
|
|
|
925
885
|
def inline_icon(id)
|
|
926
|
-
|
|
886
|
+
if @chapter.image(id).path
|
|
887
|
+
macro('includegraphics', @chapter.image(id).path)
|
|
888
|
+
else
|
|
889
|
+
warn "image not bound: #{id}"
|
|
890
|
+
"\\verb|--[[path = #{id} (#{existence(id)})]]--|"
|
|
891
|
+
end
|
|
927
892
|
end
|
|
928
893
|
|
|
929
894
|
def inline_uchar(str)
|
|
@@ -932,10 +897,10 @@ module ReVIEW
|
|
|
932
897
|
end
|
|
933
898
|
|
|
934
899
|
def inline_comment(str)
|
|
935
|
-
if @book.config[
|
|
900
|
+
if @book.config['draft']
|
|
936
901
|
macro('pdfcomment', escape(str))
|
|
937
902
|
else
|
|
938
|
-
|
|
903
|
+
''
|
|
939
904
|
end
|
|
940
905
|
end
|
|
941
906
|
|
|
@@ -948,9 +913,9 @@ module ReVIEW
|
|
|
948
913
|
puts macro('label', bib_label(id))
|
|
949
914
|
end
|
|
950
915
|
|
|
951
|
-
def bibpaper_bibpaper(
|
|
952
|
-
print split_paragraph(lines).join
|
|
953
|
-
puts
|
|
916
|
+
def bibpaper_bibpaper(_id, _caption, lines)
|
|
917
|
+
print split_paragraph(lines).join
|
|
918
|
+
puts ''
|
|
954
919
|
end
|
|
955
920
|
|
|
956
921
|
def index(str)
|
|
@@ -958,7 +923,7 @@ module ReVIEW
|
|
|
958
923
|
|
|
959
924
|
sa.map! do |item|
|
|
960
925
|
if @index_db[item]
|
|
961
|
-
|
|
926
|
+
escape_index(escape_latex(@index_db[item])) + '@' + escape_index(escape_latex(item))
|
|
962
927
|
else
|
|
963
928
|
if item =~ /\A[[:ascii:]]+\Z/ || @index_mecab.nil?
|
|
964
929
|
esc_item = escape_index(escape_latex(item))
|
|
@@ -968,8 +933,8 @@ module ReVIEW
|
|
|
968
933
|
esc_item
|
|
969
934
|
end
|
|
970
935
|
else
|
|
971
|
-
yomi = NKF.nkf(
|
|
972
|
-
escape_index(escape_latex(yomi)) +
|
|
936
|
+
yomi = NKF.nkf('-w --hiragana', @index_mecab.parse(item).force_encoding('UTF-8').chomp)
|
|
937
|
+
escape_index(escape_latex(yomi)) + '@' + escape_index(escape_latex(item))
|
|
973
938
|
end
|
|
974
939
|
end
|
|
975
940
|
end
|
|
@@ -988,12 +953,12 @@ module ReVIEW
|
|
|
988
953
|
def compile_href(url, label)
|
|
989
954
|
if /\A[a-z]+:/ =~ url
|
|
990
955
|
if label
|
|
991
|
-
macro(
|
|
956
|
+
macro('href', escape_url(url), escape(label))
|
|
992
957
|
else
|
|
993
|
-
macro(
|
|
958
|
+
macro('url', escape_url(url))
|
|
994
959
|
end
|
|
995
960
|
else
|
|
996
|
-
macro(
|
|
961
|
+
macro('ref', url)
|
|
997
962
|
end
|
|
998
963
|
end
|
|
999
964
|
|
|
@@ -1002,13 +967,11 @@ module ReVIEW
|
|
|
1002
967
|
end
|
|
1003
968
|
|
|
1004
969
|
def image_ext
|
|
1005
|
-
|
|
970
|
+
'pdf'
|
|
1006
971
|
end
|
|
1007
972
|
|
|
1008
973
|
def olnum(num)
|
|
1009
974
|
@ol_num = num.to_i
|
|
1010
975
|
end
|
|
1011
|
-
|
|
1012
976
|
end
|
|
1013
|
-
|
|
1014
977
|
end
|