review 4.0.0 → 5.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby-tex.yml +31 -0
- data/.github/workflows/ruby-win.yml +45 -0
- data/.github/workflows/ruby.yml +27 -0
- data/.rubocop.yml +141 -38
- data/Dockerfile +21 -5
- data/NEWS.ja.md +338 -1
- data/NEWS.md +339 -2
- data/README.md +11 -7
- data/Rakefile +7 -2
- data/appveyor.yml +0 -20
- data/bin/review +2 -4
- data/bin/review-catalog-converter +4 -4
- data/bin/review-check +8 -12
- data/bin/review-checkdep +2 -5
- data/bin/review-compile +11 -20
- data/bin/review-epub2html +1 -4
- data/bin/review-epubmaker +3 -4
- data/bin/review-idgxmlmaker +1 -3
- data/bin/review-index +5 -86
- data/bin/review-init +1 -4
- data/bin/review-pdfmaker +1 -3
- data/bin/review-preproc +3 -5
- data/bin/review-textmaker +1 -3
- data/bin/review-update +1 -4
- data/bin/review-validate +5 -5
- data/bin/review-vol +5 -82
- data/bin/review-webmaker +1 -3
- data/doc/config.yml.sample +55 -12
- data/doc/config.yml.sample-simple +4 -3
- data/doc/format.ja.md +119 -17
- data/doc/format.md +106 -17
- data/doc/makeindex.ja.md +2 -2
- data/doc/pdfmaker.ja.md +42 -0
- data/doc/pdfmaker.md +41 -0
- data/doc/quickstart.ja.md +55 -25
- data/doc/quickstart.md +47 -17
- data/lib/review.rb +1 -1
- data/lib/review/book.rb +2 -2
- data/lib/review/book/base.rb +69 -30
- data/lib/review/book/bib.rb +21 -0
- data/lib/review/book/book_unit.rb +158 -0
- data/lib/review/book/chapter.rb +33 -26
- data/lib/review/book/index.rb +39 -206
- data/lib/review/book/index/item.rb +8 -2
- data/lib/review/book/page_metric.rb +7 -7
- data/lib/review/book/part.rb +26 -11
- data/lib/review/book/volume.rb +5 -5
- data/lib/review/builder.rb +124 -27
- data/lib/review/call_hook.rb +20 -0
- data/lib/review/catalog.rb +3 -2
- data/lib/review/compiler.rb +197 -91
- data/lib/review/configure.rb +95 -9
- data/lib/review/converter.rb +1 -1
- data/lib/review/epub2html.rb +6 -1
- data/lib/review/epubmaker.rb +116 -117
- data/lib/review/epubmaker/content.rb +113 -0
- data/lib/review/epubmaker/epubcommon.rb +372 -0
- data/lib/review/epubmaker/epubv2.rb +178 -0
- data/lib/review/epubmaker/epubv3.rb +231 -0
- data/lib/review/epubmaker/producer.rb +168 -0
- data/lib/review/epubmaker/reviewheaderlistener.rb +12 -2
- data/lib/review/epubmaker/zip_exporter.rb +84 -0
- data/lib/review/exception.rb +6 -0
- data/lib/review/extentions/string.rb +0 -4
- data/lib/review/htmlbuilder.rb +132 -87
- data/lib/review/htmlutils.rb +8 -11
- data/lib/review/i18n.rb +2 -1
- data/lib/review/idgxmlbuilder.rb +156 -76
- data/lib/review/idgxmlmaker.rb +22 -18
- data/lib/review/img_math.rb +245 -0
- data/lib/review/index_builder.rb +654 -0
- data/lib/review/init.rb +17 -18
- data/lib/review/latexbox.rb +58 -0
- data/lib/review/latexbuilder.rb +173 -43
- data/lib/review/latexutils.rb +9 -1
- data/lib/review/lineinput.rb +112 -2
- data/lib/review/logger.rb +42 -3
- data/lib/review/makerhelper.rb +12 -187
- data/lib/review/markdownbuilder.rb +51 -2
- data/lib/review/pdfmaker.rb +78 -73
- data/lib/review/plaintextbuilder.rb +98 -14
- data/lib/review/preprocessor.rb +18 -12
- data/lib/review/rstbuilder.rb +28 -9
- data/lib/review/sec_counter.rb +14 -0
- data/lib/review/template.rb +6 -0
- data/lib/review/textmaker.rb +21 -19
- data/lib/review/textutils.rb +3 -12
- data/lib/review/tocprinter.rb +242 -97
- data/lib/review/topbuilder.rb +91 -24
- data/lib/review/update.rb +12 -13
- data/lib/review/version.rb +1 -1
- data/lib/review/volumeprinter.rb +97 -0
- data/lib/review/webmaker.rb +34 -33
- data/lib/review/webtocprinter.rb +39 -35
- data/lib/review/yamlloader.rb +2 -1
- data/review.gemspec +5 -3
- data/samples/sample-book/src/.gitignore +1 -0
- data/samples/sample-book/src/config-ebook.yml +4 -0
- data/samples/sample-book/src/config-epub2.yml +1 -1
- data/samples/sample-book/src/config-jlreq-ebook.yml +4 -0
- data/samples/sample-book/src/config.yml +3 -3
- data/samples/sample-book/src/lib/tasks/review.rake +26 -6
- data/samples/syntax-book/Gemfile +1 -1
- data/samples/syntax-book/ch01.re +3 -1
- data/samples/syntax-book/ch02.re +28 -21
- data/samples/syntax-book/ch03.re +1 -1
- data/samples/syntax-book/config-jlreq-lualatex.yml +4 -0
- data/samples/syntax-book/config-print.yml +3 -0
- data/samples/syntax-book/config.yml +1 -1
- data/samples/syntax-book/images/img3-2.png +0 -0
- data/samples/syntax-book/lib/tasks/review.rake +23 -8
- data/templates/html/_colophon.html.erb +23 -0
- data/templates/html/_colophon_history.html.erb +9 -0
- data/templates/html/_cover.html.erb +10 -0
- data/templates/html/_part_body.html.erb +6 -0
- data/templates/html/_titlepage.html.erb +20 -0
- data/templates/html/layout-html5.html.erb +6 -0
- data/templates/html/layout-xhtml1.html.erb +6 -0
- data/templates/latex/config.erb +41 -29
- data/templates/latex/review-jlreq/README.md +3 -1
- data/templates/latex/review-jlreq/review-base.sty +47 -22
- data/templates/latex/review-jlreq/review-jlreq.cls +25 -24
- data/templates/latex/review-jlreq/review-style.sty +6 -1
- data/templates/latex/review-jlreq/review-tcbox.sty +348 -0
- data/templates/latex/review-jlreq/reviewmacro.sty +5 -0
- data/templates/latex/review-jsbook/README.md +7 -5
- data/templates/latex/review-jsbook/review-base.sty +47 -21
- data/templates/latex/review-jsbook/review-jsbook.cls +12 -2
- data/templates/latex/review-jsbook/review-style.sty +6 -1
- data/templates/latex/review-jsbook/review-tcbox.sty +348 -0
- data/templates/latex/review-jsbook/reviewmacro.sty +5 -0
- data/templates/opf/epubv2.opf.erb +7 -7
- data/templates/opf/epubv3.opf.erb +7 -7
- data/templates/opf/opf_manifest_epubv2.opf.erb +10 -0
- data/templates/opf/opf_manifest_epubv3.opf.erb +10 -0
- data/templates/opf/opf_metainfo_epubv2.opf.erb +17 -0
- data/templates/opf/opf_metainfo_epubv3.opf.erb +49 -0
- data/templates/opf/opf_tocx_epubv2.opf.erb +9 -0
- data/templates/opf/opf_tocx_epubv3.opf.erb +17 -0
- data/templates/web/html/layout-html5.html.erb +9 -8
- data/templates/web/html/layout-xhtml1.html.erb +6 -0
- data/test/assets/header_listener.html +35 -0
- data/test/assets/img_math/img1.png +0 -0
- data/test/assets/img_math/img2.png +0 -0
- data/test/assets/img_math/img3.png +0 -0
- data/test/assets/syntax_book_index_detail.txt +58 -0
- data/test/assets/test_template.tex +12 -9
- data/test/assets/test_template_backmatter.tex +12 -9
- data/test/book_test_helper.rb +11 -5
- data/test/run_test.rb +1 -1
- data/test/test_book.rb +62 -63
- data/test/test_book_chapter.rb +99 -56
- data/test/test_book_part.rb +3 -3
- data/test/test_builder.rb +24 -15
- data/test/test_catalog.rb +1 -0
- data/test/test_catalog_converter_cmd.rb +1 -1
- data/test/test_converter.rb +1 -0
- data/test/test_epub3maker.rb +170 -126
- data/test/test_epubmaker.rb +249 -129
- data/test/test_epubmaker_cmd.rb +14 -7
- data/test/test_helper.rb +23 -11
- data/test/test_htmlbuilder.rb +956 -76
- data/test/test_htmlutils.rb +0 -12
- data/test/test_i18n.rb +33 -33
- data/test/test_idgxmlbuilder.rb +568 -10
- data/test/test_idgxmlmaker_cmd.rb +50 -0
- data/test/test_image_finder.rb +52 -70
- data/test/test_img_math.rb +111 -0
- data/test/test_index.rb +62 -52
- data/test/test_indexbuilder.rb +52 -0
- data/test/test_latexbuilder.rb +1056 -30
- data/test/test_latexbuilder_v2.rb +52 -12
- data/test/test_lineinput.rb +20 -93
- data/test/test_logger.rb +7 -7
- data/test/test_makerhelper.rb +0 -12
- data/test/test_markdownbuilder.rb +32 -0
- data/test/test_pdfmaker.rb +100 -11
- data/test/test_pdfmaker_cmd.rb +101 -7
- data/test/test_plaintextbuilder.rb +531 -25
- data/test/test_review_ext.rb +2 -1
- data/test/test_reviewheaderlistener.rb +49 -0
- data/test/test_rstbuilder.rb +25 -1
- data/test/test_sec_counter.rb +156 -0
- data/test/test_template.rb +12 -2
- data/test/test_textmaker_cmd.rb +58 -0
- data/test/test_tocprinter.rb +46 -0
- data/test/test_topbuilder.rb +365 -10
- data/test/test_update.rb +44 -44
- data/test/test_webtocprinter.rb +75 -43
- data/test/test_zip_exporter.rb +5 -6
- data/vendor/gentombow/LICENSE +1 -1
- data/vendor/gentombow/Makefile +0 -1
- data/vendor/gentombow/bounddvi-en.pdf +0 -0
- data/vendor/gentombow/bounddvi-en.tex +1 -0
- data/vendor/gentombow/bounddvi.pdf +0 -0
- data/vendor/gentombow/bounddvi.sty +30 -7
- data/vendor/gentombow/bounddvi.tex +1 -0
- data/vendor/gentombow/create_archive.sh +1 -0
- data/vendor/gentombow/gentombow-ja.pdf +0 -0
- data/vendor/gentombow/gentombow-ja.tex +9 -0
- data/vendor/gentombow/gentombow.pdf +0 -0
- data/vendor/gentombow/gentombow.sty +32 -10
- data/vendor/gentombow/gentombow.tex +8 -0
- data/vendor/gentombow/tests/gentombow-01-pdfx.tex +8 -0
- data/vendor/gentombow/tests/gentombow-02-pdfx.tex +8 -0
- data/vendor/jsclasses/LICENSE +1 -1
- data/vendor/jsclasses/Makefile +3 -2
- data/vendor/jsclasses/create_archive.sh +5 -5
- data/vendor/jsclasses/jis/Makefile +3 -2
- data/vendor/jsclasses/jis/jsarticle.cls +74 -31
- data/vendor/jsclasses/jis/jsbook.cls +74 -31
- data/vendor/jsclasses/jis/jsclasses.dtx +176 -36
- data/vendor/jsclasses/jis/jsclasses.ins +15 -5
- data/vendor/jsclasses/jis/jslogo.dtx +4 -4
- data/vendor/jsclasses/jis/jslogo.ins +9 -0
- data/vendor/jsclasses/jis/jslogo.sty +4 -16
- data/vendor/jsclasses/jis/jspf.cls +73 -30
- data/vendor/jsclasses/jis/jsreport.cls +74 -31
- data/vendor/jsclasses/jis/jsverb.ins +9 -0
- data/vendor/jsclasses/jis/jsverb.sty +1 -13
- data/vendor/jsclasses/jis/kiyou.cls +74 -31
- data/vendor/jsclasses/jis/minijs.sty +65 -22
- data/vendor/jsclasses/jis/okumacro.dtx +4 -5
- data/vendor/jsclasses/jis/okumacro.ins +9 -0
- data/vendor/jsclasses/jis/okumacro.sty +4 -17
- data/vendor/jsclasses/jis/okuverb.ins +9 -0
- data/vendor/jsclasses/jis/okuverb.sty +1 -13
- data/vendor/jsclasses/jis/winjis.sty +23 -19
- data/vendor/jsclasses/jsarticle.cls +74 -31
- data/vendor/jsclasses/jsbook.cls +74 -31
- data/vendor/jsclasses/jsclasses.dtx +176 -36
- data/vendor/jsclasses/jsclasses.ins +15 -5
- data/vendor/jsclasses/jsclasses.pdf +0 -0
- data/vendor/jsclasses/jslogo.dtx +4 -4
- data/vendor/jsclasses/jslogo.ins +9 -0
- data/vendor/jsclasses/jslogo.pdf +0 -0
- data/vendor/jsclasses/jslogo.sty +4 -16
- data/vendor/jsclasses/jspf.cls +73 -30
- data/vendor/jsclasses/jsreport.cls +74 -31
- data/vendor/jsclasses/jsverb.ins +9 -0
- data/vendor/jsclasses/jsverb.pdf +0 -0
- data/vendor/jsclasses/jsverb.sty +1 -13
- data/vendor/jsclasses/kiyou.cls +74 -31
- data/vendor/jsclasses/minijs.sty +68 -22
- data/vendor/jsclasses/okumacro.dtx +4 -5
- data/vendor/jsclasses/okumacro.ins +9 -0
- data/vendor/jsclasses/okumacro.pdf +0 -0
- data/vendor/jsclasses/okumacro.sty +4 -17
- data/vendor/jsclasses/okuverb.ins +9 -0
- data/vendor/jsclasses/okuverb.pdf +0 -0
- data/vendor/jsclasses/okuverb.sty +1 -13
- data/vendor/jsclasses/tests/relfont.tex +10 -0
- data/vendor/jsclasses/winjis.sty +23 -19
- metadata +109 -20
- data/.rubocop_todo.yml +0 -7
- data/lib/epubmaker.rb +0 -23
- data/lib/epubmaker/content.rb +0 -110
- data/lib/epubmaker/epubcommon.rb +0 -441
- data/lib/epubmaker/epubv2.rb +0 -143
- data/lib/epubmaker/epubv3.rb +0 -233
- data/lib/epubmaker/producer.rb +0 -375
- data/lib/epubmaker/zip_exporter.rb +0 -81
- data/lib/lineinput.rb +0 -155
- data/lib/review/book/compilable.rb +0 -178
- data/lib/review/tocparser.rb +0 -271
- data/samples/syntax-book/review-ext.rb +0 -14
- data/test/test_tocparser.rb +0 -25
data/lib/review/webtocprinter.rb
CHANGED
@@ -1,54 +1,58 @@
|
|
1
1
|
require 'review/tocprinter'
|
2
2
|
require 'review/i18n'
|
3
|
+
require 'review/htmlutils'
|
3
4
|
|
4
5
|
module ReVIEW
|
5
6
|
class WEBTOCPrinter < TOCPrinter
|
6
7
|
include HTMLUtils
|
7
8
|
|
8
9
|
def self.book_to_string(book)
|
9
|
-
|
10
|
-
ReVIEW::WEBTOCPrinter.new(1, {}, io).print_book(book)
|
11
|
-
io.seek(0)
|
12
|
-
io.read
|
10
|
+
ReVIEW::WEBTOCPrinter.new.print_book(book)
|
13
11
|
end
|
14
12
|
|
15
13
|
def print_book(book)
|
16
|
-
@
|
17
|
-
@
|
18
|
-
|
19
|
-
|
20
|
-
end
|
21
|
-
@out.puts '</ul>'
|
14
|
+
@book = book
|
15
|
+
@indent = nil
|
16
|
+
@upper = 1 # only part and chapter
|
17
|
+
print_result(build_result_array)
|
22
18
|
end
|
23
19
|
|
24
|
-
def
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
20
|
+
def print_result(result_array)
|
21
|
+
content = <<EOT
|
22
|
+
<ul class="book-toc">
|
23
|
+
<li><a href="index.html">TOP</a></li>
|
24
|
+
EOT
|
25
|
+
|
26
|
+
path = ''
|
27
|
+
result_array.each do |result|
|
28
|
+
unless result.headline
|
29
|
+
result.headline = '-'
|
30
|
+
end
|
31
|
+
|
32
|
+
if result.name
|
33
|
+
path = "#{result.name}.#{@book.config['htmlext']}"
|
34
|
+
next
|
35
|
+
end
|
36
|
+
|
37
|
+
if result.part
|
38
|
+
if result.part == 'end'
|
39
|
+
content << "</ul></li>\n"
|
40
|
+
end
|
41
|
+
next
|
42
|
+
end
|
43
|
+
|
44
|
+
if path.start_with?('.')
|
45
|
+
content << "<li>#{escape(result.headline)}"
|
30
46
|
else
|
31
|
-
|
47
|
+
content << %Q(<li><a href="#{path}">#{escape(result.headline)}</a>)
|
48
|
+
end
|
49
|
+
if result.level == 0
|
50
|
+
content << "\n<ul>" # part
|
51
|
+
else
|
52
|
+
content << "</li>\n"
|
32
53
|
end
|
33
54
|
end
|
34
|
-
|
35
|
-
print_chapter(chap)
|
36
|
-
end
|
37
|
-
if part.number
|
38
|
-
@out.puts "</ul>\n</li>\n"
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def print_chapter(chap)
|
43
|
-
chap_node = TOCParser.chapter_node(chap)
|
44
|
-
ext = chap.book.config['htmlext'] || 'html'
|
45
|
-
path = File.basename(chap.path.sub(/\.re/, '.' + ext))
|
46
|
-
label = if chap_node.number && chap.on_chaps?
|
47
|
-
"#{I18n.t('chapter_short', chap.number)} #{chap.title}"
|
48
|
-
else
|
49
|
-
chap.title
|
50
|
-
end
|
51
|
-
@out.puts %Q(<li><a href="#{path}">#{h(label)}</a></li>\n)
|
55
|
+
content << "</ul>\n"
|
52
56
|
end
|
53
57
|
end
|
54
58
|
end
|
data/lib/review/yamlloader.rb
CHANGED
@@ -18,9 +18,10 @@ module ReVIEW
|
|
18
18
|
while file_queue.present?
|
19
19
|
current_file = file_queue.shift
|
20
20
|
current_yaml = YAML.load_file(current_file)
|
21
|
-
if current_yaml.
|
21
|
+
if current_yaml.instance_of?(FalseClass)
|
22
22
|
raise "#{File.basename(current_file)} is malformed."
|
23
23
|
end
|
24
|
+
|
24
25
|
yaml = current_yaml.deep_merge(yaml)
|
25
26
|
|
26
27
|
if yaml.key?('inherit')
|
data/review.gemspec
CHANGED
@@ -7,12 +7,11 @@ Gem::Specification.new do |gem|
|
|
7
7
|
gem.platform = Gem::Platform::RUBY
|
8
8
|
gem.license = 'LGPL'
|
9
9
|
gem.authors = %w[kmuto takahashim]
|
10
|
-
gem.email = 'kmuto@
|
10
|
+
gem.email = 'kmuto@kmuto.jp'
|
11
11
|
gem.homepage = 'http://github.com/kmuto/review'
|
12
12
|
gem.summary = 'Re:VIEW: a easy-to-use digital publishing system'
|
13
13
|
gem.description = 'Re:VIEW is a digital publishing system for books and ebooks. It supports InDesign, EPUB and LaTeX.'
|
14
14
|
gem.required_rubygems_version = Gem::Requirement.new('>= 0') if gem.respond_to?(:required_rubygems_version=)
|
15
|
-
gem.date = '2019-10-29'
|
16
15
|
|
17
16
|
gem.files = `git ls-files`.split("\n")
|
18
17
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
@@ -23,10 +22,13 @@ Gem::Specification.new do |gem|
|
|
23
22
|
gem.add_dependency('image_size')
|
24
23
|
gem.add_dependency('rouge')
|
25
24
|
gem.add_dependency('rubyzip')
|
25
|
+
gem.add_dependency('tty-logger')
|
26
|
+
gem.add_development_dependency('mini_magick')
|
26
27
|
gem.add_development_dependency('pygments.rb')
|
27
28
|
gem.add_development_dependency('rake')
|
28
|
-
gem.add_development_dependency('rubocop', '~>
|
29
|
+
gem.add_development_dependency('rubocop', '~> 1.10.0')
|
29
30
|
gem.add_development_dependency('rubocop-performance')
|
31
|
+
gem.add_development_dependency('rubocop-rake')
|
30
32
|
gem.add_development_dependency('simplecov')
|
31
33
|
gem.add_development_dependency('test-unit')
|
32
34
|
gem.add_development_dependency('unicode-eaw')
|
@@ -11,7 +11,7 @@ language: ja
|
|
11
11
|
# 書名
|
12
12
|
booktitle: Re:VIEWサンプル書籍
|
13
13
|
# 固有IDに使用するドメイン。省略した場合は時刻に基づくランダムUUIDが入る
|
14
|
-
urnid: urn:
|
14
|
+
urnid: urn:uuid:http://tatsu-zine.com/books/review-sample-book/1.0.0/
|
15
15
|
# ISBN。省略した場合はurnidが入る
|
16
16
|
# isbn: null
|
17
17
|
# 著者名。["高橋征義", "John Doe"] のように配列を使うことで複数指定可
|
@@ -1,9 +1,9 @@
|
|
1
1
|
## config.yml for sample book
|
2
|
-
review_version:
|
2
|
+
review_version: 5.0
|
3
3
|
bookname: book
|
4
4
|
language: ja
|
5
5
|
booktitle: Re:VIEWサンプル書籍
|
6
|
-
urnid: urn:
|
6
|
+
urnid: urn:uuid:http://reviewml.com/books/review-sample-book/
|
7
7
|
# isbn: null
|
8
8
|
aut: Re:VIEW Writers
|
9
9
|
pbl: Re:VIEW Publishers
|
@@ -35,7 +35,7 @@ colophon: true
|
|
35
35
|
# font_ext: ["ttf", "woff", "otf"]
|
36
36
|
# catalogfile: catalog.yml
|
37
37
|
# page_metric: A5
|
38
|
-
# page_metric: [40,
|
38
|
+
# page_metric: [40,34,29,34]
|
39
39
|
# direction: "ltr"
|
40
40
|
|
41
41
|
epubmaker:
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2006-
|
1
|
+
# Copyright (c) 2006-2021 Minero Aoki, Kenshi Muto, Masayoshi Takahashi, Masanori Kado.
|
2
2
|
#
|
3
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
4
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -30,7 +30,16 @@ WEBROOT = ENV['REVIEW_WEBROOT'] || 'webroot'
|
|
30
30
|
TEXTROOT = BOOK + '-text'
|
31
31
|
TOPROOT = BOOK + '-text'
|
32
32
|
IDGXMLROOT = BOOK + '-idgxml'
|
33
|
+
PDF_OPTIONS = ENV['REVIEW_PDF_OPTIONS'] || ''
|
34
|
+
EPUB_OPTIONS = ENV['REVIEW_EPUB_OPTIONS'] || ''
|
35
|
+
WEB_OPTIONS = ENV['REVIEW_WEB_OPTIONS'] || ''
|
33
36
|
IDGXML_OPTIONS = ENV['REVIEW_IDGXML_OPTIONS'] || ''
|
37
|
+
TEXT_OPTIONS = ENV['REVIEW_TEXT_OPTIONS'] || ''
|
38
|
+
|
39
|
+
REVIEW_VSCLI = ENV['REVIEW_VSCLI'] || 'vivliostyle'
|
40
|
+
REVIEW_VSCLI_USESANDBOX = ENV['REVIEW_VSCLI_USESANDBOX'] ? '' : '--no-sandbox'
|
41
|
+
REVIEW_VSCLI_PDF = ENV['REVIEW_VSCLI_PDF'] || BOOK_PDF
|
42
|
+
REVIEW_VSCLI_OPTIONS = ENV['REVIEW_VSCLI_OPTIONS'] || ''
|
34
43
|
|
35
44
|
def build(mode, chapter)
|
36
45
|
sh("review-compile --target=#{mode} --footnotetext --stylesheet=style.css #{chapter} > tmp")
|
@@ -76,12 +85,12 @@ task web: WEBROOT
|
|
76
85
|
|
77
86
|
desc 'generate text file (without decoration)'
|
78
87
|
task plaintext: TEXTROOT do
|
79
|
-
sh "review-textmaker -n #{CONFIG_FILE}"
|
88
|
+
sh "review-textmaker #{TEXT_OPTIONS} -n #{CONFIG_FILE}"
|
80
89
|
end
|
81
90
|
|
82
91
|
desc 'generate (decorated) text file'
|
83
92
|
task text: TOPROOT do
|
84
|
-
sh "review-textmaker #{CONFIG_FILE}"
|
93
|
+
sh "review-textmaker #{TEXT_OPTIONS} #{CONFIG_FILE}"
|
85
94
|
end
|
86
95
|
|
87
96
|
desc 'generate IDGXML file'
|
@@ -100,17 +109,17 @@ SRC_PDF = FileList['layouts/*.erb', 'sty/**/*.sty']
|
|
100
109
|
|
101
110
|
file BOOK_PDF => SRC + SRC_PDF do
|
102
111
|
FileUtils.rm_rf([BOOK_PDF, BOOK, BOOK + '-pdf'])
|
103
|
-
sh "review-pdfmaker #{CONFIG_FILE}"
|
112
|
+
sh "review-pdfmaker #{PDF_OPTIONS} #{CONFIG_FILE}"
|
104
113
|
end
|
105
114
|
|
106
115
|
file BOOK_EPUB => SRC + SRC_EPUB do
|
107
116
|
FileUtils.rm_rf([BOOK_EPUB, BOOK, BOOK + '-epub'])
|
108
|
-
sh "review-epubmaker #{CONFIG_FILE}"
|
117
|
+
sh "review-epubmaker #{EPUB_OPTIONS} #{CONFIG_FILE}"
|
109
118
|
end
|
110
119
|
|
111
120
|
file WEBROOT => SRC do
|
112
121
|
FileUtils.rm_rf([WEBROOT])
|
113
|
-
sh "review-webmaker #{CONFIG_FILE}"
|
122
|
+
sh "review-webmaker #{WEB_OPTIONS} #{CONFIG_FILE}"
|
114
123
|
end
|
115
124
|
|
116
125
|
file TEXTROOT => SRC do
|
@@ -121,4 +130,15 @@ file IDGXMLROOT => SRC do
|
|
121
130
|
FileUtils.rm_rf([IDGXMLROOT])
|
122
131
|
end
|
123
132
|
|
133
|
+
desc 'run vivliostyle'
|
134
|
+
task 'vivliostyle:preview': BOOK_EPUB do
|
135
|
+
sh "#{REVIEW_VSCLI} preview #{REVIEW_VSCLI_USESANDBOX} #{REVIEW_VSCLI_OPTIONS} #{BOOK_EPUB}"
|
136
|
+
end
|
137
|
+
|
138
|
+
task 'vivliostyle:build': BOOK_EPUB do
|
139
|
+
sh "#{REVIEW_VSCLI} build #{REVIEW_VSCLI_USESANDBOX} #{REVIEW_VSCLI_OPTIONS} -o #{REVIEW_VSCLI_PDF} #{BOOK_EPUB}"
|
140
|
+
end
|
141
|
+
|
142
|
+
task vivliostyle: 'vivliostyle:build'
|
143
|
+
|
124
144
|
CLEAN.include([BOOK, BOOK_PDF, BOOK_EPUB, BOOK + '-pdf', BOOK + '-epub', WEBROOT, 'images/_review_math', 'images/_review_math_text', TEXTROOT, IDGXMLROOT])
|
data/samples/syntax-book/Gemfile
CHANGED
data/samples/syntax-book/ch01.re
CHANGED
@@ -104,7 +104,7 @@ olnumで一応番号が変更可能なことを期待していますが、Webブ
|
|
104
104
|
=== 用語リスト
|
105
105
|
用語リスト(HTMLの@<i>{dl}、TeXの@<i>{description})は@<i>{スペース}+@<tt>{:}+@<i>{スペース}で見出しを、説明は行頭にタブかスペースを入れて表現します。
|
106
106
|
|
107
|
-
: Alpha@<b>{bold太字}@<i>{italicイタ}@<tt>{等幅code}
|
107
|
+
: Alpha@<b>{bold太字}@<i>{italicイタ}@<tt>{等幅code}@<fn>{foot1}
|
108
108
|
@<i>{DEC}の作っていた@<b>{RISC CPU}。@<i>{italicイタ}@<tt>{等幅code}
|
109
109
|
浮動小数点数演算が速い。
|
110
110
|
: POWER
|
@@ -114,6 +114,8 @@ olnumで一応番号が変更可能なことを期待していますが、Webブ
|
|
114
114
|
Sunが作っているRISC CPU。
|
115
115
|
CPU数を増やすのが得意。
|
116
116
|
|
117
|
+
//footnote[foot1][箇条書き見出しへの脚注。]
|
118
|
+
|
117
119
|
//emlist{
|
118
120
|
@<b>{bold太字}@<i>{italicイタ}
|
119
121
|
|
data/samples/syntax-book/ch02.re
CHANGED
@@ -49,9 +49,9 @@ print('hello');
|
|
49
49
|
puts 'Hello'
|
50
50
|
//}
|
51
51
|
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
//source{
|
53
|
+
puts 'Hello'
|
54
|
+
//}
|
55
55
|
|
56
56
|
実行例を示すとき用にはcmdを用意しています。いずれにせよ、商業書籍レベルでは必要なので用意しているものの、原稿レベルで書き手が使うコードブロックはほどほどの数に留めておいたほうがいいのではないかと思います。TeX版の紙面ではデフォルトは黒アミ。印刷によってはベタ黒塗りはちょっと怖いかもなので、あまり長々したものには使わないほうがいいですね。
|
57
57
|
|
@@ -62,12 +62,7 @@ $ @<b>{ls /}
|
|
62
62
|
=== 図
|
63
63
|
採番・キャプション付きの図の貼り付けはimageを使用します(@<img>{ball})。図版ファイルは識別子とビルダが対応しているフォーマットから先着順に探索されます。詳細については@<href>{https://github.com/kmuto/review/wiki/ImagePath, ImagePath}のドキュメントを参照してください。
|
64
64
|
|
65
|
-
|
66
|
-
本当はimageのキャプションにfootnoteを付けたいのですが、TeXではエラーになりますね。厳しい……。
|
67
|
-
#@# FIXME:TeXのキャプションfootnote問題
|
68
|
-
|
69
|
-
#@# //image[ball][ボール@<fn>{madebygimp}]{
|
70
|
-
//image[ball][ボール]{
|
65
|
+
//image[ball][ボール@<fn>{madebygimp}]{
|
71
66
|
//}
|
72
67
|
|
73
68
|
//footnote[madebygimp][GIMPのフィルタで作成。@<br>{}footnote内改行]
|
@@ -86,11 +81,8 @@ $ @<b>{ls /}
|
|
86
81
|
=== 表
|
87
82
|
表はtableを使います。@<table>{tab2-1}
|
88
83
|
|
89
|
-
table
|
90
|
-
|
91
|
-
|
92
|
-
#@# //table[tab2-1][表の@<b>{例}@<fn>{tabalign}]{
|
93
|
-
//table[tab2-1][表の@<b>{例}]{
|
84
|
+
//table[tab2-1][表の@<b>{例}@<fn>{tabalign}]{
|
85
|
+
#@#//table[tab2-1][表の@<b>{例}]{
|
94
86
|
A B C
|
95
87
|
----------------------------------
|
96
88
|
D E@<b>{太字bold}@<i>{italicイタ}@<tt>{等幅code} F@<br>{}G
|
@@ -111,7 +103,7 @@ D E@<b>{太字bold}@<i>{italicイタ}@<tt>{等幅code} F@<br>{}G
|
|
111
103
|
H I 長いセルの折り返し■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
|
112
104
|
//}
|
113
105
|
|
114
|
-
TeXの普通のクラスファイルだと、列指定はl,c,r,p
|
106
|
+
TeXの普通のクラスファイルだと、列指定はl,c,r,p(幅指定+左均等)しかないのですが、Re:VIEWのスタイルファイルでL(幅指定+左寄せ,均等なし)、C(幅指定+中寄せ)、R(幅指定+右寄せ)を指定可能です。
|
115
107
|
|
116
108
|
あとは縦に長い表がTeXだとそのままはみ出してしまうのでlongtableがあるけれどもそれはまた問題がいろいろあり……。
|
117
109
|
|
@@ -263,7 +255,7 @@ Tips。@<b>{太字bold}@<i>{italicイタ}@<tt>{等幅code}
|
|
263
255
|
#@# doorquote、bpo、talk、graph、address、box、linebreak、pagebreak、hr、comment、abbr、acronym、dfn、kbd、q、samp、var、big、small、del、ins、recipe、dtp、raw、embed、include
|
264
256
|
|
265
257
|
== LaTeX式
|
266
|
-
LaTeX式はTeX紙面以外は保証されません。EPUBではMathML(@<tt>{
|
258
|
+
LaTeX式はTeX紙面以外は保証されません。EPUBではMathML(@<tt>{math_format: mathml})を使えますが、表現や互換性が不足しており、LaTeXをバックエンドとして画像化する@<tt>{math_format: imgmath}のほうがよさそうです。
|
267
259
|
|
268
260
|
//texequation{
|
269
261
|
\sum_{i=1}^nf_n(x)
|
@@ -293,7 +285,7 @@ a_{m1} & \cdots & a_{mn}
|
|
293
285
|
#@# 場所ラベル定義
|
294
286
|
|
295
287
|
=== 書体
|
296
|
-
本文での……キーワード@<kw>{キーワード, keyword}@<fn>{kw}、太字@<b>{b太字}、イタリック@<i>{iイタリック}、等幅@<tt>{tt等幅}、強調@<strong>{strong強調}、強調@<em>{em強調}、下線@<u>{u下線}、等幅@<code>{code等幅}、等幅太字@<ttb>{ttb等幅太字}、等幅イタリック@<tti>{tti等幅イタリック}、網カケ@<ami>{amiアミ}、16進UTF文字指定@<uchar>{3042}、インラインアイコン@<icon>{inlineicon}
|
288
|
+
本文での……キーワード@<kw>{キーワード, keyword}@<fn>{kw}、太字@<b>{b太字}、イタリック@<i>{iイタリック}、等幅@<tt>{tt等幅}、強調@<strong>{strong強調}、強調@<em>{em強調}、下線@<u>{u下線}、等幅@<code>{code等幅}、等幅太字@<ttb>{ttb等幅太字}、等幅イタリック@<tti>{tti等幅イタリック}、網カケ@<ami>{amiアミ}、挿入@<ins>{ins挿入}、削除@<del>{del削除}、16進UTF文字指定@<uchar>{3042}、インラインアイコン@<icon>{inlineicon}
|
297
289
|
|
298
290
|
傍点@<embed>{@}<bou>{bou傍点}、ルビ@<embed>{@}<ruby>{愕然, がくぜん}、縦中横@<embed>{@}<tcy>{90}、はTeXでは現状、別パッケージが必要です。
|
299
291
|
#@# FIXME:TEXでの文字スタイル。外部パッケージが必要
|
@@ -307,23 +299,25 @@ a_{m1} & \cdots & a_{mn}
|
|
307
299
|
|
308
300
|
//footnote[kw][キーワードのカッコは太字にしないほうがいいのかなと思いつつあります(手元の案件では太字にしないよう挙動を変えてしまっているほうが多い)。]
|
309
301
|
|
310
|
-
* 箇条書き内での……キーワード@<kw>{キーワード, keyword}、太字@<b>{b太字}、イタリック@<i>{iイタリック}、等幅@<tt>{tt等幅}、強調@<strong>{strong強調}、強調@<em>{em強調}、下線@<u>{u下線}、等幅@<code>{code等幅}、等幅太字@<ttb>{ttb等幅太字}、等幅イタリック@<tti>{tti等幅イタリック}、網カケ@<ami>{amiアミ}、16進UTF文字指定@<uchar>{3042}、インラインアイコン@<icon>{inlineicon}
|
302
|
+
* 箇条書き内での……キーワード@<kw>{キーワード, keyword}、太字@<b>{b太字}、イタリック@<i>{iイタリック}、等幅@<tt>{tt等幅}、強調@<strong>{strong強調}、強調@<em>{em強調}、下線@<u>{u下線}、等幅@<code>{code等幅}、等幅太字@<ttb>{ttb等幅太字}、等幅イタリック@<tti>{tti等幅イタリック}、網カケ@<ami>{amiアミ}、挿入@<ins>{ins挿入}、削除@<del>{del削除}、16進UTF文字指定@<uchar>{3042}、インラインアイコン@<icon>{inlineicon}
|
311
303
|
|
312
304
|
//tsize[|latex|p{120mm}]
|
313
305
|
//table{
|
314
|
-
表内での……キーワード@<kw>{キーワード, keyword}、太字@<b>{b太字}、イタリック@<i>{iイタリック}、等幅@<tt>{tt等幅}、強調@<strong>{strong強調}、強調@<em>{em強調}、下線@<u>{u下線}、等幅@<code>{code等幅}、等幅太字@<ttb>{ttb等幅太字}、等幅イタリック@<tti>{tti等幅イタリック}、網カケ@<ami>{amiアミ}、16進UTF文字指定@<uchar>{3042}、インラインアイコン@<icon>{inlineicon}
|
306
|
+
表内での……キーワード@<kw>{キーワード, keyword}、太字@<b>{b太字}、イタリック@<i>{iイタリック}、等幅@<tt>{tt等幅}、強調@<strong>{strong強調}、強調@<em>{em強調}、下線@<u>{u下線}、等幅@<code>{code等幅}、等幅太字@<ttb>{ttb等幅太字}、等幅イタリック@<tti>{tti等幅イタリック}、網カケ@<ami>{amiアミ}、挿入@<ins>{ins挿入}、削除@<del>{del削除}、16進UTF文字指定@<uchar>{3042}、インラインアイコン@<icon>{inlineicon}
|
315
307
|
//}
|
316
308
|
|
317
309
|
コードブロック内では対応装飾は減らしてよいと考えます。代わりにballoonが追加されます。
|
318
310
|
|
319
|
-
//emlist[キャプション内での……キーワード@<kw>{キーワード, keyword}、太字@<b>{b太字}、イタリック@<i>{iイタリック}、等幅@<tt>{tt等幅}、強調@<strong>{strong強調}、強調@<em>{em強調}、下線@<u>{u下線}、等幅@<code>{code等幅}、等幅太字@<ttb>{ttb等幅太字}、等幅イタリック@<tti>{tti等幅イタリック}、網カケ@<ami>{amiアミ}、16進UTF文字指定@<uchar>{3042}、インラインアイコン@<icon>{inlineicon}]{
|
311
|
+
//emlist[キャプション内での……キーワード@<kw>{キーワード, keyword}、太字@<b>{b太字}、イタリック@<i>{iイタリック}、等幅@<tt>{tt等幅}、強調@<strong>{strong強調}、強調@<em>{em強調}、下線@<u>{u下線}、等幅@<code>{code等幅}、等幅太字@<ttb>{ttb等幅太字}、等幅イタリック@<tti>{tti等幅イタリック}、網カケ@<ami>{amiアミ}、挿入@<ins>{ins挿入}、削除@<del>{del削除}、16進UTF文字指定@<uchar>{3042}、インラインアイコン@<icon>{inlineicon}]{
|
320
312
|
コードブロック内での……
|
321
313
|
太字@<b>{b太字}
|
322
314
|
イタリック@<i>{iイタリック}
|
323
315
|
下線@<u>{u下線}
|
324
316
|
網カケ@<ami>{amiアミ} @<balloon>{ふきだし説明}
|
317
|
+
挿入@<ins>{ins挿入}、削除@<del>{del削除}
|
325
318
|
//}
|
326
319
|
|
320
|
+
=== 見出し内 @<b>{BOLD},@<i>{ITALIC},@<tt>{TT},@<strong>{STRONG},@<em>{EM},@<code>{CODE},@<ttb>{TTB},@<tti>{TTI},@<ami>{AMI},@<bou>{BOU},@<kw>{KW},@<u>{UNDERLINE},@<ins>{INS}、@<del>{DEL}
|
327
321
|
|
328
322
|
==={crossref} 参照
|
329
323
|
#@# FIXME:任意ラベルを使うと、EPUBチェックエラーになることがある?
|
@@ -331,7 +325,6 @@ a_{m1} & \cdots & a_{mn}
|
|
331
325
|
* 章番号:@<chap>{ch01}、@<chap>{appA}、@<chap>{part2}、@<chap>{bib}
|
332
326
|
* 章題:@<title>{ch01}、@<title>{part2}、@<title>{appA}、@<title>{bib}
|
333
327
|
* 章番号+題:@<chapref>{ch02}、@<chapref>{part2}、@<chapref>{appA}、@<chapref>{bib}
|
334
|
-
#@# FIXME:TeXで、部が実際のページではIIなのに参照では2になっているのはおかしい→i18n.ymlがおかしいせいか
|
335
328
|
|
336
329
|
節や項への参照はhdを使います。
|
337
330
|
|
@@ -347,10 +340,24 @@ labelで定義したラベルへの参照の例です。EPUBだと@<href>{#inlin
|
|
347
340
|
#@# FIXME:EPUB側にTeXのほうを寄せるようにRe:VIEWコードを直す
|
348
341
|
#@# FIXME:TeXではpagerefがほしい、ということがありそう。EPUBとの整合性を検討
|
349
342
|
|
343
|
+
説明箇条書きはTeXで特殊な扱いをしているため、参照の確認を以下でしておきます。
|
344
|
+
|
345
|
+
: @<chap>{ch01}
|
346
|
+
章番号
|
347
|
+
: @<title>{ch01}
|
348
|
+
章題
|
349
|
+
: @<chapref>{ch01}
|
350
|
+
章番号+題
|
351
|
+
: @<hd>{ch02|crossref}
|
352
|
+
節
|
353
|
+
: @<column>{ch03|column2}
|
354
|
+
コラム参照
|
355
|
+
|
350
356
|
=== 参考文献
|
351
357
|
参考文献@<tt>{bib.re}ファイルへの文献参照は、@<bib>{lins}とします。
|
352
358
|
|
353
359
|
=== 索引
|
354
360
|
@<hidx>{索引}@<hidx>{index}索引はTeXとIDGXML以外では妥当な動作を定義していません。idx@<hidx>{索引<<>>idx}は文中にも表示し、hidx@<hidx>{索引<<>>hidx}は文中からは隠した形の索引にします。読みは@<idx>{Mecab}があればそちらを使いますが、@<idx>{辞書ファイル}を直接定義することもできます。@<hidx>{!<>"$&()~=|,./\{\}?_[]*:;+%#()'`^}
|
361
|
+
@<hidx>{|}@<hidx>{{}@<hidx>$}$
|
355
362
|
|
356
363
|
idx, hidxいずれも=見出しの中には入れないようにし、後続の段落先頭にhidxで入れるように注意します(入れてしまうと目次などがおかしくなります)。
|
data/samples/syntax-book/ch03.re
CHANGED
Binary file
|