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
@@ -17,17 +17,17 @@
17
17
  「@<code>|#@#|」で始まる行は行コメントであり、コンパイル時に読み飛ばされます。
18
18
  一般的な行コメントとは違って、行の先頭から始まる必要があるので注意してください。
19
19
 
20
- //list[][サンプル]{
21
- 本文1
22
- @<b>|#@#|本文2
23
- 本文3
20
+ //list[][サンプル][]{
21
+ 本文1
22
+ @<b>|#@#|本文2
23
+ 本文3
24
24
  //}
25
25
 
26
26
  //sampleoutputbegin[表示結果]
27
27
 
28
- 本文1
29
- #@#本文2
30
- 本文3
28
+ 本文1
29
+ #@#本文2
30
+ 本文3
31
31
 
32
32
  //sampleoutputend
33
33
 
@@ -47,29 +47,30 @@ Starterでは「本文1」と「本文3」が別の段落にならないよう
47
47
 
48
48
  「@<code>|#@+++|」から「@<code>|#@---|」までの行は範囲コメントであり、コンパイル時に読み飛ばされます。
49
49
 
50
- //list[][サンプル]{
51
- 本文1
50
+ //needvspace[latex][6zw]
51
+ //list[][サンプル][]{
52
+ 本文1。
52
53
 
53
54
  @<b>|#@+++|
54
- 本文2
55
+ 本文2
55
56
 
56
- 本文3
57
+ 本文3
57
58
  @<b>|#@---|
58
59
 
59
- 本文4
60
+ 本文4
60
61
  //}
61
62
 
62
63
  //sampleoutputbegin[表示結果]
63
64
 
64
- 本文1
65
+ 本文1
65
66
 
66
67
  #@+++
67
- 本文2
68
+ 本文2
68
69
 
69
- 本文3
70
+ 本文3
70
71
  #@---
71
72
 
72
- 本文4
73
+ 本文4
73
74
 
74
75
  //sampleoutputend
75
76
 
@@ -90,8 +91,8 @@ Starterでは「本文1」と「本文3」が別の段落にならないよう
90
91
  空行を入れると、段落の区切りになります。
91
92
  空行は何行入れても、1行の空行と同じ扱いになります。
92
93
 
93
- //list[][サンプル]{
94
- 言葉を慎みたまえ!君はラピュタ王の前にいるのだ!
94
+ //list[][サンプル][]{
95
+ 言葉を慎みたまえ。君はラピュタ王の前にいるのだ。
95
96
 
96
97
  これから王国の復活を祝って、諸君にラピュタの力を見せてやろうと思ってね。見せてあげよう、ラピュタの雷を!
97
98
 
@@ -100,7 +101,7 @@ Starterでは「本文1」と「本文3」が別の段落にならないよう
100
101
 
101
102
  //sampleoutputbegin[表示結果]
102
103
 
103
- 言葉を慎みたまえ!君はラピュタ王の前にいるのだ!
104
+ 言葉を慎みたまえ。君はラピュタ王の前にいるのだ。
104
105
 
105
106
  これから王国の復活を祝って、諸君にラピュタの力を見せてやろうと思ってね。見せてあげよう、ラピュタの雷を!
106
107
 
@@ -113,7 +114,7 @@ Starterでは「本文1」と「本文3」が別の段落にならないよう
113
114
  段落は、PDFなら先頭の行を字下げ(インデント)し、ePubなら1行空けて表示されます。
114
115
  また段落の前に「@<code>|//noindent|」をつけると、段落の先頭の字下げ(インデント)をしなくなります。
115
116
 
116
- //list[][サンプル]{
117
+ //list[][サンプル][]{
117
118
  @<b>|//noindent|
118
119
  言葉を慎みたまえ!君はラピュタ王の前にいるのだ!
119
120
 
@@ -156,33 +157,33 @@ Starterでは「本文1」と「本文3」が別の段落にならないよう
156
157
  * 2番目の段落では改行の前後が日本語またはアルファベットなので、やはり改行は無視されます。
157
158
  * 3番目の段落では改行の前後がどちらもアルファベットなので、改行は半角空白扱いになります。
158
159
 
159
- //list[][サンプル]{
160
+ //list[][サンプル][]{
160
161
  あいうえ@<b>|お|
161
162
  @<b>|か|きくけ@<b>|こ|
162
- @<b>|さ|しすせそ
163
+ @<b>|さ|しすせそ。
163
164
 
164
165
  たちつてとAB@<b>|C|
165
166
  @<b>|な|にぬね@<b>|の|
166
- @<b>|D|EFはひふへほ
167
+ @<b>|D|EFはひふへほ。
167
168
 
168
169
  まみむめもGH@<b>|I|
169
170
  @<b>|J|KLらりるれろMN@<b>|O|
170
- @<b>|P|QRやゆよ
171
+ @<b>|P|QRやゆよ。
171
172
  //}
172
173
 
173
174
  //sampleoutputbegin[表示結果]
174
175
 
175
176
  あいうえお
176
177
  かきくけこ
177
- さしすせそ
178
+ さしすせそ。
178
179
 
179
180
  たちつてとABC
180
181
  なにぬねの
181
- DEFはひふへほ
182
+ DEFはひふへほ。
182
183
 
183
184
  まみむめもGHI
184
185
  JKLらりるれろMNO
185
- PQRやゆよ
186
+ PQRやゆよ。
186
187
 
187
188
  //sampleoutputend
188
189
 
@@ -193,15 +194,15 @@ PQRやゆよ
193
194
 
194
195
  強制的に改行したい場合は、「@<code>|@@<nop>{}<br>{}|」を使います。
195
196
 
196
- //list[][サンプル]{
197
- 土に根をおろし、風と共に生きよう@<b>|@@<nop>$$<br>{}|
198
- 種と共に冬を越え、鳥と共に春をうたおう
197
+ //list[][サンプル][]{
198
+ 土に根をおろし、風と共に生きよう。@<b>|@@<nop>$$<br>{}|
199
+ 種と共に冬を越え、鳥と共に春をうたおう。
199
200
  //}
200
201
 
201
202
  //sampleoutputbegin[表示結果]
202
203
 
203
- 土に根をおろし、風と共に生きよう@<br>{}
204
- 種と共に冬を越え、鳥と共に春をうたおう
204
+ 土に根をおろし、風と共に生きよう。@<br>{}
205
+ 種と共に冬を越え、鳥と共に春をうたおう。
205
206
 
206
207
  //sampleoutputend
207
208
 
@@ -209,17 +210,17 @@ PQRやゆよ
209
210
 
210
211
  なおこの例だと、「@<code>|//noindent|」をつけて段落の字下げをしないほうがいいでしょう。
211
212
 
212
- //list[][サンプル]{
213
+ //list[][サンプル][]{
213
214
  @<b>|//noindent|
214
- 土に根をおろし、風と共に生きよう@@<nop>$$<br>{}
215
- 種と共に冬を越え、鳥と共に春をうたおう
215
+ 土に根をおろし、風と共に生きよう。@@<nop>$$<br>{}
216
+ 種と共に冬を越え、鳥と共に春をうたおう。
216
217
  //}
217
218
 
218
219
  //sampleoutputbegin[表示結果]
219
220
 
220
221
  //noindent
221
- 土に根をおろし、風と共に生きよう@<br>{}
222
- 種と共に冬を越え、鳥と共に春をうたおう
222
+ 土に根をおろし、風と共に生きよう。@<br>{}
223
+ 種と共に冬を越え、鳥と共に春をうたおう。
223
224
 
224
225
  //sampleoutputend
225
226
 
@@ -230,28 +231,90 @@ PQRやゆよ
230
231
 
231
232
  強制的に空行を入れるには、「@<code>|@@<nop>{}<br>{}|」を連続してもいいですが、専用の命令「@<code>{//blankline}」を使うほうがいいでしょう。
232
233
 
233
- //list[][サンプル]{
234
+ //needvspace[latex][6zw]
235
+ //list[][サンプル][]{
234
236
  /@<nop>$$/noindent
235
- 土に根をおろし、風と共に生きよう
237
+ 土に根をおろし、風と共に生きよう。
236
238
 
237
239
  @<b>|//blankline|
238
240
  /@<nop>$$/noindent
239
- 種と共に冬を越え、鳥と共に春をうたおう
241
+ 種と共に冬を越え、鳥と共に春をうたおう。
240
242
  //}
241
243
 
242
244
  //sampleoutputbegin[表示結果]
243
245
 
244
246
  //noindent
245
- 土に根をおろし、風と共に生きよう
247
+ 土に根をおろし、風と共に生きよう。
246
248
 
247
249
  //blankline
248
250
  //noindent
249
- 種と共に冬を越え、鳥と共に春をうたおう
251
+ 種と共に冬を越え、鳥と共に春をうたおう。
252
+
253
+ //sampleoutputend
254
+
255
+
256
+
257
+
258
+ === 改段落
259
+
260
+ インライン命令「@<code>|@@<nop>{}<par>{}|」を使うと、好きな箇所で改段落できます。
261
+
262
+ 改段落は、通常は空行で行います。
263
+ しかしたとえば箇条書きの中で改段落したい場合、安易に空行を入れるとそこで箇条書きが終了してしまいます。
264
+ つまり「空行なら改段落する」という仕様は、箇条書きの文法とは相性が悪いのです。
265
+
266
+ このような場合は、「@<code>|@@<nop>{}<par>{}|」を使えば箇条書きの中でも改段落できます。
267
+
268
+ //needvspace[latex][6zw]
269
+ //list[][サンプル][]{
270
+ * 『貴官は自己の才能を示すのに、弁舌ではなく実績をもってすべきだろう。
271
+ 他人に命令するようなことが自分にもできるかどうか、やってみたらどうだ。』
272
+ @<b>|@@<nop>$$<par>{}|
273
+ 富田耕生さん、今までありがとうございました。
274
+ //}
275
+
276
+ //sampleoutputbegin[表示結果]
277
+
278
+ * 『貴官は自己の才能を示すのに、弁舌ではなく実績をもってすべきだろう。
279
+ 他人に命令するようなことが自分にもできるかどうか、やってみたらどうだ。』
280
+ @<par>{}
281
+ 富田耕生さん、今までありがとうございました。
250
282
 
251
283
  //sampleoutputend
252
284
 
253
285
 
254
286
 
287
+ なお箇条書きの中で改段落しても、インデントはされません@<fn>{hysqy}。
288
+ インデントしたい場合は、「@<code>|@@<nop>{}<par>{@<b>{i}}|」としてください。
289
+
290
+ //footnote[hysqy][これは@<LaTeX>{}の仕様です。]
291
+
292
+ //needvspace[latex][6zw]
293
+ //list[][サンプル][]{
294
+ * 『貴官は自己の才能を示すのに、弁舌ではなく実績をもってすべきだろう。
295
+ 他人に命令するようなことが自分にもできるかどうか、やってみたらどうだ。』
296
+ @@<nop>$$<par>{@<b>|i|}
297
+ 富田耕生さん、今までありがとうございました。
298
+ //}
299
+
300
+ //sampleoutputbegin[表示結果]
301
+
302
+ * 『貴官は自己の才能を示すのに、弁舌ではなく実績をもってすべきだろう。
303
+ 他人に命令するようなことが自分にもできるかどうか、やってみたらどうだ。』
304
+ @<par>{i}
305
+ 富田耕生さん、今までありがとうございました。
306
+
307
+ //sampleoutputend
308
+
309
+
310
+
311
+
312
+ === 改ページ
313
+
314
+ 「@<code>|//clearpage|」で強制的に改ページできます。
315
+
316
+ なおRe:VIEWでは「@<code>|//pagebreak|」で強制的に改ページできますが、これは@<LaTeX>{}の「@<code>|\pagebreak|」命令を使うため、図や表のことが考慮されません。
317
+ Starterでは「@<code>|//clearpage|」を使ってください。
255
318
 
256
319
 
257
320
  =={sec-heading} 見出し
@@ -261,7 +324,7 @@ PQRやゆよ
261
324
 
262
325
  章(Chapter)や節(Section)といった見出しは、「@<code>{= }」や「@<code>{== }」で始めます。
263
326
 
264
- //list[][サンプル]{
327
+ //list[][サンプル][]{
265
328
  @<b>|=| 章(Chapter)見出し
266
329
 
267
330
  @<b>|==| 節(Section)見出し
@@ -280,9 +343,9 @@ PQRやゆよ
280
343
  このうち、章・節・項・目はこの順番で(入れ子にして)使うことが想定されています。
281
344
  たとえば、章(Chapter)の次に節ではなく項(Subsection)が登場するのはよくありません。
282
345
 
283
- ただし段と小段はそのような制約はなく、たとえば目(Subsubsection)を飛ばして節や項の中で使って構いません。
346
+ ただし段と小段にはこのような制約はなく、たとえば目(Subsubsection)を飛ばして節や項の中で使って構いません。
284
347
 
285
- //list[][サンプル]{
348
+ //list[][サンプル][]{
286
349
  @<nop>$$= 章(Chapter)
287
350
 
288
351
  @<nop>$$== 節(Section)
@@ -295,7 +358,7 @@ PQRやゆよ
295
358
  Starterでは、章は1ファイルにつき1つだけにしてください。
296
359
  1つのファイルに複数の章を入れないでください。
297
360
 
298
- //list[][サンプル]{
361
+ //list[][サンプル][]{
299
362
  @<nop>$$= 章1
300
363
 
301
364
  @<nop>$$== 節
@@ -310,7 +373,8 @@ Starterでは、章は1ファイルにつき1つだけにしてください。
310
373
 
311
374
  見出しには次のようなオプションが指定できます。
312
375
 
313
- //list[][サンプル]{
376
+ //needvspace[latex][7zw]
377
+ //list[][サンプル][]{
314
378
  ==@<b>|[nonum]| 章番号や節番号をつけない(目次には表示する)
315
379
  ==@<b>|[nodisp]| 見出しを表示しない(目次には表示する)
316
380
  ==@<b>|[notoc]| 章番号や節番号をつけず、目次にも表示しない
@@ -325,11 +389,11 @@ Starterでは、章は1ファイルにつき1つだけにしてください。
325
389
  そのため、これらのオプションを使う機会は、実はほとんどありません。
326
390
 
327
391
 
328
- === 章の概要
392
+ === 章の概要と著者名
329
393
 
330
394
  章タイトルの直後に、章の概要を書くことをお勧めします。
331
395
 
332
- //list[][サンプル]{
396
+ //list[][サンプル][]{
333
397
  @<nop>$$= チュートリアル
334
398
 
335
399
  @<b>|//abstract{|
@@ -354,6 +418,22 @@ Starterでは、章は1ファイルにつき1つだけにしてください。
354
418
 
355
419
 
356
420
 
421
+ また、章の著者名を表記できます。
422
+ 複数の著者が集まって合同誌を書く場合に使うといいでしょう。
423
+ 著者名は章タイトルの直後、章の概要より前に書いてください。
424
+
425
+ //list[][サンプル][]{
426
+ @<b>|//chapterauthor[|ムスカ大佐@<b>|]|
427
+ //}
428
+
429
+ //sampleoutputbegin[表示結果]
430
+
431
+ //chapterauthor[ムスカ大佐]
432
+
433
+ //sampleoutputend
434
+
435
+
436
+
357
437
 
358
438
  #@+++
359
439
  === 章タイトルページ
@@ -364,7 +444,7 @@ Starterでは、章は1ファイルにつき1つだけにしてください。
364
444
  * そのあとに「@<code>|//makechaptitlepage[toc=section]|」と書く。
365
445
  * これを全部の章で行う(ただし「まえがき」と「あとがき」を除く)。
366
446
 
367
- //list[][サンプル]{
447
+ //list[][サンプル][]{
368
448
  @<nop>$$= チュートリアル
369
449
 
370
450
  /@<nop>$$/abstract{
@@ -387,7 +467,7 @@ Starterでは、章は1ファイルにつき1つだけにしてください。
387
467
  章(Chapter)のファイル名から拡張子の「@<file>{.re}」を取り除いた文字列を、「章ID」と呼んでいます。
388
468
  たとえば、ファイル名が「@<file>{02-tutorial.re}」なら章IDは「@<file>{02-tutorial}」、ファイル名が「@<file>{preface.re}」なら章IDは「@<file>{preface}」です。
389
469
 
390
- 章IDは、章そのものを参照する場合や、ある章から別の章の節(Section)や図やテーブルを参照するときに使います。
470
+ 章IDは、章そのものを参照する場合だけでなく、ある章から別の章の節(Section)や図やテーブルを参照するときに使います。
391
471
  詳しくは後述します。
392
472
 
393
473
  //note[章にラベルはつけられない]{
@@ -406,7 +486,7 @@ Starterでは、章は1ファイルにつき1つだけにしてください。
406
486
  * 「@<code>|@@<nop>{}<chap>{章ID}|」で章番号を参照できます(例:「第2章」)。
407
487
  * 「@<code>|@@<nop>{}<title>{章ID}|」で章タイトルを参照できます(例:「チュートリアル」)。
408
488
 
409
- //list[][サンプル]{
489
+ //list[][サンプル][]{
410
490
  @<b>|@@<nop>$$<chapref>{|02-tutorial@<b>|}| ← 章番号と章タイトル
411
491
 
412
492
  @<b>|@@<nop>$$<chap>{|02-tutorial@<b>|}| ← 章番号だけ
@@ -431,7 +511,7 @@ Starterでは、章は1ファイルにつき1つだけにしてください。
431
511
 
432
512
  節(Section)や項(Subsection)を参照するには、まず節や項にラベルをつけます。
433
513
 
434
- //list[][サンプル]{
514
+ //list[][サンプル][]{
435
515
  ==@<b>|{sec-heading}| 見出し
436
516
  ===@<b>|{subsec-headingref}| 節や項を参照する
437
517
  //}
@@ -440,7 +520,7 @@ Starterでは、章は1ファイルにつき1つだけにしてください。
440
520
 
441
521
  そして「@<code>|@@<nop>{}<hd>{ラベル}|」を使ってそれらを参照します。
442
522
 
443
- //list[][サンプル]{
523
+ //list[][サンプル][]{
444
524
  @<b>|@@<nop>$$<hd>{|sec-heading@<b>|}|
445
525
 
446
526
  @<b>|@@<nop>$$<hd>{|subsec-headingref@<b>|}|
@@ -459,7 +539,7 @@ Starterでは、章は1ファイルにつき1つだけにしてください。
459
539
  またStarter拡張である「@<code>|@@<nop>{}<secref>{ラベル}|」を使うと、ページ番号も表示されます。
460
540
  コマンド名は「@<code>|@@<nop>{}<secref>|」ですが、節(Section)だけでなく項(Subsection)や目(Subsubsection)にも使えます。
461
541
 
462
- //list[][サンプル]{
542
+ //list[][サンプル][]{
463
543
  @<b>|@@<nop>$$<secref>{|sec-heading@<b>|}|
464
544
 
465
545
  @<b>|@@<nop>$$<secref>{|subsec-headingref@<b>|}|
@@ -477,7 +557,7 @@ Starterでは、章は1ファイルにつき1つだけにしてください。
477
557
 
478
558
  他の章の節や項(つまり他の原稿ファイルの節や項)を参照するには、ラベルの前に章IDをつけます。
479
559
 
480
- //list[][サンプル]{
560
+ //list[][サンプル][]{
481
561
  @@<nop>$$<secref>{@<b>{03-syntax|}sec-heading}
482
562
 
483
563
  @@<nop>$$<secref>{@<b>{03-syntax|}subsec-headingref}
@@ -500,7 +580,7 @@ Starterでは、章は1ファイルにつき1つだけにしてください。
500
580
  //note[項を参照するなら項番号をつけよう]{
501
581
  デフォルトでは、章(Chapter)と節(Section)には番号がつきますが、項(Subsection)には番号がつきません。
502
582
  そのため、「@@<nop>{}<hd>{}」で項を参照するとたとえば『「見出し用オプション」』となってしまい、項番号がないのでとても探しにくくなります。
503
- 「@@<nop>{}<secref>{}」を使うとたとえば『3.1「見出し」の「見出し用オプション」』となるので多少ましですが、探しやすいとは言えません。
583
+ 「@@<nop>{}<secref>{}」を使うと『3.1「見出し」の「見出し用オプション」』となるので多少ましですが、探しやすいとは言えません。
504
584
 
505
585
  そのため、項(Subsection)を参照したいなら項にも番号をつけましょう。
506
586
  @<file>{config.yml}の設定項目「@<code>{secnolevel:}」を「@<code>{3}」にすると、項にも番号がつくようになります。
@@ -566,43 +646,43 @@ POSTDEF:
566
646
 
567
647
  Starterでは、段(Paragraph)見出しは次のように表示されます。
568
648
 
569
- //list[][サンプル]{
570
- テキストテキストテキストテキストテキストテキストテキストテキスト
649
+ //list[][サンプル][]{
571
650
  テキストテキストテキストテキストテキストテキストテキストテキスト
651
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
572
652
 
573
653
  @<b>|===== 段見出し1|
574
654
  テキストテキストテキストテキストテキストテキストテキストテキスト
575
- テキストテキストテキストテキストテキストテキストテキストテキスト
655
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
576
656
 
577
657
  テキストテキストテキストテキストテキストテキストテキストテキスト
578
- テキストテキストテキストテキストテキストテキストテキストテキスト
658
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
579
659
 
580
660
  @<b>|===== 段見出し2|
581
661
  テキストテキストテキストテキストテキストテキストテキストテキスト
582
- テキストテキストテキストテキストテキストテキストテキストテキスト
662
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
583
663
 
584
664
  テキストテキストテキストテキストテキストテキストテキストテキスト
585
- テキストテキストテキストテキストテキストテキストテキストテキスト
665
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
586
666
  //}
587
667
 
588
668
  //sampleoutputbegin[表示結果]
589
669
 
590
670
  テキストテキストテキストテキストテキストテキストテキストテキスト
591
- テキストテキストテキストテキストテキストテキストテキストテキスト
671
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
592
672
 
593
673
  ===== 段見出し1
594
674
  テキストテキストテキストテキストテキストテキストテキストテキスト
595
- テキストテキストテキストテキストテキストテキストテキストテキスト
675
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
596
676
 
597
677
  テキストテキストテキストテキストテキストテキストテキストテキスト
598
- テキストテキストテキストテキストテキストテキストテキストテキスト
678
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
599
679
 
600
680
  ===== 段見出し2
601
681
  テキストテキストテキストテキストテキストテキストテキストテキスト
602
- テキストテキストテキストテキストテキストテキストテキストテキスト
682
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
603
683
 
604
684
  テキストテキストテキストテキストテキストテキストテキストテキスト
605
- テキストテキストテキストテキストテキストテキストテキストテキスト
685
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
606
686
 
607
687
  //sampleoutputend
608
688
 
@@ -612,31 +692,31 @@ Starterでは、段(Paragraph)見出しは次のように表示されます。
612
692
  しかし終わりにはそのようなスペースが入りません。
613
693
  終わりにもスペースを入れるには、次のように「@<code>|//paragraphend|」を使ってください。
614
694
 
615
- //list[][サンプル]{
616
- テキストテキストテキストテキストテキストテキストテキストテキスト
695
+ //list[][サンプル][]{
617
696
  テキストテキストテキストテキストテキストテキストテキストテキスト
697
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
618
698
 
619
699
  @<nop>$$===== 段見出し
620
700
  テキストテキストテキストテキストテキストテキストテキストテキスト
621
- テキストテキストテキストテキストテキストテキストテキストテキスト
701
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
622
702
  @<b>|//paragraphend|
623
703
 
624
704
  テキストテキストテキストテキストテキストテキストテキストテキスト
625
- テキストテキストテキストテキストテキストテキストテキストテキスト
705
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
626
706
  //}
627
707
 
628
708
  //sampleoutputbegin[表示結果]
629
709
 
630
710
  テキストテキストテキストテキストテキストテキストテキストテキスト
631
- テキストテキストテキストテキストテキストテキストテキストテキスト
711
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
632
712
 
633
713
  ===== 段見出し
634
714
  テキストテキストテキストテキストテキストテキストテキストテキスト
635
- テキストテキストテキストテキストテキストテキストテキストテキスト
715
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
636
716
  //paragraphend
637
717
 
638
718
  テキストテキストテキストテキストテキストテキストテキストテキスト
639
- テキストテキストテキストテキストテキストテキストテキストテキスト
719
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
640
720
 
641
721
  //sampleoutputend
642
722
 
@@ -644,43 +724,43 @@ Starterでは、段(Paragraph)見出しは次のように表示されます。
644
724
 
645
725
  また、小段(Subparagraph)見出しは次のように表示されます。
646
726
 
647
- //list[][サンプル]{
648
- テキストテキストテキストテキストテキストテキストテキストテキスト
727
+ //list[][サンプル][]{
649
728
  テキストテキストテキストテキストテキストテキストテキストテキスト
729
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
650
730
 
651
731
  @<b>|====== 小段見出し1|
652
732
  テキストテキストテキストテキストテキストテキストテキストテキスト
653
- テキストテキストテキストテキストテキストテキストテキストテキスト
733
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
654
734
 
655
735
  テキストテキストテキストテキストテキストテキストテキストテキスト
656
- テキストテキストテキストテキストテキストテキストテキストテキスト
736
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
657
737
 
658
738
  @<b>|====== 小段見出し2|
659
739
  テキストテキストテキストテキストテキストテキストテキストテキスト
660
- テキストテキストテキストテキストテキストテキストテキストテキスト
740
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
661
741
 
662
742
  テキストテキストテキストテキストテキストテキストテキストテキスト
663
- テキストテキストテキストテキストテキストテキストテキストテキスト
743
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
664
744
  //}
665
745
 
666
746
  //sampleoutputbegin[表示結果]
667
747
 
668
748
  テキストテキストテキストテキストテキストテキストテキストテキスト
669
- テキストテキストテキストテキストテキストテキストテキストテキスト
749
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
670
750
 
671
751
  ====== 小段見出し1
672
752
  テキストテキストテキストテキストテキストテキストテキストテキスト
673
- テキストテキストテキストテキストテキストテキストテキストテキスト
753
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
674
754
 
675
755
  テキストテキストテキストテキストテキストテキストテキストテキスト
676
- テキストテキストテキストテキストテキストテキストテキストテキスト
756
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
677
757
 
678
758
  ====== 小段見出し2
679
759
  テキストテキストテキストテキストテキストテキストテキストテキスト
680
- テキストテキストテキストテキストテキストテキストテキストテキスト
760
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
681
761
 
682
762
  テキストテキストテキストテキストテキストテキストテキストテキスト
683
- テキストテキストテキストテキストテキストテキストテキストテキスト
763
+ テキストテキストテキストテキストテキストテキストテキストテキスト。
684
764
 
685
765
  //sampleoutputend
686
766
 
@@ -690,14 +770,14 @@ Starterでは、段(Paragraph)見出しは次のように表示されます。
690
770
  「@<code>|//subparagraph|」は用意されていますが、スペースは入りません。
691
771
 
692
772
 
693
- =={sec-list} 箇条書き
773
+ =={sec-list} 箇条書きと定義リスト
694
774
 
695
775
  === 番号なし箇条書き
696
776
 
697
777
  番号なし箇条書きは「@<code>{ * }」で始めます。
698
778
  先頭に半角空白が入っていることに注意してください。
699
779
 
700
- //list[][サンプル]{
780
+ //list[][サンプル][]{
701
781
  @<b>|*| 箇条書き1
702
782
  @<b>|*| 箇条書き2
703
783
  @<b>|*| 箇条書き3
@@ -715,7 +795,7 @@ Starterでは、段(Paragraph)見出しは次のように表示されます。
715
795
 
716
796
  「@<code>{*}」を連続させると、箇条書きを入れ子にできます。
717
797
 
718
- //list[][サンプル]{
798
+ //list[][サンプル][]{
719
799
  @<b>|*| 箇条書き
720
800
  @<b>|**| 入れ子の箇条書き
721
801
  @<b>|***| 入れ子の入れ子
@@ -739,7 +819,7 @@ Starterでは、段(Paragraph)見出しは次のように表示されます。
739
819
  1つ目は「@<code>{ 1. }」のように始める書き方です。
740
820
  この方法は数字しか指定できず、また入れ子にできません。
741
821
 
742
- //list[][サンプル]{
822
+ //list[][サンプル][]{
743
823
  @<b>|1.| 番号つき箇条書き(数字しか指定できない)
744
824
  @<b>|2.| 番号つき箇条書き(入れ子にできない)
745
825
  //}
@@ -756,7 +836,7 @@ Starterでは、段(Paragraph)見出しは次のように表示されます。
756
836
  2つ目はStarterによる拡張で、「@<code>{ - 1. }」のように始める書き方です。
757
837
  この書き方は「@<code>{ - A. }」や「@<code>{ - (1) }」など任意の文字列が使え、また「@<code>{-}」を連続することで入れ子にもできます。
758
838
 
759
- //list[][サンプル]{
839
+ //list[][サンプル][]{
760
840
  @<b>|- (A)| 番号つき箇条書き(英数字が使える)
761
841
  @<b>|- (B)| 番号つき箇条書き(任意の文字列が使える)
762
842
  @<b>|-- (B-1)| 番号つき箇条書き(入れ子にできる)
@@ -776,15 +856,27 @@ Starterでは、段(Paragraph)見出しは次のように表示されます。
776
856
 
777
857
  どちらの記法も、先頭に半角空白が必要なことに注意してください。
778
858
 
859
+ //note[数字を使うべきか、文字を使うべきか]{
860
+ 番号つき箇条書きでは、順番に強い意味がある場合は「1.」のように数字を使い、順番にさほど意味はなく単にラベルとして使いたい場合は「A.」のように文字を使います。
861
+ 詳しくは@<secref>{06-bestpractice|sec-goodenumerate}を参照してください。
862
+ //}
863
+
864
+
865
+ ==={sec-termlist} 定義リスト
866
+
867
+ HTMLでいうところの「@<code>{<dl><dt><dd>}」は、「定義リスト」と「説明リスト」の2つがあります。
868
+ 前者はRe:VIEWでも使え、後者はStarterによる拡張です。
869
+ この節では前者の「定義リスト」を説明し、次の節で後者の「説明リスト」を説明します。
870
+ なお会話形式の文章を作成するには、この節ではなく@<secref>{sec-talk}を参照してください。
779
871
 
780
- =={sec-termlist} 用語リスト
872
+ 定義リストは、「@<code>{ : }」で始めて、次の行からインデントします。
781
873
 
782
- HTMLでいうところの「@<code>{<dl><dt><dd>}」は、「@<code>{ : }」で始めて、次の行からインデントします@<fn>{diwmv}。
783
- 先頭の半角空白は入れるようにしましょう@<fn>{axm3t}。
784
- //footnote[diwmv][説明文のインデントは、半角空白でもタブ文字でもいいです。]
785
- //footnote[axm3t][過去との互換性のため、先頭の半角空白がなくても動作しますが、箇条書きとの整合性のために半角空白を入れたほうがいいでしょう。]
874
+ * 説明文のインデントは、半角空白でもタブ文字でもいいです。
875
+ しかし混在させるとトラブルの元なので、どちらかに統一しましょう。
876
+ * 先頭の半角空白は入れるようにしましょう。
877
+ 過去との互換性のため、先頭の半角空白がなくても動作しますが、箇条書きとの整合性のために半角空白を入れましょう。
786
878
 
787
- //list[][サンプル]{
879
+ //list[][サンプル][]{
788
880
  @<b>|:| 用語1
789
881
  説明文。
790
882
  説明文。
@@ -806,12 +898,217 @@ HTMLでいうところの「@<code>{<dl><dt><dd>}」は、「@<code>{ : }」で
806
898
 
807
899
 
808
900
 
809
- なお説明文の中に箇条書きやプログラムコードを入れることはできません。
901
+ 説明文の中には、箇条書きが入れられます(Starter拡張)。
902
+ ただし、注意点が2つあります。
903
+
904
+ * 説明文の1行目を箇条書きで始めることはできません@<fn>{59sv1}。
905
+ 1行目は必ず通常の文章にしてください。
906
+ * 箇条書きを使うときは、インデントにはタブ文字を使わず半角空白を使ってください。
907
+ 半角空白4文字でインデントするといいでしょう。
908
+
909
+ //footnote[59sv1][この制約は、Re:VIEWの文法に起因します。]
910
+
911
+ //list[][サンプル][]{
912
+ @<b>|:| 用語
913
+ 説明文。
914
+ * 項目1
915
+ * 項目1
916
+ //}
917
+
918
+ //sampleoutputbegin[表示結果]
919
+
920
+ : 用語
921
+ 説明文。
922
+ * 項目1
923
+ * 項目1
924
+
925
+ //sampleoutputend
926
+
927
+
928
+
929
+ 説明文には、プログラムコードなどは入れられません。
930
+ 入れたい場合は、次で紹介する「説明リスト」を使います。
931
+
932
+
933
+ ==={sec-desclist} 説明リスト
934
+
935
+ 「説明リスト」(Description List)とは、先ほど説明した「定義リスト」(Definition List)の機能を拡張したものです。
936
+ 定義リストと比べて、説明リストには次のような特徴があります。
937
+
938
+ * キーや用語を太字にする/しないが選べる。
939
+ * キーや用語の直後で改行する/しないが選べる。
940
+ * 説明文の中に、箇条書きだけでなくプログラムコードなどを入れられる。
941
+ * 説明文の1行目から箇条書きを書ける。
942
+ * 専用の構文を使わないので、「@<code>| : |」だけで書ける定義リストと比べて記述が煩雑。
943
+ * 文章における役割は定義リストと同じ。
944
+
945
+ 説明リストは次のように書きます。
946
+ 途中にある「@<code>|@@<nop>{}<br>{}|」は改行を表します。
947
+
948
+ //list[][サンプル][]{
949
+ @<b>|//desclist{|
950
+ @<b>|//desc[開催日時]{|
951
+ 20XX年XX月XX日 10:00〜12:00
952
+ /@<nop>$$/}
953
+ @<b>|//desc[開催場所]{|
954
+ XXXXXXXXビルXXXXXXXX会議室@@<nop>$$<br>{}
955
+ (XXXXXX市XXXXXX町XX-XX-XX)
956
+ /@<nop>$$/}
957
+ @<b>|//}|
958
+ //}
959
+
960
+ //sampleoutputbegin[表示結果]
961
+
962
+ //desclist{
963
+ //desc[開催日時]{
964
+ 20XX年XX月XX日 10:00〜12:00
965
+ //}
966
+ //desc[開催場所]{
967
+ XXXXXXXXビルXXXXXXXX会議室@<br>{}
968
+ (XXXXXX市XXXXXX町XX-XX-XX)
969
+ //}
970
+ //}
971
+
972
+ //sampleoutputend
973
+
974
+
975
+
976
+ 「@<code>| : |」だけで済む定義リストと比べて説明リストの書き方は煩雑ですが、@<table>{7mfnj}のようなオプションを指定できるという利点があります。
977
+ これらのオプションのデフォルト値は、「@<file>{config-starter.yml}」で設定されています。
978
+
979
+ //table[7mfnj][「@<code>|//desclist|」のオプション][hline=off]{
980
+ オプション 説明 デフォルト値
981
+ ====================
982
+ @<code>|bold=on| キーや用語を太字にする @<code>|off|
983
+ @<code>|compact=on| キーや用語の直後で改行しない @<code>|off|
984
+ @<code>|indent=@<i>{幅}| 説明文のインデント幅 @<code>|3zw|
985
+ @<code>|listmargin=@<i>{高さ}| 説明リスト上下の空きの高さ @<code>|0.5zw|
986
+ @<code>|itemmargin=@<i>{高さ}| 説明項目間の空きの高さ @<code>|0mm|
987
+ @<code>|classname=@<i>{名前}| HTMLタグに追加するクラス名 .
988
+ //}
989
+
990
+ オプションは、「@<code>|//desclist|」の第1引数に指定します。
991
+ 先ほどの例をオプションつきで表示してみましょう。
992
+ ここで「@<code>|7zw|」は全角7文字分という意味です。
993
+
994
+ //list[][サンプル][]{
995
+ /@<nop>$$/desclist@<b>|[bold=on,compact=on,indent=7zw]|{
996
+ /@<nop>$$/desc[開催日時]{
997
+ 20XX年XX月XX日 10:00〜12:00
998
+ /@<nop>$$/}
999
+ /@<nop>$$/desc[開催場所]{
1000
+ XXXXXXXXビルXXXXXXXX会議室@@<nop>$$<br>{}
1001
+ (XXXXXX市XXXXXX町XX-XX-XX)
1002
+ /@<nop>$$/}
1003
+ /@<nop>$$/}
1004
+ //}
1005
+
1006
+ //sampleoutputbegin[表示結果]
1007
+
1008
+ //desclist[bold=on,compact=on,indent=7zw]{
1009
+ //desc[開催日時]{
1010
+ 20XX年XX月XX日 10:00〜12:00
1011
+ //}
1012
+ //desc[開催場所]{
1013
+ XXXXXXXXビルXXXXXXXX会議室@<br>{}
1014
+ (XXXXXX市XXXXXX町XX-XX-XX)
1015
+ //}
1016
+ //}
1017
+
1018
+ //sampleoutputend
1019
+
1020
+
1021
+
1022
+ 説明リストでは、説明文の1行目から箇条書きが書けます。
1023
+ ただし次のサンプルを見れば分かるように、1行目が箇条書きだとスペースが空きすぎます。
1024
+
1025
+ //list[][サンプル][]{
1026
+ /@<nop>$$/desclist{
1027
+ /@<nop>$$/desc[参加申込者]{
1028
+ @<b>| * アリス|
1029
+ @<b>| * ボブ|
1030
+ @<b>| * チャーリー|
1031
+ /@<nop>$$/}
1032
+ /@<nop>$$/}
1033
+ //}
1034
+
1035
+ //sampleoutputbegin[表示結果]
1036
+
1037
+ //desclist{
1038
+ //desc[参加申込者]{
1039
+ * アリス
1040
+ * ボブ
1041
+ * チャーリー
1042
+ //}
1043
+ //}
1044
+
1045
+ //sampleoutputend
1046
+
1047
+
1048
+
1049
+ この問題については将来対応する予定です。
1050
+ 当面は、「@<code>|//vspace|」を使ってスペースを削除してください。
1051
+
1052
+ //list[][サンプル][]{
1053
+ /@<nop>$$/desclist{
1054
+ /@<nop>$$/desc[参加申込者]{
1055
+ @<b>|//vspace[latex][-5mm]|
1056
+ * アリス
1057
+ * ボブ
1058
+ * チャーリー
1059
+ /@<nop>$$/}
1060
+ /@<nop>$$/}
1061
+ //}
1062
+
1063
+ //sampleoutputbegin[表示結果]
1064
+
1065
+ //desclist{
1066
+ //desc[参加申込者]{
1067
+ //vspace[latex][-5mm]
1068
+ * アリス
1069
+ * ボブ
1070
+ * チャーリー
1071
+ //}
1072
+ //}
1073
+
1074
+ //sampleoutputend
1075
+
1076
+
1077
+
1078
+ また説明文の中に、プログラムコードなども入れられます。
1079
+
1080
+ //list[][サンプル][]{
1081
+ /@<nop>$$/desclist{
1082
+ /@<nop>$$/desc[print文]{
1083
+ 「@@<nop>$$<code>|print()|」を使うと、文字列を表示できます。
1084
+ /@<nop>$$/list{
1085
+ def hello(name):
1086
+ print(f"Hello, {name}!")
1087
+ /@<nop>$$/}
1088
+ /@<nop>$$/}
1089
+ /@<nop>$$/}
1090
+ //}
1091
+
1092
+ //sampleoutputbegin[表示結果]
1093
+
1094
+ //desclist{
1095
+ //desc[print文]{
1096
+ 「@<code>|print()|」を使うと、文字列を表示できます。
1097
+ //list{
1098
+ def hello(name):
1099
+ print(f"Hello, {name}!")
1100
+ //}
1101
+ //}
1102
+ //}
1103
+
1104
+ //sampleoutputend
1105
+
1106
+
810
1107
 
