review 3.1.0 → 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby-win.yml +45 -0
- data/.github/workflows/ruby.yml +27 -0
- data/.rubocop.yml +161 -34
- data/.travis.yml +16 -15
- data/Dockerfile +21 -5
- data/NEWS.ja.md +394 -0
- data/NEWS.md +395 -1
- data/README.md +10 -7
- data/appveyor.yml +1 -3
- data/bin/review-catalog-converter +5 -5
- data/bin/review-check +10 -12
- data/bin/review-checkdep +2 -2
- data/bin/review-compile +17 -23
- data/bin/review-epubmaker +3 -35
- data/bin/review-idgxmlmaker +16 -0
- data/bin/review-index +2 -89
- data/bin/review-preproc +13 -13
- data/bin/review-validate +4 -4
- data/bin/review-vol +4 -78
- data/doc/config.yml.sample +47 -12
- data/doc/config.yml.sample-simple +3 -2
- data/doc/format.ja.md +120 -17
- data/doc/format.md +119 -27
- data/doc/makeindex.ja.md +2 -2
- data/doc/pdfmaker.ja.md +43 -1
- data/doc/pdfmaker.md +42 -1
- data/doc/quickstart.ja.md +45 -25
- data/doc/quickstart.md +37 -16
- data/lib/epubmaker/content.rb +3 -2
- data/lib/epubmaker/epubcommon.rb +34 -27
- data/lib/epubmaker/epubv2.rb +5 -6
- data/lib/epubmaker/epubv3.rb +21 -18
- data/lib/epubmaker/producer.rb +2 -1
- data/lib/review/book.rb +2 -2
- data/lib/review/book/base.rb +91 -96
- data/lib/review/book/bib.rb +21 -0
- data/lib/review/book/book_unit.rb +155 -0
- data/lib/review/book/chapter.rb +48 -29
- data/lib/review/book/index.rb +46 -240
- data/lib/review/book/index/item.rb +46 -0
- data/lib/review/book/page_metric.rb +7 -7
- data/lib/review/book/part.rb +45 -10
- data/lib/review/book/volume.rb +4 -5
- data/lib/review/builder.rb +172 -56
- data/lib/review/catalog.rb +14 -17
- data/lib/review/compiler.rb +219 -121
- data/lib/review/configure.rb +39 -7
- data/lib/review/converter.rb +1 -1
- data/lib/review/epub2html.rb +43 -5
- data/lib/review/epubmaker.rb +69 -27
- data/lib/review/extentions/string.rb +0 -4
- data/lib/review/htmlbuilder.rb +112 -101
- data/lib/review/htmlutils.rb +9 -13
- data/lib/review/i18n.rb +3 -3
- data/lib/review/idgxmlbuilder.rb +202 -78
- data/lib/review/idgxmlmaker.rb +186 -0
- data/lib/review/index_builder.rb +653 -0
- data/lib/review/init-web/finish.html +10 -0
- data/lib/review/init-web/index.html +190 -0
- data/lib/review/init-web/review-layout-design.js +691 -0
- data/lib/review/init.rb +129 -46
- data/lib/review/latexbuilder.rb +255 -92
- data/lib/review/lineinput.rb +1 -1
- data/lib/review/location.rb +32 -0
- data/lib/review/logger.rb +4 -8
- data/lib/review/makerhelper.rb +35 -5
- data/lib/review/markdownbuilder.rb +50 -38
- data/lib/review/md2inaobuilder.rb +3 -5
- data/lib/review/pdfmaker.rb +60 -57
- data/lib/review/plaintextbuilder.rb +154 -87
- data/lib/review/preprocessor.rb +20 -42
- data/lib/review/rstbuilder.rb +57 -38
- data/lib/review/sec_counter.rb +13 -0
- data/lib/review/textmaker.rb +23 -15
- data/lib/review/textutils.rb +76 -2
- data/lib/review/tocprinter.rb +230 -102
- data/lib/review/topbuilder.rb +139 -60
- data/lib/review/update.rb +24 -24
- data/lib/review/version.rb +1 -1
- data/lib/review/volumeprinter.rb +98 -0
- data/lib/review/webmaker.rb +20 -24
- data/lib/review/webtocprinter.rb +38 -35
- data/lib/review/yamlloader.rb +26 -16
- data/review.gemspec +6 -4
- data/samples/sample-book/README.md +7 -2
- data/samples/sample-book/src/.gitignore +154 -0
- data/samples/sample-book/src/config-ebook.yml +4 -0
- data/samples/sample-book/src/config-jlreq-ebook.yml +4 -0
- data/samples/sample-book/src/config-jlreq.yml +6 -0
- data/samples/sample-book/src/config.yml +2 -2
- data/samples/sample-book/src/lib/tasks/review.rake +29 -14
- data/samples/sample-book/src/lib/tasks/z01_copy_sty.rake +14 -8
- data/samples/syntax-book/Gemfile +1 -1
- data/samples/syntax-book/ch01.re +4 -2
- data/samples/syntax-book/ch02.re +8 -16
- data/samples/syntax-book/ch03.re +3 -6
- data/samples/syntax-book/config-jlreq-lualatex.yml +4 -0
- data/samples/syntax-book/config-jlreq.yml +5 -0
- data/samples/syntax-book/config-print.yml +3 -0
- data/samples/syntax-book/config.yml +1 -1
- data/samples/syntax-book/lib/tasks/review.rake +30 -15
- data/samples/syntax-book/lib/tasks/z01_copy_sty.rake +14 -8
- data/templates/latex/config.erb +39 -25
- data/templates/latex/layout.tex.erb +1 -0
- data/templates/latex/review-jlreq/README.md +3 -1
- data/templates/latex/review-jlreq/review-base.sty +161 -50
- data/templates/latex/review-jlreq/review-jlreq.cls +21 -22
- data/templates/latex/review-jlreq/review-style.sty +4 -1
- data/templates/latex/review-jsbook/README.md +46 -5
- data/templates/latex/review-jsbook/review-base.sty +123 -35
- data/templates/latex/review-jsbook/review-jsbook.cls +10 -4
- data/templates/latex/review-jsbook/review-style.sty +5 -2
- data/templates/opf/epubv3.opf.erb +1 -0
- data/templates/web/html/layout-html5.html.erb +3 -3
- data/test/assets/test_template.tex +19 -7
- data/test/assets/test_template_backmatter.tex +19 -7
- data/test/book_test_helper.rb +11 -5
- data/test/test_book.rb +124 -79
- data/test/test_book_chapter.rb +97 -54
- data/test/test_book_part.rb +3 -3
- data/test/test_builder.rb +38 -13
- data/test/test_catalog.rb +24 -42
- data/test/test_catalog_converter_cmd.rb +1 -1
- data/test/test_converter.rb +1 -0
- data/test/test_epub3maker.rb +2 -2
- data/test/test_epubmaker.rb +8 -0
- data/test/test_epubmaker_cmd.rb +14 -7
- data/test/test_helper.rb +18 -7
- data/test/test_htmlbuilder.rb +1491 -205
- data/test/test_htmlutils.rb +0 -12
- data/test/test_i18n.rb +37 -37
- data/test/test_idgxmlbuilder.rb +744 -42
- data/test/test_idgxmlmaker_cmd.rb +46 -0
- data/test/test_image_finder.rb +52 -70
- data/test/test_index.rb +94 -44
- data/test/test_indexbuilder.rb +52 -0
- data/test/test_latexbuilder.rb +1784 -161
- data/test/test_latexbuilder_v2.rb +671 -102
- data/test/test_logger.rb +17 -4
- data/test/test_makerhelper.rb +2 -14
- data/test/test_markdownbuilder.rb +137 -16
- data/test/test_md2inaobuilder.rb +32 -9
- data/test/test_pdfmaker.rb +30 -12
- data/test/test_pdfmaker_cmd.rb +100 -6
- data/test/test_plaintextbuilder.rb +791 -30
- data/test/test_preprocessor.rb +2 -16
- data/test/test_review_ext.rb +2 -1
- data/test/test_rstbuilder.rb +274 -27
- data/test/test_sec_counter.rb +156 -0
- data/test/test_textmaker_cmd.rb +54 -0
- data/test/test_textutils.rb +109 -2
- data/test/test_topbuilder.rb +724 -34
- data/test/test_update.rb +20 -11
- data/test/test_webtocprinter.rb +75 -43
- data/test/test_yamlloader.rb +13 -0
- data/vendor/gentombow/LICENSE +1 -1
- data/vendor/gentombow/Makefile +0 -1
- data/vendor/gentombow/bounddvi-en.pdf +0 -0
- data/vendor/gentombow/bounddvi-en.tex +1 -0
- data/vendor/gentombow/bounddvi.pdf +0 -0
- data/vendor/gentombow/bounddvi.sty +30 -7
- data/vendor/gentombow/bounddvi.tex +1 -0
- data/vendor/gentombow/create_archive.sh +1 -0
- data/vendor/gentombow/gentombow-ja.pdf +0 -0
- data/vendor/gentombow/gentombow-ja.tex +9 -0
- data/vendor/gentombow/gentombow.pdf +0 -0
- data/vendor/gentombow/gentombow.sty +32 -10
- data/vendor/gentombow/gentombow.tex +8 -0
- data/vendor/gentombow/tests/gentombow-01-pdfx.tex +8 -0
- data/vendor/gentombow/tests/gentombow-02-pdfx.tex +8 -0
- data/vendor/jsclasses/LICENSE +1 -1
- data/vendor/jsclasses/Makefile +3 -2
- data/vendor/jsclasses/create_archive.sh +5 -5
- data/vendor/jsclasses/jis/Makefile +3 -2
- data/vendor/jsclasses/jis/jsarticle.cls +74 -31
- data/vendor/jsclasses/jis/jsbook.cls +74 -31
- data/vendor/jsclasses/jis/jsclasses.dtx +176 -36
- data/vendor/jsclasses/jis/jsclasses.ins +15 -5
- data/vendor/jsclasses/jis/jslogo.dtx +4 -4
- data/vendor/jsclasses/jis/jslogo.ins +9 -0
- data/vendor/jsclasses/jis/jslogo.sty +4 -16
- data/vendor/jsclasses/jis/jspf.cls +73 -30
- data/vendor/jsclasses/jis/jsreport.cls +74 -31
- data/vendor/jsclasses/jis/jsverb.ins +9 -0
- data/vendor/jsclasses/jis/jsverb.sty +1 -13
- data/vendor/jsclasses/jis/kiyou.cls +74 -31
- data/vendor/jsclasses/jis/minijs.sty +65 -22
- data/vendor/jsclasses/jis/okumacro.dtx +4 -5
- data/vendor/jsclasses/jis/okumacro.ins +9 -0
- data/vendor/jsclasses/jis/okumacro.sty +4 -17
- data/vendor/jsclasses/jis/okuverb.ins +9 -0
- data/vendor/jsclasses/jis/okuverb.sty +1 -13
- data/vendor/jsclasses/jis/winjis.sty +23 -19
- data/vendor/jsclasses/jsarticle.cls +74 -31
- data/vendor/jsclasses/jsbook.cls +74 -31
- data/vendor/jsclasses/jsclasses.dtx +176 -36
- data/vendor/jsclasses/jsclasses.ins +15 -5
- data/vendor/jsclasses/jsclasses.pdf +0 -0
- data/vendor/jsclasses/jslogo.dtx +4 -4
- data/vendor/jsclasses/jslogo.ins +9 -0
- data/vendor/jsclasses/jslogo.pdf +0 -0
- data/vendor/jsclasses/jslogo.sty +4 -16
- data/vendor/jsclasses/jspf.cls +73 -30
- data/vendor/jsclasses/jsreport.cls +74 -31
- data/vendor/jsclasses/jsverb.ins +9 -0
- data/vendor/jsclasses/jsverb.pdf +0 -0
- data/vendor/jsclasses/jsverb.sty +1 -13
- data/vendor/jsclasses/kiyou.cls +74 -31
- data/vendor/jsclasses/minijs.sty +68 -22
- data/vendor/jsclasses/okumacro.dtx +4 -5
- data/vendor/jsclasses/okumacro.ins +9 -0
- data/vendor/jsclasses/okumacro.pdf +0 -0
- data/vendor/jsclasses/okumacro.sty +4 -17
- data/vendor/jsclasses/okuverb.ins +9 -0
- data/vendor/jsclasses/okuverb.pdf +0 -0
- data/vendor/jsclasses/okuverb.sty +1 -13
- data/vendor/jsclasses/tests/relfont.tex +10 -0
- data/vendor/jsclasses/winjis.sty +23 -19
- metadata +65 -12
- data/.rubocop_todo.yml +0 -7
- data/lib/review/book/compilable.rb +0 -173
- data/lib/review/tocparser.rb +0 -271
- data/samples/syntax-book/review-ext.rb +0 -14
- data/test/test_tocparser.rb +0 -25
data/test/test_update.rb
CHANGED
@@ -14,7 +14,7 @@ class UpdateTest < Test::Unit::TestCase
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def teardown
|
17
|
-
FileUtils.rm_rf
|
17
|
+
FileUtils.rm_rf(@tmpdir)
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_broken_yml
|
@@ -64,7 +64,7 @@ EOT
|
|
64
64
|
io = StringIO.new
|
65
65
|
@u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
|
66
66
|
assert_raise(ApplicationError) { @u.check_old_catalogs(@tmpdir) }
|
67
|
-
assert_match(/review
|
67
|
+
assert_match(/review-catalog-converter/, io.string)
|
68
68
|
|
69
69
|
File.unlink(File.join(@tmpdir, fname))
|
70
70
|
end
|
@@ -86,7 +86,7 @@ EOT
|
|
86
86
|
io = StringIO.new
|
87
87
|
@u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
|
88
88
|
@u.check_own_files(@tmpdir)
|
89
|
-
assert_match(/There is review
|
89
|
+
assert_match(/There is review-ext\.rb file/, io.string)
|
90
90
|
end
|
91
91
|
|
92
92
|
def test_update_version_older
|
@@ -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 '
|
100
|
-
assert_equal 'review_version:
|
99
|
+
assert_match(/Update 'review_version' to '5.0'/, io.string)
|
100
|
+
assert_equal 'review_version: 5.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 '5.0'/, io.string)
|
109
|
+
assert_equal 'review_version: 5.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:
|
113
|
+
File.write(File.join(@tmpdir, 'config.yml'), "review_version: 5.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:
|
120
|
+
assert_equal 'review_version: 5.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 '
|
130
|
+
assert_match(/Update 'review_version' to '5.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
|
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) }
|
@@ -376,7 +385,7 @@ EOT
|
|
376
385
|
|
377
386
|
File.write(File.join(@tmpdir, 'sty/review-base.sty'), "% MODIFIED\n")
|
378
387
|
@u.update_tex_stys('review-jsbook', @tmpdir)
|
379
|
-
assert_match(/review
|
388
|
+
assert_match(/review-base\.sty will be overridden/, io.string)
|
380
389
|
assert_equal cont, File.read(File.join(@tmpdir, 'sty/review-base.sty'))
|
381
390
|
end
|
382
391
|
|
@@ -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
|
data/test/test_webtocprinter.rb
CHANGED
@@ -11,7 +11,7 @@ class WEBTOCPrinterTest < Test::Unit::TestCase
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def test_webtocprinter_null
|
14
|
-
dummy_book = ReVIEW::Book::Base.
|
14
|
+
dummy_book = ReVIEW::Book::Base.new
|
15
15
|
# chap = ReVIEW::Book::Chapter.new(dummy_book, 1, '-', nil, StringIO.new)
|
16
16
|
str = WEBTOCPrinter.book_to_string(dummy_book)
|
17
17
|
expect = <<-EOB
|
@@ -28,15 +28,15 @@ CHAPS:
|
|
28
28
|
- ch1.re
|
29
29
|
- ch2.re
|
30
30
|
EOB
|
31
|
-
mktmpbookdir
|
31
|
+
mktmpbookdir('catalog.yml' => catalog_yml,
|
32
32
|
'ch1.re' => "= ch. 1\n\n111\n",
|
33
|
-
'ch2.re' => "= ch. 2\n\n222\n" do |_dir, book, _files|
|
33
|
+
'ch2.re' => "= ch. 2\n\n222\n") do |_dir, book, _files|
|
34
34
|
str = WEBTOCPrinter.book_to_string(book)
|
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"
|
39
|
-
<li><a href="ch2.html"
|
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
|
@@ -51,23 +51,19 @@ CHAPS:
|
|
51
51
|
- part2:
|
52
52
|
- ch2.re
|
53
53
|
EOB
|
54
|
-
mktmpbookdir
|
54
|
+
mktmpbookdir('catalog.yml' => catalog_yml,
|
55
55
|
'ch1.re' => "= ch. 1\n\n111\n",
|
56
|
-
'ch2.re' => "= ch. 2\n\n222\n" do |_dir, book, _files|
|
56
|
+
'ch2.re' => "= ch. 2\n\n222\n") do |_dir, book, _files|
|
57
57
|
str = WEBTOCPrinter.book_to_string(book)
|
58
58
|
expect = <<-EOB
|
59
59
|
<ul class="book-toc">
|
60
60
|
<li><a href="index.html">TOP</a></li>
|
61
|
-
<li
|
62
|
-
<ul>
|
63
|
-
|
64
|
-
|
65
|
-
</li>
|
66
|
-
|
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
|
@@ -82,25 +78,21 @@ CHAPS:
|
|
82
78
|
- p2.re:
|
83
79
|
- ch2.re
|
84
80
|
EOB
|
85
|
-
mktmpbookdir
|
81
|
+
mktmpbookdir('catalog.yml' => catalog_yml,
|
86
82
|
'p1.re' => "= This is PART1\n\np111\n",
|
87
83
|
'p2.re' => "= This is PART2\n\np111\n",
|
88
84
|
'ch1.re' => "= ch. 1\n\n111\n",
|
89
|
-
'ch2.re' => "= ch. 2\n\n222\n" do |_dir, book, _files|
|
85
|
+
'ch2.re' => "= ch. 2\n\n222\n") do |_dir, book, _files|
|
90
86
|
str = WEBTOCPrinter.book_to_string(book)
|
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"
|
95
|
-
<ul>
|
96
|
-
|
97
|
-
</
|
98
|
-
</li>
|
99
|
-
|
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
|
@@ -124,7 +116,7 @@ POSTDEF:
|
|
124
116
|
- post1.re
|
125
117
|
- post2.re
|
126
118
|
EOB
|
127
|
-
mktmpbookdir
|
119
|
+
mktmpbookdir('catalog.yml' => catalog_yml,
|
128
120
|
'pre1.re' => "= PRE1\n\npre111\n",
|
129
121
|
'pre2.re' => "= PRE2\n\npre222\n",
|
130
122
|
'app1.re' => "= APP1\n\napp111\n",
|
@@ -134,28 +126,68 @@ EOB
|
|
134
126
|
'post1.re' => "= POST1\n\npo111\n",
|
135
127
|
'post2.re' => "= POST2\n\npo222\n",
|
136
128
|
'ch1.re' => "= ch. 1\n\n111\n",
|
137
|
-
'ch2.re' => "= ch. 2\n\n222\n" do |_dir, book, _files|
|
129
|
+
'ch2.re' => "= ch. 2\n\n222\n") do |_dir, book, _files|
|
138
130
|
str = WEBTOCPrinter.book_to_string(book)
|
139
131
|
expect = <<-EOB
|
140
132
|
<ul class="book-toc">
|
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"
|
145
|
-
<ul>
|
146
|
-
|
147
|
-
</
|
148
|
-
</li>
|
149
|
-
|
150
|
-
<
|
151
|
-
<li><a href="
|
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
|
data/test/test_yamlloader.rb
CHANGED
@@ -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
|
data/vendor/gentombow/LICENSE
CHANGED
data/vendor/gentombow/Makefile
CHANGED
@@ -25,7 +25,6 @@ gentombow.pdf: gentombow.tex
|
|
25
25
|
.PHONY: install clean
|
26
26
|
install:
|
27
27
|
mkdir -p ${TEXMF}/doc/latex/gentombow
|
28
|
-
cp ./Makefile ${TEXMF}/doc/latex/gentombow/
|
29
28
|
cp ./LICENSE ${TEXMF}/doc/latex/gentombow/
|
30
29
|
cp ./README.md ${TEXMF}/doc/latex/gentombow/
|
31
30
|
cp ./*.pdf ${TEXMF}/doc/latex/gentombow/
|
Binary file
|
@@ -130,6 +130,7 @@ using \textsf{bounddvi} package.
|
|
130
130
|
\item 2016/10/25 v7.1 (HY) Support for p\LaTeXe\ tombow option,
|
131
131
|
compatibility with \textsf{graphics}/\textsf{color} packages
|
132
132
|
\item 2016/12/28 v7.2 (HY) Documentation for the new \texttt{dvips} behavior
|
133
|
+
\item 2020/09/25 v8.0 (HY) Support for \LaTeXe/p\LaTeXe~2020-10-01
|
133
134
|
\end{itemize}
|
134
135
|
|
135
136
|
\end{document}
|
Binary file
|
@@ -1,7 +1,7 @@
|
|
1
1
|
%
|
2
2
|
% bounddvi.sty
|
3
|
-
%
|
4
|
-
% 2004/12/15 v6.0-v1.0 inoue
|
3
|
+
% 2020/09/25 v8.0-v7.0 h.y.acetaminophen [at] gmail.com
|
4
|
+
% 2004/12/15 v6.0-v1.0 inoue [at] ma.ns.tcu.ac.jp
|
5
5
|
%
|
6
6
|
% This package, originally written by Koichi Inoue
|
7
7
|
% and modified by Hironobu Yamashita, is distributed
|
@@ -10,7 +10,7 @@
|
|
10
10
|
%
|
11
11
|
|
12
12
|
\NeedsTeXFormat{LaTeX2e}
|
13
|
-
\ProvidesPackage{bounddvi}[
|
13
|
+
\ProvidesPackage{bounddvi}[2020/09/25 v8.0 bounddvi]
|
14
14
|
|
15
15
|
% catcode trick to hide \iftombow ... \else ... \fi
|
16
16
|
% since \iftombow is defined only in pLaTeX.
|
@@ -50,6 +50,33 @@ Q \fi
|
|
50
50
|
% reset catcode trick
|
51
51
|
\catcode`\Q=11\relax
|
52
52
|
|
53
|
+
%% Since LaTeX2e 2020-10-01, \@begindocumenthook is deprecated
|
54
|
+
%% and \UseHook{begindocument} etc. are used.
|
55
|
+
%% This code appends papersize special to the _end_ of the hook.
|
56
|
+
%% (Note: support for old dvips is removed.)
|
57
|
+
\ifx\AddToHook\@undefined\else
|
58
|
+
\AtBeginDocument{\AtBeginDvi{%
|
59
|
+
\begingroup
|
60
|
+
% if \stockwidth/\stockheight are defined & have effective
|
61
|
+
% values, copy them to \paperwidth/\paperheight
|
62
|
+
% for current group
|
63
|
+
\ifx\stockwidth\@undefined\else \ifdim\stockwidth>\z@
|
64
|
+
\paperwidth\stockwidth
|
65
|
+
\fi\fi
|
66
|
+
\ifx\stockheight\@undefined\else \ifdim\stockheight>\z@
|
67
|
+
\paperheight\stockheight
|
68
|
+
\fi\fi
|
69
|
+
% adjust for \mag and emit papersize special
|
70
|
+
\divide\paperwidth\@m\multiply\paperwidth\mag
|
71
|
+
\divide\paperheight\@m\multiply\paperheight\mag
|
72
|
+
\special{papersize=\the\paperwidth,\the\paperheight}%
|
73
|
+
\endgroup}}
|
74
|
+
\expandafter\endinput
|
75
|
+
\fi
|
76
|
+
|
77
|
+
%% The rest of this package is meant for
|
78
|
+
%% LaTeX2e 2020-02-02 PL5 or older.
|
79
|
+
|
53
80
|
% following code is almost equivalent to
|
54
81
|
% \AtBeginDocument{\AtBeginDvi{...}}
|
55
82
|
% however, we append the specification to the _beginning_ of
|
@@ -59,16 +86,12 @@ Q \fi
|
|
59
86
|
\def\@prependto@begindocumenthook{\global\setbox\@begindvibox
|
60
87
|
\vbox{\csname yoko\endcsname\unvbox\@begindvibox
|
61
88
|
\begingroup
|
62
|
-
% if \stockwidth/\stockheight are defined & have effective
|
63
|
-
% values, copy them to \paperwidth/\paperheight
|
64
|
-
% for current group
|
65
89
|
\ifx\stockwidth\@undefined\else \ifdim\stockwidth>\z@
|
66
90
|
\paperwidth\stockwidth
|
67
91
|
\fi\fi
|
68
92
|
\ifx\stockheight\@undefined\else \ifdim\stockheight>\z@
|
69
93
|
\paperheight\stockheight
|
70
94
|
\fi\fi
|
71
|
-
% adjust for \mag and emit papersize special
|
72
95
|
\divide\paperwidth\@m\multiply\paperwidth\mag
|
73
96
|
\divide\paperheight\@m\multiply\paperheight\mag
|
74
97
|
\special{papersize=\the\paperwidth,\the\paperheight}%
|
@@ -143,6 +143,7 @@ DVIファイルは用紙サイズ情報を含みませんが、PostScriptやPDF
|
|
143
143
|
\item 2016/10/25 v7.1 (HY) p\LaTeXe{}のトンボサポート、
|
144
144
|
2016年の新しい\textsf{graphics}/\textsf{color}に対応
|
145
145
|
\item 2016/12/28 v7.2 (HY) 新仕様の\texttt{dvips}をドキュメント化
|
146
|
+
\item 2020/09/25 v8.0 (HY) \LaTeXe/p\LaTeXe~2020-10-01(予定)への対応
|
146
147
|
\end{itemize}
|
147
148
|
|
148
149
|
\end{document}
|
@@ -14,6 +14,7 @@ echo " * Create $PROJECT.zip ($RELEASEDATE)"
|
|
14
14
|
git archive --format=tar --prefix=$PROJECT/ HEAD | (cd $TMP && tar xf -)
|
15
15
|
rm $TMP/$PROJECT/.gitignore
|
16
16
|
rm $TMP/$PROJECT/create_archive.sh
|
17
|
+
rm $TMP/$PROJECT/Makefile
|
17
18
|
rm -rf $TMP/$PROJECT/tests
|
18
19
|
perl -pi.bak -e "s/\\\$RELEASEDATE/$RELEASEDATE/g" $TMP/$PROJECT/README.md
|
19
20
|
rm -f $TMP/$PROJECT/README.md.bak
|
Binary file
|
@@ -291,6 +291,9 @@ CMYKの版ごとにトンボを作成する場合や、特色のトンボが必
|
|
291
291
|
\item \verb+/BleedBox+: 裁ち落とし領域を含んだサイズ。
|
292
292
|
\item \verb+/CropBox+, \verb+/ArtBox+: 明示しない。
|
293
293
|
\end{itemize}
|
294
|
+
注意:\textsf{pdfx}パッケージがPDF/Xモードで読み込まれていれば、
|
295
|
+
このオプション機能は自動的に有効化されます。
|
296
|
+
また、\verb+/CropBox+も明示します。
|
294
297
|
|
295
298
|
\section{その他の注意点}
|
296
299
|
|
@@ -390,6 +393,11 @@ $30\,\mathrm{mm}$にしたいとき\footnote{ここでは「本文の領域以
|
|
390
393
|
\end{verbatim}
|
391
394
|
\end{dangerous}
|
392
395
|
|
396
|
+
なお、\textsf{geometry}パッケージは用紙サイズ
|
397
|
+
(\verb+\paperwidth+, \verb+\paperheight+)を変更する場合もあります。
|
398
|
+
こうした場合に備え、\textsf{gentombow}パッケージは
|
399
|
+
\textsf{geometry}パッケージよりも後に読み込むようにしてください。
|
400
|
+
|
393
401
|
\section*{雑記}
|
394
402
|
|
395
403
|
発端はこの話です。
|
@@ -444,6 +452,7 @@ $30\,\mathrm{mm}$にしたいとき\footnote{ここでは「本文の領域以
|
|
444
452
|
\verb+pdfbox+オプションが正常動作するように改良、
|
445
453
|
\verb+\settombowbleed+が\verb+/TrimBox+に反映されな
|
446
454
|
かったバグの修正
|
455
|
+
\item 2019/07/21 v0.9k \textsf{pdfx}パッケージとの整合性をとる改良
|
447
456
|
\end{itemize}
|
448
457
|
|
449
458
|
\end{document}
|
Binary file
|
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
\NeedsTeXFormat{LaTeX2e}
|
10
10
|
\ProvidesPackage{gentombow}
|
11
|
-
[
|
11
|
+
[2019/07/21 v0.9k Generate crop mark 'tombow']
|
12
12
|
\def\pxgtmb@pkgname{gentombow}
|
13
13
|
\@namedef{ver@pxgentombow.sty}{}% fake
|
14
14
|
|
@@ -290,6 +290,7 @@
|
|
290
290
|
%% prepare flag
|
291
291
|
\newif\ifpxgtmb@switch \pxgtmb@switchfalse
|
292
292
|
\newif\ifpxgtmb@landscape \pxgtmb@landscapefalse
|
293
|
+
\newif\ifpxgtmb@pdfx@x \pxgtmb@pdfx@xfalse
|
293
294
|
|
294
295
|
%% passed from class options
|
295
296
|
%% should be declared first inside this package (least priority)
|
@@ -507,7 +508,7 @@
|
|
507
508
|
%% pdf "digital tombo" (driver-dependent)
|
508
509
|
% the box size calculation is delayed until \AtBeginDocument
|
509
510
|
% to allow users to change \@tombowbleed in the preamble
|
510
|
-
|
511
|
+
|
511
512
|
% convert pt -> bp
|
512
513
|
\def\pxgtmb@PDF@setbp#1#2{%
|
513
514
|
\@tempdima=.996264#2\relax % 0.996264 = 72/72.27 (cf. 1in = 72.27pt = 72bp)
|
@@ -521,8 +522,8 @@
|
|
521
522
|
\def\pxgtmb@magscale{1}%
|
522
523
|
\fi
|
523
524
|
% set pdf boxes in bp unit
|
524
|
-
|
525
|
-
|
525
|
+
\pxgtmb@PDF@setbp\pxgtmb@PDF@crop@ur@x\stockwidth
|
526
|
+
\pxgtmb@PDF@setbp\pxgtmb@PDF@crop@ur@y\stockheight
|
526
527
|
\pxgtmb@PDF@setbp\pxgtmb@PDF@trim@ll@x{\dimexpr(\stockwidth-\paperwidth)/2}%
|
527
528
|
\pxgtmb@PDF@setbp\pxgtmb@PDF@trim@ll@y{\dimexpr(\stockheight-\paperheight)/2}%
|
528
529
|
\pxgtmb@PDF@setbp\pxgtmb@PDF@trim@ur@x{\dimexpr(\stockwidth+\paperwidth)/2}%
|
@@ -532,8 +533,14 @@
|
|
532
533
|
\pxgtmb@PDF@setbp\pxgtmb@PDF@bleed@ur@x{\dimexpr(\stockwidth+\paperwidth)/2+\@tombowbleed}%
|
533
534
|
\pxgtmb@PDF@setbp\pxgtmb@PDF@bleed@ur@y{\dimexpr(\stockheight+\paperheight)/2+\@tombowbleed}%
|
534
535
|
\xdef\pxgtmb@PDF@CTM{%
|
535
|
-
%% CropBox: implicit (same as MediaBox, large paper size)
|
536
|
-
|
536
|
+
%% CropBox: normally implicit (same as MediaBox, large paper size)
|
537
|
+
%% however, pdfx.sty in PDF/X mode sets /CropBox explicitly, so I need to override it!
|
538
|
+
\ifpxgtmb@pdfx@x
|
539
|
+
\noexpand\pxgtmb@PDF@begin
|
540
|
+
/CropBox [0 0
|
541
|
+
\pxgtmb@PDF@crop@ur@x\space
|
542
|
+
\pxgtmb@PDF@crop@ur@y] \noexpand\pxgtmb@PDF@end
|
543
|
+
\fi
|
537
544
|
%% BleedBox: explicit (final paper size + surrounding \@tombowbleed)
|
538
545
|
\noexpand\pxgtmb@PDF@begin
|
539
546
|
/BleedBox [\pxgtmb@PDF@bleed@ll@x\space
|
@@ -547,9 +554,20 @@
|
|
547
554
|
\pxgtmb@PDF@trim@ur@x\space
|
548
555
|
\pxgtmb@PDF@trim@ur@y] \noexpand\pxgtmb@PDF@end
|
549
556
|
%% ArtBox: implicit
|
557
|
+
%% [Note] PDF/X requires /TrimBox or /ArtBox but not both!
|
550
558
|
}%
|
551
559
|
\endgroup
|
552
560
|
}
|
561
|
+
|
562
|
+
% do it
|
563
|
+
\AtBeginDocument{\pxgtmb@PDF@emit}
|
564
|
+
\def\pxgtmb@PDF@emit{%
|
565
|
+
% handle compatibility with pdfx.sty here;
|
566
|
+
% if pdfx.sty with PDF/X mode detected, force [pdfbox] option!
|
567
|
+
\pxgtmb@handle@pdfx
|
568
|
+
\ifpxgtmb@pdfx@x\def\pxgtmb@pdfbox@status{1}\fi
|
569
|
+
% start actual procedure for [pdfbox] option
|
570
|
+
\if 1\pxgtmb@pdfbox@status
|
553
571
|
%% supported drivers: dvips, dvipdfmx, XeTeX, pdfTeX, LuaTeX
|
554
572
|
\ifnum0\ifx\pdfvariable\@undefined\else\the\outputmode\fi=0\relax
|
555
573
|
\ifnum0\ifx\pdfpageattr\@undefined\else\the\pdfoutput\fi=0\relax
|
@@ -666,8 +684,7 @@
|
|
666
684
|
\def\pxgtmb@PDF@begin{}\def\pxgtmb@PDF@end{}%
|
667
685
|
\edef\pxgtmb@PDF@CTM{{\pxgtmb@PDF@CTM}}%
|
668
686
|
\expandafter\pdfpageattr\pxgtmb@PDF@CTM}
|
669
|
-
\fi
|
670
|
-
\else
|
687
|
+
\fi\else
|
671
688
|
%% for LuaTeX
|
672
689
|
\def\pxgtmb@driver{l}
|
673
690
|
% force paper size
|
@@ -679,7 +696,8 @@
|
|
679
696
|
\edef\pxgtmb@PDF@CTM{pageattr{\pxgtmb@PDF@CTM}}%
|
680
697
|
\expandafter\pdfvariable\pxgtmb@PDF@CTM}
|
681
698
|
\fi
|
682
|
-
\fi
|
699
|
+
\fi
|
700
|
+
}
|
683
701
|
|
684
702
|
%% make visible tombow box according to the current status of
|
685
703
|
%% \@bannerfont, \@bannertoken, \@tombowwidth & \@tombowbleed
|
@@ -713,7 +731,7 @@
|
|
713
731
|
% because pdf boxes are calculated only inside \AtBeginDocument
|
714
732
|
\@onlypreamble\settombowbleed
|
715
733
|
|
716
|
-
%% patch internal
|
734
|
+
%% patch internal of pdfpages.sty to work with tombow
|
717
735
|
%% (tested on pdfpages 2017/10/31 v0.5l)
|
718
736
|
%% Note the code is the same as that of pxpdfpages.sty,
|
719
737
|
%% but reserved here since gentombow.sty can be used on
|
@@ -744,4 +762,8 @@
|
|
744
762
|
%% do it
|
745
763
|
\AtBeginDocument{\@ifpackageloaded{pdfpages}{\pxgtmb@patch@pdfpages}{}}
|
746
764
|
|
765
|
+
%% patch pdfx.sty
|
766
|
+
%% (tested on pdfx 2019/02/27 v1.6.3)
|
767
|
+
\def\pxgtmb@handle@pdfx{\@ifpackageloaded{pdfx}{\let\ifpxgtmb@pdfx@x\ifpdfx@x}{}}
|
768
|
+
|
747
769
|
\endinput
|