review 3.0.0 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby-win.yml +39 -0
  3. data/.github/workflows/ruby.yml +27 -0
  4. data/.rubocop.yml +50 -12
  5. data/.travis.yml +17 -8
  6. data/Dockerfile +21 -5
  7. data/NEWS.ja.md +358 -0
  8. data/NEWS.md +358 -1
  9. data/README.md +11 -8
  10. data/appveyor.yml +1 -3
  11. data/bin/review-catalog-converter +4 -4
  12. data/bin/review-check +8 -8
  13. data/bin/review-checkdep +1 -1
  14. data/bin/review-compile +12 -12
  15. data/bin/review-epubmaker +3 -35
  16. data/bin/review-idgxmlmaker +16 -0
  17. data/bin/review-index +2 -89
  18. data/bin/review-preproc +14 -19
  19. data/bin/review-validate +3 -3
  20. data/bin/review-vol +4 -78
  21. data/doc/LICENSE +1 -1
  22. data/doc/config.yml.sample +46 -12
  23. data/doc/config.yml.sample-simple +4 -2
  24. data/doc/format.ja.md +37 -13
  25. data/doc/format.md +35 -20
  26. data/doc/pdfmaker.ja.md +43 -1
  27. data/doc/pdfmaker.md +42 -1
  28. data/doc/quickstart.ja.md +46 -26
  29. data/doc/quickstart.md +38 -17
  30. data/lib/epubmaker/epubcommon.rb +10 -5
  31. data/lib/epubmaker/epubv2.rb +1 -1
  32. data/lib/epubmaker/epubv3.rb +1 -0
  33. data/lib/epubmaker/producer.rb +4 -2
  34. data/lib/review/book.rb +1 -1
  35. data/lib/review/book/base.rb +38 -79
  36. data/lib/review/book/chapter.rb +18 -3
  37. data/lib/review/book/compilable.rb +6 -5
  38. data/lib/review/book/index.rb +69 -101
  39. data/lib/review/book/index/item.rb +40 -0
  40. data/lib/review/book/page_metric.rb +7 -7
  41. data/lib/review/book/part.rb +28 -5
  42. data/lib/review/book/volume.rb +3 -4
  43. data/lib/review/builder.rb +105 -44
  44. data/lib/review/catalog.rb +13 -16
  45. data/lib/review/compiler.rb +84 -72
  46. data/lib/review/configure.rb +19 -8
  47. data/lib/review/epub2html.rb +37 -4
  48. data/lib/review/epubmaker.rb +62 -7
  49. data/lib/review/extentions/string.rb +0 -4
  50. data/lib/review/htmlbuilder.rb +102 -115
  51. data/lib/review/htmlutils.rb +2 -3
  52. data/lib/review/i18n.rb +2 -2
  53. data/lib/review/i18n.yml +9 -0
  54. data/lib/review/idgxmlbuilder.rb +153 -74
  55. data/lib/review/idgxmlmaker.rb +191 -0
  56. data/lib/review/init-web/finish.html +10 -0
  57. data/lib/review/init-web/index.html +190 -0
  58. data/lib/review/init-web/review-layout-design.js +691 -0
  59. data/lib/review/init.rb +125 -34
  60. data/lib/review/latexbuilder.rb +199 -88
  61. data/lib/review/lineinput.rb +1 -1
  62. data/lib/review/location.rb +32 -0
  63. data/lib/review/logger.rb +4 -8
  64. data/lib/review/makerhelper.rb +24 -5
  65. data/lib/review/markdownbuilder.rb +31 -37
  66. data/lib/review/md2inaobuilder.rb +3 -5
  67. data/lib/review/pdfmaker.rb +44 -22
  68. data/lib/review/plaintextbuilder.rb +106 -85
  69. data/lib/review/preprocessor.rb +32 -41
  70. data/lib/review/rstbuilder.rb +33 -33
  71. data/lib/review/textmaker.rb +19 -3
  72. data/lib/review/textutils.rb +76 -2
  73. data/lib/review/tocprinter.rb +231 -102
  74. data/lib/review/topbuilder.rb +114 -61
  75. data/lib/review/update.rb +19 -19
  76. data/lib/review/version.rb +1 -1
  77. data/lib/review/volumeprinter.rb +99 -0
  78. data/lib/review/webmaker.rb +11 -4
  79. data/lib/review/webtocprinter.rb +38 -35
  80. data/lib/review/yamlloader.rb +26 -16
  81. data/review.gemspec +6 -4
  82. data/samples/sample-book/README.md +7 -2
  83. data/samples/sample-book/src/.gitignore +154 -0
  84. data/samples/sample-book/src/config-ebook.yml +4 -0
  85. data/samples/sample-book/src/config-jlreq-ebook.yml +4 -0
  86. data/samples/sample-book/src/config-jlreq.yml +6 -0
  87. data/samples/sample-book/src/config.yml +2 -2
  88. data/samples/sample-book/src/lib/tasks/review.rake +29 -14
  89. data/samples/sample-book/src/lib/tasks/z01_copy_sty.rake +14 -8
  90. data/samples/syntax-book/ch01.re +4 -2
  91. data/samples/syntax-book/ch02.re +8 -16
  92. data/samples/syntax-book/ch03.re +3 -6
  93. data/samples/syntax-book/config-jlreq-lualatex.yml +4 -0
  94. data/samples/syntax-book/config-jlreq.yml +5 -0
  95. data/samples/syntax-book/config-print.yml +3 -0
  96. data/samples/syntax-book/config.yml +1 -1
  97. data/samples/syntax-book/lib/tasks/review.rake +30 -15
  98. data/samples/syntax-book/lib/tasks/z01_copy_sty.rake +14 -8
  99. data/templates/latex/config.erb +16 -0
  100. data/templates/latex/layout.tex.erb +4 -0
  101. data/templates/latex/review-jlreq/review-base.sty +150 -61
  102. data/templates/latex/review-jlreq/review-jlreq.cls +74 -8
  103. data/templates/latex/review-jlreq/review-style.sty +4 -1
  104. data/templates/latex/review-jsbook/README.md +39 -0
  105. data/templates/latex/review-jsbook/review-base.sty +101 -23
  106. data/templates/latex/review-jsbook/review-jsbook.cls +28 -5
  107. data/templates/latex/review-jsbook/review-style.sty +5 -2
  108. data/templates/opf/epubv3.opf.erb +1 -0
  109. data/templates/web/html/layout-html5.html.erb +2 -2
  110. data/test/assets/test_template.tex +24 -3
  111. data/test/assets/test_template_backmatter.tex +24 -3
  112. data/test/test_book.rb +75 -21
  113. data/test/test_book_chapter.rb +4 -2
  114. data/test/test_book_part.rb +3 -3
  115. data/test/test_builder.rb +16 -0
  116. data/test/test_catalog.rb +24 -42
  117. data/test/test_catalog_converter_cmd.rb +1 -1
  118. data/test/test_epubmaker_cmd.rb +14 -7
  119. data/test/test_helper.rb +15 -7
  120. data/test/test_htmlbuilder.rb +909 -159
  121. data/test/test_i18n.rb +25 -25
  122. data/test/test_idgxmlbuilder.rb +395 -38
  123. data/test/test_idgxmlmaker_cmd.rb +46 -0
  124. data/test/test_image_finder.rb +52 -70
  125. data/test/test_index.rb +50 -10
  126. data/test/test_latexbuilder.rb +1194 -106
  127. data/test/test_latexbuilder_v2.rb +628 -97
  128. data/test/test_logger.rb +14 -1
  129. data/test/test_makerhelper.rb +3 -3
  130. data/test/test_markdownbuilder.rb +134 -16
  131. data/test/test_md2inaobuilder.rb +32 -9
  132. data/test/test_pdfmaker.rb +18 -1
  133. data/test/test_pdfmaker_cmd.rb +100 -6
  134. data/test/test_plaintextbuilder.rb +371 -25
  135. data/test/test_preprocessor.rb +2 -16
  136. data/test/test_rstbuilder.rb +249 -26
  137. data/test/test_textmaker_cmd.rb +54 -0
  138. data/test/test_textutils.rb +109 -2
  139. data/test/test_topbuilder.rb +546 -31
  140. data/test/test_update.rb +17 -8
  141. data/test/test_webtocprinter.rb +66 -34
  142. data/test/test_yamlloader.rb +13 -0
  143. data/vendor/jsclasses/LICENSE +1 -1
  144. data/vendor/jsclasses/jis/jsarticle.cls +53 -14
  145. data/vendor/jsclasses/jis/jsbook.cls +53 -14
  146. data/vendor/jsclasses/jis/jsclasses.dtx +84 -25
  147. data/vendor/jsclasses/jis/jslogo.dtx +4 -4
  148. data/vendor/jsclasses/jis/jslogo.sty +3 -3
  149. data/vendor/jsclasses/jis/jspf.cls +52 -13
  150. data/vendor/jsclasses/jis/jsreport.cls +53 -14
  151. data/vendor/jsclasses/jis/kiyou.cls +53 -14
  152. data/vendor/jsclasses/jis/okumacro.dtx +4 -5
  153. data/vendor/jsclasses/jis/okumacro.sty +3 -4
  154. data/vendor/jsclasses/jsarticle.cls +53 -14
  155. data/vendor/jsclasses/jsbook.cls +53 -14
  156. data/vendor/jsclasses/jsclasses.dtx +84 -25
  157. data/vendor/jsclasses/jsclasses.pdf +0 -0
  158. data/vendor/jsclasses/jslogo.dtx +4 -4
  159. data/vendor/jsclasses/jslogo.pdf +0 -0
  160. data/vendor/jsclasses/jslogo.sty +3 -3
  161. data/vendor/jsclasses/jspf.cls +52 -13
  162. data/vendor/jsclasses/jsreport.cls +53 -14
  163. data/vendor/jsclasses/kiyou.cls +53 -14
  164. data/vendor/jsclasses/okumacro.dtx +4 -5
  165. data/vendor/jsclasses/okumacro.pdf +0 -0
  166. data/vendor/jsclasses/okumacro.sty +3 -4
  167. metadata +55 -10
  168. data/lib/review/tocparser.rb +0 -271
  169. data/samples/syntax-book/review-ext.rb +0 -14
  170. data/test/test_tocparser.rb +0 -25
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2016-2018 Masayoshi Takahashi, Masanori Kado, Kenshi Muto
1
+ # Copyright (c) 2016-2020 Masayoshi Takahashi, Masanori Kado, Kenshi Muto
2
2
  #
