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.
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
@@ -22,8 +22,8 @@
22
22
 
23
23
  %%% 白黒 (白黒印刷用、0.0が黒で1.0が白)
24
24
  \ifstreq{\starter@colormode}{mono}
25
- \definecolor{starter@deepcolor}{gray}{0.1} % dark gray
26
- \definecolor{starter@palecolor}{gray}{0.9} % light gray
25
+ \definecolor{starter@deepcolor}{gray}{0.1} % very dark gray
26
+ \definecolor{starter@palecolor}{gray}{0.9} % very light gray
27
27
  \definecolor{starter@chaptercolor}{gray}{0.4} % gray
28
28
  \definecolor{starter@sectioncolor}{gray}{0.1} % gray
29
29
  \definecolor{starter@subsectioncolor}{gray}{0.1} % dark gray
@@ -31,12 +31,31 @@
31
31
  \definecolor{starter@captioncolor}{gray}{0.4} % gray
32
32
  \definecolor{starter@quotecolor}{gray}{0.4} % gray
33
33
  \colorlet{starter@linkcolor}{black} % black
34
- \colorlet{starter@chaptitlepagecolor}{white} % white
35
- \definecolor{starter@programcolor}{gray}{0.9} % light gray
36
- \definecolor{starter@terminalcolor}{gray}{0.1} % dark black
37
- \definecolor{starter@program@indentcolor}{gray}{0.95} % ultra light gray
38
- \definecolor{starter@terminal@indentcolor}{gray}{0.18}% dark black
39
- \definecolor{starter@userinputcolor}{gray}{0.35} % dark gray
34
+ \colorlet{starter@chaptitlepagecolor}{white}% % white
35
+ %\definecolor{starter@chaptitlepagecolor}{gray}{0.9}% very light gray
36
+ %% プログラム用(フォント、背景、枠、折返し記号、改行記号、インデント記号)
37
+ \definecolor{starter@program@fontcolor}{gray}{0.0} % black
38
+ \definecolor{starter@program@backcolor}{gray}{0.9} % very light gray
39
+ \definecolor{starter@program@bordercolor}{gray}{0.5} % gray
40
+ \definecolor{starter@program@weakcolor}{gray}{0.5} % gray
41
+ \definecolor{starter@program@weakercolor}{gray}{0.75}% gray
42
+ \definecolor{starter@program@thincolor}{gray}{0.95} % ultra light gray
43
+ %% ターミナル用(フォント、背景、枠、折返し記号、改行記号、インデント記号)
44
+ \definecolor{starter@terminal@fontcolor}{gray}{1.0} % white
45
+ \definecolor{starter@terminal@backcolor}{gray}{0.1} % very dark black
46
+ \definecolor{starter@terminal@bordercolor}{gray}{0.5}% gray
47
+ \definecolor{starter@terminal@weakcolor}{gray}{0.5} % gray
48
+ \definecolor{starter@terminal@weakercolor}{gray}{0.25}% dark gray
49
+ \definecolor{starter@terminal@thincolor}{gray}{0.18} % ultra dark black
50
+ %% 出力結果用(フォント、背景、枠、折返し記号、改行記号、インデント記号)
51
+ \definecolor{starter@output@fontcolor}{gray}{0.0} % black
52
+ \definecolor{starter@output@backcolor}{gray}{1.0} % white
53
+ \definecolor{starter@output@bordercolor}{gray}{0.5} % gray
54
+ \definecolor{starter@output@weakcolor}{gray}{0.5} % gray
55
+ \definecolor{starter@output@weakercolor}{gray}{0.75} % gray
56
+ \definecolor{starter@output@thincolor}{gray}{0.95} % ultra light gray
57
+ %
58
+ \definecolor{starter@userinputcolor}{gray}{0.35} % dark gray
40
59
  \fi
41
60
 
42
61
  %%% カラー(RGB、PCやタブレット向け)
@@ -52,11 +71,29 @@
52
71
  \definecolor{starter@quotecolor}{HTML}{999999} % gray
53
72
  \colorlet{starter@linkcolor}{starter@deepcolor}% red
54
73
  \colorlet{starter@chaptitlepagecolor}{starter@palecolor}
55
- \definecolor{starter@programcolor}{HTML}{E5E5E5} % light gray
56
- \definecolor{starter@terminalcolor}{HTML}{191919} % dark black
57
- \definecolor{starter@program@indentcolor}{HTML}{F2F2F2} % ultra light gray
58
- \definecolor{starter@terminal@indentcolor}{HTML}{2E2E2E} % dark black
59
- \definecolor{starter@userinputcolor}{HTML}{595959}% dark gray
74
+ %% プログラム用(フォント、背景、枠、折返し記号、インデント記号)
75
+ \definecolor{starter@program@fontcolor}{HTML}{000000} % black
76
+ \definecolor{starter@program@backcolor}{HTML}{E5E5E5} % very light gray
77
+ \definecolor{starter@program@bordercolor}{HTML}{909090} % gray
78
+ \definecolor{starter@program@weakcolor}{HTML}{909090} % gray
79
+ \definecolor{starter@program@weakercolor}{HTML}{C0C0C0} % light gray
80
+ \definecolor{starter@program@thincolor}{HTML}{F2F2F2} % ultra light gray
81
+ %% ターミナル用(フォント、背景、枠、折返し記号、インデント記号)
82
+ \definecolor{starter@terminal@fontcolor}{HTML}{FFFFFF} % white
83
+ \definecolor{starter@terminal@backcolor}{HTML}{191919} % very dark black
84
+ \definecolor{starter@terminal@bordercolor}{HTML}{909090} % gray
85
+ \definecolor{starter@terminal@weakcolor}{HTML}{909090} % gray
86
+ \definecolor{starter@terminal@weakercolor}{HTML}{404040} % dark gray
87
+ \definecolor{starter@terminal@thincolor}{HTML}{2E2E2E} % ultra dark black
88
+ %% 出力結果用(フォント、背景、枠、折返し記号、インデント記号)
89
+ \definecolor{starter@output@fontcolor}{HTML}{000000} % black
90
+ \definecolor{starter@output@backcolor}{HTML}{FFFFFF} % white
91
+ \definecolor{starter@output@bordercolor}{HTML}{909090} % gray
92
+ \definecolor{starter@output@weakcolor}{HTML}{909090} % gray
93
+ \definecolor{starter@output@weakercolor}{HTML}{C0C0C0} % light gray
94
+ \definecolor{starter@output@thincolor}{HTML}{F2F2F2} % ultra light gray
95
+ %
96
+ \definecolor{starter@userinputcolor}{HTML}{595959} % dark gray
60
97
  \fi
61
98
 
62
99
  %%% カラー(CYMK、カラー印刷向け)
@@ -71,9 +108,27 @@
71
108
  \definecolor{starter@quotecolor}{cmyk}{0.0,0.0,0.0,0.5} % gray
72
109
  \colorlet{starter@linkcolor}{starter@deepcolor} % red
73
110
  \colorlet{starter@chaptitlepagecolor}{starter@palecolor}
