review 4.1.0 → 5.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (259) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby-tex.yml +35 -0
  3. data/.github/workflows/ruby-win.yml +19 -9
  4. data/.github/workflows/ruby.yml +7 -3
  5. data/.rubocop.yml +138 -34
  6. data/NEWS.ja.md +285 -0
  7. data/NEWS.md +285 -1
  8. data/README.md +7 -6
  9. data/Rakefile +7 -2
  10. data/bin/review +2 -4
  11. data/bin/review-catalog-converter +4 -4
  12. data/bin/review-check +8 -12
  13. data/bin/review-checkdep +2 -5
  14. data/bin/review-compile +18 -34
  15. data/bin/review-epub2html +1 -4
  16. data/bin/review-epubmaker +3 -4
  17. data/bin/review-idgxmlmaker +1 -3
  18. data/bin/review-index +5 -86
  19. data/bin/review-init +1 -4
  20. data/bin/review-pdfmaker +1 -3
  21. data/bin/review-preproc +30 -38
  22. data/bin/review-textmaker +1 -3
  23. data/bin/review-update +1 -4
  24. data/bin/review-validate +4 -4
  25. data/bin/review-vol +5 -82
  26. data/bin/review-webmaker +1 -3
  27. data/doc/config.yml.sample +45 -11
  28. data/doc/config.yml.sample-simple +3 -3
  29. data/doc/format.ja.md +103 -13
  30. data/doc/format.md +104 -16
  31. data/doc/makeindex.ja.md +2 -2
  32. data/doc/pdfmaker.ja.md +42 -0
  33. data/doc/pdfmaker.md +41 -0
  34. data/doc/quickstart.ja.md +19 -6
  35. data/doc/quickstart.md +18 -6
  36. data/doc/writing_vertical.ja.md +6 -0
  37. data/lib/review.rb +1 -1
  38. data/lib/review/book.rb +2 -2
  39. data/lib/review/book/base.rb +67 -29
  40. data/lib/review/book/bib.rb +21 -0
  41. data/lib/review/book/book_unit.rb +158 -0
  42. data/lib/review/book/chapter.rb +33 -26
  43. data/lib/review/book/index.rb +24 -185
  44. data/lib/review/book/index/item.rb +7 -1
  45. data/lib/review/book/page_metric.rb +7 -7
  46. data/lib/review/book/part.rb +26 -11
  47. data/lib/review/book/volume.rb +5 -5
  48. data/lib/review/builder.rb +121 -52
  49. data/lib/review/call_hook.rb +20 -0
  50. data/lib/review/catalog.rb +3 -2
  51. data/lib/review/compiler.rb +230 -111
  52. data/lib/review/configure.rb +91 -7
  53. data/lib/review/converter.rb +1 -1
  54. data/lib/review/epub2html.rb +6 -1
  55. data/lib/review/epubmaker.rb +124 -152
  56. data/lib/review/epubmaker/content.rb +113 -0
  57. data/lib/review/epubmaker/epubcommon.rb +372 -0
  58. data/lib/review/epubmaker/epubv2.rb +178 -0
  59. data/lib/review/epubmaker/epubv3.rb +231 -0
  60. data/lib/review/epubmaker/producer.rb +167 -0
  61. data/lib/review/epubmaker/reviewheaderlistener.rb +12 -2
  62. data/lib/review/epubmaker/zip_exporter.rb +84 -0
  63. data/lib/review/exception.rb +13 -0
  64. data/lib/review/htmlbuilder.rb +176 -89
  65. data/lib/review/htmlutils.rb +8 -11
  66. data/lib/review/i18n.rb +2 -1
  67. data/lib/review/idgxmlbuilder.rb +165 -75
  68. data/lib/review/idgxmlmaker.rb +24 -28
  69. data/lib/review/img_math.rb +238 -0
  70. data/lib/review/index_builder.rb +645 -0
  71. data/lib/review/init.rb +9 -17
  72. data/lib/review/latexbox.rb +58 -0
  73. data/lib/review/latexbuilder.rb +193 -75
  74. data/lib/review/latexutils.rb +9 -1
  75. data/lib/review/lineinput.rb +112 -2
  76. data/lib/review/loggable.rb +27 -0
  77. data/lib/review/logger.rb +90 -3
  78. data/lib/review/makerhelper.rb +17 -188
  79. data/lib/review/markdownbuilder.rb +54 -4
  80. data/lib/review/pdfmaker.rb +76 -84
  81. data/lib/review/plaintextbuilder.rb +106 -22
  82. data/lib/review/preprocessor.rb +107 -303
  83. data/lib/review/preprocessor/directive.rb +35 -0
  84. data/lib/review/preprocessor/line.rb +34 -0
  85. data/lib/review/preprocessor/repository.rb +177 -0
  86. data/lib/review/rstbuilder.rb +27 -8
  87. data/lib/review/sec_counter.rb +14 -0
  88. data/lib/review/template.rb +11 -1
  89. data/lib/review/textmaker.rb +27 -32
  90. data/lib/review/textutils.rb +3 -12
  91. data/lib/review/tocprinter.rb +242 -97
  92. data/lib/review/topbuilder.rb +98 -31
  93. data/lib/review/update.rb +12 -13
  94. data/lib/review/version.rb +1 -1
  95. data/lib/review/volumeprinter.rb +97 -0
  96. data/lib/review/webmaker.rb +40 -47
  97. data/lib/review/webtocprinter.rb +39 -35
  98. data/lib/review/yamlloader.rb +2 -1
  99. data/review.gemspec +5 -3
  100. data/samples/sample-book/src/config-epub2.yml +1 -1
  101. data/samples/sample-book/src/config.yml +3 -3
  102. data/samples/sample-book/src/lib/tasks/review.rake +19 -1
  103. data/samples/sample-book/src/lib/tasks/z01_copy_sty.rake +2 -1
  104. data/samples/syntax-book/Gemfile +1 -1
  105. data/samples/syntax-book/ch01.re +1 -1
  106. data/samples/syntax-book/ch02.re +21 -6
  107. data/samples/syntax-book/ch03.re +1 -1
  108. data/samples/syntax-book/config.yml +1 -1
  109. data/samples/syntax-book/images/img3-2.png +0 -0
  110. data/samples/syntax-book/lib/tasks/z01_copy_sty.rake +2 -1
  111. data/templates/html/_colophon.html.erb +23 -0
  112. data/templates/html/_colophon_history.html.erb +9 -0
  113. data/templates/html/_cover.html.erb +10 -0
  114. data/templates/html/_part_body.html.erb +6 -0
  115. data/templates/html/_titlepage.html.erb +20 -0
  116. data/templates/html/layout-html5.html.erb +6 -0
  117. data/templates/html/layout-xhtml1.html.erb +6 -0
  118. data/templates/latex/config.erb +35 -23
  119. data/templates/latex/review-jlreq/README.md +3 -1
  120. data/templates/latex/review-jlreq/review-base.sty +36 -23
  121. data/templates/latex/review-jlreq/review-jlreq.cls +18 -25
  122. data/templates/latex/review-jlreq/review-style.sty +6 -1
  123. data/templates/latex/review-jlreq/review-tcbox.sty +348 -0
  124. data/templates/latex/review-jlreq/reviewmacro.sty +5 -0
  125. data/templates/latex/review-jsbook/README.md +7 -5
  126. data/templates/latex/review-jsbook/review-base.sty +40 -24
  127. data/templates/latex/review-jsbook/review-jsbook.cls +13 -3
  128. data/templates/latex/review-jsbook/review-style.sty +6 -1
  129. data/templates/latex/review-jsbook/review-tcbox.sty +348 -0
  130. data/templates/latex/review-jsbook/reviewmacro.sty +5 -0
  131. data/templates/opf/epubv2.opf.erb +7 -7
  132. data/templates/opf/epubv3.opf.erb +7 -7
  133. data/templates/opf/opf_manifest_epubv2.opf.erb +10 -0
  134. data/templates/opf/opf_manifest_epubv3.opf.erb +10 -0
  135. data/templates/opf/opf_metainfo_epubv2.opf.erb +17 -0
  136. data/templates/opf/opf_metainfo_epubv3.opf.erb +49 -0
  137. data/templates/opf/opf_tocx_epubv2.opf.erb +9 -0
  138. data/templates/opf/opf_tocx_epubv3.opf.erb +17 -0
  139. data/templates/web/html/layout-html5.html.erb +9 -8
  140. data/templates/web/html/layout-xhtml1.html.erb +6 -0
  141. data/test/assets/header_listener.html +35 -0
  142. data/test/assets/img_math/img1.png +0 -0
  143. data/test/assets/img_math/img2.png +0 -0
  144. data/test/assets/img_math/img3.png +0 -0
  145. data/test/assets/syntax_book_index_detail.txt +58 -0
  146. data/test/assets/test_template.tex +6 -3
  147. data/test/assets/test_template_backmatter.tex +6 -3
  148. data/test/book_test_helper.rb +11 -5
  149. data/test/run_test.rb +1 -1
  150. data/test/test_book.rb +54 -63
  151. data/test/test_book_chapter.rb +95 -54
  152. data/test/test_book_part.rb +3 -3
  153. data/test/test_builder.rb +29 -20
  154. data/test/test_catalog_converter_cmd.rb +1 -1
  155. data/test/test_converter.rb +1 -0
  156. data/test/test_epub3maker.rb +170 -126
  157. data/test/test_epubmaker.rb +254 -129
  158. data/test/test_epubmaker_cmd.rb +15 -4
  159. data/test/test_helper.rb +12 -5
  160. data/test/test_htmlbuilder.rb +926 -76
  161. data/test/test_htmlutils.rb +0 -12
  162. data/test/test_i18n.rb +33 -33
  163. data/test/test_idgxmlbuilder.rb +531 -20
  164. data/test/test_idgxmlmaker_cmd.rb +7 -3
  165. data/test/test_img_math.rb +111 -0
  166. data/test/test_index.rb +62 -52
  167. data/test/test_indexbuilder.rb +52 -0
  168. data/test/test_latexbuilder.rb +891 -20
  169. data/test/test_latexbuilder_v2.rb +56 -10
  170. data/test/test_lineinput.rb +20 -93
  171. data/test/test_logger.rb +7 -7
  172. data/test/test_makerhelper.rb +0 -12
  173. data/test/test_markdownbuilder.rb +32 -0
  174. data/test/test_pdfmaker.rb +100 -11
  175. data/test/test_pdfmaker_cmd.rb +3 -3
  176. data/test/test_plaintextbuilder.rb +546 -32
  177. data/test/test_preprocessor.rb +188 -1
  178. data/test/test_review_ext.rb +2 -1
  179. data/test/test_reviewheaderlistener.rb +49 -0
  180. data/test/test_rstbuilder.rb +25 -1
  181. data/test/test_sec_counter.rb +156 -0
  182. data/test/test_template.rb +12 -2
  183. data/test/test_textmaker_cmd.rb +5 -1
  184. data/test/test_tocprinter.rb +46 -0
  185. data/test/test_topbuilder.rb +324 -20
  186. data/test/test_update.rb +44 -44
  187. data/test/test_webtocprinter.rb +75 -43
  188. data/test/test_zip_exporter.rb +5 -6
  189. data/vendor/gentombow/LICENSE +1 -1
  190. data/vendor/gentombow/Makefile +0 -1
  191. data/vendor/gentombow/bounddvi-en.pdf +0 -0
  192. data/vendor/gentombow/bounddvi-en.tex +1 -0
  193. data/vendor/gentombow/bounddvi.pdf +0 -0
  194. data/vendor/gentombow/bounddvi.sty +30 -7
  195. data/vendor/gentombow/bounddvi.tex +1 -0
  196. data/vendor/gentombow/create_archive.sh +1 -0
  197. data/vendor/gentombow/gentombow-ja.pdf +0 -0
  198. data/vendor/gentombow/gentombow-ja.tex +9 -0
  199. data/vendor/gentombow/gentombow.pdf +0 -0
  200. data/vendor/gentombow/gentombow.sty +32 -10
  201. data/vendor/gentombow/gentombow.tex +8 -0
  202. data/vendor/gentombow/tests/gentombow-01-pdfx.tex +8 -0
  203. data/vendor/gentombow/tests/gentombow-02-pdfx.tex +8 -0
  204. data/vendor/jsclasses/Makefile +3 -2
  205. data/vendor/jsclasses/create_archive.sh +5 -5
  206. data/vendor/jsclasses/jis/Makefile +3 -2
  207. data/vendor/jsclasses/jis/jsarticle.cls +22 -18
  208. data/vendor/jsclasses/jis/jsbook.cls +22 -18
  209. data/vendor/jsclasses/jis/jsclasses.dtx +94 -13
  210. data/vendor/jsclasses/jis/jsclasses.ins +15 -5
  211. data/vendor/jsclasses/jis/jslogo.ins +9 -0
  212. data/vendor/jsclasses/jis/jslogo.sty +1 -13
  213. data/vendor/jsclasses/jis/jspf.cls +22 -18
  214. data/vendor/jsclasses/jis/jsreport.cls +22 -18
  215. data/vendor/jsclasses/jis/jsverb.ins +9 -0
  216. data/vendor/jsclasses/jis/jsverb.sty +1 -13
  217. data/vendor/jsclasses/jis/kiyou.cls +22 -18
  218. data/vendor/jsclasses/jis/minijs.sty +65 -22
  219. data/vendor/jsclasses/jis/okumacro.ins +9 -0
  220. data/vendor/jsclasses/jis/okumacro.sty +1 -13
  221. data/vendor/jsclasses/jis/okuverb.ins +9 -0
  222. data/vendor/jsclasses/jis/okuverb.sty +1 -13
  223. data/vendor/jsclasses/jis/winjis.sty +23 -19
  224. data/vendor/jsclasses/jsarticle.cls +22 -18
  225. data/vendor/jsclasses/jsbook.cls +22 -18
  226. data/vendor/jsclasses/jsclasses.dtx +94 -13
  227. data/vendor/jsclasses/jsclasses.ins +15 -5
  228. data/vendor/jsclasses/jsclasses.pdf +0 -0
  229. data/vendor/jsclasses/jslogo.ins +9 -0
  230. data/vendor/jsclasses/jslogo.pdf +0 -0
  231. data/vendor/jsclasses/jslogo.sty +1 -13
  232. data/vendor/jsclasses/jspf.cls +22 -18
  233. data/vendor/jsclasses/jsreport.cls +22 -18
  234. data/vendor/jsclasses/jsverb.ins +9 -0
  235. data/vendor/jsclasses/jsverb.pdf +0 -0
  236. data/vendor/jsclasses/jsverb.sty +1 -13
  237. data/vendor/jsclasses/kiyou.cls +22 -18
  238. data/vendor/jsclasses/minijs.sty +68 -22
  239. data/vendor/jsclasses/okumacro.ins +9 -0
  240. data/vendor/jsclasses/okumacro.pdf +0 -0
  241. data/vendor/jsclasses/okumacro.sty +1 -13
  242. data/vendor/jsclasses/okuverb.ins +9 -0
  243. data/vendor/jsclasses/okuverb.pdf +0 -0
  244. data/vendor/jsclasses/okuverb.sty +1 -13
  245. data/vendor/jsclasses/tests/relfont.tex +10 -0
  246. data/vendor/jsclasses/winjis.sty +23 -19
  247. metadata +106 -22
  248. data/.rubocop_todo.yml +0 -7
  249. data/lib/epubmaker.rb +0 -23
  250. data/lib/epubmaker/content.rb +0 -110
  251. data/lib/epubmaker/epubcommon.rb +0 -441
  252. data/lib/epubmaker/epubv2.rb +0 -143
  253. data/lib/epubmaker/epubv3.rb +0 -233
  254. data/lib/epubmaker/producer.rb +0 -375
  255. data/lib/epubmaker/zip_exporter.rb +0 -81
  256. data/lib/lineinput.rb +0 -155
  257. data/lib/review/book/compilable.rb +0 -178
  258. data/lib/review/tocparser.rb +0 -275
  259. data/test/test_tocparser.rb +0 -25