3
3
  # This program is free software.
4
4
  # You can distribute or modify this program under the terms of
@@ -35,12 +35,12 @@ module ReVIEW
35
35
  end
36
36
 
37
37
  def error(msg)
38
- @logger.error "#{File.basename($PROGRAM_NAME, '.*')}: #{msg}"
38
+ @logger.error msg
39
39
  exit 1
40
40
  end
41
41
 
42
42
  def warn(msg)
43
- @logger.warn "#{File.basename($PROGRAM_NAME, '.*')}: #{msg}"
43
+ @logger.warn msg
44
44
  end
45
45
 
46
46
  def self.execute(*args)
@@ -50,6 +50,7 @@ module ReVIEW
50
50
  def parse_opts(args)
51
51
  cmd_config = {}
52
52
  opts = OptionParser.new
53
+ @buildonly = nil
53
54
 
54
55
  opts.banner = 'Usage: review-webmaker [option] configfile'
55
56
  opts.version = ReVIEW::VERSION
@@ -58,6 +59,7 @@ module ReVIEW
58
59
  exit 0
59
60
  end
60
61
  opts.on('--ignore-errors', 'Ignore review-compile errors.') { cmd_config['ignore-errors'] = true }
62
+ opts.on('-y', '--only file1,file2,...', 'Build only specified files.') { |v| @buildonly = v.split(/\s*,\s*/).map { |m| m.strip.sub(/\.re\Z/, '') } }
61
63
 
