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
@@ -14,7 +14,7 @@ class UpdateTest < Test::Unit::TestCase
14
14
  end
15
15
 
16
16
  def teardown
17
- FileUtils.rm_rf @tmpdir
17
+ FileUtils.rm_rf(@tmpdir)
18
18
  end
19
19
 
20
20
  def test_broken_yml
@@ -96,19 +96,28 @@ EOT
96
96
  @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
97
97
  @u.parse_ymls(@tmpdir)
98
98
  @u.update_version
99
- assert_match(/Update 'review_version' to '3.0'/, io.string)
100
- assert_equal 'review_version: 3.0', File.read(File.join(@tmpdir, 'config.yml')).match(/review_version:.*$/).to_s
99
+ assert_match(/Update 'review_version' to '4.0'/, io.string)
100
+ assert_equal 'review_version: 4.0', File.read(File.join(@tmpdir, 'config.yml')).match(/review_version:.*$/).to_s
101
+
102
+ File.write(File.join(@tmpdir, 'config.yml'), "review_version: 3.0\n")
103
+
104
+ io = StringIO.new
105
+ @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
106
+ @u.parse_ymls(@tmpdir)
107
+ @u.update_version
108
+ assert_match(/Update 'review_version' to '4.0'/, io.string)
109
+ assert_equal 'review_version: 4.0', File.read(File.join(@tmpdir, 'config.yml')).match(/review_version:.*$/).to_s
101
110
  end
102
111
 
103
112
  def test_update_version_current
104
- File.write(File.join(@tmpdir, 'config.yml'), "review_version: 3.0\n")
113
+ File.write(File.join(@tmpdir, 'config.yml'), "review_version: 4.0\n")
105
114
 
106
115
  io = StringIO.new
107
116
  @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
108
117
  @u.parse_ymls(@tmpdir)
109
118
  @u.update_version
110
119
  assert_equal '', io.string
111
- assert_equal 'review_version: 3.0', File.read(File.join(@tmpdir, 'config.yml')).match(/review_version:.*$/).to_s
120
+ assert_equal 'review_version: 4.0', File.read(File.join(@tmpdir, 'config.yml')).match(/review_version:.*$/).to_s
112
121
  end
113
122
 
114
123
  def test_update_version_newer
@@ -118,7 +127,7 @@ EOT
118
127
  @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
119
128
  @u.parse_ymls(@tmpdir)
120
129
  @u.update_version
121
- assert_match(/Update 'review_version' to '3.0'/, io.string)
130
+ assert_match(/Update 'review_version' to '4.0'/, io.string)
122
131
  assert_equal 'review_version: 99.0', File.read(File.join(@tmpdir, 'config.yml')).match(/review_version:.*$/).to_s
123
132
  end
124
133
 
@@ -143,7 +152,7 @@ EOT
143
152
 
144
153
  def test_update_rakefile_different
145
154
  File.write(File.join(@tmpdir, 'Rakefile'), '')
146
- FileUtils.mkdir_p File.join(@tmpdir, 'lib/tasks')
155
+ FileUtils.mkdir_p(File.join(@tmpdir, 'lib/tasks'))
147
156
  File.write(File.join(@tmpdir, 'lib/tasks/review.rake'), '')
148
157
  io = StringIO.new
149
158
  @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
@@ -389,7 +398,7 @@ EOT
389
398
  assert_match(/has options/, io.string)
390
399
  cont = <<EOT
391
400
  texcommand: "/Program Files/up-latex"
392
- texoptions: "-interaction=nonstopmode -file-line-error --shell-escape -v"
401
+ texoptions: "-interaction=nonstopmode -file-line-error -halt-on-error --shell-escape -v"
393
402
  EOT
394
403
  assert_equal cont, File.read(File.join(@tmpdir, 'config.yml'))
395
404
  end
@@ -35,8 +35,8 @@ EOB
35
35
  expect = <<-EOB
36
36
  <ul class="book-toc">
37
37
  <li><a href="index.html">TOP</a></li>
38
- <li><a href="ch1.html">1 ch. 1</a></li>
39
- <li><a href="ch2.html">2 ch. 2</a></li>
38
+ <li><a href="ch1.html">第1章 ch. 1</a></li>
39
+ <li><a href="ch2.html">第2章 ch. 2</a></li>
40
40
  </ul>
