review 3.1.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (225) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby-win.yml +45 -0
  3. data/.github/workflows/ruby.yml +27 -0
  4. data/.rubocop.yml +161 -34
  5. data/.travis.yml +16 -15
  6. data/Dockerfile +21 -5
  7. data/NEWS.ja.md +394 -0
  8. data/NEWS.md +395 -1
  9. data/README.md +10 -7
  10. data/appveyor.yml +1 -3
  11. data/bin/review-catalog-converter +5 -5
  12. data/bin/review-check +10 -12
  13. data/bin/review-checkdep +2 -2
  14. data/bin/review-compile +17 -23
  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 +13 -13
  19. data/bin/review-validate +4 -4
  20. data/bin/review-vol +4 -78
  21. data/doc/config.yml.sample +47 -12
  22. data/doc/config.yml.sample-simple +3 -2
  23. data/doc/format.ja.md +120 -17
  24. data/doc/format.md +119 -27
  25. data/doc/makeindex.ja.md +2 -2
  26. data/doc/pdfmaker.ja.md +43 -1
  27. data/doc/pdfmaker.md +42 -1
  28. data/doc/quickstart.ja.md +45 -25
  29. data/doc/quickstart.md +37 -16
  30. data/lib/epubmaker/content.rb +3 -2
  31. data/lib/epubmaker/epubcommon.rb +34 -27
  32. data/lib/epubmaker/epubv2.rb +5 -6
  33. data/lib/epubmaker/epubv3.rb +21 -18
  34. data/lib/epubmaker/producer.rb +2 -1
  35. data/lib/review/book.rb +2 -2
  36. data/lib/review/book/base.rb +91 -96
  37. data/lib/review/book/bib.rb +21 -0
  38. data/lib/review/book/book_unit.rb +155 -0
  39. data/lib/review/book/chapter.rb +48 -29
  40. data/lib/review/book/index.rb +46 -240
  41. data/lib/review/book/index/item.rb +46 -0
  42. data/lib/review/book/page_metric.rb +7 -7
  43. data/lib/review/book/part.rb +45 -10
  44. data/lib/review/book/volume.rb +4 -5
  45. data/lib/review/builder.rb +172 -56
  46. data/lib/review/catalog.rb +14 -17
  47. data/lib/review/compiler.rb +219 -121
  48. data/lib/review/configure.rb +39 -7
  49. data/lib/review/converter.rb +1 -1
  50. data/lib/review/epub2html.rb +43 -5
  51. data/lib/review/epubmaker.rb +69 -27
  52. data/lib/review/extentions/string.rb +0 -4
  53. data/lib/review/htmlbuilder.rb +112 -101
  54. data/lib/review/htmlutils.rb +9 -13
  55. data/lib/review/i18n.rb +3 -3
  56. data/lib/review/idgxmlbuilder.rb +202 -78
  57. data/lib/review/idgxmlmaker.rb +186 -0
  58. data/lib/review/index_builder.rb +653 -0
  59. data/lib/review/init-web/finish.html +10 -0
  60. data/lib/review/init-web/index.html +190 -0
  61. data/lib/review/init-web/review-layout-design.js +691 -0
  62. data/lib/review/init.rb +129 -46
  63. data/lib/review/latexbuilder.rb +255 -92
  64. data/lib/review/lineinput.rb +1 -1
  65. data/lib/review/location.rb +32 -0
  66. data/lib/review/logger.rb +4 -8
  67. data/lib/review/makerhelper.rb +35 -5
  68. data/lib/review/markdownbuilder.rb +50 -38
  69. data/lib/review/md2inaobuilder.rb +3 -5
  70. data/lib/review/pdfmaker.rb +60 -57
  71. data/lib/review/plaintextbuilder.rb +154 -87
  72. data/lib/review/preprocessor.rb +20 -42
  73. data/lib/review/rstbuilder.rb +57 -38
  74. data/lib/review/sec_counter.rb +13 -0
  75. data/lib/review/textmaker.rb +23 -15
  76. data/lib/review/textutils.rb +76 -2
  77. data/lib/review/tocprinter.rb +230 -102
  78. data/lib/review/topbuilder.rb +139 -60
  79. data/lib/review/update.rb +24 -24
  80. data/lib/review/version.rb +1 -1
  81. data/lib/review/volumeprinter.rb +98 -0
  82. data/lib/review/webmaker.rb +20 -24
  83. data/lib/review/webtocprinter.rb +38 -35
  84. data/lib/review/yamlloader.rb +26 -16
  85. data/review.gemspec +6 -4
  86. data/samples/sample-book/README.md +7 -2
  87. data/samples/sample-book/src/.gitignore +154 -0
  88. data/samples/sample-book/src/config-ebook.yml +4 -0
  89. data/samples/sample-book/src/config-jlreq-ebook.yml +4 -0
  90. data/samples/sample-book/src/config-jlreq.yml +6 -0
  91. data/samples/sample-book/src/config.yml +2 -2
  92. data/samples/sample-book/src/lib/tasks/review.rake +29 -14
  93. data/samples/sample-book/src/lib/tasks/z01_copy_sty.rake +14 -8
  94. data/samples/syntax-book/Gemfile +1 -1
  95. data/samples/syntax-book/ch01.re +4 -2
  96. data/samples/syntax-book/ch02.re +8 -16
  97. data/samples/syntax-book/ch03.re +3 -6
  98. data/samples/syntax-book/config-jlreq-lualatex.yml +4 -0
  99. data/samples/syntax-book/config-jlreq.yml +5 -0
  100. data/samples/syntax-book/config-print.yml +3 -0
  101. data/samples/syntax-book/config.yml +1 -1
  102. data/samples/syntax-book/lib/tasks/review.rake +30 -15
  103. data/samples/syntax-book/lib/tasks/z01_copy_sty.rake +14 -8
  104. data/templates/latex/config.erb +39 -25
  105. data/templates/latex/layout.tex.erb +1 -0
  106. data/templates/latex/review-jlreq/README.md +3 -1
  107. data/templates/latex/review-jlreq/review-base.sty +161 -50
  108. data/templates/latex/review-jlreq/review-jlreq.cls +21 -22
  109. data/templates/latex/review-jlreq/review-style.sty +4 -1
  110. data/templates/latex/review-jsbook/README.md +46 -5
  111. data/templates/latex/review-jsbook/review-base.sty +123 -35
  112. data/templates/latex/review-jsbook/review-jsbook.cls +10 -4
  113. data/templates/latex/review-jsbook/review-style.sty +5 -2
  114. data/templates/opf/epubv3.opf.erb +1 -0
  115. data/templates/web/html/layout-html5.html.erb +3 -3
  116. data/test/assets/test_template.tex +19 -7
  117. data/test/assets/test_template_backmatter.tex +19 -7
  118. data/test/book_test_helper.rb +11 -5
  119. data/test/test_book.rb +124 -79
  120. data/test/test_book_chapter.rb +97 -54
  121. data/test/test_book_part.rb +3 -3
  122. data/test/test_builder.rb +38 -13
  123. data/test/test_catalog.rb +24 -42
  124. data/test/test_catalog_converter_cmd.rb +1 -1
  125. data/test/test_converter.rb +1 -0
  126. data/test/test_epub3maker.rb +2 -2
  127. data/test/test_epubmaker.rb +8 -0
  128. data/test/test_epubmaker_cmd.rb +14 -7
  129. data/test/test_helper.rb +18 -7
  130. data/test/test_htmlbuilder.rb +1491 -205
  131. data/test/test_htmlutils.rb +0 -12
  132. data/test/test_i18n.rb +37 -37
  133. data/test/test_idgxmlbuilder.rb +744 -42
  134. data/test/test_idgxmlmaker_cmd.rb +46 -0
  135. data/test/test_image_finder.rb +52 -70
  136. data/test/test_index.rb +94 -44
  137. data/test/test_indexbuilder.rb +52 -0
  138. data/test/test_latexbuilder.rb +1784 -161
  139. data/test/test_latexbuilder_v2.rb +671 -102
  140. data/test/test_logger.rb +17 -4
  141. data/test/test_makerhelper.rb +2 -14
  142. data/test/test_markdownbuilder.rb +137 -16
  143. data/test/test_md2inaobuilder.rb +32 -9
  144. data/test/test_pdfmaker.rb +30 -12
  145. data/test/test_pdfmaker_cmd.rb +100 -6
  146. data/test/test_plaintextbuilder.rb +791 -30
  147. data/test/test_preprocessor.rb +2 -16
  148. data/test/test_review_ext.rb +2 -1
  149. data/test/test_rstbuilder.rb +274 -27
  150. data/test/test_sec_counter.rb +156 -0
  151. data/test/test_textmaker_cmd.rb +54 -0
  152. data/test/test_textutils.rb +109 -2
  153. data/test/test_topbuilder.rb +724 -34
  154. data/test/test_update.rb +20 -11
  155. data/test/test_webtocprinter.rb +75 -43
  156. data/test/test_yamlloader.rb +13 -0
  157. data/vendor/gentombow/LICENSE +1 -1
  158. data/vendor/gentombow/Makefile +0 -1
  159. data/vendor/gentombow/bounddvi-en.pdf +0 -0
  160. data/vendor/gentombow/bounddvi-en.tex +1 -0
  161. data/vendor/gentombow/bounddvi.pdf +0 -0
  162. data/vendor/gentombow/bounddvi.sty +30 -7
  163. data/vendor/gentombow/bounddvi.tex +1 -0
  164. data/vendor/gentombow/create_archive.sh +1 -0
  165. data/vendor/gentombow/gentombow-ja.pdf +0 -0
  166. data/vendor/gentombow/gentombow-ja.tex +9 -0
  167. data/vendor/gentombow/gentombow.pdf +0 -0
  168. data/vendor/gentombow/gentombow.sty +32 -10
  169. data/vendor/gentombow/gentombow.tex +8 -0
  170. data/vendor/gentombow/tests/gentombow-01-pdfx.tex +8 -0
  171. data/vendor/gentombow/tests/gentombow-02-pdfx.tex +8 -0
  172. data/vendor/jsclasses/LICENSE +1 -1
  173. data/vendor/jsclasses/Makefile +3 -2
  174. data/vendor/jsclasses/create_archive.sh +5 -5
  175. data/vendor/jsclasses/jis/Makefile +3 -2
  176. data/vendor/jsclasses/jis/jsarticle.cls +74 -31
  177. data/vendor/jsclasses/jis/jsbook.cls +74 -31
  178. data/vendor/jsclasses/jis/jsclasses.dtx +176 -36
  179. data/vendor/jsclasses/jis/jsclasses.ins +15 -5
  180. data/vendor/jsclasses/jis/jslogo.dtx +4 -4
  181. data/vendor/jsclasses/jis/jslogo.ins +9 -0
  182. data/vendor/jsclasses/jis/jslogo.sty +4 -16
  183. data/vendor/jsclasses/jis/jspf.cls +73 -30
  184. data/vendor/jsclasses/jis/jsreport.cls +74 -31
  185. data/vendor/jsclasses/jis/jsverb.ins +9 -0
  186. data/vendor/jsclasses/jis/jsverb.sty +1 -13
  187. data/vendor/jsclasses/jis/kiyou.cls +74 -31
  188. data/vendor/jsclasses/jis/minijs.sty +65 -22
  189. data/vendor/jsclasses/jis/okumacro.dtx +4 -5
  190. data/vendor/jsclasses/jis/okumacro.ins +9 -0
  191. data/vendor/jsclasses/jis/okumacro.sty +4 -17
  192. data/vendor/jsclasses/jis/okuverb.ins +9 -0
  193. data/vendor/jsclasses/jis/okuverb.sty +1 -13
  194. data/vendor/jsclasses/jis/winjis.sty +23 -19
  195. data/vendor/jsclasses/jsarticle.cls +74 -31
  196. data/vendor/jsclasses/jsbook.cls +74 -31
  197. data/vendor/jsclasses/jsclasses.dtx +176 -36
  198. data/vendor/jsclasses/jsclasses.ins +15 -5
  199. data/vendor/jsclasses/jsclasses.pdf +0 -0
  200. data/vendor/jsclasses/jslogo.dtx +4 -4
  201. data/vendor/jsclasses/jslogo.ins +9 -0
  202. data/vendor/jsclasses/jslogo.pdf +0 -0
  203. data/vendor/jsclasses/jslogo.sty +4 -16
  204. data/vendor/jsclasses/jspf.cls +73 -30
  205. data/vendor/jsclasses/jsreport.cls +74 -31
  206. data/vendor/jsclasses/jsverb.ins +9 -0
  207. data/vendor/jsclasses/jsverb.pdf +0 -0
  208. data/vendor/jsclasses/jsverb.sty +1 -13
  209. data/vendor/jsclasses/kiyou.cls +74 -31
  210. data/vendor/jsclasses/minijs.sty +68 -22
  211. data/vendor/jsclasses/okumacro.dtx +4 -5
  212. data/vendor/jsclasses/okumacro.ins +9 -0
  213. data/vendor/jsclasses/okumacro.pdf +0 -0
  214. data/vendor/jsclasses/okumacro.sty +4 -17
  215. data/vendor/jsclasses/okuverb.ins +9 -0
  216. data/vendor/jsclasses/okuverb.pdf +0 -0
  217. data/vendor/jsclasses/okuverb.sty +1 -13
  218. data/vendor/jsclasses/tests/relfont.tex +10 -0
  219. data/vendor/jsclasses/winjis.sty +23 -19
  220. metadata +65 -12
  221. data/.rubocop_todo.yml +0 -7
  222. data/lib/review/book/compilable.rb +0 -173
  223. data/lib/review/tocparser.rb +0 -271
  224. data/samples/syntax-book/review-ext.rb +0 -14
  225. data/test/test_tocparser.rb +0 -25
