review-retrovert 0.9.7 → 0.9.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +9 -0
  3. data/.editorconfig +3 -0
  4. data/.github/workflows/retrovert.yml +20 -5
  5. data/.gitignore +1 -0
  6. data/.vscode/launch.json +48 -0
  7. data/Gemfile.lock +13 -4
  8. data/Makefile +24 -0
  9. data/docker/review.Dockerfile +10 -0
  10. data/lib/review/retrovert/converter.rb +374 -111
  11. data/lib/review/retrovert/reviewcompat.rb +57 -0
  12. data/lib/review/retrovert/reviewdef.rb +70 -0
  13. data/lib/review/retrovert/sty/{ird.sty → ird.sty.erb} +9 -1
  14. data/lib/review/retrovert/sty/review-retrovert-custom.sty.erb +6 -0
  15. data/lib/review/retrovert/utils.rb +35 -0
  16. data/lib/review/retrovert/version.rb +1 -1
  17. data/lib/review/retrovert/yamlconfig.rb +0 -1
  18. data/package-lock.json +6 -0
  19. data/package.json +1 -0
  20. data/review-retrovert.gemspec +5 -1
  21. data/testdata/mybook/.gitignore +3 -1
  22. data/testdata/mybook/.textlintrc +11 -0
  23. data/testdata/mybook/Rakefile +8 -0
  24. data/testdata/mybook/catalog.yml +36 -10
  25. data/testdata/mybook/config-starter.yml +134 -9
  26. data/testdata/mybook/config.yml +44 -15
  27. data/testdata/mybook/contents/00-preface.re +48 -2
  28. data/testdata/mybook/contents/01-install.re +38 -5
  29. data/testdata/mybook/contents/02-tutorial.re +333 -113
  30. data/testdata/mybook/contents/03-syntax.re +2370 -373
  31. data/testdata/mybook/contents/04-customize.re +424 -88
  32. data/testdata/mybook/contents/05-faq.re +288 -10
  33. data/testdata/mybook/contents/06-bestpractice.re +431 -59
  34. data/testdata/mybook/contents/91-compare.re +402 -2
  35. data/testdata/mybook/contents/92-filelist.re +14 -8
  36. data/testdata/mybook/contents/93-background.re +10 -10
  37. data/testdata/mybook/contents/99-postface.re +2 -1
  38. data/testdata/mybook/contents/r0-root.re +1 -1
  39. data/testdata/mybook/css/webstyle.css +180 -2
  40. data/testdata/mybook/data/terms.txt +3 -0
  41. data/testdata/mybook/data/words.txt +15 -0
  42. data/testdata/mybook/images/03-syntax/index-page.png +0 -0
  43. data/testdata/mybook/images/03-syntax/order-detail.png +0 -0
  44. data/testdata/mybook/images/04-customize/section_decoration_samples.png +0 -0
  45. data/testdata/mybook/images/05-faq/dummy-image.png +0 -0
  46. data/testdata/mybook/images/06-bestpractice/section_title_wlines.png +0 -0
  47. data/testdata/mybook/images/avatar-b.png +0 -0
  48. data/testdata/mybook/images/avatar-g.png +0 -0
  49. data/testdata/mybook/images/avatar-r.png +0 -0
  50. data/testdata/mybook/images/caution-icon.png +0 -0
  51. data/testdata/mybook/images/info-icon.png +0 -0
  52. data/testdata/mybook/images/warning-icon.png +0 -0
  53. data/testdata/mybook/layouts/layout.html5.erb +3 -1
  54. data/testdata/mybook/layouts/layout.tex.erb +265 -379
  55. data/testdata/mybook/layouts/layout.tex.erb.orig +386 -0
  56. data/testdata/mybook/lib/ruby/review-book.rb +64 -0
  57. data/testdata/mybook/lib/ruby/review-builder.rb +902 -63
  58. data/testdata/mybook/lib/ruby/review-compiler.rb +675 -22
  59. data/testdata/mybook/lib/ruby/review-epubbuilder.rb +33 -0
  60. data/testdata/mybook/lib/ruby/review-epubmaker.rb +10 -7
  61. data/testdata/mybook/lib/ruby/review-htmlbuilder.rb +354 -66
  62. data/testdata/mybook/lib/ruby/review-latexbuilder.rb +429 -146
  63. data/testdata/mybook/lib/ruby/review-maker.rb +117 -6
  64. data/testdata/mybook/lib/ruby/review-markdownbuilder.rb +945 -0
  65. data/testdata/mybook/lib/ruby/review-markdownmaker.rb +91 -0
  66. data/testdata/mybook/lib/ruby/review-monkeypatch.rb +2 -0
  67. data/testdata/mybook/lib/ruby/review-pdfmaker.rb +160 -82
  68. data/testdata/mybook/lib/ruby/review-webmaker.rb +20 -5
  69. data/testdata/mybook/lib/tasks/review.rake +14 -0
  70. data/testdata/mybook/lib/tasks/starter.rake +148 -4
  71. data/testdata/mybook/sty/indexstyle.ist +25 -0
  72. data/testdata/mybook/sty/mytextsize.sty +29 -0
  73. data/testdata/mybook/sty/mytitlepage.sty +34 -11
  74. data/testdata/mybook/sty/review-base.sty +276 -0
  75. data/testdata/mybook/sty/starter-codeblock.sty +237 -106
  76. data/testdata/mybook/sty/starter-color.sty +72 -17
  77. data/testdata/mybook/sty/starter-heading.sty +60 -13
  78. data/testdata/mybook/sty/starter-misc.sty +894 -0
  79. data/testdata/mybook/sty/starter-note.sty +67 -14
  80. data/testdata/mybook/sty/starter-talklist.sty +105 -0
  81. data/testdata/mybook/sty/starter-util.sty +35 -0
  82. data/testdata/mybook/sty/starter.sty +8 -526
  83. 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)