@@ -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.class == FalseClass
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@debian.org'
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 = '2020-02-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', '~> 0.77.0')
29
+ gem.add_development_dependency('rubocop', '~> 1.12.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:uid:http://tatsu-zine.com/books/review-sample-book/1.0.0/
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: 4.0
2
+ review_version: 5.0
3
3
  bookname: book
4
4
  language: ja
5
5
  booktitle: Re:VIEWサンプル書籍
6
- urnid: urn:uid:http://reviewml.com/books/review-sample-book/
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,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-2020 Minero Aoki, Kenshi Muto, Masayoshi Takahashi, Masanori Kado.
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
@@ -36,6 +36,11 @@ WEB_OPTIONS = ENV['REVIEW_WEB_OPTIONS'] || ''
36
36
  IDGXML_OPTIONS = ENV['REVIEW_IDGXML_OPTIONS'] || ''
37
37
  TEXT_OPTIONS = ENV['REVIEW_TEXT_OPTIONS'] || ''
38
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'] || ''
43
+
39
44
  def build(mode, chapter)
40
45
  sh("review-compile --target=#{mode} --footnotetext --stylesheet=style.css #{chapter} > tmp")
41
46
  mode_ext = { 'html' => 'html', 'latex' => 'tex', 'idgxml' => 'xml', 'top' => 'txt', 'plaintext' => 'txt' }
@@ -125,4 +130,17 @@ file IDGXMLROOT => SRC do
125
130
  FileUtils.rm_rf([IDGXMLROOT])
126
131
  end
127
132
 
133
+ desc 'preview with 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
+ desc 'build with vivliostyle'
139
+ task 'vivliostyle:build': BOOK_EPUB do
140
+ sh "#{REVIEW_VSCLI} build #{REVIEW_VSCLI_USESANDBOX} #{REVIEW_VSCLI_OPTIONS} -o #{REVIEW_VSCLI_PDF} #{BOOK_EPUB}"
141
+ end
142
+
143
+ desc 'build with vivliostyle'
144
+ task vivliostyle: 'vivliostyle:build'
145
+
128
146
  CLEAN.include([BOOK, BOOK_PDF, BOOK_EPUB, BOOK + '-pdf', BOOK + '-epub', WEBROOT, 'images/_review_math', 'images/_review_math_text', TEXTROOT, IDGXMLROOT])
@@ -1,5 +1,6 @@
1
- desc 'copy sty/* files from current Re:VIEW source code (in git repos)'
2
1
  REVIEW_TEMPLATE = ENV['REVIEW_TEMPLATE'] || 'review-jsbook'
2
+
3
+ desc 'copy sty/* files from current Re:VIEW source code (in git repos)'
3
4
  task :copy_sty do
4
5
  review_rootdir = '../../..'
5
6
  template_dir = File.join(review_rootdir, "templates/latex/#{REVIEW_TEMPLATE}")
@@ -1,4 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'rake'
4
- gem 'review', '2.3.0'
4
+ gem 'review', '4.2.0'
@@ -119,7 +119,7 @@ olnumで一応番号が変更可能なことを期待していますが、Webブ
119
119
  //emlist{
120
120
  @<b>{bold太字}@<i>{italicイタ}
121
121
 
122
- : Alpha@<embed>{@}<b>{bold太字}@<embed>{@}<i>{italicイタ}@<embed>{@}<tt>{等幅code}@<fn>{foot1}
122
+ : Alpha@<embed>{@}<b>{bold太字}@<embed>{@}<i>{italicイタ}@<embed>{@}<tt>{等幅code}
123
123
  @<embed>{@}<i>{DEC}の作っていた@<embed>{@}<b>{RISC CPU}。@<embed>{@}<i>{italicイタ}@<embed>{@}<tt>{等幅code}
124
124
  浮動小数点数演算が速い。
125
125
  : POWER
@@ -255,7 +255,7 @@ Tips。@<b>{太字bold}@<i>{italicイタ}@<tt>{等幅code}
255
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
256
256
 
257
257
  == LaTeX式
258
- LaTeX式はTeX紙面以外は保証されません。EPUBではMathML(@<tt>{mathml: true})を使えますが、表現や互換性が不足しており、LaTeXをバックエンドとして画像化する@<tt>{imgmath: true}のほうがよさそうです。
258
+ LaTeX式はTeX紙面以外は保証されません。EPUBではMathML(@<tt>{math_format: mathml})を使えますが、表現や互換性が不足しており、LaTeXをバックエンドとして画像化する@<tt>{math_format: imgmath}のほうがよさそうです。
259
259
 
260
260
  //texequation{
261
261
  \sum_{i=1}^nf_n(x)
@@ -285,7 +285,7 @@ a_{m1} & \cdots & a_{mn}
285
285
  #@# 場所ラベル定義
286
286
 
287
287
  === 書体
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アミ}、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}
289
289
 