62
64
  opts.parse!(args)
63
65
  if args.size != 1
@@ -116,7 +118,7 @@ module ReVIEW
116
118
  copy_backmatter(@path)
117
119
 
118
120
  math_dir = "./#{@config['imagedir']}/_review_math"
119
- if @config['imgmath'] && File.exist?("#{math_dir}/__IMGMATH_BODY__.tex")
121
+ if @config['imgmath'] && File.exist?("#{math_dir}/__IMGMATH_BODY__.map")
120
122
  make_math_images(math_dir)
121
123
  end
122
124
 
@@ -186,6 +188,11 @@ module ReVIEW
186
188
  end
187
189
  id = File.basename(filename).sub(/\.re\Z/, '')
188
190
 
191
+ if @buildonly && !@buildonly.include?(id)
192
+ warn "skip #{id}.re"
193
+ return
194
+ end
195
+
189
196
  htmlfile = "#{id}.#{@config['htmlext']}"
190
197
 
191
198
  if @config['params'].present?
@@ -6,49 +6,52 @@ module ReVIEW
6
6
  include HTMLUtils
7
7
 
8
8
  def self.book_to_string(book)
9
- io = StringIO.new
10
- ReVIEW::WEBTOCPrinter.new(1, {}, io).print_book(book)
11
- io.seek(0)
12
- io.read
9
+ ReVIEW::WEBTOCPrinter.new.print_book(book)
13
10
  end