@@ -3,7 +3,7 @@
3
3
  #@mapfile(contents/r0-inner.re)
4
4
  #@end
5
5
 
6
- @<br>{}
6
+ //blankline
7
7
 
8
8
  test@<br>{}
9
9
 
@@ -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,3 @@
1
+ 侍従長 じじゅうちょう
2
+ 内務卿 ないむきょう
3
+ ハイランダー連隊 はいらんだーれんたい
@@ -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
@@ -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
- <% else %>
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.4
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
- <%- length_keys = ['caption_needspace', 'program_widen', 'terminal_widen'] -%>
37
- <%- @config['starter'].each do |k, v| -%>
38
- <%- if k == 'target' -%>
39
- <%- target = ENV['STARTER_TARGET'].to_s -%>
40
- <%- v = target unless target.empty? -%>
41
- <%- else -%>
42
- <%- v = v == true ? 'Y' : v == false ? '' : v.to_s -%>
43
- <%- end -%>
44
- <%- if v =~ /\A[-a-zA-Z0-9!'`*+,.\/:;=?@\[\]()]*\z/ -%>
45
- <%- x = 'starter@' + k.gsub('_', '@') -%>
46
- <%- if length_keys.include?(k) -%>
47
- <%- #v = v.sub(/\b(z[wh])$/, '\\zw') -%>
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{\<%= x %>}
50
- \setlength{\<%= x %>}{<%= v %>}
51
- <%- else -%>
52
- \def\<%= x %>{<%= v %>}
53
- <%- end -%>
54
- <%- end -%>
55
- <%- end -%>
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
- <%- ENV.each do |key, val| -%>
62
- <%- if key =~ /^STARTER_\w+$/ -%>
63
- \def\<%= key.gsub('_', '@') %>{<%= val %>}%
64
- <%- end -%>
65
- <%- end -%>
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
- %% Bookmarkの文字化け対策(日本語向け)
121
- \usepackage[<%= dvipdfmx_ %>bookmarks=true,bookmarksnumbered=true,colorlinks=true,%
122
- pdftitle={<%= escape_latex(@config.name_of("booktitle")) %>},%
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[<%= dvipdfmx %>]{pxjahyper}
123
+ \usepackage[draft]{graphicx}
128
124
  <%- end -%>
125
+ \usepackage[table]{xcolor}%requires colortbl, array
129
126
 
130
- <%- if ["utbook", "tbook"].include?(@documentclass) -%>
131
- \newcommand{\headfont}{\gtfamily\sffamily\bfseries}
132
- \usepackage{plext}
133
- <%- end -%>
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
- <%- if @config["highlight"] && @config["highlight"]["latex"] == "listings" -%>
136
- <%- if @config["language"] == "ja" -%>
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
- \lstnewenvironment{reviewemlistlst}[1][]{\lstset{#1}}{}
158
- \lstnewenvironment{reviewemlistnumlst}[1][]{\lstset{numbers=left, #1}}{}
159
- \lstnewenvironment{reviewlistlst}[1][]{\lstset{#1}}{}
160
- \lstnewenvironment{reviewlistnumlst}[1][]{\lstset{numbers=left, #1}}{}
161
- \lstnewenvironment{reviewsourcelst}[1][]{\lstset{#1}}{}
162
- \lstnewenvironment{reviewsourcenumlst}[1][]{\lstset{numbers=left, #1}}{}
163
- \lstnewenvironment{reviewcmdlst}[1][]{\lstset{backgroundcolor=\color{white}, frameround=tttt, frame=trbl, #1}}{}
164
- <%- end -%>
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
- \newenvironment{reviewimage}{%
167
- \begin{figure}[H]
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 <%= escape_latex(I18n.t("column_head"))%>: #2}}
221
-
222
- \newcommand{\reviewtablecaption}[1]{%
223
- \caption{#1}}
151
+ {\noindent\large <%= i18n.('column_head') %>: #2}}
224
152
 
225
- \WithSuffix\newcommand\reviewtablecaption*[1]{%
226
- \caption*{#1}}
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]{<%= escape_latex(I18n.t("columnname"))%> #1}
157
+ \newcommand{\reviewcolumnref}[2]{<%= i18n.('columnname') %> #1}
257
158
  \newcommand{\reviewsecref}[2]{#1}
258
159
 
259
160
  \newcommand{\reviewminicolumntitle}[1]{%
260
- {\large <%= escape_latex(I18n.t("memo_head"))%>: #1}\\}
161
+ {\large <%= i18n.('memo_head') %>: #1}\\}
261
162
 
262
163
  <%- if @config["toctitle"].present? -%>
263
164
  \renewcommand{\contentsname}{<%= escape_latex(@config["toctitle"]) %>}
264
- <%- elsif I18n.t("toctitle") -%>
265
- \renewcommand{\contentsname}{<%= escape_latex(I18n.t("toctitle")) %>}
165
+ <%- elsif i18n_t.('toctitle') -%>
166
+ \renewcommand{\contentsname}{<%= i18n.('toctitle') %>}
266
167
  <%- end -%>
267
168
 
268
- \newenvironment{reviewminicolumn}{%
269
- \vspace{1.5zw}\begin{screen}}{%
270
- \end{screen}\vspace{2zw}}
271
-
272
- \newcommand{\reviewkw}[1]{\textbf{\textgt{#1}}}
273
- \newcommand{\reviewami}[1]{\mask{#1}{A}}
274
- \newcommand{\reviewem}[1]{\textbf{#1}}
275
- \newcommand{\reviewstrong}[1]{\textbf{#1}}
276
- \newcommand{\reviewunderline}{\Underline}
277
-
278
- %% @<del> is ignored in LaTeX with default style
279
- \newcommand{\reviewstrike}[1]{#1}
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
- <%- if @config["texstyle"] -%>
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
- <% if @config['secnolevel'] %>
200
+ <%- if @config['secnolevel'] -%>
352
201
  \setcounter{secnumdepth}{<%= @config['secnolevel'] - 1 %>}
353
- <% end %>
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
- ## 表紙用PDFファイルを読み込む
362
- include_pdffiles = proc do |pdf_files|
363
- if ENV['STARTER_CHAPTER'].to_s.empty?
364
- target = ENV['STARTER_TARGET']; target = nil if target.to_s.empty?
365
- target ||= (@config['starter'] || {})['target']
366
- p = target == "ebook" ? '' : '%'
367
- [pdf_files].flatten.compact.each do |pdf_file|
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
- <%= p %>\includepdf[<%= @config["coverpdf_option"] %>]{./<%= @config["imagedir"] %>/<%= pdf_file %>}
370
- <%= p %>\addtocounter{page}{-1}
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
- <%- if @config["titlepage"] -%>
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
- \def\@subtitle{<%= escape_latex(@config.name_of("subtitle").to_s).gsub(/\n/) { "\\\\\n" } %>}
385
- \def\@pubevent{<%= escape_latex(@config["pubevent_name"].to_s) %>}
386
- \def\@latestpubhistory{<%= escape_latex(@config["pubhistory"].to_s.lines[-1]) %>}
387
- \makeatother
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{<%= 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"))))%>}
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
- <%- if @custom_titlepage -%>
289
+ <%-
290
+ ## 大扉(タイトルページ)を表示
291
+ if ! @config['titlepage']
292
+ # nothing
293
+ elsif @custom_titlepage
294
+ -%>
392
295
  <%= @custom_titlepage %>
393
- <%- else -%>
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
- <%- if @config["coverimage"] -%>
303
+ <%- if @config["coverimage"] -%>
304
+ <%- image_filepath = "./#{@config['imagedir']}/#{@config['coverimage']}" -%>
396
305
  \begin{center}
397
- \includegraphics[<%= @coverimageoption%>]{./<%= @config["imagedir"] %>/<%= @config["coverimage"] %>}
306
+ \includegraphics[<%= @coverimageoption %>]{<%= image_filepath %>}
398
307
  \end{center}
399
308
  \clearpage
400
- <%- end -%>
401
- \ifdefined\mytitlepage %%%%%%%%%%
402
- \mytitlepage % defined in 'sty/mytitlepage.sty'
403
- \else %%%%%%%%%%
404
- \thispagestyle{empty}
405
- \begin{center}%
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
- <%- end -%>
429
- <%- end -%>
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
- <%- if @config["colophon"] -%>
485
- <%- if @custom_colophonpage -%>
486
- <%= @custom_colophonpage %>
487
- <%- else -%>
488
- %% okuduke
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
- \medskip
522
-
523
- \begin{tabular}{ll}
524
- <%= @okuduke %>
525
- \end{tabular}
526
- % \\
527
-
528
- \medskip
529
- \noindent
530
- \rule[0pt]{\textwidth}{1pt} \\
531
- <%- if @config["rights"] -%>
532
- <%= @config.names_of("rights").map{|s| escape_latex(s)}.join('\\' + '\\') %> \\
533
- <%- end -%>
534
- <%- end -%>
535
- \fi %%%%%%%%%%
536
- <%- end -%>
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
- <%- if @config["backcover"] -%>
421
+ <%-
422
+ if @config['backcover']
423
+ -%>
540
424
  <%= @custom_backcoverpage %>
541
- <%- end -%>
542
-
543
- <%- ## 裏表紙用PDFファイルを読み込む -%>
544
- <%- include_pdffiles.call(@config["backcoverpdf_files"]) -%>
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}