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
@@ -27,7 +27,6 @@
27
27
  \advance\rightskip\starter@note@sidemargin%
28
28
  \advance\leftskip\starter@note@sidemargin%
29
29
  %% プログラムやターミナルや引用の左右に余白を空ける
30
- \setlength{\starter@codeblock@sidemargin}{\starter@note@sidemargin}%
31
30
  \setlength{\starter@quote@sidemargin}{\starter@note@sidemargin}%
32
31
  %% プログラムやターミナルの前後の余白を少し小さくする
33
32
  \renewcommand{\starter@codeblock@vspace}{\addvspace{\smallskipamount}}%
@@ -105,23 +104,77 @@
105
104
  %%%
106
105
  %%% ノート以外のブロック
107
106
  %%%
108
- \newenvironment{starter@miniblock}[1]{%
109
- \addvspace{1.0\baselineskip}% 1行分空ける
107
+ \newenvironment{startermemo}[1]{\begin{starter@miniblock}{#1}}{\end{starter@miniblock}}
108
+ \newenvironment{startertip}[1]{\begin{starter@miniblock}{#1}}{\end{starter@miniblock}}
109
+ %\newenvironment{starterinfo}[1]{\begin{starter@miniblock}{#1}}{\end{starter@miniblock}}
110
+ %\newenvironment{starterwarning}[1]{\begin{starter@miniblock}{#1}}{\end{starter@miniblock}}
111
+ \newenvironment{starterimportant}[1]{\begin{starter@miniblock}{#1}}{\end{starter@miniblock}}
112
+ %\newenvironment{startercaution}[1]{\begin{starter@miniblock}{#1}}{\end{starter@miniblock}}
113
+ \newenvironment{starternotice}[1]{\begin{starter@miniblock}{#1}}{\end{starter@miniblock}}
114
+ \newenvironment{starterinfo}[1]{%
115
+ \begin{starter@miniblock}[\starter@miniblock@info@imagefile]{#1}%
116
+ }{%
117
+ \end{starter@miniblock}%
118
+ }
119
+ \newenvironment{starterwarning}[1]{%
120
+ \begin{starter@miniblock}[\starter@miniblock@warning@imagefile]{#1}%
121
+ }{%
122
+ \end{starter@miniblock}%
123
+ }
124
+ \newenvironment{startercaution}[1]{%
125
+ \begin{starter@miniblock}[\starter@miniblock@caution@imagefile]{#1}%
126
+ }{%
127
+ \end{starter@miniblock}%
128
+ }
129
+
130
+ \def\starter@miniblock@info@imagefile{./images/info-icon.png} % 情報のアイコン画像
131
+ \def\starter@miniblock@warning@imagefile{./images/warning-icon.png}% 警告のアイコン画像
132
+ \def\starter@miniblock@caution@imagefile{./images/caution-icon.png}% 警告のアイコン画像
133
+
134
+ \def\starter@miniblock@imagewidth{3zw} % アイコン画像の表示幅
135
+ \def\starter@miniblock@indent{4zw} % ページ左端からの本文のインデント幅
136
+ \def\starter@miniblock@font{\small} % 本文のフォント
137
+
138
+ \newenvironment{starter@miniblock}[2][]{% #1: アイコン画像、#2: タイトル
139
+ \starter@miniblock@topmargin% 1行分空ける
110
140
  \begin{oframed}% % 枠線で囲む
111
- \ifempty{#1}\else% % 引数があれば
112
- \noindent% % 字下げせずに
113
- {\headfont #1}% % 太字のゴシック体で表示
114
- \par\smallskip% % 縦方向に少しスペースを空ける
141
+ \ifempty{#1}\else% % アイコン画像が指定されれば、
142
+ \starter@miniblock@icon{#1}% それを表示
115
143
  \fi%
144
+ \ifempty{#2}\else% % タイトルがあれば、
145
+ \starter@miniblock@title{#2}% タイトルを表示
146
+ \fi%
147
+ \starter@miniblock@font% % 本文のフォントを少し小さく
116
148
  }{%
117
149
  \end{oframed}% % 枠線による囲みの終わり
150
+ \starter@miniblock@bottommargin% 1行分空ける
151
+ }
152
+
153
+ \newcommand{\starter@miniblock@topmargin}{%
118
154
  \addvspace{1.0\baselineskip}% 1行分空ける
119
155
  }
120
156
 
121
- \newenvironment{startermemo}[1]{\begin{starter@miniblock}{#1}}{\end{starter@miniblock}}
122
- \newenvironment{startertip}[1]{\begin{starter@miniblock}{#1}}{\end{starter@miniblock}}
123
- \newenvironment{starterinfo}[1]{\begin{starter@miniblock}{#1}}{\end{starter@miniblock}}
124
- \newenvironment{starterwarning}[1]{\begin{starter@miniblock}{#1}}{\end{starter@miniblock}}
125
- \newenvironment{starterimportant}[1]{\begin{starter@miniblock}{#1}}{\end{starter@miniblock}}
126
- \newenvironment{startercaution}[1]{\begin{starter@miniblock}{#1}}{\end{starter@miniblock}}
127
- \newenvironment{starternotice}[1]{\begin{starter@miniblock}{#1}}{\end{starter@miniblock}}
157
+ \newcommand{\starter@miniblock@bottommargin}{%
158
+ \addvspace{1.0\baselineskip}% 1行分空ける
159
+ }
160
+
161
+ \newcommand{\starter@miniblock@title}[1]{% #1: タイトル
162
+ \noindent% % 字下げせずに
163
+ {\headfont #1}% % 太字のゴシック体で表示
164
+ \par% % 改行がわりの改段落
165
+ \smallskip% % 縦方向に少しスペースを空ける
166
+ }
167
+
168
+ \newcommand{\starter@miniblock@icon}[1]{% #1: アイコン画像
169
+ %\vspace{-\intextsep}% % 参考:美文書第8版p.159
170
+ \vbox to -0.7zw{% % 画像の上部を本文と揃える
171
+ \noindent% % 画像を字下げさせない
172
+ %\textcolor{gray}{\fbox{% % グレーの枠線をつける場合
173
+ \includegraphics[width=\starter@miniblock@imagewidth]{#1}% 画像を表示
174
+ %}}%
175
+ }%
176
+ \setlength{\leftskip}{\starter@miniblock@indent}% 左側の空きを設定
177
+ %% 箇条書き(itemize, enumerate)に対応
178
+ \addtolength{\@totalleftmargin}{\starter@miniblock@indent}% 左の空きを増やす
179
+ \addtolength{\linewidth}{-\starter@miniblock@indent}% % 本文幅を短くする
180
+ }
@@ -0,0 +1,105 @@
1
+ %%% -*- coding: utf-8 -*-
2
+
3
+ %%%
4
+ %%% 会話形式
5
+ %%%
6
+
7
+ %%% 会話リスト
8
+ \newenvironment{startertalklist}{%
9
+ \addvspace{\starter@talklist@listmargin}% % 空きを入れる
10
+ \vspace{\starter@talklist@itemmargin}% % 空きを調整
11
+ }{%
12
+ \vspace{-\starter@talklist@itemmargin}% % 空きを調整
13
+ \addvspace{\starter@talklist@listmargin}% % 空きを入れる
14
+ }
15
+
16
+ %%% 会話項目
17
+ \newcommand\startertalk[3]{{%
18
+ \edef\@image{#1}% % 画像ファイル
19
+ \edef\@chara{#2}% % 名前(発言者名)
20
+ \ifx\@image\@empty% % 画像が指定されなければ、
21
+ \rlap{% % 表示はするけど位置を移動しない
22
+ \starter@talklist@character{\@chara}% 名前を表示
23
+ }%
24
+ \settowidth{\@tempdima}{% % 名前と ':「' を表示したときの幅
25
+ \starter@talklist@character{\@chara}% 名前と ':'
26
+ \starter@talklist@itemstart% % '「'
27
+ }%
28
+ \addtolength{\@tempdima}{% % 名前と ':「' の表示幅から、
29
+ -\starter@talklist@indent% % 会話文左の空き幅を引く
30
+ }%
31
+ \vspace{-\baselineskip}% % なぜか1行下がるので戻す
32
+ \else% % 画像が指定されれば、
33
+ \needvspace{\starter@talklist@needvspace}% 縦方向の空きがなければ改ページ
34
+ %\vspace{-\intextsep}% % 参考:美文書第8版p.159
35
+ \vspace{-\baselineskip}% % 画像上部の空きを調整
36
+ \vbox to -0.2zw{% % 画像の上部を本文と揃える
37
+ \noindent% % 画像を字下げさせない
38
+ \starter@talklist@itemimage{\@image}% 画像を表示
39
+ }%
40
+ \setlength{\@tempdima}{0pt}% % 画像の場合は名前が長すぎるようなことは起こらない
41
+ \fi%
42
+ {%
43
+ \setlength{\leftskip}{\starter@talklist@indent}% 会話文の左側の空きを設定
44
+ \noindent% % 最初の段落だけ字下げしない
45
+ \ifdim\@tempdima>0pt% % 左側の空きより名前のほうが長ければ、
46
+ \hspace{\@tempdima}% % 会話文の開始位置をずらす
47
+ \fi%
48
+ \llap{\starter@talklist@itemstart}% '「' を表示
49
+ #3% % 会話文を表示
50
+ \rlap{\starter@talklist@itemend}% % '」' を表示
51
+ \par% % 改行がわり
52
+ \ifx\@image\@empty% % 画像を使うとき、
53
+ \else%
54
+ \starter@talklist@adjustheight{#3}% 会話文が短い場合は画像高さと揃える
55
+ \fi%
56
+ }%
57
+ \vspace{\starter@talklist@itemmargin}% 会話項目間に空きを入れる
58
+ }}%
59
+
60
+ %%% 名前を表示
61
+ \newcommand{\starter@talklist@character}[1]{%
62
+ {%
63
+ {\starter@talklist@namefont #1}% % ゴシック体で表示
64
+ \starter@talklist@separator% % 「:」を表示
65
+ }%
66
+ }
67
+ \def\starter@talklist@namefont{\gtfamily\sffamily} % ゴシック体
68
+
69
+ %%% 会話文が少ないとき、会話文の高さを画像と揃える
70
+ \newcommand{\starter@talklist@adjustheight}[1]{%
71
+ {%
72
+ \edef\imgw{\starter@talklist@imagewidth}% % 画像幅
73
+ \edef\imgh{\starter@talklist@imageheight}% % 画像高さ
74
+ \ifx\imgh\empty% % 画像高さが無指定なら
75
+ \edef\imgh{\starter@talklist@imagewidth}% 画像幅と同じにする
76
+ \fi%
77
+ \setlength{\@tempdima}{% % 画像を除いた、会話文の本文幅
78
+ \dimexpr \textwidth-\starter@talklist@indent%
79
+ }
80
+ \sbox{0}{\parbox{\@tempdima}{#1}}%% 会話文の表示サイズを調べる
81
+ \setlength{\@tempdimb}{\ht0+\dp0}%% 会話文の表示上の高さが
82
+ \ifdim\@tempdimb<\imgh% % 画像より低ければ
83
+ \setlength{\@tempdimc}{\imgh-\@tempdimb}
84
+ \vspace{\@tempdimc}% % その分の空きを入れる
85
+ \fi%
86
+ }%
87
+ }
88
+
89
+ %%% 会話の画像を表示
90
+ \newcommand\starter@talklist@itemimage[1]{%
91
+ \ifx\starter@talklist@imageborder\empty% 画像に枠線をつけない場合
92
+ \starter@talklist@image{#1}%
93
+ \else% % 画像に枠線をつける場合
94
+ \textcolor{gray}{% % グレーの枠線
95
+ \fbox{\starter@talklist@image{#1}}%
96
+ }%
97
+ \fi%
98
+ }
99
+ \newcommand{\starter@talklist@image}[1]{%
100
+ \if\starter@talklist@imageheight\empty% 画像の高さが指定されている場合
101
+ \includegraphics[width=\starter@talklist@imagewidth]{#1}%
102
+ \else% % 画像の高さが指定されてない場合
103
+ \includegraphics[width=\starter@talklist@imagewidth,height=\starter@talklist@imageheight]{#1}%
104
+ \fi%
105
+ }
@@ -0,0 +1,35 @@
1
+ %%% -*- coding: utf-8 -*-
2
+
3
+
4
+ %%% 引数が空かどうか調べるマクロ
5
+ \newcommand{\ifempty}[1]{%
6
+ \edef\temp{#1}% % \ifx#1\empty とはできないので、一時マクロを定義
7
+ \ifx\temp\empty% % \empty は他の言語でいえば空文字列に相当
8
+ }
9
+
10
+ %%% 文字列比較をするマクロ
11
+ \newcommand\ifstreq[2]{
12
+ \edef\@tempa{#1}%
13
+ \edef\@tempb{#2}%
14
+ \ifx\@tempa\@tempb% % \ifx#1#2 とはできないことに注意(TeXの仕様)
15
+ }
16
+
17
+ %%% 例:「\@eval{section}{blabla}」は「\section{blabla}」と同等
18
+ \newcommand{\@eval}[1]{%
19
+ \csname#1\endcsname%
20
+ }
21
+
22
+ %%% \lastskip を保存するための一時変数
23
+ \newcommand{\keeplastskip}[1]{%
24
+ \@tempskipa=\lastskip%
25
+ \vskip -\lastskip\relax%
26
+ #1%
27
+ \vskip \@tempskipa\relax%
28
+ \@tempskipa=0pt%
29
+ }
30
+
31
+ %%% 縦方向のスペースがあるか調べる。なければ改ページする。
32
+ \newcommand{\needvspace}[1]{%
33
+ \rule[#1]{0pt}{0pt}% % 幅のない縦線を引く。引くスペースがなければ改ページされる。
34
+ \vspace{-#1}\par% % もとの位置に戻る
35
+ }
@@ -6,40 +6,8 @@
6
6
 
7
7
 
8
8
 
9
- %%% 引数が空かどうか調べるマクロ
10
- \newcommand{\ifempty}[1]{%
11
- \edef\temp{#1}% % \ifx#1\empty とはできないので、一時マクロを定義
12
- \ifx\temp\empty% % \empty は他の言語でいえば空文字列に相当
13
- }
14
-
15
- %%% 文字列比較をするマクロ
16
- \newcommand\ifstreq[2]{
17
- \edef\@tempa{#1}%
18
- \edef\@tempb{#2}%
19
- \ifx\@tempa\@tempb% % \ifx#1#2 とはできないことに注意(TeXの仕様)
20
- }
21
-
22
- %%% 例:「\@eval{section}{blabla}」は「\section{blabla}」と同等
23
- \newcommand{\@eval}[1]{%
24
- \csname#1\endcsname%
25
- }
26
-
27
- %%% \lastskip を保存するための一時変数
28
- \newcommand{\keeplastskip}[1]{%
29
- \@tempskipa=\lastskip%
30
- \vskip -\lastskip\relax%
31
- #1%
32
- \vskip \@tempskipa\relax%
33
- \@tempskipa=0pt%
34
- }
35
-
36
- %%% 縦方向のスペースがあるか調べる。なければ改ページする。
37
- \newcommand{\needvspace}[1]{%
38
- \rule[#1]{0pt}{0pt}% % 幅のない縦線を引く。引くスペースがなければ改ページされる。
39
- \vspace{-#1}\par% % もとの位置に戻る
40
- }
41
-
42
-
9
+ %%% ユーティリティマクロ
10
+ \usepackage{starter-util}
43
11
 
44
12
  %%% 色を設定
45
13
  \usepackage{starter-color}
@@ -54,501 +22,15 @@
54
22
  %%% プログラムコードやターミナル
55
23
  \usepackage{starter-codeblock}
56
24
 
57
- %%% ノート
25
+ %%% ノート、ミニブロック
58
26
  \usepackage{starter-note}
59
27
 
28
+ %%% 会話
29
+ \usepackage{starter-talklist}
30
+
60
31
  %%% 目次
61
32
  \usepackage{starter-toc}
62
33
 
63
34
 
64
-
65
- %%% 目次やリンクの色を指定する。印刷用なら黒にする。
66
- \hypersetup{colorlinks=true,linkcolor=starter@linkcolor,urlcolor=starter@linkcolor}
67
- %\hypersetup{colorlinks=false} % リンク機能をオフにする
68
-
69
-
70
-
71
- %%% 「@<strong>{ ... }」を太字のゴシック体にする(「@<b>{ ... }」は明朝体のまま)。
72
- \renewcommand{\reviewstrong}[1]{\textbf{\gtfamily\sffamily #1}}
73
-
74
- %%% 「@<em>{ ... }」をゴシック体にする。
75
- \renewcommand{\reviewem}[1]{{\gtfamily\sffamily #1}}
76
-
77
- %%% 「@<del>{ ... }」(取り消し線)が効くようにする。
78
- %%% (See https://qiita.com/takahashim/items/5c1af2941a1ce9fa5919)
79
- \usepackage{ulem}
80
- \renewcommand{\reviewstrike}[1]{\sout{#1}}
81
- %\usepackage{jumoline}
82
- %\renewcommand{\reviewstrike}[1]{\Midline{#1}} % \seqsplit{}と相性が悪い?
83
-
84
- %%% 目立たせない(「@<strong>{}」の反対)
85
- \newcommand{\starterweak}[1]{%
86
- \textcolor{gray}{#1}%
87
- }
88
-
89
- %%% ふきだし説明の文字色をグレーに
90
- \renewcommand{\reviewballoon}[1]{%
91
- \textcolor{gray}{←#1}
92
- }
93
-
94
- %% 「@<code>{...}」を薄いグレーで囲む
95
- %% (ただし章や節のタイトル、および各種キャプションでは囲まない)
96
- \ifx\starter@inlinecode@gray\empty
97
- \renewcommand{\reviewcode}[2][]{%
98
- %\,% % ほんの少しスペースを入れる
99
- \texttt{#2}%
100
- %\,% % ほんの少しスペースを入れる
101
- }
102
- \else
103
- \renewcommand{\reviewcode}[2][]{% % #1:空 or 'headline' or 'caption'
104
- \,% % ほんの少しスペースを入れる
105
- \edef\@tmpA{#1}%
106
- \ifx\@tmpA\empty% % #1が空(未指定)なら
107
- \colorbox{shadecolor}{\texttt{#2}}% % 背景色を薄いグレーにして等幅フォントで表示
108
- \else% % #1がheadlineやcaptionなら
109
- \texttt{#2}% % 等幅フォントで表示(背景色なし)
110
- \fi%
111
- \,% % ほんの少しスペースを入れる
112
- }
113
- \fi
114
-
115
- %%% ファイル名を表す
116
- \newcommand{\starterfile}[1]{%
117
- {\gtfamily\sffamily #1}% % ゴシック体で表示
118
- }
119
-
120
- %%% ユーザ入力を表す
121
- \newcommand{\starteruserinput}[1]{%
122
- \ifempty{\starter@codeblock@fontcolor}%
123
- \def\@fontcolor{black}%
124
- \else%
125
- \def\@fontcolor{\starter@codeblock@fontcolor}%
126
- \fi%
127
- \textcolor{starter@userinputcolor}{% % 下線の色
128
- \underline{% % 下線(LaTeX標準)
129
- %\uline{% % 下線(ulem.sty)
130
- \textcolor{\@fontcolor}{#1}%
131
- }%
132
- }%
133
- }
134
-
135
- %%% ルビをふるのに必要(例:@<ruby>{漢, おとこ})
136
- \usepackage{okumacro}
137
-
138
-
139
-
140
- %%% 箇条書き(順序なし)の上下の余白を、行間の0.5倍から0.25倍へと減らす
141
- \newenvironment{starteritemize}{%
142
- \ifnum\@listdepth=0%
143
- \def\@listi{%
144
- \@listI%
145
- \topsep 0.25\baselineskip% % 上下の余白を減らす(original: 0.5\baselineskip)
146
- }%
147
- \fi%
148
- \begin{itemize}%
149
- }{%
150
- \end{itemize}%
151
- }
152
-
153
- %%% 箇条書き(順序つき)の上下の余白を、行間の0.5倍から0.25倍へと減らす
154
- \newenvironment{starterenumerate}{%
155
- \ifnum\@listdepth=0%
156
- \def\@listi{%
157
- \@listI%
158
- \topsep 0.25\baselineskip% % 上下の余白を減らす(original: 0.5\baselineskip)
159
- }%
160
- \fi%
161
- \begin{enumerate}%
162
- }{%
163
- \end{enumerate}%
164
- }
165
-
166
- %%% 順序なし箇条書きの行頭文字を変更
167
- \usepackage{amssymb} % \blacktriangleright や \bigstar のために必要
168
- %\renewcommand{\labelitemi}{$\blacktriangleright$} % 深さ1段目:小さい黒丸→小さい三角へ
169
- \renewcommand{\labelitemii}{$\circ$} % 深さ2段目:「-」→小さい白丸へ
170
- %\renewcommand{\labelitemiii}{{\small$\bigstar$}} % 深さ3段目:「*」→星形へ
171
-
172
-
173
-
174
-
175
- %%% 奥付 (colophon) が最終ページになるよう調整する。
176
- %%% (奥付が右ページだと、次ページである最終ページが空ページになるため)
177
- \renewcommand{\reviewcolophon}[0]{%
178
- \clearpage % 改ページ
179
- \ifstreq{\starter@target}{tablet}% タブレット向けなら何も調整しない
180
- \else\if@openright % \documentclass で openright が指定されていれば
181
- \pltx@cleartoleftpage % 左ページ(偶数ページ)になるよう調整する
182
- \else\if@openleft % \documentclass で openleft が指定されていれば
183
- \pltx@cleartorightpage % 右ページ(奇数ページ)になるよう調整する
184
- \fi\fi\fi
185
- }
186
-
187
- %%% 右起こし(奇数ぺージ始まり)にしない場合でも、大扉とまえがきの間に
188
- %%% 空白ページが入ることがあるので、修正する。
189
- \if@openright\else\if@openleft\else % 右起こしでも左起こしでもない場合だけ、
190
- \renewcommand\frontmatter{% % 大扉やまえがきの開始を表すコマンドを再定義する。
191
- %\pltx@cleartooddpage % 削除
192
- \clearpage % 追加
193
- \@mainmatterfalse
194
- \pagenumbering{roman}
195
- }
196
- \fi\fi
197
-
198
- %%% 右起こし(奇数ぺージ始まり)にしない場合でも、目次と第1章との間に
199
- %%% 空白ページが入ることがあるので、修正する。
200
- \if@openright\else\if@openleft\else % 右起こしでも左起こしでもない場合だけ、
201
- \renewcommand\mainmatter{% % 本文の開始を表すコマンドを再定義する。
202
- %\pltx@cleartooddpage % 削除
203
- \clearpage % 追加
204
- \@mainmattertrue
205
- \pagenumbering{arabic}
206
- }
207
- \fi\fi
208
-
209
-
210
-
211
- %%% ページヘッダーの形式を変更(fancyhdr.styを使用)
212
- \newcommand{\pageheaderfont}{\small\gtfamily\sffamily} % ゴシック体
213
- %\newcommand{\pageheaderfont}{\small\gtfamily\sffamily\bfseries} % ゴシック体、太字
214
- %%% 紙書籍のような右起こしの場合(左ページに章タイトル、右ページに節タイトル)
215
- \lhead[\pageheaderfont\leftmark]{}
216
- \rhead[]{\pageheaderfont\rightmark}
217
- %%% タブレット向けのような両起こしの場合(両ページに章タイトルと節タイトル)
218
- %\lhead{\pageheaderfont\leftmark}
219
- %\rhead{\pageheaderfont\rightmark}
220
-
221
- %%% ページ番号のスタイル
222
- %\newcommand{\pagenumberstyle}{\thepage} % 例:「1」
223
- %\newcommand{\pagenumberstyle}{\itshape\bfseries\thepage} % 太字、斜体
224
- \newcommand{\pagenumberstyle}{\rmfamily --\ \thepage\ --} % 例:「-- 1 --」
225
- % \newcommand{\pagenumberstyle}{\itshape --\ \thepage\ --} % 斜体
226
-
227
- %%% ページ番号をページフッタに表示(fancyhdr.styを使用)
228
- \fancyfoot{} % ページフッタをクリア
229
- \cfoot{\pagenumberstyle} % ページフッタの真ん中に表示
230
- %\lfoot[\pagenumberstyle]{} % 偶数ページの左下に表示
231
- %\rfoot[]{\pagenumberstyle} % 奇数ページの右下に表示
232
- \fancypagestyle{plainhead}{ % 章タイトルページのスタイル
233
- \fancyhead{} % ページヘッダなし
234
- \fancyfoot{} % ページフッタをクリア
235
- \cfoot{\pagenumberstyle} % ページフッタの真ん中に表示
236
- %\lfoot[\pagenumberstyle]{} % 偶数ページの左下に表示
237
- %\rfoot[]{\pagenumberstyle} % 奇数ページの右下に表示
238
- \renewcommand{\headrulewidth}{0pt} % ページヘッダの区切り線をなくす
239
- \renewcommand{\footrulewidth}{0pt} % ページフッタの区切り線をなくす
240
- }
241
-
242
- %%% ページヘッダを構成する要素を余計なことに Re:VIEW が上書きしちゃってるので、
243
- %%% オリジナルの定義を jsbook.cls からコピーして元に戻す。
244
- \def\chaptermark#1{%
245
- \markboth{%
246
- \ifnum \c@secnumdepth >\m@ne%
247
- \if@mainmatter%
248
- \if@omit@number\else%
249
- \@chapapp\thechapter\@chappos\hskip1zw%
250
- \fi%
251
- \fi%
252
- \fi%
253
- #1%
254
- }{}%
255
- }%
256
- \def\sectionmark#1{%
257
- \markright{%
258
- \ifnum \c@secnumdepth >\z@ \thesection \hskip1zw\fi%
259
- #1%
260
- }%
261
- }%
262
-
263
-
264
-
265
- %%% 章 (Chapter) のタイトルを独立したページにするコマンド。
266
- %%% 独立したページには、章タイトルと、章の概要と、章ごとの目次を含める。
267
- \newcommand{\makechaptitlepage}[1]{%
268
- \pagecolor{starter@chaptitlepagecolor} % ページに背景色をつける
269
- %\addtolength{\linewidth}{-\parindent} % 目次の右側余白が左側より1文字分狭いことへの対策
270
- \def\arg{#1} % '\ifx#1{toc}' がうまく動作してくれないので、その対策
271
- \def\toc{toc}
272
- \def\tocsec{toc=section}
273
- \def\tocsub{toc=subsection}
274
- \def\tocon{toc=on}
275
- \def\tocoff{toc=off}
276
- \ifx\arg\tocon
277
- \setcounter{minitocdepth}{1} % 目次に出すのは節(Section)まで
278
- \minitoc % 章ごとの目次
279
- \else\ifx\arg\tocsec
280
- \setcounter{minitocdepth}{1} % 目次に出すのは節(Section)まで
281
- \minitoc % 章ごとの目次
282
- \else\ifx\arg\tocsub
283
- \setcounter{minitocdepth}{2} % 目次に出すのは項(SubSection)まで
284
- \minitoc % 章ごとの目次
285
- \else\ifx\arg\tocoff
286
- \else
287
- % TODO: invalid argument
288
- \fi\fi\fi\fi
289
- \clearpage% % 改ページ
290
- \pagecolor{none}% % ページの背景色をなくす
291
- }
292
- %%% 章ごとの目次
293
- %%% ('nohints' は、裏表紙の直後に空白ページができるのを防ぐために必要)
294
- \usepackage[japanese,nohints]{minitoc} % 章ごとの目次を作る
295
- \AtBeginDocument{% % \begin{document} で実行するコマンドを登録
296
- \dominitoc
297
- %\listoffigures
298
- %\listoftables
299
- }
300
- \setcounter{minitocdepth}{1}% % 目次に出すのはSectionまで(Subsectionは出さない)
301
- %\setlength{\mtcindent}{3zw} % 目次左右の余白幅(左右の幅であることに注意)
302
- %\mtcsetoffset{minitoc}{3zw} % 目次左のインデント幅(テキスト幅は変わらず)
303
- %\setlength{\mtcskipamount}{\bigskipamount}
304
- \mtcsetrules{*}{off} % 章ごとの目次の上下に罫線を入れない
305
- \mtcsettitle{minitoc}{【この章の内容】} % 章ごとの目次のタイトル
306
- %\mtcsettitle{minitoc}{【{\@chapapp\thechapter\@chappos}の内容】} % または
307
- \renewcommand{\mtcSfont}{\rmfamily\small} % 章ごとの目次のフォント
308
- %\renewcommand{\mtcSfont}{\small\gtfamily\sffamily\color{white}} % 色をつける場合
309
- \mtcsettitlefont{minitoc}{% % 章ごとの目次のタイトルを設定
310
- \gtfamily\sffamily % ゴシック体、サンセリフ体
311
- \hspace{2zw} % 左側のインデント
312
- }
313
-
314
-
315
-
316
- %%% 現在位置に画像が入りきらない場合、画像は次のページに回される。
317
- %%% その際、現在位置に大きなスペースが空くのを防ぐために、
318
- %%% 後続のテキストを現在位置に流し込むようにする。
319
- \renewenvironment{reviewimage}[1][]{%
320
- \ifempty{#1}%
321
- \edef\@tempA{\starter@image@position}% 引数がなければ「image_option:」の値を使う
322
- \else%
323
- \edef\@tempA{#1}% % 引数があればその値を使う
324
- \fi%
325
- \expandafter\starter@image\@tempA% % 先に引数を展開してから \begin{starter@image} を実行
326
- }{%
327
- \endstarter@image% % \end{starter@image} と同じ
328
- }
329
- %
330
- \newenvironment{starter@image}[1]{%
331
- \vspace{0.8zw} % 画像上の余白を調整(少し増やす)
332
- \begin{figure}[#1]
333
- %\begin{center} % center環境は余分な余白がつくので使わない
334
- \centering % \centeringを使うと余分な余白がつかない
335
- }{%
336
- %\end{center}
337
- \end{figure}
338
- \vspace{-0.8zw} % 画像下の余白を調整(少し減らす)
339
- }
340
- %
341
- \renewenvironment{reviewdummyimage}{%
342
- \begin{reviewimage}
343
- \begin{alltt}
344
- }{%
345
- \end{alltt}
346
- \end{reviewimage}
347
- }
348
-
349
-
350
-
351
- %%% コラムが複数のページにまたがるとき、次のページに続いていることが
352
- %%% わかるようにするために、ページ境界では上下の線を引かない。
353
- \renewenvironment{reviewcolumn}{%
354
- %\begin{framed}% % original
355
- \begin{oframed}%
356
- }{%
357
- %\end{framed}% % original
358
- \end{oframed}%
359
- \vspace{2zw}%
360
- }
361
-
362
- %%% コラムのタイトルを変更する
363
- \renewcommand{\reviewcolumnhead}[2]{%
364
- %{\noindent\large ■コラム: #2}% % original
365
- %{\noindent\large\gtfamily\sffamily\bfseries ■コラム:#2}% % 太字のゴシック
366
- {\noindent\large\gtfamily\sffamily\bfseries 【コラム】#2}% % 太字のゴシック
367
- \vspace{2mm}%
368
- }
369
-
370
-
371
-
372
- %%% @<hd>{} や @<subsec>{} で、節や項へのリンクを作成
373
- %%% (config.yml で「chapterlink: true」の設定が必要)
374
- \newcommand{\startersecref}[2]{%
375
- 「\hyperref[#2]{#1}」(p.\pageref{#2})% % 節や項のタイトルがリンク
376
- %{#1}(\hyperref[#2]{p.\pageref{#2}})% % ページ番号がリンク
377
- }
378
- \newcommand{\startersubsecref}[2]{%
379
- 「\hyperref[#2]{{\startersubsectionsymbol}#1}」(p.\pageref{#2})% % 節や項のタイトルがリンク
380
- %{\startersubsectionsymbol}{#1}(\hyperref[#2]{p.\pageref{#2}})% % ページ番号がリンク
381
- }
382
- \newcommand{\startersubsubsecref}[2]{%
383
- 「\hyperref[#2]{#1}」(p.\pageref{#2})% % 節や項のタイトルがリンク
384
- %{#1}(\hyperref[#2]{p.\pageref{#2}})% % ページ番号がリンク
385
- }
386
-
387
-
388
-
389
- %%% 導入文(リード文)
390
- \newenvironment{starterlead}{%
391
- \begin{quotation}% % または \begin{abstract}
392
- }{%
393
- \end{quotation}% % または \end{abstract}
394
- }
395
-
396
-
397
-
398
- %%% 章 (Chaper) の概要
399
- %%% (導入文(リード文)と違うことに注意)
400
- \newenvironment{starterabstract}{%
401
- \addtolength{\rightskip}{2.5zw}% % 右の余白を2.5文字分広げる (default: 0pt)
402
- \addtolength{\leftskip}{2.5zw}% % 左の余白を2.5文字分広げる (default: 5pt)
403
- \gtfamily\sffamily% % ゴシック体
404
- \small% % 少し小さめ
405
- }{%
406
- \par%
407
- \addvspace{2\Cvs}% % 下に1行空ける
408
- }
409
-
410
-
411
-
412
- %%% 引用(複数段落に対応)
413
- \newenvironment{starterquote}{%
414
- \begin{starter@leftbar}{3pt}{starter@quotecolor}%
415
- }{%
416
- \end{starter@leftbar}%
417
- }
418
- %
419
- \newenvironment{starter@leftbar}[2]{% % #1: 太さ、#2: 色
420
- %% framed.sty の機能を使って、文章の左側に縦棒を入れる
421
- \def\FrameCommand{\textcolor{#2}{\vrule width #1} \hspace{10pt}}%
422
- \MakeFramed{%
423
- \advance\hsize-\width%
424
- \advance\hsize-2\starter@quote@sidemargin% ノート環境では左右に余白を空ける
425
- \advance\rightskip -\starter@quote@sidemargin% 右マージンが二重にかかるのを避ける
426
- \advance\leftskip -\starter@quote@sidemargin% 左マージンが二重にかかるのを避ける
427
- \FrameRestore%
428
- }%
429
- }{%
430
- \endMakeFramed%
431
- }
432
- %
433
- \newlength{\starter@quote@sidemargin} % 引用部の左右の余白幅(ノート環境で使う)
434
-
435
-
436
-
437
- %%% 画像のまわりに線をつける
438
- \newcommand{\starterimageframe}[1]{{%
439
- \setlength{\fboxrule}{0.1pt}%
440
- \fcolorbox{lightgray}{white}{#1}%
441
- }}
442
-
443
-
444
-
445
- %%% テキストの横に画像を配置する
446
- %%% (注意:途中での改ページはできない、テキストの回り込みはされない、脚注は使えない)
447
- \newenvironment{startersideimage}[6]{%
448
- \begin{starter@sideimage}{#1}{#2}{#3}{#4}{#5}{#6}%
449
- }{%
450
- \end{starter@sideimage}%
451
- }
452
- \newenvironment{starter@sideimage}[6]{%
453
- %% #1: L or R, #2: 画像ファイル名
454
- %% #3: 画像表示幅, #4: 画像領域幅,
455
- %% #5: 区切り余白幅, #6: テキスト幅(空白なら自動計算)
456
- \ifempty{#6}% % テキスト幅が未指定なら
457
- \setlength\@tempdima{\textwidth}% 本文幅から
458
- \addtolength{\@tempdima}{-#4}% % 画像領域幅を引いて
459
- \addtolength{\@tempdima}{-#5}% % 区切り余白幅を引く
460
- \else% % テキスト幅が指定されていれば
461
- \setlength\@tempdima{#6}% % それを使う
462
- \fi%
463
- %
464
- \def\@tempimgL{}%
465
- \def\@tempimgR{}%
466
- \ifstreq{#1}{L}% % L なら、画像と区切り余白とテキストを表示
467
- \def\@tempimgL{\starter@miniimage{#2}{#3}{#4}\hspace{#5}}%
468
- \else\ifstreq{#1}{R}% % R なら、テキストと区切り余白と画像を表示
469
- \def\@tempimgR{\hspace{#5}\starter@miniimage{#2}{#3}{#4}}%
470
- \fi%
471
- %
472
- \noindent%
473
- \@tempimgL%
474
- \begin{minipage}[t]{\@tempdima}% minipage環境開始
475
- \setlength{\parindent}{1zw}% % minipage環境内で段落開始行をインデントする
476
- }{%
477
- \end{minipage}% % minipage環境終了
478
- \@tempimgR%
479
- \par% % これがないと後続のテキストが続いてエラーになる
480
- }
481
- \newcommand\starter@miniimage[3]{% #1:画像ファイル名, #2:画像の表示幅, #3:画像の領域幅
482
- \begin{minipage}[t]{#3}%
483
- \centering % 中央揃え
484
- %\vskip 0pt\relax% % 画像の上に少し余白が入る (why?)
485
- \vskip -0.6zw\relax% % 画像の上に余白が入らないよう調整
486
- %\null\vspace*{-\baselineskip}%
487
- \ifempty{\starterminiimageframe}%
488
- \includegraphics[width=#2]{#1}% % 画像を表示
489
- \else%
490
- \starterimageframe{% % 画像のまわりを灰色の線で囲む
491
- \includegraphics[width=#2]{#1}% % 画像を表示
492
- }%
493
- \fi%
494
- \end{minipage}%
495
- }
496
- \def\starterminiimageframe{}
497
-
498
-
499
-
500
- %%% サンプルの出力結果(Starterのドキュメントで使用)
501
- \newenvironment{startersampleoutput}[1]{%
502
- \starter@codeblock@vspace%
503
- \starter@caption{#1}%
504
- %\begin{oframed}% % error in note block
505
- \vspace{-0.3\baselineskip}%
506
- \noindent%
507
- \textcolor{lightgray}{\hrulefill}\par%
508
- }{%
509
- %\end{oframed}% % error in note block
510
- \vspace{-0.3\baselineskip}%
511
- \noindent%
512
- \textcolor{lightgray}{\hrulefill}\par%
513
- \starter@codeblock@vspace%
514
- }
515
-
516
-
517
-
518
- %%% 黒ヌキ(白い背景に黒い文字)
519
- %%%
520
- %%% 使い方: \startercursor{テキスト}
521
- \newcommand*{\startercursor}[1]{%
522
- \starter@bgcolor[black]{white}{#1}% % 文字を黒、背景を白にして表示
523
- %\mybgcolor{white}{\textcolor{black}{#1}}%
524
- }%
525
-
526
- %%% 背景色(と文字色)をつける
527
- %%%
528
- %%% 使い方: \starter@bgcolor{white}{テキスト}
529
- %%% or \starter@bgcolor[black]{white}{テキスト}
530
- \newcommand{\starter@bgcolor}[3][]{% % #1: 文字色(default: 空), #2: 背景色, #3: テキスト
531
- \settowidth{\tmp@width}{#3}% % 幅
532
- \settodepth{\tmp@depth}{g}% % 深さ
533
- \settoheight{\tmp@height}{M}% % 高さ
534
- \addtolength{\tmp@height}{\tmp@depth}% % 高さに深さを追加
535
- \addtolength{\tmp@depth}{1pt}% % 深さを少し増やす
536
- \addtolength{\tmp@height}{2pt}% % 高さを少し増やす
537
- %
538
- \makebox[0pt][l]{% % カーソル位置を変えないまま
539
- \textcolor{#2}{% % 背景色を指定して
540
- \rule[-\tmp@depth]{\tmp@width}{\tmp@height}% % 塗りつぶす
541
- %\rule[-\tmp@depth]{\tmp@width}{\baselineskip}%
542
- }%
543
- }%
544
- \ifempty{#1}% % 文字色が未指定なら
545
- #3% % テキストをそのまま表示
546
- \else% % 文字色が指定されていれば
547
- \textcolor{#1}{#3}% % 色を指定してテキストを表示
548
- \fi%
549
- }
550
-
551
- %%% 長さを表す変数 (control sequence) を宣言
552
- \newlength{\tmp@width}% % 幅
553
- \newlength{\tmp@height}% % 高さ
554
- \newlength{\tmp@depth}% % 深さ
35
+ %%% その他
36
+ \usepackage{starter-misc}