@@ -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: 5.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])
@@ -1,17 +1,23 @@
1
1
  desc 'copy sty/* files from current Re:VIEW source code (in git repos)'
2
+ REVIEW_TEMPLATE = ENV['REVIEW_TEMPLATE'] || 'review-jsbook'
2
3
  task :copy_sty do
3
4
  review_rootdir = '../../..'
4
- jsbook_dir = File.join(review_rootdir, 'templates/latex/review-jsbook')
5
- gentombow_dir = File.join(review_rootdir, 'vendor/gentombow')
6
- Dir.glob(File.join(jsbook_dir, '*.cls')) do |file|
7
- FileUtils.cp file, 'sty'
5
+ template_dir = File.join(review_rootdir, "templates/latex/#{REVIEW_TEMPLATE}")
6
+ Dir.glob(File.join(template_dir, '*.cls')) do |file|
7
+ FileUtils.cp(file, 'sty')
8
8
  end
9
- Dir.glob(File.join(jsbook_dir, 'review-*.sty')) do |file|
10
- FileUtils.cp file, 'sty'
9
+ Dir.glob(File.join(template_dir, 'review-*.sty')) do |file|
10
+ FileUtils.cp(file, 'sty')
11
+ end
12
+
13
+ if REVIEW_TEMPLATE == 'review-jsbook'
14
+ jsbook_dir = File.join(review_rootdir, 'vendor/jsclasses')
15
+ FileUtils.cp(File.join(jsbook_dir, 'jsbook.cls'), 'sty/jsbook.cls')
16
+ gentombow_dir = File.join(review_rootdir, 'vendor/gentombow')
17
+ FileUtils.cp(File.join(gentombow_dir, 'gentombow.sty'), 'sty/gentombow.sty')
11
18
  end
