review 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) 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 +10 -7
  5. data/Dockerfile +21 -5
  6. data/NEWS.ja.md +101 -1
  7. data/NEWS.md +102 -2
  8. data/README.md +10 -7
  9. data/appveyor.yml +0 -20
  10. data/bin/review-compile +1 -1
  11. data/bin/review-validate +1 -1
  12. data/doc/config.yml.sample +12 -1
  13. data/doc/config.yml.sample-simple +1 -0
  14. data/doc/format.ja.md +16 -4
  15. data/doc/format.md +2 -1
  16. data/doc/quickstart.ja.md +40 -23
  17. data/doc/quickstart.md +33 -15
  18. data/lib/review/book/base.rb +8 -7
  19. data/lib/review/book/index.rb +50 -56
  20. data/lib/review/book/index/item.rb +1 -1
  21. data/lib/review/builder.rb +26 -4
  22. data/lib/review/compiler.rb +6 -3
  23. data/lib/review/configure.rb +5 -3
  24. data/lib/review/epubmaker.rb +15 -2
  25. data/lib/review/extentions/string.rb +0 -4
  26. data/lib/review/htmlbuilder.rb +4 -15
  27. data/lib/review/idgxmlbuilder.rb +10 -19
  28. data/lib/review/idgxmlmaker.rb +10 -3
  29. data/lib/review/init.rb +8 -1
  30. data/lib/review/latexbuilder.rb +13 -6
  31. data/lib/review/pdfmaker.rb +24 -9
  32. data/lib/review/rstbuilder.rb +2 -2
  33. data/lib/review/textmaker.rb +7 -1
  34. data/lib/review/tocparser.rb +6 -2
  35. data/lib/review/version.rb +1 -1
  36. data/lib/review/webmaker.rb +8 -1
  37. data/review.gemspec +2 -2
  38. data/samples/sample-book/src/.gitignore +1 -0
  39. data/samples/sample-book/src/config-ebook.yml +4 -0
  40. data/samples/sample-book/src/config-jlreq-ebook.yml +4 -0
  41. data/samples/sample-book/src/config.yml +1 -1
  42. data/samples/sample-book/src/lib/tasks/review.rake +10 -6
  43. data/samples/syntax-book/ch01.re +4 -2
  44. data/samples/syntax-book/ch02.re +8 -16
  45. data/samples/syntax-book/config-jlreq-lualatex.yml +4 -0
  46. data/samples/syntax-book/config-print.yml +3 -0
  47. data/samples/syntax-book/config.yml +1 -1
  48. data/samples/syntax-book/lib/tasks/review.rake +23 -8
  49. data/templates/latex/config.erb +6 -6
  50. data/templates/latex/review-jlreq/review-base.sty +14 -4
  51. data/templates/latex/review-jlreq/review-jlreq.cls +10 -1
  52. data/templates/latex/review-jlreq/review-style.sty +1 -1
  53. data/templates/latex/review-jsbook/review-base.sty +10 -0
  54. data/templates/latex/review-jsbook/review-jsbook.cls +1 -1
  55. data/templates/latex/review-jsbook/review-style.sty +1 -1
  56. data/test/assets/test_template.tex +6 -6
  57. data/test/assets/test_template_backmatter.tex +6 -6
  58. data/test/test_book.rb +8 -0
  59. data/test/test_book_chapter.rb +4 -2
  60. data/test/test_catalog.rb +1 -0
  61. data/test/test_epubmaker_cmd.rb +12 -5
  62. data/test/test_helper.rb +11 -6
  63. data/test/test_htmlbuilder.rb +80 -8
  64. data/test/test_idgxmlbuilder.rb +57 -2
  65. data/test/test_idgxmlmaker_cmd.rb +46 -0
  66. data/test/test_image_finder.rb +52 -70
  67. data/test/test_index.rb +12 -12
  68. data/test/test_latexbuilder.rb +171 -8
  69. data/test/test_latexbuilder_v2.rb +9 -7
  70. data/test/test_pdfmaker_cmd.rb +99 -5
  71. data/test/test_textmaker_cmd.rb +54 -0
  72. data/test/test_topbuilder.rb +59 -0
  73. data/vendor/jsclasses/LICENSE +1 -1
  74. data/vendor/jsclasses/jis/jsarticle.cls +53 -14
  75. data/vendor/jsclasses/jis/jsbook.cls +53 -14
  76. data/vendor/jsclasses/jis/jsclasses.dtx +84 -25
  77. data/vendor/jsclasses/jis/jslogo.dtx +4 -4
  78. data/vendor/jsclasses/jis/jslogo.sty +3 -3
  79. data/vendor/jsclasses/jis/jspf.cls +52 -13
  80. data/vendor/jsclasses/jis/jsreport.cls +53 -14
  81. data/vendor/jsclasses/jis/kiyou.cls +53 -14
  82. data/vendor/jsclasses/jis/okumacro.dtx +4 -5
  83. data/vendor/jsclasses/jis/okumacro.sty +3 -4
  84. data/vendor/jsclasses/jsarticle.cls +53 -14
  85. data/vendor/jsclasses/jsbook.cls +53 -14
  86. data/vendor/jsclasses/jsclasses.dtx +84 -25
  87. data/vendor/jsclasses/jsclasses.pdf +0 -0
  88. data/vendor/jsclasses/jslogo.dtx +4 -4
  89. data/vendor/jsclasses/jslogo.pdf +0 -0
  90. data/vendor/jsclasses/jslogo.sty +3 -3
  91. data/vendor/jsclasses/jspf.cls +52 -13
  92. data/vendor/jsclasses/jsreport.cls +53 -14
  93. data/vendor/jsclasses/kiyou.cls +53 -14
  94. data/vendor/jsclasses/okumacro.dtx +4 -5
  95. data/vendor/jsclasses/okumacro.pdf +0 -0
  96. data/vendor/jsclasses/okumacro.sty +3 -4
  97. metadata +15 -6
  98. data/samples/syntax-book/review-ext.rb +0 -14