811
1108
 
812
1109
  =={sec-command} インライン命令とブロック命令
813
1110
 
814
- ここで少し話を変えて、命令の正式について説明します。
1111
+ ここで少し話を変えて、命令の形式について説明します。
815
1112
 
816
1113
  Re:VIEWおよびStarterでのコマンドは、大きく3つの形式に分けられます。
817
1114
 
@@ -825,11 +1122,11 @@ Re:VIEWおよびStarterでのコマンドは、大きく3つの形式に分け
825
1122
  ==={subsec-inlinecmd} インライン命令
826
1123
 
827
1124
  「インライン命令」とは、「@<code>|@@<nop>{}<B>{...}|」のような形式の命令のことです。
828
- 主に文章中に埋め込むために使います。
1125
+ 主に、文の途中に埋め込んで使います。
829
1126
 
830
1127
  Re:VIEWのインライン命令は入れ子にできませんが、Starterでは入れ子にできるよう拡張しています。
831
1128
 
832
- //list[][サンプル]{
1129
+ //list[][サンプル][]{
833
1130
  @<b>|@@<nop>$$<code>{|func(@<b>|@@<nop>$$<b>{|@<b>|@@<nop>$$<i>{|arg@<b>|}}|)@<b>|}|
834
1131
  //}
835
1132
 
@@ -844,9 +1141,9 @@ Re:VIEWのインライン命令は入れ子にできませんが、Starterでは
844
1141
  インライン命令は、複数行を対象にできません。
845
1142
  たとえば次のような書き方はできません。
846
1143
 
847
- //list[][サンプル]{
1144
+ //list[][サンプル][]{
848
1145
  @<b>|@@<nop>$$<B>{|テキスト
849
- テキスト@<b>|}|
1146
+ テキスト@<b>|}|。
850
1147
  //}
851
1148
 
852
1149
 
@@ -878,7 +1175,7 @@ Re:VIEWのインライン命令は入れ子にできませんが、Starterでは
878
1175
  ブロック命令は入れ子にできます(Starterによる拡張)。
879
1176
  たとえば次の例では、「@<code>|//note{...//}|」の中に「@<code>|//list{...//}|」が入っています。
880
1177
 
881
- //list[][サンプル]{
1178
+ //list[][サンプル][]{
882
1179
  @<b>|//note|[ノートサンプル]@<b>|{|
883
1180
  @<b>|//list|[][フィボナッチ]@<b>|{|
884
1181
  def fib(n):
@@ -893,7 +1190,7 @@ def fib(n):
893
1190
 
894
1191
  * プログラムコードを表す「@<code>|//list|」
895
1192
  * ターミナルを表す「@<code>|//terminal|」と「@<code>|//cmd|」
896
- * @<LaTeX>やHTMLの生テキストを埋め込む「@<code>|//embed|」
1193
+ * @<LaTeX>{}やHTMLの生テキストを埋め込む「@<code>|//embed|」
897
1194
 
898
1195
  ブロック命令の引数は、たとえば「@<code>|//list[ラベル][説明文]{...//}|」のように書きます。
899
1196
  この場合だと、第1引数が「@<code>{ラベル}」で第2引数が「@<code>{説明文}」です。
@@ -909,13 +1206,13 @@ def fib(n):
909
1206
  文章の一部を強調するには「@<code>|@@<nop>{}<B>{...}|」または「@<code>|@@<nop>{}<strong>{...}|」で囲みます。
910
1207
  囲んだ部分は太字のゴシック体になります。
911
1208
 
912
- //list[][サンプル]{
913
- テキスト@<b>|@@<nop>$$<B>{|テキスト@<b>|}|テキスト
1209
+ //list[][サンプル][]{
1210
+ テキスト@<b>|@@<nop>$$<B>{|テキスト@<b>|}|テキスト。
914
1211
  //}
915
1212
 
916
1213
  //sampleoutputbegin[表示結果]
917
1214
 
918
- テキスト@<B>{テキスト}テキスト
1215
+ テキスト@<B>{テキスト}テキスト。
919
1216
 
920
1217
  //sampleoutputend
921
1218
 
@@ -933,7 +1230,7 @@ def fib(n):
933
1230
  //list[][このような書き方はできない]{
934
1231
  @<B>|@@<nop>{}<B>{|テキスト
935
1232
  テキスト
936
- テキスト@<B>|}|
1233
+ テキスト。@<B>|}|
937
1234
  //}
938
1235
 
939
1236
  //}
@@ -944,13 +1241,13 @@ def fib(n):
944
1241
  太字にするだけなら「@<code>|@@<nop>{}<b>{...}|」で囲みます。
945
1242
  強調と違い、ゴシック体になりません。
946
1243
 
947
- //list[][サンプル]{
948
- テキスト@<b>|@@<nop>$$<b>{|テキスト@<b>|}|テキスト
1244
+ //list[][サンプル][]{
1245
+ テキスト@<b>|@@<nop>$$<b>{|テキスト@<b>|}|テキスト。
949
1246
  //}
950
1247
 
951
1248
  //sampleoutputbegin[表示結果]
952
1249
 
953
- テキスト@<b>{テキスト}テキスト
1250
+ テキスト@<b>{テキスト}テキスト。
954
1251
 
955
1252
  //sampleoutputend
956
1253
 
@@ -1014,6 +1311,33 @@ def fib(n):
1014
1311
  ユーザ入力文字列 @<code>|@@<nop>{}<userinput>{xxx}| @<userinput>{xxx}
1015
1312
  //}
1016
1313
 
1314
+ #@#//note[「@<code>|@@<nop>{}<tt>{}|」ではなく「@<code>|@@<nop>{}<code>{}|」や「@<code>|@@<nop>{}<file>{}|」を使う]{
1315
+ //note[「@@<nop>{}<tt>{}」ではなく「@@<nop>{}<code>{}」や「@@<nop>{}<file>{}」を使う]{
1316
+ プロブラムコードやコマンド文字列を等幅フォントで表すには、「@<code>|@@<nop>{}<tt>{}|」ではなく「@<code>|@@<nop>{}<code>{}|」を使ってください。
1317
+ 理由は、プログラムコードであることを表すにはフォントを変更するコマンドではなく、「プログラムコードである」ことを表すコマンドを使うべきだからです。
1318
+
1319
+ 同じ理由で、ファイル名を表すには「@<code>|@@<nop>{}<file>{}|」を使ってください。
1320
+ 「@<code>|@@<nop>{}<tt>{}|」や「@<code>|@@<nop>{}<code>{}|」を使うべきではありません。
1321
+ //}
1322
+
1323
+
1324
+ === その他のインライン命令
1325
+
1326
+
1327
+ ==== ダブルクォーテーション
1328
+
1329
+ 「@<code>|@@<nop>{}<qq>{...}|」を使うと、引数の文字列を適切なダブルクォーテーションで囲みます。
1330
+
1331
+ * PDFでは「@<code>|``...''|」のように囲みます。
1332
+ これは@<LaTeX>{}での標準的な方法であり、表示がきれいです。
1333
+ * HTMLでは「@<code>|“...”|」のように全角記号で囲みます。
1334
+
1335
+ 表示を比べてみましょう。
1336
+
1337
+ * 「@<code>|@@<nop>{}<qq>{Apple}|」は、「@<qq>{Apple}」と表示されます。
1338
+ * 「@<code>|"Apple"|」(半角記号)は、「"Apple"」と表示されます。
1339
+ * 「@<code>|“Apple”|」(全角記号)は、「“Apple”」と表示されます。
1340
+
1017
1341
 
1018
1342
 
1019
1343
  =={sec-program} プログラムリスト
@@ -1022,7 +1346,7 @@ def fib(n):
1022
1346
 
1023
1347
  プログラムリストは「@<code>|//list{ ... //}|」で囲み、第2引数に説明書きを指定します。
1024
1348
 
1025
- //list[][サンプル]{
1349
+ //list[][サンプル][]{
1026
1350
  @<b>|//list[][フィボナッチ数列]{|
1027
1351
  def fib(n):
1028
1352
  return n if n <= 1 else fib(n-1) + fib(n-2)
@@ -1049,7 +1373,7 @@ def fib(n):
1049
1373
  また「@<code>|@@<nop>{}<list>{ラベル名}|」とすると、ラベル名を使ってプログラムリストを参照できます。
1050
1374
  そのため、ラベル名は他と重複しない文字列にしてください。
1051
1375
 
1052
- //list[][サンプル]{
1376
+ //list[][サンプル][]{
1053
1377
  サンプルコードはこちら(@<b>|@@<nop>$$<list>{fib2}|)。
1054
1378
 
