review 1.1.0 → 1.2.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 +7 -0
- data/.travis.yml +1 -0
- data/ChangeLog +100 -0
- data/README.rdoc +11 -12
- data/Rakefile +6 -2
- data/bin/review-check +1 -1
- data/bin/review-compile +13 -4
- data/bin/review-epubmaker +172 -24
- data/bin/review-epubmaker-ng +8 -161
- data/bin/review-index +1 -1
- data/bin/review-init +17 -5
- data/bin/review-pdfmaker +40 -19
- data/bin/review-preproc +1 -1
- data/bin/review-validate +2 -2
- data/bin/review-vol +1 -1
- data/debian/control +2 -2
- data/doc/format.rdoc +23 -6
- data/doc/format_idg.rdoc +3 -3
- data/doc/libepubmaker/config.yaml +163 -0
- data/doc/quickstart.rdoc +27 -27
- data/doc/sample.yaml +10 -5
- data/lib/epubmaker.rb +2 -5
- data/lib/epubmaker/content.rb +9 -6
- data/lib/epubmaker/epubv2.rb +233 -109
- data/lib/epubmaker/epubv3.rb +83 -119
- data/lib/epubmaker/producer.rb +50 -20
- data/lib/epubmaker/resource.rb +22 -8
- data/lib/review/book/base.rb +1 -0
- data/lib/review/book/chapter.rb +2 -2
- data/lib/review/book/compilable.rb +1 -1
- data/lib/review/book/index.rb +33 -27
- data/lib/review/book/parameters.rb +3 -2
- data/lib/review/book/part.rb +1 -1
- data/lib/review/builder.rb +10 -42
- data/lib/review/compiler.rb +1 -1
- data/lib/review/configure.rb +3 -3
- data/lib/review/epubmaker.rb +428 -0
- data/lib/review/htmlbuilder.rb +45 -95
- data/lib/review/htmlutils.rb +2 -0
- data/lib/review/i18n.yaml +25 -0
- data/lib/review/idgxmlbuilder.rb +11 -9
- data/lib/review/inaobuilder.rb +1 -1
- data/lib/review/latexbuilder.rb +7 -6
- data/lib/review/latexutils.rb +6 -0
- data/lib/review/makerhelper.rb +4 -2
- data/lib/review/markdownbuilder.rb +8 -0
- data/lib/review/sec_counter.rb +71 -0
- data/lib/review/topbuilder.rb +0 -1
- data/lib/review/version.rb +2 -2
- data/review.gemspec +4 -4
- data/test/sample-book/README.md +2 -2
- data/test/sample-book/src/Rakefile +2 -2
- data/test/sample-book/src/config.yml +4 -4
- data/test/sample-book/src/images/cover.jpg +0 -0
- data/test/sample-book/src/sty/{samplemacro.sty → reviewmacro.sty} +1 -1
- data/test/test_book_parameter.rb +1 -1
- data/test/test_epubmaker.rb +77 -15
- data/test/test_epubmaker_cmd.rb +11 -7
- data/test/test_helper.rb +7 -0
- data/test/test_htmlbuilder.rb +39 -6
- data/test/test_idgxmlbuilder.rb +14 -2
- data/test/test_inaobuilder.rb +2 -1
- data/test/test_latexbuilder.rb +23 -2
- data/test/test_makerhelper.rb +19 -3
- data/test/test_markdownbuilder.rb +35 -0
- data/test/test_pdfmaker_cmd.rb +11 -7
- data/test/test_topbuilder.rb +36 -2
- metadata +18 -18
- data/VERSION +0 -1
- data/doc/libepubmaker/sample.yaml +0 -90
data/lib/review/htmlbuilder.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
#
|
3
3
|
# Copyright (c) 2002-2007 Minero Aoki
|
4
|
-
# 2008-
|
4
|
+
# 2008-2014 Minero Aoki, Kenshi Muto, Masayoshi Takahashi,
|
5
5
|
# KADO Masanori
|
6
6
|
#
|
7
7
|
# This program is free software.
|
@@ -13,6 +13,7 @@ require 'review/builder'
|
|
13
13
|
require 'review/htmlutils'
|
14
14
|
require 'review/htmllayout'
|
15
15
|
require 'review/textutils'
|
16
|
+
require 'review/sec_counter'
|
16
17
|
|
17
18
|
module ReVIEW
|
18
19
|
|
@@ -47,10 +48,6 @@ module ReVIEW
|
|
47
48
|
|
48
49
|
def builder_init(no_error = false)
|
49
50
|
@no_error = no_error
|
50
|
-
@section = 0
|
51
|
-
@subsection = 0
|
52
|
-
@subsubsection = 0
|
53
|
-
@subsubsubsection = 0
|
54
51
|
@column = 0
|
55
52
|
@noindent = nil
|
56
53
|
@ol_num = nil
|
@@ -60,24 +57,26 @@ module ReVIEW
|
|
60
57
|
def builder_init_file
|
61
58
|
@warns = []
|
62
59
|
@errors = []
|
60
|
+
@chapter.book.image_types = %w( .png .jpg .jpeg .gif .svg )
|
61
|
+
@sec_counter = SecCounter.new(5, @chapter)
|
63
62
|
end
|
64
63
|
private :builder_init_file
|
65
64
|
|
66
65
|
def result
|
67
66
|
layout_file = File.join(@book.basedir, "layouts", "layout.erb")
|
68
|
-
if File.
|
67
|
+
if File.exist?(layout_file)
|
68
|
+
title = convert_outencoding(strip_html(compile_inline(@chapter.title)), ReVIEW.book.param["outencoding"])
|
69
69
|
messages() +
|
70
|
-
HTMLLayout.new(@output.string,
|
70
|
+
HTMLLayout.new(@output.string, title, layout_file).result
|
71
71
|
else
|
72
72
|
# default XHTML header/footer
|
73
73
|
header = <<EOT
|
74
74
|
<?xml version="1.0" encoding="#{ReVIEW.book.param["outencoding"] || :UTF-8}"?>
|
75
75
|
EOT
|
76
|
-
|
77
|
-
if ReVIEW.book.param["htmlversion"] == 5
|
76
|
+
if ReVIEW.book.param["htmlversion"].to_i == 5
|
78
77
|
header += <<EOT
|
79
78
|
<!DOCTYPE html>
|
80
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xmlns
|
79
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:#{xmlns_ops_prefix}="http://www.idpf.org/2007/ops" xml:lang="#{ReVIEW.book.param["language"]}">
|
81
80
|
<head>
|
82
81
|
<meta charset="#{ReVIEW.book.param["outencoding"] || :UTF-8}" />
|
83
82
|
EOT
|
@@ -99,7 +98,7 @@ EOT
|
|
99
98
|
end
|
100
99
|
end
|
101
100
|
header += <<EOT
|
102
|
-
<meta name="generator" content="
|
101
|
+
<meta name="generator" content="Re:VIEW" />
|
103
102
|
<title>#{convert_outencoding(strip_html(compile_inline(@chapter.title)), ReVIEW.book.param["outencoding"])}</title>
|
104
103
|
</head>
|
105
104
|
<body>
|
@@ -112,6 +111,14 @@ EOT
|
|
112
111
|
end
|
113
112
|
end
|
114
113
|
|
114
|
+
def xmlns_ops_prefix
|
115
|
+
if ReVIEW.book.param["epubversion"].to_i == 3
|
116
|
+
"epub"
|
117
|
+
else
|
118
|
+
"ops"
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
115
122
|
def warn(msg)
|
116
123
|
if @no_error
|
117
124
|
@warns.push [@location.filename, @location.lineno, msg]
|
@@ -155,75 +162,9 @@ EOT
|
|
155
162
|
end
|
156
163
|
|
157
164
|
def headline_prefix(level)
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
@section = 0
|
162
|
-
@subsection = 0
|
163
|
-
@subsubsection = 0
|
164
|
-
@subsubsubsection = 0
|
165
|
-
anchor = "#{@chapter.number}"
|
166
|
-
if ReVIEW.book.param["secnolevel"] >= 1
|
167
|
-
if @chapter.number.blank?
|
168
|
-
prefix = ""
|
169
|
-
else
|
170
|
-
placeholder = if @chapter.is_a? ReVIEW::Book::Part
|
171
|
-
'part'
|
172
|
-
elsif @chapter.on_POSTDEF?
|
173
|
-
'appendix'
|
174
|
-
else
|
175
|
-
'chapter'
|
176
|
-
end
|
177
|
-
prefix = "#{I18n.t(placeholder, @chapter.number)}#{I18n.t("chapter_postfix")}"
|
178
|
-
end
|
179
|
-
end
|
180
|
-
when 2
|
181
|
-
@section += 1
|
182
|
-
@subsection = 0
|
183
|
-
@subsubsection = 0
|
184
|
-
@subsubsubsection = 0
|
185
|
-
anchor = "#{@chapter.number}-#{@section}"
|
186
|
-
if ReVIEW.book.param["secnolevel"] >= 2
|
187
|
-
if @chapter.number.blank? or @chapter.on_POSTDEF?
|
188
|
-
prefix = ""
|
189
|
-
else
|
190
|
-
prefix = "#{@chapter.number}.#{@section}#{I18n.t("chapter_postfix")}"
|
191
|
-
end
|
192
|
-
end
|
193
|
-
when 3
|
194
|
-
@subsection += 1
|
195
|
-
@subsubsection = 0
|
196
|
-
@subsubsubsection = 0
|
197
|
-
anchor = "#{@chapter.number}-#{@section}-#{@subsection}"
|
198
|
-
if ReVIEW.book.param["secnolevel"] >= 3
|
199
|
-
if @chapter.number.blank? or @chapter.on_POSTDEF?
|
200
|
-
prefix = ""
|
201
|
-
else
|
202
|
-
prefix = "#{@chapter.number}.#{@section}.#{@subsection}#{I18n.t("chapter_postfix")}"
|
203
|
-
end
|
204
|
-
end
|
205
|
-
when 4
|
206
|
-
@subsubsection += 1
|
207
|
-
@subsubsubsection = 0
|
208
|
-
anchor = "#{@chapter.number}-#{@section}-#{@subsection}-#{@subsubsection}"
|
209
|
-
if ReVIEW.book.param["secnolevel"] >= 4
|
210
|
-
if @chapter.number.blank? or @chapter.on_POSTDEF?
|
211
|
-
prefix = ""
|
212
|
-
else
|
213
|
-
prefix = "#{@chapter.number}.#{@section}.#{@subsection}.#{@subsubsection}#{I18n.t("chapter_postfix")}"
|
214
|
-
end
|
215
|
-
end
|
216
|
-
when 5
|
217
|
-
@subsubsubsection += 1
|
218
|
-
anchor = "#{@chapter.number}-#{@section}-#{@subsection}-#{@subsubsection}-#{@subsubsubsection}"
|
219
|
-
if ReVIEW.book.param["secnolevel"] >= 5
|
220
|
-
if @chapter.number.blank? or @chapter.on_POSTDEF?
|
221
|
-
prefix = ""
|
222
|
-
else
|
223
|
-
prefix = "#{@chapter.number}.#{@section}.#{@subsection}.#{@subsubsection}.#{@subsubsubsection}#{I18n.t("chapter_postfix")}"
|
224
|
-
end
|
225
|
-
end
|
226
|
-
end
|
165
|
+
@sec_counter.inc(level)
|
166
|
+
anchor = @sec_counter.anchor(level)
|
167
|
+
prefix = @sec_counter.prefix(level, ReVIEW.book.param["secnolevel"])
|
227
168
|
[prefix, anchor]
|
228
169
|
end
|
229
170
|
private :headline_prefix
|
@@ -542,8 +483,9 @@ EOT
|
|
542
483
|
puts '</div>'
|
543
484
|
end
|
544
485
|
|
545
|
-
def emlistnum(lines)
|
486
|
+
def emlistnum(lines, caption = nil)
|
546
487
|
puts %Q[<div class="emlistnum-code">]
|
488
|
+
puts %Q(<p class="caption">#{caption}</p>) unless caption.nil?
|
547
489
|
print %Q[<pre class="emlist">]
|
548
490
|
lines.each_with_index do |line, i|
|
549
491
|
puts detab((i+1).to_s.rjust(2) + ": " + line)
|
@@ -615,7 +557,7 @@ QUOTE
|
|
615
557
|
def texequation(lines)
|
616
558
|
puts %Q[<div class="equation">]
|
617
559
|
if ReVIEW.book.param["mathml"]
|
618
|
-
p = MathML::LaTeX::Parser.new
|
560
|
+
p = MathML::LaTeX::Parser.new(:symbol=>MathML::Symbol::CharacterReference)
|
619
561
|
puts p.parse(unescape_html(lines.join("\n")), true)
|
620
562
|
else
|
621
563
|
print '<pre>'
|
@@ -684,7 +626,7 @@ QUOTE
|
|
684
626
|
puts %Q[<div class="table">]
|
685
627
|
begin
|
686
628
|
table_header id, caption unless caption.nil?
|
687
|
-
rescue KeyError
|
629
|
+
rescue KeyError
|
688
630
|
error "no such table: #{id}"
|
689
631
|
end
|
690
632
|
table_begin rows.first.size
|
@@ -747,7 +689,11 @@ QUOTE
|
|
747
689
|
end
|
748
690
|
|
749
691
|
def footnote(id, str)
|
750
|
-
|
692
|
+
if ReVIEW.book.param["epubversion"].to_i == 3
|
693
|
+
puts %Q(<div class="footnote" epub:type="footnote" id="fn-#{id}"><p class="footnote">[*#{@chapter.footnote(id).number}] #{compile_inline(str)}</p></div>)
|
694
|
+
else
|
695
|
+
puts %Q(<div class="footnote"><p class="footnote">[<a id="fn-#{id}">*#{@chapter.footnote(id).number}</a>] #{compile_inline(str)}</p></div>)
|
696
|
+
end
|
751
697
|
end
|
752
698
|
|
753
699
|
def indepimage(id, caption="", metric=nil)
|
@@ -805,10 +751,11 @@ QUOTE
|
|
805
751
|
alias inline_ref inline_labelref
|
806
752
|
|
807
753
|
def inline_chapref(id)
|
754
|
+
title = super
|
808
755
|
if ReVIEW.book.param["chapterlink"]
|
809
|
-
%Q(<a href="./#{id}.html">#{
|
756
|
+
%Q(<a href="./#{id}.html">#{title}</a>)
|
810
757
|
else
|
811
|
-
|
758
|
+
title
|
812
759
|
end
|
813
760
|
rescue KeyError
|
814
761
|
error "unknown chapter: #{id}"
|
@@ -837,14 +784,17 @@ QUOTE
|
|
837
784
|
nofunc_text("[UnknownChapter:#{id}]")
|
838
785
|
end
|
839
786
|
|
840
|
-
|
841
787
|
def inline_fn(id)
|
842
|
-
|
788
|
+
if ReVIEW.book.param["epubversion"].to_i == 3
|
789
|
+
%Q(<a href="#fn-#{id}" class="noteref" epub:type="noteref">*#{@chapter.footnote(id).number}</a>)
|
790
|
+
else
|
791
|
+
%Q(<a href="#fn-#{id}" class="noteref">*#{@chapter.footnote(id).number}</a>)
|
792
|
+
end
|
843
793
|
end
|
844
794
|
|
845
795
|
def compile_ruby(base, ruby)
|
846
|
-
if ReVIEW.book.param["htmlversion"] == 5
|
847
|
-
%Q[<ruby>#{escape_html(base)}<rp>#{I18n.t("ruby_prefix")}</rp><rt>#{ruby}</rt><rp>#{I18n.t("ruby_postfix")}</rp></ruby>]
|
796
|
+
if ReVIEW.book.param["htmlversion"].to_i == 5
|
797
|
+
%Q[<ruby>#{escape_html(base)}<rp>#{I18n.t("ruby_prefix")}</rp><rt>#{escape_html(ruby)}</rt><rp>#{I18n.t("ruby_postfix")}</rp></ruby>]
|
848
798
|
else
|
849
799
|
%Q[<ruby><rb>#{escape_html(base)}</rb><rp>#{I18n.t("ruby_prefix")}</rp><rt>#{ruby}</rt><rp>#{I18n.t("ruby_postfix")}</rp></ruby>]
|
850
800
|
end
|
@@ -876,7 +826,7 @@ QUOTE
|
|
876
826
|
end
|
877
827
|
|
878
828
|
def inline_tti(str)
|
879
|
-
if ReVIEW.book.param["htmlversion"] == 5
|
829
|
+
if ReVIEW.book.param["htmlversion"].to_i == 5
|
880
830
|
%Q(<code class="tt"><i>#{escape_html(str)}</i></code>)
|
881
831
|
else
|
882
832
|
%Q(<tt><i>#{escape_html(str)}</i></tt>)
|
@@ -884,7 +834,7 @@ QUOTE
|
|
884
834
|
end
|
885
835
|
|
886
836
|
def inline_ttb(str)
|
887
|
-
if ReVIEW.book.param["htmlversion"] == 5
|
837
|
+
if ReVIEW.book.param["htmlversion"].to_i == 5
|
888
838
|
%Q(<code class="tt"><b>#{escape_html(str)}</b></code>)
|
889
839
|
else
|
890
840
|
%Q(<tt><b>#{escape_html(str)}</b></tt>)
|
@@ -896,7 +846,7 @@ QUOTE
|
|
896
846
|
end
|
897
847
|
|
898
848
|
def inline_code(str)
|
899
|
-
if ReVIEW.book.param["htmlversion"] == 5
|
849
|
+
if ReVIEW.book.param["htmlversion"].to_i == 5
|
900
850
|
%Q(<code class="inline-code tt">#{escape_html(str)}</code>)
|
901
851
|
else
|
902
852
|
%Q(<tt class="inline-code">#{escape_html(str)}</tt>)
|
@@ -917,7 +867,7 @@ QUOTE
|
|
917
867
|
|
918
868
|
def inline_m(str)
|
919
869
|
if ReVIEW.book.param["mathml"]
|
920
|
-
p = MathML::LaTeX::Parser.new
|
870
|
+
p = MathML::LaTeX::Parser.new(:symbol=>MathML::Symbol::CharacterReference)
|
921
871
|
%Q[<span class="equation">#{p.parse(str, nil)}</span>]
|
922
872
|
else
|
923
873
|
%Q[<span class="equation">#{escape_html(str)}</span>]
|
@@ -1060,7 +1010,7 @@ QUOTE
|
|
1060
1010
|
end
|
1061
1011
|
|
1062
1012
|
def inline_tt(str)
|
1063
|
-
if ReVIEW.book.param["htmlversion"] == 5
|
1013
|
+
if ReVIEW.book.param["htmlversion"].to_i == 5
|
1064
1014
|
%Q(<code class="tt">#{escape_html(str)}</code>)
|
1065
1015
|
else
|
1066
1016
|
%Q(<tt>#{escape_html(str)}</tt>)
|
data/lib/review/htmlutils.rb
CHANGED
data/lib/review/i18n.yaml
CHANGED
@@ -15,6 +15,11 @@ ja:
|
|
15
15
|
caption_prefix_idgxml: " "
|
16
16
|
ruby_prefix: "("
|
17
17
|
ruby_postfix: ")"
|
18
|
+
aut: "著 者"
|
19
|
+
author_postfix: " 著"
|
20
|
+
supervisor_postfix: " 監修"
|
21
|
+
translator_postfix: " 訳"
|
22
|
+
names_splitter: "、"
|
18
23
|
|
19
24
|
en:
|
20
25
|
image: "Figure "
|
@@ -32,3 +37,23 @@ en:
|
|
32
37
|
caption_prefix_idgxml: " "
|
33
38
|
ruby_prefix: "("
|
34
39
|
ruby_postfix: ")"
|
40
|
+
names_splitter: ", "
|
41
|
+
|
42
|
+
zh_TW:
|
43
|
+
image: 圖
|
44
|
+
table: 表
|
45
|
+
list: List
|
46
|
+
part: 第%d部份
|
47
|
+
chapter: 第%d章
|
48
|
+
chapter_postfix: " "
|
49
|
+
appendix: 附錄%d
|
50
|
+
numberless_image: "圖:"
|
51
|
+
format_number: "%s.%d"
|
52
|
+
format_number_header: "%s.%d:"
|
53
|
+
format_number_without_chapter: "%d"
|
54
|
+
format_number_header_without_chapter: "%d:"
|
55
|
+
caption_prefix: " "
|
56
|
+
caption_prefix_idgxml: " "
|
57
|
+
ruby_prefix: "("
|
58
|
+
ruby_postfix: ")"
|
59
|
+
names_splitter: ", "
|
data/lib/review/idgxmlbuilder.rb
CHANGED
@@ -287,14 +287,23 @@ module ReVIEW
|
|
287
287
|
|
288
288
|
def ol_begin
|
289
289
|
puts '<ol>'
|
290
|
+
if !@ol_num
|
291
|
+
@ol_num = 1
|
292
|
+
end
|
290
293
|
end
|
291
294
|
|
292
295
|
def ol_item(lines, num)
|
293
|
-
puts %Q(<li aid:pstyle="ol-item" num="#{num}">#{lines.join.chomp}</li>)
|
296
|
+
puts %Q(<li aid:pstyle="ol-item" olnum="#{@ol_num}" num="#{num}">#{lines.join.chomp}</li>)
|
297
|
+
@ol_num += 1
|
294
298
|
end
|
295
299
|
|
296
300
|
def ol_end
|
297
301
|
puts '</ol>'
|
302
|
+
@ol_num = nil
|
303
|
+
end
|
304
|
+
|
305
|
+
def olnum(num)
|
306
|
+
@ol_num = num.to_i
|
298
307
|
end
|
299
308
|
|
300
309
|
def dl_begin
|
@@ -476,13 +485,6 @@ module ReVIEW
|
|
476
485
|
end
|
477
486
|
|
478
487
|
def image_dummy(id, caption, lines)
|
479
|
-
if ReVIEW.book.param["subdirmode"]
|
480
|
-
warn "image file not exist: images/#{@chapter.id}/#{id}.eps" unless File.exist?("images/#{@chapter.id}/#{id}.eps")
|
481
|
-
elsif ReVIEW.book.param["singledirmode"]
|
482
|
-
warn "image file not exist: images/#{@chapter.id}/#{id}.eps" unless File.exist?("images/#{id}.eps")
|
483
|
-
else
|
484
|
-
warn "image file not exist: images/#{@chapter.id}-#{id}.eps" unless File.exist?("images/#{@chapter.id}-#{id}.eps")
|
485
|
-
end
|
486
488
|
puts "<img>"
|
487
489
|
print %Q[<pre aid:pstyle="dummyimage">]
|
488
490
|
lines.each do |line|
|
@@ -558,7 +560,7 @@ module ReVIEW
|
|
558
560
|
|
559
561
|
begin
|
560
562
|
table_header id, caption unless caption.nil?
|
561
|
-
rescue KeyError
|
563
|
+
rescue KeyError
|
562
564
|
error "no such table: #{id}"
|
563
565
|
end
|
564
566
|
return if rows.empty?
|
data/lib/review/inaobuilder.rb
CHANGED
data/lib/review/latexbuilder.rb
CHANGED
@@ -390,7 +390,7 @@ module ReVIEW
|
|
390
390
|
|
391
391
|
begin
|
392
392
|
table_header id, caption unless caption.nil?
|
393
|
-
rescue KeyError
|
393
|
+
rescue KeyError
|
394
394
|
error "no such table: #{id}"
|
395
395
|
end
|
396
396
|
return if rows.empty?
|
@@ -547,10 +547,11 @@ module ReVIEW
|
|
547
547
|
end
|
548
548
|
|
549
549
|
def inline_chapref(id)
|
550
|
+
title = super
|
550
551
|
if ReVIEW.book.param["chapterlink"]
|
551
|
-
"\\hyperref[chap:#{id}]{#{
|
552
|
+
"\\hyperref[chap:#{id}]{#{title}}"
|
552
553
|
else
|
553
|
-
|
554
|
+
title
|
554
555
|
end
|
555
556
|
rescue KeyError
|
556
557
|
error "unknown chapter: #{id}"
|
@@ -617,9 +618,8 @@ module ReVIEW
|
|
617
618
|
str.split(//).map {|c| macro('ruby', escape(c), macro('textgt', BOUTEN)) }.join('\allowbreak')
|
618
619
|
end
|
619
620
|
|
620
|
-
def
|
621
|
-
base, ruby
|
622
|
-
macro('ruby', base, ruby)
|
621
|
+
def compile_ruby(base, ruby)
|
622
|
+
macro('ruby', escape(base), escape(ruby))
|
623
623
|
end
|
624
624
|
|
625
625
|
# math
|
@@ -747,6 +747,7 @@ module ReVIEW
|
|
747
747
|
|
748
748
|
def bibpaper_bibpaper(id, caption, lines)
|
749
749
|
print split_paragraph(lines).join("")
|
750
|
+
puts ""
|
750
751
|
end
|
751
752
|
|
752
753
|
def index(str)
|
data/lib/review/latexutils.rb
CHANGED
@@ -43,6 +43,12 @@ module ReVIEW
|
|
43
43
|
'⑧' => '\UTF{2467}',
|
44
44
|
'⑨' => '\UTF{2468}',
|
45
45
|
'⑩' => '\UTF{2469}',
|
46
|
+
'⑪' => '\UTF{246A}',
|
47
|
+
'⑫' => '\UTF{246B}',
|
48
|
+
'⑬' => '\UTF{246C}',
|
49
|
+
'⑭' => '\UTF{246D}',
|
50
|
+
'⑮' => '\UTF{246E}',
|
51
|
+
'⑯' => '\UTF{246F}',
|
46
52
|
}
|
47
53
|
|
48
54
|
kanalist = %w{。 「 」 、 ・ ヲ ァ ィ ゥ ェ ォ ャ ュ ョ ッ ー ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン ゙ ゚}
|
data/lib/review/makerhelper.rb
CHANGED
@@ -34,7 +34,7 @@ module ReVIEW
|
|
34
34
|
dir.each do |fname|
|
35
35
|
next if fname =~ /^\./
|
36
36
|
if FileTest.directory?("#{from_dir}/#{fname}")
|
37
|
-
image_files += copy_images_to_dir("#{from_dir}/#{fname}", "#{to_dir}/#{fname}")
|
37
|
+
image_files += copy_images_to_dir("#{from_dir}/#{fname}", "#{to_dir}/#{fname}", options)
|
38
38
|
else
|
39
39
|
Dir.mkdir(to_dir) unless File.exist?(to_dir)
|
40
40
|
|
@@ -45,7 +45,9 @@ module ReVIEW
|
|
45
45
|
image_files << "#{from_dir}/#{fname}.#{conv_type}"
|
46
46
|
end
|
47
47
|
|
48
|
-
|
48
|
+
exts = options[:exts] || %w(png gif jpg jpeg svg pdf eps)
|
49
|
+
exts_str = exts.join('|')
|
50
|
+
if !is_converted && fname =~ /\.(#{exts_str})$/i
|
49
51
|
FileUtils.cp "#{from_dir}/#{fname}", to_dir
|
50
52
|
image_files << "#{from_dir}/#{fname}"
|
51
53
|
end
|