@@ -3,6 +3,7 @@ require 'tmpdir'
3
3
  require 'fileutils'
4
4
  require 'yaml'
5
5
  require 'rbconfig'
6
+ require 'open3'
6
7
 
7
8
  REVIEW_PDFMAKER = File.expand_path('../bin/review-pdfmaker', File.dirname(__FILE__))
8
9
 
@@ -19,18 +20,111 @@ class PDFMakerCmdTest < Test::Unit::TestCase
19
20
  ENV['RUBYLIB'] = @old_rubylib
20
21
  end
21
22
 
22
- def test_pdfmaker_cmd
23
+ def common_buildpdf(bookdir, templatedir, configfile, targetpdffile, option = nil)
23
24
  if /mswin|mingw|cygwin/ !~ RUBY_PLATFORM
24
- config = prepare_samplebook(@tmpdir1)
25
+ config = prepare_samplebook(@tmpdir1, bookdir, templatedir, configfile)
25
26
  builddir = File.join(@tmpdir1, config['bookname'] + '-pdf')
26
- # assert !File.exist?(builddir)
27
+ assert !File.exist?(builddir)
27
28
 
28
29
  ruby_cmd = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'])
29
30
  Dir.chdir(@tmpdir1) do
30
- system("#{ruby_cmd} -S #{REVIEW_PDFMAKER} config.yml 1>/dev/null 2>/dev/null")
31
+ _o, e, s = Open3.capture3("#{ruby_cmd} -S #{REVIEW_PDFMAKER} #{option} #{configfile}")
32
+ if !e.empty? && !s.success?
33
+ STDERR.puts e
34
+ end
35
+ assert s.success?
31
36
  end