1055
1379
  /@<nop>$$/list@<b>|[fib2]|[フィボナッチ数列]{
@@ -1078,7 +1402,7 @@ def fib(n):
1078
1402
  リスト番号はつけたいけど、重複しないラベル名をいちいちつけるのが面倒なら、ラベル名のかわりに「@<code>|?|」を指定します。
1079
1403
  ただし「@<code>|@@<nop>{}<list>{ラベル名}|」での参照はできなくなります。
1080
1404
 
1081
- //list[][サンプル]{
1405
+ //list[][サンプル][]{
1082
1406
  /@<nop>$$/list@<b>|[?]|{
1083
1407
  def fib(n):
1084
1408
  return n if n <= 1 else fib(n-1) + fib(n-2)
@@ -1104,7 +1428,7 @@ def fib(n):
1104
1428
  Starterでは、プログラムコードの長い行は自動的に折り返されます。
1105
1429
  行が折り返されると行末と次の行の先頭に折り返し記号がつくので、どの行が折り返されか簡単に見分けがつきます。
1106
1430
 
1107
- //list[][サンプル]{
1431
+ //list[][サンプル][]{
1108
1432
  /@<nop>$$/list{
1109
1433
  sys.stderr.write("Something error raised. Please contact to system administrator.")
1110
1434
  /@<nop>$$/}
@@ -1122,7 +1446,7 @@ sys.stderr.write("Something error raised. Please contact to system administrator
1122
1446
 
1123
1447
  「@<code>|@@<nop>{}<b>{}|」で太字にしたり、「@<code>|@@<nop>{}<del>{}|」で取り消し線を引いても、きちんと折り返しされます。
1124
1448
 
1125
- //list[][サンプル]{
1449
+ //list[][サンプル][]{
1126
1450
  @<b>|//list{|
1127
1451
  @<b>|@@<nop>$$<b>{|sys.stderr.write("Something error raised. Please contact to system administrator.")@<b>|}|
1128
1452
  @<b>|@@<nop>$$<del>{|sys.stderr.write("Something error raised. Please contact to system administrator.")@<b>|}|
@@ -1140,14 +1464,13 @@ sys.stderr.write("Something error raised. Please contact to system administrator
1140
1464
 
1141
1465
 
1142
1466
 
1143
- ただし折り返し箇所が日本語だと、折り返しはされるものの、折返し記号がつきません@<fn>{fn-zekaz}。
1144
- あまりいい対策ではありませんが、折り返したい箇所に「@<code>|@@<nop>{}<foldhere>{}|」を書くと折り返しされつつ折返し記号もつきます。
1145
-
1146
- //footnote[fn-zekaz][原因と対策が分かる人いたらぜひ教えてください。]
1467
+ @<del>|ただし折り返し箇所が日本語だと、折り返しされても折り返し記号がつきません。|
1468
+ 折り返し箇所が日本語でも、折り返し記号がつくようになりました。
1469
+ 以前のバージョンを使っている場合はStarterのプロジェクトを作り直してみてください。
1147
1470
 
1148
1471
  折り返しをしたくないときは、「@<code>|//list[][][@<b>{fold=off}]|」と指定します。
1149
1472
 
1150
- //list[][サンプル]{
1473
+ //list[][サンプル][]{
1151
1474
  /@<nop>$$/list[][][@<b>|fold=off|]{
1152
1475
  sys.stderr.write("Something error raised. Please contact to system administrator.")
1153
1476
  /@<nop>$$/}
@@ -1165,7 +1488,7 @@ sys.stderr.write("Something error raised. Please contact to system administrator
1165
1488
 
1166
1489
  折り返しはするけど折り返し記号をつけたくない場合は、「@<code>|//list[][][@<b>{foldmark=off}]|」と指定します。
1167
1490
 
1168
- //list[][サンプル]{
1491
+ //list[][サンプル][]{
1169
1492
  /@<nop>$$/list[][][@<b>|foldmark=off|]{
1170
1493
  sys.stderr.write("Something error raised. Please contact to system administrator.")
1171
1494
  /@<nop>$$/}
@@ -1187,7 +1510,7 @@ sys.stderr.write("Something error raised. Please contact to system administrator
1187
1510
  第3引数に「@<code>|[eolmark=on]|」と指定をすると、改行文字がうっすらと表示されます。
1188
1511
  この機能は折り返し記号をオフにしてから使うといいでしょう。
1189
1512
 
1190
- //list[][サンプル]{
1513
+ //list[][サンプル][]{
1191
1514
  /@<nop>$$/list[][][@<b>|eolmark=on|,foldmark=off]{
1192
1515
  function fib(n) {
1193
1516
  if (n <= 1) { return n; }
@@ -1209,13 +1532,22 @@ function fib(n) {
1209
1532
 
1210
1533
 
1211
1534
 
1535
+ //note[折り返し記号や改行文字をマウス選択の対象外にする]{
1536
+ PDF中のプログラムコードをマウスでコピーしたとき、折り返し記号や改行文字がコピーした文字列に含まれると、それらをいちいち除去しないといけないので不便です。
1537
+
1538
+ Starterでは、これらの記号をマウス選択の対象から外すことができます。
1539
+ 詳しくは@<secref>{04-customize|sec-excluding}を参照してください。
1540
+ //}
1541
+
1212
1542
 
1213
- ==={subsec-indentwidth} インデント
1543
+ === インデント
1214
1544
 
1215
- 第3引数にたとえば「@<code>|[indentwidth=4]|」のような指定をすると、4文字幅でのインデントを表す縦線がうっすらとつきます。
1545
+ 第3引数にたとえば「@<code>|[indent=4]|」@<fn>{dw1jh}のような指定をすると、4文字幅でのインデントを表す縦線がうっすらとつきます。
1216
1546
 
1217
- //list[][サンプル]{
1218
- /@<nop>$$/list[][]@<b>|[indentwidth=4]|{
1547
+ //footnote[dw1jh][後方互換性のために、「@<code>|[indentwidth=4\]|」という名前でも指定できます。]
1548
+
1549
+ //list[][サンプル][]{
1550
+ /@<nop>$$/list[][]@<b>|[indent=4]|{
1219
1551
  class Fib:
1220
1552
 
1221
1553
  def __call__(n):
@@ -1228,7 +1560,7 @@ class Fib:
1228
1560
 
1229
1561
  //sampleoutputbegin[表示結果]
1230
1562
 
1231
- //list[][][indentwidth=4]{
1563
+ //list[][][indent=4]{
1232
1564
  class Fib:
1233
1565
 
1234
1566
  def __call__(n):
@@ -1247,19 +1579,46 @@ Pythonのようにインデントの深さでブロックを表すプログラ
1247
1579
 
1248
1580
  そのような場合は、この機能を使ってインデントを表示してあげるとよいでしょう。
1249
1581
 
1582
+ //note[インデント記号をコピペ対象にしない]{
1583
+ 以前のStarterでは、インデントを表す記号としてパイプ記号「@<code>{|}」を使っていました。
1584
+ そのせいで、プログラムコードをマウスでコピペするとパイプ記号も一緒にコピペされてしまっていました。
1585
+ これは読者にとってうれしくない仕様です。
1586
+
1587
+ 現在のStarterでは、インデントを表す記号のかわりに図形として縦線を引いています。
1588
+ そのおかげで、コピペしてもパイプ記号が入りません@<fn>{fn-ibzh1}。
1589
+ Starterによる気配りの一例です。
1590
+
1591
+ //footnote[fn-ibzh1][ただし、Starterのデフォルトでは折り返し記号や行番号がコピペ対象に含まれてしまいます。これについては@<secref>{04-customize|sec-excluding}を参照してください。]
1592
+ //}
1593
+
1250
1594
 
1251
1595
  === 外部ファイルの読み込み
1252
1596
 
1253
- プログラムコードを外部ファイルから読み込むには次のようにします@<fn>{fn-yph1o}。
1597
+ プログラムコードを外部ファイルから読み込むには、2つ方法があります。
1598
+
1599
+ ひとつは、「@<code>|//list[][][file=...]|」のように「@<code>|//list|」の第3引数にファイル名を指定することです。
1600
+ この場合、ブロックの中身は無視されます(ブロックそのものは省略できません)。
1601
+
1602
+ //list[][サンプル][]{
1603
+ /@<nop>$$/list[][]@<b>|[file=source/fib3.rb]|{
1604
+ /@<nop>$$/}
1605
+ //}
1606
+
1607
+
1608
+
1609
+ もうひとつは、「@<code>|@@<nop>{}<include>{}|」というインライン命令を使うことです@<fn>{fn-yph1o}。
1254
1610
 
1255
1611
  //footnote[fn-yph1o][参考:@<href>{https://github.com/kmuto/review/issues/887}]
1256
1612
 
1257
- //list[][別ファイルのソースコード (source/fib3.rb) を読み込む方法]{
1258
- @<nop>{}//list[fib3][フィボナッチ数列]{
1259
- @<b>|@@<nop>{}<include>{source/fib3.rb}|
1260
- @<nop>{}//}
1613
+ //needvspace[latex][6zw]
1614
+ //list[][サンプル][]{
1615
+ /@<nop>$$/list[fib3][フィボナッチ数列]{
1616
+ @<b>|@@<nop>$$<include>{source/fib3.rb}|
1617
+ /@<nop>$$/}
1261
1618
  //}
1262
1619
 
1620
+
1621
+
1263
1622
  脚注のリンク先にあるように、この方法はRe:VIEWでは undocumented です。
1264
1623
  Starterでは正式な機能としてサポートします。
1265
1624
 
@@ -1273,30 +1632,183 @@ Starterでは正式な機能としてサポートします。
1273
1632
  そのため、プログラムコードにはなるべくタブ文字を含めないほうがいいでしょう。
1274
1633
 
1275
1634
 
1635
+ === 全角文字の幅を半角2文字分にする
1636
+
1637
+ プログラムコードのデフォルトでは、全角文字の幅は半角文字2文字分より少し狭くなっています。
1638
+ 「@<code>|//list|」の第3引数に「@<code>|widecharfit=on|」というオプションを指定すると、全角文字の幅が半角文字2文字分に揃います。
1639
+
1640
+ //list[][サンプル][]{
1641
+ /@<nop>$$/list[][][@<b>|widecharfit=on|]{
1642
+ 123456789_123456789_123456789_123456789_123456789_
1643
+ あいうえおかきくけこさしすせそたちつてとなにぬねの
1644
+ /@<nop>$$/}
1645
+ //}
1646
+
1647
+ //sampleoutputbegin[表示結果]
1648
+
1649
+ //list[][][widecharfit=on]{
1650
+ 123456789_123456789_123456789_123456789_123456789_
1651
+ あいうえおかきくけこさしすせそたちつてとなにぬねの
1652
+ //}
1653
+
1654
+ //sampleoutputend
1655
+
1656
+
1657
+
1658
+ プログラムやターミナル画面において、全角と半角が混在しているせいで表示が崩れる場合は、このオプションを指定すると表示が崩れなくなります。
1659
+
1660
+ //list[][「@<code>|widecharfit=on|」がない場合:表示が崩れる]{
1661
+ testdb1=> select * from members order by id;
1662
+ id | name | height | gender
1663
+ -----+----------+--------+--------
1664
+ 101 | エレン | 170 | M
1665
+ 102 | ミカサ | 170 | F
1666
+ 103 | アルミン | 163 | M
1667
+ 104 | ジャン | 175 | M
1668
+ 105 | サシャ | 168 | F
1669
+ 106 | コニー | 158 | M
1670
+ (6 rows)
1671
+ //}
1672
+
1673
+ //list[][「@<code>|widecharfit=on|」がある場合:表示が崩れない][widecharfit=on]{
1674
+ testdb1=> select * from members order by id;
1675
+ id | name | height | gender
1676
+ -----+----------+--------+--------
1677
+ 101 | エレン | 170 | M
1678
+ 102 | ミカサ | 170 | F
1679
+ 103 | アルミン | 163 | M
1680
+ 104 | ジャン | 175 | M
1681
+ 105 | サシャ | 168 | F
1682
+ 106 | コニー | 158 | M
1683
+ (6 rows)
1684
+ //}
1685
+
1686
+ このオプションをデフォルトで有効にしたい場合は、@<secref>{04-customize|subsec-defaultopts}を参考にしてください。
1687
+
1688
+ //note[全角文字の判定]{
1689
+ 全角文字の判定は、現在は次のようなコードで行っており、かなりいい加減です。
1690
+ 改善については相談してください。
1691
+
1692
+ //list[][全角文字の判定方法(Ruby)][lang=ruby]{
1693
+ string.each_char do |char| # charは長さ1の文字列
1694
+ if char =~ /[\000-\177]/
1695
+ # 半角文字
1696
+ else
1697
+ # 全角文字
1698
+ end
1699
+ end
1700
+ //}
1701
+
1702
+ //}
1703
+
1704
+
1705
+ ==={subsec-output} 出力結果
1706
+
1707
+ 出力結果や変換結果を表すための「@<code>|//output|」というブロック命令も用意されています。
1708
+ 使い方は「@<code>|//list|」と同じで、見た目が少し違うだけです。
1709
+ たとえば自動生成されたHTMLやCSSを表示したり、SQLとその実行結果を分けて表示したいときに使うといいでしょう。
1710
+
1711
+ //list[][サンプル][]{
1712
+ /@<nop>$$/list[][一覧を取得するSQL]{
1713
+ select gender, count(*)
1714
+ from members
1715
+ group by gender
1716
+ order by gender;
1717
+ /@<nop>$$/}
1718
+
1719
+ @<b>|//output|[][実行結果]{
1720
+ gender | count
1721
+ --------+-------
1722
+ F | 2
1723
+ M | 4
1724
+ (2 rows)
1725
+ /@<nop>$$/}
1726
+ //}
1727
+
1728
+ //sampleoutputbegin[表示結果]
1729
+
1730
+ //list[][一覧を取得するSQL]{
1731
+ select gender, count(*)
1732
+ from members
1733
+ group by gender
1734
+ order by gender;
1735
+ //}
1736
+
1737
+ //output[][実行結果]{
1738
+ gender | count
1739
+ --------+-------
1740
+ F | 2
1741
+ M | 4
1742
+ (2 rows)
1743
+ //}
1744
+
1745
+ //sampleoutputend
1746
+
1747
+
1748
+
1749
+ 「@<code>|//output|」では全角文字の幅が半角文字のちょうど2個分になるよう設定されているので、半角と全角が混在していても表示が崩れません@<fn>{fn-zt0xc}。
1750
+
1751
+ //footnote[fn-zt0xc][ただし、「@<code>|//output|」で使われる等幅フォントによっては表示が崩れることがあります。その場合は@<file>{config-starter.yml}で「@<code>|output_ttfont: beramono|」を指定してみてください。]
1752
+
1753
+ //list[][「@<code>|//list|」での表示結果(少し崩れる)]{
1754
+ id | name | height | gender
1755
+ -----+----------+--------+--------
1756
+ 101 | エレン | 170 | M
1757
+ 102 | ミカサ | 170 | F
1758
+ 103 | アルミン | 163 | M
1759
+ (3 rows)
1760
+ //}
1761
+
1762
+ //output[][「@<code>|//output|」での表示結果(崩れない)]{
1763
+ id | name | height | gender
1764
+ -----+----------+--------+--------
1765
+ 101 | エレン | 170 | M
1766
+ 102 | ミカサ | 170 | F
1767
+ 103 | アルミン | 163 | M
1768
+ (3 rows)
1769
+ //}
1770
+
1771
+
1276
1772
  === その他のオプション
1277
1773
 
1278
1774
  「@<code>|//list|」の第3引数には、次のようなオプションも指定できます。
1279
1775
 
1280
- #@# : @<code>$fold={on|off}$
1776
+ //desclist{
1777
+ #@#//desc[@<code>$fold={on|off}$]{
1281
1778
  #@# 長い行を自動で折り返します。
1282
1779
  #@# デフォルトは「@<code>|on|」。
1283
- #@# : @<code>$foldmark={on|off}$
1780
+ #@#//}
1781
+ #@#//desc[@<code>$foldmark={on|off}$]{
1284
1782
  #@# 折り返したことを表す、小さな記号をつけます。
1285
1783
  #@# デフォルトは「@<code>|on|」。
1286
- #@# : @<code>$eolmark={on|off}$
1784
+ #@#//}
1785
+ #@#//desc[@<code>$eolmark={on|off}$]{
1287
1786
  #@# すべての行末に、行末であることを表す小さな記号をつけます。
1288
1787
  #@# 「@<code>|foldmark=on|」 のかわりに使うことを想定していますが、両方を@<code>|on|。にしても使えます。
1289
1788
  #@# デフォルトは「@<code>|off|」。
1290
- : @<code>$fontsize={small|x-small|xx-small|large|x-large|xx-large}$
1789
+ #@#//}
1790
+ //desc[@<code>$fontsize={small|x-small|xx-small|large|x-large|xx-large}$]{
1291
1791
  文字の大きさを小さく(または大きく)します。
1292
1792
  どうしてもプログラムコードを折返ししたくないときに使うといいでしょう。
1293
- : @<code>$lineno={on|off|@<i>{integer}}$
1793
+ //}
1794
+ //desc[@<code>$lineno={on|off|@<i>{integer}}$]{
1294
1795
  行番号をつけます。詳細は次の節で説明します。
1295
- : @<code>$linenowidth={0|@<i>{integer}}$
1796
+ //}
1797
+ //desc[@<code>$linenowidth={0|@<i>{integer}}$]{
1296
1798
  行番号の幅を指定します。詳細は次の節で説明します。
1297
- : @<code>$lang=@<i>{langname}$
1799
+ //}
1800
+ //desc[@<code>$classname=@<i>{classname}$]{
1801
+ HTMLタグのクラス名を指定します。
1802
+ HTMLまたはePubのときだけ機能します。
1803
+ //}
1804
+ //desc[@<code>$lang=@<i>{langname}$]{
1298
1805
  プログラム言語の名前を指定します。
1299
- コードハイライトのために使いますが、Re:VIEW Starterではまだ対応していません。
1806
+ コードハイライトのために使いますが、Starterではまだ対応していません。
1807
+ //}
1808
+ //}
1809
+
1810
+ なおオプションのデフォルト値は、「@<file>{congif-starter.yml}」で設定できます。
1811
+ 詳しくは@<secref>{04-customize|subsec-defaultopts}を参照してください。
1300
1812
 
1301
1813
 
1302
1814
 
@@ -1307,7 +1819,7 @@ Starterでは正式な機能としてサポートします。
1307
1819
 
1308
1820
  プログラムリストに行番号をつけるには、「@<code>|//list|」ブロック命令の第3引数を次のように指定します。
1309
1821
 
1310
- //list[][サンプル]{
1822
+ //list[][サンプル][]{
1311
1823
  /@<nop>$$/list[][][@<b>|lineno=on|]{
1312
1824
  function fib(n) {
1313
1825
  return n <= 1 ? n : fib(n-1) + fib(n-2);
@@ -1329,7 +1841,7 @@ function fib(n) {
1329
1841
 
1330
1842
  「@<code>{on}」のかわりに開始行番号を指定できます。
1331
1843
 
1332
- //list[][サンプル]{
1844
+ //list[][サンプル][]{
1333
1845
  /@<nop>$$/list[][][@<b>|lineno=99|]{
1334
1846
  function fib(n) {
1335
1847
  return n <= 1 ? n : fib(n-1) + fib(n-2);
@@ -1349,13 +1861,37 @@ function fib(n) {
1349
1861
 
1350
1862
 
1351
1863
 
1352
- === 行番号の幅を指定する
1353
-
1354
- 前の例では行番号が外側に表示されました。
1355
- 行番号の幅を指定すると、行番号が内側に表示されます。
1864
+ 「@<code>|lineno=1|」のかわりに「@<code>|1|」とだけ書いても、行番号がつきます。
1865
+ 行番号をつける方法としてはいちばん短い書き方です。
1356
1866
 
1357
- //list[][サンプル]{
1358
- /@<nop>$$/list[][][lineno=on,@<b>|linenowidth=3|]{
1867
+ //list[][サンプル][]{
1868
+ /@<nop>$$/list[][][@<b>|1|]{
1869
+ function fib(n) {
1870
+ return n <= 1 ? n : fib(n-1) + fib(n-2);
1871
+ }
1872
+ /@<nop>$$/}
1873
+ //}
1874
+
1875
+ //sampleoutputbegin[表示結果]
1876
+
1877
+ //list[][][1]{
1878
+ function fib(n) {
1879
+ return n <= 1 ? n : fib(n-1) + fib(n-2);
1880
+ }
1881
+ //}
1882
+
1883
+ //sampleoutputend
1884
+
1885
+
1886
+
1887
+
1888
+ === 行番号の幅を指定する
1889
+
1890
+ 前の例では行番号が外側に表示されました。
1891
+ 行番号の幅を指定すると、行番号が内側に表示されます。
1892
+
1893
+ //list[][サンプル][]{
1894
+ /@<nop>$$/list[][][lineno=on,@<b>|linenowidth=3|]{
1359
1895
  function fib(n) {
1360
1896
  return n <= 1 ? n : fib(n-1) + fib(n-2);
1361
1897
  }
@@ -1374,9 +1910,9 @@ function fib(n) {
1374
1910
 
1375
1911
 
1376
1912
 
1377
- また幅を@<code>{0}に指定すると、行番号の幅を自動的に計算します。
1913
+ また幅を「@<code>{0}」に指定すると、行番号の幅を自動的に計算します。
1378
1914
 
1379
- //list[][サンプル]{
1915
+ //list[][サンプル][]{
1380
1916
  /@<nop>$$/list[][][lineno=99,@<b>|linenowidth=0|]{
1381
1917
  function fib(n) {
1382
1918
  return n <= 1 ? n : fib(n-1) + fib(n-2);
@@ -1404,7 +1940,7 @@ function fib(n) {
1404
1940
  * 「@<code>|105-|」は105行目以降を表します。
1405
1941
  * 「@<code>|&|」は行番号をつけないことを表します。
1406
1942
 
1407
- //list[][サンプル]{
1943
+ //list[][サンプル][]{
1408
1944
  /@<nop>$$/list[][][@<b>|lineno=80-83&97-100&105-|,linenowidth=0]{
1409
1945
  /@<nop>$$/ JavaScript
1410
1946
  function fib(n) {
@@ -1448,9 +1984,12 @@ def fib(n):
1448
1984
 
1449
1985
  =={sec-terminal} ターミナル
1450
1986
 
1987
+
1988
+ === 基本的な書き方
1989
+
1451
1990
  ターミナル(端末)の画面を表すには、「@<code>|//terminal{ ... //}|」というブロック命令を使います。
1452
1991
 
1453
- //list[][サンプル]{
1992
+ //list[][サンプル][]{
1454
1993
  @<b>|//terminal[?][PDFを生成]{|
1455
1994
  $ rake pdf @@<nop>$$<balloon>{Dockerを使わない場合}
1456
1995
  $ rake docker:pdf @@<nop>$$<balloon>{Dockerを使っている場合}
@@ -1470,9 +2009,33 @@ $ rake docker:pdf @<balloon>{Dockerを使っている場合}
1470
2009
 
1471
2010
  引数はプログラムリスト「@<code>|//list{ ... //}|」と同じなので、引数の説明は省略します。
1472
2011
 
2012
+ 過去との互換性のために、「@<code>|//cmd{ ... //}|」というブロック命令もあります。
2013
+ しかしこの命令はリスト番号や行番号がつけられないし、「@<code>|//list|」命令と使い方が違うので、もはや使う必要はありません。
2014
+
2015
+ //list[][サンプル][]{
2016
+ @<b>|//cmd|[PDFを生成]{
2017
+ $ rake pdf @@<nop>$$<balloon>{Dockerを使わない場合}
2018
+ $ rake docker:pdf @@<nop>$$<balloon>{Dockerを使っている場合}
2019
+ /@<nop>$$/}
2020
+ //}
2021
+
2022
+ //sampleoutputbegin[表示結果]
2023
+
2024
+ //cmd[PDFを生成]{
2025
+ $ rake pdf @<balloon>{Dockerを使わない場合}
2026
+ $ rake docker:pdf @<balloon>{Dockerを使っている場合}
2027
+ //}
2028
+
2029
+ //sampleoutputend
2030
+
2031
+
2032
+
2033
+
2034
+ === ユーザ入力
2035
+
1473
2036
  「@<code>|@@<nop>{}<userinput>{}|」を使うと、ユーザによる入力箇所を示せます@<fn>{fn-pl9ll}。
1474
2037
 
1475
- //list[][サンプル]{
2038
+ //list[][サンプル][]{
1476
2039
  /@<nop>$$/terminal[?][PDFを生成]{
1477
2040
  $ @<b>|@@<nop>$$<userinput>{|rake pdf@<b>|}| @@<nop>$$<balloon>{Dockerを使わない場合}
1478
2041
  $ @<b>|@@<nop>$$<userinput>{|rake docker:pdf@<b>|}| @@<nop>$$<balloon>{Dockerを使っている場合}
@@ -1492,21 +2055,34 @@ $ @<userinput>{rake docker:pdf} @<balloon>{Dockerを使っている場合}
1492
2055
 
1493
2056
  //footnote[fn-pl9ll][ただし、「@<code>|@@<nop>{}<userinput>{}|」では長い行を自動的に折り返せません。これは今後の課題です。]
1494
2057
 
1495
- 過去との互換性のために、「@<code>|//cmd{ ... //}|」というブロック命令もあります。
1496
- しかしこの命令はリスト番号や行番号がつけられないし、「@<code>|//list|」命令と使い方が違うので、もはや使う必要はありません。
1497
2058
 
1498
- //list[][サンプル]{
1499
- @<b>|//cmd|[PDFを生成]{
1500
- $ rake pdf @@<nop>$$<balloon>{Dockerを使わない場合}
1501
- $ rake docker:pdf @@<nop>$$<balloon>{Dockerを使っている場合}
2059
+ === ターミナルのカーソル
2060
+
2061
+ 「@<code>|@@<nop>{}<cursor>{...}|」を使うと、ターミナルでのカーソルを表せます。
2062
+
2063
+ 次の例では、2行目の真ん中の「f」にカーソルがあることを表しています。
2064
+
2065
+ //needvspace[latex][7zh]
2066
+ //list[][サンプル][]{
2067
+ /@<nop>$$/terminal{
2068
+ function fib(n) {
2069
+ return n <= 1 ? n : @<b>|@@<nop>$$<cursor>{f}|ib(n-1) : fib(n-2);
2070
+ }
2071
+ ~
2072
+ ~
2073
+ "fib.js" 3L, 74C written
1502
2074
  /@<nop>$$/}
1503
2075
  //}
1504
2076
 
1505
2077
  //sampleoutputbegin[表示結果]
1506
2078
 
1507
- //cmd[PDFを生成]{
1508
- $ rake pdf @<balloon>{Dockerを使わない場合}
1509
- $ rake docker:pdf @<balloon>{Dockerを使っている場合}
2079
+ //terminal{
2080
+ function fib(n) {
2081
+ return n <= 1 ? n : @<cursor>{f}ib(n-1) : fib(n-2);
2082
+ }
2083
+ ~
2084
+ ~
2085
+ "fib.js" 3L, 74C written
1510
2086
  //}
1511
2087
 
1512
2088
  //sampleoutputend
@@ -1517,19 +2093,22 @@ $ rake docker:pdf @<balloon>{Dockerを使っている場合}
1517
2093
 
1518
2094
  =={sec-footnote} 脚注
1519
2095
 
2096
+
2097
+ === 脚注の書き方
2098
+
1520
2099
  脚注は、脚注をつけたい箇所に「@<code>|@@<nop>{}<fn>{ラベル}|」を埋め込み、脚注の文は「@<code>|//footnote[ラベル][脚注文]|」のように書きます。
1521
2100
 
1522
- //list[][サンプル]{
1523
- 本文。本文@<b>|@@<nop>$$<fn>{fn-123}|。本文。
2101
+ //list[][サンプル][]{
2102
+ 本文。本文@<b>|@@<nop>$$<fn>{fn-101}|。本文。
1524
2103
 
1525
- @<b>|//footnote[fn-123][脚注文。脚注文。]|
2104
+ @<b>|//footnote[fn-101][脚注文。脚注文。]|
1526
2105
  //}
1527
2106
 
1528
2107
  //sampleoutputbegin[表示結果]
1529
2108
 
1530
- 本文。本文@<fn>{fn-123}。本文。
2109
+ 本文。本文@<fn>{fn-101}。本文。
1531
2110
 
1532
- //footnote[fn-123][脚注文。脚注文。]
2111
+ //footnote[fn-101][脚注文。脚注文。]
1533
2112
 
1534
2113
  //sampleoutputend
1535
2114
 
@@ -1539,6 +2118,48 @@ $ rake docker:pdf @<balloon>{Dockerを使っている場合}
1539
2118
 
1540
2119
  また脚注文に「@<code>|]|」を埋め込む場合は、「@<code>|\]|」のようにエスケープしてください。
1541
2120
 
2121
+ //list[][サンプル][]{
2122
+ 本文@@<nop>$$<fn>{fn-102}。
2123
+
2124
+ /@<nop>$$/footnote[fn-102][脚注に「@<b>|\]|」を入れる。]
2125
+ //}
2126
+
2127
+ //sampleoutputbegin[表示結果]
2128
+
2129
+ 本文@<fn>{fn-102}。
2130
+
2131
+ //footnote[fn-102][脚注に「\]」を入れる。]
2132
+
2133
+ //sampleoutputend
2134
+
2135
+
2136
+
2137
+
2138
+ === 脚注の注意点
2139
+
2140
+ @<LaTeX>{}の制限により、脚注が表示されなかったりエラーになることがあります。
2141
+
2142
+ * コラムの中で脚注を使うと、脚注が表示されないことがあります。
2143
+ この場合、コラムを明示的に閉じてください。
2144
+ 詳しくは@<secref>{subsec-columnfootnote}を参照してください。
2145
+ * ミニブロックの中で脚注を使うと、脚注が表示されないことがあります。
2146
+ ミニブロックについての詳細は@<secref>{subsec-miniblock}を参照してください。
2147
+
2148
+ //note[脚注がうまく表示されない理由]{
2149
+ コラムやミニブロックでは、囲み枠が使われています。
2150
+ @<LaTeX>{}で囲み枠を実現するには、「minipage環境」という機能を使うのが一般的です。
2151
+ @<LaTeX>{}のminipage環境はページ内で別のページを実現する機能であり、HTMLでいうならiframeのようなものです。
2152
+
2153
+ そしてminipage環境はそれ自体が独立したページなので、minipage環境内で脚注を使うとそれが外側のページにうまく伝わりません。
2154
+ これがコラムやミニブロックで脚注がうまく使えない理由です。
2155
+
2156
+ 対策としては、コラムやミニブロックのデザイを枠線を使わないように変更することです。
2157
+ または、コラムやミニブロックでは脚注を使わないように文章を工夫することです。
2158
+
2159
+ なおStarterでは、ミニブロックのうちノート(@<code>|//note|)に関してはminipage環境を使わないデザインにしています。
2160
+ ノートについては次の節で紹介します。
2161
+ //}
2162
+
1542
2163
 
1543
2164
 
1544
2165
  =={sec-note} ノート
@@ -1550,7 +2171,7 @@ $ rake docker:pdf @<balloon>{Dockerを使っている場合}
1550
2171
 
1551
2172
  ノートは、「@<code>|//note{ ... //}|」というブロック命令で表します。
1552
2173
 
1553
- //list[][サンプル]{
2174
+ //list[][サンプル][]{
1554
2175
  @<b>|//note[|締め切りを守るたったひとつの冴えたやり方@<b>|]{|
1555
2176
  原稿の締め切りを守るための、素晴らしい方法を教えましょう。
1556
2177
  それは、早い時期に執筆を開始することです。
@@ -1570,7 +2191,7 @@ $ rake docker:pdf @<balloon>{Dockerを使っている場合}
1570
2191
 
1571
2192
  ノートには、箇条書きやプログラムコードを入れられます(Starter独自拡張)。
1572
2193
 
1573
- //list[][サンプル]{
2194
+ //list[][サンプル][]{
1574
2195
  /@<nop>$$/note[ノートタイトル]{
1575
2196
  * 箇条書き
1576
2197
  * 箇条書き
@@ -1598,12 +2219,15 @@ def fib(n):
1598
2219
 
1599
2220
 
1600
2221
 
2222
+ なお現在、ノートのタイトルに「@<code>|@@<nop>{}<code>{...}|」を入れると「@<code>|TeX capacity exceeded, sorry [input stack size=5000].|」という@<LaTeX>{}のエラーが発生します。
2223
+ 原因は不明なので、もしこのようなエラーが発生したらノートのタイトルから「@<code>|@@<nop>{}<code>{...}|」を外してみてください。
2224
+
1601
2225
 
1602
2226
  === ラベルをつけて参照する
1603
2227
 
1604
2228
  ノートにラベルをつけて、「@<code>|@@<nop>{}<noteref>{ラベル名}|」で参照できます(Starter独自拡張)。
1605
2229
 
1606
- //list[][サンプル]{
2230
+ //list[][サンプル][]{
1607
2231
  /@<nop>$$/note@<b>|[note-123]|[詳細情報]{
1608
2232
  詳細な説明は次のようになります。……
1609
2233
  /@<nop>$$/}
@@ -1637,7 +2261,7 @@ def fib(n):
1637
2261
  これを見ると分かるように、@<B>{第1引数だけを指定した場合はラベルではなくタイトルとみなされます}。
1638
2262
  注意してください。
1639
2263
 
1640
- //tsize[|latex||l|c|c|]
2264
+ //tsize[*][|l|c|c|]
1641
2265
  //table[tbl-xthfx][「@<code>|//note|」の引数の仕様]{
1642
2266
  記述 ラベル タイトル
1643
2267
  --------------------
@@ -1661,35 +2285,95 @@ def fib(n):
1661
2285
  * 「@<code>|//tip|」(Tips)
1662
2286
  * 「@<code>|//info|」(情報)
1663
2287
  * 「@<code>|//warning|」(警告)
1664
- * 「@<code>|//important|」(重要)
1665
- * 「@<code>|//caution|」(警告)
1666
- * 「@<code>|//notice|」(注意)
2288
+ * 「@<code>|//important|」(重要事項)
2289
+ * 「@<code>|//caution|」(注意喚起)
2290
+ * 「@<code>|//notice|」(お知らせ)
2291
+
2292
+ これらをRe:VIEWで使うとひどいデザインで表示されますが、Starterでは簡素なデザインで表示するよう修正しています。
2293
+
2294
+ //list[][サンプル][]{
2295
+ @<b>|//notice|[ご来場のみなさまへ]{
2296
+ 本建物の内部には、王族しか入ることができません。
2297
+ それ以外の方は入れないので、あらかじめご了承ください。
2298
+ /@<nop>$$/}
2299
+ //}
2300
+
2301
+ //sampleoutputbegin[表示結果]
2302
+
2303
+ //notice[ご来場のみなさまへ]{
2304
+ 本建物の内部には、王族しか入ることができません。
2305
+ それ以外の方は入れないので、あらかじめご了承ください。
2306
+ //}
2307
+
2308
+ //sampleoutputend
2309
+
2310
+
1667
2311
 
1668
- これらをRe:VIEWで使うとひどいデザインで表示されますが、Starterでは簡素なデザインで表示するよう修正しています(デザインは同一です)。
2312
+ 第1引数のタイトルは省略できます。
1669
2313
 
1670
- //list[][サンプル]{
1671
- /@<nop>$$/warning[破滅の呪文]{
1672
- 破滅の呪文を唱えると、本建物は自動的に瓦解します。
1673
- ご使用には十分注意してください。
2314
+ またStarterでは、「@<code>|//info|」と「@<code>|//caution|」と「@<code>|//warning|」に専用のアイコン画像@<fn>{fn-1sqbn}を用意しています。
2315
+
2316
+ //footnote[fn-1sqbn][これらのアイコン画像はパブリックドメインにするので、商用・非商用を問わず自由にお使いください。再配布も自由に行って構いません。]
2317
+
2318
+ //list[][サンプル][]{
2319
+ @<b>|//info|[解決のヒント]{
2320
+ 本製品を手に取り、古くから伝わるおまじないを唱えてみましょう。
2321
+ すると天空の城への門が開きます。
2322
+ /@<nop>$$/}
2323
+
2324
+ @<b>|//caution|[使用上の注意]{
2325
+ 本製品を石版にかざすと、天空の城から雷が発射されます。
2326
+ 周りに人がいないことを確かめてから使用してください。
2327
+ /@<nop>$$/}
2328
+
2329
+ @<b>|//warning|[重大な警告]{
2330
+ 本製品を持ったまま滅びの呪文を唱えると、天空の城は自動的に崩壊します。
2331
+ 大変危険ですので、決して唱えないでください。
1674
2332
  /@<nop>$$/}
1675
2333
  //}
1676
2334
 
1677
2335
  //sampleoutputbegin[表示結果]
1678
2336
 
1679
- //warning[破滅の呪文]{
1680
- 破滅の呪文を唱えると、本建物は自動的に瓦解します。
1681
- ご使用には十分注意してください。
2337
+ //info[解決のヒント]{
2338
+ 本製品を手に取り、古くから伝わるおまじないを唱えてみましょう。
2339
+ すると天空の城への門が開きます。
2340
+ //}
2341
+
2342
+ //caution[使用上の注意]{
2343
+ 本製品を石版にかざすと、天空の城から雷が発射されます。
2344
+ 周りに人がいないことを確かめてから使用してください。
2345
+ //}
2346
+
2347
+ //warning[重大な警告]{
2348
+ 本製品を持ったまま滅びの呪文を唱えると、天空の城は自動的に崩壊します。
2349
+ 大変危険ですので、決して唱えないでください。
1682
2350
  //}
1683
2351
 
1684
2352
  //sampleoutputend
1685
2353
 
1686
2354
 
1687
2355
 
1688
- このデザインを変更するには、@<secref>{04-customize|subec-miniblockdesign}
2356
+ これらのアイコン画像はKeynoteでささっと作ったものなので、もっといいデザインのアイコン画像に変更するといいでしょう。
2357
+ デザインの変更方法は@<secref>{04-customize|subec-miniblockdesign}を参照してください。
2358
+
2359
+ なお「@<code>|//note|」と違い、いくつか制限事項があります。
2360
+
2361
+ * 参照用のラベルはつけられません。
2362
+ * @<LaTeX>{}の制限により、脚注がうまく表示されません。
2363
+ * @<LaTeX>{}の制限により、プログラムリストやターミナル画面がページをまたげません。
2364
+ * @<LaTeX>{}の制限により、画像と表の位置指定(「@<code>|[pos=h]|」のような指定)ができません。また強制的に「@<code>|pos=H|」が指定されたものとして扱われます。
1689
2365
 
1690
- なお「@<code>|//note|」と違い、参照用のラベルはつけられません。
1691
- また@<LaTeX>{}の制限により、これらのブロックの内部では脚注がうまく表示されないことがあります。
2366
+ //note[「warning」と「caution」の違い]{
2367
+ 「warning」と「caution」は、どちらも警告や注意を表す言葉ですが、次のような違いがあるそうです@<fn>{fn-2xk1v}
1692
2368
 
2369
+ * 「warning」は致命的な結果になる可能性がある場合に使う。
2370
+ * 「caution」は望ましくない結果になる可能性がある場合に使う。
2371
+
2372
+ つまり「warning」は強い警告、「caution」は弱い警告だと思えばいいでしょう。
2373
+
2374
+ //footnote[fn-2xk1v][参考:@<href>{http://www.stevensstrategic.com/technical-writing-the-difference-between-warnings-and-cautions/, 『Technical Writing: The Difference Between Warnings and Cautions』}]
2375
+
2376
+ //}
1693
2377
 
1694
2378
 
1695
2379
  =={sec-column} コラム
@@ -1709,14 +2393,17 @@ def fib(n):
1709
2393
 
1710
2394
  //footnote[fn-ouf7u][ただし「@<code>|[notoc\]|」オプションをつけた場合を除く。]
1711
2395
 
1712
- ただし明確な違いはないので、ノートをコラム代わりに使っても、あるいはその逆でも間違いではないです。
2396
+ #@#ただし明確な違いはないので、ノートをコラム代わりに使っても、あるいはその逆でも間違いではないです。
2397
+ ときどき、ノートで書くべき内容をすべてコラムとして書いている同人誌を見かけます。
2398
+ 間違いだとは言い切れないのですが、できれば両者の使い分けを意識しましょう。
2399
+
1713
2400
 
1714
2401
  === コラムの書き方
1715
2402
 
1716
2403
  コラムは「@<code>|==[column]|」と「@<code>|==[/column]|」か、または「@<code>|===[column]|」と「@<code>|===[/column]|」で囲みます(イコール記号の数が違うことに注意)。
1717
2404
  また実装上の都合により、コラムを閉じる直前に空行を入れてください。
1718
2405
 
1719
- //list[][サンプル]{
2406
+ //list[][サンプル][]{
1720
2407
  @<b>|===[column] サンプルコラム1|
1721
2408
  コラム本文。
1722
2409
 
@@ -1750,12 +2437,13 @@ def fib(n):
1750
2437
 
1751
2438
 
1752
2439
 
1753
- === コラム内の脚注
2440
+
2441
+ ==={subsec-columnfootnote} コラム内の脚注
1754
2442
 
1755
2443
  前の例を見れば分かるように、コラムの中には箇条書きやプログラムリストなどを含めることができます。
1756
2444
  ただし、脚注だけはコラムを閉じたあとに書く必要があります。
1757
2445
 
1758
- //list[][サンプル]{
2446
+ //list[][サンプル][]{
1759
2447
  @<nop>$$===[column] サンプルコラム2
1760
2448
  コラム本文@<b>|@@<nop>$$<fn>{fn-222}|。
1761
2449
 
@@ -1782,7 +2470,7 @@ def fib(n):
1782
2470
 
1783
2471
  コラムを参照するには、コラムにラベルをつけて、それを「@<code>|@@<nop>{}<column>{ラベル}|」で参照します。
1784
2472
 
1785
- //list[][サンプル]{
2473
+ //list[][サンプル][]{
1786
2474
  @<nop>$$===[column]@<b>|{column3}| サンプルコラム3
1787
2475
  サンプルコラム本文。
1788
2476
 
@@ -1807,27 +2495,22 @@ def fib(n):
1807
2495
 
1808
2496
  === コラムの制限
1809
2497
 
1810
- コラム内で「@<code>|//list|」や「@<code>|//terminal|」を使うと、それらはページをまたいでくれません@<fn>{fn-giruq}。
1811
-
1812
- 現在のところ、これは仕様です。あきらめてください。
1813
-
1814
- //footnote[fn-giruq][これは@<LaTeX>{}のframed環境による制限です。解決するにはframed環境を使わないよう変更する必要があります。]
1815
-
2498
+ 現在、コラムには次のような制限があります。
1816
2499
 
1817
- === ノートとコラムの使い分け
2500
+ * コラム内で「@<code>|//list|」や「@<code>|//terminal|」を使うと、それらはページをまたいでくれません@<fn>{fn-giruq}。
2501
+ * 画像と表の位置指定ができません。「@<code>|//image[][][@<b>{pos=h}]|」や「@<code>|//table[][][@<b>{pos=h}]|」を指定するとエラーになるので@<fn>{fn-k247m}、指定しないでください。
1818
2502
 
1819
- ノートとコラムは、次のように使い分けるといいでしょう。
2503
+ これらの制限は仕様です。あきらめてください。
1820
2504
 
1821
- * 基本的には、ノートを使う。
1822
- * 章(Chapter)の終わりに、長めの関連情報やエッセーを書く場合はコラムを使う。
1823
- これは節(Section)と同じ扱いにするので、「@<code>|==[column]|」を使う。
2505
+ //footnote[fn-giruq][これは@<LaTeX>{}のframed環境による制限です。解決するにはframed環境を使わないよう変更する必要があります。]
2506
+ //footnote[fn-k247m][oframe環境の中ではtable環境やfigure環境のようなフローティング要素が使えないという@<LaTeX>{}の制約が原因です。]
1824
2507
 
1825
2508
  //note[コラムは見出しの一種]{
1826
2509
  Re:VIEWおよびStarterでは、コラムは節(Section)や項(Subsection)といった見出しの一種として実装されています。
1827
2510
  そのため、「@<code>|==[column]|」なら節(Section)と同じような扱いになり、「@<code>|===[column]|」なら項(Subsection)と同じような扱いになります(目次レベルを見るとよく分かります)。
1828
2511
 
1829
2512
  また節や項は閉じる必要がない(勝手に閉じてくれる)のと同じように、コラムも「@<code>|===[/column]|」がなければ勝手に閉じてくれます。
1830
- しかし明示的に閉じないと脚注が出力されない場合があるので、横着をせずに明示的にコラムを閉じましょう。
2513
+ しかし明示的に閉じないと脚注が出力されないことがあるので、横着をせずに明示的にコラムを閉じましょう。
1831
2514
  //}
1832
2515
 
1833
2516
 
@@ -1837,30 +2520,31 @@ Re:VIEWおよびStarterでは、コラムは節(Section)や項(Subsection)とい
1837
2520
 
1838
2521
  === 画像ファイルの読み込み方
1839
2522
 
1840
- 画像を読み込むには、「@<code>|//image[画像ファイル名][説明文字列][scale=1.0]|」を使います。
2523
+ 画像を読み込むには、「@<code>|//image[画像ファイル名][説明文字列][オプション]|」を使います。
1841
2524
 
1842
2525
  * 画像ファイルは「@<file>{images/}」フォルダに置きます@<fn>{fn-6s711}。
1843
2526
  * 画像ファイル名には拡張子を指定しません(自動的に検出されます)。
1844
2527
  * 画像ファイル名がラベルを兼ねており、「@<code>|@@<nop>{}<img>{画像ファイル名}|」で参照できます。
1845
- * 3引数には画像の表示幅を、本文幅に対する割合で指定します。
1846
- たとえば「@<code>|[scale=1.0]|」なら本文幅いっぱい、「@<code>|[scale=0.5]|」なら本文幅の半分になります。
2528
+ * 画像の表示幅は第3引数のオプションとして指定します。詳しくは後述します。
2529
+ * 第3引数のオプションは省略できます。どんなオプションが指定できるかは後述します。
1847
2530
 
1848
2531
  //footnote[fn-6s711][画像ファイルを置くフォルダは、設定ファイル「@<file>{config.yml}」の設定項目「@<file>{imagedir}」で変更できますが、通常は変更する必要はないでしょう。]
1849
2532
 
1850
2533
  次の例では、画像ファイル「@<file>{images/tw-icon1.jpg}」を読み込んでいます。
1851
2534
 
1852
- //list[][サンプル]{
1853
- /@<nop>$$/image[tw-icon1][Twitterアイコン][scale=0.3]
2535
+ //list[][サンプル][]{
2536
+ /@<nop>$$/image[tw-icon1][Twitterアイコン][width=30mm]
1854
2537
  //}
1855
2538
 
1856
2539
 
1857
2540
 
1858
2541
  表示例は@<img>{tw-icon1}を見てください。
1859
2542
 
1860
- //image[tw-icon1][Twitterアイコン][scale=0.3]
2543
+ //image[tw-icon1][Twitterアイコン][width=30mm]
1861
2544
 
1862
2545
  //note[1つの画像ファイルを複数の箇所から読み込まない]{
1863
- 画像ファイル名がラベルを兼ねるせいで、1つの画像ファイルを複数の箇所から読み込むとラベルが重複してしまい、コンパイル時に警告が出ます。
2546
+ 「@<code>|//image|」コマンドでは、画像ファイル名がラベルを兼ねます。
2547
+ そのせいで、1つの画像ファイルを複数の箇所で読み込むとラベルが重複してしまい、コンパイル時に警告が出ます。
1864
2548
  また「@<code>|@@<nop>{}<img>{}|」で参照しても、画像番号がずれてしまい正しく参照できません。
1865
2549
 
1866
2550
  Re:VIEWおよびStarterでは1つの画像ファイルを複数の箇所から読み込むのは止めておきましょう。
@@ -1869,10 +2553,68 @@ Re:VIEWおよびStarterでは1つの画像ファイルを複数の箇所から
1869
2553
  //}
1870
2554
 
1871
2555
 
2556
+ === 画像の表示幅を指定する
2557
+
2558
+ 「@<code>|//image|」の第3引数に、画像を表示する幅を指定できます。
2559
+ 指定方法は2つあります。
2560
+
2561
+ //desclist[bold=off]{
2562
+ //desc[@<code>|//image[\][\][@<b>{scale=0.5}\]|]{
2563
+ 画像の幅が本文幅より大きいか小さいかで挙動が変わります。
2564
+
2565
+ * 画像の幅が本文幅より大きい場合は、本文幅を基準とします。この例なら、本文幅の半分の幅で表示されます。
2566
+ * 画像の幅が本文幅より小さい場合は、画像の幅を基準とします。この例なら、画像幅の半分の幅で表示されます。
2567
+ //}
2568
+ //desc[@<code>|//image[\][\][@<b>{width=50%}\]|]{
2569
+ 常に本文幅の半分の幅で画像を表示します。
2570
+ また「@<code>|50%|」のような比率だけでなく、「@<code>|150px|」や「@<code>|50mm|」のように本文幅と関係ない長さの指定ができます。
2571
+ 値には必ず単位が必要であり、「@<code>|width=0.5|」のような指定はできません。
2572
+ //}
2573
+ //}
2574
+
2575
+ 「@<code>|scale|」も「@<code>|width|」も指定しなかった場合は、次のように表示されます。
2576
+
2577
+ * 画像の幅が本文幅より大きい場合は、本文幅に縮小されて表示されます。
2578
+ * 画像の幅が本文幅より小さい場合は、画像幅のままで表示されます@<fn>{3gyr7}。
2579
+
2580
+ //footnote[3gyr7][Re:VIEWでHTMLを生成すると、画像の幅が本文幅より小さい場合、本文幅いっぱいで表示されてしまいます。この挙動は困るので、Starterでは画像幅のままで表示するよう修正しています。]
2581
+
2582
+ なお「@<code>|scale=0.5|」はRe:VIEWでもStarterでも使えるオプションですが、「@<code>|width=50%|」はStarterでのみ使えるオプションです。
2583
+ 「@<code>|width=50%|」はRe:VIEWでは使えないので注意してください。
2584
+
2585
+ PDFとHTMLの場合で表示幅を変えるような指定もできます。
2586
+ 「@<code>|latex::width=100%, html::width=50%|」@<fn>{uzys8}のように指定すると、PDFのときは本文幅いっぱいに画像を表示し、HTMLのときは本文幅の半分の幅で画像を表示します。
2587
+
2588
+ //footnote[uzys8][この指定方法は、他のオプションや他のブロックコマンドでも使用できます。]
2589
+
2590
+ #@#//note[「@<code>|scale=0.5|」の挙動について]{
2591
+ //note[「scale=0.5」の挙動について]{
2592
+ @<href>{https://github.com/kmuto/review/blob/master/doc/format.ja.md#図, Re:VIEWのドキュメント}には、「@<code>|scale=0.5|」について次のように説明されています。
2593
+
2594
+ //quote{
2595
+ 3番目の引数として、画像の倍率・大きさを指定できます。
2596
+ 今のところ「scale=X」で倍率(X 倍)を指定でき、HTML、TeX ともに紙面(画面)幅に対しての倍率となります(0.5 なら半分の幅になります)。
2597
+ //}
2598
+
2599
+ しかし、これは画像の幅が本文幅より大きい場合の説明です。
2600
+ 画像の幅が本文より小さい場合は、「@<code>|scale=0.5|」は本文幅の半分ではなく画像幅の半分になります。
2601
+ つまり、こういうことです:
2602
+
2603
+ * 画像の幅が本文幅より@<bou>{大きい}場合は、@<bou>{本文幅}を基準とする。
2604
+ * 画像の幅が本文幅より@<bou>{小さい}場合は、@<bou>{画像幅}を基準とする。
2605
+
2606
+ ややこしいことに、Re:VIEWがHTMLを生成するときは必ず本文幅を基準としてしまいます。
2607
+ なぜなら、Re:VIEWでは画像の表示幅を指定するのに「@<code>|width:50%|」のようなCSSを使うためです。
2608
+
2609
+ これはPDFのときと挙動が大きく違うので、Starterではかわりに「@<code>|max-width:50%|」のようなCSSを使い、PDFの挙動に似せています。
2610
+ ただし完全に同じ動作にはならないので、どうしてもRe:VIEWと互換性を持たせる必要がある場合を除き、「@<code>|scale=0.5|」ではなく「@<code>|width=50%|」を使うことを勧めます。
2611
+ //}
2612
+
2613
+
1872
2614
  === 章ごとの画像フォルダ
1873
2615
 
1874
2616
  画像ファイルは、章(Chapter)ごとのフォルダに置けます。
1875
- たとえば原稿ファイル名が「@<file>{02-tutorial.re}」であれば、章IDは「@<file>{02-tutorial}」になり、画像ファイルを「@<file>{images/02-tutorial/}」に置けます@<fn>{fn-31qgg}(特別な設定は不要です)。
2617
+ たとえば原稿ファイル名が「@<file>{02-tutorial.re}」であれば、章IDは「@<file>{02-tutorial}」なので、画像ファイルを「@<file>{images/02-tutorial/}」に置けます@<fn>{fn-31qgg}(特別な設定は不要です)。
1876
2618
  これは複数の著者で一冊の本を執筆するときに便利です。
1877
2619
  //footnote[fn-31qgg][もちろん「@<file>{images/}」にも置けます。]
1878
2620
 
@@ -1883,7 +2625,7 @@ Re:VIEWおよびStarterでは1つの画像ファイルを複数の箇所から
1883
2625
 
1884
2626
  第3引数に「@<code>|[border=on]|」をつけると、画像のまわりに灰色の線がつきます(Starter拡張)。
1885
2627
 
1886
- //list[][サンプル]{
2628
+ //list[][サンプル][]{
1887
2629
  /@<nop>$$/image[tw-icon2][Twitterアイコン][scale=0.3@<b>|,border=on|]
1888
2630
  //}
1889
2631
 
@@ -1896,7 +2638,7 @@ Re:VIEWおよびStarterでは1つの画像ファイルを複数の箇所から
1896
2638
 
1897
2639
  === 画像の配置位置を指定する
1898
2640
 
1899
- 第3引数に「@<code>|[pos=...]|」をつけると、読み込んだ画像をページのどこに配置するか、指定できます。
2641
+ 第3引数に「@<code>|[pos=...]|」をつけると、読み込んだ画像をページのどこに配置するか、指定できます(Starter拡張)。
1900
2642
 
1901
2643
  : @<code>|pos=H|
1902
2644
  なるべく現在位置に配置します。
@@ -1915,7 +2657,7 @@ Re:VIEWおよびStarterでは1つの画像ファイルを複数の箇所から
1915
2657
 
1916
2658
  //footnote[fn-4hoaz][設定ファイル「@<file>{config-starter.yml}」の設定項目「@<file>{image_position:}」でデフォルト値を変更できます。]
1917
2659
 
1918
- //list[][サンプル]{
2660
+ //list[][サンプル][]{
1919
2661
  現在位置に配置
1920
2662
  /@<nop>$$/image[tw-icon][Twitterアイコン][scale=0.3@<b>|,pos=h|]
1921
2663
 
@@ -1932,13 +2674,18 @@ Re:VIEWおよびStarterでは1つの画像ファイルを複数の箇所から
1932
2674
 
1933
2675
  //image[figure_heretop][「@<code>{pos=H}」(上)と「@<code>{pos=h}」(下)の違い][scale=0.8]
1934
2676
 
2677
+ ただし位置指定は、コラムの中では使えず、ノート以外のミニブロック(「@<code>|//info|」や「@<code>|//warning|」など)の中でも使えません。
2678
+ どちらの場合も、位置指定は強制的に「@<code>|pos=H|」と同じ動作になります。
2679
+ これは@<LaTeX>{}の制約からくる仕様です。
2680
+
1935
2681
 
1936
2682
  === 画像に番号も説明もつけない
1937
2683
 
1938
2684
  今まで説明したやり方では、画像に番号と説明文字列がつきました。
1939
- これらをつけず、単に画像ファイルを読み込みたいだけの場合は、「@<code>|//indepimage[ファイル名][][scale=1.0]|」を使ってください(第2引数に説明文字列を指定できますが、通常は不要でしょう)。
2685
+ これらをつけず、単に画像ファイルを読み込みたいだけの場合は、「@<code>|//indepimage[ファイル名][][scale=1.0]|」を使ってください。
2686
+ 第2引数に説明文字列を指定できますが、通常は不要でしょう。
1940
2687
 
1941
- //list[][サンプル]{
2688
+ //list[][サンプル][]{
1942
2689
  @<b>|//indepimage|[tw-icon3][][scale=0.3]
1943
2690
  //}
1944
2691
 
@@ -1956,7 +2703,7 @@ Re:VIEWおよびStarterでは1つの画像ファイルを複数の箇所から
1956
2703
  文章の途中に画像を読み込むには、「@<code>|@@<nop>{}<icon>{画像ファイル名}|」を使います。
1957
2704
  画像の表示幅は指定できないようです。
1958
2705
 
1959
- //list[][サンプル]{
2706
+ //list[][サンプル][]{
1960
2707
  文章の途中でファビコン画像「@<b>|@@<nop>$$<icon>{|favicon-16x16@<b>|}|」を読み込む。
1961
2708
  //}
1962
2709
 
@@ -1974,14 +2721,14 @@ Re:VIEWおよびStarterでは1つの画像ファイルを複数の箇所から
1974
2721
  Starterでは、画像とテキストを並べて表示するためのコマンド「@<code>|//sideimage|」を用意しました。
1975
2722
  著者紹介においてTwitterアイコンとともに使うといいでしょう。
1976
2723
 
1977
- //list[][サンプル]{
2724
+ //list[][サンプル][]{
1978
2725
  @<b>|//sideimage[tw-icon4][20mm][side=L,sep=7mm,border=on]|{
1979
2726
  /@<nop>$$/noindent
1980
2727
  @@<nop>$$<B>{カウプラン機関極東支部}
1981
2728
 
1982
2729
  * @_kauplan (@@<nop>$$<href>{https://twitter.com/_kauplan/})
1983
2730
  * @@<nop>$$<href>{https://kauplan.org/}
1984
- * 技術書典8新刊「Pythonの黒魔術」出ました!
2731
+ * 技術書典8新刊「Pythonの黒魔術」出ました。
1985
2732
 
1986
2733
  /@<nop>$$/}
1987
2734
  //}
@@ -1994,7 +2741,7 @@ Starterでは、画像とテキストを並べて表示するためのコマン
1994
2741
 
1995
2742
  * @_kauplan (@<href>{https://twitter.com/_kauplan/})
1996
2743
  * @<href>{https://kauplan.org/}
1997
- * 技術書典8新刊「Pythonの黒魔術」出ました!
2744
+ * 技術書典8新刊「Pythonの黒魔術」出ました。
1998
2745
 
1999
2746
  //}
2000
2747
 
@@ -2040,7 +2787,7 @@ Starterでは、画像とテキストを並べて表示するためのコマン
2040
2787
  * セルは1文字以上のタブ文字で区切ります。
2041
2788
  * ヘッダは12文字以上の「@<code>{-}」か「@<code>{=}」で区切ります。
2042
2789
 
2043
- //list[][サンプル]{
2790
+ //list[][サンプル][]{
2044
2791
  @<b>|@@<nop>$$<table>{tbl-sample1}|を参照。
2045
2792
 
2046
2793
  @<b>|//table[tbl-sample1][テーブルサンプル]{|
@@ -2071,16 +2818,21 @@ CCC 1000 1000 1000
2071
2818
  #@#表示結果は@<table>{tbl-sample1}を見てください。
2072
2819
 
2073
2820
 
2074
- === 右寄せ、左寄せ、中央揃え
2075
2821
 
2076
- セルの右寄せ(r)・左寄せ(l)・中央揃え(c)を指定するには、「@<code>{//tsize[|latex|...]}」@<fn>{fn-8rpih}を使います。
2077
- ただし現在のところ、この機能はPDF用でありePubでは使えません。
2822
+ === ラベルの自動採番
2078
2823
 
2079
- //footnote[fn-8rpih][「@<code>{//tsize[|pdf|...\]}」ではなく「@<code>{//tsize[|latex|...\]}」なのは、内部で@<LaTeX>{}という組版用ソフトウェアを使っているからです。]
2824
+ 「@<code>|//table[][]|」の第1引数はラベルです。
2825
+ これがないと、「表1.1」のような表示がされません。
2826
+ しかし、重複しない文字列を用意して第1引数に設定するのは、結構面倒くさいです。
2080
2827
 
2081
- //list[][サンプル]{
2082
- @<b>{//tsize[|latex||l|r|l|c|]}
2083
- /@<nop>$$/table[tbl-sample2][右寄せ(r)、左寄せ(l)、中央揃え(c)]{
2828
+ そこでStarterでは、ラベルのかわりに「@<code>{?}」を指定する機能を用意しました。
2829
+ これを使うと、ランダム文字列が自動的に割り当てられるため、いつも「表1.1」のような表示がされます(これは「@<code>{//list[?]}」と同じ機能です)。
2830
+
2831
+ 次の例では、「@<code>{//table}」の第1引数がラベルではなく「@<code>{?}」になっています。
2832
+ これで重複しないランダム文字列が自動的に割り当てられるので、この表は番号つきで表示されます。
2833
+
2834
+ //list[][サンプル][]{
2835
+ /@<nop>$$/table@<b>|[?]|[キャプション]{
2084
2836
  Name Val Val Val
2085
2837
  --------------------------------
2086
2838
  AAA 10 10 10
@@ -2091,8 +2843,7 @@ CCC 1000 1000 1000
2091
2843
 
2092
2844
  //sampleoutputbegin[表示結果]
2093
2845
 
2094
- //tsize[|latex||l|r|l|c|]
2095
- //table[tbl-sample2][右寄せ(r)、左寄せ(l)、中央揃え(c)]{
2846
+ //table[?][キャプション]{
2096
2847
  Name Val Val Val
2097
2848
  --------------------------------
2098
2849
  AAA 10 10 10
@@ -2104,18 +2855,17 @@ CCC 1000 1000 1000
2104
2855
 
2105
2856
 
2106
2857
 
2107
- #@#表示結果は@<table>{tbl-sample2}を見てください。
2108
2858
 
2859
+ === 右寄せ、左寄せ、中央揃え
2109
2860
 
2110
- === 罫線
2861
+ セルの右寄せ(r)・左寄せ(l)・中央揃え(c)を指定するには、「@<code>{//tsize[latex][...]}」@<fn>{fn-8rpih}を使います。
2862
+ ただし現在のところ、この機能はPDF用でありePubでは使えません。
2111
2863
 
2112
- 「@<code>{//tsize[|latex||l|r|l|c|]}」の指定において、「@<code>{|l|r|l|c|}」の部分における「@<code>{|}」は、縦方向の罫線を表します。
2113
- これをなくすと罫線がつきません。
2114
- また「@<code>{||}」のように二重にすると、罫線も二重になります。
2864
+ //footnote[fn-8rpih][「@<code>{//tsize[pdf\][...\]}」ではなく「@<code>{//tsize[latex\][...\]}」なのは、内部で@<LaTeX>{}という組版用ソフトウェアを使っているからです。]
2115
2865
 
2116
- //list[][サンプル]{
2117
- /@<nop>$$/tsize[|latex|@<b>{l||rlc}]
2118
- /@<nop>$$/table[tbl-sample3][罫線をなくしたり、二重にしてみたり]{
2866
+ //list[][サンプル][]{
2867
+ @<b>{//tsize[latex][|l|r|l|c|]}
2868
+ /@<nop>$$/table[tbl-sample2][右寄せ(r)、左寄せ(l)、中央揃え(c)]{
2119
2869
  Name Val Val Val
2120
2870
  --------------------------------
2121
2871
  AAA 10 10 10
@@ -2126,8 +2876,8 @@ CCC 1000 1000 1000
2126
2876
 
2127
2877
  //sampleoutputbegin[表示結果]
2128
2878
 
2129
- //tsize[|latex|l||rlc]
2130
- //table[tbl-sample3][罫線をなくしたり、二重にしてみたり]{
2879
+ //tsize[latex][|l|r|l|c|]
2880
+ //table[tbl-sample2][右寄せ(r)、左寄せ(l)、中央揃え(c)]{
2131
2881
  Name Val Val Val
2132
2882
  --------------------------------
2133
2883
  AAA 10 10 10
@@ -2139,89 +2889,128 @@ CCC 1000 1000 1000
2139
2889
 
2140
2890
 
2141
2891
 
2142
- #@#表示結果は@<table>{tbl-sample3}を見てください。
2892
+ #@#表示結果は@<table>{tbl-sample2}を見てください。
2143
2893
 
2894
+ 「@<code>{//tsize}」の使い方は2種類あります。
2144
2895
 
2145
- === セル幅
2896
+ - (A) 「@<code>{//tsize[|latex||r|l|c|]}」 … Re:VIEWでの書き方(Starterでも使える)
2897
+ - (B) 「@<code>{//tsize[latex][|r|l|c|]}」 … Starterで追加した書き方(Re:VIEWでは使えない)
2146
2898
 
2147
- セルの幅を指定するには、「@<code>{//tsize[|latex|...]}」の中でたとえば「@<code>{p{20mm}}」のように指定します。
2899
+ (A)の書き方では、「@<code>|latex|」や「@<code>|html|」を表す縦線と、罫線を指定する縦線とが混在しており、とても分かりにくいです。
2900
+ これに対し、Starterで追加された(B)の書き方であれば、ずっと見やすく書けます。
2901
+ どうしてもRe:VIEWとの互換性が必要な場合を除き、(B)の書き方をお勧めします。
2148
2902
 
2149
- * この場合、自動的に左寄せになります。右寄せや中央揃えにはできません。
2150
- * セル内の長いテキストは自動的に折り返されます。
2151
- テーブルが横にはみ出てしまう場合はセル幅を指定するといいでしょう。
2903
+ なお「@<code>{latex}」を指定しない場合は次のように書きます。
2152
2904
 
2153
- //list[][サンプル]{
2154
- /@<nop>$$/tsize[|latex||l|@<b>|p{70mm}||]
2155
- /@<nop>$$/table[tbl-sample4][セルの幅を指定すると、長いテキストが折り返される]{
2156
- Name Description
2905
+ * 「@<code>{//tsize[|||r|l|c|]}」 … Re:VIEWでの書き方
2906
+ * 「@<code>{//tsize[][|r|l|c|]}」 … Starterで追加した書き方
2907
+ * 「@<code>{//tsize[*][|r|l|c|]}」 … これでもよい
2908
+
2909
+ また「@<code>{//tsize[html,epub][...]}」のような指定もできます。
2910
+ 将来的に「@<code>{//tsize}」がHTMLやePubをサポートすれば、このような指定が役に立つでしょう。
2911
+
2912
+
2913
+ === 縦の罫線
2914
+
2915
+ 「@<code>{//tsize[][|l|r|l|c|]}」の指定において、「@<code>{|}」は縦方向の罫線を表します。
2916
+ これをなくすと罫線がつきません。
2917
+ また「@<code>{||}」のように二重にすると、罫線も二重になります。
2918
+
2919
+ //list[][サンプル][]{
2920
+ /@<nop>$$/tsize[][@<b>{l||rlc}]
2921
+ /@<nop>$$/table[tbl-sample3][罫線をなくしたり、二重にしてみたり]{
2922
+ Name Val Val Val
2157
2923
  --------------------------------
2158
- AAA text text text text text text text text text text text text text text text
2159
- BBB text text text text text text text text text text text text text text text
2924
+ AAA 10 10 10
2925
+ BBB 100 100 100
2926
+ CCC 1000 1000 1000
2160
2927
  /@<nop>$$/}
2161
2928
  //}
2162
2929
 
2163
2930
  //sampleoutputbegin[表示結果]
2164
2931
 
2165
- //tsize[|latex||l|p{70mm}|]
2166
- //table[tbl-sample4][セルの幅を指定すると、長いテキストが折り返される]{
2167
- Name Description
2932
+ //tsize[][l||rlc]
2933
+ //table[tbl-sample3][罫線をなくしたり、二重にしてみたり]{
2934
+ Name Val Val Val
2168
2935
  --------------------------------
2169
- AAA text text text text text text text text text text text text text text text
2170
- BBB text text text text text text text text text text text text text text text
2936
+ AAA 10 10 10
2937
+ BBB 100 100 100
2938
+ CCC 1000 1000 1000
2171
2939
  //}
2172
2940
 
2173
2941
  //sampleoutputend
2174
2942
 
2175
2943
 
2176
2944
 
2177
- #@#表示結果は@<table>{tbl-sample4}を見てください。
2945
+ #@#表示結果は@<table>{tbl-sample3}を見てください。
2178
2946
 
2179
2947
 
2180
- === 空欄
2948
+ === 横の罫線
2181
2949
 
2182
- セルを空欄にするには、セルに「@<code>{.}」だけを書いてください。
2950
+ Re:VIEWでは、表のどの行にも横の罫線が引かれます。
2951
+ Starterでは、横の罫線を引かないように指定できます。
2952
+ そのためには、第3引数に「@<code>{hline=off}」を指定します。
2183
2953
 
2184
- //list[][サンプル]{
2185
- /@<nop>$$/tsize[|latex||l|ccc|]
2186
- /@<nop>$$/table[tbl-sample5][セルを空欄にするサンプル]{
2187
- 評価項目 製品A 製品B 製品C
2188
- ----------------------------------------
2189
- 機能が充分か ✓ ✓ .
2190
- 価格が適切か . .
2191
- サポートがあるか .
2954
+ //needvspace[latex][6zw]
2955
+ //list[][サンプル][]{
2956
+ /@<nop>$$/tsize[][lrlc]
2957
+ /@<nop>$$/table[tbl-sample4][横の罫線を引かない][@<b>|hline=off|]{
2958
+ Name Val Val Val
2959
+ ================================
2960
+ AAA 10 10 10
2961
+ BBB 100 100 100
2962
+ CCC 1000 1000 1000
2192
2963
  /@<nop>$$/}
2193
2964
  //}
2194
2965
 
2195
2966
  //sampleoutputbegin[表示結果]
2196
2967
 
2197
- //tsize[|latex||l|ccc|]
2198
- //table[tbl-sample5][セルを空欄にするサンプル]{
2199
- 評価項目 製品A 製品B 製品C
2200
- ----------------------------------------
2201
- 機能が充分か ✓ .
2202
- 価格が適切か . .
2203
- サポートがあるか .
2968
+ //tsize[][lrlc]
2969
+ //table[tbl-sample4][横の罫線を引かない][hline=off]{
2970
+ Name Val Val Val
2971
+ ================================
2972
+ AAA 10 10 10
2973
+ BBB 100 100 100
2974
+ CCC 1000 1000 1000
2204
2975
  //}
2205
2976
 
2206
2977
  //sampleoutputend
2207
2978
 
2208
2979
 
2209
2980
 
2210
- またセルの先頭が「@<code>{.}」で始まる場合は、「@<code>{..}」のように2つ書いてください。
2211
- そうしないと先頭の「@<code>{.}」が消えてしまいます。
2981
+ 「@<code>{hline=off}」を指定したとき、空行があるとそこに罫線が引かれます。
2982
+
2983
+ //needvspace[latex][6zw]
2984
+ //list[][サンプル][]{
2985
+ /@<nop>$$/tsize[][lrlc]
2986
+ /@<nop>$$/table[tbl-sample5][空行が横の罫線になる][@<b>|hline=off|]{
2987
+ Name Val Val Val
2988
+ ================================
2989
+ AAA 10 10 10
2990
+ BBB 100 100 100
2991
+
2992
+ CCC 1000 1000 1000
2993
+ DDD 1000 1000 1000
2212
2994
 
2213
- //list[][サンプル]{
2214
- /@<nop>$$/table[tbl-sample6][セルの先頭が「@@<nop>$$<code>{.}」で始まる場合]{
2215
- 先頭に「.」が1つだけの場合 @<b>|.bashrc|
2216
- 先頭に「.」が2つある場合 @<b>|..bashrc|
2995
+ EEE 1000 1000 1000
2996
+ FFF 1000 1000 1000
2217
2997
  /@<nop>$$/}
2218
2998
  //}
2219
2999
 
2220
3000
  //sampleoutputbegin[表示結果]
2221
3001
 
2222
- //table[tbl-sample6][セルの先頭が「@<code>{.}」で始まる場合]{
2223
- 先頭に「.」が1つだけの場合 .bashrc
2224
- 先頭に「.」が2つある場合 ..bashrc
3002
+ //tsize[][lrlc]
3003
+ //table[tbl-sample5][空行が横の罫線になる][hline=off]{
3004
+ Name Val Val Val
3005
+ ================================
3006
+ AAA 10 10 10
3007
+ BBB 100 100 100
3008
+
3009
+ CCC 1000 1000 1000
3010
+ DDD 1000 1000 1000
3011
+
3012
+ EEE 1000 1000 1000
3013
+ FFF 1000 1000 1000
2225
3014
  //}
2226
3015
 
2227
3016
  //sampleoutputend
@@ -2229,80 +3018,1274 @@ BBB text text text text text text text text text text text text text text text
2229
3018
 
2230
3019
 
2231
3020
 
3021
+ 必要な箇所だけに罫線を引くと、表が見やすくなります。
3022
+ 次の例を参考にしてください。
2232
3023
 
2233
- =={sec-mathexpr} 数式
3024
+ //needvspace[latex][6zw]
3025
+ //list[][サンプル][widecharfit=on]{
3026
+ /@<nop>$$/tsize[][llr]
3027
+ /@<nop>$$/table[tbl-sample6][出版社別コミックス発行部数][@<b>|hline=off|]{
3028
+ 出版社 タイトル 発行部数
3029
+ ====================
3030
+ 集英社 鬼滅の刃 XXXX万部
3031
+ . ワンピース XXX万部
3032
+ . ハイキュー!! XXX万部
3033
+ . 呪術廻戦 XXX万部
2234
3034
 
3035
+ 講談社 進撃の巨人 XXX万部
3036
+ . FAIRY TAIL XXX万部
2235
3037
 
2236
- === 数式の書き方
3038
+ 小学館 名探偵コナン XXX万部
3039
+ . 銀の匙 XXX万部
3040
+ /@<nop>$$/}
3041
+ //}
2237
3042
 
2238
- 数式は「@<code>|//texequation[ラベル][説明文]{ ... //}|」のように書きます。
2239
3043
 
2240
- //list[][サンプル]{
2241
- @<b>|//texequation[euler1][オイラーの公式]{|
2242
- e^{i\theta} = \sin{\theta} + i\cos{\theta}
2243
- @<b>|//}|
2244
- //}
2245
3044
 
2246
- //sampleoutputbegin[表示結果]
3045
+ 表示結果は@<table>{tbl-sample6}を見てください。
2247
3046
 
2248
- //texequation[euler1][オイラーの公式]{
2249
- e^{i\theta} = \sin{\theta} + i\cos{\theta}
3047
+ //tsize[][llr]
3048
+ //table[tbl-sample6][出版社別コミックス発行部数][hline=off]{
3049
+ 出版社 タイトル 発行部数
3050
+ ====================
3051
+ 集英社 鬼滅の刃 XXXX万部
3052
+ . ワンピース XXX万部
3053
+ . ハイキュー!! XXX万部
3054
+ . 呪術廻戦 XXX万部
3055
+
3056
+ 講談社 進撃の巨人 XXX万部
3057
+ . FAIRY TAIL XXX万部
3058
+
3059
+ 小学館 名探偵コナン XXX万部
3060
+ . 銀の匙 XXX万部
2250
3061
  //}
2251
3062
 
2252
- //sampleoutputend
3063
+
3064
+ === セル幅
3065
+
3066
+ セルの幅を指定するには、「@<code>{//tsize[][...]}」の中でたとえば「@<code>{p{20mm}}」のように指定します。
3067
+
3068
+ * この場合、自動的に左寄せになります。右寄せや中央揃えにはできません。
3069
+ * セル内の長いテキストは自動的に折り返されます。
3070
+ 表が横にはみ出てしまう場合はセル幅を指定するといいでしょう。
3071
+
3072
+ //list[][サンプル][]{
3073
+ /@<nop>$$/tsize[latex][|l|@<b>|p{70mm}||]
3074
+ /@<nop>$$/table[tbl-sample7][セルの幅を指定すると、長いテキストが折り返される]{
3075
+ Name Description
3076
+ --------------------------------
3077
+ AAA text text text text text text text text text text text text text text text
3078
+ BBB text text text text text text text text text text text text text text text
3079
+ /@<nop>$$/}
3080
+ //}
3081
+
3082
+ //sampleoutputbegin[表示結果]
3083
+
3084
+ //tsize[latex][|l|p{70mm}|]
3085
+ //table[tbl-sample7][セルの幅を指定すると、長いテキストが折り返される]{
3086
+ Name Description
3087
+ --------------------------------
3088
+ AAA text text text text text text text text text text text text text text text
3089
+ BBB text text text text text text text text text text text text text text text
3090
+ //}
3091
+
3092
+ //sampleoutputend
3093
+
3094
+
3095
+
3096
+ #@#表示結果は@<table>{tbl-sample4}を見てください。
3097
+
3098
+
3099
+ === 空欄
3100
+
3101
+ セルを空欄にするには、セルに「@<code>{.}」だけを書いてください。
3102
+
3103
+ //list[][サンプル][widecharfit=on]{
3104
+ /@<nop>$$/tsize[latex][|l|ccc|]
3105
+ /@<nop>$$/table[tbl-sample8][セルを空欄にするサンプル]{
3106
+ 評価項目 製品A 製品B 製品C
3107
+ ----------------------------------------
3108
+ 機能が充分か ✓ ✓ .
3109
+ 価格が適切か . . ✓
3110
+ サポートがあるか ✓ . ✓
3111
+ /@<nop>$$/}
3112
+ //}
3113
+
3114
+
3115
+
3116
+ 表示結果は@<table>{tbl-sample8}を見てください。
3117
+
3118
+ //tsize[latex][|l|ccc|]
3119
+ //table[tbl-sample8][セルを空欄にするサンプル]{
3120
+ 評価項目 製品A 製品B 製品C
3121
+ ----------------------------------------
3122
+ 機能が充分か ✓ ✓ .
3123
+ 価格が適切か . . ✓
3124
+ サポートがあるか ✓ . ✓
3125
+ //}
3126
+
3127
+ またセルの先頭が「@<code>{.}」で始まる場合は、「@<code>{..}」のように2つ書いてください。
3128
+ そうしないと先頭の「@<code>{.}」が消えてしまいます。
3129
+
3130
+ //list[][サンプル][widecharfit=on]{
3131
+ /@<nop>$$/table[tbl-sample9][セルの先頭が「@@<nop>$$<code>{.}」で始まる場合][headerrows=0]{
3132
+ 先頭に「.」が1つだけの場合 @<b>|.bashrc|
3133
+ 先頭に「.」が2つある場合 @<b>|..bashrc|
3134
+ /@<nop>$$/}
3135
+ //}
3136
+
3137
+
3138
+
3139
+ 表示結果は@<table>{tbl-sample9}を見てください。
3140
+
3141
+ //table[tbl-sample9][セルの先頭が「@<code>{.}」で始まる場合][headerrows=0]{
3142
+ 先頭に「.」が1つだけの場合 .bashrc
3143
+ 先頭に「.」が2つある場合 ..bashrc
3144
+ //}
3145
+
3146
+
3147
+ === 表示位置の指定
3148
+
3149
+ 表を表示する位置を、「@<code>{//table}」の第3引数で指定できます。
3150
+
3151
+ //list[][サンプル][]{
3152
+ /@<nop>$$/table[tbl-sample10][表示位置を指定][@<b>|pos=ht|]{
3153
+ ....
3154
+ /@<nop>$$/}
3155
+ //}
3156
+
3157
+
3158
+
3159
+ 指定できる文字は次の通りです。
3160
+ また複数の文字を指定できます。
3161
+
3162
+ //desclist[compact=on,indent=5zw]{
3163
+ //desc[pos=h][here(現在の場所)]
3164
+ //desc[pos=H][here forcedly(現在の場所に強制)]
3165
+ //desc[pos=t][top (ページ上部)]
3166
+ //desc[pos=b][bottom (ページ下部)]
3167
+ //desc[pos=p][page (その表だけのページ)]
3168
+ //}
3169
+
3170
+ ただし位置指定は、コラムの中では使えず、ノート以外のミニブロック(「@<code>|//info|」や「@<code>|//warning|」など)の中でも使えません。
3171
+ どちらの場合も、強制的に「@<code>|pos=H|」と同じ動作になります。
3172
+ これは@<LaTeX>{}の制約からくる仕様です。
3173
+
3174
+
3175
+ === 表のフォントサイズ
3176
+
3177
+ 表のフォントサイズを、「@<code>{//table}」の第3引数で指定できます。
3178
+ 表が大きくて1ページに収まらないとき使うといいでしょう@<fn>{dwrsy}。
3179
+
3180
+ //footnote[dwrsy][PDFでは表のフォントサイズがデフォルトでsmallになっています。そのため、「@<code>{//table[\][\][fontsize=small\]}」を指定しても小さくなりません。かわりに「@<code>{x-small}」を指定してください。]
3181
+
3182
+ //list[][サンプル][]{
3183
+ /@<nop>$$/table[tbl-sample11][フォントを小さく][@<b>|fontsize=small|]{
3184
+ Name Val Val Val
3185
+ ================================
3186
+ AAA 10 10 10
3187
+ BBB 100 100 100
3188
+ /@<nop>$$/}
3189
+
3190
+ /@<nop>$$/table[tbl-sample12][フォントをもっと小さく][@<b>|fontsize=x-small|]{
3191
+ Name Val Val Val
3192
+ ================================
3193
+ AAA 10 10 10
3194
+ BBB 100 100 100
3195
+ /@<nop>$$/}
3196
+
3197
+ /@<nop>$$/table[tbl-sample13][フォントをもーっと小さく][@<b>|fontsize=xx-small|]{
3198
+ Name Val Val Val
3199
+ ================================
3200
+ AAA 10 10 10
3201
+ BBB 100 100 100
3202
+ /@<nop>$$/}
3203
+ //}
3204
+
3205
+ //sampleoutputbegin[表示結果]
3206
+
3207
+ //table[tbl-sample11][フォントを小さく][fontsize=small]{
3208
+ Name Val Val Val
3209
+ ================================
3210
+ AAA 10 10 10
3211
+ BBB 100 100 100
3212
+ //}
3213
+
3214
+ //table[tbl-sample12][フォントをもっと小さく][fontsize=x-small]{
3215
+ Name Val Val Val
3216
+ ================================
3217
+ AAA 10 10 10
3218
+ BBB 100 100 100
3219
+ //}
3220
+
3221
+ //table[tbl-sample13][フォントをもーっと小さく][fontsize=xx-small]{
3222
+ Name Val Val Val
3223
+ ================================
3224
+ AAA 10 10 10
3225
+ BBB 100 100 100
3226
+ //}
3227
+
3228
+ //sampleoutputend
3229
+
3230
+
3231
+
3232
+ 指定できるフォントサイズは次の通りです。
3233
+
3234
+ //table[on1lz][表のフォントサイズ]{
3235
+ フォントサイズ 説明
3236
+ ====================
3237
+ medium 本文と同じサイズ
3238
+ small 少し小さく
3239
+ x-small 小さく
3240
+ xx-small かなり小さく
3241
+ large 少し大きく
3242
+ x-large 大きく
3243
+ xx-large かなり大きく
3244
+ //}
3245
+
3246
+
3247
+ === CSV形式の表
3248
+
3249
+ 「@<code>|//table|」の第3引数に「@<code>|csv=on|」を指定すると、表をCSV形式で書けます(Starter拡張)。
3250
+
3251
+ //needvspace[latex][6zw]
3252
+ //list[][サンプル][]{
3253
+ /@<nop>$$/table[tbl-csv1][CSVテーブル][@<b>|csv=on|]{
3254
+ Name,Val,Val,Val
3255
+ ================
3256
+ AAA,10,10,10
3257
+ BBB,100,100,100
3258
+ CCC,1000,1000,1000
3259
+ @<b>|//}|
3260
+ //}
3261
+
3262
+ //sampleoutputbegin[表示結果]
3263
+
3264
+ //table[tbl-csv1][CSVテーブル][csv=on]{
3265
+ Name,Val,Val,Val
3266
+ ================
3267
+ AAA,10,10,10
3268
+ BBB,100,100,100
3269
+ CCC,1000,1000,1000
3270
+ //}
3271
+
3272
+ //sampleoutputend
3273
+
3274
+
3275
+
3276
+ タブ区切りのときと同じように、12個以上の「@<code>{=}」でヘッダを区切ります。
3277
+
3278
+ CSV形式では、空欄はそのまま空欄として表示されます。
3279
+ 「@<code>{.}」を入力する必要はありません。
3280
+ また「@<code>{"..."}」のようにすると、1つのセルに複数行の文字列を書けます。
3281
+ ただし複数行で書いても表示は1行になります。
3282
+
3283
+ //list[][サンプル][]{
3284
+ /@<nop>$$/table[tbl-csv2][CSVテーブル][csv=on]{
3285
+ ぼくはか,@<b>|"|ぼくのとなりに
3286
+ 暗黒破壊神がいます@<b>|"|
3287
+ はめふら,@<b>|"|乙女ゲームの破滅フラグしかない
3288
+ 悪役令嬢に転生してしまった…@<b>|"|
3289
+ /@<nop>$$/}
3290
+ //}
3291
+
3292
+ //sampleoutputbegin[表示結果]
3293
+
3294
+ //table[tbl-csv2][CSVテーブル][csv=on]{
3295
+ ぼくはか,"ぼくのとなりに
3296
+ 暗黒破壊神がいます"
3297
+ はめふら,"乙女ゲームの破滅フラグしかない
3298
+ 悪役令嬢に転生してしまった…"
3299
+ //}
3300
+
3301
+ //sampleoutputend
3302
+
3303
+
3304
+
3305
+ 表示も複数行にしたい場合は、明示的に改行します。
3306
+
3307
+ //list[][サンプル][]{
3308
+ /@<nop>$$/table[tbl-csv3][CSVテーブル][csv=on]{
3309
+ ぼくはか,"ぼくのとなりに@<b>|@@<nop>$$<br>{}|
3310
+ 暗黒破壊神がいます"
3311
+ はめふら,"乙女ゲームの破滅フラグしかない@<b>|@@<nop>$$<br>{}|
3312
+ 悪役令嬢に転生してしまった…"
3313
+ /@<nop>$$/}
3314
+ //}
3315
+
3316
+ //sampleoutputbegin[表示結果]
3317
+
3318
+ //table[tbl-csv3][CSVテーブル][csv=on]{
3319
+ ぼくはか,"ぼくのとなりに@<br>{}
3320
+ 暗黒破壊神がいます"
3321
+ はめふら,"乙女ゲームの破滅フラグしかない@<br>{}
3322
+ 悪役令嬢に転生してしまった…"
3323
+ //}
3324
+
3325
+ //sampleoutputend
3326
+
3327
+
3328
+
3329
+
3330
+ === 外部ファイルを読み込む
3331
+
3332
+ 「@<code>|//table|」の第3引数に「@<code>|file=@<i>{filename}|」を指定すると、外部ファイルを読み込んでそれを表(テーブル)にできます(Starter拡張)。
3333
+
3334
+ * ファイル名の拡張子が「@<code>{.csv}」なら、CSV形式で読み込まれます。
3335
+ * 第3引数に「@<code>{csv=on}」が指定された場合も、CSV形式で読み込まれます。
3336
+ * それ以外の場合は、タブ区切り形式で読み込まれます。
3337
+
3338
+ 次の例では、「@<code>|data/data1.csv|」というファイルを読み込んで表にしています。
3339
+ ブロック(「@<code>|{|」から「@<code>|//}|」まで)は省略できないので注意してください。
3340
+
3341
+ //list[][サンプル][]{
3342
+ /@<nop>$$/table[tbl-csv4][サンプルデータ][@<b>|file=data/data1.csv|]{
3343
+ /@<nop>$$/}
3344
+ //}
3345
+
3346
+
3347
+
3348
+ 文字コードを指定して読み込むこともできます。
3349
+ 指定できる文字コードは、「utf-8」「sjs」「shift_jis」「cp932」などです。
3350
+ デフォルトはUTF-8です。
3351
+
3352
+ //list[][サンプル][]{
3353
+ /@<nop>$$/table[tbl-csv5][サンプルデータ][file=data/data1.csv, @<b>|encoding=sjis|]{
3354
+ /@<nop>$$/}
3355
+ //}
3356
+
3357
+
3358
+
3359
+
3360
+ === ヘッダの行数を指定する
3361
+
3362
+ 今までは、ヘッダを指定するには12個以上の「@<code>{=}」や「@<code>{-}」からなる区切り行を挿入する必要がありました。
3363
+ しかし一般的なCSVファイルでは、このような区切り行は入れず、かわりに最初の行をヘッダ行と見なすことがほとんとではないでしょうか。
3364
+
3365
+ 「@<code>|//table|」では第3引数に「@<code>|headerrows=1|」を指定すると、区切り行がなくても最初の行をヘッダとして扱ってくれます。
3366
+
3367
+ //list[][サンプル][]{
3368
+ /@<nop>$$/table[tbl-csv6][先頭行をヘッダとみなす][csv=on,@<b>|headerrows=1|]{
3369
+ Name,Val,Val,Val
3370
+ AAA,10,10,10
3371
+ BBB,100,100,100
3372
+ CCC,1000,1000,1000
3373
+ /@<nop>$$/}
3374
+ //}
3375
+
3376
+ //sampleoutputbegin[表示結果]
3377
+
3378
+ //table[tbl-csv6][先頭行をヘッダとみなす][csv=on,headerrows=1]{
3379
+ Name,Val,Val,Val
3380
+ AAA,10,10,10
3381
+ BBB,100,100,100
3382
+ CCC,1000,1000,1000
3383
+ //}
3384
+
3385
+ //sampleoutputend
3386
+
3387
+
3388
+
3389
+ また「@<code>|headerrows=@<b>{0}|」を指定すると、ヘッダ行のない表として表示されます。
3390
+
3391
+ //list[][サンプル][]{
3392
+ /@<nop>$$/table[tbl-csv7][3×3の魔方陣][csv=on,@<b>|headerrows=0|]{
3393
+ 6,1,8
3394
+ 7,5,3
3395
+ 2,9,4
3396
+ /@<nop>$$/}
3397
+ //}
3398
+
3399
+ //sampleoutputbegin[表示結果]
3400
+
3401
+ //table[tbl-csv7][3×3の魔方陣][csv=on,headerrows=0]{
3402
+ 6,1,8
3403
+ 7,5,3
3404
+ 2,9,4
3405
+ //}
3406
+
3407
+ //sampleoutputend
3408
+
3409
+
3410
+
3411
+
3412
+ === ヘッダのカラム数を指定する
3413
+
3414
+ 「@<code>|//table[][][headercols=2]|」とすると、左から2つのカラムをヘッダとして表示します。
3415
+
3416
+ //list[][サンプル][]{
3417
+ /@<nop>$$/table[tbl-csv8][左2つのカラムをヘッダとみなす][csv=on,@<b>|headercols=2|]{
3418
+ Name,Val,Val,Val
3419
+ AAA,10,10,10
3420
+ BBB,100,100,100
3421
+ CCC,1000,1000,1000
3422
+ /@<nop>$$/}
3423
+ //}
3424
+
3425
+ //sampleoutputbegin[表示結果]
3426
+
3427
+ //table[tbl-csv8][左2つのカラムをヘッダとみなす][csv=on,headercols=2]{
3428
+ Name,Val,Val,Val
3429
+ AAA,10,10,10
3430
+ BBB,100,100,100
3431
+ CCC,1000,1000,1000
3432
+ //}
3433
+
3434
+ //sampleoutputend
3435
+
3436
+
3437
+
3438
+ このオプションは、ヘッダの行数を指定する「@<code>|headercols=1|」と共存できます。
3439
+
3440
+ //list[][サンプル][]{
3441
+ /@<nop>$$/table[tbl-csv9][上と左をヘッダにする][csv=on,@<b>|headerrows=1,headercols=1|]{
3442
+ Name,Val,Val,Val
3443
+ AAA,10,10,10
3444
+ BBB,100,100,100
3445
+ CCC,1000,1000,1000
3446
+ /@<nop>$$/}
3447
+ //}
3448
+
3449
+ //sampleoutputbegin[表示結果]
3450
+
3451
+ //table[tbl-csv9][上と左をヘッダにする][csv=on,headerrows=1,headercols=1]{
3452
+ Name,Val,Val,Val
3453
+ AAA,10,10,10
3454
+ BBB,100,100,100
3455
+ CCC,1000,1000,1000
3456
+ //}
3457
+
3458
+ //sampleoutputend
3459
+
3460
+
3461
+
3462
+
3463
+ === 表を画像で用意する
3464
+
3465
+ Re:VIEWやStarterでは、あまり複雑な表は作成できません。
3466
+ 複雑な表は画像として用意し、それを読み込むのがいいでしょう。
3467
+
3468
+ 「@<code>|//imgtable|」コマンドを使うと、画像を表として読み込みます。
3469
+ 使い方は「@<code>|//image|」と同じです。
3470
+
3471
+ //needvspace[latex][6zw]
3472
+ //list[][サンプル][]{
3473
+ @<b>|//imgtable[order-detail][複雑な表の例:注文詳細][scale=0.5]{|
3474
+ @<b>|//}|
3475
+ //}
3476
+
3477
+ //sampleoutputbegin[表示結果]
3478
+
3479
+ //imgtable[order-detail][複雑な表の例:注文詳細][scale=0.5]{
3480
+ //}
3481
+
3482
+ //sampleoutputend
3483
+
3484
+
3485
+
3486
+
3487
+
3488
+ =={sec-mathexpr} 数式
3489
+
3490
+
3491
+ === 数式の書き方
3492
+
3493
+ 数式は「@<code>|//texequation[ラベル][説明文]{ ... //}|」のように書きます。
3494
+
3495
+ //list[][サンプル][]{
3496
+ @<b>|//texequation[euler1][オイラーの公式]{|
3497
+ e^{i\theta} = \sin{\theta} + i\cos{\theta}
3498
+ @<b>|//}|
3499
+ //}
3500
+
3501
+ //sampleoutputbegin[表示結果]
3502
+
3503
+ //texequation[euler1][オイラーの公式]{
3504
+ e^{i\theta} = \sin{\theta} + i\cos{\theta}
3505
+ //}
3506
+
3507
+ //sampleoutputend
2253
3508
 
2254
3509
 
2255
3510
 
2256
3511
  数式の書き方が独特に見えますが、これは@<LaTeX>{}での書き方です。
2257
3512
  @<LaTeX>{}における数式の書き方は、@<href>{https://en.wikibooks.org/wiki/LaTeX/Mathematics, Wikibooks}など他の資料をあたってください。
2258
3513
 
2259
- 数式は、ラベルを使って「@<code>|@@<nop>{}<eq>{ラベル}|」のように参照できます。
2260
- たとえば「@<code>|@@<nop>{}<eq>{euler1}|」とすると「@<eq>{euler1}」となります。
3514
+ 数式は、ラベルを使って「@<code>|@@<nop>{}<eq>{ラベル}|」のように参照できます。
3515
+ たとえば「@<code>|@@<nop>{}<eq>{euler1}|」とすると「@<eq>{euler1}」となります。
3516
+
3517
+ ラベルや説明文がいらなければ、「@<code>|//texequation{ ... //}|」のように省略できます。
3518
+
3519
+
3520
+ === 数式を文中に埋め込む
3521
+
3522
+ 数式を文中に埋め込むには「@<code>{@@<nop>{}<m>$...$}」を使います。
3523
+
3524
+ //list[][サンプル][]{
3525
+ オイラーの公式は@<b>|@@<nop>$$<m>$e^{i\theta} = \sin{\theta} + i\cos{\theta}$|です。
3526
+ 特に、@<b>|@@<nop>$$<m>$\theta = \pi$|のときは@<b>|@@<nop>$$<m>$e^{i\pi} = -1$|となり、これはオイラーの等式と呼ばれます。
3527
+ //}
3528
+
3529
+ //sampleoutputbegin[表示結果]
3530
+
3531
+ オイラーの公式は@<m>$e^{i\theta} = \sin{\theta} + i\cos{\theta}$です。
3532
+ 特に、@<m>$\theta = \pi$のときは@<m>$e^{i\pi} = -1$となり、これはオイラーの等式と呼ばれます。
3533
+
3534
+ //sampleoutputend
3535
+
3536
+
3537
+
3538
+
3539
+ === 数式のフォント
3540
+
3541
+ 数式中では、アルファベットはイタリック体になります。
3542
+ これは数式の伝統です。
3543
+ 次の例で、「@<code>|@@<nop>{}<m>$...$|」を使った場合と使わない場合を比べてください。
3544
+
3545
+ //list[][サンプル][]{
3546
+ * @<b>|@@<nop>$$<m>$y = f(x) + k$| ← 使った場合
3547
+ * @<b>|y = f(x) + k| ← 使わなかった場合
3548
+ //}
3549
+
3550
+ //sampleoutputbegin[表示結果]
3551
+
3552
+ * @<m>$y = f(x) + k$ ← 使った場合
3553
+ * y = f(x) + k ← 使わなかった場合
3554
+
3555
+ //sampleoutputend
3556
+
3557
+
3558
+
3559
+
3560
+ その他、Re:VIEWにおける数式の詳細は、Re:VIEWの@<href>{https://github.com/kmuto/review/blob/master/doc/format.ja.md#tex-%E5%BC%8F, Wiki}を参照してください。
3561
+
3562
+
3563
+
3564
+ =={sec-talk} 会話形式
3565
+
3566
+ Starterでは、会話形式の文章を書けます@<fn>{8a7k9}(Starter拡張)。
3567
+
3568
+ //footnote[8a7k9][LINEのようなチャット形式はサポートしていません。]
3569
+
3570
+
3571
+ === アイコン画像を使う場合
3572
+
3573
+ 会話形式は次のようにして書きます。
3574
+
3575
+ * 全体を「@<code>|//talklist{ ... //}|」で囲う。
3576
+ * 発言を「@<code>|//talk[]{ ... //}|」で囲う。
3577
+ * 「@<code>|//talk|」の第1引数にアイコン画像ファイルを指定する(「@<code>|//image|」の第1引数と同じ)。
3578
+
3579
+ //list[][サンプル][]{
3580
+ @<b>|//talklist|{
3581
+ @<b>|//talk[avatar-b]|{
3582
+ できもしないことをおっしゃらないでください。
3583
+ /@<nop>$$/}
3584
+ @<b>|//talk[avatar-g]|{
3585
+ 不可能なことを言い立てるのは貴官の方だ。
3586
+ それも安全な場所から動かずにな。
3587
+ /@<nop>$$/}
3588
+ @<b>|//talk[avatar-b]|{
3589
+ ……小官を侮辱なさるのですか。
3590
+ /@<nop>$$/}
3591
+ @<b>|//talk[avatar-g]|{
3592
+ 貴官は自己の才能を示すのに、弁舌ではなく実績をもってすべきだろう。
3593
+ 他人に命令するようなことが自分にもできるかどうか、やってみたらどうだ。
3594
+ /@<nop>$$/}
3595
+ /@<nop>$$/}
3596
+ //}
3597
+
3598
+ //sampleoutputbegin[表示結果]
3599
+
3600
+ //talklist{
3601
+ //talk[avatar-b]{
3602
+ できもしないことをおっしゃらないでください。
3603
+ //}
3604
+ //talk[avatar-g]{
3605
+ 不可能なことを言い立てるのは貴官の方だ。
3606
+ それも安全な場所から動かずにな。
3607
+ //}
3608
+ //talk[avatar-b]{
3609
+ ……小官を侮辱なさるのですか。
3610
+ //}
3611
+ //talk[avatar-g]{
3612
+ 貴官は自己の才能を示すのに、弁舌ではなく実績をもってすべきだろう。
3613
+ 他人に命令するようなことが自分にもできるかどうか、やってみたらどうだ。
3614
+ //}
3615
+ //}
3616
+
3617
+ //sampleoutputend
3618
+
3619
+
3620
+
3621
+ 発言部分は自動的にカギ括弧でくくられます。
3622
+ これを止めるには、設定ファイル「@<file>|config-starter.yml|」を変更します。
3623
+ またアイコン画像の大きさも変更できます。
3624
+ 詳しくは後述します。
3625
+
3626
+ //note[白黒印刷でも判別できる画像を使う]{
3627
+ このサンプルでは、色が違うだけのアイコン画像を使っています。
3628
+ そのせいで、白黒印刷すると誰が誰だか判別できなくなります。
3629
+ もし白黒印刷するなら、色に頼らず判別できるようなアイコン画像を使いましょう。
3630
+ //}
3631
+
3632
+
3633
+ === アイコン画像を使わない場合
3634
+
3635
+ 「@<code>|//talk|」の第1引数にアイコン画像を指定しない場合は、第2引数に名前を指定します。
3636
+
3637
+ //list[][サンプル][]{
3638
+ /@<nop>$$/talklist{
3639
+ @<b>|//talk[][A准将]|{
3640
+ できもしないことをおっしゃらないでください。
3641
+ /@<nop>$$/}
3642
+ @<b>|//talk[][B提督]|{
3643
+ 不可能なことを言い立てるのは貴官の方だ。
3644
+ それも安全な場所から動かずにな。
3645
+ /@<nop>$$/}
3646
+ @<b>|//talk[][A准将]|{
3647
+ ……小官を侮辱なさるのですか。
3648
+ /@<nop>$$/}
3649
+ @<b>|//talk[][B提督]|{
3650
+ 貴官は自己の才能を示すのに、弁舌ではなく実績をもってすべきだろう。
3651
+ 他人に命令するようなことが自分にもできるかどうか、やってみたらどうだ。
3652
+ /@<nop>$$/}
3653
+ /@<nop>$$/}
3654
+ //}
3655
+
3656
+ //sampleoutputbegin[表示結果]
3657
+
3658
+ //talklist{
3659
+ //talk[][A准将]{
3660
+ できもしないことをおっしゃらないでください。
3661
+ //}
3662
+ //talk[][B提督]{
3663
+ 不可能なことを言い立てるのは貴官の方だ。
3664
+ それも安全な場所から動かずにな。
3665
+ //}
3666
+ //talk[][A准将]{
3667
+ ……小官を侮辱なさるのですか。
3668
+ //}
3669
+ //talk[][B提督]{
3670
+ 貴官は自己の才能を示すのに、弁舌ではなく実績をもってすべきだろう。
3671
+ 他人に命令するようなことが自分にもできるかどうか、やってみたらどうだ。
3672
+ //}
3673
+ //}
3674
+
3675
+ //sampleoutputend
3676
+
3677
+
3678
+
3679
+ 名前が長い場合は、会話の1行目だけ自動的に開始位置がずれます。
3680
+
3681
+ //list[][サンプル][]{
3682
+ /@<nop>$$/talklist{
3683
+ /@<nop>$$/talk[][@<b>|ビュコック提督|]{
3684
+ 貴官は自己の才能を示すのに、弁舌ではなく実績をもってすべきだろう。
3685
+ 他人に命令するようなことが自分にもできるかどうか、やってみたらどうだ。
3686
+ /@<nop>$$/}
3687
+ /@<nop>$$/}
3688
+ //}
3689
+
3690
+ //sampleoutputbegin[表示結果]
3691
+
3692
+ //talklist{
3693
+ //talk[][ビュコック提督]{
3694
+ 貴官は自己の才能を示すのに、弁舌ではなく実績をもってすべきだろう。
3695
+ 他人に命令するようなことが自分にもできるかどうか、やってみたらどうだ。
3696
+ //}
3697
+ //}
3698
+
3699
+ //sampleoutputend
3700
+
3701
+
3702
+
3703
+
3704
+ アイコン画像と名前の両方を指定することは、現在はできません。
3705
+ できるようにして欲しい人は、相談してください。
3706
+
3707
+
3708
+ === コンパクトな書き方
3709
+
3710
+ ブロック本体のかわりに、「@<code>|//talk|」の第3引数に会話文を書けます。
3711
+ こうするとブロック本体を省略できるので、コンパクトな書き方になります。
3712
+
3713
+ また第3引数を使わない書き方と混在できます。
3714
+ 文章が短い場合だけ第3引数を使い、ある程度の長さがある場合はブロック本体に書くのがいいでしょう。
3715
+
3716
+ //list[][サンプル][]{
3717
+ /@<nop>$$/talklist{
3718
+ /@<nop>$$/talk[avatar-b][]@<b>|[|できもしないことをおっしゃらないでください。@<b>|]|
3719
+ /@<nop>$$/talk[avatar-g][]@<b>|[|不可能なことを言い立てるのは貴官の方だ。それも安全な場所から動かずにな。@<b>|]|
3720
+ /@<nop>$$/talk[avatar-b][]@<b>|[|……小官を侮辱なさるのですか。@<b>|]|
3721
+ /@<nop>$$/talk[avatar-g]{
3722
+ 貴官は自己の才能を示すのに、弁舌ではなく実績をもってすべきだろう。
3723
+ 他人に命令するようなことが自分にもできるかどうか、やってみたらどうだ。
3724
+ /@<nop>$$/}
3725
+ /@<nop>$$/}
3726
+ //}
3727
+
3728
+ //sampleoutputbegin[表示結果]
3729
+
3730
+ //talklist{
3731
+ //talk[avatar-b][][できもしないことをおっしゃらないでください。]
3732
+ //talk[avatar-g][][不可能なことを言い立てるのは貴官の方だ。それも安全な場所から動かずにな。]
3733
+ //talk[avatar-b][][……小官を侮辱なさるのですか。]
3734
+ //talk[avatar-g]{
3735
+ 貴官は自己の才能を示すのに、弁舌ではなく実績をもってすべきだろう。
3736
+ 他人に命令するようなことが自分にもできるかどうか、やってみたらどうだ。
3737
+ //}
3738
+ //}
3739
+
3740
+ //sampleoutputend
2261
3741
 
2262
- ラベルや説明文がいらなければ、「@<code>|//texequation{ ... //}|」のように省略できます。
2263
3742
 
2264
3743
 
2265
- === 数式を文中に埋め込む
3744
+ 会話文を第3引数に書く場合は、「@<code>|]|」を「@<code>|\]|」のように書いてください@<fn>{mk3fo}。
3745
+ そうしないとコンパイルエラーになるでしょう。
2266
3746
 
2267
- 数式を文中に埋め込むには「@<code>{@@<nop>{}<m>$...$}」を使います。
3747
+ //footnote[mk3fo][これは脚注を書くときと同じ制約です。]
2268
3748
 
2269
- //list[][サンプル]{
2270
- オイラーの公式は@<b>|@@<nop>$$<m>$e^{i\theta} = \sin{\theta} + i\cos{\theta}$|です。
2271
- 特に、@<b>|@@<nop>$$<m>$\theta = \pi$|のときは@<b>|@@<nop>$$<m>$e^{i\pi} = -1$|となり、これはオイラーの等式と呼ばれます。
3749
+
3750
+ === 短縮名
3751
+
3752
+ 大量の会話を入力する場合、いちいちアイコン画像や名前を入力するのは面倒です。
3753
+ そこでStarterでは、会話に使うアイコン画像や名前を短縮名で登録できる機能を用意しました。
3754
+
3755
+ まず、「@<file>{config-starter.yml}」に短縮名を登録します。
3756
+ すでに以下のような設定がされているので、それを上書きするといいでしょう。
3757
+
3758
+ //list[][「@<file>{config-starter.yml}」に短縮名を登録]{
3759
+ talk_shortcuts:
3760
+ "b1": {image: "avatar-b"} # アイコン画像を使う場合
3761
+ "g1": {image: "avatar-g"} # アイコン画像を使う場合
3762
+ #"b1": {name: "アリス"} # アイコン画像を使わない場合
3763
+ #"g1": {name: "ボブ"} # アイコン画像を使わない場合
3764
+ //}
3765
+
3766
+ そして、原稿では「@<code>|//t[短縮名]|」のように書きます。
3767
+ たとえば「@<code>|//t[b1]|」は「@<code>|//talk[avatar-b]|」の短縮形となります。
3768
+
3769
+ 前の項のサンプルを、短縮名を使って書いてみましょう。
3770
+
3771
+ //list[][サンプル][]{
3772
+ /@<nop>$$/talklist{
3773
+ @<b>|//t[b1]|[できもしないことをおっしゃらないでください。]
3774
+ @<b>|//t[g1]|[不可能なことを言い立てるのは貴官の方だ。それも安全な場所から動かずにな。]
3775
+ @<b>|//t[b1]|[……小官を侮辱なさるのですか。]
3776
+ @<b>|//t[g1]|{
3777
+ 貴官は自己の才能を示すのに、弁舌ではなく実績をもってすべきだろう。
3778
+ 他人に命令するようなことが自分にもできるかどうか、やってみたらどうだ。
3779
+ /@<nop>$$/}
3780
+ /@<nop>$$/}
2272
3781
  //}
2273
3782
 
2274
3783
  //sampleoutputbegin[表示結果]
2275
3784
 
2276
- オイラーの公式は@<m>$e^{i\theta} = \sin{\theta} + i\cos{\theta}$です。
2277
- 特に、@<m>$\theta = \pi$のときは@<m>$e^{i\pi} = -1$となり、これはオイラーの等式と呼ばれます。
3785
+ //talklist{
3786
+ //t[b1][できもしないことをおっしゃらないでください。]
3787
+ //t[g1][不可能なことを言い立てるのは貴官の方だ。それも安全な場所から動かずにな。]
3788
+ //t[b1][……小官を侮辱なさるのですか。]
3789
+ //t[g1]{
3790
+ 貴官は自己の才能を示すのに、弁舌ではなく実績をもってすべきだろう。
3791
+ 他人に命令するようなことが自分にもできるかどうか、やってみたらどうだ。
3792
+ //}
3793
+ //}
2278
3794
 
2279
3795
  //sampleoutputend
2280
3796
 
2281
3797
 
2282
3798
 
3799
+ 短縮名を使うと、アイコン画像や登場人物名を変更するのも簡単になります。
3800
+ 変更の発生が予想される場合も、短縮機能を使うといいでしょう。
2283
3801
 
2284
- === 数式のフォント
2285
3802
 
2286
- 数式中では、アルファベットはイタリック体になります。
2287
- これは数式の伝統です。
2288
- 次の例で、「@<code>|@@<nop>{}<m>$...$|」を使った場合と使わない場合を比べてください。
3803
+ === カスタマイズ
2289
3804
 
2290
- //list[][サンプル]{
2291
- * @<b>|@@<nop>$$<m>$y = f(x) + k$| ← 使った場合
2292
- * @<b>|y = f(x) + k| ← 使わなかった場合
3805
+ 「@<code>|//talklist|」の第1引数にオプションを指定すると、会話形式の表示をカスタマイズできます。
3806
+ たとえば次の例では、アイコン画像の幅を全角2文字分にし、会話文のインデント幅を全角4文字分にしています。
3807
+
3808
+ //list[][サンプル][]{
3809
+ /@<nop>$$/talklist[@<b>|imagewidth=2zw,indent=4zw|]{
3810
+ /@<nop>$$/talk[avatar-g]{
3811
+ 貴官は自己の才能を示すのに、弁舌ではなく実績をもってすべきだろう。
3812
+ 他人に命令するようなことが自分にもできるかどうか、やってみたらどうだ。
3813
+ /@<nop>$$/}
3814
+ /@<nop>$$/}
2293
3815
  //}
2294
3816
 
2295
3817
  //sampleoutputbegin[表示結果]
2296
3818
 
2297
- * @<m>$y = f(x) + k$ ← 使った場合
2298
- * y = f(x) + k ← 使わなかった場合
3819
+ //talklist[imagewidth=2zw,indent=4zw]{
3820
+ //talk[avatar-g]{
3821
+ 貴官は自己の才能を示すのに、弁舌ではなく実績をもってすべきだろう。
3822
+ 他人に命令するようなことが自分にもできるかどうか、やってみたらどうだ。
3823
+ //}
3824
+ //}
2299
3825
 
2300
3826
  //sampleoutputend
2301
3827
 
2302
3828
 
2303
3829
 
3830
+ 指定できるオプションは@<table>{wkajz}の通りです。
3831
+ これらは「@<code>|classname|」を除いて@<LaTeX>{}用であり、HTMLには「@<code>|classname|」しか適用されません。
3832
+ またオプションを指定できるのは「@<code>|//talklist|」だけであり、「@<code>|//talk|」には指定できません。
2304
3833
 
2305
- その他、Re:VIEWにおける数式の詳細は、Re:VIEWの@<href>{https://github.com/kmuto/review/blob/master/doc/format.ja.md#tex-%E5%BC%8F, Wiki}を参照してください。
3834
+ //tsize[latex][|lcl|]
3835
+ //table[wkajz][「@<code>|//talklist|」のオプション][hline=off]{
3836
+ オプション名 デフォルト値 説明
3837
+ --------------------
3838
+ @<code>{indent} @<code>{6zw} 本文左端から会話部分までの幅
3839
+ @<code>{separator} @<code>{:} 名前と会話文との区切り文字列
3840
+ @<code>{imagewidth} @<code>{4zw} アイコン画像の幅
3841
+ @<code>{imageheight} . 画像高さ(通常は無指定でよい)
3842
+ @<code>{imageborder} @<code>{off} 「@<code>|on|」なら画像に枠線をつける
3843
+ @<code>{needvspace} @<code>{4zw} 必要な空きがなければ改ページ
3844
+ @<code>{itemmargin} @<code>{1mm} 会話項目間の空き
3845
+ @<code>{listmargin} @<code>{4mm} 会話リストの最初と最後の空き
3846
+ @<code>{itemstart} @<code>{「 } 会話文の先頭につける文字列
3847
+ @<code>{itemend} @<code>{」} 会話文の最後につける文字列
3848
+ @<code>{classname} . HTMLタグに含めるクラス名
3849
+ //}
3850
+
3851
+ @<table>{wkajz}のデフォルト値は、設定ファイル「@<file>|config-starter.yml|」で設定されています。
3852
+ 必要に応じて変更してください。
3853
+
3854
+ //list[][@<file>|config-starter.yml|]{
3855
+ ## 会話形式(`//talklist`)のデフォルトオプション
3856
+ ## (注:YAMLでは on は true と同じ、off は false と同じ)
3857
+ talklist_default_options:
3858
+ indent: 6zw # 本文左端から会話部分までの幅
3859
+ separator: ":" # 名前と会話文との区切り文字列
3860
+ imagewidth: 4zw # アイコン画像の幅
3861
+ imageheight: # 画像高さ(通常はnullでよい)
3862
+ imageborder: off # on なら画像に枠線をつける
3863
+ needvspace: 4zw # 必要な空きがなければ改ページ
3864
+ itemmargin: 1mm # 会話項目間の空き
3865
+ listmargin: 0.5zw # 会話リストの最初と最後の空き
3866
+ itemstart: "「" # 会話文の先頭につける文字列
3867
+ itemend: "」" # 会話文の最後につける文字列
3868
+ classname: # HTMLタグに含めるクラス名
3869
+ //}
3870
+
3871
+ たとえばアイコン画像の幅を全角3文字分にするには、次のように変更します。
3872
+
3873
+ //list[][@<file>|config-starter.yml|]{
3874
+ talklist_default_options:
3875
+ @<weak>|#...(省略)...|
3876
+ imagewidth: @<b>{3zw} # アイコン画像の幅
3877
+ @<weak>|#...(省略)...|
3878
+ //}
3879
+
3880
+ また会話文にカギ括弧をつけないようにするには、次のように変更します。
3881
+
3882
+ //list[][@<file>|config-starter.yml|]{
3883
+ talklist_default_options:
3884
+ @<weak>|#...(省略)...|
3885
+ itemstart: @<b>{""} # 会話文の先頭につける文字列
3886
+ itemend: @<b>{""} # 会話文の最後につける文字列
3887
+ @<weak>|#...(省略)...|
3888
+ //}
3889
+
3890
+ なお会話形式に関する@<LaTeX>{}マクロは「@<file>|sty/starter-talk.sty|」に定義されています。
3891
+ 必要であれば、マクロを「@<file>|sty/mystyle.sty|」にコピーしてから変更してください。
3892
+
3893
+ HTMLの場合は、「@<file>|css/webstyle.css|」をカスタマイズしてください。
3894
+ クラス名が「@<code>|.talk-xxx|」のエントリが会話形式に関するルールです。
3895
+
3896
+ //list[][@<file>|css/webstyle.css|]{
3897
+ .talk-image {
3898
+ width: 60px; /* アイコン画像の表示幅 */
3899
+ }
3900
+ .talk-name {
3901
+ font-family: sans-serif; /* 名前のフォント */
3902
+ font-weight: normal;
3903
+ }
3904
+ .talk-text {
3905
+ display: block;
3906
+ margin-left: 100px; /* 会話文のインデント幅 */
3907
+ padding-top: 5px;
3908
+ }
3909
+ ....(省略)....
3910
+ //}
3911
+
3912
+
3913
+
3914
+ =={sec-term} 用語、索引
3915
+
3916
+ たいていの本では、巻末に索引が用意されています(@<img>{index-page})。
3917
+ Starterでは、指定した用語を索引に登録できます。
3918
+ また用語に親子関係を持たせたり、転送先の用語を指定できます。
3919
+
3920
+ //image[index-page][索引ページ][width=80%, border=on]
3921
+
3922
+
3923
+ === 索引機能をオンにする
3924
+
3925
+ 索引を作る機能は、デフォルトではオフになっています。
3926
+ オンにするには、@<file>{config.yml}の370行目ぐらいにある「@<code>|makeindex: true|」を設定してください。
3927
+
3928
+ なお索引に用語が何も登録されていない場合、索引機能をオンにするとPDFのコンパイルがエラーになります。
3929
+ 1つでもいいから本文に用語を指定してから、索引機能をオンにしてください。
3930
+
3931
+ ややこしいのですが、索引機能がオフでも用語を索引に登録できます。
3932
+ つまり、こういうことです:
3933
+
3934
+ * 索引機能がオンのとき、索引に用語が何も登録されていないとエラー。
3935
+ * 索引機能がオフのとき、索引に用語を登録してもエラーにならない。
3936
+
3937
+ 索引は@<LaTeX>{}の機能を使って生成しているので、索引機能は今のところPDFでのみサポートしています。
3938
+ また索引機能をオンにすると、@<LaTeX>{}のコンパイル回数が増えてコンパイルに時間がかかるようになります。
3939
+ 執筆中は索引機能をオフにし、完成間近になったらオンにするといいでしょう。
3940
+
3941
+
3942
+ === 用語の書き方
3943
+
3944
+ 用語の書き方は次の通りです。
3945
+
3946
+ * 初めて登場した用語は「@<code>|@@<nop>{}<term>{用語名((よみかた))}|」のように書きます。
3947
+ すると用語名がゴシック体で表示され、かつ巻末の索引に載ります。
3948
+ * 再登場した用語は「@<code>|@@<nop>{}<idx>{用語名((よみかた))}|」のように書きます。
3949
+ すると索引には載るけど、ゴシック体にはなりません。
3950
+ * 「@<code>|@@<nop>{}<hidx>{用語名((よみかた))}|」(hidden index)とすると、索引に載るけど本文には何も表示されません。
3951
+ * 用語名が漢字を含まない場合(つまりひらがなやカタカナや英数字だけの場合)は、読み方を省略して「@<code>|@@<nop>{}<term>{用語名}|」のように書けます。
3952
+ * 索引に登録せずゴシック体で表示したいだけのときは、「@<code>|@@<nop>{}<termnoidx>{用語名}|」と書きます。
3953
+ 「@<code>|@@<nop>{}<hidx>{}|」と組み合わせて使うことを想定しています。
3954
+ 索引に登録しないので、よみがなは含めないでください。
3955
+
3956
+ //list[][サンプル][]{
3957
+ @<b>|@@<nop>$$<term>|{アンジェ@<b>|(|@<b>|(|あんじぇ@<b>|)|@<b>|)|}。
3958
+ @<b>|@@<nop>$$<idx>|{侍従長@<b>|(|@<b>|(|じじゅうちょう@<b>|)|@<b>|)|}。
3959
+ @<b>|@@<nop>$$<term>|{Cボール}。
3960
+ //}
3961
+
3962
+ //sampleoutputbegin[表示結果]
3963
+
3964
+ @<term>{アンジェ((あんじぇ))}。
3965
+ @<idx>{侍従長((じじゅうちょう))}。
3966
+ @<term>{Cボール}。
3967
+
3968
+ //sampleoutputend
3969
+
3970
+
3971
+
3972
+ この例だと、「アンジェ」と「Cボール」は@<code>|@@<nop>{}<term>{}|を使っているのでゴシック体、「内務卿」は@<code>|@@<nop>{}<idx>{}|を使っているので本文と同じ明朝体のままです。
3973
+
3974
+ 用語には他のインライン命令を含められます。
3975
+ その場合、必ず「@<code>$@@<nop>{}<term>@<b>{|}@@<nop>{}<xxx>{...}@<b>{|}$」のように書いてください(これは実装上の都合です)。
3976
+ 「@<code>$@@<nop>{}<term>@<b>|{|@@<nop>{}<xxx>{...}@<b>|}|$」だとエラーになります。
3977
+
3978
+ //list[][サンプル][]{
3979
+ @@<nop>$$<term>|@@<nop>$$<ruby>{鹿威, ししおど}し((ししおどし))|。
3980
+ @@<nop>$$<term>|@@<nop>$$<ruby>{黒星, くろぼし}@@<nop>$$<ruby>{紅白, こうはく}((くろぼしこうはく))|。
3981
+ //}
3982
+
3983
+ //sampleoutputbegin[表示結果]
3984
+
3985
+ @<term>|@<ruby>{鹿威, ししおど}し((ししおどし))|。
3986
+ @<term>|@<ruby>{黒星, くろぼし}@<ruby>{紅白, こうはく}((くろぼしこうはく))|。
3987
+
3988
+ //sampleoutputend
3989
+
3990
+
3991
+
3992
+ 本文では用語にルビをつけたいけど索引ではつけたくないなら、「@<code>|@@<nop>{}<hidx>{}|」を使うといいでしょう。
3993
+
3994
+ //list[][サンプル][]{
3995
+ @@<nop>$$<termnoidx>|@@<nop>$$<ruby>{鹿威, ししおど}し|@<b>|@@<nop>$$<hidx>|{鹿威し((ししおどし))}。
3996
+ @@<nop>$$<ruby>{黒星, くろぼし}@@<nop>$$<ruby>{紅白, こうはく}@<b>|@@<nop>$$<hidx>|{黒星紅白((くろぼしこうはく))}。
3997
+ //}
3998
+
3999
+
4000
+
4001
+
4002
+ === 親子関係にある用語
4003
+
4004
+ 用語に親子関係がある場合、索引でそのように表示できます。
4005
+ そのためには用語を「@<code>|<<>>|」で区切ります。
4006
+
4007
+ たとえば2つの用語「ケイバーライト」と「ケイバーライト症候群」がある場合は、前者を親項目、後者を子項目にして索引に登録できます。
4008
+ また「アルビオン王国」「アルビオン共和国」「アルビオン王立航空軍」という3つの用語では、共通する「アルビオン」をあたかも存在する用語かのように見立てて索引に登録できます。
4009
+
4010
+ //list[][サンプル][]{
4011
+ @@<nop>$$<term>{ケイバーライト((けいばーらいと))}。
4012
+ @@<nop>$$<term>{ケイバーライト((けいばーらいと))@<b>|<<>>|症候群((しょうこうぐん))}。
4013
+
4014
+ @@<nop>$$<term>{アルビオン((あるびおん))@<b>|<<>>|王国((おうこく))}。
4015
+ @@<nop>$$<term>{アルビオン((あるびおん))@<b>|<<>>|共和国((きょうわこく))}。
4016
+ @@<nop>$$<term>{アルビオン((あるびおん))@<b>|<<>>|王立航空軍((おうりつこうくうぐん))}。
4017
+ //}
4018
+
4019
+ //sampleoutputbegin[表示結果]
4020
+
4021
+ @<term>{ケイバーライト((けいばーらいと))}。
4022
+ @<term>{ケイバーライト((けいばーらいと))<<>>症候群((しょうこうぐん))}。
4023
+
4024
+ @<term>{アルビオン((あるびおん))<<>>王国((おうこく))}。
4025
+ @<term>{アルビオン((あるびおん))<<>>共和国((きょうわこく))}。
4026
+ @<term>{アルビオン((あるびおん))<<>>王立航空軍((おうりつこうくうぐん))}。
4027
+
4028
+ //sampleoutputend
4029
+
4030
+
4031
+
4032
+ 索引ページの表示結果は@<img>{index-page}を見てください。
4033
+ これを見ると、「アルビオン」という用語は本文には登場していないので、索引の項目にページ番号がありません。
4034
+ これに対し、同じ親項目でも「ケイバーライト」は本文に登場したので、ページ番号がついています。
4035
+
4036
+ なお、「@<code>|@@<nop>{}<idx>{アルビオン<<>>王国}|」と「@<code>|@@<nop>{}<idx>{アルビオン王国}|」は別々の用語として扱われるので、索引にも別々に載ります。
4037
+ どちからに統一しましょう。
4038
+
4039
+ また用語に「@<code>|<<>>|」を2つ埋め込むと、親・子・孫の関係を表せます(が推奨しません)。
4040
+ それ以上の深い関係は未対応です。
4041
+
4042
+
4043
+ === 親子関係の順番を入れ替える
4044
+
4045
+ 今までのサンプルでは、親項目が前にきて子項目がその後ろについていました(例:「アルビオン」+「王国」)。
4046
+ そうではなく、親項目のほうが後ろ、子項目のほうが前にくる用語もあります。
4047
+ たとえば「二重スパイ」という用語では、後ろにある「スパイ」が親項目、前にある「二重」が子項目です。
4048
+
4049
+ * 「@<code>|@@<nop>{}<term>{二重((にじゅう))<<>>スパイ((すぱい))}|」だと、「二重」が親で「スパイ」が「子」になってしまいます。
4050
+ * 「@<code>|@@<nop>{}<term>{スパイ((すぱい))<<>>二重((にじゅう))}|」だと、親子関係は正しいものの、本文には「スパイ二重」と表示されてしまいます。
4051
+
4052
+ つまり、どちらの書き方も正しくありません。
4053
+
4054
+ このような場合、子要素の用語名に「@<code>|---|」を含めると、そこに親要素が入るものとして扱います。
4055
+ たとえば「@<code>|@@<nop>{}<term>{スパイ((すぱい))<<>>二重@<b>{---}((にじゅう))}|」と書くと、「スパイ」が親で「二重」が子になる構造を指定しつつ、本文には「二重スパイ」と表示されます。
4056
+
4057
+ //list[][サンプル][]{
4058
+ @@<nop>$$<term>{スパイ((すぱい))}。
4059
+ @@<nop>$$<term>{スパイ((すぱい))<<>>二重@<b>|---|((にじゅう))}。
4060
+ //}
4061
+
4062
+ //sampleoutputbegin[表示結果]
4063
+
4064
+ @<term>{スパイ((すぱい))}。
4065
+ @<term>{スパイ((すぱい))<<>>二重---((にじゅう))}。
4066
+
4067
+ //sampleoutputend
4068
+
4069
+
4070
+
4071
+ 索引ページの表示結果は@<img>{index-page}を見てください。
4072
+
4073
+ 念のために注意しますが、「@<code>|---|」を含めるのは子要素の用語名です。
4074
+ よみがなの中に入れてはいけません。
4075
+ また親要素に入れた場合は何の効果もなくそのまま表示されます。
4076
+
4077
+
4078
+ === 転送先の用語を指定する
4079
+
4080
+ 索引では、用語ごとにページ番号がつきます。
4081
+ ただし、ページ番号ではなく「〜を見よ」のように転送先の用語を指定することがあります。
4082
+ このような場合は、「@<code>|@@<nop>{}<term>{用語((よみがな))==>>転送先}|」のように書きます。
4083
+ たとえば「空中艦隊」が「アルビオン王立航空軍」の別名なら、次のようにして前者から後者へ転送するといいでしょう。
4084
+
4085
+ //list[][サンプル][]{
4086
+ @@<nop>$$<term>{アルビオン((あるびおん))<<>>王立航空軍((おうりつこうくうぐん))}。
4087
+ @@<nop>$$<term>{空中艦隊((くうちゅうかんたい))@<b>|==>>|アルビオン王立航空軍}。
4088
+ //}
4089
+
4090
+ //sampleoutputbegin[表示結果]
4091
+
4092
+ @<term>{アルビオン((あるびおん))<<>>王立航空軍((おうりつこうくうぐん))}。
4093
+ @<term>{空中艦隊((くうちゅうかんたい))==>>アルビオン王立航空軍}。
4094
+
4095
+ //sampleoutputend
4096
+
4097
+
4098
+
4099
+ 実際に試すと、転送先を表すのに「→」が使われます。
4100
+ また表示結果(@<img>{index-page})を見ると「→」に下線が引かれていますが、これは意図したものではありません。
4101
+ 原因は調査中です。
4102
+
4103
+ なお、転送先の用語が索引に登録されているかどうかのチェックは行っていません。
4104
+ この場合だと、もし転送先の「アルビオン王立航空軍」が索引に登録されていなくてもエラーになりません。
4105
+ これは仕様です{{(索引の機能を@<LaTeX>{}に任せているため、用語のチェックが難しいのです。)}}。
4106
+
4107
+
4108
+ === よみがなの再利用
4109
+
4110
+ 一度指定したよみがなは、その用語が再び登場したときに再利用されます。
4111
+
4112
+ たとえば、用語が初めて登場したときに「@<code>|@@<nop>{}<term>{侍従長((じじゅうちょう))}|」のようによみがなを指定してます。
4113
+ そして用語が再び登場したときに「@<code>|@@<nop>{}<idx>{侍従長}|」のようによみがなを省略すると、さきほどのよみがなが再利用されます。
4114
+
4115
+ 親子関係にある用語でも、よみがなは再利用されます。
4116
+ たとえば「@<code>|@@<nop><term>{アルビオン((あるびおん))<<>>王国((おうこく))}|」と一度書いておけば、その後は「@<code>|@@<nop><idx>{アルビオン<<>>王国}|」のようによみがなを省略できます。
4117
+
4118
+ 再登場した用語のよみがなは、省略してもいいししなくてもいいです。
4119
+ 省略すれば前のよみがなが再利用され、省略しなければ再利用されないだけです。
4120
+
4121
+
4122
+ === よみがな辞書を使う
4123
+
4124
+ 用語のよみがなは、辞書となるファイルに登録しておくこともできます。
4125
+ そうしておけば、用語のよみがなを省略できます。
4126
+ また複数人で執筆しているときに、索引に載せる用語と載せない用語を統一するのにも辞書ファイルが役立ちます。
4127
+
4128
+ よみがなの辞書ファイルはタブ区切りのテキストファイルであり、@<file>{config.yml}の「@<code>|makeindex_dic: yomigana.txt|」(370行目付近)でファイル名を指定します。
4129
+ デフォルトでは@<file>{yomigana.txt}というファイルが指定されており、その中身は用語とよみがなのリストです@<fn>{fn-u2zh8}。
4130
+ 用語とよみがなは1つ以上のタブ文字で区切ってください。
4131
+
4132
+ //list[][よみがな辞書ファイルの中身]{
4133
+ 侍従長 じじゅうちょう
4134
+ 内務卿 ないむきょう
4135
+ ハイランダー連隊 はいらんだーれんたい
4136
+ //}
4137
+
4138
+ こうしておけば、「@<code>|@@<nop>{}<term>{侍従長((じじゅうちょう))}|」と書くかわりに「@<code>|@@<nop>{}<term>{じじゅうちょう}|」のように読みを省略して書けます。
4139
+
4140
+ //footnote[fn-u2zh8][このファイルは@<LaTeX>{}において索引を生成する「@<code>|mendex|」というコマンドで読み込まれます。@<code>|mendex|コマンドで読み取れるのが、タブ区切りのテキストファイルなのです。CSV形式は使えません。]
4141
+
4142
+ このほか、形態素解析エンジン「MeCab」を使うことでよみがなを用語から自動的に取得する機能がありますが、Starterでは推奨していません。
4143
+ 説明は省略するので、知りたい人は@<href>{https://github.com/kmuto/review/blob/master/doc/makeindex.ja.md, Re:VIEWのドキュメント}を読んでください。
4144
+
4145
+
4146
+ === 用語と索引の補足事項
4147
+
4148
+
4149
+ ==== 1つの用語に複数の読み方がある場合
4150
+
4151
+ たとえば「一也」という用語の読み方が「かずや」と「いちや」の2つある場合は、面倒でも
4152
+ 「@<code>|@@<nop>{}<idx>{一也((かずや))}|」と
4153
+ 「@<code>|@@<nop>{}<idx>{一也((いちや))}|」を使い分けてください。
4154
+
4155
+ またこのようなケースがあるため、同じ用語に対して違うよみがなが指定されてもエラーにはなりません。
4156
+
4157
+
4158
+ ==== 用語のよみがなが見つからなかった場合
4159
+
4160
+ よみがなが指定されず、よみがなの辞書ファイルにも登録されておらず、かつ漢字を含んだ用語(ひらがな・カタカナ・英数字以外の文字を含む用語)は、索引の最後に「■漢字」というグループがつくられ、そこに載ります。
4161
+ 本に索引をつけた場合は、索引の最後に「■漢字」がないかチェックしましょう。
4162
+ もしあれば、よみがなを指定し忘れています@<fn>{fn-1ix79}。
4163
+
4164
+ //footnote[fn-1ix79][よみがなの指定し忘れを警告にする機能は検討中です。]
4165
+
4166
+
4167
+ ==== 索引の表示をカスタマイズする
4168
+
4169
+ 索引の表示は、次のようなカスタマイズができます。
4170
+
4171
+ * 用語とページ番号の間を、連続したピリオドではなく空白にする。
4172
+ * 用語のグループ化を行単位ではなく文字単位で行う。
4173
+ * 用語見出しを「■あ」のようなデザインから変更する。
4174
+ * 子要素の用語で使う「――」を別の文字列に変更する。
4175
+ * 「@<code>|@@<nop>{}<term>{}|」の表示をゴシック体から別の書体に変更する。
4176
+
4177
+ 詳しくは@<secref>{04-customize|sec-index}を参照してください。
4178
+ なお索引のカスタマイズには、@<LaTeX>{}の知識が必要です。
4179
+
4180
+ #@# * 索引ページにて用語とページ番号との間は、デフォルトでは連続したピリオドで埋めています。
4181
+ #@# これを空白で埋めるよう変更するには、@<file>{sty/indexsty.ist}を編集してください。
4182
+ #@# なお@<file>{sty/indexsty.ist}の中の設定項目については、@<href>{http://tug.ctan.org/info/mendex-doc/mendex.pdf, mendexコマンドのマニュアル}を参照してください。
4183
+ #@# * 索引ページでは用語が「あ か さ た な は ……」のようにグループ化されます。
4184
+ #@# これを「あ い う え お か き ……」のようにグループ化するには、@<file>{config.yml}の「@<code>|makeindex_options: "-g"|」を「@<code>|makeindex_options: ""|」のように変更してください。
4185
+ #@# * 索引ページの用語見出しは「■あ」「■か」のようになっています。
4186
+ #@# このデザインは@<file>{sty/starter-misc.sty}の「@<code>|\starterindexgroup|」で設定されています。
4187
+ #@# 変更するには「@<code>|\starterindexgroup|」の定義を@<file>{sty/starter-misc.sty}から@<file>{sty/mystyle.sty}にコピーして、「{{,\newcommand,}}」を「{{,\renewcommand,}}」に変更して中身をカスタマイズしてください。
4188
+ #@# また@<file>{sty/indexsty.ist}を編集すると、別の@<LaTeX>{}マクロ名を指定できます。
4189
+ #@# * 索引ページにおいて子要素の用語で使う「――」は、@<file>{sty/starter-misc.sty}の「@<code>|\starterindexplaceholder|」で定義されています。
4190
+ #@# * 「@<code>|@@<nop>{}<term>{}|」で表示するフォントは、@<file>{sty/starter-misc.sty}の「@<code>|\starterterm|」で定義されています。
4191
+ #@# デフォルトではゴシック体にで表示するように定義されています。
4192
+ #@# * 用語の転送先を表す「→」を別の記号や文字列に変更するには、@<file>{sty/mystyle.sty}にたとえば「@<code>|\renewcommand{\seename}{\textit{see: }}|」のように書きます。
4193
+
4194
+
4195
+ === Re:VIEWとの違い
4196
+
4197
+ Starterの索引機能は、Re:VIEWのそれを拡張しています。
4198
+ 違いは次の通りです。
4199
+
4200
+ * 「@<code>|@@<nop>{}<idx>{}|」と「@<code>|@@<nop>{}<hidx>{}|」は、Re:VIEWにある機能です。
4201
+ Starterではそれを引き継いでいます。
4202
+ * 「@<code>|@@<nop>{}<term>{}|」はStarterによる拡張であり、Re:VIEWにはありません。
4203
+ * 「@<code>|@@<nop>{}<idx>{用語((よみがな))}|」のようによみがなを埋め込む機能は、Starterによる独自拡張です。
4204
+ * 「@<code>|@@<nop>{}<idx>{親用語<<>>子用語}|」のような親子関係の指定は、Re:VIEWにある機能です。
4205
+ Starterでも使えます。
4206
+ * 「@<code>|@@<nop>{}<idx>{親<<>>子---}|」のような親の位置を子で指定する機能は、Starterによる独自拡張です。
4207
+ * 「@<code>|@@<nop>{}<idx>{用語==>>転送先}|」のような親子関係の指定は、Starterによる独自拡張です。
4208
+ * よみがな辞書ファイルの機能は、Re:VIEWにある機能です。
4209
+ * 形態素解析エンジン「MeCab」を使ったよみがな自動取得機能は、Re:VIEWにある機能です。
4210
+ Starterでも設定すれば使えますが、トラブルが多いので推奨していません。
4211
+
4212
+ Re:VIEWの索引機能については、@<href>{https://github.com/kmuto/review/blob/master/doc/makeindex.ja.md, Re:VIEWのドキュメント}を参照してください。
4213
+
4214
+ .+note: これを読んでるRe:VIEW関係者の方へ
4215
+ これを読んでるRe:VIEW関係者の方へお願いがあります。
4216
+ Starterの機能を真似していただくのは構わないです(それどころか歓迎します)。
4217
+ しかし、特に理由がないのにわざと違う仕様にするのはユーザに不利益を与えるだけなので、止めていただくようお願いします。
4218
+
4219
+ Starterによる拡張機能に問題があるから仕様を変えて導入した、というなら道理はあるでしょう。
4220
+ しかしStarterを新機能の参考にしておきながら、わざわざ違う仕様にして導入するのは、ユーザの利益になりません。
4221
+ #@#たとえばRe:VIEWに新しく「@<code>|@@<nop>{}<term>{}|」インライン命令を追加したり、「@<code>|@@<nop>{}<idx>{}|」の中によみがなを書けるよう拡張するなら、わざと違う仕様にせず、同じ仕様にしてくださるようお願いします。
4222
+
4223
+ 競うなら公平・公正に。ユーザの利益を犠牲にする必要はありません。
4224
+ .-note:
4225
+
4226
+
4227
+
4228
+ =={sec-words} 単語展開
4229
+
4230
+ キーと単語の組を単語辞書ファイルに登録しておけば、キーを単語に展開できます。
4231
+ たとえば、辞書ファイル「@<file>{data/words.txt}」の中にキー「apple」と単語「アップル」を登録しておけば、「@<code>|@@<nop>{}<w>{apple}|」が「アップル」に展開されます。
4232
+
4233
+ この機能を使うと、表記が定まっていない単語の表記をあとから簡単に変更できます。
4234
+ たとえば「Apple」と「アップル」のどちらの表記にするかまだ決まってなくても、本文に `@<w>{apple}` と書いておけば、あとから辞書の中身を変えるだけでどちらの表記にも対応できます。
4235
+
4236
+ なお単語にはインライン命令を含められません。
4237
+
4238
+
4239
+ === 単語展開用のインライン命令
4240
+
4241
+ 単語展開のためのインライン命令は3つあります。
4242
+
4243
+ * 「@<code>|@@<nop>{}<w>{}|」は、キーに対応した単語へと展開するだけです。
4244
+ * 「@<code>|@@<nop>{}<wb>{}|」は、展開してから太字にします。
4245
+ 実質的に「@<code>|@@<nop>{}<b>{@@<nop>{}<w>{}}|」と同じです。
4246
+ * 「@<code>|@@<nop>{}<W>{}|」は、展開してから強調表示します。
4247
+ 実質的に「@<code>|@@<nop>{}<B>{@@<nop>{}<w>{}}|」と同じです。
4248
+
4249
+ //list[][サンプル][]{
4250
+ * @<b>|@@<nop>$$<w>|{apple} …… 展開するだけ
4251
+ * @<b>|@@<nop>$$<wb>|{apple} …… 展開して太字に
4252
+ * @<b>|@@<nop>$$<W>|{apple} …… 展開して強調表示
4253
+ //}
4254
+
4255
+ //sampleoutputbegin[表示結果]
4256
+
4257
+ * @<w>{apple} …… 展開するだけ
4258
+ * @<wb>{apple} …… 展開して太字に
4259
+ * @<W>{apple} …… 展開して強調表示
4260
+
4261
+ //sampleoutputend
4262
+
4263
+
4264
+
4265
+
4266
+ === 単語展開用の辞書ファイル
4267
+
4268
+ 単語展開用の辞書ファイルは、@<file>{config.yml}の「@<code>|words_file|」で指定します。
4269
+ デフォルトでは「@<code>|data/words.txt|」が指定されています。
4270
+
4271
+ 辞書ファイルは、CSVファイル(@<file>{*.csv})か、タブ文字区切りのファイル(@<file>{*.txt}または@<file>{*.tsv})を指定します。
4272
+ どちらの形式かはファイル名の拡張子で判断します。
4273
+
4274
+ 辞書ファイルは複数指定できます。
4275
+ たとえば「@<code>|words_file: [data/f1.txt, data/f2.txt]|」とすれば、@<file>{data/f1.txt}と@<file>{data/f2.txt}を読み込みます。
4276
+ キーが重複していてもエラーにはならず、あとから読み込まれたほうが使われます。
4277
+
4278
+ 辞書ファイルの文字コードはUTF-8しか使えません。
4279
+
4280
+
4281
+ === Re:VIEWとの違い
4282
+
4283
+ * Re:VIEWでは、辞書ファイルとしてCSVファイルしか指定できません。
4284
+ Starterだと、タブ文字区切りのテキストファイルも指定できます。
4285
+ テキストエディタで編集しやすいのは、CSVファイルよりもタブ文字区切りのテキストファイルのほうです。
4286
+ * Re:VIEWには「@<code>|@@<nop>{}<W>|」がありません。
4287
+ * Starterではデフォルトで辞書ファイル「@<file>|data/words.txt|」が提供済みです。
4288
+ 設定ファイルを編集しなくても最初から@<code>|@@<nop>{}<w>{}|が利用可能です。
2306
4289
 
2307
4290
 
2308
4291
 
@@ -2313,7 +4296,7 @@ e^{i\theta} = \sin{\theta} + i\cos{\theta}
2313
4296
 
2314
4297
  URLは「@<code>|@@<nop>{}<href>{URL}|」と書きます。
2315
4298
 
2316
- //list[][サンプル]{
4299
+ //list[][サンプル][]{
2317
4300
  Re:VIEW Starter:@<b>|@@<nop>$$<href>{|https://kauplan.org/reviewstarter/@<b>|}|
2318
4301
  //}
2319
4302
 
@@ -2327,7 +4310,7 @@ Re:VIEW Starter:@<href>{https://kauplan.org/reviewstarter/}
2327
4310
 
2328
4311
  リンクは「@<code>|@@<nop>{}<href>{URL, テキスト}|」と書きます。
2329
4312
 
2330
- //list[][サンプル]{
4313
+ //list[][サンプル][]{
2331
4314
  @<b>|@@<nop>$$<href>{|https://kauplan.org/reviewstarter/@<b>|, |Re:VIEW Starter@<b>|}|
2332
4315
  //}
2333
4316
 
@@ -2348,7 +4331,7 @@ PDFの場合、リンクのURLは自動的に脚注に書かれます(Starter
2348
4331
 
2349
4332
  「@<code>|@@<nop>{}<href>{}|」と「@<code>|@@<nop>{}<hlink>{}|」の違いを比べて見ましょう。
2350
4333
 
2351
- //list[][サンプル]{
4334
+ //list[][サンプル][]{
2352
4335
  * @<b>|@@<nop>$$<href>|{https://twitter.com/_kauplan/, @_kauplan}
2353
4336
  * @<b>|@@<nop>$$<hlink>|{https://twitter.com/_kauplan/, @_kauplan}
2354
4337
  //}
@@ -2367,11 +4350,11 @@ PDFの場合、リンクのURLは自動的に脚注に書かれます(Starter
2367
4350
 
2368
4351
  引用は「@<code>|//quote{ ... //}|」で表します。
2369
4352
 
2370
- //list[][サンプル]{
4353
+ //list[][サンプル][]{
2371
4354
  @<b>|//quote{|
2372
4355
  /@<nop>$$/noindent
2373
4356
  その者、蒼き衣を纏いて金色の野に降り立つべし。@@<nop>$$<br>{}
2374
- 失われた大地との絆を結び、ついに人々を清浄の地に導かん。
4357
+ 失われし大地との絆を結び、ついに人々を青き清浄の地に導かん。
2375
4358
  @<b>|//}|
2376
4359
  //}
2377
4360
 
@@ -2380,7 +4363,7 @@ PDFの場合、リンクのURLは自動的に脚注に書かれます(Starter
2380
4363
  //quote{
2381
4364
  //noindent
2382
4365
  その者、蒼き衣を纏いて金色の野に降り立つべし。@<br>{}
2383
- 失われた大地との絆を結び、ついに人々を清浄の地に導かん。
4366
+ 失われし大地との絆を結び、ついに人々を青き清浄の地に導かん。
2384
4367
  //}
2385
4368
 
2386
4369
  //sampleoutputend
@@ -2392,7 +4375,7 @@ PDFの場合、リンクのURLは自動的に脚注に書かれます(Starter
2392
4375
 
2393
4376
  傍点は「@<code>|@@<nop>{}<bou>{...}|」でつけられます。
2394
4377
 
2395
- //list[][サンプル]{
4378
+ //list[][サンプル][]{
2396
4379
  @<b>|@@<nop>$$<bou>{|三分間@<b>|}|、待ってやる。
2397
4380
  //}
2398
4381
 
@@ -2412,7 +4395,7 @@ PDFの場合、リンクのURLは自動的に脚注に書かれます(Starter
2412
4395
 
2413
4396
  ルビ(あるいは読みがな)は「@<code>|@@<nop>{}<ruby>{テキスト, ルビ}|」のように書きます。
2414
4397
 
2415
- //list[][サンプル]{
4398
+ //list[][サンプル][]{
2416
4399
  @<b>|@@<nop>$$<ruby>{|約束された勝利の剣@<b>|, |エクスカリバー@<b>|}|
2417
4400
  //}
2418
4401
 
@@ -2434,17 +4417,17 @@ PDFの場合、リンクのURLは自動的に脚注に書かれます(Starter
2434
4417
 
2435
4418
  //footnote[fn-tflcc][「nop」は「No Operation」の略です。]
2436
4419
 
2437
- //list[][サンプル]{
2438
- 強調される: @@<nop>$$<b>{テキスト}
4420
+ //list[][サンプル][]{
4421
+ 強調される: @@<nop>$$<B>{テキスト}
2439
4422
 
2440
- 強調されない: @@<b>|@@<nop>$$<nop>{}|<b>{テキスト}
4423
+ 強調されない: @@<b>|@@<nop>$$<nop>{}|<B>{テキスト}
2441
4424
  //}
2442
4425
 
2443
4426
  //sampleoutputbegin[表示結果]
2444
4427
 
2445
- 強調される: @<b>{テキスト}
4428
+ 強調される: @<B>{テキスト}
2446
4429
 
2447
- 強調されない: @@<nop>{}<b>{テキスト}
4430
+ 強調されない: @@<nop>{}<B>{テキスト}
2448
4431
 
2449
4432
  //sampleoutputend
2450
4433
 
@@ -2458,7 +4441,7 @@ PDFの場合、リンクのURLは自動的に脚注に書かれます(Starter
2458
4441
  プログラムコードやターミナルにおいて、コメントを記述するための「@<code>|@@<nop>{}<balloon>{...}|」というコマンドが用意されています。
2459
4442
 
2460
4443
  //needvspace[latex][5zw]
2461
- //list[][サンプル]{
4444
+ //list[][サンプル][]{
2462
4445
  /@<nop>$$/terminal{
2463
4446
  $ @@<nop>$$<userinput>{unzip mybook.zip} @<b>|@@<nop>$$<balloon>{|zipファイルを解凍@<b>|}|
2464
4447
  $ @@<nop>$$<userinput>{cd mybook/} @<b>|@@<nop>$$<balloon>{|ディレクトリを移動@<b>|}|
@@ -2481,57 +4464,48 @@ $ @<userinput>{rake pdf} @<balloon>{PDFファイルを生成}
2481
4464
  Re:VIEWのドキュメントを読むと、本来は吹き出し(バルーン)形式で表示することを意図していたようです。
2482
4465
  Starterでは、「←」つきのグレーで表示しています。
2483
4466
 
4467
+ なおプログラムコードにおいて改行記号を表示している場合、「@<code>|@@<nop>{}<balloon>{}|」があるとそれより後に改行文字が表示されてしまいます。
4468
+ たとえば次の例だと、改行記号は「←再帰呼び出し」の前につくべきですが、実際には後についています。
4469
+ これは期待される挙動ではないでしょう。
2484
4470
 
2485
- === 改ページ
2486
-
2487
- 「@<code>|//clearpage|」で強制的に改ページできます。
2488
-
2489
-
2490
- === 特殊文字
2491
-
2492
- * 「@<code>|@@<nop>{}<hearts>{}|」で「@<hearts>{}」が表示できます。
2493
- * 「@<code>|@@<nop>{}<TeX>{}|」で「@<TeX>{}」が表示できます。
2494
- * 「@<code>|@@<nop>{}<LaTeX>{}|」で「@<LaTeX>{}」が表示できます。
2495
-
2496
-
2497
- === ターミナルのカーソル
2498
-
2499
- 「@<code>|@@<nop>{}<cursor>{...}|」を使うと、ターミナルでのカーソルを表せます。
2500
-
2501
- 次の例では、2行目の真ん中の「f」にカーソルがあることを表しています。
2502
-
2503
- //list[][サンプル]{
2504
- /@<nop>$$/terminal{
4471
+ //needvspace[latex][5zw]
4472
+ //list[][サンプル][]{
4473
+ /@<nop>$$/program[][改行記号と「@@@<nop>$$<nop>{}<balloon>{}」は相性が悪い][@<b>|eolmark=on|]{
2505
4474
  function fib(n) {
2506
- return n <= 1 ? n : @<b>|@@<nop>$$<cursor>{f}|ib(n-1) : fib(n-2);
4475
+ if (n <= 1) { return n };
4476
+ return fib(n-1) + fib(n-2); @<b>|@@<nop>$$<balloon>{|再帰呼び出し@<b>|}|
2507
4477
  }
2508
- ~
2509
- ~
2510
- "fib.js" 3L, 74C written
2511
4478
  /@<nop>$$/}
2512
4479
  //}
2513
4480
 
2514
4481
  //sampleoutputbegin[表示結果]
2515
4482
 
2516
- //terminal{
4483
+ //program[][改行記号と「@@<nop>{}<balloon>{}」は相性が悪い][eolmark=on]{
2517
4484
  function fib(n) {
2518
- return n <= 1 ? n : @<cursor>{f}ib(n-1) : fib(n-2);
4485
+ if (n <= 1) { return n };
4486
+ return fib(n-1) + fib(n-2); @<balloon>{再帰呼び出し}
2519
4487
  }
2520
- ~
2521
- ~
2522
- "fib.js" 3L, 74C written
2523
4488
  //}
2524
4489
 
2525
4490
  //sampleoutputend
2526
4491
 
2527
4492
 
2528
4493
 
4494
+ この問題については将来的に対応予定ですが、現在はまだ対応できていません。
4495
+
4496
+
4497
+ === 特殊文字
4498
+
4499
+ * 「@<code>|@@<nop>{}<hearts>{}|」で「@<hearts>{}」が表示できます。
4500
+ * 「@<code>|@@<nop>{}<TeX>{}|」で「@<TeX>{}」が表示できます。
4501
+ * 「@<code>|@@<nop>{}<LaTeX>{}|」で「@<LaTeX>{}」が表示できます。
4502
+
2529
4503
 
2530
4504
  === 右寄せ、センタリング
2531
4505
 
2532
4506
  右寄せとセンタリングのブロック命令があります。
2533
4507
 
2534
- //list[][サンプル]{
4508
+ //list[][サンプル][]{
2535
4509
  /@<nop>$$/flushright{
2536
4510
  右寄せのサンプル
2537
4511
  /@<nop>$$/}
@@ -2554,12 +4528,40 @@ function fib(n) {
2554
4528
 
2555
4529
 
2556
4530
 
4531
+ === 縦方向の空き(実験的機能)
4532
+
4533
+ 「@<code>|//vspace|」を使って、縦方向の空きを入れられます。
4534
+ マイナスの値を指定すると、空きを削除できます。
4535
+
4536
+ //list[][サンプル][]{
4537
+ AAAAA
4538
+
4539
+ BBBBB
4540
+
4541
+ @<b>|//vspace[latex][-4mm]|
4542
+ CCCCC
4543
+ //}
4544
+
4545
+ //sampleoutputbegin[表示結果]
4546
+
4547
+ AAAAA
4548
+
4549
+ BBBBB
4550
+
4551
+ //vspace[latex][-4mm]
4552
+ CCCCC
4553
+
4554
+ //sampleoutputend
4555
+
4556
+
4557
+
4558
+
2557
4559
  === 生データ
2558
4560
 
2559
4561
  @<LaTeX>{}のコード(PDFのとき)やHTMLのコード(ePubのとき)を埋め込む機能があります。
2560
- たとえば次の例では、PDFのときは「@<code>|//embed[latex]{...//}|」のコードが使われ、HTMLePubのときだけ「@<code>|//embed[html]{...//}|」のコードが使われます。
4562
+ たとえば次の例では、PDFのときは「@<code>|//embed[latex]{...//}|」のコードが使われ、HTMLePubのときだけ「@<code>|//embed[html,epub]{...//}|」のコードが使われます。
2561
4563
 
2562
- //list[][サンプル]{
4564
+ //list[][サンプル][]{
2563
4565
  @<b>|//embed[latex]{|
2564
4566
  \textcolor{red}{Red}
2565
4567
  \textcolor{green}{Green}
@@ -2567,7 +4569,7 @@ function fib(n) {
2567
4569
  \par
2568
4570
  @<b>|//}|
2569
4571
 
2570
- @<b>|//embed[html]{|
4572
+ @<b>|//embed[html,epub]{|
2571
4573
  <div>
2572
4574
  <span style="color:red">Red</span>
2573
4575
  <span style="color:green">Green</span>
@@ -2585,7 +4587,7 @@ function fib(n) {
2585
4587
  \par
2586
4588
  //}
2587
4589
 
2588
- //embed[html]{
4590
+ //embed[html,epub]{
2589
4591
  <div>
2590
4592
  <span style="color:red">Red</span>
2591
4593
  <span style="color:green">Green</span>
@@ -2597,17 +4599,12 @@ function fib(n) {
2597
4599
 
2598
4600
 
2599
4601
 
4602
+ またインライン命令の「@<code>|@@<nop>{}<embed>{...}|」もあります。
2600
4603
 
2601
- === 索引
2602
-
2603
- (未執筆。Re:VIEWの@<href>{https://github.com/kmuto/review/blob/master/doc/makeindex.ja.md, Wiki}を参照してください。)
4604
+ * 「@<code>$@@<nop>{}<embed>{|latex|...}$」なら@<LaTeX>{}のときだけ中身が出力されます。
4605
+ * 「@<code>$@@<nop>{}<embed>{|htlm,epub|...}$」ならHTMLとePubのときだけ中身が出力されます。
2604
4606
 
2605
4607
 
2606
4608
  === 参考文献
2607
4609
 
2608
4610
  (未執筆。Re:VIEWの@<href>{https://github.com/kmuto/review/blob/master/doc/format.ja.md#%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE%E3%81%AE%E5%AE%9A%E7%BE%A9, Wiki}を参照してください。)
2609
-
2610
-
2611
- === 単語展開
2612
-
2613
- (未執筆。Re:VIEWの@<href>{https://github.com/kmuto/review/blob/master/doc/format.ja.md#%E5%8D%98%E8%AA%9E%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%B1%95%E9%96%8B, Wiki}を参照してください。)