41
41
  EOB
42
42
  assert_equal expect, str
@@ -58,16 +58,12 @@ EOB
58
58
  expect = <<-EOB
59
59
  <ul class="book-toc">
60
60
  <li><a href="index.html">TOP</a></li>
61
- <li>I part1
62
- <ul>
63
- <li><a href="ch1.html">1 ch. 1</a></li>
64
- </ul>
65
- </li>
66
- <li>II part2
67
- <ul>
68
- <li><a href="ch2.html">2 ch. 2</a></li>
69
- </ul>
70
- </li>
61
+ <li>第I部 part1
62
+ <ul><li><a href="ch1.html">第1章 ch. 1</a></li>
63
+ </ul></li>
64
+ <li>第II部 part2
65
+ <ul><li><a href="ch2.html">第2章 ch. 2</a></li>
66
+ </ul></li>
71
67
  </ul>
72
68
  EOB
73
69
  assert_equal expect, str
@@ -91,16 +87,12 @@ EOB
91
87
  expect = <<-EOB
92
88
  <ul class="book-toc">
93
89
  <li><a href="index.html">TOP</a></li>
94
- <li><a href="p1.html">I This is PART1</a>
95
- <ul>
96
- <li><a href="ch1.html">1 ch. 1</a></li>
97
- </ul>
98
- </li>
99
- <li><a href="p2.html">II This is PART2</a>
100
- <ul>
101
- <li><a href="ch2.html">2 ch. 2</a></li>
102
- </ul>
103
- </li>
90
+ <li><a href="p1.html">第I部 This is PART1</a>
91
+ <ul><li><a href="ch1.html">第1章 ch. 1</a></li>
92
+ </ul></li>
93
+ <li><a href="p2.html">第II部 This is PART2</a>
94
+ <ul><li><a href="ch2.html">第2章 ch. 2</a></li>
95
+ </ul></li>
104
96
  </ul>
105
97
  EOB
106
98
  assert_equal expect, str
@@ -141,21 +133,61 @@ EOB
141
133
  <li><a href="index.html">TOP</a></li>
142
134
  <li><a href="pre1.html">PRE1</a></li>
143
135
  <li><a href="pre2.html">PRE2</a></li>
144
- <li><a href="part1.html">I PART1</a>
145
- <ul>
146
- <li><a href="ch1.html">1 ch. 1</a></li>
147
- </ul>
148
- </li>
149
- <li><a href="part2.html">II PART2</a>
150
- <ul>
151
- <li><a href="ch2.html">2 ch. 2</a></li>
152
- </ul>
153
- </li>
154
- <li><a href="app1.html">APP1</a></li>
155
- <li><a href="app2.html">APP2</a></li>
136
+ <li><a href="part1.html">第I部 PART1</a>
137
+ <ul><li><a href="ch1.html">第1章 ch. 1</a></li>
138
+ </ul></li>
139
+ <li><a href="part2.html">第II部 PART2</a>
140
+ <ul><li><a href="ch2.html">第2章 ch. 2</a></li>
141
+ </ul></li>
142
+ <li><a href="app1.html">付録A APP1</a></li>
143
+ <li><a href="app2.html">付録B APP2</a></li>
156
144
  <li><a href="post1.html">POST1</a></li>
157
145
  <li><a href="post2.html">POST2</a></li>
158
146
  </ul>