12
- FileUtils.cp File.join(gentombow_dir, 'gentombow.sty'), 'sty/gentombow.sty'
13
19
  end
14
20
 
15
- CLEAN.include([Dir.glob('sty/review-*.sty'), 'sty/review-jsbook.cls', 'sty/gentombow.sty'])
21
+ CLEAN.include([Dir.glob('sty/review-*.sty'), 'sty/*.cls', 'sty/gentombow.sty'])
16
22
 
17
23
  Rake::Task[BOOK_PDF].enhance([:copy_sty])
@@ -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'
@@ -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,10 +114,12 @@ 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
 
120
- : Alpha@<embed>{@}<b>{bold太字}@<embed>{@}<i>{italicイタ}@<embed>{@}<tt>{等幅code}
122
+ : Alpha@<embed>{@}<b>{bold太字}@<embed>{@}<i>{italicイタ}@<embed>{@}<tt>{等幅code}@<fn>{foot1}
121
123
  @<embed>{@}<i>{DEC}の作っていた@<embed>{@}<b>{RISC CPU}。@<embed>{@}<i>{italicイタ}@<embed>{@}<tt>{等幅code}
122
124
  浮動小数点数演算が速い。
123
125
  : POWER
@@ -49,9 +49,9 @@ print('hello');
49
49
  puts 'Hello'
