review-retrovert 0.9.7 → 0.9.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.dockerignore +9 -0
- data/.editorconfig +3 -0
- data/.github/workflows/retrovert.yml +20 -5
- data/.gitignore +1 -0
- data/.vscode/launch.json +48 -0
- data/Gemfile.lock +13 -4
- data/Makefile +24 -0
- data/docker/review.Dockerfile +10 -0
- data/lib/review/retrovert/converter.rb +374 -111
- data/lib/review/retrovert/reviewcompat.rb +57 -0
- data/lib/review/retrovert/reviewdef.rb +70 -0
- data/lib/review/retrovert/sty/{ird.sty → ird.sty.erb} +9 -1
- data/lib/review/retrovert/sty/review-retrovert-custom.sty.erb +6 -0
- data/lib/review/retrovert/utils.rb +35 -0
- data/lib/review/retrovert/version.rb +1 -1
- data/lib/review/retrovert/yamlconfig.rb +0 -1
- data/package-lock.json +6 -0
- data/package.json +1 -0
- data/review-retrovert.gemspec +5 -1
- data/testdata/mybook/.gitignore +3 -1
- data/testdata/mybook/.textlintrc +11 -0
- data/testdata/mybook/Rakefile +8 -0
- data/testdata/mybook/catalog.yml +36 -10
- data/testdata/mybook/config-starter.yml +134 -9
- data/testdata/mybook/config.yml +44 -15
- data/testdata/mybook/contents/00-preface.re +48 -2
- data/testdata/mybook/contents/01-install.re +38 -5
- data/testdata/mybook/contents/02-tutorial.re +333 -113
- data/testdata/mybook/contents/03-syntax.re +2370 -373
- data/testdata/mybook/contents/04-customize.re +424 -88
- data/testdata/mybook/contents/05-faq.re +288 -10
- data/testdata/mybook/contents/06-bestpractice.re +431 -59
- data/testdata/mybook/contents/91-compare.re +402 -2
- data/testdata/mybook/contents/92-filelist.re +14 -8
- data/testdata/mybook/contents/93-background.re +10 -10
- data/testdata/mybook/contents/99-postface.re +2 -1
- data/testdata/mybook/contents/r0-root.re +1 -1
- data/testdata/mybook/css/webstyle.css +180 -2
- data/testdata/mybook/data/terms.txt +3 -0
- data/testdata/mybook/data/words.txt +15 -0
- data/testdata/mybook/images/03-syntax/index-page.png +0 -0
- data/testdata/mybook/images/03-syntax/order-detail.png +0 -0
- data/testdata/mybook/images/04-customize/section_decoration_samples.png +0 -0
- data/testdata/mybook/images/05-faq/dummy-image.png +0 -0
- data/testdata/mybook/images/06-bestpractice/section_title_wlines.png +0 -0
- data/testdata/mybook/images/avatar-b.png +0 -0
- data/testdata/mybook/images/avatar-g.png +0 -0
- data/testdata/mybook/images/avatar-r.png +0 -0
- data/testdata/mybook/images/caution-icon.png +0 -0
- data/testdata/mybook/images/info-icon.png +0 -0
- data/testdata/mybook/images/warning-icon.png +0 -0
- data/testdata/mybook/layouts/layout.html5.erb +3 -1
- data/testdata/mybook/layouts/layout.tex.erb +265 -379
- data/testdata/mybook/layouts/layout.tex.erb.orig +386 -0
- data/testdata/mybook/lib/ruby/review-book.rb +64 -0
- data/testdata/mybook/lib/ruby/review-builder.rb +902 -63
- data/testdata/mybook/lib/ruby/review-compiler.rb +675 -22
- data/testdata/mybook/lib/ruby/review-epubbuilder.rb +33 -0
- data/testdata/mybook/lib/ruby/review-epubmaker.rb +10 -7
- data/testdata/mybook/lib/ruby/review-htmlbuilder.rb +354 -66
- data/testdata/mybook/lib/ruby/review-latexbuilder.rb +429 -146
- data/testdata/mybook/lib/ruby/review-maker.rb +117 -6
- data/testdata/mybook/lib/ruby/review-markdownbuilder.rb +945 -0
- data/testdata/mybook/lib/ruby/review-markdownmaker.rb +91 -0
- data/testdata/mybook/lib/ruby/review-monkeypatch.rb +2 -0
- data/testdata/mybook/lib/ruby/review-pdfmaker.rb +160 -82
- data/testdata/mybook/lib/ruby/review-webmaker.rb +20 -5
- data/testdata/mybook/lib/tasks/review.rake +14 -0
- data/testdata/mybook/lib/tasks/starter.rake +148 -4
- data/testdata/mybook/sty/indexstyle.ist +25 -0
- data/testdata/mybook/sty/mytextsize.sty +29 -0
- data/testdata/mybook/sty/mytitlepage.sty +34 -11
- data/testdata/mybook/sty/review-base.sty +276 -0
- data/testdata/mybook/sty/starter-codeblock.sty +237 -106
- data/testdata/mybook/sty/starter-color.sty +72 -17
- data/testdata/mybook/sty/starter-heading.sty +60 -13
- data/testdata/mybook/sty/starter-misc.sty +894 -0
- data/testdata/mybook/sty/starter-note.sty +67 -14
- data/testdata/mybook/sty/starter-talklist.sty +105 -0
- data/testdata/mybook/sty/starter-util.sty +35 -0
- data/testdata/mybook/sty/starter.sty +8 -526
- metadata +80 -4
@@ -1,4 +1,4 @@
|
|
1
|
-
= あとがき
|
1
|
+
= あとがき / おわりに
|
2
2
|
|
3
3
|
いかがだったでしょうか。
|
4
4
|
感想や質問は随時受けつけています。
|
@@ -36,3 +36,4 @@
|
|
36
36
|
* 『@<hlink>{https://kauplan.org/books/errmsg/, Rubyのエラーメッセージが読み解けるようになる本}』(技術書典6)
|
37
37
|
* 『@<hlink>{https://kauplan.org/books/sql/, わかりみSQL}』(技術書典7)
|
38
38
|
* 『@<hlink>{https://kauplan.org/books/pymagic/, Pythonの黒魔術}』(技術書典8)
|
39
|
+
* 『@<hlink>{https://techbookfest.org/product/6602586671022080?productVariantID=6362324925415424, カウプランレポート vol.01}』(技術書典10)
|
@@ -155,6 +155,21 @@ h2.numbox > span.secno {
|
|
155
155
|
color: #fff;
|
156
156
|
margin: 0 20px 0 0;
|
157
157
|
}
|
158
|
+
h2.circle {
|
159
|
+
vertical-align: middle;
|
160
|
+
}
|
161
|
+
h2.circle > span.secno {
|
162
|
+
display: inline-block;
|
163
|
+
background: #08c;
|
164
|
+
color: #fff;
|
165
|
+
border-radius: 50%;
|
166
|
+
width: 3.0em;
|
167
|
+
height: 2.1em;
|
168
|
+
text-align: center;
|
169
|
+
vertical-align: middle;
|
170
|
+
padding-top: 0.9em;
|
171
|
+
margin-right: 0.3em;
|
172
|
+
}
|
158
173
|
h3 {
|
159
174
|
margin: 40px 0 5px 0;
|
160
175
|
}
|
@@ -182,8 +197,7 @@ pre, code, tt, kdb, var, samp {
|
|
182
197
|
font-family: 'Monaco', 'Consolas', 'Courier New', monospace;
|
183
198
|
font-size: 0.875;
|
184
199
|
}
|
185
|
-
pre.list, pre.emlist {
|
186
|
-
background: #eee;
|
200
|
+
pre.list, pre.emlist, pre.output {
|
187
201
|
padding: 3px 6px;
|
188
202
|
margin: 0;
|
189
203
|
border: solid 1px #ddd;
|
@@ -192,9 +206,19 @@ pre.list, pre.emlist {
|
|
192
206
|
white-space: pre-wrap;
|
193
207
|
line-height: 150%;
|
194
208
|
}
|
209
|
+
pre.list, pre.emlist {
|
210
|
+
background: #eee;
|
211
|
+
}
|
212
|
+
pre.output {
|
213
|
+
background: #fff;
|
214
|
+
}
|
215
|
+
|
216
|
+
|
195
217
|
code.inline-code {
|
196
218
|
background: #eee;
|
197
219
|
padding: 2px 4px;
|
220
|
+
white-space: pre;
|
221
|
+
border-radius: 2px;
|
198
222
|
}
|
199
223
|
h1 > code.inline-code, h2 > code.inline-code, h3 > code.inline-code, h4 > code.inline-code, h5 > code.inline-code {
|
200
224
|
background: none;
|
@@ -244,6 +268,10 @@ div.cmd-code > pre > .indentbar {
|
|
244
268
|
margin: 0 0 5px 0;
|
245
269
|
display: inline-block;
|
246
270
|
}
|
271
|
+
p.caption {
|
272
|
+
display: block;
|
273
|
+
}
|
274
|
+
|
247
275
|
.caption:before {
|
248
276
|
content: '\25BC '; /* ▼ */
|
249
277
|
color: #777;
|
@@ -287,6 +315,14 @@ div.abstract {
|
|
287
315
|
}
|
288
316
|
|
289
317
|
|
318
|
+
div.chapterauthor {
|
319
|
+
text-align: right;
|
320
|
+
}
|
321
|
+
div.chapterauthor::before {
|
322
|
+
content: "[著]";
|
323
|
+
}
|
324
|
+
|
325
|
+
|
290
326
|
|
291
327
|
div.column {
|
292
328
|
border: solid 1px #08c;
|
@@ -320,6 +356,43 @@ div.note > h5:before {
|
|
320
356
|
|
321
357
|
|
322
358
|
|
359
|
+
.miniblock {
|
360
|
+
border: solid 1px gray;
|
361
|
+
border-radius: 2px;
|
362
|
+
margin-top: 5ex;
|
363
|
+
margin-bottom: 5ex;
|
364
|
+
padding: 10px 15px 10px 15px;
|
365
|
+
background-repeat: no-repeat;
|
366
|
+
background-size: 64px;
|
367
|
+
background-position: 15px 15px;
|
368
|
+
font-size: small;
|
369
|
+
}
|
370
|
+
|
371
|
+
.miniblock.miniblock-info {
|
372
|
+
padding-left: 100px;
|
373
|
+
background-image: url("../images/info-icon.png")
|
374
|
+
}
|
375
|
+
|
376
|
+
.miniblock.miniblock-warning {
|
377
|
+
padding-left: 100px;
|
378
|
+
background-image: url("../images/warning-icon.png")
|
379
|
+
}
|
380
|
+
|
381
|
+
.miniblock.miniblock-caution {
|
382
|
+
padding-left: 100px;
|
383
|
+
background-image: url("../images/caution-icon.png")
|
384
|
+
}
|
385
|
+
|
386
|
+
.miniblock-caption {
|
387
|
+
font-family: sans-serif;
|
388
|
+
font-size: medium;
|
389
|
+
font-weight: bold;
|
390
|
+
margin-top: 0.5ex;
|
391
|
+
margin-bottom: -0.5ex;
|
392
|
+
}
|
393
|
+
|
394
|
+
|
395
|
+
|
323
396
|
div.table {
|
324
397
|
margin: 30px auto;
|
325
398
|
text-align: center;
|
@@ -339,6 +412,15 @@ div.table > table th {
|
|
339
412
|
background: #ddd;
|
340
413
|
}
|
341
414
|
|
415
|
+
div.table.table-nohline > table, div.table.table-nohline > table {
|
416
|
+
border: solid 1px #ccc !important;
|
417
|
+
}
|
418
|
+
div.table.table-nohline > table td, div.table.table-nohline > table th {
|
419
|
+
border: none;
|
420
|
+
}
|
421
|
+
div.table > table tr.hline, div.table > table tr.hline {
|
422
|
+
border-bottom: solid 1px #ccc;
|
423
|
+
}
|
342
424
|
|
343
425
|
|
344
426
|
strong {
|
@@ -397,6 +479,98 @@ p.footnote {
|
|
397
479
|
}
|
398
480
|
|
399
481
|
|
482
|
+
.talk-list {
|
483
|
+
list-style-type: none;
|
484
|
+
padding-left: 0px;
|
485
|
+
margin-top: 20px;
|
486
|
+
margin-bottom: 20px;
|
487
|
+
}
|
488
|
+
.talk-item {
|
489
|
+
margin-top: 10px;
|
490
|
+
margin-bottom: 10px;
|
491
|
+
}
|
492
|
+
.talk-item::after {
|
493
|
+
content: "";
|
494
|
+
display: block;
|
495
|
+
clear: both;
|
496
|
+
}
|
497
|
+
.talk-image {
|
498
|
+
width: 60px;
|
499
|
+
}
|
500
|
+
.talk-chara {
|
501
|
+
float: left;
|
502
|
+
}
|
503
|
+
.talk-name {
|
504
|
+
font-family: sans-serif;
|
505
|
+
font-weight: normal;
|
506
|
+
padding-top: 5px;
|
507
|
+
display: inline-block;
|
508
|
+
}
|
509
|
+
.talk-name::after {
|
510
|
+
content: ":";
|
511
|
+
display: inline-block;
|
512
|
+
width: 1.5em;
|
513
|
+
}
|
514
|
+
.talk-text {
|
515
|
+
display: block;
|
516
|
+
margin-left: 100px;
|
517
|
+
padding-top: 5px;
|
518
|
+
}
|
519
|
+
.talk-text > p:first-child {
|
520
|
+
/*margin-top: 0;*/
|
521
|
+
display: inline;
|
522
|
+
}
|
523
|
+
.talk-text::before {
|
524
|
+
content: "「";
|
525
|
+
display: inline-block;
|
526
|
+
text-align: right;
|
527
|
+
width: 1em;
|
528
|
+
margin-left: -1em;
|
529
|
+
}
|
530
|
+
.talk-text::after {
|
531
|
+
content: "」";
|
532
|
+
display: inline-block;
|
533
|
+
text-align: left;
|
534
|
+
width: 1em;
|
535
|
+
}
|
536
|
+
|
537
|
+
|
538
|
+
dl.desc-list {
|
539
|
+
margin-top: 20px;
|
540
|
+
margin-bottom: 20px;
|
541
|
+
}
|
542
|
+
dl.desc-list > dl.desc-list {
|
543
|
+
margin-top: 10px;
|
544
|
+
margin-bottom: 10px;
|
545
|
+
}
|
546
|
+
dt.desc {
|
547
|
+
display: inline-block;
|
548
|
+
font-weight: normal;
|
549
|
+
font-family: sans-serif;
|
550
|
+
}
|
551
|
+
dd.desc {
|
552
|
+
display: block;
|
553
|
+
margin-left: 40px;
|
554
|
+
}
|
555
|
+
dd.desc > p:first-child {
|
556
|
+
margin-top: 0;
|
557
|
+
}
|
558
|
+
dl.desc-list.item-bold > dt.desc {
|
559
|
+
font-weight: bold;
|
560
|
+
}
|
561
|
+
dl.desc-list.compact > dt.desc {
|
562
|
+
margin-right: 1em;
|
563
|
+
float: left;
|
564
|
+
}
|
565
|
+
dl.desc-list.compact > dd.desc {
|
566
|
+
margin-left: 80px;
|
567
|
+
}
|
568
|
+
dl.desc-list.compact > dd.desc::after {
|
569
|
+
content: "";
|
570
|
+
display: block;
|
571
|
+
clear: both;
|
572
|
+
}
|
573
|
+
|
400
574
|
|
401
575
|
.sampleoutput {
|
402
576
|
margin: 15px 0;
|
@@ -472,6 +646,10 @@ p.footnote {
|
|
472
646
|
.balloon:before {
|
473
647
|
content: "←";
|
474
648
|
}
|
649
|
+
.term {
|
650
|
+
font-family: sans-serif;
|
651
|
+
}
|
652
|
+
|
475
653
|
|
476
654
|
.rebuild {
|
477
655
|
background: #eee;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
##
|
4
|
+
## キーに対応した単語の辞書ファイル。@<w>{} と @<wb>{} で使う。
|
5
|
+
## 例: 「@<w>{apple}」が「アップル」に展開される。
|
6
|
+
##
|
7
|
+
## ・文字コードはUTF-8。
|
8
|
+
## ・キーと単語は1文字以上のタブ文字で区切る(半角空白では区切れない)。
|
9
|
+
## ・行頭が `#` なら行コメント。
|
10
|
+
##
|
11
|
+
|
12
|
+
apple アップル
|
13
|
+
amazon アマゾン
|
14
|
+
google グーグル
|
15
|
+
facebook フェイスブック
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -60,9 +60,11 @@ body_ext = @body_ext || (@error ? ' class="has-compile-error"' : nil)
|
|
60
60
|
<p>Traceback:</p>
|
61
61
|
<pre class="compile-error-backtrace"><% @error.backtrace.each do |x| %><%=h x %><%= "\n" %><% end %></pre>
|
62
62
|
|
63
|
-
<%
|
63
|
+
<% elsif @toc %>
|
64
64
|
<h1><%=h @book.config.name_of("booktitle") %></h1>
|
65
65
|
<%= @toc %>
|
66
|
+
<% else %>
|
67
|
+
<%= @body %>
|
66
68
|
<% end %>
|
67
69
|
</main>
|
68
70
|
<nav class="page-navi">
|
@@ -1,21 +1,23 @@
|
|
1
1
|
<% # -*- coding: utf-8 -*-
|
2
2
|
|
3
|
-
## based on Re:VIEW 2.
|
3
|
+
## based on Re:VIEW 2.5
|
4
4
|
|
5
5
|
def xelatex?()
|
6
6
|
@texcompiler == 'xelatex'
|
7
7
|
end
|
8
8
|
|
9
|
+
## I18n用文字列
|
10
|
+
i18n = proc {|key, *args| escape_latex(I18n.t(key, *args)) }
|
11
|
+
i18n_t = proc {|key, *args| I18n.t(key, *args) }
|
12
|
+
|
13
|
+
## dviコマンド
|
9
14
|
case @dvicommand
|
10
15
|
when 'dvipdfmx'
|
11
16
|
dvipdfmx = 'dvipdfmx'
|
12
|
-
dvipdfmx_ = 'dvipdfmx,'
|
13
17
|
when nil, ''
|
14
18
|
dvipdfmx = ''
|
15
|
-
dvipdfmx_ = ''
|
16
19
|
else
|
17
20
|
dvipdfmx = 'dvipdfmx'
|
18
|
-
dvipdfmx_ = 'dvipdfmx,'
|
19
21
|
end
|
20
22
|
|
21
23
|
pagesize = @config['starter']['pagesize'] # A5 or B5
|
@@ -26,46 +28,85 @@ docopts << fontsize # 9pt or 10pt
|
|
26
28
|
|
27
29
|
%>
|
28
30
|
\documentclass[<%= docopts.join(',') %>]{<%= @documentclass %>}
|
29
|
-
% %% fixes to LaTeX2e
|
30
|
-
% \usepackage{fix-cm}[2006/09/13 v1.1m]
|
31
|
-
% \usepackage{fixltx2e}[2006/09/13 v1.1m]
|
32
31
|
|
33
32
|
|
34
33
|
%% copy values from 'config-starter.yml'
|
34
|
+
<%-
|
35
|
+
def to_val(v)
|
36
|
+
case v
|
37
|
+
when nil ; ''
|
38
|
+
when true ; 'Y'
|
39
|
+
when false ; ''
|
40
|
+
when Numeric ; v.to_s
|
41
|
+
when /\A(\d+(?:\.\d+)?)(mm|cm|pt)\z/ ; "#{$1}true#{$2}"
|
42
|
+
when /\A(\d+(?:\.\d+)?)(zw|zh)\z/ ; xelatex?() ? "#{$1}\\#{$2}" : v
|
43
|
+
else ; escape(v.to_s)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
-%>
|
35
47
|
\makeatletter
|
36
|
-
<%-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
<%-
|
47
|
-
|
48
|
+
<%-
|
49
|
+
length_keys = ['caption_needspace', 'program_widen', 'terminal_widen', 'output_widen']
|
50
|
+
@config['starter'].each do |k, v|
|
51
|
+
x = k.gsub('_', '@')
|
52
|
+
if k =~ /_default_options\z/
|
53
|
+
x = $`.gsub('_', '@')
|
54
|
+
dict = v
|
55
|
+
dict.each do |k_, v_|
|
56
|
+
-%>
|
57
|
+
\def\starter@<%= x %>@<%= k_.gsub('_', '@') %>{<%= to_val(v_) %>}
|
58
|
+
<%-
|
59
|
+
end
|
60
|
+
elsif v.is_a?(Hash) || v.is_a?(Array)
|
61
|
+
next
|
62
|
+
elsif length_keys.include?(k)
|
63
|
+
#v = v.sub(/\b(z[wh])$/, '\\zw')
|
64
|
+
-%>
|
48
65
|
%\def\<%= x %>{<%= v %>}
|
49
|
-
\newlength{
|
50
|
-
\setlength{
|
51
|
-
<%-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
<%-
|
66
|
+
\newlength{\starter@<%= x %>}
|
67
|
+
\setlength{\starter@<%= x %>}{<%= to_val(v) %>}
|
68
|
+
<%-
|
69
|
+
else
|
70
|
+
-%>
|
71
|
+
\def\starter@<%= x %>{<%= to_val(v) %>}
|
72
|
+
<%-
|
73
|
+
end#if
|
74
|
+
end#each
|
75
|
+
-%>
|
56
76
|
\makeatother
|
57
77
|
|
58
|
-
|
59
78
|
%% environment values for Starter
|
60
79
|
\makeatletter
|
61
|
-
<%-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
80
|
+
<%-
|
81
|
+
ENV.each do |k, v|
|
82
|
+
if k =~ /^STARTER_\w+$/
|
83
|
+
-%>
|
84
|
+
\def\<%= k.gsub('_', '@') %>{<%= v %>}%
|
85
|
+
<%-
|
86
|
+
end
|
87
|
+
end
|
88
|
+
##
|
89
|
+
target = ENV['STARTER_TARGET']
|
90
|
+
if target && !target.strip.empty?
|
91
|
+
-%>
|
92
|
+
\def\starter@target{<%= target.strip %>} % $STARTER_TARGET=<%- target -%>
|
93
|
+
<%-
|
94
|
+
end
|
95
|
+
##
|
96
|
+
case ENV['STARTER_EXCLUDE_MOUSESELECT']
|
97
|
+
when 'on'
|
98
|
+
-%>
|
99
|
+
\def\starter@exclude@mouseselect{Y} % $STARTER_EXCLUDE_MOUSESELECT=on
|
100
|
+
<%-
|
101
|
+
when 'off'
|
102
|
+
-%>
|
103
|
+
\def\starter@exclude@mouseselect{} % $STARTER_EXCLUDE_MOUSESELECT=off
|
104
|
+
<%-
|
105
|
+
end
|
106
|
+
-%>
|
66
107
|
\makeatother
|
67
108
|
|
68
|
-
\usepackage{mytextsize}
|
109
|
+
\usepackage{mytextsize} % 本文の幅と高さを設定
|
69
110
|
|
70
111
|
<%- if @texcompiler == "uplatex" -%>
|
71
112
|
\usepackage[deluxe,uplatex]{otf}
|
@@ -74,283 +115,98 @@ docopts << fontsize # 9pt or 10pt
|
|
74
115
|
<%- else -%>
|
75
116
|
\usepackage[deluxe]{otf}
|
76
117
|
<%- end -%>
|
77
|
-
\usepackage{caption}
|
78
|
-
\usepackage{suffix}
|
79
|
-
\usepackage[T1]{fontenc}\usepackage{textcomp}%T1/TS1
|
80
|
-
%\usepackage{lmodern}
|
81
|
-
<%- if ! ENV['STARTER_DRAFT'].to_s.empty? || @config['starter']['draft'] -%>
|
82
|
-
\usepackage[<%= dvipdfmx_ %>draft]{graphicx}
|
83
|
-
<%- else -%>
|
84
|
-
\usepackage[<%= dvipdfmx %>]{graphicx}
|
85
|
-
<%- end -%>
|
86
|
-
\usepackage[<%= dvipdfmx_ %>table]{xcolor}%requires colortbl, array
|
87
|
-
\usepackage{framed}
|
88
|
-
\usepackage{wrapfig}
|
89
|
-
\definecolor{shadecolor}{gray}{0.9}
|
90
|
-
\definecolor{shadecolorb}{gray}{0.1}
|
91
|
-
\definecolor{reviewgreen}{rgb}{0,0.4,0}
|
92
|
-
\definecolor{reviewblue}{rgb}{0.2,0.2,0.4}
|
93
|
-
\definecolor{reviewred}{rgb}{0.7,0,0}
|
94
|
-
\definecolor{reviewdarkred}{rgb}{0.3,0,0}
|
95
|
-
\usepackage[utf8]{inputenc}
|
96
|
-
\usepackage{ascmac}
|
97
|
-
\usepackage{float}
|
98
|
-
\usepackage{alltt}
|
99
|
-
\usepackage{amsmath}
|
100
|
-
\usepackage{pdfpages} % provides '\includepdf' command
|
101
|
-
|
102
|
-
%% if you use @<u>{} (underline), use jumoline.sty
|
103
|
-
\IfFileExists{jumoline.sty}{
|
104
|
-
\usepackage{jumoline}
|
105
|
-
}
|
106
|
-
|
107
|
-
\newenvironment{shadedb}{%
|
108
|
-
\def\FrameCommand{\fboxsep=\FrameSep \colorbox{shadecolorb}}%
|
109
|
-
\MakeFramed {\FrameRestore}}%
|
110
|
-
{\endMakeFramed}
|
111
|
-
|
112
|
-
<%- unless ["utbook", "tbook"].include?(@documentclass) -%>
|
113
|
-
%\usepackage[top=10zw,bottom=12zw,left=10zw,right=10zw]{geometry}
|
114
|
-
%\usepackage[top=5zw,bottom=5zw,left=1zw,right=1zw]{geometry}
|
115
|
-
<%- end -%>
|
116
|
-
|
117
|
-
\newcommand{\parasep}{\vspace*{3zh}}
|
118
|
-
\setlength{\footskip}{30pt}
|
119
118
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
pdfauthor={<%= escape_latex(@config.names_of("aut").join(I18n.t("names_splitter"))) %>}]{hyperref}
|
124
|
-
<%- if xelatex?() -%>
|
125
|
-
%\usepackage[<%= dvipdfmx %>]{pxjahyper}
|
119
|
+
<%- case ENV['STARTER_DRAFT'] -%>
|
120
|
+
<%- when nil, '', 'off', 'false' -%>
|
121
|
+
\usepackage{graphicx}
|
126
122
|
<%- else -%>
|
127
|
-
\usepackage[
|
123
|
+
\usepackage[draft]{graphicx}
|
128
124
|
<%- end -%>
|
125
|
+
\usepackage[table]{xcolor}%requires colortbl, array
|
129
126
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
<%-
|
127
|
+
\usepackage[bookmarks=true,bookmarksnumbered=true,colorlinks=true,%
|
128
|
+
pdftitle={<%= escape_latex(@config.name_of("booktitle")) %>},%
|
129
|
+
pdfauthor={<%= escape_latex(@config.names_of("aut").join(i18n_t.('names_splitter'))) %>}]{hyperref}
|
130
|
+
<%- p = xelatex?() ? '%' : '' -%>
|
131
|
+
<%= p %>\usepackage{pxjahyper} % Bookmarkの文字化け対策(日本語向け)
|
134
132
|
|
135
|
-
<%-
|
136
|
-
|
137
|
-
\usepackage{listings,jlisting}
|
138
|
-
<%- else -%>
|
139
|
-
\usepackage{listings}
|
140
|
-
<%- end -%>
|
141
|
-
\renewcommand{\lstlistingname}{<%= escape_latex(I18n.t("list")) %>}
|
142
|
-
\lstset{%
|
143
|
-
breaklines=true,%
|
144
|
-
breakautoindent=false,%
|
145
|
-
breakindent=0pt,%
|
146
|
-
fontadjust=true,%
|
147
|
-
backgroundcolor=\color{shadecolor},%
|
148
|
-
frame=single,%
|
149
|
-
framerule=0pt,%
|
150
|
-
basicstyle=\ttfamily\scriptsize,%
|
151
|
-
commentstyle=\color{reviewgreen},%
|
152
|
-
identifierstyle=\color{reviewblue},%
|
153
|
-
stringstyle=\color{reviewred},%
|
154
|
-
keywordstyle=\bfseries\color{reviewdarkred},%
|
155
|
-
}
|
133
|
+
<%- p = ["utbook", "tbook"].include?(@documentclass) ? '' : '%' -%>
|
134
|
+
<%= p %>\usepackage{plext} % 縦書き用のパッケージ
|
156
135
|
|
157
|
-
|
158
|
-
\
|
159
|
-
|
160
|
-
\
|
161
|
-
|
162
|
-
\
|
163
|
-
\
|
164
|
-
|
136
|
+
%% コードハイライト用の設定情報
|
137
|
+
\makeatletter
|
138
|
+
<%- yes = @config["highlight"] && @config["highlight"]["latex"] == "listings" -%>
|
139
|
+
\def\config@highlight@listings{<%= yes ? 'Y' : '' %>}
|
140
|
+
<%- yes = @config["language"] == "ja" -%>
|
141
|
+
\def\config@language@ja{<%= yes ? 'Y' : '' %>}
|
142
|
+
\def\review@t@list{<%= i18n.('list') %>}
|
143
|
+
\makeatother
|
165
144
|
|
166
|
-
|
167
|
-
|
168
|
-
\begin{center}}{%
|
169
|
-
\end{center}
|
170
|
-
\end{figure}}
|
171
|
-
|
172
|
-
\newenvironment{reviewdummyimage}{%
|
173
|
-
\begin{figure}[H]
|
174
|
-
\begin{center}\begin{alltt}}{%
|
175
|
-
\end{alltt}\end{center}
|
176
|
-
\end{figure}}
|
177
|
-
|
178
|
-
\newcommand{\reviewimagecaption}[1]{%
|
179
|
-
\caption{#1}}
|
180
|
-
|
181
|
-
\newenvironment{reviewemlist}{%
|
182
|
-
\medskip\small\begin{shaded}\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
|
183
|
-
\end{alltt}\end{shaded}}
|
184
|
-
|
185
|
-
\newenvironment{reviewlist}{%
|
186
|
-
\begin{shaded}\small\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
|
187
|
-
\end{alltt}\end{shaded}\par\vspace*{0.5zw}}
|
188
|
-
|
189
|
-
\newenvironment{reviewsource}{%
|
190
|
-
\begin{shaded}\small\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
|
191
|
-
\end{alltt}\end{shaded}\par\vspace*{0.5zw}}
|
192
|
-
|
193
|
-
\newenvironment{reviewcmd}{%
|
194
|
-
\color{white}\medskip\small\begin{shadedb}\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
|
195
|
-
\end{alltt}\end{shadedb}}
|
196
|
-
|
197
|
-
\newenvironment{reviewbox}{%
|
198
|
-
\medskip\small\begin{framed}\setlength{\baselineskip}{1.3zw}\begin{alltt}}{%
|
199
|
-
\end{alltt}\end{framed}}
|
200
|
-
|
201
|
-
%\newenvironment{reviewtable}[1]{%
|
202
|
-
% \begin{center}\small\setlength{\baselineskip}{1.2zw}
|
203
|
-
% \begin{tabular}{#1}}{%
|
204
|
-
% \end{tabular}
|
205
|
-
% \end{center}}
|
206
|
-
\newenvironment{reviewtable}[1]{%
|
207
|
-
\small\setlength{\baselineskip}{1.2zw}%
|
208
|
-
\begin{tabular}{#1}%
|
209
|
-
}{%
|
210
|
-
\end{tabular}%
|
211
|
-
}
|
145
|
+
%% Re:VIEW用のスタイルファイル
|
146
|
+
\usepackage{review-base}
|
212
147
|
|
213
|
-
\newenvironment{reviewcolumn}{%
|
214
|
-
\begin{framed}
|
215
|
-
}{%
|
216
|
-
\end{framed}
|
217
|
-
\vspace{2zw}}
|
218
148
|
|
149
|
+
%% I18N辞書のデータ
|
219
150
|
\newcommand{\reviewcolumnhead}[2]{%
|
220
|
-
{\noindent\large <%=
|
221
|
-
|
222
|
-
\newcommand{\reviewtablecaption}[1]{%
|
223
|
-
\caption{#1}}
|
151
|
+
{\noindent\large <%= i18n.('column_head') %>: #2}}
|
224
152
|
|
225
|
-
\
|
226
|
-
|
227
|
-
|
228
|
-
\newcommand{\reviewimgtablecaption}[1]{%
|
229
|
-
\caption{#1}\vspace{-3mm}}
|
230
|
-
|
231
|
-
\newcommand{\reviewbackslash}[0]{%
|
232
|
-
\textbackslash{}}
|
233
|
-
|
234
|
-
\newcommand{\reviewlistcaption}[1]{%
|
235
|
-
\medskip{\small\noindent #1}\vspace*{-1.3zw}}
|
236
|
-
|
237
|
-
\newcommand{\reviewemlistcaption}[1]{%
|
238
|
-
\medskip{\small\noindent #1}\vspace*{-1.3zw}}
|
239
|
-
|
240
|
-
\newcommand{\reviewsourcecaption}[1]{%
|
241
|
-
\medskip{\small\noindent #1}\vspace*{-1.3zw}}
|
242
|
-
|
243
|
-
\newcommand{\reviewcmdcaption}[1]{%
|
244
|
-
\medskip{\small\noindent #1}\vspace*{-1.3zw}}
|
245
|
-
|
246
|
-
\newcommand{\reviewindepimagecaption}[1]{%
|
247
|
-
\begin{center}#1\end{center}}
|
248
|
-
|
249
|
-
\newcommand{\reviewboxcaption}[1]{%
|
250
|
-
\medskip{\small\noindent #1}\vspace*{-1.3zw}}
|
251
|
-
|
252
|
-
\newcommand{\reviewimageref}[2]{<%= escape_latex(I18n.t("image"))%> #1}
|
253
|
-
\newcommand{\reviewtableref}[2]{<%= escape_latex(I18n.t("table"))%> #1}
|
254
|
-
\newcommand{\reviewlistref}[1]{<%= escape_latex(I18n.t("list"))%> #1}
|
153
|
+
\newcommand{\reviewimageref}[2]{<%= i18n.('image') %> #1}
|
154
|
+
\newcommand{\reviewtableref}[2]{<%= i18n.('table') %> #1}
|
155
|
+
\newcommand{\reviewlistref}[1]{<%= i18n.('list') %> #1}
|
255
156
|
\newcommand{\reviewbibref}[2]{#1}
|
256
|
-
\newcommand{\reviewcolumnref}[2]{<%=
|
157
|
+
\newcommand{\reviewcolumnref}[2]{<%= i18n.('columnname') %> #1}
|
257
158
|
\newcommand{\reviewsecref}[2]{#1}
|
258
159
|
|
259
160
|
\newcommand{\reviewminicolumntitle}[1]{%
|
260
|
-
{\large <%=
|
161
|
+
{\large <%= i18n.('memo_head') %>: #1}\\}
|
261
162
|
|
262
163
|
<%- if @config["toctitle"].present? -%>
|
263
164
|
\renewcommand{\contentsname}{<%= escape_latex(@config["toctitle"]) %>}
|
264
|
-
<%- elsif
|
265
|
-
\renewcommand{\contentsname}{<%=
|
165
|
+
<%- elsif i18n_t.('toctitle') -%>
|
166
|
+
\renewcommand{\contentsname}{<%= i18n.('toctitle') %>}
|
266
167
|
<%- end -%>
|
267
168
|
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
\newcommand{\
|
274
|
-
\newcommand{\
|
275
|
-
\newcommand{\
|
276
|
-
\newcommand{\
|
277
|
-
|
278
|
-
|
279
|
-
\newcommand{\
|
280
|
-
|
281
|
-
%%%% for ulem.sty:
|
282
|
-
%%\renewcommand{\reviewstrike}[1]{\sout{#1}}
|
283
|
-
%%
|
284
|
-
%%%% for jumoline.sty:
|
285
|
-
%%\renewcommand{\reviewstrike}[1]{\Middleline{#1}}
|
286
|
-
|
287
|
-
\newcommand{\reviewth}[1]{{\gtfamily\sffamily\bfseries #1}}
|
288
|
-
\newcommand{\reviewtitlefont}[0]{\usefont{T1}{phv}{b}{n}\gtfamily}
|
289
|
-
\newcommand{\reviewmainfont}[0]{}
|
290
|
-
\newcommand{\reviewcolophon}[0]{\clearpage}
|
291
|
-
\newcommand{\reviewappendix}[0]{\appendix}
|
292
|
-
|
293
|
-
\newcommand{\reviewprepartname}{<%= escape_latex(@locale_latex["prepartname"]) %>}
|
294
|
-
\newcommand{\reviewpostpartname}{<%= escape_latex(@locale_latex["postpartname"]) %>}
|
295
|
-
\newcommand{\reviewprechaptername}{<%= escape_latex(@locale_latex["prechaptername"]) %>}
|
296
|
-
\newcommand{\reviewpostchaptername}{<%= escape_latex(@locale_latex["postchaptername"]) %>}
|
297
|
-
\newcommand{\reviewfigurename}{<%= escape_latex(I18n.t("image")) %>}
|
298
|
-
\newcommand{\reviewtablename}{<%= escape_latex(I18n.t("table")) %>}
|
299
|
-
\newcommand{\reviewappendixname}{<%= escape_latex(@locale_latex["preappendixname"]) %>}
|
300
|
-
|
301
|
-
\ifdefined\prepartname
|
302
|
-
\renewcommand{\prepartname}{\reviewprepartname}
|
303
|
-
\fi
|
304
|
-
\ifdefined\postpartname
|
305
|
-
\renewcommand{\postpartname}{\reviewpostpartname}
|
306
|
-
\fi
|
307
|
-
\ifdefined\prechaptername
|
308
|
-
\renewcommand{\prechaptername}{\reviewprechaptername}
|
309
|
-
\fi
|
310
|
-
\ifdefined\postchaptername
|
311
|
-
\renewcommand{\postchaptername}{\reviewpostchaptername}
|
312
|
-
\fi
|
313
|
-
\ifdefined\figurename
|
314
|
-
\renewcommand{\figurename}{\reviewfigurename}
|
315
|
-
\fi
|
316
|
-
\ifdefined\tablename
|
317
|
-
\renewcommand{\tablename}{\reviewtablename}
|
318
|
-
\fi
|
319
|
-
\ifdefined\appendixname
|
320
|
-
\renewcommand{\appendixname}{\reviewappendixname}
|
321
|
-
\fi
|
169
|
+
|
170
|
+
%% ロケールに関する文字列
|
171
|
+
<%-
|
172
|
+
locale = proc {|key| escape_latex(@locale_latex[key]) }
|
173
|
+
-%>
|
174
|
+
\newcommand{\reviewprepartname}{<%= locale.('prepartname') %>}
|
175
|
+
\newcommand{\reviewpostpartname}{<%= locale.('postpartname') %>}
|
176
|
+
\newcommand{\reviewprechaptername}{<%= locale.('prechaptername') %>}
|
177
|
+
\newcommand{\reviewpostchaptername}{<%= locale.('postchaptername') %>}
|
178
|
+
\newcommand{\reviewfigurename}{<%= i18n.('image') %>}
|
179
|
+
\newcommand{\reviewtablename}{<%= i18n.('table') %>}
|
180
|
+
\newcommand{\reviewappendixname}{<%= locale.('preappendixname') %>}
|
322
181
|
|
323
182
|
|
324
183
|
\makeatletter
|
325
|
-
%% maxwidth is the original width if it is less than linewidth
|
326
|
-
%% otherwise use linewidth (to make sure the graphics do not exceed the margin)
|
327
|
-
\def\maxwidth{%
|
328
|
-
\ifdim\Gin@nat@width>\linewidth
|
329
|
-
\linewidth
|
330
|
-
\else
|
331
|
-
\Gin@nat@width
|
332
|
-
\fi
|
333
|
-
}
|
334
184
|
|
335
185
|
%% true between '\appendix' and ''
|
336
|
-
\newif\if@appendix
|
186
|
+
\newif\if@appendix % true なら付録を処理中である
|
337
187
|
\@appendixfalse
|
338
188
|
|
339
189
|
\makeatother
|
340
190
|
|
341
|
-
<%-
|
342
|
-
<%- [@config["texstyle"]].flatten.each do |x| -%>
|
191
|
+
<%- [@config["texstyle"]].flatten.compact.each do |x| -%>
|
343
192
|
\usepackage{<%= x %>}
|
344
|
-
<%- end -%>
|
345
193
|
<%- end -%>
|
194
|
+
|
346
195
|
<%- if @config["makeindex"] -%>
|
347
196
|
\usepackage{makeidx}
|
348
197
|
\makeindex
|
349
198
|
<%- end -%>
|
350
199
|
|
351
|
-
|
200
|
+
<%- if @config['secnolevel'] -%>
|
352
201
|
\setcounter{secnumdepth}{<%= @config['secnolevel'] - 1 %>}
|
353
|
-
|
202
|
+
<%- end -%>
|
203
|
+
|
204
|
+
<%- if (n = @config['starter']['part_startnumber']) -%>
|
205
|
+
\setcounter{part}{<%= n - 1 %>}
|
206
|
+
<%- end -%>
|
207
|
+
<%- if (n = @config['starter']['chapter_startnumber']) -%>
|
208
|
+
\setcounter{chapter}{<%= n - 1 %>}
|
209
|
+
<%- end -%>
|
354
210
|
|
355
211
|
|
356
212
|
\begin{document}
|
@@ -358,75 +214,116 @@ docopts << fontsize # 9pt or 10pt
|
|
358
214
|
\reviewmainfont
|
359
215
|
|
360
216
|
<%-
|
361
|
-
##
|
362
|
-
include_pdffiles = proc do |pdf_files|
|
363
|
-
if ENV['STARTER_CHAPTER'].
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
217
|
+
## PDFファイルを読み込む
|
218
|
+
include_pdffiles = proc do |pdf_files, except: nil, incrpagenum: false|
|
219
|
+
next if ENV['STARTER_CHAPTER'].present?
|
220
|
+
target = ENV['STARTER_TARGET'].to_s.strip
|
221
|
+
target = (@config['starter'] || {})['target'] if target.empty?
|
222
|
+
p = except && except == target ? '%' : ''
|
223
|
+
imagedir = @config['imagedir']
|
224
|
+
pdf_option = @config['starter']['includepdf_option']
|
225
|
+
offset = pdf_option =~ /\Aoffset=(.*)/ ? $1 : nil
|
226
|
+
[pdf_files].flatten.compact.each do |pdf_file|
|
227
|
+
pdf_file = pdf_file.sub(/(?:<(.*?)>)?(\*)?\z/, '')
|
228
|
+
pagenum = $1; star = $2
|
229
|
+
pdf_filepath = "./#{imagedir}/#{pdf_file}"
|
368
230
|
-%>
|
369
|
-
|
370
|
-
|
231
|
+
\begingroup
|
232
|
+
<%= p %>\makeatletter\def\starter@includepdf@pagenum{<%= pagenum %>}\makeatother
|
233
|
+
<%= p %>\starterincludepdf<%= star %>[<%= offset %>]{<%= pdf_filepath %>}
|
234
|
+
\endgroup
|
235
|
+
<%- if ! incrpagenum -%>
|
236
|
+
<%= p %>\addtocounter{page}{-1}
|
371
237
|
<%-
|
372
238
|
end
|
373
239
|
end
|
374
240
|
end
|
375
|
-
-%>
|
376
|
-
<%- include_pdffiles.call(@config["coverpdf_files"]) -%>
|
377
241
|
|
242
|
+
## 表紙用PDFファイルを読み込む
|
243
|
+
include_pdffiles.(@config['starter']['frontcover_pdffile'], except: 'pbook')
|
244
|
+
-%>
|
378
245
|
%
|
379
246
|
|
380
|
-
<%-
|
247
|
+
<%-
|
248
|
+
## 表紙と奥付用の各種データ
|
249
|
+
maintitle = escape_latex(@config.name_of("booktitle").to_s)
|
250
|
+
maintitle = maintitle.gsub(/\n/) { "\\\\\n" } # '\n' -> '\\'
|
251
|
+
#
|
252
|
+
subtitle = escape_latex(@config.name_of("subtitle").to_s)
|
253
|
+
rexp = /([!?])$/
|
254
|
+
if subtitle =~ rexp
|
255
|
+
subtitle = subtitle.gsub(rexp) { "\\mbox{#{$1}}" }
|
256
|
+
elsif !subtitle.empty?
|
257
|
+
subtitle += " "
|
258
|
+
end
|
259
|
+
subtitle = subtitle.gsub(/\n/) { "\\\\\n" } # '\n' -> '\\'
|
260
|
+
#
|
261
|
+
pubevent = escape_latex(@config["pubevent_name"].to_s)
|
262
|
+
pubhistory = escape_latex(@config["pubhistory"].to_s)
|
263
|
+
pubdate = escape_latex(@config["date"].to_s)
|
264
|
+
pubedition = i18n.('edition')
|
265
|
+
publisher = @config.names_of("pbl").join(I18n.t("names_splitter"))
|
266
|
+
published_by = i18n.('published_by', publisher)
|
267
|
+
#
|
268
|
+
latest_pubhist = pubhistory.lines[-1]
|
269
|
+
if latest_pubhist
|
270
|
+
if latest_pubhist =~ /\s*(.*)\z/
|
271
|
+
latest_pubhist = $`
|
272
|
+
end
|
273
|
+
end
|
274
|
+
-%>
|
381
275
|
%%%
|
382
|
-
\title{<%= escape_latex(@config.name_of("booktitle").to_s).gsub(/\n/) { "\\\\\n" } %>}
|
383
276
|
\makeatletter
|
384
|
-
\
|
385
|
-
\def\@
|
386
|
-
\def\@
|
387
|
-
\
|
277
|
+
\title{<%= maintitle %>}
|
278
|
+
\def\@maintitle{<%= maintitle %>}
|
279
|
+
\def\@subtitle{<%= subtitle %>}
|
280
|
+
\def\@pubevent{<%= pubevent %>}
|
281
|
+
\def\@latestpubhistory{<%= latest_pubhist %>}
|
388
282
|
\author{<%= @authors %>}
|
389
|
-
\date{<%=
|
283
|
+
\date{<%= pubdate %> <%= pubedition %>\hspace{2zw}<%= published_by %>}
|
284
|
+
\def\book@author{<%= escape(@book_author||'') %>}
|
285
|
+
\def\book@supervisor{<%= escape(@book_supervisor||'') %>}
|
286
|
+
\def\book@translator{<%= escape(@book_translator||'') %>}
|
287
|
+
\makeatother
|
390
288
|
%%%
|
391
|
-
<%-
|
289
|
+
<%-
|
290
|
+
## 大扉(タイトルページ)を表示
|
291
|
+
if ! @config['titlepage']
|
292
|
+
# nothing
|
293
|
+
elsif @custom_titlepage
|
294
|
+
-%>
|
392
295
|
<%= @custom_titlepage %>
|
393
|
-
<%-
|
296
|
+
<%-
|
297
|
+
elsif @config['starter']['titlepage_pdffile'].present?
|
298
|
+
## 大扉用PDFファイルを読み込む
|
299
|
+
include_pdffiles.(@config['starter']['titlepage_pdffile'], incrpagenum: true)
|
300
|
+
else
|
301
|
+
-%>
|
394
302
|
\begin{titlepage}
|
395
|
-
<%-
|
303
|
+
<%- if @config["coverimage"] -%>
|
304
|
+
<%- image_filepath = "./#{@config['imagedir']}/#{@config['coverimage']}" -%>
|
396
305
|
\begin{center}
|
397
|
-
\includegraphics[<%= @coverimageoption%>]{
|
306
|
+
\includegraphics[<%= @coverimageoption %>]{<%= image_filepath %>}
|
398
307
|
\end{center}
|
399
308
|
\clearpage
|
400
|
-
<%-
|
401
|
-
\ifdefined\mytitlepage
|
402
|
-
\mytitlepage
|
403
|
-
\else
|
404
|
-
\
|
405
|
-
\
|
406
|
-
\mbox{} \vskip5zw
|
407
|
-
\reviewtitlefont%
|
408
|
-
{\HUGE\bfseries <%= escape_latex(@config.name_of("booktitle")) %> \par}%
|
409
|
-
<%- if @config["subtitle"] -%>
|
410
|
-
\vskip 1em%
|
411
|
-
{\Large {\rmfamily --- } <%= escape_latex(@config.name_of("subtitle")) %> {\rmfamily --- } \par}%
|
412
|
-
<%- end -%>
|
413
|
-
\vskip 15em%
|
414
|
-
{\LARGE
|
415
|
-
\lineskip .75em
|
416
|
-
\begin{tabular}[t]{c}%
|
417
|
-
<%= @authors %>
|
418
|
-
\end{tabular}\par}%
|
419
|
-
\vfill
|
420
|
-
{\large <%= escape_latex(@config["date"].to_s) %> <%= escape_latex(I18n.t("edition")) %>\hspace{2zw}<%= escape_latex(I18n.t("published_by", @config.names_of("pbl").join(I18n.t("names_splitter"))))%>\par}%
|
421
|
-
\vskip4zw\mbox{}
|
422
|
-
\end{center}%
|
423
|
-
\fi %%%%%%%%%%
|
309
|
+
<%- end -%>
|
310
|
+
\ifdefined\mytitlepage
|
311
|
+
\mytitlepage % defined in 'sty/mytitlepage.sty'
|
312
|
+
\else
|
313
|
+
\reviewtitlepage % defined in 'sty/review-base.sty'
|
314
|
+
\fi
|
424
315
|
\end{titlepage}
|
316
|
+
<%-
|
317
|
+
end#if
|
318
|
+
#
|
319
|
+
if @config['titlepage']
|
320
|
+
-%>
|
425
321
|
\ifdefined\mytitlenextpage
|
426
|
-
\mytitlenextpage
|
322
|
+
\mytitlenextpage % defined in 'sty/mytitlepage.sty'
|
427
323
|
\fi
|
428
|
-
<%-
|
429
|
-
|
324
|
+
<%-
|
325
|
+
end
|
326
|
+
-%>
|
430
327
|
|
431
328
|
%\renewcommand{\chaptermark}[1]{{}}
|
432
329
|
\frontmatter
|
@@ -481,66 +378,55 @@ docopts << fontsize # 9pt or 10pt
|
|
481
378
|
<%- end -%>
|
482
379
|
|
483
380
|
%%% colophon
|
484
|
-
<%-
|
485
|
-
|
486
|
-
<%= @
|
487
|
-
|
488
|
-
|
489
|
-
\ifdefined\mycolophon %%%%%%%%%%
|
490
|
-
\title{<%= escape_latex(@config.name_of("booktitle")) %>}
|
491
|
-
\makeatletter
|
492
|
-
\def\@subtitle{<%= escape_latex(@config.name_of("subtitle")) %>}
|
493
|
-
\makeatother
|
494
|
-
\def\colophonpubhistory{%
|
495
|
-
<%= @config["pubhistory"].to_s.gsub(/\n/){ "\n\n\\noindent\n" } %>%
|
496
|
-
}
|
497
|
-
\def\colophonokuduke{%
|
498
|
-
<%= @okuduke %>%
|
499
|
-
}
|
500
|
-
\def\colophonrights{%
|
501
|
-
<% @config.names_of("rights").each do |s| %>
|
502
|
-
<%= escape_latex(s).sub(/^\(C\)/i, '{\textcopyright}') %>\\
|
503
|
-
<% end if @config["rights"] %>
|
504
|
-
}
|
505
|
-
\mycolophon % defined in 'sty/mycolophon.sty'
|
506
|
-
\else %%%%%%%%%%
|
507
|
-
\reviewcolophon
|
508
|
-
\thispagestyle{empty}
|
509
|
-
|
510
|
-
\vspace*{\fill}
|
511
|
-
|
512
|
-
{\noindent\reviewtitlefont\Large <%= escape_latex(@config.name_of("booktitle")) %>} \\
|
513
|
-
<%- if @config["subtitle"] -%>
|
514
|
-
\medskip
|
515
|
-
{\noindent\reviewtitlefont <%= escape_latex(@config.name_of("subtitle")) %>} \\
|
516
|
-
<%- end -%>
|
517
|
-
\rule[8pt]{\textwidth}{1pt} \\
|
518
|
-
{\noindent
|
519
|
-
<%= @config["pubhistory"].to_s.gsub(/\n/){"\n\n\\noindent\n"} %>
|
381
|
+
<%- ## 奥付に必要なデータ -%>
|
382
|
+
\title{<%= escape_latex(@config.name_of("booktitle")) %>} % 2行にしない
|
383
|
+
\def\@subtitle{<%= escape_latex(@config.name_of("subtitle")) %>} % 2行にしない
|
384
|
+
\def\colophonpubhistory{%
|
385
|
+
<%= @config["pubhistory"].to_s.gsub(/\n/){ "\n\n\\noindent\n" } %>%
|
520
386
|
}
|
521
|
-
\
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
<%-
|
387
|
+
\def\colophonokuduke{%
|
388
|
+
<%= @okuduke %>%
|
389
|
+
}
|
390
|
+
\def\colophonrights{%
|
391
|
+
<%- @config.names_of("rights").each do |s| -%>
|
392
|
+
<%= escape_latex(s).sub(/^\(C\)/i, '{\textcopyright}') %>\\
|
393
|
+
<%- end if @config["rights"] -%>
|
394
|
+
}
|
395
|
+
<%-
|
396
|
+
## 奥付を表示
|
397
|
+
if ! @config['colophon']
|
398
|
+
# nothing
|
399
|
+
elsif @custom_colophonpage
|
400
|
+
-%>
|
401
|
+
<%= @custom_colophonpage %>
|
402
|
+
<%-
|
403
|
+
elsif @config['starter']['colophon_pdffile'].present?
|
404
|
+
## 奥付のPDFファイルを読み込む
|
405
|
+
-%>
|
406
|
+
\reviewcolophon % 偶数ページに移動
|
407
|
+
<%-
|
408
|
+
include_pdffiles.(@config['starter']['colophon_pdffile'], incrpagenum: true)
|
409
|
+
else
|
410
|
+
-%>
|
411
|
+
\ifdefined\mycolophon
|
412
|
+
\mycolophon % defined in 'sty/mycolophon.sty'
|
413
|
+
\else
|
414
|
+
\reviewcolophonpage % defined in 'sty/review-base.sty'
|
415
|
+
\fi
|
416
|
+
<%-
|
417
|
+
end#if
|
418
|
+
-%>
|
537
419
|
|
538
420
|
%%% backcover
|
539
|
-
<%-
|
421
|
+
<%-
|
422
|
+
if @config['backcover']
|
423
|
+
-%>
|
540
424
|
<%= @custom_backcoverpage %>
|
541
|
-
<%-
|
542
|
-
|
543
|
-
|
544
|
-
|
425
|
+
<%-
|
426
|
+
elsif @config['starter']['backcover_pdffile'].present?
|
427
|
+
## 裏表紙用PDFファイルを読み込む
|
428
|
+
include_pdffiles.(@config['starter']['backcover_pdffile'], except: 'pbook')
|
429
|
+
end
|
430
|
+
-%>
|
545
431
|
|
546
432
|
\end{document}
|