review 4.2.0 → 5.0.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.
- checksums.yaml +4 -4
- data/.github/workflows/ruby-win.yml +11 -5
- data/.rubocop.yml +113 -24
- data/NEWS.ja.md +94 -0
- data/NEWS.md +94 -0
- data/bin/review-catalog-converter +1 -1
- data/bin/review-check +2 -4
- data/bin/review-checkdep +1 -1
- data/bin/review-compile +8 -14
- data/bin/review-validate +1 -1
- data/doc/config.yml.sample +4 -1
- data/doc/config.yml.sample-simple +1 -1
- data/doc/format.ja.md +83 -4
- data/doc/format.md +84 -7
- data/doc/makeindex.ja.md +2 -2
- data/doc/quickstart.ja.md +3 -3
- data/doc/quickstart.md +2 -2
- data/lib/epubmaker/content.rb +3 -2
- data/lib/epubmaker/epubcommon.rb +33 -25
- data/lib/epubmaker/epubv2.rb +5 -6
- data/lib/epubmaker/epubv3.rb +20 -18
- data/lib/review/book.rb +2 -2
- data/lib/review/book/base.rb +61 -25
- data/lib/review/book/bib.rb +21 -0
- data/lib/review/book/book_unit.rb +155 -0
- data/lib/review/book/chapter.rb +30 -26
- data/lib/review/book/index.rb +23 -185
- data/lib/review/book/index/item.rb +7 -1
- data/lib/review/book/part.rb +21 -9
- data/lib/review/book/volume.rb +1 -1
- data/lib/review/builder.rb +68 -13
- data/lib/review/catalog.rb +2 -2
- data/lib/review/compiler.rb +159 -73
- data/lib/review/configure.rb +22 -1
- data/lib/review/converter.rb +1 -1
- data/lib/review/epub2html.rb +6 -1
- data/lib/review/epubmaker.rb +12 -23
- data/lib/review/htmlbuilder.rb +36 -7
- data/lib/review/htmlutils.rb +7 -10
- data/lib/review/i18n.rb +1 -1
- data/lib/review/idgxmlbuilder.rb +51 -6
- data/lib/review/idgxmlmaker.rb +9 -14
- data/lib/review/index_builder.rb +653 -0
- data/lib/review/init.rb +5 -13
- data/lib/review/latexbuilder.rb +65 -4
- data/lib/review/logger.rb +2 -2
- data/lib/review/makerhelper.rb +11 -0
- data/lib/review/markdownbuilder.rb +19 -1
- data/lib/review/pdfmaker.rb +17 -36
- data/lib/review/plaintextbuilder.rb +48 -2
- data/lib/review/preprocessor.rb +5 -5
- data/lib/review/rstbuilder.rb +25 -6
- data/lib/review/sec_counter.rb +13 -0
- data/lib/review/textmaker.rb +4 -12
- data/lib/review/tocprinter.rb +2 -3
- data/lib/review/topbuilder.rb +26 -0
- data/lib/review/update.rb +7 -7
- data/lib/review/version.rb +1 -1
- data/lib/review/volumeprinter.rb +2 -3
- data/lib/review/webmaker.rb +9 -20
- data/review.gemspec +2 -2
- data/samples/sample-book/src/config.yml +1 -1
- data/samples/syntax-book/Gemfile +1 -1
- data/samples/syntax-book/config.yml +1 -1
- data/templates/latex/config.erb +27 -23
- data/templates/latex/review-jlreq/README.md +3 -1
- data/templates/latex/review-jlreq/review-base.sty +31 -15
- data/templates/latex/review-jlreq/review-jlreq.cls +8 -24
- data/templates/latex/review-jsbook/README.md +7 -5
- data/templates/latex/review-jsbook/review-base.sty +34 -16
- data/templates/latex/review-jsbook/review-jsbook.cls +4 -2
- data/templates/web/html/layout-html5.html.erb +1 -1
- data/test/assets/test_template.tex +3 -3
- data/test/assets/test_template_backmatter.tex +3 -3
- data/test/book_test_helper.rb +11 -5
- data/test/test_book.rb +54 -63
- data/test/test_book_chapter.rb +93 -52
- data/test/test_builder.rb +24 -15
- data/test/test_converter.rb +1 -0
- data/test/test_epub3maker.rb +2 -2
- data/test/test_epubmaker.rb +8 -0
- data/test/test_helper.rb +4 -1
- data/test/test_htmlbuilder.rb +627 -56
- data/test/test_htmlutils.rb +0 -12
- data/test/test_i18n.rb +33 -33
- data/test/test_idgxmlbuilder.rb +358 -11
- data/test/test_idgxmlmaker_cmd.rb +1 -1
- data/test/test_index.rb +62 -52
- data/test/test_indexbuilder.rb +52 -0
- data/test/test_latexbuilder.rb +547 -10
- data/test/test_latexbuilder_v2.rb +43 -5
- data/test/test_logger.rb +7 -7
- data/test/test_makerhelper.rb +0 -12
- data/test/test_markdownbuilder.rb +3 -0
- data/test/test_pdfmaker.rb +13 -12
- data/test/test_pdfmaker_cmd.rb +1 -1
- data/test/test_plaintextbuilder.rb +422 -7
- data/test/test_review_ext.rb +2 -1
- data/test/test_rstbuilder.rb +25 -1
- data/test/test_sec_counter.rb +156 -0
- data/test/test_textmaker_cmd.rb +1 -1
- data/test/test_topbuilder.rb +187 -10
- data/test/test_update.rb +10 -10
- data/test/test_webtocprinter.rb +12 -12
- 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/Makefile +3 -2
- data/vendor/jsclasses/create_archive.sh +5 -5
- data/vendor/jsclasses/jis/Makefile +3 -2
- data/vendor/jsclasses/jis/jsarticle.cls +22 -18
- data/vendor/jsclasses/jis/jsbook.cls +22 -18
- data/vendor/jsclasses/jis/jsclasses.dtx +94 -13
- data/vendor/jsclasses/jis/jsclasses.ins +15 -5
- data/vendor/jsclasses/jis/jslogo.ins +9 -0
- data/vendor/jsclasses/jis/jslogo.sty +1 -13
- data/vendor/jsclasses/jis/jspf.cls +22 -18
- data/vendor/jsclasses/jis/jsreport.cls +22 -18
- data/vendor/jsclasses/jis/jsverb.ins +9 -0
- data/vendor/jsclasses/jis/jsverb.sty +1 -13
- data/vendor/jsclasses/jis/kiyou.cls +22 -18
- data/vendor/jsclasses/jis/minijs.sty +65 -22
- data/vendor/jsclasses/jis/okumacro.ins +9 -0
- data/vendor/jsclasses/jis/okumacro.sty +1 -13
- 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 +22 -18
- data/vendor/jsclasses/jsbook.cls +22 -18
- data/vendor/jsclasses/jsclasses.dtx +94 -13
- data/vendor/jsclasses/jsclasses.ins +15 -5
- data/vendor/jsclasses/jsclasses.pdf +0 -0
- data/vendor/jsclasses/jslogo.ins +9 -0
- data/vendor/jsclasses/jslogo.pdf +0 -0
- data/vendor/jsclasses/jslogo.sty +1 -13
- data/vendor/jsclasses/jspf.cls +22 -18
- data/vendor/jsclasses/jsreport.cls +22 -18
- 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 +22 -18
- data/vendor/jsclasses/minijs.sty +68 -22
- data/vendor/jsclasses/okumacro.ins +9 -0
- data/vendor/jsclasses/okumacro.pdf +0 -0
- data/vendor/jsclasses/okumacro.sty +1 -13
- 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 +14 -6
- data/.rubocop_todo.yml +0 -7
- data/lib/review/book/compilable.rb +0 -174
|
@@ -38,7 +38,9 @@ texdocumentclass: ["review-jlreq", "クラスオプションたち(省略可
|
|
|
38
38
|
|
|
39
39
|
`media` の値によって表紙(config.yml の coverimage に指定した画像)の配置の有無は自動で切り替わりますが、`cover=true` とすれば必ず表紙を入れるようになります。
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
### 表紙画像のサイズの仕上がり紙面合わせ `cover_fit_page=<trueまたはfalse>`
|
|
42
|
+
|
|
43
|
+
上記の coverimage で指定する画像ファイルは、原寸を想定しているため、サイズが異なる場合にははみ出たり、小さすぎたりすることになります。できるだけ原寸で用意することを推奨しますが、`cover_fit_page=true` とすれば表紙画像を紙面の仕上がりサイズに合わせて拡縮します。
|
|
42
44
|
|
|
43
45
|
### 特定の用紙サイズ `paper=<用紙サイズ>`
|
|
44
46
|
|
|
@@ -1,22 +1,30 @@
|
|
|
1
|
-
\ProvidesClass{review-base}[2020/
|
|
1
|
+
\ProvidesClass{review-base}[2020/08/16]
|
|
2
2
|
% jlreq用基本設定
|
|
3
3
|
\def\recls@tmp{luatex}\ifx\recls@tmp\recls@driver
|
|
4
4
|
\hypersetup{
|
|
5
5
|
pdftitle={\review@booktitlename},
|
|
6
|
-
pdfauthor={\review@autnames},
|
|
6
|
+
pdfauthor={\ifdefined\review@autnames\review@autnames\fi},
|
|
7
7
|
pdfcreator={Re:VIEW \review@reviewversion, with LaTeX}
|
|
8
8
|
}
|
|
9
9
|
\else
|
|
10
|
-
\
|
|
11
|
-
\
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
%
|
|
18
|
-
|
|
19
|
-
|
|
10
|
+
\def\recls@tmp{ebook}\ifx\recls@cameraready\recls@tmp
|
|
11
|
+
\hypersetup{
|
|
12
|
+
pdftitle={\review@booktitlename},
|
|
13
|
+
pdfauthor={\ifdefined\review@autnames\review@autnames\fi},
|
|
14
|
+
pdfcreator={Re:VIEW \review@reviewversion, with LaTeX}
|
|
15
|
+
}
|
|
16
|
+
\else
|
|
17
|
+
\newcommand*\PDFDocumentInformation[1]{%
|
|
18
|
+
\AtBeginShipoutFirst{\special{pdf:docinfo <<#1>>}}}
|
|
19
|
+
\@onlypreamble\PDFDocumentInformation
|
|
20
|
+
\PDFDocumentInformation{
|
|
21
|
+
/Title (\review@booktitlename)
|
|
22
|
+
\ifdefined\review@autnames /Author (\review@autnames)\fi
|
|
23
|
+
% /Subject ()
|
|
24
|
+
% /Keywords (,,)
|
|
25
|
+
/Creator (Re:VIEW \review@reviewversion, with LaTeX)
|
|
26
|
+
}
|
|
27
|
+
\fi
|
|
20
28
|
\fi
|
|
21
29
|
|
|
22
30
|
\RequirePackage{pxrubrica}
|
|
@@ -26,6 +34,11 @@
|
|
|
26
34
|
|
|
27
35
|
\long\def\review@ifempty#1{\expandafter\ifx\expandafter\relax\detokenize{#1}\relax\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
|
|
28
36
|
|
|
37
|
+
%% pass bbox setting to extractbb of graphicx
|
|
38
|
+
\ifdefined\review@bbox
|
|
39
|
+
\def\Gin@pagebox{\review@bbox}
|
|
40
|
+
\fi
|
|
41
|
+
|
|
29
42
|
% コードリスト装飾のデフォルト
|
|
30
43
|
\newenvironment{reviewemlist}{%
|
|
31
44
|
\begin{tcolorbox}[skin=enhanced jigsaw,breakable,colback=black!10,colframe=black!10,boxrule=0mm,arc=0mm]\ifdefined\reviewlistxkanjiskip\setxkanjiskip{\reviewlistxkanjiskip}\fi\begin{alltt}}%
|
|
@@ -122,9 +135,9 @@
|
|
|
122
135
|
\newcommand{\reviewtableref}[2]{\review@intn@table #1}
|
|
123
136
|
\newcommand{\reviewlistref}[1]{\review@intn@list #1}
|
|
124
137
|
\newcommand{\reviewequationref}[1]{\review@intn@equation #1}
|
|
125
|
-
\newcommand{\reviewbibref}[2]{#1}
|
|
126
|
-
\newcommand{\reviewcolumnref}[2]{#1}
|
|
127
|
-
\newcommand{\reviewsecref}[2]{#1}
|
|
138
|
+
\newcommand{\reviewbibref}[2]{\hyperref[#2]{#1}}
|
|
139
|
+
\newcommand{\reviewcolumnref}[2]{#1}% XXX:ハイパーリンクにはreviewcolumn側の調整が必要
|
|
140
|
+
\newcommand{\reviewsecref}[2]{\hyperref[#2]{#1}}
|
|
128
141
|
|
|
129
142
|
\renewcommand{\contentsname}{\review@toctitle}
|
|
130
143
|
|
|
@@ -325,6 +338,9 @@
|
|
|
325
338
|
|
|
326
339
|
\if@reclscover
|
|
327
340
|
\ifdefined\review@coverimage
|
|
341
|
+
\ifrecls@coverfitpage
|
|
342
|
+
\def\review@coverimageoption{width=\paperwidth,height=\paperheight}
|
|
343
|
+
\fi
|
|
328
344
|
\def\reviewcoverpagecont{%
|
|
329
345
|
\expandafter\includefullpagegraphics\expandafter[\review@coverimageoption]{\review@coverimage}
|
|
330
346
|
\cleardoublepage
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
%#!ptex2pdf -l -u -ot '-synctex=1' test-rejlreqbk
|
|
2
|
-
% Copyright (c) 2018-
|
|
2
|
+
% Copyright (c) 2018-2020 Kenshi Muto.
|
|
3
3
|
%
|
|
4
4
|
% Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
5
|
% of this software and associated documentation files (the "Software"), to deal
|
|
@@ -20,8 +20,7 @@
|
|
|
20
20
|
% THE SOFTWARE.
|
|
21
21
|
|
|
22
22
|
\NeedsTeXFormat{LaTeX2e}
|
|
23
|
-
\ProvidesClass{review-jlreq}[
|
|
24
|
-
cls]
|
|
23
|
+
\ProvidesClass{review-jlreq}[2020/08/16 Re:VIEW 5.0 upLaTeX/LuaLaTeX class modified for jlreq.cls]
|
|
25
24
|
|
|
26
25
|
%% hook at end of reviewmacro
|
|
27
26
|
\let\@endofreviewmacrohook\@empty
|
|
@@ -65,11 +64,7 @@ cls]
|
|
|
65
64
|
\recls@error{Not define such hiddenfolio: #1}}\relax
|
|
66
65
|
%% set hiddenfolio preset
|
|
67
66
|
\expandafter\let\expandafter\@makehiddenfolio\csname @makehiddenfolio@#1\endcsname
|
|
68
|
-
|
|
69
|
-
%% TODO: would better to use \jlreqtrimmarkssetup
|
|
70
|
-
\@bannertoken{\hskip-5mm\smash{\hiddenfolio@font\@makehiddenfolio}}%
|
|
71
|
-
\def\jlreq@trimmarks@banner@even@yoko@top@left{\hskip-5mm\smash{\hiddenfolio@font\@makehiddenfolio}}%
|
|
72
|
-
\AddEverypageHook{\maketombowbox}%
|
|
67
|
+
\@makehiddenfolio
|
|
73
68
|
\fi}
|
|
74
69
|
|
|
75
70
|
\def\hiddenfolio@font{\reset@font
|
|
@@ -77,29 +72,16 @@ cls]
|
|
|
77
72
|
|
|
78
73
|
%% hiddenfolio=default
|
|
79
74
|
\@namedef{@makehiddenfolio@default}{%
|
|
80
|
-
\
|
|
81
|
-
\llap{\thepage\hspace{\dimexpr\recls@tombobleed}}%
|
|
82
|
-
\else
|
|
83
|
-
\rlap{\hspace{\dimexpr\paperwidth+\recls@tombobleed}\thepage}%
|
|
84
|
-
\fi}
|
|
75
|
+
\jlreqtrimmarkssetup{banner = { top-gutter = { \hiddenfolio@font\selectfont \thepage} } } }
|
|
85
76
|
|
|
86
77
|
%% hiddenfolio=marusho-ink
|
|
87
78
|
\@namedef{@makehiddenfolio@marusho-ink}{%
|
|
88
|
-
\gdef\recls@tombobleed{5mm}%
|
|
79
|
+
\gdef\recls@tombobleed{5mm}% XXX: won't work. should set via bleed_margin
|
|
89
80
|
\@nameuse{@makehiddenfolio@nikko-pc}}
|
|
90
81
|
|
|
91
82
|
%% hiddenfolio=nikko-pc
|
|
92
83
|
\@namedef{@makehiddenfolio@nikko-pc}{%
|
|
93
|
-
\
|
|
94
|
-
\edef\recls@tmp{\thepage}%
|
|
95
|
-
\lower\dimexpr4pt+\recls@tombobleed+.5\paperheight+5\p@\hbox{%
|
|
96
|
-
\vbox{\expandafter\@tfor\expandafter\recls@x\expandafter:\expandafter=\recls@tmp\do{%
|
|
97
|
-
\hbox to 1\zw{\hss\recls@x\hss}}}}}%
|
|
98
|
-
\ifodd\c@page
|
|
99
|
-
\rlap{\recls@hiddfolio}%
|
|
100
|
-
\else
|
|
101
|
-
\llap{\recls@hiddfolio\hspace{-\paperwidth}}%
|
|
102
|
-
\fi}
|
|
84
|
+
\jlreqtrimmarkssetup{banner = { center-gutter = { in = {\hiddenfolio@font\selectfont \thepage} } } } }
|
|
103
85
|
|
|
104
86
|
%% hiddenfolio=shippo
|
|
105
87
|
\@namedef{@makehiddenfolio@shippo}{%
|
|
@@ -110,12 +92,14 @@ cls]
|
|
|
110
92
|
\newif\if@pdfhyperlink \@pdfhyperlinkfalse
|
|
111
93
|
\newif\if@pdftombo \@pdftombofalse
|
|
112
94
|
\newif\if@reclscover \@reclscovertrue
|
|
95
|
+
\newif\ifrecls@coverfitpage \recls@coverfitpagefalse
|
|
113
96
|
\newif\ifrecls@serialpage \recls@serialpagefalse
|
|
114
97
|
\DeclareOptionX{cameraready}[print]{\gdef\recls@cameraready{#1}}
|
|
115
98
|
\DeclareOptionX{media}[print]{\gdef\recls@cameraready{#1}}
|
|
116
99
|
\DeclareOptionX{tombopaper}[a4]{\gdef\recls@tombopaper{#1}}
|
|
117
100
|
\DeclareOptionX{bleed_margin}[3mm]{\gdef\recls@tombobleed{#1}}
|
|
118
101
|
\DeclareOptionX{cover}[\@empty]{\gdef\recls@forcecover{#1}}
|
|
102
|
+
\DeclareOptionX{cover_fit_page}[false]{\csname recls@coverfitpage#1\endcsname}
|
|
119
103
|
\DeclareOptionX{startpage}[1]{\gdef\recls@startpage{\numexpr #1\relax}}
|
|
120
104
|
\DeclareOptionX{serial_pagination}[false]{\csname recls@serialpage#1\endcsname}
|
|
121
105
|
|
|
@@ -40,19 +40,21 @@ texdocumentclass: ["review-jsbook", "クラスオプションたち(省略可
|
|
|
40
40
|
|
|
41
41
|
`media` の値によって表紙(config.yml の coverimage に指定した画像)の配置の有無は自動で切り替わりますが、`cover=true` とすれば必ず表紙を入れるようになります。
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
### 表紙画像のサイズの仕上がり紙面合わせ `cover_fit_page=<trueまたはfalse>`
|
|
44
|
+
|
|
45
|
+
上記の coverimage で指定する画像ファイルは、原寸を想定しているため、サイズが異なる場合にははみ出たり、小さすぎたりすることになります。できるだけ原寸で用意することを推奨しますが、`cover_fit_page=true` とすれば表紙画像を紙面の仕上がりサイズに合わせて拡縮します。
|
|
44
46
|
|
|
45
47
|
### 特定の用紙サイズ `paper=<用紙サイズ>`
|
|
46
48
|
|
|
47
49
|
利用可能な特定の用紙サイズを指定できます。
|
|
48
50
|
|
|
49
|
-
* `a3`
|
|
51
|
+
* `a3`
|
|
50
52
|
* `a4` [デフォルト]
|
|
51
53
|
* `a5`
|
|
52
|
-
* `a6`
|
|
53
|
-
* `b4`:JIS B4
|
|
54
|
+
* `a6`
|
|
55
|
+
* `b4`:JIS B4
|
|
54
56
|
* `b5`:JIS B5
|
|
55
|
-
* `b6`:JIS B6
|
|
57
|
+
* `b6`:JIS B6
|
|
56
58
|
* `a4var`:210mm x 283mm
|
|
57
59
|
* `b5var`:182mm x 230mm
|
|
58
60
|
* `letter`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
\ProvidesClass{review-base}[2020/
|
|
1
|
+
\ProvidesClass{review-base}[2020/08/16]
|
|
2
2
|
\RequirePackage{ifthen}
|
|
3
3
|
\@ifundefined{Hy@Info}{% for jsbook.cls
|
|
4
4
|
\RequirePackage[dvipdfmx,bookmarks=true,bookmarksnumbered=true]{hyperref}
|
|
@@ -48,6 +48,11 @@
|
|
|
48
48
|
|
|
49
49
|
\long\def\review@ifempty#1{\expandafter\ifx\expandafter\relax\detokenize{#1}\relax\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
|
|
50
50
|
|
|
51
|
+
%% pass bbox setting to extractbb of graphicx
|
|
52
|
+
\ifdefined\review@bbox
|
|
53
|
+
\def\Gin@pagebox{\review@bbox}
|
|
54
|
+
\fi
|
|
55
|
+
|
|
51
56
|
\newenvironment{shadedb}{%
|
|
52
57
|
\def\FrameCommand{\fboxsep=\FrameSep \colorbox{shadecolorb}}%
|
|
53
58
|
\MakeFramed {\FrameRestore}}%
|
|
@@ -55,18 +60,6 @@
|
|
|
55
60
|
|
|
56
61
|
\newcommand{\parasep}{\vspace*{3zh}}
|
|
57
62
|
|
|
58
|
-
\newcommand*\PDFDocumentInformation[1]{%
|
|
59
|
-
\AtBeginShipoutFirst{\special{pdf:docinfo <<#1>>}}}
|
|
60
|
-
\@onlypreamble\PDFDocumentInformation
|
|
61
|
-
|
|
62
|
-
\PDFDocumentInformation{
|
|
63
|
-
/Title (\review@booktitlename)
|
|
64
|
-
/Author (\review@autnames)
|
|
65
|
-
% /Subject ()
|
|
66
|
-
% /Keywords (,,)
|
|
67
|
-
/Creator (Re:VIEW \review@reviewversion, with LaTeX)
|
|
68
|
-
}
|
|
69
|
-
|
|
70
63
|
\RequirePackage{pxrubrica}
|
|
71
64
|
\@ifpackagelater{pxrubrica}{2017/04/20}{%
|
|
72
65
|
\rubysetup{J}}{%
|
|
@@ -205,9 +198,9 @@
|
|
|
205
198
|
\newcommand{\reviewtableref}[2]{\review@intn@table #1}
|
|
206
199
|
\newcommand{\reviewlistref}[1]{\review@intn@list #1}
|
|
207
200
|
\newcommand{\reviewequationref}[1]{\review@intn@equation #1}
|
|
208
|
-
\newcommand{\reviewbibref}[2]{#1}
|
|
209
|
-
\newcommand{\reviewcolumnref}[2]{#1}
|
|
210
|
-
\newcommand{\reviewsecref}[2]{#1}
|
|
201
|
+
\newcommand{\reviewbibref}[2]{\hyperref[#2]{#1}}
|
|
202
|
+
\newcommand{\reviewcolumnref}[2]{#1}% XXX:ハイパーリンクにはreviewcolumn側の調整が必要
|
|
203
|
+
\newcommand{\reviewsecref}[2]{\hyperref[#2]{#1}}
|
|
211
204
|
|
|
212
205
|
\newenvironment{reviewpart}{%
|
|
213
206
|
\setcounter{section}{0}%
|
|
@@ -373,6 +366,28 @@
|
|
|
373
366
|
\renewcommand{\appendixname}{\reviewappendixname}
|
|
374
367
|
\fi
|
|
375
368
|
|
|
369
|
+
% PDF meta information
|
|
370
|
+
\def\recls@tmp{ebook}\ifx\recls@cameraready\recls@tmp
|
|
371
|
+
\hypersetup{
|
|
372
|
+
pdftitle={\review@booktitlename},
|
|
373
|
+
pdfauthor={\ifdefined\review@autnames\review@autnames\fi},
|
|
374
|
+
pdfcreator={Re:VIEW \review@reviewversion, with LaTeX}
|
|
375
|
+
}
|
|
376
|
+
\else
|
|
377
|
+
\newcommand*\PDFDocumentInformation[1]{%
|
|
378
|
+
\AtBeginShipoutFirst{\special{pdf:docinfo <<#1>>}}}
|
|
379
|
+
\@onlypreamble\PDFDocumentInformation
|
|
380
|
+
|
|
381
|
+
% for non hyperref. escaped character will be displayed funny...
|
|
382
|
+
\PDFDocumentInformation{
|
|
383
|
+
/Title (\review@booktitlename)
|
|
384
|
+
\ifdefined\review@autnames /Author (\review@autnames)\fi
|
|
385
|
+
% /Subject ()
|
|
386
|
+
% /Keywords (,,)
|
|
387
|
+
/Creator (Re:VIEW \review@reviewversion, with LaTeX)
|
|
388
|
+
}
|
|
389
|
+
\fi
|
|
390
|
+
|
|
376
391
|
%% maxwidth is the original width if it is less than linewidth
|
|
377
392
|
%% otherwise use linewidth (to make sure the graphics do not exceed the margin)
|
|
378
393
|
\def\maxwidth{%
|
|
@@ -417,6 +432,9 @@
|
|
|
417
432
|
|
|
418
433
|
\if@reclscover
|
|
419
434
|
\ifdefined\review@coverimage
|
|
435
|
+
\ifrecls@coverfitpage
|
|
436
|
+
\def\review@coverimageoption{width=\paperwidth,height=\paperheight}
|
|
437
|
+
\fi
|
|
420
438
|
\def\reviewcoverpagecont{%
|
|
421
439
|
\expandafter\includefullpagegraphics\expandafter[\review@coverimageoption]{\review@coverimage}
|
|
422
440
|
\cleardoublepage
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
%#!ptex2pdf -l -u -ot '-synctex=1' test-rejsbk
|
|
2
|
-
% Copyright (c) 2018-
|
|
2
|
+
% Copyright (c) 2018-2020 Munehiro Yamamoto, Kenshi Muto.
|
|
3
3
|
%
|
|
4
4
|
% Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
5
|
% of this software and associated documentation files (the "Software"), to deal
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
\NeedsTeXFormat{pLaTeX2e}
|
|
23
23
|
\ProvidesClass{review-jsbook}
|
|
24
|
-
[
|
|
24
|
+
[2020/08/16 v5.0 Re:VIEW pLaTeX class modified for jsbook.cls]
|
|
25
25
|
|
|
26
26
|
\def\recls@error{\ClassError{review-jsbook}}
|
|
27
27
|
\def\recls@warning{\ClassWarning{review-jsbook}}
|
|
@@ -226,8 +226,10 @@
|
|
|
226
226
|
|
|
227
227
|
%% 表紙・開始番号・通しノンブル
|
|
228
228
|
\newif\if@reclscover \@reclscovertrue
|
|
229
|
+
\newif\ifrecls@coverfitpage \recls@coverfitpagefalse
|
|
229
230
|
\newif\ifrecls@serialpage \recls@serialpagefalse
|
|
230
231
|
\DeclareOptionX{cover}[\@empty]{\gdef\recls@forcecover{#1}}
|
|
232
|
+
\DeclareOptionX{cover_fit_page}[false]{\csname recls@coverfitpage#1\endcsname}
|
|
231
233
|
\DeclareOptionX{startpage}[1]{\gdef\recls@startpage{\numexpr#1}}
|
|
232
234
|
\DeclareOptionX{serial_pagination}[false]{\csname recls@serialpage#1\endcsname}
|
|
233
235
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<% if @next.present? %><link rel="next" title="<%= h(@next_title)%>" href="<%= h(@next.id.to_s+"."+@book.config['htmlext']) %>" /><% end %>
|
|
12
12
|
<% if @prev.present? %><link rel="prev" title="<%= h(@prev_title)%>" href="<%= h(@prev.id.to_s+"."+@book.config['htmlext']) %>" /><% end %>
|
|
13
13
|
<meta name="generator" content="Re:VIEW" />
|
|
14
|
-
<title><%=
|
|
14
|
+
<title><%= @title %> | <%=h @book.config.name_of("booktitle")%></title>
|
|
15
15
|
</head>
|
|
16
16
|
<body<%= @body_ext %>>
|
|
17
17
|
<div class="book">
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
\documentclass[dvipdfmx]{review-jsbook}
|
|
2
2
|
\makeatletter
|
|
3
|
-
\def\review@reviewversion{
|
|
3
|
+
\def\review@reviewversion{4.2.0}
|
|
4
4
|
\def\review@texcompiler{uplatex}
|
|
5
5
|
\def\review@documentclass{review-jsbook}
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
\def\review@autnames{anonymous}
|
|
10
10
|
|
|
11
11
|
\def\review@titlepageauthors{anonymous 著}
|
|
12
|
-
\def\review@date{
|
|
12
|
+
\def\review@date{2020{-}07{-}11}
|
|
13
13
|
|
|
14
14
|
\def\review@bookname{sample}
|
|
15
15
|
\def\review@language{ja}
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
\def\review@usecovernombre{true}
|
|
39
39
|
\def\review@titlepage{true}
|
|
40
40
|
|
|
41
|
-
\def\review@pubhistories{
|
|
41
|
+
\def\review@pubhistories{2020年7月11日 発行}
|
|
42
42
|
\def\review@colophonnames{著 者 & anonymous \\
|
|
43
43
|
}
|
|
44
44
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
\documentclass[dvipdfmx]{review-jsbook}
|
|
2
2
|
\makeatletter
|
|
3
|
-
\def\review@reviewversion{
|
|
3
|
+
\def\review@reviewversion{4.2.0}
|
|
4
4
|
\def\review@texcompiler{uplatex}
|
|
5
5
|
\def\review@documentclass{review-jsbook}
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
\def\review@autnames{anonymous}
|
|
10
10
|
|
|
11
11
|
\def\review@titlepageauthors{anonymous 著}
|
|
12
|
-
\def\review@date{
|
|
12
|
+
\def\review@date{2020{-}07{-}11}
|
|
13
13
|
|
|
14
14
|
\def\review@bookname{sample}
|
|
15
15
|
\def\review@language{ja}
|
|
@@ -49,7 +49,7 @@ some ad content
|
|
|
49
49
|
}
|
|
50
50
|
\null}
|
|
51
51
|
|
|
52
|
-
\def\review@pubhistories{
|
|
52
|
+
\def\review@pubhistories{2020年7月11日 発行}
|
|
53
53
|
\def\review@colophonnames{著 者 & anonymous \\
|
|
54
54
|
}
|
|
55
55
|
|
data/test/book_test_helper.rb
CHANGED
|
@@ -13,13 +13,19 @@ module BookTestHelper
|
|
|
13
13
|
Dir.mktmpdir do |tmpdir|
|
|
14
14
|
Dir.chdir(tmpdir) do
|
|
15
15
|
dir = '.'
|
|
16
|
-
files.each_pair do |
|
|
17
|
-
path = File.join(dir,
|
|
16
|
+
files.each_pair do |filename, content|
|
|
17
|
+
path = File.join(dir, filename)
|
|
18
|
+
FileUtils.mkdir_p(File.dirname(path))
|
|
18
19
|
File.open(path, 'w') { |o| o.print content }
|
|
19
|
-
created_files[
|
|
20
|
+
created_files[filename] = path
|
|
20
21
|
end
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
conf_path = File.expand_path('config.yml', dir)
|
|
23
|
+
if File.exist?(conf_path)
|
|
24
|
+
config = ReVIEW::Configure.create(yamlfile: conf_path)
|
|
25
|
+
else
|
|
26
|
+
config = ReVIEW::Configure.values
|
|
27
|
+
end
|
|
28
|
+
book = Book::Base.new(dir, config: config)
|
|
23
29
|
yield(dir, book, created_files)
|
|
24
30
|
end
|
|
25
31
|
end
|
data/test/test_book.rb
CHANGED
|
@@ -23,8 +23,8 @@ class BookTest < Test::Unit::TestCase
|
|
|
23
23
|
test_const = "ReVIEW__BOOK__TEST__#{num}"
|
|
24
24
|
begin
|
|
25
25
|
Dir.mktmpdir do |dir|
|
|
26
|
-
File.
|
|
27
|
-
Book::Base.
|
|
26
|
+
File.write(File.join(dir, 'review-ext.rb'), "#{test_const} = #{num}")
|
|
27
|
+
Book::Base.new(dir)
|
|
28
28
|
assert_equal num, (Object.class_eval { const_get(test_const) })
|
|
29
29
|
end
|
|
30
30
|
ensure
|
|
@@ -159,12 +159,12 @@ class BookTest < Test::Unit::TestCase
|
|
|
159
159
|
end
|
|
160
160
|
|
|
161
161
|
def test_parse_chapters
|
|
162
|
-
mktmpbookdir
|
|
162
|
+
mktmpbookdir('CHAPS' => '') do |_dir, book, _files|
|
|
163
163
|
parts = book.instance_eval { parse_chapters }
|
|
164
164
|
assert_equal 0, parts.size
|
|
165
165
|
end
|
|
166
166
|
|
|
167
|
-
mktmpbookdir
|
|
167
|
+
mktmpbookdir('CHAPS' => "chapter1.re\nchapter2\n") do |dir, book, _files|
|
|
168
168
|
parts = book.instance_eval { parse_chapters }
|
|
169
169
|
assert_equal 1, parts.size
|
|
170
170
|
|
|
@@ -178,7 +178,7 @@ class BookTest < Test::Unit::TestCase
|
|
|
178
178
|
assert_equal expect, chaps
|
|
179
179
|
end
|
|
180
180
|
|
|
181
|
-
mktmpbookdir
|
|
181
|
+
mktmpbookdir('CHAPS' => <<EOC) do |dir, book, _files|
|
|
182
182
|
part1_chapter1.re
|
|
183
183
|
part1_chapter2.re
|
|
184
184
|
|
|
@@ -280,22 +280,22 @@ EOC
|
|
|
280
280
|
assert_equal nil, book.prefaces
|
|
281
281
|
end
|
|
282
282
|
|
|
283
|
-
mktmpbookdir
|
|
283
|
+
mktmpbookdir('PREDEF' => '') do |_dir, book, _files|
|
|
284
284
|
assert_equal nil, book.prefaces # XXX: OK?
|
|
285
285
|
end
|
|
286
286
|
|
|
287
|
-
mktmpbookdir
|
|
288
|
-
'chapter1.re' => '' do |_dir, book, files|
|
|
289
|
-
assert_kind_of
|
|
287
|
+
mktmpbookdir('PREDEF' => 'chapter1',
|
|
288
|
+
'chapter1.re' => '') do |_dir, book, files|
|
|
289
|
+
assert_kind_of(Book::Part, book.prefaces)
|
|
290
290
|
assert_equal '', book.prefaces.name
|
|
291
291
|
assert_equal 1, book.prefaces.chapters.size
|
|
292
292
|
assert_equal 'chapter1', book.prefaces.chapters.first.name
|
|
293
293
|
assert_equal files['chapter1.re'], book.prefaces.chapters.first.path
|
|
294
294
|
end
|
|
295
295
|
|
|
296
|
-
mktmpbookdir
|
|
297
|
-
'chapter1.re' => '', 'chapter2.re' => '' do |_dir, book, files|
|
|
298
|
-
assert_kind_of
|
|
296
|
+
mktmpbookdir('PREDEF' => "chapter1\n\nchapter2",
|
|
297
|
+
'chapter1.re' => '', 'chapter2.re' => '') do |_dir, book, files|
|
|
298
|
+
assert_kind_of(Book::Part, book.prefaces)
|
|
299
299
|
assert_equal '', book.prefaces.name
|
|
300
300
|
assert_equal 2, book.prefaces.chapters.size
|
|
301
301
|
assert_equal 'chapter1', book.prefaces.chapters.first.name
|
|
@@ -304,29 +304,29 @@ EOC
|
|
|
304
304
|
assert_equal files['chapter2.re'], book.prefaces.chapters.last.path
|
|
305
305
|
end
|
|
306
306
|
|
|
307
|
-
mktmpbookdir
|
|
308
|
-
'chapter1.re' => '', 'chapter2.re' => '' do |_dir, book, _files|
|
|
309
|
-
assert_kind_of
|
|
307
|
+
mktmpbookdir('PREDEF' => 'chapter1 chapter2',
|
|
308
|
+
'chapter1.re' => '', 'chapter2.re' => '') do |_dir, book, _files|
|
|
309
|
+
assert_kind_of(Book::Part, book.prefaces)
|
|
310
310
|
assert_equal '', book.prefaces.name
|
|
311
311
|
assert_equal 2, book.prefaces.chapters.size # XXX: OK?
|
|
312
312
|
end
|
|
313
313
|
|
|
314
|
-
mktmpbookdir
|
|
314
|
+
mktmpbookdir('PREDEF' => 'not_exist') do |_dir, book, _files|
|
|
315
315
|
assert_raises FileNotFound do
|
|
316
316
|
assert_equal nil, book.prefaces
|
|
317
317
|
end
|
|
318
318
|
end
|
|
319
319
|
|
|
320
|
-
mktmpbookdir
|
|
321
|
-
'chapter1.re' => '' do |_dir, book, _files|
|
|
322
|
-
assert_kind_of
|
|
320
|
+
mktmpbookdir('PREDEF' => 'chapter1.re',
|
|
321
|
+
'chapter1.re' => '') do |_dir, book, _files|
|
|
322
|
+
assert_kind_of(Book::Part, book.prefaces)
|
|
323
323
|
assert_equal '', book.prefaces.name
|
|
324
324
|
assert_equal 1, book.prefaces.chapters.size
|
|
325
325
|
end
|
|
326
326
|
|
|
327
|
-
mktmpbookdir
|
|
328
|
-
'chapter1.txt' => '' do |_dir, book, _files|
|
|
329
|
-
assert_kind_of
|
|
327
|
+
mktmpbookdir('PREDEF' => 'chapter1.txt',
|
|
328
|
+
'chapter1.txt' => '') do |_dir, book, _files|
|
|
329
|
+
assert_kind_of(Book::Part, book.prefaces)
|
|
330
330
|
assert_equal '', book.prefaces.name
|
|
331
331
|
assert_equal 1, book.prefaces.chapters.size
|
|
332
332
|
end
|
|
@@ -337,13 +337,13 @@ EOC
|
|
|
337
337
|
assert_equal nil, book.appendix
|
|
338
338
|
end
|
|
339
339
|
|
|
340
|
-
mktmpbookdir
|
|
340
|
+
mktmpbookdir('POSTDEF' => '') do |_dir, book, _files|
|
|
341
341
|
assert_equal nil, book.appendix
|
|
342
342
|
end
|
|
343
343
|
|
|
344
|
-
mktmpbookdir
|
|
345
|
-
'chapter1.re' => '' do |_dir, book, files|
|
|
346
|
-
assert_kind_of
|
|
344
|
+
mktmpbookdir('POSTDEF' => 'chapter1',
|
|
345
|
+
'chapter1.re' => '') do |_dir, book, files|
|
|
346
|
+
assert_kind_of(Book::Part, book.appendix)
|
|
347
347
|
assert_equal '', book.appendix.name
|
|
348
348
|
assert_equal 1, book.appendix.chapters.size
|
|
349
349
|
assert_equal 'chapter1', book.appendix.chapters.first.name
|
|
@@ -351,9 +351,9 @@ EOC
|
|
|
351
351
|
assert_equal 1, book.appendix.chapters.first.number
|
|
352
352
|
end
|
|
353
353
|
|
|
354
|
-
mktmpbookdir
|
|
355
|
-
'chapter1.re' => '', 'chapter2.re' => '' do |_dir, book, files|
|
|
356
|
-
assert_kind_of
|
|
354
|
+
mktmpbookdir('POSTDEF' => "chapter1\n\nchapter2",
|
|
355
|
+
'chapter1.re' => '', 'chapter2.re' => '') do |_dir, book, files|
|
|
356
|
+
assert_kind_of(Book::Part, book.appendix)
|
|
357
357
|
assert_equal '', book.appendix.name
|
|
358
358
|
assert_equal 2, book.appendix.chapters.size
|
|
359
359
|
assert_equal 'chapter1', book.appendix.chapters.first.name
|
|
@@ -364,32 +364,32 @@ EOC
|
|
|
364
364
|
assert_equal 2, book.appendix.chapters.last.number
|
|
365
365
|
end
|
|
366
366
|
|
|
367
|
-
mktmpbookdir
|
|
368
|
-
'chapter1.re' => '', 'chapter2.re' => '' do |_dir, book, _files|
|
|
369
|
-
assert_kind_of
|
|
367
|
+
mktmpbookdir('POSTDEF' => 'chapter1 chapter2',
|
|
368
|
+
'chapter1.re' => '', 'chapter2.re' => '') do |_dir, book, _files|
|
|
369
|
+
assert_kind_of(Book::Part, book.appendix)
|
|
370
370
|
assert_equal '', book.appendix.name
|
|
371
371
|
assert_equal 2, book.appendix.chapters.size # XXX: OK?
|
|
372
372
|
assert_equal 1, book.appendix.chapters.first.number
|
|
373
373
|
assert_equal 2, book.appendix.chapters.last.number
|
|
374
374
|
end
|
|
375
375
|
|
|
376
|
-
mktmpbookdir
|
|
376
|
+
mktmpbookdir('POSTDEF' => 'not_exist') do |_dir, book, _files|
|
|
377
377
|
assert_raises FileNotFound do
|
|
378
378
|
assert_equal nil, book.appendix
|
|
379
379
|
end
|
|
380
380
|
end
|
|
381
381
|
|
|
382
|
-
mktmpbookdir
|
|
383
|
-
'p01.re' => '= appendix' do |_dir, book, _files|
|
|
382
|
+
mktmpbookdir('catalog.yml' => "APPENDIX:\n - p01.re",
|
|
383
|
+
'p01.re' => '= appendix') do |_dir, book, _files|
|
|
384
384
|
assert_equal 'appendix', book.appendix.chapters.first.title
|
|
385
385
|
assert_equal 1, book.appendix.chapters.first.number
|
|
386
386
|
end
|
|
387
387
|
end
|
|
388
388
|
|
|
389
389
|
def test_postscripts
|
|
390
|
-
mktmpbookdir
|
|
391
|
-
'b01.re' => '= back' do |_dir, book, _files|
|
|
392
|
-
assert_kind_of
|
|
390
|
+
mktmpbookdir('catalog.yml' => "POSTDEF:\n - b01.re",
|
|
391
|
+
'b01.re' => '= back') do |_dir, book, _files|
|
|
392
|
+
assert_kind_of(Book::Part, book.postscripts)
|
|
393
393
|
assert_equal 1, book.postscripts.chapters.size
|
|
394
394
|
assert_equal 'back', book.postscripts.chapters.first.title
|
|
395
395
|
assert_equal nil, book.postscripts.chapters.first.number
|
|
@@ -407,7 +407,7 @@ EOC
|
|
|
407
407
|
assert tmp.empty?
|
|
408
408
|
end
|
|
409
409
|
|
|
410
|
-
mktmpbookdir
|
|
410
|
+
mktmpbookdir('CHAPS' => "ch1\nch2\n\nch3", 'PART' => "foo\nbar\n") do |_dir, book, _files|
|
|
411
411
|
parts = book.parts
|
|
412
412
|
assert_equal 2, parts.size
|
|
413
413
|
assert !book.part(0)
|
|
@@ -432,10 +432,10 @@ EOC
|
|
|
432
432
|
assert tmp.empty?
|
|
433
433
|
end
|
|
434
434
|
|
|
435
|
-
mktmpbookdir
|
|
435
|
+
mktmpbookdir('CHAPS' => "ch1.re\nch2.re\n\nch3.re\n",
|
|
436
436
|
'PART' => "foo\nbar\n",
|
|
437
437
|
'ch1.re' => "= ch1\n\n", 'ch2.re' => "= ch2\n\n",
|
|
438
|
-
'ch3.re' => "= ch3\n\n" do |_dir, book, _files|
|
|
438
|
+
'ch3.re' => "= ch3\n\n") do |_dir, book, _files|
|
|
439
439
|
parts = book.parts_in_file
|
|
440
440
|
assert_equal 0, parts.size
|
|
441
441
|
assert !book.part(0)
|
|
@@ -448,11 +448,11 @@ EOC
|
|
|
448
448
|
assert_equal [1, 2], tmp
|
|
449
449
|
end
|
|
450
450
|
|
|
451
|
-
mktmpbookdir
|
|
451
|
+
mktmpbookdir('CHAPS' => "ch1.re\nch2.re\n\nch3.re\n",
|
|
452
452
|
'PART' => "foo.re\nbar.re\n",
|
|
453
453
|
'foo.re' => "= part1\n\n", 'bar.re' => "= part2\n\n",
|
|
454
454
|
'ch1.re' => "= ch1\n\n", 'ch2.re' => "= ch2\n\n",
|
|
455
|
-
'ch3.re' => "= ch3\n\n" do |_dir, book, _files|
|
|
455
|
+
'ch3.re' => "= ch3\n\n") do |_dir, book, _files|
|
|
456
456
|
parts = book.parts_in_file
|
|
457
457
|
assert_equal 2, parts.size
|
|
458
458
|
assert !book.part(0)
|
|
@@ -467,7 +467,7 @@ EOC
|
|
|
467
467
|
end
|
|
468
468
|
|
|
469
469
|
def test_chapters
|
|
470
|
-
mktmpbookdir
|
|
470
|
+
mktmpbookdir('CHAPS' => "ch1\nch2\n\nch3") do |_dir, book, _files|
|
|
471
471
|
chapters = book.chapters
|
|
472
472
|
assert_equal 3, chapters.size
|
|
473
473
|
|
|
@@ -486,7 +486,7 @@ EOC
|
|
|
486
486
|
end
|
|
487
487
|
end
|
|
488
488
|
|
|
489
|
-
mktmpbookdir
|
|
489
|
+
mktmpbookdir('CHAPS' => "ch1.txt\nch2.txt\n\nch3.txt") do |_dir, book, _files|
|
|
490
490
|
chapters = book.chapters
|
|
491
491
|
assert_equal 3, chapters.size
|
|
492
492
|
|
|
@@ -507,7 +507,7 @@ EOC
|
|
|
507
507
|
end
|
|
508
508
|
|
|
509
509
|
def test_next_chapter
|
|
510
|
-
mktmpbookdir
|
|
510
|
+
mktmpbookdir('CHAPS' => "ch1\nch2") do |_dir, book, _files|
|
|
511
511
|
chapter = book.chapter('ch1')
|
|
512
512
|
assert_equal book.chapter('ch2'), book.next_chapter(chapter)
|
|
513
513
|
|
|
@@ -517,7 +517,7 @@ EOC
|
|
|
517
517
|
end
|
|
518
518
|
|
|
519
519
|
def test_prev_chapter
|
|
520
|
-
mktmpbookdir
|
|
520
|
+
mktmpbookdir('CHAPS' => "ch1\nch2") do |_dir, book, _files|
|
|
521
521
|
chapter = book.chapter('ch2')
|
|
522
522
|
assert_equal book.chapter('ch1'), book.prev_chapter(chapter)
|
|
523
523
|
|
|
@@ -534,14 +534,14 @@ EOC
|
|
|
534
534
|
assert_equal 0, book.volume.lines
|
|
535
535
|
end
|
|
536
536
|
|
|
537
|
-
mktmpbookdir
|
|
537
|
+
mktmpbookdir('CHAPS' => 'chapter1.re', 'chapter1.re' => '12345') do |_dir, book, _files|
|
|
538
538
|
assert book.volume
|
|
539
539
|
assert book.volume.bytes > 0
|
|
540
540
|
assert book.volume.chars > 0
|
|
541
541
|
assert book.volume.lines > 0
|
|
542
542
|
end
|
|
543
543
|
|
|
544
|
-
mktmpbookdir
|
|
544
|
+
mktmpbookdir('preface.re' => '12345') do |dir, _book, _files|
|
|
545
545
|
Dir.chdir(dir) do
|
|
546
546
|
book2 = Book::Base.new('.')
|
|
547
547
|
assert book2.volume
|
|
@@ -560,12 +560,9 @@ EOC
|
|
|
560
560
|
end
|
|
561
561
|
|
|
562
562
|
def test_contentdir
|
|
563
|
-
mktmpbookdir('config.yml' => "contentdir: content\n",
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
book = Book::Base.new(dir)
|
|
567
|
-
config_file = File.join(dir, 'config.yml')
|
|
568
|
-
book.load_config(config_file)
|
|
563
|
+
mktmpbookdir('config.yml' => "contentdir: content\n",
|
|
564
|
+
'catalog.yml' => "CHAPS:\n - ch01.re\n",
|
|
565
|
+
'content/ch01.re' => "foo\n") do |_dir, book, _files|
|
|
569
566
|
assert_equal "foo\n", book.chapters[0].content
|
|
570
567
|
end
|
|
571
568
|
end
|
|
@@ -578,19 +575,13 @@ EOC
|
|
|
578
575
|
end
|
|
579
576
|
|
|
580
577
|
def test_page_metric_config
|
|
581
|
-
mktmpbookdir('config.yml' => "bookname: book\npage_metric: B5\n") do |
|
|
582
|
-
book = Book::Base.new(dir)
|
|
583
|
-
config_file = File.join(dir, 'config.yml')
|
|
584
|
-
book.load_config(config_file)
|
|
578
|
+
mktmpbookdir('config.yml' => "bookname: book\npage_metric: B5\n") do |_dir, book, _files|
|
|
585
579
|
assert_equal ReVIEW::Book::PageMetric::B5, book.page_metric
|
|
586
580
|
end
|
|
587
581
|
end
|
|
588
582
|
|
|
589
583
|
def test_page_metric_config_array
|
|
590
|
-
mktmpbookdir('config.yml' => "bookname: book\npage_metric: [50, 40, 36, 40, 1]\n") do |
|
|
591
|
-
book = Book::Base.new(dir)
|
|
592
|
-
config_file = File.join(dir, 'config.yml')
|
|
593
|
-
book.load_config(config_file)
|
|
584
|
+
mktmpbookdir('config.yml' => "bookname: book\npage_metric: [50, 40, 36, 40, 1]\n") do |_dir, book, _files|
|
|
594
585
|
assert_equal ReVIEW::Book::PageMetric::B5, book.page_metric
|
|
595
586
|
end
|
|
596
587
|
end
|