50
50
  //}
51
51
 
52
- #@# //source{
53
- #@# //}
54
- #@# FIXME:キャプションなしはLaTeXだとエラーになることがわかった。Re:VIEW側修正予定
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
- @<fn>{madebygimp}
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もキャプション・セル内含めてTeXでは脚注できないですね…
90
- 本当は→@<fn>{tabalign}はキャプション内。TeXだとセル内の脚注は脚注文書が消えています。
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
 
@@ -324,6 +316,7 @@ a_{m1} & \cdots & a_{mn}
324
316
  網カケ@<ami>{amiアミ} @<balloon>{ふきだし説明}
325
317
  //}
326
318
 
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}
327
320
 
328
321
  ==={crossref} 参照
329
322
  #@# FIXME:任意ラベルを使うと、EPUBチェックエラーになることがある?
@@ -331,7 +324,6 @@ a_{m1} & \cdots & a_{mn}
331
324
  * 章番号:@<chap>{ch01}、@<chap>{appA}、@<chap>{part2}、@<chap>{bib}
332
325
  * 章題:@<title>{ch01}、@<title>{part2}、@<title>{appA}、@<title>{bib}
333
326
  * 章番号+題:@<chapref>{ch02}、@<chapref>{part2}、@<chapref>{appA}、@<chapref>{bib}
