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,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/gentombow09j.sty'
13
19
  end
14
20
 
15
- CLEAN.include([Dir.glob('sty/review-*.sty'), 'sty/review-jsbook.cls', 'sty/gentombow09j.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])
@@ -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 @@ $ @{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 @@ $ @{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@{太字bold}@{italicイタ}@{等幅code} F@
{}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: 4.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/gentombow09j.sty'
13
19
  end
14
20
 
15
- CLEAN.include([Dir.glob('sty/review-*.sty'), 'sty/review-jsbook.cls', 'sty/gentombow09j.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])
@@ -59,6 +59,9 @@
59
59
  \def\review@coverimage{./<%= @config['imagedir'] %>/<%= @config['coverimage'] %>}
60
60
  \def\review@coverimageoption{<%= @coverimageoption%>}
61
61
  <%- end -%>
62
+ <%- if @config['pdfmaker']['use_cover_nombre'] -%>
63
+ \def\review@usecovernombre{true}
64
+ <%- end -%>
62
65
  <%- if @config['titlepage'] -%>
63
66
  \def\review@titlepage{true}
64
67
  <%- if @config['titlefile'] -%>
@@ -98,4 +101,17 @@
98
101
  \def\reviewusepart{true}
99
102
  <%- end -%>
100
103
 
104
+ \def\reviewbackcompatibilityhook{
105
+ \ifdefined\reviewimagecaption\else% for 3.0.0 compatibility
106
+ \newcommand{\reviewimagecaption}[1]{\caption{##1}}
107
+ \fi
108
+ \ifdefined\reviewincludegraphics\else% for 3.2.0 compatibility
109
+ \DeclareRobustCommand{\reviewincludegraphics}[2][]{%
110
+ \includegraphics[##1]{##2}}
111
+ \fi
112
+ \ifdefined\covermatter\else% for 4.0.0 compatibility
113
+ \def\covermatter{}
114
+ \fi
115
+ }
116
+
101
117
  \makeatother
@@ -6,6 +6,9 @@
6
6
  <%- end -%>
7
7
  <%- end -%>
8
8
 
9
+ %% backward compatibility (defined in config.erb)
10
+ \reviewbackcompatibilityhook
11
+
9
12
  \begin{document}
10
13
 
11
14
  %% begindocument hook
@@ -15,6 +18,7 @@
15
18
 
16
19
  %% coverpage
17
20
  \ifdefined\reviewcoverpagecont
21
+ \covermatter
18
22
  \reviewcoverpagecont
19
23
  \fi
20
24
 
@@ -1,15 +1,23 @@
1
+ \ProvidesClass{review-base}[2020/01/02]
1
2
  % jlreq用基本設定
2
- \newcommand*\PDFDocumentInformation[1]{%
3
- \AtBeginShipoutFirst{\special{pdf:docinfo <<#1>>}}}
4
- \@onlypreamble\PDFDocumentInformation
5
-
6
- \PDFDocumentInformation{
7
- /Title (\review@booktitlename)
8
- /Author (\review@autnames)
9
- % /Subject ()
10
- % /Keywords (,,)
11
- /Creator (Re:VIEW \review@reviewversion, with LaTeX)
12
- }
3
+ \def\recls@tmp{luatex}\ifx\recls@tmp\recls@driver
4
+ \hypersetup{
5
+ pdftitle={\review@booktitlename},
6
+ pdfauthor={\review@autnames},
7
+ pdfcreator={Re:VIEW \review@reviewversion, with LaTeX}
8
+ }
9
+ \else
10
+ \newcommand*\PDFDocumentInformation[1]{%
11
+ \AtBeginShipoutFirst{\special{pdf:docinfo <<#1>>}}}
12
+ \@onlypreamble\PDFDocumentInformation
13
+ \PDFDocumentInformation{
14
+ /Title (\review@booktitlename)
15
+ /Author (\review@autnames)
16
+ % /Subject ()
17
+ % /Keywords (,,)
18
+ /Creator (Re:VIEW \review@reviewversion, with LaTeX)
19
+ }
20
+ \fi
13
21
 
14
22
  \RequirePackage{pxrubrica}
15
23
  \@ifpackagelater{pxrubrica}{2017/04/20}{% true
@@ -20,20 +28,20 @@
20
28
 
21
29
  % コードリスト装飾のデフォルト
22
30
  \newenvironment{reviewemlist}{%
23
- \begin{tcolorbox}[skin=enhanced jigsaw,breakable,colback=black!10,colframe=black!10,boxrule=0mm,arc=0mm]\begin{alltt}}%
31
+ \begin{tcolorbox}[skin=enhanced jigsaw,breakable,colback=black!10,colframe=black!10,boxrule=0mm,arc=0mm]\ifdefined\reviewlistxkanjiskip\setxkanjiskip{\reviewlistxkanjiskip}\fi\begin{alltt}}%
24
32
  {\end{alltt}\end{tcolorbox}}
25
33
 
26
34
  \newenvironment{reviewlist}{%
27
- \begin{tcolorbox}[skin=enhanced jigsaw,breakable,colback=white,colframe=black,boxrule=0.15mm,arc=0mm]\begin{alltt}}%
35
+ \begin{tcolorbox}[skin=enhanced jigsaw,breakable,colback=white,colframe=black,boxrule=0.15mm,arc=0mm]\ifdefined\reviewlistxkanjiskip\setxkanjiskip{\reviewlistxkanjiskip}\fi\begin{alltt}}%
28
36
  {\end{alltt}\end{tcolorbox}}
29
37
 
30
38
  \newenvironment{reviewsource}{%
31
- \begin{tcolorbox}[skin=enhanced jigsaw,breakable,colback=white,colframe=black,boxrule=0.15mm,arc=0mm]\begin{alltt}}%
39
+ \begin{tcolorbox}[skin=enhanced jigsaw,breakable,colback=white,colframe=black,boxrule=0.15mm,arc=0mm]\ifdefined\reviewlistxkanjiskip\setxkanjiskip{\reviewlistxkanjiskip}\fi\begin{alltt}}%
32
40
  {\end{alltt}\end{tcolorbox}}
33
41
 
34
42
  \newenvironment{reviewcmd}{%
35
- \begin{tcolorbox}[skin=enhanced jigsaw,breakable,colback=black!99,colframe=black!99,boxrule=0mm,arc=0mm]\begin{alltt}\begingroup\color{white}\ignorespaces}%
36
- {\endgroup\end{alltt}\end{tcolorbox}}
43
+ \begin{tcolorbox}[skin=enhanced jigsaw,breakable,colback=black!99,coltext=white,colframe=black!99,boxrule=0mm,arc=0mm]\ifdefined\reviewlistxkanjiskip\setxkanjiskip{\reviewlistxkanjiskip}\fi\begin{alltt}}%
44
+ {\end{alltt}\end{tcolorbox}}
37
45
 
38
46
  % 図
39
47
  \newenvironment{reviewimage}{%
@@ -47,6 +55,9 @@
47
55
 
48
56
  \newcommand{\reviewindepimagecaption[2]}{\@makecaption{}{#2}}
49
57
 
58
+ \DeclareRobustCommand{\reviewincludegraphics}[2][]{%
59
+ \includegraphics[#1]{#2}}
60
+
50
61
  % 表
51
62
  \newenvironment{reviewtablesetup}{%
52
63
  }{}
@@ -59,25 +70,36 @@
59
70
  \begin{reviewtablesetup}\begin{tabular}{#1}}%
60
71
  {\end{tabular}\end{reviewtablesetup}}
61
72
 
73
+ \newcommand\reviewimagecaption[1]{\caption{#1}}
62
74
  \newcommand*\reviewimgtablecaption[1]{\caption{#1}}
63
75
 
64
76
  % コラム
65
77
  \newenvironment{reviewcolumn}[1][COLUMN]{%
66
- \begin{tcolorbox}[skin=enhanced jigsaw,breakable,boxrule=0.2mm,arc=2mm,colback=white,colframe=black!100!white,title={\sffamily\bfseries #1}]\par}
78
+ \begin{tcolorbox}[skin=enhanced jigsaw,breakable,boxrule=0.2mm,arc=2mm,colback=white,colframe=black!100!white,before upper={\parindent1\zw},title={\sffamily\bfseries #1}]\par}
67
79
  {\end{tcolorbox}}
68
80
 
69
81
  \newcommand{\reviewbackslash}[0]{\textbackslash{}}
70
82
 
83
+ % 古いjlreq.clsへの互換(当面のad-hoc対応)
84
+ \ifdefined\jlreq@@makecaption@font@setting
85
+ \else
86
+ \let\jlreq@@makecaption@font@setting\jlreq@@makecaption@font
87
+ \fi
88
+ \ifdefined\jlreq@@makecaption@label@font@setting
89
+ \else
90
+ \let\jlreq@@makecaption@label@font@setting\jlreq@@makecaption@label@font
91
+ \fi
92
+
71
93
  \renewcommand{\@makecaption}[2]{{% %本当はl,c,rを[]で指定したい
72
94
  \reset@font\small
73
95
  \vskip\abovecaptionskip
74
96
  \jlreq@ifempty{#1}{%
75
- \sbox\@tempboxa{{\jlreq@@makecaption@font #2}}}{%
76
- \sbox\@tempboxa{{\jlreq@@makecaption@label@font #1}\review@intn@captionprefix{\jlreq@@makecaption@font #2}}}
97
+ \sbox\@tempboxa{{\jlreq@@makecaption@font@setting #2}}}{%
98
+ \sbox\@tempboxa{{\jlreq@@makecaption@label@font@setting #1}\review@intn@captionprefix{\jlreq@@makecaption@font@setting #2}}}
77
99
  \ifdim \wd\@tempboxa >\hsize
78
100
  \jlreq@ifempty{#1}{%
79
- {\jlreq@@makecaption@font #2}}{%
80
- {\jlreq@@makecaption@label@font #1}\review@intn@captionprefix{\jlreq@@makecaption@font #2}}\relax\par
101
+ {\jlreq@@makecaption@font@setting #2}}{%
102
+ {\jlreq@@makecaption@label@font@setting #1}\review@intn@captionprefix{\jlreq@@makecaption@font@setting #2}}\relax\par
81
103
  \else
82
104
  \global\@minipagefalse
83
105
  \hbox to\hsize{\box\@tempboxa\hfil}% キャプションLeft
@@ -91,22 +113,23 @@
91
113
  \newcommand{\reviewemlistcaption}[1]{\review@commoncaption{}{#1}}
92
114
  \newcommand{\reviewsourcecaption}[1]{\review@commoncaption{}{#1}}
93
115
  \newcommand{\reviewcmdcaption}[1]{\review@commoncaption{}{#1}}
94
- \newenvironment{reviewlistblock}{\list{}{\topsep.5\baselineskip \leftmargin\z@ \itemindent\z@}\item\relax}{\endlist}% 上下アキ0.5
116
+ \newenvironment{reviewlistblock}{\list{}{\topsep.5\baselineskip \leftmargin\z@ \itemindent\z@}\item\needspace{4\Cvs}\relax}{\endlist}% 上下アキ0.5
95
117
 
96
118
  \newcommand{\reviewequationcaption}[1]{\review@commoncaption{}{#1}}
97
- \newenvironment{reviewequationblock}{}{}
119
+ \newenvironment{reviewequationblock}{\needspace{2\Cvs}}{}
98
120
 
99
121
  \newcommand{\reviewimageref}[2]{\review@intn@image #1}
100
122
  \newcommand{\reviewtableref}[2]{\review@intn@table #1}
101
123
  \newcommand{\reviewlistref}[1]{\review@intn@list #1}
102
124
  \newcommand{\reviewequationref}[1]{\review@intn@equation #1}
103
125
  \newcommand{\reviewbibref}[2]{#1}
104
- \newcommand{\reviewcolumnref}[2]{\review@intn@columnname #1}
126
+ \newcommand{\reviewcolumnref}[2]{#1}
105
127
  \newcommand{\reviewsecref}[2]{#1}
106
128
 
107
129
  \renewcommand{\contentsname}{\review@toctitle}
108
130
 
109
131
  \newenvironment{reviewpart}{%
132
+ \setcounter{section}{0}%
110
133
  \renewcommand{\thesection}{\thepart.\@arabic\c@section}%
111
134
  }{}
112
135
 
@@ -144,27 +167,84 @@
144
167
  {\end{tcolorbox}}
145
168
 
146
169
  % 書体
147
- \newcommand{\reviewkw}[1]{\textbf{\textgt{#1}}}
148
- \newcommand{\reviewami}[1]{#1}% FIXME
149
- \newcommand{\reviewballoon}[1]{←{#1}}
150
- \newcommand{\reviewem}[1]{\textbf{#1}}
151
- \newcommand{\reviewstrong}[1]{\textbf{#1}}
152
- \newcommand{\reviewunderline}[1]{\underline{#1}}% ulemかjumolineで上書き。デフォルトはulemにしている
153
- \newcommand{\reviewit}[1]{\textit{#1}}
154
- \newcommand{\reviewbold}[1]{\textbf{#1}}
155
- \newcommand{\reviewcode}[1]{\texttt{#1}}
156
- \newcommand{\reviewtt}[1]{\texttt{#1}}
157
- \newcommand{\reviewtti}[1]{\texttt{\textit{#1}}}
158
- \newcommand{\reviewttb}[1]{\texttt{\textbf{#1}}}
170
+ \DeclareRobustCommand{\reviewkw}[1]{\textbf{\textgt{#1}}}
171
+ \DeclareRobustCommand{\reviewami}[1]{#1}% FIXME
172
+ \DeclareRobustCommand{\reviewballoon}[1]{←{#1}}
173
+ \DeclareRobustCommand{\reviewem}[1]{\textbf{#1}}
174
+ \DeclareRobustCommand{\reviewstrong}[1]{\textbf{#1}}
175
+ \DeclareRobustCommand{\reviewunderline}[1]{\underline{#1}}% ulemかjumolineで上書き。デフォルトはulemにしている
176
+ \DeclareRobustCommand{\reviewit}[1]{\textit{#1}}
177
+ \DeclareRobustCommand{\reviewbold}[1]{\textbf{#1}}
178
+
179
+ % allow break line in tt
180
+ % contributed by @zr_tex8r
181
+ \g@addto@macro\pdfstringdefPreHook{% for PDF bookmarks
182
+ \def\reviewami#1{#1}
183
+ \def\reviewbreakall#1{#1}
184
+ \def\reviewballoon#1{#1}
185
+ \def\reviewbou#1{#1}
186
+ \def\reviewkw#1{#1}
187
+ \def\reviewstrike#1{#1}
188
+ \def\reviewunderline#1{#1}
189
+ }
190
+ \newif\ifreview@ba@break
191
+ \def\review@ba@end{\review@ba@end@}
192
+ \DeclareRobustCommand{\reviewbreakall}[1]{%
193
+ \begingroup
194
+ \review@ba@breakfalse
195
+ \review@break@all@a#1\review@ba@end
196
+ \endgroup
197
+ }
198
+ \def\review@break@all@a{%
199
+ \futurelet\review@ba@tok\review@break@all@b
200
+ }
201
+ \def\review@break@all@b{%
202
+ \ifx\review@ba@tok\review@ba@end
203
+ \let\next\@gobble
204
+ \else\ifx\review@ba@tok\@sptoken
205
+ \let\next\review@break@all@c
206
+ \else\ifx\review@ba@tok~%
207
+ \let\next\review@break@all@d
208
+ \else\ifx\review@ba@tok\bgroup
209
+ \let\next\review@break@all@e
210
+ \else
211
+ \let\next\review@break@all@f
212
+ \fi\fi\fi\fi
213
+ \next
214
+ }
215
+ \expandafter\def\expandafter\review@break@all@c\space{%
216
+ \space
217
+ \review@ba@breakfalse
218
+ \review@break@all@a
219
+ }
220
+ \def\review@break@all@d#1{%
221
+ \review@break@all@f{\mbox{\space}}%
222
+ }
223
+ \def\review@break@all@e#1{%
224
+ \review@break@all@f{{#1}}%
225
+ }
226
+ \def\review@break@all@f#1{%
227
+ \ifreview@ba@break
228
+ \hskip0pt plus 0.02em\relax
229
+ \fi
230
+ #1%
231
+ \review@ba@breaktrue
232
+ \review@break@all@a
233
+ }
234
+ \DeclareRobustCommand{\reviewtt}[1]{{\ttfamily\reviewbreakall{#1}}}
235
+ \DeclareRobustCommand{\reviewcode}[1]{{\ttfamily\reviewbreakall{#1}}}
236
+ \DeclareRobustCommand{\reviewtti}[1]{{\ttfamily\itshape\reviewbreakall{#1}}}
237
+ \DeclareRobustCommand{\reviewttb}[1]{{\ttfamily\bfseries\reviewbreakall{#1}}}
159
238
 
160
- %% @<del> is ignored in LaTeX with default style
161
- \newcommand{\reviewstrike}[1]{#1}
239
+ \DeclareRobustCommand{\reviewbou}[1]{\kenten{#1}}
162
240
 
241
+ %% @<del> is ignored in LaTeX with default style
242
+ %% \DeclareRobustCommand{\reviewstrike}[1]{#1}
163
243
  %%%% for ulem.sty:
164
- \renewcommand{\reviewstrike}[1]{\sout{#1}}
244
+ \DeclareRobustCommand{\reviewstrike}[1]{\sout{#1}}
165
245
  %%
166
246
  %%%% for jumoline.sty:
167
- %%\renewcommand{\reviewstrike}[1]{\Middleline{#1}}
247
+ %%\DeclareRobustCommand{\reviewstrike}[1]{\Middleline{#1}}
168
248
 
169
249
  \newcommand{\reviewtitlefont}[0]{\usefont{T1}{phv}{b}{n}\gtfamily}
170
250
  \newcommand{\reviewmainfont}[0]{}
@@ -201,6 +281,16 @@
201
281
  \renewcommand{\appendixname}{\reviewappendixname}
202
282
  \fi
203
283
 
284
+ % maxwidth is the original width if it is less than linewidth
285
+ %% otherwise use linewidth (to make sure the graphics do not exceed the margin)
286
+ \def\maxwidth{%
287
+ \ifdim\Gin@nat@width>\linewidth
288
+ \linewidth
289
+ \else
290
+ \Gin@nat@width
291
+ \fi
292
+ }
293
+
204
294
  % hooks
205
295
  \def\reviewbegindocumenthook{}
206
296
 
@@ -226,16 +316,23 @@
226
316
  }
227
317
 
228
318
  % cover
319
+ \newcommand*\covermatter{%
320
+ \ifdefined\review@usecovernombre%
321
+ \pagenumbering{coverpagezero}
322
+ \setcounter{page}{0}% force to even page, to avoid empty page
323
+ \fi
324
+ }
325
+
229
326
  \if@reclscover
230
- \ifdefined\review@coverimage
231
- \def\reviewcoverpagecont{%
232
- \expandafter\includefullpagegraphics\expandafter[\review@coverimageoption]{\review@coverimage}
233
- \cleardoublepage
234
- }
235
- \fi
236
- \ifdefined\review@coverfile
237
- \def\reviewcoverpagecont{\review@coverfile}
238
- \fi
327
+ \ifdefined\review@coverimage
328
+ \def\reviewcoverpagecont{%
329
+ \expandafter\includefullpagegraphics\expandafter[\review@coverimageoption]{\review@coverimage}
330
+ \cleardoublepage
331
+ }
332
+ \fi
333
+ \ifdefined\review@coverfile
334
+ \def\reviewcoverpagecont{\review@coverfile}
335
+ \fi
239
336
  \fi
240
337
 
241
338
  % titlepage
@@ -246,11 +343,7 @@
246
343
  \thispagestyle{empty}
247
344
  \begin{center}%
248
345
  \mbox{}%
249
- \ifx\review@jlreq@driver\review@jlreq@driver@luatex
250
- \vskip5\zw
251
- \else
252
- \vskip5zw
253
- \fi
346
+ \vskip5\zw
254
347
  \reviewtitlefont%
255
348
  {\Huge\review@booktitlename\par}%
256
349
  \ifdefined\review@subtitlename
@@ -265,11 +358,7 @@
265
358
  \end{tabular}\par}%
266
359
  \vfill
267
360
  {\large\review@date \review@intn@edition%
268
- \ifx\review@jlreq@driver\review@jlreq@driver@luatex
269
- \hspace{2\zw}%
270
- \else
271
- \hspace{2zw}%
272
- \fi
361
+ \hspace{2\zw}%
273
362
  \review@intn@publishedby\par}%
274
363
  \vskip4\zw\mbox{}
275
364
  \end{center}%
@@ -314,9 +403,9 @@
314
403
  \rule[8pt]{\textwidth}{1pt} \\
315
404
  {\noindent\review@pubhistories}
316
405
 
317
- \begin{tabular}{p{3em}p{\dimexpr\textwidth-6em}}
406
+ \begin{tabularx}{\dimexpr\textwidth-0.5em}{lX}
318
407
  \review@colophonnames
319
- \end{tabular}
408
+ \end{tabularx}
320
409
   \\
321
410
  \rule[0pt]{\textwidth}{1pt} \\
322
411
  \ifdefined\review@rights