74
- \definecolor{starter@programcolor}{cmyk}{0.0,0.0,0.0,0.1} % light gray
75
- \definecolor{starter@terminalcolor}{cmyk}{0.0,0.0,0.0,0.9} % dark black
76
- \definecolor{starter@program@indentcolor}{cmyk}{0.0,0.0,0.0,0.95} % ultra light gray
77
- \definecolor{starter@terminal@indentcolor}{cmyk}{0.0,0.0,0.0,0.18}% dark black
111
+ %% プログラム用(フォント、背景、枠、折返し記号、改行記号、インデント記号)
112
+ \definecolor{starter@program@fontcolor}{cmyk}{0.0,0.0,0.0,1.0} % black
113
+ \definecolor{starter@program@backcolor}{cmyk}{0.0,0.0,0.0,0.1} % very light gray
114
+ \definecolor{starter@program@bordercolor}{cmyk}{0.0,0.0,0.0,0.5} % gray
115
+ \definecolor{starter@program@weakcolor}{cmyk}{0.0,0.0,0.0,0.5} % gray
116
+ \definecolor{starter@program@weakercolor}{cmyk}{0.0,0.0,0.0,0.75} % light gray
117
+ \definecolor{starter@program@thincolor}{cmyk}{0.0,0.0,0.0,0.05} % ultra light gray
118
+ %% ターミナル用(フォント、背景、枠、折返し記号、改行記号、インデント記号)
119
+ \definecolor{starter@terminal@fontcolor}{cmyk}{0.0,0.0,0.0,0.0} % white
120
+ \definecolor{starter@terminal@backcolor}{cmyk}{0.0,0.0,0.0,0.9} % very dark black
121
+ \definecolor{starter@terminal@bordercolor}{cmyk}{0.0,0.0,0.0,0.5} % gray
122
+ \definecolor{starter@terminal@weakcolor}{cmyk}{0.0,0.0,0.0,0.5} % gray
123
+ \definecolor{starter@terminal@weakercolor}{cmyk}{0.0,0.0,0.0,0.75}% dark gray
124
+ \definecolor{starter@terminal@thincolor}{cmyk}{0.0,0.0,0.0,0.85} % ultra dark black
125
+ %% 出力結果用(フォント、背景、枠、折返し記号、改行記号、インデント記号)
126
+ \definecolor{starter@output@fontcolor}{cmyk}{0.0,0.0,0.0,1.0} % black
127
+ \definecolor{starter@output@backcolor}{cmyk}{0.0,0.0,0.0,0.0} % white
128
+ \definecolor{starter@output@bordercolor}{cmyk}{0.0,0.0,0.0,0.5} % gray
129
+ \definecolor{starter@output@weakcolor}{cmyk}{0.0,0.0,0.0,0.5} % gray
130
+ \definecolor{starter@output@weakercolor}{cmyk}{0.0,0.0,0.0,0.75} % light gray
131
+ \definecolor{starter@output@thincolor}{cmyk}{0.0,0.0,0.0,0.05} % ultra light gray
132
+ %
78
133
  \definecolor{starter@userinputcolor}{cmyk}{0.0,0.0,0.0,0.35}% dark gray
79
134
  \fi