290
290
  傍点@<embed>{@}<bou>{bou傍点}、ルビ@<embed>{@}<ruby>{愕然, がくぜん}、縦中横@<embed>{@}<tcy>{90}、はTeXでは現状、別パッケージが必要です。
291
291
  #@# FIXME:TEXでの文字スタイル。外部パッケージが必要
@@ -299,24 +299,25 @@ a_{m1} & \cdots & a_{mn}
299
299
 
300
300
  //footnote[kw][キーワードのカッコは太字にしないほうがいいのかなと思いつつあります(手元の案件では太字にしないよう挙動を変えてしまっているほうが多い)。]
301
301
 
302
- * 箇条書き内での……キーワード@<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}
303
303
 
304
304
  //tsize[|latex|p{120mm}]
305
305
  //table{
306
- 表内での……キーワード@<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}
307
307
  //}
308
308
 
309
309
  コードブロック内では対応装飾は減らしてよいと考えます。代わりにballoonが追加されます。
310
310
 
311
- //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}]{
312
312
  コードブロック内での……
313
313
  太字@<b>{b太字}
314
314
  イタリック@<i>{iイタリック}
315
315
  下線@<u>{u下線}
316
316
  網カケ@<ami>{amiアミ} @<balloon>{ふきだし説明}
317
+ 挿入@<ins>{ins挿入}、削除@<del>{del削除}
317
318
  //}