147
+ EOB
148
+ assert_equal expect, str
149
+ end
150
+ end
151
+
152
+ def test_webtocprinter_nochapter
153
+ catalog_yml = <<-EOB
154
+ CHAPS:
155
+ EOB
156
+ mktmpbookdir 'catalog.yml' => catalog_yml do |_dir, book, _files|
157
+ str = WEBTOCPrinter.book_to_string(book)
158
+ expect = <<-EOB
159
+ <ul class="book-toc">
160
+ <li><a href="index.html">TOP</a></li>
161
+ </ul>
162
+ EOB
163
+ assert_equal expect, str
164
+ end
165
+ end
166
+
167
+ def test_webtocprinter_noheadline
168
+ catalog_yml = <<-EOB
169
+ CHAPS:
170
+ - ch1.re
171
+ - ch2.re
172
+ - ch3.re
173
+ - ch4.re
174
+ EOB
175
+ mktmpbookdir 'catalog.yml' => catalog_yml,
176
+ 'ch1.re' => "A\n",
177
+ 'ch2.re' => "B\n\n= C\n== D\n",
178
+ 'ch3.re' => "//emlist{\nLIST\n//}\n",
179
+ 'ch4.re' => "==[column] E\n\n= F" do |_dir, book, _files|
180
+ str = WEBTOCPrinter.book_to_string(book)
181
+ expect = <<-EOB
182
+ <ul class="book-toc">
183
+ <li><a href="index.html">TOP</a></li>
184
+ <li><a href="ch1.html">-</a></li>
185
+ <li><a href="ch2.html">-</a></li>
186
+ <li><a href="ch2.html">第2章 C</a></li>
187
+ <li><a href="ch3.html">-</a></li>
188
+ <li><a href="ch4.html">-</a></li>
189
+ <li><a href="ch4.html">第4章 F</a></li>
190
+ </ul>
159
191
  EOB
160
192
  assert_equal expect, str
161
193
  end
@@ -184,4 +184,17 @@ EOB
184
184
  yaml)
185
185
  end
186
186
  end
187
+
188
+ def test_empty_file
189
+ Dir.mktmpdir do |dir|
190
+ yaml_file = File.join(dir, 'test.yml')
191
+ File.open(yaml_file, 'w') do |f|
192
+ f.write <<EOB
193
+ #
194
+ EOB
195
+ end
196
+ e = assert_raise(RuntimeError) { @loader.load_file(yaml_file) }
197
+ assert_match('test.yml is malformed.', e.message)
198
+ end
199
+ end
187
200
  end
@@ -1,6 +1,6 @@
1
1
  Copyright 1995-1999 ASCII MEDIA WORKS
2
2
  Copyright 1999-2016 Haruhiko Okumura
3
- Copyright 2016-2018 Japanese TeX Development Community
3
+ Copyright 2016-2020 Japanese TeX Development Community
4
4
  All rights reserved.
5
5
 
6
6
  Redistribution and use in source and binary forms, with or without
@@ -22,7 +22,7 @@
22
22
  %% in the same archive or directory.)
23
23
  \NeedsTeXFormat{pLaTeX2e}
24
24
  \ProvidesClass{jsarticle}
25
- [2018/06/23 jsclasses (okumura, texjporg)]
25
+ [2020/02/02 jsclasses (okumura, texjporg)]
26
26
  \def\jsc@clsname{jsarticle}
27
27
  \newif\ifjsc@needsp@tch
28
28
  \jsc@needsp@tchfalse
@@ -460,6 +460,7 @@
460
460
  \DeclareFontShape{\jsc@JTn}{gt}{m}{sl}{<->ssub*gt/m/n}{}
461
461
  \DeclareFontShape{\jsc@JTn}{mc}{bx}{it}{<->ssub*gt/m/n}{}
462
462
  \DeclareFontShape{\jsc@JTn}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
463
+ \ifx\@rmfamilyhook\@undefined % old
463
464
  \DeclareRobustCommand\rmfamily
464
465
  {\not@math@alphabet\rmfamily\mathrm
465
466
  \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont}
@@ -469,6 +470,25 @@
469
470
  \DeclareRobustCommand\ttfamily