@@ -41,7 +41,7 @@
41
41
  \newcommand{\Heading@heading}[4]{% #1: Chapter, Section, etc, #2: 番号, #3: タイトル, #4: 目次用タイトル
42
42
  %% タイトル前の余白
43
43
  \@eval{#1@topmargin}{#2}% % #2: 番号
44
- \pagebreak[0]% % 必要なら改ページをする
44
+ %;\pagebreak[0]% % 必要なら改ページをする ← TODO:要調査
45
45
  %% 目次をクリックしたときのジャンプ先(アンカー)
46
46
  \@eval{#1@anchor}{#2}% % #2: 番号
47
47
  %% 番号とタイトル
@@ -107,8 +107,10 @@
107
107
  \chaptermark{#2}% % ページヘッダに章タイトルを設定
108
108
  }
109
109
  \newcommand{\Chapter@topmargin}[1]{%
110
- \if@openleft\cleardoublepage\else%
111
- \if@openright\cleardoublepage\else\clearpage\fi\fi%
110
+ \if@Chapter@clearpage@%
111
+ \if@openleft\cleardoublepage\else%
112
+ \if@openright\cleardoublepage\else\clearpage\fi\fi%
113
+ \fi%
112
114
  \plainifnotempty% 元: \thispagestyle{plain}%
113
115
  \global\@topnum\z@%
114
116
  %\vspace*{2.0\Cvs}% % (jsbook.cls) 2\Cvs
@@ -151,6 +153,8 @@
151
153
  \ifstreq{\@align}{center}\centering\fi % 中央寄せ
152
154
  }
153
155
  \newif\if@FirstSectionPerChapter@ % 章における最初の節ならtrue
156
+ \newif\if@Chapter@clearpage@ % trueなら章タイトル直前で改ページ
157
+ \@Chapter@clearpage@true
154
158
 
155
159
  %%% 章タイトルのカスタマイズ:下に細い下線
156
160
  \iffalse
@@ -207,6 +211,7 @@
207
211
  \fi\fi%
208
212
  }
209
213
  \newcommand{\Section@heading}[3]{%
214
+ \pagebreak[1]% % 節タイトルの直前では改ページしやすくする
210
215
  \Heading@heading{Section}{#1}{#2}{#3}%
211
216
  }
212
217
  \newcommand{\Section@anchor}[1]{% #1: 節番号
@@ -276,11 +281,11 @@
276
281
  \iffalse
277
282
  \else\ifstreq{\starter@section@decoration}{grayback}
278
283
 
279
- \renewcommand{\Section@number}[1]{% #1: 章番号
284
+ \renewcommand{\Section@number}[1]{% #1: 節番号
280
285
  \textcolor{starter@palecolor}{% % タイトルの背景色(薄いグレー)
281
286
  \rlap{\rule[-0.6zh]{\textwidth}{2zh}}% % 本文幅の背景色
282
287
  }%
283
- \textcolor{starter@sectioncolor}{% % 章番号の背景色(主色)
288
+ \textcolor{starter@sectioncolor}{% % 節番号の背景色(主色)
284
289
  \rlap{\rule[-0.6zh]{3.5zw}{2zh}}%% 全角3.5文字分の背景色
285
290
  }%
286
291
  \makebox[3.5zw][c]{\textcolor{white}{#1}}% 白抜き文字で章番号
@@ -290,8 +295,8 @@
290
295
  %%% 節タイトルのカスタマイズ:節番号を白抜き(背景色がないので複数行向き)
291
296
  \else\ifstreq{\starter@section@decoration}{numbox}
292
297
 
293
- \renewcommand{\Section@number}[1]{% #1: 章番号
294
- \textcolor{starter@sectioncolor}{% % 章番号の背景色(主色)
298
+ \renewcommand{\Section@number}[1]{% #1: 節番号
299
+ \textcolor{starter@sectioncolor}{% % 節番号の背景色(主色)
295
300
  \rlap{\rule[-0.6zh]{3.5zw}{2zh}}%% 全角3.5文字分の背景色
296
301
  }%
297
302
  \makebox[3.5zw][c]{\textcolor{white}{#1}}% 白抜き文字で章番号
@@ -301,24 +306,58 @@
301
306
  %%% 節タイトルのカスタマイズ:節タイトルに下線を引く
302
307
  \else\ifstreq{\starter@section@decoration}{underline}
303
308
 
304
- \renewcommand{\Section@number}[1]{% #1: 章番号
309
+ \renewcommand{\Section@number}[1]{% #1: 節番号
305
310
  \textcolor{starter@sectioncolor}{% % 線の色
306
311
  \rlap{\rule[-0.6zh]{\textwidth}{0.2pt}}% 本文幅の下線
307
312
  \rlap{\rule[-0.6zh]{0.75zw}{2zh}}% % 左端に太い縦線
308
313
  }%
309
- \hspace{1.5zw}#1\hspace{1.0zw}% % 章番号(と空白)
314
+ \hspace{1.5zw}#1\hspace{1.0zw}% % 節番号(と空白)
310
315
  }%
311
316
 
312
317
  %%% 節タイトルのカスタマイズ:節タイトル右に太い縦線(下線がないので複数行向き)
313
318
  \else\ifstreq{\starter@section@decoration}{leftline}
314
319
 
315
- \renewcommand{\Section@number}[1]{% #1: 章番号
320
+ \renewcommand{\Section@number}[1]{% #1: 節番号
316
321
  \textcolor{starter@sectioncolor}{% % 線の色
317
322
  \rlap{\rule[-0.6zh]{0.75zw}{2zh}}% 左端に太い縦線
318
323
  }%
319
- \hspace{1.5zw}#1\hspace{1.0zw}% % 章番号(と空白)
324
+ \hspace{1.5zw}#1\hspace{1.0zw}% % 節番号(と空白)
320
325
  }%
321
326
 
327
+ %%% 節タイトルのカスタマイズ:大きな円(複数行向き)
328
+ \else\ifstreq{\starter@section@decoration}{circle}
329
+
330
+ \renewcommand{\Section@number}[1]{% #1: 節番号
331
+ \hspace{-0.40\Cwd}% % 円をちょっとだけ右にはみ出させる
332
+ \rlap{{% % 現在位置を変えずに右側に表示
333
+ \parbox[c]{6\Cwd}{% % 全角6文字分の幅で上下の中央揃え
334
+ \fontsize{6\Cwd}{0}\selectfont%% 文字サイズを大きくする
335
+ \textcolor{starter@sectioncolor}{●}% 大きな円
336
+ %%% if you prefer math symbol rather than CJK font
337
+ %\fontsize{7\Cwd}{0}\selectfont%
338
+ %\textcolor{starter@sectioncolor}{\ding{108}}% % requires \usepackage{pifont}
339
+ }%
340
+ }}%
341
+ \hspace{-0.20\Cwd}% % 節番号をちょっとだけ右にずらす
342
+ \makebox[6\Cwd][c]{% % 全角6文字分の幅で左右の中央揃え
343
+ \textcolor{white}{\raisebox{-0.14\Cwd}{#1}}% 白い文字で節番号を表示
344
+ }%
345
+ \hspace{0.60\Cwd}% % ちょっとだけ右にずらしていたのを戻す
346
+ }%
347
+ \renewcommand{\Section@title}[2]{{% #1: 節番号, #2: 節タイトル
348
+ \setlength{\@tempdima}{\textwidth}%% 本文幅
349
+ \edef\@tempa{#1}%
350
+ \ifx\@tempa\empty\else% % 節番号があれば
351
+ \Section@number{#1}% % 節番号を表示
352
+ \addtolength{\@tempdima}{-6\Cwd}%% 本文幅から全角6文字分引く
353
+ \fi%
354
+ \parbox[c]{\@tempdima}{% % 本文幅から全角6文字分引いた幅で上下の中央揃え
355
+ \baselineskip=0.85\baselineskip% % 行間隔を狭くする
356
+ #2% % 節タイトルを表示(\parboxのおかげで2行にも対応)
357
+ }%
358
+ \par% % 改行がわりの改段落
359
+ }}
360
+
322
361
  %%% 節タイトルのカスタマイズ:装飾なし
323
362
  \else
324
363
 
@@ -464,7 +503,7 @@
464
503
 
465
504
  %%% 段 (Paragraph)
466
505
  \newcommand\Paragraph{%
467
- \@ifstar{\Paragraph@title}{\@Paragraph@title}% '*' がついていたら読み飛ばす
506
+ \@ifstar{\Paragraph@title}{\Paragraph@title}% '*' がついていたら読み飛ばす
468
507
  }
469
508
  \newcommand\Paragraph@title[1]{% % #1: タイトル
470
509
  \Paragraph@separator% % 少しだけ余白を空ける
@@ -480,7 +519,7 @@
480
519
 
481
520
  %%% 小段 (Subparagraph)
482
521
  \newcommand\Subparagraph{%
483
- \@ifstar{\Subparagraph@title}{\@Subparagraph@title}% '*' がついていたら読み飛ばす
522
+ \@ifstar{\Subparagraph@title}{\Subparagraph@title}% '*' がついていたら読み飛ばす
484
523
  }
485
524
  \newcommand\Subparagraph@title[1]{% % #1: タイトル
486
525
  \Subparagraph@separator% % 少しだけ余白を空ける
@@ -512,3 +551,11 @@
512
551
  \def\subsubsection{\Subsubsection}
513
552
  \def\paragraph{\Paragraph}
514
553
  \def\subparagraph{\Subparagraph}
554
+
555
+
556
+ %%% 索引ページのタイトルデザインを変更
557
+ \renewcommand{\@makeschapterhead}[1]{%
558
+ \@Chapter@clearpage@false% % もとの \@makeschapterhead は改ページしないので、それに倣う
559
+ \Chapter*[]{#1}% % まえがきや目次と同じタイトルデザインを使う
560
+ \@Chapter@clearpage@true%
561
+ }
@@ -0,0 +1,894 @@
1
+ %%% -*- coding: utf-8 -*-
2
+
3
+ %%% 目次やリンクの色を指定する。印刷用なら黒にする。
4
+ \hypersetup{colorlinks=true,linkcolor=starter@linkcolor,urlcolor=starter@linkcolor}
5
+ %\hypersetup{colorlinks=false} % リンク機能をオフにする
6
+
7
+
8
+
9
+ %%% 「@<strong>{ ... }」を太字のゴシック体にする(「@<b>{ ... }」は明朝体のまま)。
10
+ \renewcommand{\reviewstrong}[1]{\textbf{\gtfamily\sffamily #1}}
11
+
12
+ %%% 「@<em>{ ... }」をゴシック体にする。
13
+ \renewcommand{\reviewem}[1]{{\gtfamily\sffamily #1}}
14
+
15
+ %%% 「@<del>{ ... }」(取り消し線)が効くようにする。
16
+ %%% (See https://qiita.com/takahashim/items/5c1af2941a1ce9fa5919)
17
+ \usepackage{ulem}
18
+ \renewcommand{\reviewstrike}[1]{\sout{#1}}
19
+ %\usepackage{jumoline}
20
+ %\renewcommand{\reviewstrike}[1]{\Midline{#1}} % \seqsplit{}と相性が悪い?
21
+
22
+ %%% 目立たせない(「@<strong>{}」の反対)
23
+ \newcommand{\starterweak}[1]{%
24
+ \textcolor{gray}{#1}%
25
+ }
26
+
27
+ %%% ふきだし説明の文字色をグレーに
28
+ \renewcommand{\reviewballoon}[1]{%
29
+ \textcolor{gray}{←#1}
30
+ }
31
+
32
+ %% 「@<tt>{}」を上書き
33
+ \renewcommand{\reviewtt}[1]{{%
34
+ \frenchspacing% % 「! ? : .」の直後の空白が2文字分になるのを防ぐ
35
+ \texttt{#1}% % 等幅フォント
36
+ }}
37
+
38
+ %% 「@<code>{...}」を薄いグレーで囲む
39
+ %% (ただし章や節のタイトル、および各種キャプションでは囲まない)
40
+ \ifx\starter@inlinecode@gray\empty
41
+ \renewcommand{\reviewcode}[2][]{{%
42
+ \frenchspacing% % 「! ? : .」の直後の空白が2文字分になるのを防ぐ
43
+ %\obeyspaces% % (効果なし, why?)
44
+ %\,% % ほんの少しスペースを入れる
45
+ \texttt{#2}%
46
+ %\,% % ほんの少しスペースを入れる
47
+ }}
48
+ \else
49
+ \renewcommand{\reviewcode}[2][]{{% % #1:空 or 'headline' or 'caption'
50
+ \frenchspacing% % 「! ? : .」の直後の空白が2文字分になるのを防ぐ
51
+ %\obeyspaces% % (効果なし, why?)
52
+ \,% % ほんの少しスペースを入れる
53
+ \edef\@tmpA{#1}%
54
+ \ifx\@tmpA\empty% % #1が空(未指定)なら
55
+ \colorbox{shadecolor}{\texttt{#2}}% % 背景色を薄いグレーにして等幅フォントで表示
56
+ \else% % #1がheadlineやcaptionなら
57
+ \texttt{#2}% % 等幅フォントで表示(背景色なし)
58
+ \fi%
59
+ \,% % ほんの少しスペースを入れる
60
+ }}
61
+ \fi
62
+
63
+ \def\starterspacechar{\hspace{0pt}\mbox{ }\hspace{0pt}}
64
+
65
+ %%% ファイル名を表す
66
+ \newcommand{\starterfile}[1]{%
67
+ {\gtfamily\sffamily #1}% % ゴシック体で表示
68
+ }
69
+
70
+ %%% ユーザ入力を表す
71
+ \newcommand{\starteruserinput}[1]{%
72
+ \ifempty{\starter@codeblock@fontcolor}%
73
+ \def\@fontcolor{black}%
74
+ \else%
75
+ \def\@fontcolor{\starter@codeblock@fontcolor}%
76
+ \fi%
77
+ \textcolor{starter@userinputcolor}{% % 下線の色
78
+ \underline{% % 下線(LaTeX標準)
79
+ %\uline{% % 下線(ulem.sty)
80
+ \textcolor{\@fontcolor}{#1}%
81
+ }%
82
+ }%
83
+ }
84
+
85
+ %%% ルビをふるのに必要(例:@<ruby>{漢, おとこ})
86
+ \usepackage{okumacro}
87
+
88
+
89
+
90
+ %%% 箇条書き(順序なし)の上下の余白を、行間の0.5倍から0.25倍へと減らす
91
+ \newenvironment{starteritemize}{%
92
+ \ifnum\@listdepth=0%
93
+ \def\@listi{%
94
+ \@listI%
95
+ \topsep 0.25\baselineskip% % 上下の余白を減らす(original: 0.5\baselineskip)
96
+ }%
97
+ \fi%
98
+ \begin{itemize}%
99
+ }{%
100
+ \end{itemize}%
101
+ }
102
+
103
+ %%% 箇条書き(順序つき)の上下の余白を、行間の0.5倍から0.25倍へと減らす
104
+ \newenvironment{starterenumerate}{%
105
+ \ifnum\@listdepth=0%
106
+ \def\@listi{%
107
+ \@listI%
108
+ \topsep 0.25\baselineskip% % 上下の余白を減らす(original: 0.5\baselineskip)
109
+ }%
110
+ \fi%
111
+ \begin{enumerate}%
112
+ }{%
113
+ \end{enumerate}%
114
+ }
115
+
116
+ %%% 順序なし箇条書きの行頭文字を変更
117
+ \usepackage{amssymb} % \blacktriangleright や \bigstar のために必要
118
+ %\renewcommand{\labelitemi}{$\blacktriangleright$} % 深さ1段目:小さい黒丸→小さい三角へ
119
+ \renewcommand{\labelitemii}{$\circ$} % 深さ2段目:「-」→小さい白丸へ
120
+ %\renewcommand{\labelitemiii}{{\small$\bigstar$}} % 深さ3段目:「*」→星形へ
121
+
122
+
123
+
124
+
125
+ %%% 奥付 (colophon) が最終ページになるよう調整する。
126
+ %%% (奥付が右ページだと、次ページである最終ページが空ページになるため)
127
+ \renewcommand{\reviewcolophon}[0]{%
128
+ \clearpage % 改ページ
129
+ \ifstreq{\starter@target}{tablet}% タブレット向けなら何も調整しない
130
+ \else\if@openright % \documentclass で openright が指定されていれば
131
+ \pltx@cleartoleftpage % 左ページ(偶数ページ)になるよう調整する
132
+ \else\if@openleft % \documentclass で openleft が指定されていれば
133
+ \pltx@cleartorightpage % 右ページ(奇数ページ)になるよう調整する
134
+ \fi\fi\fi
135
+ }
136
+
137
+ %%% 右起こし(奇数ぺージ始まり)にしない場合でも、大扉とまえがきの間に
138
+ %%% 空白ページが入ることがあるので、修正する。
139
+ \if@openright\else\if@openleft\else % 右起こしでも左起こしでもない場合だけ、
140
+ \renewcommand\frontmatter{% % 大扉やまえがきの開始を表すコマンドを再定義する。
141
+ %\pltx@cleartooddpage % 削除
142
+ \clearpage % 追加
143
+ \@mainmatterfalse
144
+ \pagenumbering{roman}
145
+ }
146
+ \fi\fi
147
+
148
+ %%% 右起こし(奇数ぺージ始まり)にしない場合でも、目次と第1章との間に
149
+ %%% 空白ページが入ることがあるので、修正する。
150
+ \if@openright\else\if@openleft\else % 右起こしでも左起こしでもない場合だけ、
151
+ \renewcommand\mainmatter{% % 本文の開始を表すコマンドを再定義する。
152
+ %\pltx@cleartooddpage % 削除
153
+ \clearpage % 追加
154
+ \@mainmattertrue
155
+ \pagenumbering{arabic}
156
+ }
157
+ \fi\fi
158
+
159
+
160
+
161
+ %%% ページヘッダーの形式を変更(fancyhdr.styを使用)
162
+ \newcommand{\pageheaderfont}{\small\gtfamily\sffamily} % ゴシック体
163
+ %\newcommand{\pageheaderfont}{\small\gtfamily\sffamily\bfseries} % ゴシック体、太字
164
+ %%% 紙書籍のような右起こしの場合(左ページに章タイトル、右ページに節タイトル)
165
+ \lhead[\pageheaderfont\leftmark]{}
166
+ \rhead[]{\pageheaderfont\rightmark}
167
+ %%% タブレット向けのような両起こしの場合(両ページに章タイトルと節タイトル)
168
+ %\lhead{\pageheaderfont\leftmark}
169
+ %\rhead{\pageheaderfont\rightmark}
170
+
171
+ %%% ページ番号のスタイル
172
+ %\newcommand{\pagenumberstyle}{\thepage} % 例:「1」
173
+ %\newcommand{\pagenumberstyle}{\itshape\bfseries\thepage} % 太字、斜体
174
+ \newcommand{\pagenumberstyle}{\rmfamily --\ \thepage\ --} % 例:「-- 1 --」
175
+ % \newcommand{\pagenumberstyle}{\itshape --\ \thepage\ --} % 斜体
176
+
177
+ %%% ページ番号をページフッタに表示(fancyhdr.styを使用)
178
+ \fancyfoot{} % ページフッタをクリア
179
+ \cfoot{\pagenumberstyle} % ページフッタの真ん中に表示
180
+ %\lfoot[\pagenumberstyle]{} % 偶数ページの左下に表示
181
+ %\rfoot[]{\pagenumberstyle} % 奇数ページの右下に表示
182
+ \fancypagestyle{plainhead}{ % 章タイトルページのスタイル
183
+ \fancyhead{} % ページヘッダなし
184
+ \fancyfoot{} % ページフッタをクリア
185
+ \cfoot{\pagenumberstyle} % ページフッタの真ん中に表示
186
+ %\lfoot[\pagenumberstyle]{} % 偶数ページの左下に表示
187
+ %\rfoot[]{\pagenumberstyle} % 奇数ページの右下に表示
188
+ \renewcommand{\headrulewidth}{0pt} % ページヘッダの区切り線をなくす
189
+ \renewcommand{\footrulewidth}{0pt} % ページフッタの区切り線をなくす
190
+ }
191
+
192
+ %%% ページヘッダを構成する要素を余計なことに Re:VIEW が上書きしちゃってるので、
193
+ %%% オリジナルの定義を jsbook.cls からコピーして元に戻す。
194
+ \def\chaptermark#1{%
195
+ \markboth{%
196
+ \ifnum \c@secnumdepth >\m@ne%
197
+ \if@mainmatter%
198
+ \if@omit@number\else%
199
+ \@chapapp\thechapter\@chappos\hskip1zw%
200
+ \fi%
201
+ \fi%
202
+ \fi%
203
+ #1%
204
+ }{}%
205
+ }%
206
+ \def\sectionmark#1{%
207
+ \markright{%
208
+ \ifnum \c@secnumdepth >\z@ \thesection \hskip1zw\fi%
209
+ #1%
210
+ }%
211
+ }%
212
+
213
+
214
+
215
+ %%% 章 (Chapter) のタイトルを独立したページにするコマンド。
216
+ %%% 独立したページには、章タイトルと、章の概要と、章ごとの目次を含める。
217
+ \usepackage{pagecolor} % for '\newpagecolor'
218
+ \usepackage{afterpage} % for '\afterpage'
219
+ \newcommand{\makechaptitlepage}[1]{%
220
+ \pagecolor{starter@chaptitlepagecolor} % ページに背景色をつける
221
+ %\addtolength{\linewidth}{-\parindent} % 目次の右側余白が左側より1文字分狭いことへの対策
222
+ \def\arg{#1} % '\ifx#1{toc}' がうまく動作してくれないので、その対策
223
+ \def\toc{toc}
224
+ \def\tocsec{toc=section}
225
+ \def\tocsub{toc=subsection}
226
+ \def\tocon{toc=on}
227
+ \def\tocoff{toc=off}
228
+ \ifx\arg\tocon
229
+ \setcounter{minitocdepth}{1} % 目次に出すのは節(Section)まで
230
+ \minitoc % 章ごとの目次
231
+ \else\ifx\arg\tocsec
232
+ \setcounter{minitocdepth}{1} % 目次に出すのは節(Section)まで
233
+ \minitoc % 章ごとの目次
234
+ \else\ifx\arg\tocsub
235
+ \setcounter{minitocdepth}{2} % 目次に出すのは項(SubSection)まで
236
+ \minitoc % 章ごとの目次
237
+ \else\ifx\arg\tocoff
238
+ \else
239
+ % TODO: invalid argument
240
+ \fi\fi\fi\fi
241
+ \clearpage% % 改ページ
242
+ \pagecolor{none}% % ページの背景色をなくす
243
+ }
244
+ %%% 章ごとの目次
245
+ %%% ('nohints' は、裏表紙の直後に空白ページができるのを防ぐために必要)
246
+ \usepackage[japanese,nohints]{minitoc} % 章ごとの目次を作る
247
+ \AtBeginDocument{% % \begin{document} で実行するコマンドを登録
248
+ \dominitoc
249
+ %\listoffigures
250
+ %\listoftables
251
+ }
252
+ \setcounter{minitocdepth}{1}% % 目次に出すのはSectionまで(Subsectionは出さない)
253
+ %\setlength{\mtcindent}{3zw} % 目次左右の余白幅(左右の幅であることに注意)
254
+ %\mtcsetoffset{minitoc}{3zw} % 目次左のインデント幅(テキスト幅は変わらず)
255
+ %\setlength{\mtcskipamount}{\bigskipamount}
256
+ \mtcsetrules{*}{off} % 章ごとの目次の上下に罫線を入れない
257
+ \mtcsettitle{minitoc}{【この章の内容】} % 章ごとの目次のタイトル
258
+ %\mtcsettitle{minitoc}{【{\@chapapp\thechapter\@chappos}の内容】} % または
259
+ \renewcommand{\mtcSfont}{\rmfamily\small} % 章ごとの目次のフォント
260
+ %\renewcommand{\mtcSfont}{\small\gtfamily\sffamily\color{white}} % 色をつける場合
261
+ \mtcsettitlefont{minitoc}{% % 章ごとの目次のタイトルを設定
262
+ \gtfamily\sffamily % ゴシック体、サンセリフ体
263
+ \hspace{2zw} % 左側のインデント
264
+ }
265
+
266
+
267
+
268
+ %%% 現在位置に画像が入りきらない場合、画像は次のページに回される。
269
+ %%% その際、現在位置に大きなスペースが空くのを防ぐために、
270
+ %%% 後続のテキストを現在位置に流し込むようにする。
271
+ \renewenvironment{reviewimage}[1][]{%
272
+ \begin{starter@image}{#1}%
273
+ }{%
274
+ \end{starter@image}%
275
+ }
276
+ %
277
+ \newenvironment{starter@image}[1]{%
278
+ \vspace{0.8zw} % 画像上の余白を調整(少し増やす)
279
+ \begin{figure}[#1]
280
+ %\begin{center} % center環境は余分な余白がつくので使わない
281
+ \centering % \centeringを使うと余分な余白がつかない
282
+ }{%
283
+ %\end{center}
284
+ \end{figure}
285
+ \vspace{-0.8zw} % 画像下の余白を調整(少し減らす)
286
+ }
287
+ %
288
+ \renewenvironment{reviewdummyimage}{%
289
+ \begin{reviewimage}
290
+ \begin{alltt}
291
+ }{%
292
+ \end{alltt}
293
+ \end{reviewimage}
294
+ }
295
+
296
+
297
+
298
+ %%% 表のマクロを上書き
299
+ %\newenvironment{reviewtable}[1]{%
300
+ % \begin{center}\small\setlength{\baselineskip}{1.2zw}
301
+ % \begin{tabular}{#1}}{%
302
+ % \end{tabular}
303
+ % \end{center}}
304
+ \renewenvironment{reviewtable}[1]{%
305
+ %\small\setlength{\baselineskip}{1.2zw}%
306
+ \startertablefont\setlength{\baselineskip}{1.2zw}%
307
+ \begin{tabular}{#1}%
308
+ }{%
309
+ \end{tabular}%
310
+ }
311
+ \def\startertablefont{\small}
312
+
313
+
314
+ %%% //imgtable のキャプション
315
+ \renewcommand{\reviewimgtablecaption}[1]{%
316
+ %\caption{#1}\vspace{-3mm}% % original
317
+ \caption{#1}%
318
+ }
319
+
320
+
321
+
322
+ %%% コラムが複数のページにまたがるとき、次のページに続いていることが
323
+ %%% わかるようにするために、ページ境界では上下の線を引かない。
324
+ \renewenvironment{reviewcolumn}{%
325
+ %\begin{framed}% % original
326
+ \begin{oframed}%
327
+ }{%
328
+ %\end{framed}% % original
329
+ \end{oframed}%
330
+ \vspace{2zw}%
331
+ }
332
+
333
+ %%% コラムのタイトルを変更する
334
+ \renewcommand{\reviewcolumnhead}[2]{%
335
+ %{\noindent\large ■コラム: #2}% % original
336
+ %{\noindent\large\gtfamily\sffamily\bfseries ■コラム:#2}% % 太字のゴシック
337
+ {\noindent\large\gtfamily\sffamily\bfseries 【コラム】#2}% % 太字のゴシック
338
+ \vspace{2mm}%
339
+ }
340
+
341
+
342
+
343
+ %%% @<hd>{} や @<subsec>{} で、節や項へのリンクを作成
344
+ %%% (config.yml で「chapterlink: true」の設定が必要)
345
+ \newcommand{\startersecref}[2]{%
346
+ 「\hyperref[#2]{#1}」(p.\pageref{#2})% % 節や項のタイトルがリンク
347
+ %{#1}(\hyperref[#2]{p.\pageref{#2}})% % ページ番号がリンク
348
+ }
349
+ \newcommand{\startersubsecref}[2]{%
350
+ 「\hyperref[#2]{{\startersubsectionsymbol}#1}」(p.\pageref{#2})% % 節や項のタイトルがリンク
351
+ %{\startersubsectionsymbol}{#1}(\hyperref[#2]{p.\pageref{#2}})% % ページ番号がリンク
352
+ }
353
+ \newcommand{\startersubsubsecref}[2]{%
354
+ 「\hyperref[#2]{#1}」(p.\pageref{#2})% % 節や項のタイトルがリンク
355
+ %{#1}(\hyperref[#2]{p.\pageref{#2}})% % ページ番号がリンク
356
+ }
357
+
358
+
359
+
360
+ %%% 導入文(リード文)
361
+ \newenvironment{starterlead}{%
362
+ \begin{quotation}% % または \begin{abstract}
363
+ }{%
364
+ \end{quotation}% % または \end{abstract}
365
+ }
366
+
367
+
368
+
369
+ %%% 章 (Chaper) の概要
370
+ %%% (導入文(リード文)と違うことに注意)
371
+ \newenvironment{starterabstract}{%
372
+ \addtolength{\rightskip}{2.5zw}% % 右の余白を2.5文字分広げる (default: 0pt)
373
+ \addtolength{\leftskip}{2.5zw}% % 左の余白を2.5文字分広げる (default: 5pt)
374
+ \gtfamily\sffamily% % ゴシック体
375
+ \small% % 少し小さめ
376
+ }{%
377
+ \par%
378
+ \addvspace{2\Cvs}% % 下に1行空ける
379
+ }
380
+
381
+
382
+ %%% 章 (Chapter) の著者
383
+ \newcommand{\starterchapterauthor}[1]{%
384
+ \starter@chapterauthor{#1}%
385
+ }
386
+ \newcommand{\starter@chapterauthor}[1]{%
387
+ \setlength{\@tempdima}{\lastskip}% % 直前のスペースの高さを保存
388
+ \addvspace{-\lastskip}% % 直前のスペースをキャンセル
389
+ \starter@chapterauthor@topmargin% % スペースを空ける
390
+ \begingroup% % flushright環境は上下に余分な空きが入るので使わない
391
+ \raggedleft% % テキストを右寄せ
392
+ \starter@chapterauthor@name{#1}% % 著者名を表示
393
+ \par% % 改行がわりの改段落
394
+ \endgroup%
395
+ \addvspace{\@tempdima}% % 保存した高さ分のスペースを空ける
396
+ }
397
+ \newcommand{\starter@chapterauthor@name}[1]{%
398
+ \gtfamily\sffamily% % フォントをゴシック体に
399
+ [著]#1% % 著者名
400
+ }
401
+ \newcommand{\starter@chapterauthor@topmargin}{%
402
+ \addvspace{1\Cvs}% % 1行分の空き
403
+ }
404
+
405
+
406
+ %%% 引用(複数段落に対応)
407
+ \newenvironment{starterquote}{%
408
+ \begin{starter@leftbar}{3pt}{starter@quotecolor}%
409
+ }{%
410
+ \end{starter@leftbar}%
411
+ }
412
+ %
413
+ \newenvironment{starter@leftbar}[2]{% % #1: 太さ、#2: 色
414
+ %% framed.sty の機能を使って、文章の左側に縦棒を入れる
415
+ \def\FrameCommand{\textcolor{#2}{\vrule width #1} \hspace{10pt}}%
416
+ \MakeFramed{%
417
+ \advance\hsize-\width%
418
+ \advance\hsize-2\starter@quote@sidemargin% ノート環境では左右に余白を空ける
419
+ \advance\rightskip -\starter@quote@sidemargin% 右マージンが二重にかかるのを避ける
420
+ \advance\leftskip -\starter@quote@sidemargin% 左マージンが二重にかかるのを避ける
421
+ \FrameRestore%
422
+ }%
423
+ }{%
424
+ \endMakeFramed%
425
+ }
426
+ %
427
+ \newlength{\starter@quote@sidemargin} % 引用部の左右の余白幅(ノート環境で使う)
428
+
429
+
430
+
431
+ %%% 画像のまわりに線をつける
432
+ \newcommand{\starterimageframe}[1]{{%
433
+ \setlength{\fboxrule}{0.1pt}%
434
+ \fcolorbox{lightgray}{white}{#1}%
435
+ }}
436
+
437
+
438
+
439
+ %%% テキストの横に画像を配置する
440
+ %%% (注意:途中での改ページはできない、テキストの回り込みはされない、脚注は使えない)
441
+ \newenvironment{startersideimage}[6]{%
442
+ \begin{starter@sideimage}{#1}{#2}{#3}{#4}{#5}{#6}%
443
+ }{%
444
+ \end{starter@sideimage}%
445
+ }
446
+ \newenvironment{starter@sideimage}[6]{%
447
+ %% #1: L or R, #2: 画像ファイル名
448
+ %% #3: 画像表示幅, #4: 画像領域幅,
449
+ %% #5: 区切り余白幅, #6: テキスト幅(空白なら自動計算)
450
+ \ifempty{#6}% % テキスト幅が未指定なら
451
+ \setlength\@tempdima{\textwidth}% 本文幅から
452
+ \addtolength{\@tempdima}{-#4}% % 画像領域幅を引いて
453
+ \addtolength{\@tempdima}{-#5}% % 区切り余白幅を引く
454
+ \else% % テキスト幅が指定されていれば
455
+ \setlength\@tempdima{#6}% % それを使う
456
+ \fi%
457
+ %
458
+ \def\@tempimgL{}%
459
+ \def\@tempimgR{}%
460
+ \ifstreq{#1}{L}% % L なら、画像と区切り余白とテキストを表示
461
+ \def\@tempimgL{\starter@miniimage{#2}{#3}{#4}\hspace{#5}}%
462
+ \else\ifstreq{#1}{R}% % R なら、テキストと区切り余白と画像を表示
463
+ \def\@tempimgR{\hspace{#5}\starter@miniimage{#2}{#3}{#4}}%
464
+ \fi%
465
+ %
466
+ \noindent%
467
+ \@tempimgL%
468
+ \begin{minipage}[t]{\@tempdima}% minipage環境開始
469
+ \setlength{\parindent}{1zw}% % minipage環境内で段落開始行をインデントする
470
+ }{%
471
+ \end{minipage}% % minipage環境終了
472
+ \@tempimgR%
473
+ \par% % これがないと後続のテキストが続いてエラーになる
474
+ }
475
+ \newcommand\starter@miniimage[3]{% #1:画像ファイル名, #2:画像の表示幅, #3:画像の領域幅
476
+ \begin{minipage}[t]{#3}%
477
+ \centering % 中央揃え
478
+ %\vskip 0pt\relax% % 画像の上に少し余白が入る (why?)
479
+ \vskip -0.6zw\relax% % 画像の上に余白が入らないよう調整
480
+ %\null\vspace*{-\baselineskip}%
481
+ \ifempty{\starterminiimageframe}%
482
+ \includegraphics[width=#2]{#1}% % 画像を表示
483
+ \else%
484
+ \starterimageframe{% % 画像のまわりを灰色の線で囲む
485
+ \includegraphics[width=#2]{#1}% % 画像を表示
486
+ }%
487
+ \fi%
488
+ \end{minipage}%
489
+ }
490
+ \def\starterminiimageframe{}
491
+
492
+
493
+
494
+ %%% サンプルの出力結果(Starterのドキュメントで使用)
495
+ \newenvironment{startersampleoutput}[1]{%
496
+ \starter@codeblock@vspace%
497
+ \starter@caption{#1}%
498
+ %\begin{oframed}% % error in note block
499
+ \vspace{-0.3\baselineskip}%
500
+ \noindent%
501
+ \textcolor{lightgray}{\hrulefill}\par%
502
+ }{%
503
+ %\end{oframed}% % error in note block
504
+ \vspace{-0.3\baselineskip}%
505
+ \noindent%
506
+ \textcolor{lightgray}{\hrulefill}\par%
507
+ \starter@codeblock@vspace%
508
+ }
509
+
510
+
511
+
512
+ %%% 黒ヌキ(白い背景に黒い文字)
513
+ %%%
514
+ %%% 使い方: \startercursor{テキスト}
515
+ \newcommand*{\startercursor}[1]{%
516
+ \starter@bgcolor[black]{white}{#1}% % 文字を黒、背景を白にして表示
517
+ %\mybgcolor{white}{\textcolor{black}{#1}}%
518
+ }%
519
+
520
+ %%% 背景色(と文字色)をつける
521
+ %%%
522
+ %%% 使い方: \starter@bgcolor{white}{テキスト}
523
+ %%% or \starter@bgcolor[black]{white}{テキスト}
524
+ \newcommand{\starter@bgcolor}[3][]{% % #1: 文字色(default: 空), #2: 背景色, #3: テキスト
525
+ \settowidth{\tmp@width}{#3}% % 幅
526
+ \settodepth{\tmp@depth}{g}% % 深さ
527
+ \settoheight{\tmp@height}{M}% % 高さ
528
+ \addtolength{\tmp@height}{\tmp@depth}% % 高さに深さを追加
529
+ \addtolength{\tmp@depth}{1pt}% % 深さを少し増やす
530
+ \addtolength{\tmp@height}{2pt}% % 高さを少し増やす
531
+ %
532
+ \makebox[0pt][l]{% % カーソル位置を変えないまま
533
+ \textcolor{#2}{% % 背景色を指定して
534
+ \rule[-\tmp@depth]{\tmp@width}{\tmp@height}% % 塗りつぶす
535
+ %\rule[-\tmp@depth]{\tmp@width}{\baselineskip}%
536
+ }%
537
+ }%
538
+ \ifempty{#1}% % 文字色が未指定なら
539
+ #3% % テキストをそのまま表示
540
+ \else% % 文字色が指定されていれば
541
+ \textcolor{#1}{#3}% % 色を指定してテキストを表示
542
+ \fi%
543
+ }
544
+
545
+ %%% 長さを表す変数 (control sequence) を宣言
546
+ \newlength{\tmp@width}% % 幅
547
+ \newlength{\tmp@height}% % 高さ
548
+ \newlength{\tmp@depth}% % 深さ
549
+
550
+
551
+
552
+ %%% 長いURLを折り返す(要seqsplitパッケージ)
553
+ \newcommand{\starterurl}[2]{%
554
+ \href{#1}{\texttt{\seqsplit{#2}}}%
555
+ }
556
+
557
+
558
+ %%% 改段落する。\parindentが0でもインデントする。
559
+ \newcommand{\starterpar}[1]{%
560
+ \par%
561
+ \edef\@tempa{#1}%
562
+ \edef\@tempb{i}%
563
+ \ifx\@tempa\@tempb%
564
+ \ifdim\parindent=\z@%
565
+ \hspace{0.8zw}%
566
+ \fi%
567
+ \fi%
568
+ }
569
+
570
+
571
+ %%% 定義リストの語句
572
+ \newcommand{\starterdt}[1]{%
573
+ \item[{#1}]%
574
+ \mbox{}% % 幅のないテキスト
575
+ \par% % 改行がわりの改段落
576
+ \nobreak% % 語句と説明文の間での改ページを避ける
577
+ \noindent% % 説明文の先頭の段落は字下げしない
578
+ \setlength{\parindent}{1zw}% % 第2段落以降は先頭行を字下げする
579
+ }
580
+
581
+
582
+ %%% 説明リスト
583
+ \newenvironment{starterdesclist}{%
584
+ %\begin{description}%
585
+ \edef\@indent@{\starter@desclist@indent}% 説明文のインデント幅
586
+ \addvspace{\starter@desclist@listmargin}% 上部に空きを入れる
587
+ \addtolength{\leftskip}{\@indent@}% % 左側の余白を設定
588
+ %% 箇条書き(itemize, enumerate)に対応
589
+ \addtolength{\@totalleftmargin}{\@indent@}% 左の空きを増やす
590
+ \addtolength{\linewidth}{-\@indent@}% % 本文幅を短くする
591
+ %
592
+ \begingroup%
593
+ \edef\starter@desclist@listmargin{% % 上部の空きの高さを
594
+ \starter@desclist@itemmargin% % 項目間の空きの高さと同じに変更
595
+ }%
596
+ }{%
597
+ %\end{description}%
598
+ \endgroup%
599
+ \addvspace{\starter@desclist@listmargin}% 下部に空きを入れる
600
+ }
601
+
602
+ %% starterdesc を \newcommand で定義すると、説明文の中に
603
+ %% プログラムコードを含めるとその表示が崩れるので注意
604
+ %% (\obeyspaces と \obeylines が効かなくなるせい、理由は不明)
605
+ \newenvironment{starterdesc}[1]{% % #1: キーや語句
606
+ %\item[{#1}]%
607
+ \par%
608
+ \addvspace{\starter@desclist@itemmargin}% 説明項目間の空き
609
+ \noindent% % 最初の段落先頭は字下げしない
610
+ \edef\@indent@{\starter@desclist@indent}% 説明文のインデント幅
611
+ \hspace{-\@indent@}% % インデント分だけ戻る
612
+ \ifx\starter@desclist@compact\empty% % コンパクトモードでないなら、
613
+ \starter@desc@term{#1}% % キーや語句を表示
614
+ \mbox{}\par% % 改行がわりの改段落
615
+ \nobreak% % 語句と説明文の間での改ページを避ける
616
+ \noindent% % 説明文の先頭の段落は字下げしない
617
+ \else% % コンパクトモードなら、
618
+ \settowidth{\@tempdima}{\starter@desc@term{#1}}% % 表示幅を調べる
619
+ \ifdim\@tempdima<\@indent@% % 表示幅がインデント幅より短い場合は、
620
+ \makebox[\@indent@][l]{% % インデントと同じ幅で
621
+ \starter@desc@term{#1}% % キーや語句を表示
622
+ }%
623
+ \else% % 表示幅のほうが長い場合は、
624
+ \starter@desc@term{#1}% % そのまま表示
625
+ \fi%
626
+ \fi%
627
+ }{%
628
+ \par%
629
+ \addvspace{\starter@desclist@itemmargin}%
630
+ }
631
+
632
+ \newcommand{\starter@desc@term}[1]{{% % #1: キーや語句
633
+ \starter@desclist@font% % ゴシック体に変更
634
+ \ifx\starter@desclist@bold\empty\else%
635
+ \bfseries% % 太字に変更
636
+ \fi%
637
+ #1% % キーや語句を表示
638
+ \hspace{\starter@desclist@space}% % 直後に全角1文字分の空き
639
+ }}
640
+
641
+ \def\starter@desclist@font{\gtfamily\sffamily} % キーのフォント
642
+
643
+
644
+ %%% PDFのテキストをマウスでコピペしたときに、コピー対象外にする。
645
+ %%% ただしAcrobatReaderでしか機能しない。macOSのPreview.appではコピーされてしまう。
646
+ \usepackage{accsupp}
647
+ \newcommand{\@starter@excluewhencopied}[2][]{% #1: 代替文字列、#2: 表示文字列
648
+ \BeginAccSupp{ActualText={#1}}% % ここから、
649
+ #2%
650
+ \EndAccSupp{}% % ここまでがマウスコピー対象外
651
+ }
652
+ %% config-starter.ymlで「exclude_mouseselect: true」のときだけ有効化
653
+ \ifx\starter@exclude@mouseselect\empty
654
+ \newcommand{\starter@excluewhencopied}[2][]{%
655
+ #2% % コンパイルが早い
656
+ }
657
+ \else
658
+ \newcommand{\starter@excluewhencopied}[2][]{%
659
+ \@starter@excluewhencopied[#1]{#2}% % コンパイルが遅い
660
+ }
661
+ \fi
662
+
663
+
664
+
665
+ %%%
666
+ %%% ノンブル(隠しノンブル)
667
+ %%%
668
+ \usepackage{seqsplit} % 「123」を「1 2 3」にするのに必要
669
+
670
+ %% ノンブルの番号(1ページ目からの通し番号)
671
+ \newcounter{starter@nombre}
672
+ \setcounter{starter@nombre}{\starter@nombre@startnumber}
673
+ \addtocounter{starter@nombre}{-1}
674
+
675
+ %% ノンブルのフォント
676
+ \def\starter@nombre@font{\sffamily}
677
+
678
+ %% ノンブルの表示位置:ページ下から5mm、ページ左右から1mm〜2mm
679
+ %% 参考:https://www.marusho-ink.co.jp/howto/kakushi.html
680
+ %\def\starter@nombre@sidemargin{1truemm} % 左右のマージン
681
+ %\def\starter@nombre@bottommargin{5truemm} % ページ下からのマージン
682
+
683
+ %% ノンブルの表示位置を計算する
684
+ \newcommand{\starter@nombre@setup}{{%
685
+ %% 塗り足しの幅(印刷用PDFのみ)
686
+ \def\@bleed{0pt}%
687
+ \def\@tempa{pbook}%
688
+ \ifx\starter@target\@tempa%
689
+ \ifx\starter@bleedsize\empty\else%
690
+ \def\@bleed{\starter@bleedsize}%
691
+ \fi%
692
+ \fi%
693
+ %% 計算結果を \@tempdima に設定するヘルパーマクロ
694
+ \def\@calc@##1{%
695
+ \setlength{\@tempdima}{##1}% % 長さを計算
696
+ \edef\@tempa{\number\@tempdima}% % 長さを整数値に変換(単位: sp)
697
+ \@tempcnta=\@tempa% % 整数値をレジスタに設定
698
+ \divide \@tempcnta 65536 \relax% % 単位をspからptに変換(1pt=65536sp)
699
+ }%
700
+ %% set `\starter@nombre@posy`: ノンブルのY座標は、用紙の高さ - 2mm
701
+ \@calc@{\dimexpr - \inv@mag in + \paperheight - \starter@nombre@bottommargin - \@bleed}%
702
+ \multiply \@tempcnta -1 \relax%
703
+ \expandafter\gdef\expandafter\starter@nombre@posy\expandafter{\the\@tempcnta}%
704
+ %% set `\starter@nombre@posx@odd`: 奇数ページでのノンブルのX座標は、ページ左端から1mm
705
+ \@calc@{\dimexpr - \inv@mag in + \starter@nombre@sidemargin + \@bleed}%
706
+ \expandafter\gdef\expandafter\starter@nombre@posx@odd\expandafter{\the\@tempcnta}%
707
+ %% set `\starter@nombre@posx@even`: 偶数ページでのノンブルのX座標は、用紙の幅 - 1mm
708
+ \settowidth{\@tempdimb}{{% % ノンブルの数字1文字分の幅
709
+ \starter@nombre@font%
710
+ \fontsize{\starter@nombre@fontsize}{0}\selectfont%
711
+ 9%
712
+ }}%
713
+ \@calc@{\dimexpr - \inv@mag in + \paperwidth - \@tempdimb - \starter@nombre@sidemargin - \@bleed}%
714
+ \expandafter\gdef\expandafter\starter@nombre@posx@even\expandafter{\the\@tempcnta}%
715
+ }}
716
+
717
+ %% 必要になって初めてノンブルの初期設定を行うためのマクロ
718
+ \newcommand{\starter@nombre@setup@once}{%
719
+ \starter@nombre@setup% % 初期化を行う
720
+ \gdef\starter@nombre@setup@once{}% % 何もしないよう自己再定義する(注:\renewcommandでは効果ない)
721
+ }
722
+
723
+ %% ノンブルを表示する
724
+ \newcommand{\starter@nombre@put}{{%
725
+ \addtocounter{starter@nombre}{1}% % ノンブルの番号(1ページ目からの通し番号)を増やす
726
+ \ifodd\c@starter@nombre% % 奇数ページなら、
727
+ \edef\starter@nombre@posx{\starter@nombre@posx@odd}% 奇数ページ用のX座標を使う
728
+ \else% % 偶数ページなら、
729
+ \edef\starter@nombre@posx{\starter@nombre@posx@even}% 偶数ページ用のX座標を使う
730
+ \fi%
731
+ %
732
+ \starter@nombre@font% % フォントをサンセリフ体に変更
733
+ \fontsize{\starter@nombre@fontsize}{0}\selectfont% フォントサイズを小さく
734
+ \color{\starter@nombre@fontcolor}% % フォントをグレーに
735
+ %
736
+ \begin{picture}(0,0)% % ページ左上から右に1inch、下に1inch移動した位置が原点
737
+ \put(\starter@nombre@posx,\starter@nombre@posy){%
738
+ \parbox[b]{0.0em}{% % 表示幅を半角1文字以下にすると、数字が縦に並ぶ
739
+ %\def\seqinsert{\hspace{0pt}}%% 例:「123」を「1\hspace{0pt}2\hspace{0pt}3」に
740
+ \def\seqinsert{\ }% % 例:「123」を「1 2 3」に
741
+ \expandafter\seqsplit\expandafter{\the\c@starter@nombre}% % ok!
742
+ %\expandafter\seqsplit\expandafter{\thestarter@nombre}% % not ok. why?
743
+ }%
744
+ }%
745
+ \end{picture}%
746
+ }}
747
+
748
+ %% 印刷用PDFのときだけノンブルをつける
749
+ \usepackage{everypage}
750
+ \ifstreq{\starter@target}{pbook}
751
+ \ifx\starter@nombre\empty\else%
752
+ \AddEverypageHook{ % すべてのページで実行されるフック
753
+ \starter@nombre@setup@once % 初期設定を1回だけ行う
754
+ \starter@nombre@put % ノンブルをつける
755
+ }
756
+ \fi%
757
+ \fi
758
+
759
+
760
+
761
+ %%%
762
+ %%% 塗り足しの確認用に可視化する
763
+ %%%
764
+ \newcommand{\starter@bleed@colorize}[2]{{% #1: page width, #2: page height
765
+ \def\@w{#1}%
766
+ \def\@h{#2}%
767
+ \setlength{\unitlength}{0.1truemm}% % 0.1mmを単位とする
768
+ \color{\starter@bleedcolor}% % 線の色 (red/green/blue/yellow/gray)
769
+ \begin{picture}(0,0)%
770
+ \put(-224,224){% % 1inch - 3mm = 25.4mm - 3mm = 22.4mm
771
+ \line(0,-1){\@h}% % 左
772
+ \line(1,0){\@w}% % 上
773
+ }%
774
+ \@tempcnta=\@w%
775
+ \advance \@tempcnta -224% % 1inch - 3mm = 25.4mm - 3mm = 22.4mm
776
+ \@tempcntb=\@h%
777
+ \advance \@tempcntb -224%
778
+ \edef\@tempa{(\@tempcnta,-\@tempcntb)}%
779
+ \expandafter\put\@tempa{%
780
+ \line(0,1){\@h}% % 右
781
+ \line(-1,0){\@w}% % 下
782
+ }%
783
+ \end{picture}%
784
+ }}
785
+
786
+ \usepackage{everypage}
787
+ \ifx\starter@bleedcolor\empty\else
788
+ %
789
+ \def\@tempb{A4}% % A4 (210x297mm)
790
+ \ifx\starter@pagesize\@tempb%
791
+ \AddEverypageHook{\starter@bleed@colorize{2100}{2970}}%
792
+ \fi%
793
+ %
794
+ \def\@tempb{A5}% % A5 (148x210mm)
795
+ \ifx\starter@pagesize\@tempb%
796
+ \AddEverypageHook{\starter@bleed@colorize{1480}{2100}}%
797
+ \fi%
798
+ %
799
+ \def\@tempb{B5}% % B5 (182x257mm)
800
+ \ifx\starter@pagesize\@tempb%
801
+ \AddEverypageHook{\starter@bleed@colorize{1820}{2570}}%
802
+ \fi%
803
+ %
804
+ \edef\@tempb{B6}% % B6 (128x182mm)
805
+ \ifx\starter@pagesize\@tempb%
806
+ \AddEverypageHook{\starter@bleed@colorize{1280}{1820}}%
807
+ \fi%
808
+ %
809
+ \fi
810
+
811
+
812
+
813
+ %%%
814
+ %%% 表紙用PDFファイルを取り込む
815
+ %%%
816
+ \usepackage{pdfpages} % provides `\includepdf` command
817
+ \newcommand{\starterincludepdf}{%
818
+ \@ifstar{% % `\starterinclude*` として呼び出されたら
819
+ \def\@starterincludepdf@star{Y}% % 変数に `Y` を設定
820
+ \@starter@includepdf% % 本体のマクロを呼び出す
821
+ }{% % `\starterinclude` として呼び出されたら
822
+ \def\@starterincludepdf@star{}% % 変数を空に設定
823
+ \@starter@includepdf% % 本体のマクロを呼び出す
824
+ }%
825
+ %\@starter@includepdf% % (マクロの呼び出しを共通化したらエラー。why?)
826
+ }
827
+ \def\@starterinncludepdf@star{}
828
+ \newcommand\@starter@includepdf[2][]{{% #1: オフセット, #2: ファイル名
829
+ \edef\@offset{#1}%
830
+ \ifx\@offset\empty%
831
+ %% フォントサイズが9ptや11ptだとPDFの位置がずれる(10ptだとずれない)ので
832
+ %% 位置を調整する必要があり、そのためのオフセットを計算する。
833
+ %% (注:\@tempdima を使うとこのあとのマクロが正常に動作してくれない)
834
+ \setlength{\@tempdimb}{\dimexpr 1in - 1truein}%
835
+ \setlength{\@tempdimc}{\dimexpr 1truein - 1in}%
836
+ \ifodd\thepage\else% % 偶数ページのときは
837
+ \setlength{\@tempdimb}{\@tempdimc}% % オフセットを別途調整
838
+ \fi%
839
+ \else%
840
+ \def\@sprittwo##1 ##2\relax{% % 例:文字列 `-2.3mm 2.3mm` を
841
+ \setlength{\@tempdimb}{##1}% % `-2.3mm` と
842
+ \setlength{\@tempdimc}{##2}% % `2.3mm` に分解する
843
+ }%
844
+ \expandafter\@sprittwo\@offset\relax% % \@offset を展開してから \@splittwo を呼び出す
845
+ \fi%
846
+ %% 取り込むページ
847
+ \ifx\starter@includepdf@pagenum\empty%
848
+ \def\@pagenum{1}%
849
+ \else%
850
+ \def\@pagenum{\starter@includepdf@pagenum}%
851
+ \fi%
852
+ %% PDFファイルを読み込む。
853
+ %% ・'*' なしなら位置を自動調整し、用紙に合わせて拡大・縮小する
854
+ %% ・'*' つきなら位置の調整はするが、拡大も縮小もしない
855
+ %% (自動的に中央に配置されるため、結果として塗りしろが用紙からはみ出る)
856
+ \ifx\@starterincludepdf@star\empty% % '*' なしのとき
857
+ \def\@arg##1##2##3##4{[offset=##1 ##2,pages={##4}]}%
858
+ \else% % '*' つきのとき
859
+ \def\@arg##1##2##3##4{[offset=##1 ##2,noautoscale=true,scale=##3,pages={##4}]}%
860
+ \fi%
861
+ \expandafter\includepdf\@arg\@tempdimb\@tempdimc\inv@mag\@pagenum{#2}%
862
+ }}
863
+ \def\starter@includepage@pagenum{}
864
+
865
+
866
+ %%
867
+ %% 索引
868
+ %%
869
+ \newcommand{\starterindexgroup}[1]{% % 索引グループ
870
+ {%
871
+ \bfseries% % 太字
872
+ \gtfamily\sffamily% % ゴシック体
873
+ ■#1% % 例:`■あ`
874
+ }%
875
+ }
876
+ %% 参考:美文書8版 第10.7節、第10.9節
877
+ \renewcommand{\seename}{$\rightarrow$} % → XXXX
878
+ %\renewcommand{\seename}{\textit{see}} % see XXXX
879
+ %\renewcommand{\subitem}{\@idxitem \hspace*{1zw}} % インデント幅を全角1文字に
880
+ %\renewcommand{\subsubitem}{\@idxitem \hspace*{2zw}} % インデント幅を全角2文字に
881
+ \newcommand{\starterindexplaceholder}{%
882
+ %--% % 欧文のエヌダッシュ
883
+ %---% % 欧文のエムダッシュ
884
+ %―% % 全角ダッシュ記号(長音記号と見分けがつきにくい)
885
+ \――% % 倍角ダッシュ(defined in okumacro.sty)
886
+ }
887
+
888
+
889
+ %%
890
+ %% 用語
891
+ %%
892
+ \newcommand{\starterterm}[1]{%
893
+ {\gtfamily\sffamily #1}% % ゴシック体で表示
894
+ }