334
- #@# FIXME:TeXで、部が実際のページではIIなのに参照では2になっているのはおかしい→i18n.ymlがおかしいせいか
335
327
 
336
328
  節や項への参照はhdを使います。
337
329
 
@@ -18,16 +18,13 @@
18
18
  puts "Re:VIEW is #{impression}."
19
19
  //}
20
20
 
21
- @<raw>{/}/image[img3-1][適当に作ったコラム内画像]{
22
- はTeXでは現状、エラーになります。
21
+ //image[img3-1][適当に作ったコラム内画像]{
22
+ //}
23
23
 
24
24
  //indepimage[img3-1][適当に作ったコラム内画像]{
25
25
  //}
26
26
 
27
- @<raw>{/}/table[tab3-1][コラム表]{
28
- もだめですね。
29
-
30
- //table{
27
+ //table[tab3-1][コラム表]{
31
28
  A B
32
29
  ---------------------
33
30
  C D
@@ -0,0 +1,4 @@
1
+ # call me by 'REVIEW_TEMPLATE=review-jlreq REVIEW_CONFIG_FILE=config-jlreq-lualatex.yml rake pdf'
2
+ inherit: ["config-jlreq.yml"]
3
+ texcommand: "lualatex"
4
+ dvicommand: null
@@ -0,0 +1,5 @@
1
+ # call me by 'REVIEW_TEMPLATE=review-jlreq REVIEW_CONFIG_FILE=config-jlreq.yml rake pdf'
2
+ inherit: ["config.yml"]
3
+ # texdocumentclass: ["review-jlreq", "media=print,paper=b5"]
4
+ texdocumentclass: ["review-jlreq", "media=ebook,paper=b5"]
5
+ # texdocumentclass: ["review-jlreq", "media=print,paper=b5,bleed_margin=3mm,cover=true,Q=14,startpage=3,serial_pagination=true,hiddenfolio=nikko-pc"]
@@ -0,0 +1,3 @@
1
+ # call me by 'REVIEW_CONFIG_FILE=config-print.yml rake pdf'
2
+ inherit: ["config.yml"]
3
+ texdocumentclass: ["review-jsbook", "media=print,paper=b5"]
@@ -1,4 +1,4 @@
1
- review_version: 3.0
1
+ review_version: 5.0
2
2
  bookname: syntax-book
3
3
  language: ja
4
4
  booktitle: {name: "Re:VIEW文法使用例", file-as: "リビューブンポウシヨウレイ"}
@@ -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
@@ -21,7 +21,7 @@
21
21
  require 'fileutils'
22
22
  require 'rake/clean'
23
23
 
24
- BOOK = ENV['REVIEW_BOOK'] || 'book'
24
+ BOOK = ENV['REVIEW_BOOK'] || 'syntax-book'
25
25
  BOOK_PDF = BOOK + '.pdf'
26
26
  BOOK_EPUB = BOOK + '.epub'
27
27
  CONFIG_FILE = ENV['REVIEW_CONFIG_FILE'] || 'config.yml'
@@ -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])
@@ -1,17 +1,23 @@
1
1
  desc 'copy sty/* files from current Re:VIEW source code (in git repos)'