37
+ assert File.exist?(File.join(@tmpdir1, targetpdffile))
38
+ end
39
+ end
40
+
41
+ def test_pdfmaker_cmd_sample_jsbook_print
42
+ begin
43
+ `uplatex -v`
44
+ rescue
45
+ $stderr.puts 'skip test_pdfmaker_cmd_sample_jsbook_print'
46
+ return true
47
+ end
48
+ common_buildpdf('sample-book/src', 'review-jsbook', 'config.yml', 'book.pdf')
49
+ end
50
+
51
+ def test_pdfmaker_cmd_sample_jsbook_ebook
52
+ begin
53
+ `uplatex -v`
54
+ rescue
55
+ $stderr.puts 'skip test_pdfmaker_cmd_sample_jsbook_ebook'
56
+ return true
57
+ end
58
+ common_buildpdf('sample-book/src', 'review-jsbook', 'config-ebook.yml', 'book.pdf')
59
+ end
60
+
61
+ def test_pdfmaker_cmd_sample_jlreq_print
62
+ begin
63
+ `uplatex -v`
64
+ rescue
65
+ $stderr.puts 'skip test_pdfmaker_cmd_sample_jlreq_print'
66
+ return true
67
+ end
68
+ common_buildpdf('sample-book/src', 'review-jlreq', 'config-jlreq.yml', 'book.pdf')
69
+ end
70
+
71
+ def test_pdfmaker_cmd_sample_jlreq_ebook
72
+ begin
73
+ `uplatex -v`
74
+ rescue
75
+ $stderr.puts 'skip test_pdfmaker_cmd_sample_jlreq_ebook'
76
+ return true
77
+ end
78
+ common_buildpdf('sample-book/src', 'review-jlreq', 'config-jlreq-ebook.yml', 'book.pdf')
79
+ end
80
+
81
+ def test_pdfmaker_cmd_syntax_jsbook_print
82
+ begin
83
+ `uplatex -v`
84
+ rescue
85
+ $stderr.puts 'skip test_pdfmaker_cmd_syntax_jsbook_print'
86
+ return true
87
+ end
88
+ common_buildpdf('syntax-book', 'review-jsbook', 'config-print.yml', 'syntax-book.pdf')
89
+ end
90
+
91
+ def test_pdfmaker_cmd_syntax_jsbook_print_buildonly
92
+ begin
93
+ `uplatex -v`
94
+ rescue
95
+ $stderr.puts 'skip test_pdfmaker_cmd_syntax_jsbook_print_buildonly'
96
+ return true
97
+ end
98
+ common_buildpdf('syntax-book', 'review-jsbook', 'config-print.yml', 'syntax-book.pdf', '-y ch01')
99
+ end
100
+
101
+ def test_pdfmaker_cmd_syntax_jsbook_ebook
102
+ begin
103
+ `uplatex -v`
104
+ rescue
105
+ $stderr.puts 'skip test_pdfmaker_cmd_syntax_jsbook_ebook'
106
+ return true
107
+ end
108
+ common_buildpdf('syntax-book', 'review-jsbook', 'config.yml', 'syntax-book.pdf')
109
+ end
110
+
111
+ def test_pdfmaker_cmd_syntax_jlreq_ebook
112
+ begin
113
+ `uplatex -v`
114
+ rescue
115
+ $stderr.puts 'skip test_pdfmaker_cmd_syntax_jlreq_ebook'
116
+ return true
117
+ end
118
+ common_buildpdf('syntax-book', 'review-jlreq', 'config-jlreq.yml', 'syntax-book.pdf')
119
+ end
32
120
 
33
- assert File.exist?(builddir)
121
+ def test_pdfmaker_cmd_syntax_jlreq_ebook_lualatex
122
+ begin
123
+ `lualatex -v`
124
+ rescue
125
+ $stderr.puts 'skip test_pdfmaker_cmd_syntax_jlreq_ebook_lualatex'
126
+ return true
34
127
  end
128
+ common_buildpdf('syntax-book', 'review-jlreq', 'config-jlreq-lualatex.yml', 'syntax-book.pdf')
35
129
  end
36
130
  end