318
319
 
319
- === 見出し内 @<b>{BOLD},@<i>{ITALIC},@<tt>{TT},@<strong>{STRONG},@<em>{EM},@<code>{CODE},@<ttb>{TTB},@<tti>{TTI},@<ami>{AMI},@<bou>{BOU},@<kw>{KW},@<u>{UNDERLINE}
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}
320
321
 
321
322
  ==={crossref} 参照
322
323
  #@# FIXME:任意ラベルを使うと、EPUBチェックエラーになることがある?
@@ -339,10 +340,24 @@ labelで定義したラベルへの参照の例です。EPUBだと@<href>{#inlin
339
340
  #@# FIXME:EPUB側にTeXのほうを寄せるようにRe:VIEWコードを直す
340
341
  #@# FIXME:TeXではpagerefがほしい、ということがありそう。EPUBとの整合性を検討
341
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
+
342
356
  === 参考文献
343
357
  参考文献@<tt>{bib.re}ファイルへの文献参照は、@<bib>{lins}とします。
344
358
 
345
359
  === 索引
346
360
  @<hidx>{索引}@<hidx>{index}索引はTeXとIDGXML以外では妥当な動作を定義していません。idx@<hidx>{索引<<>>idx}は文中にも表示し、hidx@<hidx>{索引<<>>hidx}は文中からは隠した形の索引にします。読みは@<idx>{Mecab}があればそちらを使いますが、@<idx>{辞書ファイル}を直接定義することもできます。@<hidx>{!<>"$&()~=|,./\{\}?_[]*:;+%#()'`^}
361
+ @<hidx>{|}@<hidx>{{}@<hidx>$}$
347
362
 
348
363
  idx, hidxいずれも=見出しの中には入れないようにし、後続の段落先頭にhidxで入れるように注意します(入れてしまうと目次などがおかしくなります)。
@@ -21,7 +21,7 @@ puts "Re:VIEW is #{impression}."
21
21
  //image[img3-1][適当に作ったコラム内画像]{
22
22
  //}
23
23
 
24
- //indepimage[img3-1][適当に作ったコラム内画像]{
24
+ //indepimage[img3-2][適当に作ったコラム内画像]{
25
25
  //}
26
26
 
27
27
  //table[tab3-1][コラム表]{
@@ -1,4 +1,4 @@
1
- review_version: 4.0
1
+ review_version: 5.0
2
2
  bookname: syntax-book
3
3
  language: ja
4
4
  booktitle: {name: "Re:VIEW文法使用例", file-as: "リビューブンポウシヨウレイ"}
@@ -1,5 +1,6 @@
1
- desc 'copy sty/* files from current Re:VIEW source code (in git repos)'
2
1
  REVIEW_TEMPLATE = ENV['REVIEW_TEMPLATE'] || 'review-jsbook'
2
+
3
+ desc 'copy sty/* files from current Re:VIEW source code (in git repos)'
3
4
  task :copy_sty do
4
5
  review_rootdir = '../..'
5
6
  template_dir = File.join(review_rootdir, "templates/latex/#{REVIEW_TEMPLATE}")
@@ -0,0 +1,23 @@
1
+ <div class="colophon">
2
+ <% if @config['subtitle'].nil? %>
3
+ <p class="title"><%= h(@config.name_of('title')) %></p>
4
+ <% else %>
5
+ <p class="title"><%= h(@config.name_of('title')) %><br /><span class="subtitle"><%= h(@config.name_of('subtitle')) %></span></p>
6
+ <% end %>
7
+ <% if @config['date'] || @config['history'] %>
8
+ <%= colophon_history %>
9
+ <% end %>
10
+ <table class="colophon">
11
+ <% @config['colophon_order'].each do |role| %>
12
+ <% if @config[role] %>
13
+ <tr><th><%= h(ReVIEW::I18n.t(role)) %></th><td><%= h(join_with_separator(config.names_of(role), ReVIEW::I18n.t('names_splitter'))) %></td></tr>
14
+ <% end %>
15
+ <% end %>
16
+ <% if @isbn_hyphen %>
17
+ <tr><th>ISBN</th><td><%= @isbn_hyphen %></td></tr>
18
+ <% end %>
19
+ </table>
20
+ <% if @config['rights'] && !@config['rights'].empty? %>
21
+ <p class="copyright"><%= join_with_separator(config.names_of('rights').map { |m| h(m) }, '<br />') %></p>
22
+ <% end %>
23
+ </div>
@@ -0,0 +1,9 @@
1
+ <div class="pubhistory">
2
+ <% if @config['history'] %>
3
+ <% @col_history.each do |item| %>
4
+ <p><%= item %></p>
5
+ <% end %>
6
+ <% else %>
7
+ <p><%= ReVIEW::I18n.t('published_by2', date_to_s(@config['date'])) %></p>
8
+ <% end %>
9
+ </div>
@@ -0,0 +1,10 @@
1
+ <% if @coverimage_src %>
2
+ <div id="cover-image" class="cover-image">
3
+ <img src="<%= @coverimage_src %>" alt="<%= h(@config.name_of('title')) %>" class="max"/>
4
+ </div>
5
+ <% else %>
6
+ <h1 class="cover-title"><%= h(@config.name_of('title')) %></h1>
7
+ <% if @config['subtitle'] %>
8
+ <h2 class="cover-subtitle"><%= h(@config.name_of('subtitle')) %></h2>
9
+ <% end %>
10
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <div class="part">
2
+ <h1 class="part-number"><%= h(ReVIEW::I18n.t('part', @part_number)) %></h1>
3
+ <% if @part_title.present? %>
4
+ <h2 class="part-title"><%= h(@part_title) %></h2>
5
+ <% end %>
6
+ </div>
@@ -0,0 +1,20 @@
1
+ <h1 class="tp-title"><%= @title_str %></h1>
2
+ <% if @subtitle_str %>
3
+ <h2 class="tp-subtitle"><%= h(@subtitle_str) %></h2>
4
+ <% end %>
5
+ <% if @author_str %>
6
+ <p>
7
+ <br />
8
+ <br />
9
+ </p>
10
+ <h2 class="tp-author"><%= h(@author_str) %></h2>
11
+ <% end %>
12
+ <% if @publisher_str %>
13
+ <p>
14
+ <br />
15
+ <br />
16
+ <br />
17
+ <br />
18
+ </p>
19
+ <h3 class="tp-publisher"><%= h(@publisher_str) %></h3>
20
+ <% end %>
@@ -3,6 +3,12 @@
3
3
  <html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:ops="http://www.idpf.org/2007/ops" xml:lang="<%= @language %>">
4
4
  <head>
5
5
  <meta charset="UTF-8" />
6
+ <% if @javascripts.present? %>
7
+ <% @javascripts.each do |js| %>
8
+ <%= js %>
9
+
10
+ <% end %>
11
+ <% end %>
6
12
  <% if @stylesheets.present? %>
7
13
  <% @stylesheets.each do |style| %>
8
14
  <link rel="stylesheet" type="text/css" href="<%= style %>" />
@@ -4,6 +4,12 @@
4
4
  <head>
5
5
  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
6
6
  <meta http-equiv="Content-Style-Type" content="text/css"/>
7
+ <% if @javascripts.present? %>
8
+ <% @javascripts.each do |js| %>
9
+ <%= js %>
10
+
11
+ <% end %>
12
+ <% end %>
7
13
  <% if @stylesheets.present? %>
8
14
  <% @stylesheets.each do |style| %>
9
15
  <link rel="stylesheet" type="text/css" href="<%= style %>" />
@@ -1,50 +1,51 @@
1
+ <%- initialize_metachars(@config['texcommand']) -%>
1
2
  \makeatletter
2
3
  \def\review@reviewversion{<%= ReVIEW::VERSION %>}
3
4
  \def\review@texcompiler{<%= @texcompiler %>}
4
5
  \def\review@documentclass{<%= @documentclass %>}
5
6
 
6
7
  <%- %w(booktitle subtitle).each do |item| -%>
7
- <%- if @config[item] -%>\def\review@<%= item %>name{<%= escape_latex(@config.name_of(item)) %>}
8
+ <%- if @config[item] -%>\def\review@<%= item %>name{<%= escape(@config.name_of(item)) %>}
8
9
  <%- end -%>
9
10
  <%- end -%>
10
11
 
11
- <%- %w(aut adp ann arr art asn aqt aft aui ant bkp clb cmm csl dsr edt ill lyr mdc mus nrt oth pht pbl prt red rev spn ths trc trl).each do |item| %><%- if @config[item] -%>\def\review@<%= item %>names{<%= escape_latex(@config.names_of(item).join(I18n.t('names_splitter'))) %>}
12
+ <%- %w(aut adp ann arr art asn aqt aft aui ant bkp clb cmm csl dsr edt ill lyr mdc mus nrt oth pht pbl prt red rev spn ths trc trl).each do |item| %><%- if @config[item] -%>\def\review@<%= item %>names{<%= escape(@config.names_of(item).join(I18n.t('names_splitter'))) %>}
12
13
  <%- end -%>
13
14
  <%- end -%>
14
15
 
15
16
  \def\review@titlepageauthors{<%= @authors %>}
16
- \def\review@date{<%= escape_latex(@config['date'].to_s) %>}
17
+ \def\review@date{<%= escape(@config['date'].to_s) %>}
17
18
 
18
- <%- %w(bookname language urnid isbn).each do |item| -%><%- if @config[item] -%>\def\review@<%= item %>{<%= escape_latex(@config[item]) %>}
19
+ <%- %w(bookname language urnid isbn).each do |item| -%><%- if @config[item] -%>\def\review@<%= item %>{<%= escape(@config[item]) %>}
19
20
  <%- end -%>
20
21
  <%- end -%>
21
22
  <%- %w(rights description subject type format source relation coverage).each do |item| -%>
22
23
  <%- if @config[item] -%>
23
- <%- a = [@config[item]].flatten -%>\def\review@<%= item %>{<%= a.map{|s| escape_latex(s)}.join('\\' + '\\') %>}
24
+ <%- a = [@config[item]].flatten -%>\def\review@<%= item %>{<%= a.map{|s| escape(s)}.join('\\' + '\\') %>}
24
25
  <%- end -%>
25
26
  <%- end -%>
26
27
 
27
28
  <%- if @config['highlight'] && @config['highlight']['latex'] -%>\def\review@highlightlatex{<%= @config['highlight']['latex'] %>}
28
29
  <%- end -%>
29
30
 
30
- \def\review@intn@list{<%= escape_latex(I18n.t('list')) %>}
31
- \def\review@intn@columnhead{<%= escape_latex(I18n.t('column_head')) %>}
32
- \def\review@intn@image{<%= escape_latex(I18n.t('image')) %>}
33
- \def\review@intn@table{<%= escape_latex(I18n.t('table')) %>}
34
- \def\review@intn@equation{<%= escape_latex(I18n.t('equation')) %>}
35
- \def\review@intn@columnname{<%= escape_latex(I18n.t('columnname')) %>}
36
- \def\review@intn@memohead{<%= escape_latex(I18n.t('memo_head')) %>}
37
- \def\review@intn@edition{<%= escape_latex(I18n.t('edition')) %>}
38
- \def\review@intn@publishedby{<%= escape_latex(I18n.t('published_by', @config.names_of('pbl').join(I18n.t('names_splitter'))))%>}
39
- \def\review@intn@captionprefix{<%= escape_latex(I18n.t('caption_prefix')) %>}
40
- \def\review@toctitle{<%= escape_latex(@config['toctitle'].present? ? @config['toctitle'] : I18n.t('toctitle')) %>}
41
- \def\review@prepartname{<%= escape_latex(@locale_latex['prepartname']) %>}
42
- \def\review@postpartname{<%= escape_latex(@locale_latex['postpartname']) %>}
43
- \def\review@prechaptername{<%= escape_latex(@locale_latex['prechaptername']) %>}
44
- \def\review@postchaptername{<%= escape_latex(@locale_latex['postchaptername']) %>}
45
- \def\review@figurename{<%= escape_latex(I18n.t('image')) %>}
46
- \def\review@tablename{<%= escape_latex(I18n.t('table')) %>}
47
- \def\review@appendixname{<%= escape_latex(@locale_latex['preappendixname']) %>}
31
+ \def\review@intn@list{<%= escape(I18n.t('list')) %>}
32
+ \def\review@intn@columnhead{<%= escape(I18n.t('column_head')) %>}
33
+ \def\review@intn@image{<%= escape(I18n.t('image')) %>}
34
+ \def\review@intn@table{<%= escape(I18n.t('table')) %>}
35
+ \def\review@intn@equation{<%= escape(I18n.t('equation')) %>}
36
+ \def\review@intn@columnname{<%= escape(I18n.t('columnname')) %>}
37
+ \def\review@intn@memohead{<%= escape(I18n.t('memo_head')) %>}
38
+ \def\review@intn@edition{<%= escape(I18n.t('edition')) %>}
39
+ \def\review@intn@publishedby{<%= escape(I18n.t('published_by', @config.names_of('pbl').join(I18n.t('names_splitter'))))%>}
40
+ \def\review@intn@captionprefix{<%= escape(I18n.t('caption_prefix')) %>}
41
+ \def\review@toctitle{<%= escape(@config['toctitle'].present? ? @config['toctitle'] : I18n.t('toctitle')) %>}
42
+ \def\review@prepartname{<%= escape(@locale_latex['prepartname']) %>}
43
+ \def\review@postpartname{<%= escape(@locale_latex['postpartname']) %>}
44
+ \def\review@prechaptername{<%= escape(@locale_latex['prechaptername']) %>}
45
+ \def\review@postchaptername{<%= escape(@locale_latex['postchaptername']) %>}
46
+ \def\review@figurename{<%= escape(I18n.t('image')) %>}
47
+ \def\review@tablename{<%= escape(I18n.t('table')) %>}
48
+ \def\review@appendixname{<%= escape(@locale_latex['preappendixname']) %>}
48
49
 
49
50
  <%- if @config['toc'] -%>
50
51
  \def\review@toc{true}
@@ -100,6 +101,14 @@
100
101
  <%- if @config['use_part'] -%>
101
102
  \def\reviewusepart{true}
102
103
  <%- end -%>
104
+ <%- if @config['pdfmaker']['bbox'] -%>
105
+ \def\review@bbox{<%= @config['pdfmaker']['bbox'] %>}
106
+ <%- end -%>
107
+ <%- if @boxsetting -%>
108
+ \newcommand{\reviewboxsetting}{%
109
+ <%= @boxsetting %>%
110
+ }
111
+ <%- end -%>
103
112
 
104
113
  \def\reviewbackcompatibilityhook{
105
114
  \ifdefined\reviewimagecaption\else% for 3.0.0 compatibility
@@ -112,6 +121,9 @@
112
121
  \ifdefined\covermatter\else% for 4.0.0 compatibility
113
122
  \def\covermatter{}
114
123
  \fi
124
+ \ifdefined\reviewchapref\else% for 5.1.0 compatibility
125
+ \newcommand{\reviewchapref}[2]{\hyperref[##2]{##1}}
126
+ \fi
115
127
  }
116
128
 
117
129
  \makeatother
@@ -38,7 +38,9 @@ texdocumentclass: ["review-jlreq", "クラスオプションたち(省略可
38
38
 
39
39
  `media` の値によって表紙(config.yml の coverimage に指定した画像)の配置の有無は自動で切り替わりますが、`cover=true` とすれば必ず表紙を入れるようになります。
40
40
 
41
- なお、config.yml coverimage で指定する画像ファイルは、原寸を想定しています。
41
+ ### 表紙画像のサイズの仕上がり紙面合わせ `cover_fit_page=<trueまたはfalse>`
42
+
43
+ 上記の coverimage で指定する画像ファイルは、原寸を想定しているため、サイズが異なる場合にははみ出たり、小さすぎたりすることになります。できるだけ原寸で用意することを推奨しますが、`cover_fit_page=true` とすれば表紙画像を紙面の仕上がりサイズに合わせて拡縮します。
42
44
 
43
45
  ### 特定の用紙サイズ `paper=<用紙サイズ>`
44
46