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
@@ -1,7 +1,7 @@
1
1
  %%% -*- coding: utf-8 -*-
2
2
 
3
3
  %%%
4
- %%% コードブロック(//list、//terminal)
4
+ %%% コードブロック(//list、//terminal、//output
5
5
  %%%
6
6
 
7
7
 
@@ -57,94 +57,180 @@
57
57
 
58
58
 
59
59
  %%% コードブロック(プログラムリストやターミナル)
60
- \newenvironment{starter@codeblock}{%
60
+ \newenvironment{starter@codeblock}[2][]{%
61
+ \starter@codeblock@vspace% % 上に余白を空ける
62
+ \ifempty{#1}\else\label{#1}\fi% % 参照用のラベル
63
+ \starter@codeblock@caption{#2}% % キャプションを表示
64
+ \begin{@starter@codeblock}%
65
+ }{%
66
+ \end{@starter@codeblock}%
67
+ \starter@codeblock@vspace% % 下に余白を空ける
68
+ }
69
+ \newenvironment{@starter@codeblock}{%
61
70
  %\vspace{-\lastskip}%
62
- \ifempty{\starter@codeblock@fontcolor}\else%
63
- \color{\starter@codeblock@fontcolor}% 文字色はここで指定(programやterminalでは指定しない)
64
- \fi%
65
- \ifempty{\starter@codeblock@backcolor}\else%
66
- \colorlet{shadecolor}{\starter@codeblock@backcolor}% 背景色
71
+ \starter@enablettfont{\starter@codeblock@ttfont}% 等幅フォントを指定
72
+ \ifempty\starter@codeblock@fontsize\else% % fontsizeオプションが指定されていたら
73
+ \csname\starter@codeblock@fontsize\endcsname% % その大きさに変更する
67
74
  \fi%
75
+ \setlength{\baselineskip}{\starter@codeblock@baselineskip}% 行間を狭める
68
76
  \@starter@codeblock@defframe% % 枠の表示方法を設定
69
- %
70
- \def\seqinsert{\-}% % 折り返し用のコマンドを上書き
77
+ %% 自動折返しに必要なコマンドを準備する
78
+ %\def\seqinsert{\-}% % 折り返し用のコマンドを上書き
71
79
  %\def\-{\starter@fold@able}% % (効果なし)「\-」を上書き
72
80
  %\let\-\starter@fold@able% % (効果なし)「\-」を上書き
73
81
  %\renewcommand\-{\starter@fold@able}% (効果なし)「\-」を上書き
74
- \DeclareRobustCommand{\-}{\starter@fold@able}% 「\-」を上書き
82
+ \ifx\starter@codeblock@fold\empty%
83
+ \DeclareRobustCommand{\-}{\starter@fold@not}% 折り返ししない
84
+ \else%
85
+ \DeclareRobustCommand{\-}{\starter@fold@able}% 折り返しする
86
+ \fi%
75
87
  \def\UL@dischyp{\starter@fold@dischyp}% 取り消し線で使うulem.sty内部のコマンドを上書き
76
88
  %
77
- \vspace{-\baselineskip}%
78
- \begin{alltt}% % verbatim環境は使わない
89
+ \setlength{\@totalleftmargin}{0pt}% 箇条書き用のインデント幅をクリア(折返しに影響するため)
90
+ %% 左右の空きの幅をもとに、コードブロック左の空き幅を計算する
91
+ \setlength{\starter@codeblock@leftmargin}{\leftskip}% % 左側の空きの幅から、
92
+ \addtolength{\starter@codeblock@leftmargin}{-\rightskip}% % 右側の空きの幅を引く
93
+ %% 左右の空きの幅をもとに、表示幅を調整する
94
+ %% (条件により +/-1zw の調整が必要、理由は不明)
95
+ \ifdim\rightskip=0pt%
96
+ \setlength{\starter@codeblock@hsizedelta}{0pt}%
97
+ \else\ifdim\leftskip>\rightskip%
98
+ \setlength{\starter@codeblock@hsizedelta}{\dimexpr -\leftskip +1zw}%
99
+ \else\ifdim\leftskip<\rightskip%
100
+ \setlength{\starter@codeblock@hsizedelta}{\dimexpr -\leftskip -\rightskip -1zw}%
101
+ \else%
102
+ \setlength{\starter@codeblock@hsizedelta}{\dimexpr -\leftskip -\rightskip}%
103
+ \fi\fi\fi%
104
+ %
105
+ \vspace{-0.4\baselineskip}%
106
+ %\begin{alltt}% % verbatim環境もalltt環境も使わない
107
+ \ttfamily%
108
+ \frenchspacing%
109
+ %\obeylines%
110
+ %\obeyspaces%
111
+ \setlength{\parindent}{0pt}% % 段落最初の字下げをなくす
112
+ \setlength{\parskip}{0pt}% % 段落間の縦方向の空きをなくす
113
+ %
114
+ \ifx\starter@codeblock@widecharfit\empty%
115
+ \settowidth{\starter@codeblock@widechar@width}{あ}% % 全角1文字分の幅
116
+ %\let\ZC=\starter@codeblock@widechar@asis% '\ZC{あ}' はそのままの幅
117
+ \let\ZC=\starter@codeblock@widechar@fit% '\ZC{あ}' が全角1文字分の幅
118
+ \else%
119
+ \settowidth{\starter@codeblock@widechar@width}{a\-b}% % 半角2文字分の幅
120
+ \let\ZC=\starter@codeblock@widechar@fit% '\ZC{あ}' が半角2文字分の幅になる
121
+ \fi%
122
+ %
79
123
  %\setlength{\baselineskip}{0.85\baselineskip}%
80
124
  \MakeFramed{%
81
- \advance\hsize-\width% % ブロック幅をテキスト幅と同じにする(左右に広げない)
125
+ \addtolength{\hsize}{-\width}% ブロック幅をテキスト幅と同じにする(左右に広げない)
82
126
  \addtolength{\hsize}{\starter@codeblock@widen}% ほんの少しだけ表示幅を広げる
83
- \advance\hsize-2\starter@codeblock@sidemargin% ノート環境では左右に余白を空ける
127
+ \addtolength{\hsize}{\starter@codeblock@hsizedelta}% 表示幅を調整する
128
+ \setlength{\leftskip}{0pt}% % //note と //desclist 用に、
129
+ \setlength{\rightskip}{0pt}% % フレーム内のインデントをなくす
130
+ \clubpenalty=\z@% % ページの一番下に1行だけ表示されるのを許す
131
+ \widowpenalty=\z@% % ページの一番上に1行だけ表示されるのを許す
84
132
  \FrameRestore%
85
133
  }%
86
134
  }{%
87
135
  \endMakeFramed%
88
- \end{alltt}%
136
+ %\end{alltt}%
89
137
  \vspace{-\lastskip}%
90
138
  }
91
139
 
92
140
  \def\starter@codeblock@fontcolor{} % コードブロックの文字色
93
141
  \def\starter@codeblock@backcolor{} % コードブロックの背景色
94
- \def\startercodeblockfontsize{} % small, footnotesize, scriptsize, ...
95
-
96
- \newif\if@starter@codeblock@border % コードブロックを枠で囲むか?
97
- \@starter@codeblock@borderfalse
98
- \newcommand{\@starter@codeblock@border@toggle}[1]{%
99
- \ifempty{#1}% % 引数が空なら
100
- \@starter@codeblock@borderfalse% % 枠をつけない
101
- \else% % 引数が空でないなら
102
- \@starter@codeblock@bordertrue% % 枠をつける
103
- \fi
142
+ \def\starter@codeblock@widecharfit{} % 全角1文字を半角2文字幅に調節するか?
143
+ \def\starter@codeblock@charspace{} % 文字の間隔を調整する幅
144
+ \newlength{\starter@codeblock@leftmargin} % コードブロック右側の空き幅
145
+ \newlength{\starter@codeblock@hsizedelta} % コードブロックの表示幅を狭める長さ
146
+
147
+ %% 全角1文字を半角2文字分の幅で表示する
148
+ \newcommand{\starter@codeblock@widechar@fit}[1]{%
149
+ \makebox[\starter@codeblock@widechar@width][c]{#1}%
104
150
  }
151
+ \newcommand{\starter@codeblock@widechar@asis}[1]{%
152
+ \mbox{#1}%
153
+ }
154
+ \newlength{\starter@codeblock@widechar@width}% 半角2文字分の幅
155
+ \settowidth{\starter@codeblock@widechar@width}{a\-b}
156
+
105
157
 
106
158
  \newcommand{\@starter@codeblock@defframe}{% 枠の表示方法を設定
107
159
  %% framed.sty で提供されているコマンドを上書き
108
- \if@starter@codeblock@border%
109
- \def\FrameCommand{\@@OpenFBox\FrameRule\FrameRule}% % ページまたぎがないとき
110
- \def\FirstFrameCommand{\@@OpenFBox\FrameRule\z@}% % 次のページにまたがるとき
111
- \def\MidFrameCommand{\@@OpenFBox\z@\z@}% % 次/前のページへまたがるとき
112
- \def\LastFrameCommand{\@@OpenFBox\z@\FrameRule}% % 前のページからまたがるとき
113
- \else%
114
- \def\FrameCommand{%
160
+ \ifx\starter@codeblock@border\empty% %%% 枠線をつけない場合
161
+ \def\@framecommandsetup{%
115
162
  \fboxsep=0.5\FrameSep% % ブロックのパディング
116
- \colorbox{shadecolor}% % ブロックの背景色
163
+ \ifx\starter@codeblock@fontcolor\empty\else%
164
+ \color{\starter@codeblock@fontcolor}% 文字色を指定
165
+ \fi%
166
+ \ifdim\starter@codeblock@leftmargin=0pt\else%
167
+ \hspace{\starter@codeblock@leftmargin}% 左側を空ける
168
+ \fi%
169
+ }%
170
+ \ifx\starter@codeblock@backcolor\empty%
171
+ \def\FrameCommand{%
172
+ \@framecommandsetup%
173
+ }%
174
+ \else%
175
+ \def\FrameCommand{%
176
+ \@framecommandsetup%
177
+ \colorbox{\starter@codeblock@backcolor}% ブロックの背景色
178
+ }%
179
+ \fi%
180
+ \else% %%% 枠線をつける場合
181
+ \def\FrameCommand{% % ページまたぎがないとき
182
+ \@starter@codeblock@openfbox{\FrameRule}{\FrameRule}{\FrameRule}{\FrameRule}%
183
+ }%
184
+ \def\FirstFrameCommand{% % 次のページにまたがるとき
185
+ \@starter@codeblock@openfbox{\FrameRule}{\z@}{\FrameRule}{\FrameRule}%
117
186
  }%
118
- \fi
187
+ \def\MidFrameCommand{% % 次/前のページへまたがるとき
188
+ \@starter@codeblock@openfbox{\z@}{\z@}{\FrameRule}{\FrameRule}%
189
+ }%
190
+ \def\LastFrameCommand{% % 前のページからまたがるとき
191
+ \@starter@codeblock@openfbox{\z@}{\FrameRule}{\FrameRule}{\FrameRule}%
192
+ }%
193
+ \fi%
119
194
  }
120
- \def\@@OpenFBox#1#2#3{{% % 枠線で囲むだけでなく、背景色をつける
121
- \edef\@bordercolor{gray}% % 枠線の色
122
- \edef\@bgcolor{shadecolor}% % 背景の色
195
+ \newcommand{\@starter@codeblock@openfbox}[5]{{% % 枠線で囲むだけでなく、背景色をつける
196
+ \edef\@top{#1}% % 枠線(上)
197
+ \edef\@bottom{#2}% % 枠線(下)
198
+ \edef\@left{#3}% % 枠線(左)
199
+ \edef\@right{#4}% % 枠線(右)
200
+ \edef\@bordercolor{\starter@codeblock@bordercolor}% 枠線の色
201
+ \edef\@bgcolor{\starter@codeblock@backcolor}% 背景の色
123
202
  \edef\@fontcolor{\starter@codeblock@fontcolor}% フォントの色
124
- \ifempty{\@fontcolor}%
203
+ \ifx\@fontcolor\empty%
125
204
  \edef\@fontcolor{black}%
126
205
  \fi%
127
- \edef\@padding{4.5pt}% % 内側のpadding
206
+ \edef\@padding{\starter@codeblock@padding}% 内側のpadding
128
207
  \FrameSep=0pt% % 枠線内の padding をなくす
129
- \@@ColorFBox{\@bordercolor}{\@bgcolor}{\@fontcolor}{#1}{#2}{\FrameRule}{\FrameRule}{\@padding}{#3}%
130
- }}
131
- \def\@@ColorFBox#1#2#3#4#5#6#7#8#9{{% color (border/background/font), border width (top/bottom/left/right), padding, text
132
- \fboxsep=0pt% % 枠線内の padding をなくす
133
- \color{#1}% % 枠線に色をつける
134
- \CustomFBox{}{}{#4}{#5}{#6}{#7}{%% 枠線をつける
135
- \fboxsep=#8% % colorbox 内の padding を設定
136
- \colorbox{#2}{\color{#3}#9}% % 背景色をつける
208
+ \ifx\@bgcolor\empty%
209
+ \fboxsep=\@padding% % 枠線内の padding をつける
210
+ \else%
211
+ \fboxsep=0pt% % 枠線とcolorbox間の padding をなくす
212
+ \fi%
213
+ \color{\@bordercolor}% % 枠線に色をつける
214
+ \ifdim\starter@codeblock@leftmargin=0pt\else%
215
+ \hspace{\starter@codeblock@leftmargin}% 左側を空ける
216
+ \fi%
217
+ \CustomFBox{}{}{\@top}{\@bottom}{\@left}{\@right}{% 枠線をつける
218
+ \ifx\@bgcolor\empty%
219
+ {\color{\@fontcolor}#5}% % 背景色をつけない
220
+ \else%
221
+ \fboxsep=\@padding% % colorbox 内の padding を設定
222
+ \colorbox{\@bgcolor}{\color{\@fontcolor}#5}% 背景色をつける
223
+ \fi%
137
224
  }%
138
225
  }}%
139
226
 
227
+ \def\starter@codeblock@padding{4.5pt}
228
+
140
229
  \newcommand{\starter@codeblock@vspace}{% % コードブロックの前後の余白
141
230
  %% \vspace と違い、\addvspace は直前に余白があればその分の高さを引いた余白を追加する
142
231
  \addvspace{\medskipamount}% % \medskipと同じ高さの余白にする
143
232
  }
144
233
 
145
- \newlength{\starter@codeblock@sidemargin} % コードブロックの左右の余白幅(ノート環境で使う)
146
- \setlength{\starter@codeblock@sidemargin}{0pt}
147
-
148
234
  \newcommand{\starter@codeblock@widen}{0.0mm} % コードブロックを少しだけ広げる幅
149
235
 
150
236
  %%% コードブロック用のキャプション
@@ -157,61 +243,89 @@
157
243
  }
158
244
 
159
245
  %%% コードブロック用の行番号
160
- \newcommand{\starterlineno}[1]{% % #1: 行番号
246
+ \newcommand{\starterouterlineno}[1]{% % #1: 行番号
161
247
  \makebox[0pt][r]{% % 右揃えにする
162
248
  \small\rmfamily% % 文字を小さくし、ローマン体を使う
163
- \textcolor{gray}{#1}% % 文字色をグレーにする
249
+ \textcolor{gray}{% % 文字色をグレーにする
250
+ \starter@excluewhencopied{#1}% % マウスコピペの対象にしない
251
+ }%
164
252
  \hspace{0.8\FrameSep}% % 少しスペースを空ける
165
253
  }%
166
254
  }
255
+ \newcommand{\starterinnerlineno}[1]{% % #1: 行番号
256
+ \textcolor{gray}{% % 文字色をグレーにする
257
+ \starter@excluewhencopied{#1}% % マウスコピペの対象にしない
258
+ }%
259
+ }
167
260
 
168
261
  %%% プログラム(//list[label][caption][optionstr]{ ... //})
169
262
  \newenvironment{starterprogram}[2][]{% % #1:ラベル、#2:キャプション
170
- \starter@codeblock@vspace% % 上に余白を空ける
171
- \ifempty{#1}\else\label{#1}\fi% % 参照用のラベル
172
- \starter@codeblock@caption{#2}% % キャプションを表示
173
- \starter@enablettfont{\starter@program@ttfont}% % 等幅フォントを指定
174
- \ifstreq{\starter@program@fontsize}{small}%
175
- \small% % 文字を少し小さくする
176
- \fi%
177
- \ifempty\startercodeblockfontsize\else% % fontsizeオプションが指定されていたら
178
- \csname\startercodeblockfontsize\endcsname% % その大きさに変更する
179
- \fi%
180
- \def\starterindentchar{\starter@program@indentchar}% インデント用記号(「|」)
263
+ \edef\starter@codeblock@ttfont{\starter@program@ttfont}% 等幅フォントを指定
264
+ \edef\starter@codeblock@fontsize{\starter@program@fontsize}% 文字を少し小さくする
265
+ \edef\starter@codeblock@border{\starter@program@border}% 枠をつける/つけない
181
266
  \edef\starter@codeblock@widen{\starter@program@widen}% 幅をほんの少し広げる
182
- \@starter@codeblock@border@toggle{\starter@program@border}% 枠をつける/つけない
183
- \setlength{\baselineskip}{0.85\baselineskip}% % 行間を狭める
184
- \edef\starter@codeblock@fontcolor{}% % 文字色を無指定
185
- \edef\starter@codeblock@backcolor{starter@programcolor}% 背景色を指定
186
- \begin{starter@codeblock}%
267
+ \edef\starter@codeblock@widecharfit{\starter@program@widecharfit}% 全角幅を半角2文字分に
268
+ \edef\starter@codeblock@charspace{\starter@program@charspace}% 文字間のスペース
269
+ \edef\starter@codeblock@baselineskip{0.85\baselineskip}% 行間を狭める
270
+ \edef\starter@codeblock@fontcolor{starter@program@fontcolor}% 文字色を無指定
271
+ \edef\starter@codeblock@backcolor{starter@program@backcolor}% 背景色を指定
272
+ \edef\starter@codeblock@bordercolor{starter@program@bordercolor}% 枠の色
273
+ \edef\starter@codeblock@weakcolor{starter@program@weakcolor}% 折り返し記号の色
274
+ \edef\starter@codeblock@weakercolor{starter@program@weakercolor}% 改行記号の色
275
+ \edef\starter@codeblock@thincolor{starter@program@thincolor}% インデント記号の色
276
+ \ifx\starter@program@border\empty%
277
+ \edef\starter@codeblock@bordercolor{}% % 枠をつけない
278
+ \fi%
279
+ \begin{starter@codeblock}[#1]{#2}%
187
280
  }{%
188
281
  \end{starter@codeblock}%
189
- \starter@codeblock@vspace% % 下に余白を空ける
190
282
  }
191
283
 
192
284
  %%% ターミナル(//terminal[label][caption][optionstr]{ ... //})
193
285
  \newenvironment{starterterminal}[2][]{% % #1:ラベル、#2:キャプション
194
- \starter@codeblock@vspace% % 上に余白を空ける
195
- \ifempty{#1}\else\label{#1}\fi% % 参照用のラベル
196
- \starter@codeblock@caption{#2}% % キャプションを表示
197
- \starter@enablettfont{\starter@terminal@ttfont}% % 等幅フォントを指定
198
- \ifstreq{\starter@terminal@fontsize}{small}%
199
- \small% % 文字を少し小さくする
200
- \fi%
201
- \ifempty\startercodeblockfontsize\else% % fontsizeオプションが指定されていたら
202
- \csname\startercodeblockfontsize\endcsname% % その大きさに変更する
203
- \fi%
204
- \def\starterindentchar{\starter@terminal@indentchar}% インデント用記号(「|」)
286
+ \edef\starter@codeblock@ttfont{\starter@terminal@ttfont}% 等幅フォントを指定
287
+ \edef\starter@codeblock@fontsize{\starter@terminal@fontsize}% 文字を少し小さくする
288
+ \edef\starter@codeblock@border{\starter@terminal@border}% 枠をつける/つけない
205
289
  \edef\starter@codeblock@widen{\starter@terminal@widen}% 幅をほんの少し広げる
206
- \@starter@codeblock@border@toggle{\starter@terminal@border}% 枠をつける/つけない
207
- \setlength{\baselineskip}{0.85\baselineskip}% % 行間を狭める
290
+ \edef\starter@codeblock@widecharfit{\starter@terminal@widecharfit}% 全角幅を半角2文字分に
291
+ \edef\starter@codeblock@charspace{\starter@terminal@charspace}% 文字間のスペース
292
+ \edef\starter@codeblock@baselineskip{0.85\baselineskip}% 行間を狭める
208
293
  %\color{white}% ←ここで指定してはダメ!キャプションなしterminal間の余白が広がってしまう
209
- \edef\starter@codeblock@fontcolor{white}% % 文字色を無指定
210
- \edef\starter@codeblock@backcolor{starter@terminalcolor}% 背景色を指定
211
- \begin{starter@codeblock}%
294
+ \edef\starter@codeblock@fontcolor{starter@terminal@fontcolor}% 文字色を無指定
295
+ \edef\starter@codeblock@backcolor{starter@terminal@backcolor}% 背景色を指定
296
+ \edef\starter@codeblock@bordercolor{starter@terminal@bordercolor}% 枠の色
297
+ \edef\starter@codeblock@weakcolor{starter@terminal@weakcolor}% 折り返し記号の色
298
+ \edef\starter@codeblock@weakercolor{starter@terminal@weakercolor}% 改行記号の色
299
+ \edef\starter@codeblock@thincolor{starter@terminal@thincolor}% インデント記号の色
300
+ \ifx\starter@terminal@border\empty%
301
+ \edef\starter@codeblock@bordercolor{}% % 枠をつけない
302
+ \fi%
303
+ \begin{starter@codeblock}[#1]{#2}%
304
+ }{%
305
+ \end{starter@codeblock}%
306
+ }
307
+
308
+ %%% 出力結果(//output[label][caption][optionstr]{ ... //})
309
+ \newenvironment{starteroutput}[2][]{% % #1:ラベル、#2:キャプション
310
+ \edef\starter@codeblock@ttfont{\starter@output@ttfont}% 等幅フォントを指定
311
+ \edef\starter@codeblock@fontsize{\starter@output@fontsize}% 文字を少し小さくする
312
+ \edef\starter@codeblock@border{\starter@output@border}% 枠をつける/つけない
313
+ \edef\starter@codeblock@widen{\starter@output@widen}% 幅をほんの少し広げる
314
+ \edef\starter@codeblock@widecharfit{\starter@output@widecharfit}% 全角幅を半角2文字分に
315
+ \edef\starter@codeblock@charspace{\starter@output@charspace}% 文字間のスペース
316
+ \edef\starter@codeblock@baselineskip{0.85\baselineskip}% 行間を狭める
317
+ \edef\starter@codeblock@fontcolor{starter@output@fontcolor}% 文字色を無指定
318
+ \edef\starter@codeblock@backcolor{starter@output@backcolor}% 背景色を指定
319
+ \edef\starter@codeblock@bordercolor{starter@output@bordercolor}% 枠の色
320
+ \edef\starter@codeblock@weakcolor{starter@output@weakcolor}% 折り返し記号の色
321
+ \edef\starter@codeblock@weakercolor{starter@output@weakercolor}% 改行記号の色
322
+ \edef\starter@codeblock@thincolor{starter@output@thincolor}% インデント記号の色
323
+ \ifx\starter@output@border\empty%
324
+ \edef\starter@codeblock@bordercolor{}% % 枠をつけない
325
+ \fi%
326
+ \begin{starter@codeblock}[#1]{#2}%
212
327
  }{%
213
328
  \end{starter@codeblock}%
214
- \starter@codeblock@vspace% % 下に余白を空ける
215
329
  }
216
330
 
217
331
 
@@ -228,17 +342,29 @@
228
342
  %% ・第1引数は折り返し箇所の行末で実行されるコマンド
229
343
  %% ・第2引数は折り返し箇所の次行の行頭で実行されるコマンド
230
344
  %% ・第3引数は折り返ししないときに実行されるコマンド
345
+ %% ・「\starter@excluewhencopied」を使って、折返し文字をマウスコピペの対象外にする
346
+ %% (TODO:\discretionaryを上書きするとコンパイルがかなり遅くなってしまう)
231
347
  \discretionary{%
232
- \makebox[0pt][l]{\starter@fold@char}% % 折り返しを表す記号を行末に挿入
348
+ \makebox[0pt][l]{%
349
+ \starter@excluewhencopied{\starter@fold@char}% 折り返しを表す記号を行末に挿入
350
+ }%
233
351
  }{%
234
352
  \makebox[\starter@fold@indentwidth][r]{% % 折返しの直後にインデントを挿入
235
- \starter@fold@contchar% % 折り返しを表す記号を行頭に挿入
353
+ \starter@excluewhencopied{\starter@fold@contchar}% 折り返しを表す記号を行頭に挿入
236
354
  }%
237
- }{}%
355
+ }{%
356
+ \starter@fold@whennot%
357
+ }%
358
+ }
359
+ \newcommand{\starter@fold@whennot}{%
360
+ %% 文字間の間隔を空ける/詰める
361
+ \ifx\starter@codeblock@charspace\empty\else%
362
+ \mbox{\hspace{\starter@codeblock@charspace}}%
363
+ \fi%
238
364
  }
239
365
  \newcommand{\starter@fold@char}{%
240
366
  \mdseries\rmfamily% % 通常の太さのローマン体
241
- \textcolor{gray}{\guilsinglright}% % グレーの '>'
367
+ \textcolor{\starter@codeblock@weakcolor}{\guilsinglright}% グレーの '>'
242
368
  %\tiny\textcolor{gray}{\raisebox{0.5mm}{$\blacktriangleright$}}% % 右向きの三角形
243
369
  }
244
370
  \newcommand{\starter@fold@contchar}{% % 折り返し後の継続行の頭につける記号
@@ -283,6 +409,14 @@
283
409
  }{}%
284
410
  }
285
411
 
412
+ %% 折り返しをしない
413
+ \newcommand{\starter@fold@not}{%
414
+ \ifx\starter@codeblock@charspace\empty\else%
415
+ \mbox{\hspace{\starter@codeblock@charspace}}%
416
+ \fi%
417
+ \nolinebreak% % 折り返し以外での改行を禁止する
418
+ }
419
+
286
420
 
287
421
 
288
422
  %%% 行末 (End Of Line) を表す記号
@@ -300,7 +434,9 @@
300
434
 
301
435
  \newcommand{\startereolmark}{% % 行末を表す改行記号を表示する
302
436
  \makebox[0pt][l]{%
303
- \textcolor{starter@eol@color}{\starter@eol@char}%
437
+ \textcolor{\starter@codeblock@weakercolor}{%
438
+ \starter@excluewhencopied{\starter@eol@char}%
439
+ }%
304
440
  }%
305
441
  }
306
442
  \newcommand{\starter@eol@char}{% % 行末を表す改行記号
@@ -309,24 +445,19 @@
309
445
  % \scriptsize$\leftdowncurvedarrow$}% % (カーブタイプ、stix.styが必要)
310
446
  %}%
311
447
  }
312
- \colorlet{starter@eol@color}{lightgray} % 改行記号の表示色
313
- \newcommand{\startereolmarklight}{% % program用
314
- \colorlet{starter@eol@color}{lightgray}% % 薄いグレーを使う
315
- }
316
- \newcommand{\startereolmarkdark}{% % terminal用
317
- \colorlet{starter@eol@color}{darkgray}% % 濃いグレーを使う
318
- }
319
448
 
320
449
 
321
450
 
322
451
  %%% コードブロックのインデントを示す記号(「|」)
323
- \newcommand{\starterindentchar}{} % コードブロックの中で上書きされる
324
- \newcommand{\starter@indentchar}{%
325
- {|}% % インデントを表す記号
326
- }
327
- \newcommand{\starter@program@indentchar}{% % プログラム用
328
- \textcolor{starter@program@indentcolor}{\starter@indentchar}% 色つきで表示
452
+ %%% (以前はパイプ記号だったけど、マウスでコピペするとそれに含まれてしまうので、縦線を引くように変更。)
453
+ \newcommand{\starterindentchar}{%
454
+ \textcolor{\starter@codeblock@thincolor}{% % 色つきで表示
455
+ \starter@indentchar%
456
+ }%
329
457
  }
330
- \newcommand{\starter@terminal@indentchar}{% % ターミナル用
331
- \textcolor{starter@terminal@indentcolor}{\starter@indentchar}% 色つきで表示
458
+ \def\starter@indentchar{% % インデントを表す記号
459
+ \rlap{% % 表示するけど位置を移動しない
460
+ \rule[-0.55ex]{0.5pt}{2.35ex}% % 縦線を引く
461
+ }%
462
+ \mbox{ }% % 半角空白
332
463
  }