review 4.0.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
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}