2
+ REVIEW_TEMPLATE = ENV['REVIEW_TEMPLATE'] || 'review-jsbook'
2
3
  task :copy_sty do
3
4
  review_rootdir = '../..'
4
- jsbook_dir = File.join(review_rootdir, 'templates/latex/review-jsbook')
5
- gentombow_dir = File.join(review_rootdir, 'vendor/gentombow')
6
- Dir.glob(File.join(jsbook_dir, '*.cls')) do |file|
7
- FileUtils.cp file, 'sty'
5
+ template_dir = File.join(review_rootdir, "templates/latex/#{REVIEW_TEMPLATE}")
6
+ Dir.glob(File.join(template_dir, '*.cls')) do |file|
7
+ FileUtils.cp(file, 'sty')
8
8
  end
9
- Dir.glob(File.join(jsbook_dir, 'review-*.sty')) do |file|
10
- FileUtils.cp file, 'sty'
9
+ Dir.glob(File.join(template_dir, 'review-*.sty')) do |file|
10
+ FileUtils.cp(file, 'sty')
11
+ end
12
+
13
+ if REVIEW_TEMPLATE == 'review-jsbook'
14
+ jsbook_dir = File.join(review_rootdir, 'vendor/jsclasses')
15
+ FileUtils.cp(File.join(jsbook_dir, 'jsbook.cls'), 'sty/jsbook.cls')
16
+ gentombow_dir = File.join(review_rootdir, 'vendor/gentombow')
17
+ FileUtils.cp(File.join(gentombow_dir, 'gentombow.sty'), 'sty/gentombow.sty')
11
18
  end
12
- FileUtils.cp File.join(gentombow_dir, 'gentombow.sty'), 'sty/gentombow.sty'
13
19
  end
14
20
 
15
- CLEAN.include([Dir.glob('sty/review-*.sty'), 'sty/review-jsbook.cls', 'sty/gentombow.sty'])
21
+ CLEAN.include([Dir.glob('sty/review-*.sty'), 'sty/*.cls', 'sty/gentombow.sty'])
16
22
 
17
23
  Rake::Task[BOOK_PDF].enhance([:copy_sty])
@@ -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}
@@ -59,6 +60,9 @@
59
60
  \def\review@coverimage{./<%= @config['imagedir'] %>/<%= @config['coverimage'] %>}
60
61
  \def\review@coverimageoption{<%= @coverimageoption%>}
61
62
  <%- end -%>
63
+ <%- if @config['pdfmaker']['use_cover_nombre'] -%>
64
+ \def\review@usecovernombre{true}
65
+ <%- end -%>
62
66
  <%- if @config['titlepage'] -%>
63
67
  \def\review@titlepage{true}
64
68
  <%- if @config['titlefile'] -%>
@@ -97,11 +101,21 @@
97
101
  <%- if @config['use_part'] -%>
98
102
  \def\reviewusepart{true}
99
103
  <%- end -%>
104
+ <%- if @config['pdfmaker']['bbox'] -%>
105
+ \def\review@bbox{<%= @config['pdfmaker']['bbox'] %>}
106
+ <%- end -%>
100
107
 
101
108
  \def\reviewbackcompatibilityhook{
102
- \@ifundefined{reviewimagecaption}{% for 3.0.0 compatibility
109
+ \ifdefined\reviewimagecaption\else% for 3.0.0 compatibility
103
110
  \newcommand{\reviewimagecaption}[1]{\caption{##1}}
104
- }
111
+ \fi
112
+ \ifdefined\reviewincludegraphics\else% for 3.2.0 compatibility
113
+ \DeclareRobustCommand{\reviewincludegraphics}[2][]{%
114
+ \includegraphics[##1]{##2}}
115
+ \fi
116
+ \ifdefined\covermatter\else% for 4.0.0 compatibility
117
+ \def\covermatter{}
118
+ \fi
105
119
  }
106
120
 
107
121
  \makeatother