470
471
  {\not@math@alphabet\ttfamily\mathtt
471
472
  \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
473
+ \AtBeginDocument{%
474
+ \ifx\mweights@init\@undefined\else % mweights.sty is loaded
475
+ % my definitions above should have been overwritten, recover it!
476
+ % \selectfont is executed twice but I don't care about speed...
477
+ \expandafter\g@addto@macro\csname rmfamily \endcsname
478
+ {\kanjifamily\mcdefault\selectfont}%
479
+ \expandafter\g@addto@macro\csname sffamily \endcsname
480
+ {\kanjifamily\gtdefault\selectfont}%
481
+ \expandafter\g@addto@macro\csname ttfamily \endcsname
482
+ {\kanjifamily\gtdefault\selectfont}%
483
+ \fi}
484
+ \else % 2020-02-02
485
+ \g@addto@macro\@rmfamilyhook
486
+ {\prepare@family@series@update@kanji{mc}\mcdefault}
487
+ \g@addto@macro\@sffamilyhook
488
+ {\prepare@family@series@update@kanji{gt}\gtdefault}
489
+ \g@addto@macro\@ttfamilyhook
490
+ {\prepare@family@series@update@kanji{gt}\gtdefault}
491
+ \fi
472
492
  \ifx\DeclareFixJFMCJKTextFontCommand\@undefined
473
493
  \DeclareRobustCommand\textmc[1]{%
474
494
  \relax\ifmmode \expandafter\nfss@text \fi{\mcfamily #1}}
@@ -1370,11 +1390,11 @@
1370
1390
  \renewcommand{\theenumiii}{\@roman\c@enumiii}
1371
1391
  \renewcommand{\theenumiv}{\@Alph\c@enumiv}
1372
1392
  \newcommand{\labelenumi}{\theenumi.}
1373
- \newcommand{\labelenumii}{\inhibitglue$B!J(B\theenumii$B!K(B\inhibitglue}
1393
+ \newcommand{\labelenumii}{\inhibitglue $B!J(B\theenumii $B!K(B\inhibitglue}
1374
1394
  \newcommand{\labelenumiii}{\theenumiii.}
1375
1395
  \newcommand{\labelenumiv}{\theenumiv.}
1376
1396
  \renewcommand{\p@enumii}{\theenumi}
1377
- \renewcommand{\p@enumiii}{\theenumi\inhibitglue$B!J(B\theenumii$B!K(B}
1397
+ \renewcommand{\p@enumiii}{\theenumi\inhibitglue $B!J(B\theenumii $B!K(B}
1378
1398
  \renewcommand{\p@enumiv}{\p@enumiii\theenumiii}
1379
1399
  \newcommand\labelitemi{\textbullet}
1380
1400
  \newcommand\labelitemii{\normalfont\bfseries \textendash}
@@ -1519,7 +1539,7 @@
1519
1539
  \vskip\abovecaptionskip
1520
1540
  \sbox\@tempboxa{#1\hskip1zw\relax #2}%
1521
1541
  \ifdim \wd\@tempboxa <\hsize \centering \fi
1522
- #1\hskip1zw\relax #2\par
1542
+ #1{\hskip1zw\relax}#2\par
1523
1543
  \vskip\belowcaptionskip}}
1524
1544
  \DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
1525
1545
  \DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
@@ -1885,23 +1905,42 @@
1885
1905
  \def\$B@>Nq(B{\$B@>Nq(Btrue}
1886
1906
  \def\$BOBNq(B{\$B@>Nq(Bfalse}
1887
1907
  \newcount\heisei \heisei\year \advance\heisei-1988\relax
1908
+ \def\pltx@today@year@#1{%
1909
+ \ifnum\numexpr\year-#1=1 $B85(B\else
1910
+ \ifnum1=\iftdir\ifmdir0\else1\fi\else0\fi
1911
+ \kansuji\numexpr\year-#1\relax
1912
+ \else
1913
+ \number\numexpr\year-#1\relax\nobreak
1914
+ \fi
1915
+ \fi $BG/(B
1916
+ }
1917
+ \def\pltx@today@year{%
1918
+ \ifnum\numexpr\year*10000+\month*100+\day<19890108
1919
+ $B><OB(B\pltx@today@year@{1925}%
1920
+ \else\ifnum\numexpr\year*10000+\month*100+\day<20190501
1921
+ $BJ?@.(B\pltx@today@year@{1988}%
1922
+ \else
1923
+ $BNaOB(B\pltx@today@year@{2018}%
1924
+ \fi\fi}
1888
1925
  \def\today{%
1889
1926
  \if@english
1890
1927
  \ifcase\month\or
1891
1928
  January\or February\or March\or April\or May\or June\or
1892
1929
  July\or August\or September\or October\or November\or December\fi
1893
1930
  \space\number\day, \number\year
1931
+ \else\if$B@>Nq(B
1932
+ \ifnum1=\iftdir\ifmdir0\else1\fi\else0\fi \kansuji\year
1933
+ \else\number\year\nobreak\fi $BG/(B
1894
1934
  \else
1895
- \if$B@>Nq(B
1896
- \number\year $BG/(B
1897
- \number\month $B7n(B
1898
- \number\day $BF|(B
1899
- \else
1900
- $BJ?@.(B\number\heisei $BG/(B
1901
- \number\month $B7n(B
1902
- \number\day $BF|(B
1903
- \fi
1904
- \fi}
1935
+ \pltx@today@year
1936
+ \fi
1937
+ \ifnum1=\iftdir\ifmdir0\else1\fi\else0\fi
1938
+ \kansuji\month $B7n(B
1939
+ \kansuji\day $BF|(B
1940
+ \else
1941
+ \number\month\nobreak $B7n(B
1942
+ \number\day\nobreak $BF|(B
1943
+ \fi\fi}
1905
1944
  \hyphenation{ado-be post-script ghost-script phe-nom-e-no-log-i-cal man-u-script}
1906
1945
  \if@slide \pagestyle{empty} \else \pagestyle{plain} \fi
1907
1946
  \pagenumbering{arabic}
@@ -22,7 +22,7 @@
22
22
  %% in the same archive or directory.)
23
23
  \NeedsTeXFormat{pLaTeX2e}
24
24
  \ProvidesClass{jsbook}
25
- [2018/06/23 jsclasses (okumura, texjporg)]
25
+ [2020/02/02 jsclasses (okumura, texjporg)]
26
26
  \def\jsc@clsname{jsbook}
27
27
  \newif\ifjsc@needsp@tch
28
28
  \jsc@needsp@tchfalse
@@ -465,6 +465,7 @@
465
465
  \DeclareFontShape{\jsc@JTn}{gt}{m}{sl}{<->ssub*gt/m/n}{}
466
466
  \DeclareFontShape{\jsc@JTn}{mc}{bx}{it}{<->ssub*gt/m/n}{}
467
467
  \DeclareFontShape{\jsc@JTn}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
468
+ \ifx\@rmfamilyhook\@undefined % old
468
469
  \DeclareRobustCommand\rmfamily
469
470
  {\not@math@alphabet\rmfamily\mathrm
470
471
  \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont}
@@ -474,6 +475,25 @@
474
475
  \DeclareRobustCommand\ttfamily
475
476
  {\not@math@alphabet\ttfamily\mathtt
476
477
  \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
478
+ \AtBeginDocument{%
479
+ \ifx\mweights@init\@undefined\else % mweights.sty is loaded
480
+ % my definitions above should have been overwritten, recover it!
481
+ % \selectfont is executed twice but I don't care about speed...
482
+ \expandafter\g@addto@macro\csname rmfamily \endcsname
483
+ {\kanjifamily\mcdefault\selectfont}%
484
+ \expandafter\g@addto@macro\csname sffamily \endcsname
485
+ {\kanjifamily\gtdefault\selectfont}%
486
+ \expandafter\g@addto@macro\csname ttfamily \endcsname
487
+ {\kanjifamily\gtdefault\selectfont}%
488
+ \fi}
489
+ \else % 2020-02-02
490
+ \g@addto@macro\@rmfamilyhook
491
+ {\prepare@family@series@update@kanji{mc}\mcdefault}
492
+ \g@addto@macro\@sffamilyhook
493
+ {\prepare@family@series@update@kanji{gt}\gtdefault}
494
+ \g@addto@macro\@ttfamilyhook
495
+ {\prepare@family@series@update@kanji{gt}\gtdefault}
496
+ \fi
477
497
  \ifx\DeclareFixJFMCJKTextFontCommand\@undefined
478
498
  \DeclareRobustCommand\textmc[1]{%
479
499
  \relax\ifmmode \expandafter\nfss@text \fi{\mcfamily #1}}
@@ -1477,11 +1497,11 @@
1477
1497
  \renewcommand{\theenumiii}{\@roman\c@enumiii}
1478
1498
  \renewcommand{\theenumiv}{\@Alph\c@enumiv}
1479
1499
  \newcommand{\labelenumi}{\theenumi.}
1480
- \newcommand{\labelenumii}{\inhibitglue$B!J(B\theenumii$B!K(B\inhibitglue}
1500
+ \newcommand{\labelenumii}{\inhibitglue $B!J(B\theenumii $B!K(B\inhibitglue}
1481
1501
  \newcommand{\labelenumiii}{\theenumiii.}
1482
1502
  \newcommand{\labelenumiv}{\theenumiv.}
1483
1503
  \renewcommand{\p@enumii}{\theenumi}
1484
- \renewcommand{\p@enumiii}{\theenumi\inhibitglue$B!J(B\theenumii$B!K(B}
1504
+ \renewcommand{\p@enumiii}{\theenumi\inhibitglue $B!J(B\theenumii $B!K(B}
1485
1505
  \renewcommand{\p@enumiv}{\p@enumiii\theenumiii}
1486
1506
  \newcommand\labelitemi{\textbullet}
1487
1507
  \newcommand\labelitemii{\normalfont\bfseries \textendash}
@@ -1588,7 +1608,7 @@
1588
1608
  \vskip\abovecaptionskip
1589
1609
  \sbox\@tempboxa{#1\hskip1zw\relax #2}%
1590
1610
  \ifdim \wd\@tempboxa <\hsize \centering \fi
1591
- #1\hskip1zw\relax #2\par
1611
+ #1{\hskip1zw\relax}#2\par
1592
1612
  \vskip\belowcaptionskip}}
1593
1613
  \DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
1594
1614
  \DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
@@ -1976,23 +1996,42 @@
1976
1996
  \def\$B@>Nq(B{\$B@>Nq(Btrue}
1977
1997
  \def\$BOBNq(B{\$B@>Nq(Bfalse}
1978
1998
  \newcount\heisei \heisei\year \advance\heisei-1988\relax
1999
+ \def\pltx@today@year@#1{%
2000
+ \ifnum\numexpr\year-#1=1 $B85(B\else
2001
+ \ifnum1=\iftdir\ifmdir0\else1\fi\else0\fi
2002
+ \kansuji\numexpr\year-#1\relax
2003
+ \else
2004
+ \number\numexpr\year-#1\relax\nobreak
2005
+ \fi
2006
+ \fi $BG/(B
2007
+ }
2008
+ \def\pltx@today@year{%
2009
+ \ifnum\numexpr\year*10000+\month*100+\day<19890108
2010
+ $B><OB(B\pltx@today@year@{1925}%
2011
+ \else\ifnum\numexpr\year*10000+\month*100+\day<20190501
2012
+ $BJ?@.(B\pltx@today@year@{1988}%
2013
+ \else
2014
+ $BNaOB(B\pltx@today@year@{2018}%
2015
+ \fi\fi}
1979
2016
  \def\today{%
1980
2017
  \if@english
1981
2018
  \ifcase\month\or
1982
2019
  January\or February\or March\or April\or May\or June\or
1983
2020
  July\or August\or September\or October\or November\or December\fi
1984
2021
  \space\number\day, \number\year
2022
+ \else\if$B@>Nq(B
2023
+ \ifnum1=\iftdir\ifmdir0\else1\fi\else0\fi \kansuji\year
2024
+ \else\number\year\nobreak\fi $BG/(B
1985
2025
  \else
1986
- \if$B@>Nq(B
1987
- \number\year $BG/(B
1988
- \number\month $B7n(B
1989
- \number\day $BF|(B
1990
- \else
1991
- $BJ?@.(B\number\heisei $BG/(B
1992
- \number\month $B7n(B
1993
- \number\day $BF|(B
1994
- \fi
1995
- \fi}
2026
+ \pltx@today@year
2027
+ \fi
2028
+ \ifnum1=\iftdir\ifmdir0\else1\fi\else0\fi
2029
+ \kansuji\month $B7n(B
2030
+ \kansuji\day $BF|(B
2031
+ \else
2032
+ \number\month\nobreak $B7n(B
2033
+ \number\day\nobreak $BF|(B
2034
+ \fi\fi}
1996
2035
  \hyphenation{ado-be post-script ghost-script phe-nom-e-no-log-i-cal man-u-script}
1997
2036
  \if@report \pagestyle{plain} \else \pagestyle{headings} \fi
1998
2037
  \pagenumbering{arabic}