review-retrovert 0.9.7 → 0.9.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +9 -0
  3. data/.editorconfig +3 -0
  4. data/.github/workflows/retrovert.yml +20 -5
  5. data/.gitignore +1 -0
  6. data/.vscode/launch.json +48 -0
  7. data/Gemfile.lock +13 -4
  8. data/Makefile +24 -0
  9. data/docker/review.Dockerfile +10 -0
  10. data/lib/review/retrovert/converter.rb +374 -111
  11. data/lib/review/retrovert/reviewcompat.rb +57 -0
  12. data/lib/review/retrovert/reviewdef.rb +70 -0
  13. data/lib/review/retrovert/sty/{ird.sty → ird.sty.erb} +9 -1
  14. data/lib/review/retrovert/sty/review-retrovert-custom.sty.erb +6 -0
  15. data/lib/review/retrovert/utils.rb +35 -0
  16. data/lib/review/retrovert/version.rb +1 -1
  17. data/lib/review/retrovert/yamlconfig.rb +0 -1
  18. data/package-lock.json +6 -0
  19. data/package.json +1 -0
  20. data/review-retrovert.gemspec +5 -1
  21. data/testdata/mybook/.gitignore +3 -1
  22. data/testdata/mybook/.textlintrc +11 -0
  23. data/testdata/mybook/Rakefile +8 -0
  24. data/testdata/mybook/catalog.yml +36 -10
  25. data/testdata/mybook/config-starter.yml +134 -9
  26. data/testdata/mybook/config.yml +44 -15
  27. data/testdata/mybook/contents/00-preface.re +48 -2
  28. data/testdata/mybook/contents/01-install.re +38 -5
  29. data/testdata/mybook/contents/02-tutorial.re +333 -113
  30. data/testdata/mybook/contents/03-syntax.re +2370 -373
  31. data/testdata/mybook/contents/04-customize.re +424 -88
  32. data/testdata/mybook/contents/05-faq.re +288 -10
  33. data/testdata/mybook/contents/06-bestpractice.re +431 -59
  34. data/testdata/mybook/contents/91-compare.re +402 -2
  35. data/testdata/mybook/contents/92-filelist.re +14 -8
  36. data/testdata/mybook/contents/93-background.re +10 -10
  37. data/testdata/mybook/contents/99-postface.re +2 -1
  38. data/testdata/mybook/contents/r0-root.re +1 -1
  39. data/testdata/mybook/css/webstyle.css +180 -2
  40. data/testdata/mybook/data/terms.txt +3 -0
  41. data/testdata/mybook/data/words.txt +15 -0
  42. data/testdata/mybook/images/03-syntax/index-page.png +0 -0
  43. data/testdata/mybook/images/03-syntax/order-detail.png +0 -0
  44. data/testdata/mybook/images/04-customize/section_decoration_samples.png +0 -0
  45. data/testdata/mybook/images/05-faq/dummy-image.png +0 -0
  46. data/testdata/mybook/images/06-bestpractice/section_title_wlines.png +0 -0
  47. data/testdata/mybook/images/avatar-b.png +0 -0
  48. data/testdata/mybook/images/avatar-g.png +0 -0
  49. data/testdata/mybook/images/avatar-r.png +0 -0
  50. data/testdata/mybook/images/caution-icon.png +0 -0
  51. data/testdata/mybook/images/info-icon.png +0 -0
  52. data/testdata/mybook/images/warning-icon.png +0 -0
  53. data/testdata/mybook/layouts/layout.html5.erb +3 -1
  54. data/testdata/mybook/layouts/layout.tex.erb +265 -379
  55. data/testdata/mybook/layouts/layout.tex.erb.orig +386 -0
  56. data/testdata/mybook/lib/ruby/review-book.rb +64 -0
  57. data/testdata/mybook/lib/ruby/review-builder.rb +902 -63
  58. data/testdata/mybook/lib/ruby/review-compiler.rb +675 -22
  59. data/testdata/mybook/lib/ruby/review-epubbuilder.rb +33 -0
  60. data/testdata/mybook/lib/ruby/review-epubmaker.rb +10 -7
  61. data/testdata/mybook/lib/ruby/review-htmlbuilder.rb +354 -66
  62. data/testdata/mybook/lib/ruby/review-latexbuilder.rb +429 -146
  63. data/testdata/mybook/lib/ruby/review-maker.rb +117 -6
  64. data/testdata/mybook/lib/ruby/review-markdownbuilder.rb +945 -0
  65. data/testdata/mybook/lib/ruby/review-markdownmaker.rb +91 -0
  66. data/testdata/mybook/lib/ruby/review-monkeypatch.rb +2 -0
  67. data/testdata/mybook/lib/ruby/review-pdfmaker.rb +160 -82
  68. data/testdata/mybook/lib/ruby/review-webmaker.rb +20 -5
  69. data/testdata/mybook/lib/tasks/review.rake +14 -0
  70. data/testdata/mybook/lib/tasks/starter.rake +148 -4
  71. data/testdata/mybook/sty/indexstyle.ist +25 -0
  72. data/testdata/mybook/sty/mytextsize.sty +29 -0
  73. data/testdata/mybook/sty/mytitlepage.sty +34 -11
  74. data/testdata/mybook/sty/review-base.sty +276 -0
  75. data/testdata/mybook/sty/starter-codeblock.sty +237 -106
  76. data/testdata/mybook/sty/starter-color.sty +72 -17
  77. data/testdata/mybook/sty/starter-heading.sty +60 -13
  78. data/testdata/mybook/sty/starter-misc.sty +894 -0
  79. data/testdata/mybook/sty/starter-note.sty +67 -14
  80. data/testdata/mybook/sty/starter-talklist.sty +105 -0
  81. data/testdata/mybook/sty/starter-util.sty +35 -0
  82. data/testdata/mybook/sty/starter.sty +8 -526
  83. metadata +80 -4
@@ -1,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
  }