14
11
 
15
12
  def print_book(book)
16
- @out.puts '<ul class="book-toc">'
17
- @out.puts %Q(<li><a href="index.html">TOP</a></li>\n)
18
- book.each_part do |part|
19
- print_part(part)
20
- end
21
- @out.puts '</ul>'
13
+ @book = book
14
+ @indent = nil
15
+ @upper = 1 # only part and chapter
16
+ print_result(build_result_array)
22
17
  end
23
18
 
24
- def print_part(part)
25
- if part.number
26
- if part.file?
27
- ext = part.book.config['htmlext'] || 'html'
28
- path = File.basename(part.path.sub(/\.re/, '.' + ext))
29
- @out.puts %Q(<li><a href="#{path}">#{h(I18n.t('part_short', part.number) + ' ' + part.title)}</a>\n<ul>\n)
19
+ def print_result(result_array)
20
+ content = <<EOT
21
+ <ul class="book-toc">
22
+ <li><a href="index.html">TOP</a></li>
23
+ EOT
24
+
25
+ path = ''
26
+ result_array.each do |result|
27
+ unless result[:headline]
28
+ result[:headline] = '-'
29
+ end
30
+
31
+ if result[:name]
32
+ path = "#{result[:name]}.#{@book.config['htmlext']}"
33
+ next
34
+ end
35
+
36
+ if result[:part]
37
+ if result[:part] == 'end'
38
+ content << "</ul></li>\n"
39
+ end
40
+ next
41
+ end
42
+
43
+ if path.start_with?('.')
44
+ content << "<li>#{escape(result[:headline])}"
30
45
  else
31
- @out.puts %Q(<li>#{h(I18n.t('part_short', part.number) + ' ' + part.title)}\n<ul>\n)
46
+ content << %Q(<li><a href="#{path}">#{escape(result[:headline])}</a>)
47
+ end
48
+ if result[:level] == 0
49
+ content << "\n<ul>" # part
50
+ else
51
+ content << "</li>\n"
32
52
  end
33
53
  end
34
- part.each_chapter do |chap|
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)
54
+ content << "</ul>\n"
52
55
  end
53
56
  end
54
57
  end
@@ -15,31 +15,41 @@ module ReVIEW
15
15
  loaded_files = {}
16
16
  yaml = {}
17
17
 
18
- loop do
19
- # Check exit condition
20
- return yaml if file_queue.empty?
21
-
18
+ while file_queue.present?
22
19
  current_file = file_queue.shift
23
20
  current_yaml = YAML.load_file(current_file)
21
+ if current_yaml.class == FalseClass
22
+ raise "#{File.basename(current_file)} is malformed."
23
+ end
24
24
  yaml = current_yaml.deep_merge(yaml)
25
25
 
26
- next unless yaml.key?('inherit')
26
+ if yaml.key?('inherit')
27
+ inherit_files = parse_inherit(yaml, yamlfile, loaded_files)
28
+ file_queue = inherit_files + file_queue
29
+ end
30
+ end
27
31
 
28
- buf = []
29
- yaml['inherit'].reverse_each do |item|
30
- inherit_file = File.expand_path(item, File.dirname(yamlfile))
32
+ yaml
33
+ end
31
34
 
32
- # Check loop
33
- if loaded_files[inherit_file]
34
- raise "Found circular YAML inheritance '#{inherit_file}' in #{yamlfile}."
35
- end
35
+ def parse_inherit(yaml, yamlfile, loaded_files)
36
+ files = []
36
37
 
37
- loaded_files[inherit_file] = true
38
- buf << inherit_file
38
+ yaml['inherit'].reverse_each do |item|
39
+ inherit_file = File.expand_path(item, File.dirname(yamlfile))
40
+
41
+ # Check loop
42
+ if loaded_files[inherit_file]
43
+ raise "Found circular YAML inheritance '#{inherit_file}' in #{yamlfile}."
39
44
  end
40
- yaml.delete('inherit')
41
- file_queue = buf + file_queue
45
+
46
+ loaded_files[inherit_file] = true
47
+ files << inherit_file
42
48
  end
49
+
50
+ yaml.delete('inherit')
51
+
52
+ files
43
53
  end
44
54
  end
45
55
  end
@@ -1,4 +1,4 @@
1
- $LOAD_PATH.push File.expand_path('lib', __dir__)
1
+ $LOAD_PATH.push(File.expand_path('lib', __dir__))
2
2
  require 'review/version'
3
3
 
4
4
  Gem::Specification.new do |gem|
@@ -11,8 +11,8 @@ Gem::Specification.new do |gem|
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
- gem.required_rubygems_version = Gem::Requirement.new('>= 0') if gem.respond_to? :required_rubygems_version=
15
- gem.date = '2018-11-30'
14
+ gem.required_rubygems_version = Gem::Requirement.new('>= 0') if gem.respond_to?(:required_rubygems_version=)
15
+ gem.date = '2020-06-29'
16
16
 
17
17
  gem.files = `git ls-files`.split("\n")
18
18
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -25,7 +25,9 @@ Gem::Specification.new do |gem|
25
25
  gem.add_dependency('rubyzip')
26
26
  gem.add_development_dependency('pygments.rb')
27
27
  gem.add_development_dependency('rake')
28
- gem.add_development_dependency('rubocop', '~> 0.57.2')
28
+ gem.add_development_dependency('rubocop', '~> 0.77.0')
29
+ gem.add_development_dependency('rubocop-performance')
29
30
  gem.add_development_dependency('simplecov')
30
31
  gem.add_development_dependency('test-unit')
32
+ gem.add_development_dependency('unicode-eaw')
31
33
  end
@@ -2,6 +2,11 @@
2
2
 
3
3
  Re:VIEW ( http://github.com/kmuto/review )で書籍データを作るためのサンプルファイルです。
4
4
 
5
- 必要なファイルはsrc/ディレクトリ内にあります。srcディレクトリで「review-epubmaker config.yml」と実行すればEPUBが、「review-pdfmaker config.yml」とすればPDFが生成されます(PDFの生成にはupLaTeXとdvipdfmxが必要です)。
5
+ 必要なファイルはsrcディレクトリ内にあります。srcディレクトリで以下のようにして各形式のファイルを生成できます。
6
6
 
7
- Ruby製のビルドツールであるrakeがインストールされている環境の場合、「rake pdf」を実行すればPDFが、「rake epub」を実行すればEPUBが生成されます。また、「rake html_all」を実行すればHTMLが生成されます。
7
+ - rake pdf: PDF (upLaTeXとdvipdfmxが必要です)
8
+ - rake epub: EPUB
9
+ - rake web: HTML Webページ
10
+ - rake text: テキストファイル
11
+ - rake plaintext: テキストファイル (装飾なし)
12
+ - rake idgxml: InDesign用XMLファイル
@@ -0,0 +1,154 @@
1
+ /*.pdf
2
+ /*.epub
3
+ /*.html
4
+ /webroot
5
+ /*-pdf
6
+ /*-epub
7
+ /*-text
8
+ /*-idgxml
9
+
10
+ /vendor
11
+ /.bundle
12
+
13
+ # Created by https://www.gitignore.io/api/vim,linux,macos,emacs,windows
14
+ # Edit at https://www.gitignore.io/?templates=vim,linux,macos,emacs,windows
15
+
16
+ ### Emacs ###
17
+ # -*- mode: gitignore; -*-
18
+ *~
19
+ \#*\#
20
+ /.emacs.desktop
21
+ /.emacs.desktop.lock
22
+ *.elc
23
+ auto-save-list
24
+ tramp
25
+ .\#*
26
+
27
+ # Org-mode
28
+ .org-id-locations
29
+ *_archive
30
+
31
+ # flymake-mode
32
+ *_flymake.*
33
+
34
+ # eshell files
35
+ /eshell/history
36
+ /eshell/lastdir
37
+
38
+ # elpa packages
39
+ /elpa/
40
+
41
+ # reftex files
42
+ *.rel
43
+
44
+ # AUCTeX auto folder
45
+ /auto/
46
+
47
+ # cask packages
48
+ .cask/
49
+ dist/
50
+
51
+ # Flycheck
52
+ flycheck_*.el
53
+
54
+ # server auth directory
55
+ /server/
56
+
57
+ # projectiles files
58
+ .projectile
59
+
60
+ # directory configuration
61
+ .dir-locals.el
62
+
63
+ # network security
64
+ /network-security.data
65
+
66
+
67
+ ### Linux ###
68
+
69
+ # temporary files which can be created if a process still has a handle open of a deleted file
70
+ .fuse_hidden*
71
+
72
+ # KDE directory preferences
73
+ .directory
74
+
75
+ # Linux trash folder which might appear on any partition or disk
76
+ .Trash-*
77
+
78
+ # .nfs files are created when an open file is removed but is still being accessed
79
+ .nfs*
80
+
81
+ ### macOS ###
82
+ # General
83
+ .DS_Store
84
+ .AppleDouble
85
+ .LSOverride
86
+
87
+ # Icon must end with two \r
88
+ Icon
89
+
90
+ # Thumbnails
91
+ ._*
92
+
93
+ # Files that might appear in the root of a volume
94
+ .DocumentRevisions-V100
95
+ .fseventsd
96
+ .Spotlight-V100
97
+ .TemporaryItems
98
+ .Trashes
99
+ .VolumeIcon.icns
100
+ .com.apple.timemachine.donotpresent
101
+
102
+ # Directories potentially created on remote AFP share
103
+ .AppleDB
104
+ .AppleDesktop
105
+ Network Trash Folder
106
+ Temporary Items
107
+ .apdisk
108
+
109
+ ### Vim ###
110
+ # Swap
111
+ [._]*.s[a-v][a-z]
112
+ [._]*.sw[a-p]
113
+ [._]s[a-rt-v][a-z]
114
+ [._]ss[a-gi-z]
115
+ [._]sw[a-p]
116
+
117
+ # Session
118
+ Session.vim
119
+ Sessionx.vim
120
+
121
+ # Temporary
122
+ .netrwhist
123
+ # Auto-generated tag files
124
+ tags
125
+ # Persistent undo
126
+ [._]*.un~
127
+
128
+ ### Windows ###
129
+ # Windows thumbnail cache files
130
+ Thumbs.db
131
+ Thumbs.db:encryptable
132
+ ehthumbs.db
133
+ ehthumbs_vista.db
134
+
135
+ # Dump file
136
+ *.stackdump
137
+
138
+ # Folder config file
139
+ [Dd]esktop.ini
140
+
141
+ # Recycle Bin used on file shares
142
+ $RECYCLE.BIN/
143
+
144
+ # Windows Installer files
145
+ *.cab
146
+ *.msi
147
+ *.msix
148
+ *.msm
149
+ *.msp
150
+
151
+ # Windows shortcuts
152
+ *.lnk
153
+
154
+ # End of https://www.gitignore.io/api/vim,linux,macos,emacs,windows
@@ -0,0 +1,4 @@
1
+ # call me by 'REVIEW_CONFIG_FILE=config-ebook.yml rake pdf'
2
+ inherit: ["config.yml"]
3
+ pdfmaker:
4
+ texdocumentclass: ["review-jsbook", "media=ebook,paper=a5"]
@@ -0,0 +1,4 @@
1
+ # call me by 'REVIEW_TEMPLATE=review-jlreq REVIEW_CONFIG_FILE=config-jlreq-ebook.yml rake pdf'
2
+ inherit: ["config.yml"]
3
+ pdfmaker:
4
+ texdocumentclass: ["review-jlreq", "media=ebook,paper=a5"]
@@ -0,0 +1,6 @@
1
+ # call me by 'REVIEW_TEMPLATE=review-jlreq REVIEW_CONFIG_FILE=config-jlreq.yml rake pdf'
2
+ inherit: ["config.yml"]
3
+ pdfmaker:
4
+ texdocumentclass: ["review-jlreq", "media=print,paper=a5"]
5
+ # texdocumentclass: ["review-jlreq", "media=ebook,paper=a5"]
6
+ # texdocumentclass: ["review-jlreq", "media=print,paper=a5,tombopaper=a4,bleed_margin=3mm,cover=true,Q=14,startpage=3,serial_pagination=true,hiddenfolio=nikko-pc"]
@@ -1,5 +1,5 @@
1
1
  ## config.yml for sample book
2
- review_version: 3.0
2
+ review_version: 4.0
3
3
  bookname: book
4
4
  language: ja
5
5
  booktitle: Re:VIEWサンプル書籍
@@ -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,80,40,80,2]
38
+ # page_metric: [40,34,29,34]
39
39
  # direction: "ltr"
40
40
 
41
41
  epubmaker:
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006-2018 Minero Aoki, Kenshi Muto, Masayoshi Takahashi, Masanori Kado.
1
+ # Copyright (c) 2006-2020 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
@@ -29,15 +29,21 @@ CATALOG_FILE = ENV['REVIEW_CATALOG_FILE'] || 'catalog.yml'
29
29
  WEBROOT = ENV['REVIEW_WEBROOT'] || 'webroot'
30
30
  TEXTROOT = BOOK + '-text'
31
31
  TOPROOT = BOOK + '-text'
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'] || ''
36
+ IDGXML_OPTIONS = ENV['REVIEW_IDGXML_OPTIONS'] || ''
37
+ TEXT_OPTIONS = ENV['REVIEW_TEXT_OPTIONS'] || ''
32
38
 
33
39
  def build(mode, chapter)
34
- sh "review-compile --target=#{mode} --footnotetext --stylesheet=style.css #{chapter} > tmp"
40
+ sh("review-compile --target=#{mode} --footnotetext --stylesheet=style.css #{chapter} > tmp")
35
41
  mode_ext = { 'html' => 'html', 'latex' => 'tex', 'idgxml' => 'xml', 'top' => 'txt', 'plaintext' => 'txt' }
36
- FileUtils.mv 'tmp', chapter.gsub(/re\z/, mode_ext[mode])
42
+ FileUtils.mv('tmp', chapter.gsub(/re\z/, mode_ext[mode]))
37
43
  end
38
44
 
39
45
  def build_all(mode)
40
- sh "review-compile --target=#{mode} --footnotetext --stylesheet=style.css"
46
+ sh("review-compile --target=#{mode} --footnotetext --stylesheet=style.css")
41
47
  end
42
48
 
43
49
  task default: :html_all
@@ -74,12 +80,17 @@ task web: WEBROOT
74
80
 
75
81
  desc 'generate text file (without decoration)'
76
82
  task plaintext: TEXTROOT do
77
- sh "review-textmaker -n #{CONFIG_FILE}"
83
+ sh "review-textmaker #{TEXT_OPTIONS} -n #{CONFIG_FILE}"
78
84
  end
79
85
 
80
86
  desc 'generate (decorated) text file'
81
87
  task text: TOPROOT do
82
- sh "review-textmaker #{CONFIG_FILE}"
88
+ sh "review-textmaker #{TEXT_OPTIONS} #{CONFIG_FILE}"
89
+ end
90
+
91
+ desc 'generate IDGXML file'
92
+ task idgxml: IDGXMLROOT do
93
+ sh "review-idgxmlmaker #{IDGXML_OPTIONS} #{CONFIG_FILE}"
83
94
  end
84
95
 
85
96
  desc 'generate EPUB file'
@@ -92,22 +103,26 @@ SRC_EPUB = FileList['*.css']
92
103
  SRC_PDF = FileList['layouts/*.erb', 'sty/**/*.sty']
93
104
 
94
105
  file BOOK_PDF => SRC + SRC_PDF do
95
- FileUtils.rm_rf [BOOK_PDF, BOOK, BOOK + '-pdf']
96
- sh "review-pdfmaker #{CONFIG_FILE}"
106
+ FileUtils.rm_rf([BOOK_PDF, BOOK, BOOK + '-pdf'])
107
+ sh "review-pdfmaker #{PDF_OPTIONS} #{CONFIG_FILE}"
97
108
  end
98
109
 
99
110
  file BOOK_EPUB => SRC + SRC_EPUB do
100
- FileUtils.rm_rf [BOOK_EPUB, BOOK, BOOK + '-epub']
101
- sh "review-epubmaker #{CONFIG_FILE}"
111
+ FileUtils.rm_rf([BOOK_EPUB, BOOK, BOOK + '-epub'])
112
+ sh "review-epubmaker #{EPUB_OPTIONS} #{CONFIG_FILE}"
102
113
  end
103
114
 
104
115
  file WEBROOT => SRC do
105
- FileUtils.rm_rf [WEBROOT]
106
- sh "review-webmaker #{CONFIG_FILE}"
116
+ FileUtils.rm_rf([WEBROOT])
117
+ sh "review-webmaker #{WEB_OPTIONS} #{CONFIG_FILE}"
107
118
  end
108
119
 
109
120
  file TEXTROOT => SRC do
110
- FileUtils.rm_rf [TEXTROOT]
121
+ FileUtils.rm_rf([TEXTROOT])
122
+ end
123
+
124
+ file IDGXMLROOT => SRC do
125
+ FileUtils.rm_rf([IDGXMLROOT])
111
126
  end
112
127
 
113
- CLEAN.include([BOOK, BOOK_PDF, BOOK_EPUB, BOOK + '-pdf', BOOK + '-epub', WEBROOT, 'images/_review_math', TEXTROOT])
128
+ CLEAN.include([BOOK, BOOK_PDF, BOOK_EPUB, BOOK + '-pdf', BOOK + '-epub', WEBROOT, 'images/_review_math', 'images/_review_math_text', TEXTROOT, IDGXMLROOT])