@@ -0,0 +1,54 @@
1
+ require 'test_helper'
2
+ require 'tmpdir'
3
+ require 'fileutils'
4
+ require 'yaml'
5
+ require 'rbconfig'
6
+ require 'open3'
7
+
8
+ REVIEW_TEXTMAKER = File.expand_path('../bin/review-textmaker', File.dirname(__FILE__))
9
+
10
+ class TEXTMakerCmdTest < Test::Unit::TestCase
11
+ def setup
12
+ @tmpdir1 = Dir.mktmpdir
13
+
14
+ @old_rubylib = ENV['RUBYLIB']
15
+ ENV['RUBYLIB'] = File.expand_path('../lib', File.dirname(__FILE__))
16
+ end
17
+
18
+ def teardown
19
+ FileUtils.rm_rf(@tmpdir1)
20
+ ENV['RUBYLIB'] = @old_rubylib
21
+ end
22
+
23
+ def common_buildtext(bookdir, configfile, targetfile, option)
24
+ if /mswin|mingw|cygwin/ !~ RUBY_PLATFORM
25
+ config = prepare_samplebook(@tmpdir1, bookdir, nil, configfile)
26
+ builddir = File.join(@tmpdir1, config['bookname'] + '-text')
27
+ assert !File.exist?(builddir)
28
+
29
+ ruby_cmd = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name']) + RbConfig::CONFIG['EXEEXT']
30
+ Dir.chdir(@tmpdir1) do
31
+ _o, e, s = Open3.capture3("#{ruby_cmd} -S #{REVIEW_TEXTMAKER} #{option} #{configfile}")
32
+ STDERR.puts e unless e.empty?
33
+ assert s.success?
34
+ end
35
+ assert File.exist?(File.join(@tmpdir1, targetfile))
36
+ end
37
+ end
38
+
39
+ def test_textmaker_cmd_samplebook
40
+ common_buildtext('sample-book/src', 'config.yml', 'book-text/ch01.txt', nil)
41
+ end
42
+
43
+ def test_textmaker_cmd_samplebook_plain
44
+ common_buildtext('sample-book/src', 'config.yml', 'book-text/ch01.txt', '-n')
45
+ end
46
+
47
+ def test_textmaker_cmd_syntaxbook
48
+ common_buildtext('syntax-book', 'config.yml', 'syntax-book-text/ch01.txt', nil)
49
+ end
50
+
51
+ def test_textmaker_cmd_syntaxbook_plain
52
+ common_buildtext('syntax-book', 'config.yml', 'syntax-book-text/ch01.txt', '-n')
53
+ end
54
+ end
@@ -170,6 +170,19 @@ para
170
170
 
171
171
  ●\tbar
172
172
 
173
+ EOS
174
+ assert_equal expected, actual
175
+ end
176
+
177
+ def test_dt_inline
178
+ fn = Book::FootnoteIndex.parse(['//footnote[bar][bar]'])
179
+ @chapter.instance_eval { @footnote_index = fn }
180
+ actual = compile_block(" : foo@<fn>{bar}[]<>&@<m>$\\alpha[]$\n")
181
+
182
+ expected = <<-EOS
183
+ ★foo【注1】[]<>&◆→TeX式ここから←◆\\alpha[]◆→TeX式ここまで←◆☆
184
+
185
+
173
186
  EOS
174
187
  assert_equal expected, actual
175
188
  end
@@ -462,6 +475,52 @@ ccc\tddd<>&
462
475
  ccc\tddd<>&
463
476
  ◆→終了:表←◆
464
477
 
478
+ EOS
479
+ assert_equal expected, actual
480
+ end
481
+
482
+ def test_table_row_separator
483
+ src = "//table{\n1\t2\t\t3 4| 5\n------------\na b\tc d |e\n//}\n"
484
+ expected = <<-EOS
485
+ ◆→開始:表←◆
486
+ ★1☆ ★2☆ ★3 4| 5☆
487
+ a b c d |e
488
+ ◆→終了:表←◆
489
+
490
+ EOS
491
+ actual = compile_block(src)
492
+ assert_equal expected, actual
493
+
494
+ @config['table_row_separator'] = 'singletab'
495
+ actual = compile_block(src)
496
+ expected = <<-EOS
497
+ ◆→開始:表←◆
498
+ ★1☆ ★2☆ ★☆ ★3 4| 5☆
499
+ a b c d |e
500
+ ◆→終了:表←◆
501
+
502
+ EOS
503
+ assert_equal expected, actual
504
+
505
+ @config['table_row_separator'] = 'spaces'
506
+ actual = compile_block(src)
507
+ expected = <<-EOS
508
+ ◆→開始:表←◆
509
+ ★1☆ ★2☆ ★3☆ ★4|☆ ★5☆
510
+ a b c d |e
511
+ ◆→終了:表←◆
512
+
513
+ EOS
514
+ assert_equal expected, actual
515
+
516
+ @config['table_row_separator'] = 'verticalbar'
517
+ actual = compile_block(src)
518
+ expected = <<-EOS
519
+ ◆→開始:表←◆
520
+ ★1 2 3 4☆ ★5☆
521
+ a b c d e
522
+ ◆→終了:表←◆
523
+
465
524
  EOS
466
525
  assert_equal expected, actual
467
526
  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}