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.
- checksums.yaml +4 -4
- data/.dockerignore +9 -0
- data/.editorconfig +3 -0
- data/.github/workflows/retrovert.yml +20 -5
- data/.gitignore +1 -0
- data/.vscode/launch.json +48 -0
- data/Gemfile.lock +13 -4
- data/Makefile +24 -0
- data/docker/review.Dockerfile +10 -0
- data/lib/review/retrovert/converter.rb +374 -111
- data/lib/review/retrovert/reviewcompat.rb +57 -0
- data/lib/review/retrovert/reviewdef.rb +70 -0
- data/lib/review/retrovert/sty/{ird.sty → ird.sty.erb} +9 -1
- data/lib/review/retrovert/sty/review-retrovert-custom.sty.erb +6 -0
- data/lib/review/retrovert/utils.rb +35 -0
- data/lib/review/retrovert/version.rb +1 -1
- data/lib/review/retrovert/yamlconfig.rb +0 -1
- data/package-lock.json +6 -0
- data/package.json +1 -0
- data/review-retrovert.gemspec +5 -1
- data/testdata/mybook/.gitignore +3 -1
- data/testdata/mybook/.textlintrc +11 -0
- data/testdata/mybook/Rakefile +8 -0
- data/testdata/mybook/catalog.yml +36 -10
- data/testdata/mybook/config-starter.yml +134 -9
- data/testdata/mybook/config.yml +44 -15
- data/testdata/mybook/contents/00-preface.re +48 -2
- data/testdata/mybook/contents/01-install.re +38 -5
- data/testdata/mybook/contents/02-tutorial.re +333 -113
- data/testdata/mybook/contents/03-syntax.re +2370 -373
- data/testdata/mybook/contents/04-customize.re +424 -88
- data/testdata/mybook/contents/05-faq.re +288 -10
- data/testdata/mybook/contents/06-bestpractice.re +431 -59
- data/testdata/mybook/contents/91-compare.re +402 -2
- data/testdata/mybook/contents/92-filelist.re +14 -8
- data/testdata/mybook/contents/93-background.re +10 -10
- data/testdata/mybook/contents/99-postface.re +2 -1
- data/testdata/mybook/contents/r0-root.re +1 -1
- data/testdata/mybook/css/webstyle.css +180 -2
- data/testdata/mybook/data/terms.txt +3 -0
- data/testdata/mybook/data/words.txt +15 -0
- data/testdata/mybook/images/03-syntax/index-page.png +0 -0
- data/testdata/mybook/images/03-syntax/order-detail.png +0 -0
- data/testdata/mybook/images/04-customize/section_decoration_samples.png +0 -0
- data/testdata/mybook/images/05-faq/dummy-image.png +0 -0
- data/testdata/mybook/images/06-bestpractice/section_title_wlines.png +0 -0
- data/testdata/mybook/images/avatar-b.png +0 -0
- data/testdata/mybook/images/avatar-g.png +0 -0
- data/testdata/mybook/images/avatar-r.png +0 -0
- data/testdata/mybook/images/caution-icon.png +0 -0
- data/testdata/mybook/images/info-icon.png +0 -0
- data/testdata/mybook/images/warning-icon.png +0 -0
- data/testdata/mybook/layouts/layout.html5.erb +3 -1
- data/testdata/mybook/layouts/layout.tex.erb +265 -379
- data/testdata/mybook/layouts/layout.tex.erb.orig +386 -0
- data/testdata/mybook/lib/ruby/review-book.rb +64 -0
- data/testdata/mybook/lib/ruby/review-builder.rb +902 -63
- data/testdata/mybook/lib/ruby/review-compiler.rb +675 -22
- data/testdata/mybook/lib/ruby/review-epubbuilder.rb +33 -0
- data/testdata/mybook/lib/ruby/review-epubmaker.rb +10 -7
- data/testdata/mybook/lib/ruby/review-htmlbuilder.rb +354 -66
- data/testdata/mybook/lib/ruby/review-latexbuilder.rb +429 -146
- data/testdata/mybook/lib/ruby/review-maker.rb +117 -6
- data/testdata/mybook/lib/ruby/review-markdownbuilder.rb +945 -0
- data/testdata/mybook/lib/ruby/review-markdownmaker.rb +91 -0
- data/testdata/mybook/lib/ruby/review-monkeypatch.rb +2 -0
- data/testdata/mybook/lib/ruby/review-pdfmaker.rb +160 -82
- data/testdata/mybook/lib/ruby/review-webmaker.rb +20 -5
- data/testdata/mybook/lib/tasks/review.rake +14 -0
- data/testdata/mybook/lib/tasks/starter.rake +148 -4
- data/testdata/mybook/sty/indexstyle.ist +25 -0
- data/testdata/mybook/sty/mytextsize.sty +29 -0
- data/testdata/mybook/sty/mytitlepage.sty +34 -11
- data/testdata/mybook/sty/review-base.sty +276 -0
- data/testdata/mybook/sty/starter-codeblock.sty +237 -106
- data/testdata/mybook/sty/starter-color.sty +72 -17
- data/testdata/mybook/sty/starter-heading.sty +60 -13
- data/testdata/mybook/sty/starter-misc.sty +894 -0
- data/testdata/mybook/sty/starter-note.sty +67 -14
- data/testdata/mybook/sty/starter-talklist.sty +105 -0
- data/testdata/mybook/sty/starter-util.sty +35 -0
- data/testdata/mybook/sty/starter.sty +8 -526
- metadata +80 -4
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
=== コンパイルエラーが出たとき
|
14
14
|
|
15
|
-
PDF
|
15
|
+
PDFファイル生成時のコンパイルエラーについて、対処方法を説明します。
|
16
16
|
|
17
17
|
PDFへのコンパイルは、内部では大きく3つのステージに分かれます。
|
18
18
|
|
@@ -73,7 +73,7 @@ Starterでは、「@<code>|review-pdfmaker|」や「@<code>|review-epubmaker|」
|
|
73
73
|
|
74
74
|
=== 文章中のプログラムコードに背景色をつけたい
|
75
75
|
|
76
|
-
「@<code>|@@<nop>{}<code>{...}
|
76
|
+
「@<code>|@@<nop>{}<code>{...}|」による文章中のプログラムコードに、背景色をつけられます。
|
77
77
|
そのためには、「@<file>{config-starter.yml}」で「@<code>|inlinecode_gray: true|」を設定してください。
|
78
78
|
|
79
79
|
//list[][ファイル「@<file>{config-starter.yml}」]{
|
@@ -123,11 +123,11 @@ Starterではプログラム中の長い行が自動的に右端で折り返さ
|
|
123
123
|
|
124
124
|
このような場合、プログラムやターミナルの表示幅をほんの少し広げるだけで、右端まで文字が埋まるようになります。
|
125
125
|
|
126
|
-
具体的には、ファイル「@<file>{config-starter.yml}」の中の「@<code>{program_widen: 0.0mm}」や「@<code>{
|
126
|
+
具体的には、ファイル「@<file>{config-starter.yml}」の中の「@<code>{program_widen: 0.0mm}」や「@<code>{terminal_widen: 0.0mm}」を、たとえば「@<code>{0.3mm}」に設定してください(値は各自で調整してください)。
|
127
127
|
|
128
128
|
//list[][ファイル「config-starter.yml」]{
|
129
129
|
## プログラム(//list)の表示幅をほんの少しだけ広げる。
|
130
|
-
@<del>{
|
130
|
+
@<del>{program_widen: 0.0mm}
|
131
131
|
@<b>{program_widen: 0.3mm}
|
132
132
|
|
133
133
|
## ターミナル(//terminal, //cmd)の表示幅をほんの少しだけ広げる。
|
@@ -140,11 +140,13 @@ Starterではプログラム中の長い行が自動的に右端で折り返さ
|
|
140
140
|
//image[codeblock_rpadding2][表示幅をほんの少し広げると、右端まで埋まるようになった][scale=0.7]
|
141
141
|
|
142
142
|
|
143
|
-
===
|
143
|
+
=== 全角文字の幅を半角文字2個分にしたい
|
144
144
|
|
145
|
-
|
145
|
+
「@<code>|//list|」や「@<code>|//terminal|」の第3引数に「@<code>|widecharfit=on|」を指定すると、全角文字の幅が半角文字2文字分になります。
|
146
|
+
すべての「@<code>|//list|」や「@<code>|//terminal|」でこのオプションを有効化したい場合は、@<file>{config-starter.yml}の「@<code>|program_default_options:|」や「@<code>|terminal_default_options:|」に、「@<code>|widecharfit: on|」を指定してください。
|
146
147
|
|
147
|
-
|
148
|
+
または英数字の幅が狭いフォントを使うと、半角文字の幅が全角文字の約半分になります(ぴったりにはなりません)。
|
149
|
+
@<file>{config-starter.yml}で、次のうち必要なほうを設定してください。
|
148
150
|
|
149
151
|
//list[][]{
|
150
152
|
## //list用
|
@@ -164,7 +166,7 @@ Starterではプログラム中の長い行が自動的に右端で折り返さ
|
|
164
166
|
「@<code>|//terminal|」や「@<code>|//list|」では、小さいフォントで表示するオプションがあります。
|
165
167
|
フォントサイズは「@<code>|small|」「@<code>|x-small|」「@<code>|xx-small|」の3つが選べます。
|
166
168
|
|
167
|
-
//list[][サンプル]{
|
169
|
+
//list[][サンプル][]{
|
168
170
|
/@<nop>$$/terminal[][小さいフォントで表示する][@<b>|fontsize=x-small|]{
|
169
171
|
Table "public.customers"
|
170
172
|
Column | Type | Nullable | Default
|
@@ -213,7 +215,279 @@ Starterでは等幅フォントを複数の中から選べます。
|
|
213
215
|
|
214
216
|
|
215
217
|
|
216
|
-
==
|
218
|
+
== 画像
|
219
|
+
|
220
|
+
|
221
|
+
=== PDFとHTMLとで画像の表示サイズを変えたい
|
222
|
+
|
223
|
+
Re:VIEWやStarterでは、PDFとHTMLとで画像の表示サイズを別々に指定できます。
|
224
|
+
たとえば次のサンプルでは、PDF (@<LaTeX>{})では本文幅いっぱい、HTMLでは本文幅の半分の大きさで画像を表示します。
|
225
|
+
|
226
|
+
//list[][サンプル][]{
|
227
|
+
/@<nop>$$/image[dummy-image][表示幅を変える][@<b>|latex::scale=1.0,html::scale=0.5|]
|
228
|
+
//}
|
229
|
+
|
230
|
+
//sampleoutputbegin[表示結果]
|
231
|
+
|
232
|
+
//image[dummy-image][表示幅を変える][latex::scale=1.0,html::scale=0.5]
|
233
|
+
|
234
|
+
//sampleoutputend
|
235
|
+
|
236
|
+
|
237
|
+
|
238
|
+
なお「@<code>|latex::xxx|」や「@<code>|html::xxx|」のような指定方法は、他のオプションやコマンドでも使えます。
|
239
|
+
|
240
|
+
|
241
|
+
=== 印刷用PDFと電子用PDFとで異なる解像度の画像を使いたい
|
242
|
+
|
243
|
+
印刷用PDFでは解像度の高い画像を使いたい、けど電子用PDFでは画像の解像度を低くしてデータサイズを小さくしたい、という場合は、「@<file>{images/}」フォルダごと切り替えるのがいいでしょう。
|
244
|
+
具体的には次のようにします。
|
245
|
+
|
246
|
+
//terminal[][高解像度と低解像度の画像を切り替える(macOSまたはLinuxの場合)]{
|
247
|
+
### 事前準備
|
248
|
+
$ mkdir images_highres @<balloon>{解像度の高い画像用のフォルダを作る(印刷用)}
|
249
|
+
$ mkdir images_lowhres @<balloon>{解像度の低い画像用のフォルダを作る(電子用)}
|
250
|
+
$ mv images images.bkup @<balloon>{既存のimagesフォルダを削除するか別名にする}
|
251
|
+
|
252
|
+
### 解像度の高い画像に切り替えて印刷用PDFを生成
|
253
|
+
$ rm -f images @<balloon>{シンボリックリンクを消す}
|
254
|
+
$ ln -s images_highres images @<balloon>{シンボリックリンクを作る}
|
255
|
+
$ rake pdf t=pbook @<balloon>{印刷用PDFを生成する}
|
256
|
+
|
257
|
+
### 解像度の低い画像に切り替えて電子用PDFを作成
|
258
|
+
$ rm -f images @<balloon>{シンボリックリンクを消す}
|
259
|
+
$ ln -s images_lowres images @<balloon>{シンボリックリンクを作る}
|
260
|
+
$ rake pdf t=ebook @<balloon>{電子用PDFを生成する}
|
261
|
+
//}
|
262
|
+
|
263
|
+
切り替え作業が面倒なら、独自のRakeタスクを作成するといいでしょう。
|
264
|
+
「@<file>{lib/tasks/mytasks.rake}」に次のようなタスクを追加してください。
|
265
|
+
|
266
|
+
//list[][@<file>{lib/tasks/mytasks.rake}]{
|
267
|
+
desc "印刷用PDFを生成"
|
268
|
+
task :pbook do
|
269
|
+
rm_f 'images'
|
270
|
+
ln_s 'images_highres', 'images'
|
271
|
+
sh "rake pdf t=pbook"
|
272
|
+
#sh "rake docker:pdf t=pbook"
|
273
|
+
end
|
274
|
+
|
275
|
+
desc "電子用PDFを生成"
|
276
|
+
task :ebook do
|
277
|
+
rm_f 'images'
|
278
|
+
ln_s 'images_rowres', 'images'
|
279
|
+
sh "rake pdf t=ebook"
|
280
|
+
#sh "rake docker:pdf t=ebook"
|
281
|
+
end
|
282
|
+
//}
|
283
|
+
|
284
|
+
これにより、「@<code>|rake pbook|」で高解像度の画像を使って印刷用PDFが生成され、また「@<code>|rake ebook|」で低解像度の画像を使って電子用PDFが生成されます。
|
285
|
+
|
286
|
+
|
287
|
+
=== 画像の解像度はどのくらいにすればいいか
|
288
|
+
|
289
|
+
画像の「解像度」(Resolution)とは、簡単にいえば画像の「きめ細かさ」です。
|
290
|
+
解像度が高い(=きめ細かい)ほど画像のドットやギザギザがなくなり、解像度が低いほど画像のドットやギザギザが目立ちます。
|
291
|
+
|
292
|
+
解像度は「dpi」(dot per inch)という単位で表します。
|
293
|
+
この値が大きいほどきめ細かく、低いほど粗くなります。
|
294
|
+
望ましい解像度は用途によって異なります。
|
295
|
+
大雑把には次のように覚えておくといいでしょう。
|
296
|
+
|
297
|
+
* 安いWindowsノートPCで表示するなら、72dpiで十分
|
298
|
+
* MacbookのRetinaディスプレイできれいに表示するなら、144dpiが必要
|
299
|
+
* 高級スマートフォンできれいに表示するなら、216dpi必要
|
300
|
+
* 商業印刷で使うなら、カラー画像で350dpi、モノクロ画像で600dpi必要
|
301
|
+
|
302
|
+
たとえば安いWindowsノートPCでスクリーンショットを撮ると、画像の解像度が72dpiになります。
|
303
|
+
これをMacbookやスマートフォンで等倍表示すると、必要な解像度に足りないせいで画像のドットが目立ちます@<fn>{fn-v6uxm}。
|
304
|
+
印刷すれば粗さがもっと目立ちます。
|
305
|
+
|
306
|
+
//footnote[fn-v6uxm][等倍で表示すると荒い画像でも、大きい画像を縮小して表示すれば粗さは目立たなくなります。解像度の高い画像を用意できない場合は、かわりに大きい画像を用意して印刷時に縮小するといいでしょう。]
|
307
|
+
|
308
|
+
では、技術同人誌では画像の解像度をどのくらいにすればいいでしょうか。
|
309
|
+
すでに説明したように、商業印刷に使う画像は350dpi以上の解像度が必要だとよく言われます。
|
310
|
+
しかし(マンガやイラストの同人誌ではなく)技術系同人誌であれば、そこまで高解像度の画像を用意しなくても大丈夫です。
|
311
|
+
|
312
|
+
実際には、Retinaディスプレイや最近のスマートフォンで画像を等倍表示して気にならない解像度であれば、印刷してもあまり気になりません。
|
313
|
+
つまり画像の解像度が144dpiであれば、印刷しても問題は少ないし、電子用PDFで使っても350dpiと比べてデータサイズをかなり小さくできます。
|
314
|
+
|
315
|
+
印刷用と電子用とで解像度の違う画像を用意するのは面倒なので、画像の解像度を144dpiにして印刷用と電子用とで同じ画像を使うのが簡単かつ妥当な方法でしょう。
|
316
|
+
|
317
|
+
|
318
|
+
=== 白黒印刷用のPDFにカラー画像を使っても大丈夫か
|
319
|
+
|
320
|
+
白黒印刷用のPDFにカラー画像を使っても、たいていは大丈夫です。
|
321
|
+
たとえばカラーのスクリーンショット画像を、わざわざモノクロ画像に変換する必要はありません。
|
322
|
+
|
323
|
+
ただし、白黒印刷すれば当然ですがカラーではなくなるので、@<B>{色の違いだけで見分けをつけていたものは白黒印刷すると見分けがつかなくなります}。
|
324
|
+
形を変えたり線の種類を変えるなどして、白黒になっても見分けがつくような工夫をしましょう。
|
325
|
+
|
326
|
+
また図の一部を赤い丸や四角で囲んでいる場合、白黒印刷すると赤ではなくなるので、たとえば「赤い丸で囲った部分に注目してください」という文章が読者に通じなくなります。
|
327
|
+
これもよくある失敗なので気をつけましょう。
|
328
|
+
|
329
|
+
|
330
|
+
|
331
|
+
=={sec-nombre} ノンブル
|
332
|
+
|
333
|
+
|
334
|
+
=== ノンブルとは
|
335
|
+
|
336
|
+
「ノンブル」とは、すべてのページにつけられた通し番号のことです。
|
337
|
+
ページ番号と似ていますが、次のような違いがあります。
|
338
|
+
|
339
|
+
//desclist[indent=0zw]{
|
340
|
+
//desc[通し番号]{
|
341
|
+
* ページ番号は、まえがきや目次では「i, ii, iii, ...」で、本文が始まると「1, 2, 3, ...」とまる。つまり通し番号になっていない。
|
342
|
+
* ノンブルは、まえがきや目次や本文に関係なく「1, 2, 3, ...」と続く通し番号になっている。
|
343
|
+
//}
|
344
|
+
//desc[用途]{
|
345
|
+
* ページ番号は、読者が目的のページへ素早くアクセスするために必要。
|
346
|
+
* ノンブルは、印刷所がページの印刷順序を間違わないために必要。
|
347
|
+
//}
|
348
|
+
//desc[表示位置]{
|
349
|
+
* ページ番号は読者のために存在するので、読者からよく見える位置に置く。
|
350
|
+
* ノンブルは印刷所の人だけが見られればよく、読者からは見えないほうがよい。
|
351
|
+
//}
|
352
|
+
//}
|
353
|
+
|
354
|
+
ノンブルは、印刷所へ入稿するときに必要です。
|
355
|
+
印刷しないならノンブルは不要であり、電子用PDFにはノンブルはつけません。
|
356
|
+
|
357
|
+
ノンブルについてもっと知りたい場合は「ノンブル 同人誌」でGoogle検索すると詳しい情報が見つかります。
|
358
|
+
|
359
|
+
|
360
|
+
=== ノンブルを必要とする印刷所
|
361
|
+
|
362
|
+
たいていの印刷所では入稿するPDFにノンブルが必要ですが、必要としない印刷所もあります。
|
363
|
+
たとえば技術書典でよく利用される印刷所のうち、「日光企画」ではノンブルが必須で、「ねこのしっぽ」では不要(だけどあると望ましい)です。
|
364
|
+
主な同人誌向け印刷所の情報を@<table>{tbl-uyzhu}にまとめたので参考にしてください。
|
365
|
+
|
366
|
+
//tsize[latex][lcp{81mm}]
|
367
|
+
//table[tbl-uyzhu][同人誌向け印刷所ごとのノンブル必要・不要情報][hline=on,fontsize=x-small]{
|
368
|
+
印刷所 ノンブル 参考URL
|
369
|
+
--------------------
|
370
|
+
日光企画 必要 @<href>{http://www.nikko-pc.com/qa/yokuaru-shitsumon.html#3-1}
|
371
|
+
ねこのしっぽ 不要 @<href>{https://www.shippo.co.jp/neko/faq_3.shtml#faq_039}
|
372
|
+
しまや出版 必要 @<href>{https://www.shimaya.net/howto/data-genkou.html#no}
|
373
|
+
栄光 必要 @<href>{https://www.eikou.com/qa/answer/66}
|
374
|
+
サンライズ 必要 @<href>{https://www.sunrisep.co.jp/09_genkou/002genko_kiso.html#title-6}
|
375
|
+
オレンジ工房 必要 @<href>{https://www.orangekoubou.com/order/question.php#article05}
|
376
|
+
太陽出版 必要 @<href>{https://www.taiyoushuppan.co.jp/doujin/howto/nombre.php}
|
377
|
+
ポプルス 不要 @<href>{https://www2.popls.co.jp/pop/genkou/q_and_a.html#nombre}
|
378
|
+
丸正インキ 必要 @<href>{https://www.marusho-ink.co.jp/howto/nombre.html}
|
379
|
+
トム出版 必要 @<href>{https://www.tomshuppan.co.jp/manual/data.html}
|
380
|
+
金沢印刷 必要 @<href>{http://www.kanazawa-p.co.jp/howtodata/howtodata_kihon-rule.html}
|
381
|
+
ケーナイン 必要 @<href>{https://www.k-k9.jp/data/nomble/}
|
382
|
+
booknext 必要 @<href>{https://booknext.ink/guide/making/}
|
383
|
+
//}
|
384
|
+
|
385
|
+
このように印刷所によって違いますが、@<B>{ノンブル不要の印刷所であってもノンブルをつけるほうが望ましい}です。
|
386
|
+
強い理由がないなら、印刷用PDFにはノンブルをつけましょう。
|
387
|
+
|
388
|
+
|
389
|
+
==={subsec-addnombre} ノンブルのつけ方
|
390
|
+
|
391
|
+
Re:VIEWとStarterのどちらも、印刷用PDFにはノンブルが自動的につきます(電子用にはつきません)。
|
392
|
+
Starterでは、印刷用PDFならページの右下隅または左下隅に、グレーの通し番号がついているはずです。
|
393
|
+
これがノンブルです。
|
394
|
+
|
395
|
+
ノンブルは印刷所の人だけが見られればいいので、読者からは見えにくい位置(見開きの内側)に置かれます。
|
396
|
+
このように読者から見えにくい位置に置かれたノンブルを、特に「隠しノンブル」といいます。
|
397
|
+
|
398
|
+
またStarterでは、すでに生成済みのPDFに対してあとからノンブルを追加できます。
|
399
|
+
たとえば大扉(タイトルページ)や奥付をIllustratorやKeynoteで作成し@<fn>{fn-dv7j2}、それを使って印刷用PDFの大扉や奥付のページを手動で入れ替えるような場合は@<fn>{fn-5eb1s}、入れ替えたページにノンブルがつきません。
|
400
|
+
このような場合は、次のような作業手順になります。
|
401
|
+
|
402
|
+
//footnote[fn-dv7j2][大扉(タイトルページ)を別のソフトで作成した例が@<secref>{06-bestpractice|subsec-visualtitlepage}にあります。]
|
403
|
+
//footnote[fn-5eb1s][昔はこうする必要がありましたが、現在のStarterは大扉と奥付をPDFファイルで用意すればそれを読み込めるので、手動で入れ替える必要はなくなりました。詳しくは@<secref>{04-customize|subsec-coverpdf}を参照してください。]
|
404
|
+
|
405
|
+
- (1) 印刷用PDFをノンブルなしで生成する。
|
406
|
+
- (2) 手動で大扉や奥付のページを入れ替える。
|
407
|
+
- (3) 生成済みの印刷用PDFにノンブルをつける。
|
408
|
+
|
409
|
+
ここで(1)印刷用PDFをノンブルなしで生成するには、@<file>{config-starter.yml}で「@<code>|nombre: off|」を設定します。
|
410
|
+
また(3)生成済みの印刷用PDFにノンブルをつけるには、ターミナル画面で「@<code>|rake pdf:nombre|」を実行してください。
|
411
|
+
|
412
|
+
//terminal[][生成済みの印刷用PDFにノンブルをつける]{
|
413
|
+
$ @<userinput>|rake pdf:nombre| @<balloon>{PDFの全ページにノンブルをつける}
|
414
|
+
$ @<userinput>|rake docker:pdf:nombre| @<balloon>{Dockerを使っている場合はこちら}
|
415
|
+
//}
|
416
|
+
|
417
|
+
このRakeタスクでは、ノンブルをつけたいPDFファイル名と出力先のPDFファイル名を指定できます。
|
418
|
+
たとえば@<file>{mybook.pdf}にノンブルをつけたものを@<file>{mybook_nombre.pdf}として出力するには、次のようにします。
|
419
|
+
|
420
|
+
//terminal[][生成済みの印刷用PDFにノンブルをつける]{
|
421
|
+
$ @<userinput>|rake pdf:nombre @<b>{file=mybook.pdf} @<b>{out=mybook_nombre.pdf}|
|
422
|
+
//}
|
423
|
+
|
424
|
+
「@<code>|out=...|」が指定されなければ、「@<code>|file=...|」と同じファイル名が使われます。
|
425
|
+
また「@<code>|file=...|」が指定されなければ、「@<code>|rake pdf|」で生成されるPDFファイルの名前が使われます。
|
426
|
+
|
427
|
+
なお「@<code>{rake pdf:nombre}」はノンブルをつけるだけであり、再コンパイルはしないので注意してください。
|
428
|
+
また「@<href>{https://kauplan.org/pdfoperation/, PDFOperation}」を使っても、PDFファイルにノンブルが簡単につけられます。
|
429
|
+
|
430
|
+
//note[ノンブル用フォントの埋め込み]{
|
431
|
+
残念ながら、「@<code>{rake pdf:nombre}」でノンブルをつけるとそのフォントがPDFファイルに埋め込まれません(これはPDFファイルを操作しているライブラリの限界によるものです)。
|
432
|
+
そのため、印刷所へ入稿するまえにフォントを埋め込む必要があります。
|
433
|
+
|
434
|
+
対策方法は@<href>{https://kauplan.org/pdfoperation/}を見てください。
|
435
|
+
また印刷用PDFにデフォルトでつくノンブルならこのような問題はありません。
|
436
|
+
//}
|
437
|
+
|
438
|
+
|
439
|
+
=== ノンブルの調整
|
440
|
+
|
441
|
+
印刷所によっては、ノンブルの位置や大きさを指定される場合があります。
|
442
|
+
その場合は@<file>{config-starter.yml}の中の、ノンブルに関する設定項目を調整してください。
|
443
|
+
なおこの設定は、「@<code>|rake pdf:nombre|」タスクでも使われます。
|
444
|
+
|
445
|
+
//needvspace[latex][6zw]
|
446
|
+
//list[][@<file>{config-starter.yml}:ノンブルに関する設定項目]{
|
447
|
+
## ノンブル(1枚目からの通し番号)の設定
|
448
|
+
nombre: on @<balloon>{on ならノンブルをつける}
|
449
|
+
nombre_sidemargin: 0.5mm @<balloon>{ページ左右からのマージン幅}
|
450
|
+
nombre_bottommargin: 2.0mm @<balloon>{ページ下からのマージン高}
|
451
|
+
nombre_fontcolor: gray @<balloon>{'gray' or 'black'}
|
452
|
+
nombre_fontsize: 6pt @<balloon>{フォントサイズ(6〜8pt)}
|
453
|
+
nombre_startnumber: 1 @<balloon>{ノンブルの開始番号(3から始める流儀もある)}
|
454
|
+
//}
|
455
|
+
|
456
|
+
|
457
|
+
=== ノンブルの注意点
|
458
|
+
|
459
|
+
印刷所への入稿に慣れていないと、ノンブルに関するトラブルを起こしがちです。
|
460
|
+
初心者の人は次のような点に注意してください。
|
461
|
+
|
462
|
+
* すでに説明したように、ノンブルは印刷するときに必要であり、印刷しなければ不要です。
|
463
|
+
Starterでは印刷用PDFにのみ自動でノンブルがつきますが、電子用PDFにはつきません。
|
464
|
+
* ノンブルは、表紙と裏表紙には必要ありません。
|
465
|
+
印刷所へ入稿するとき、表紙と裏表紙の入稿は本文とは別に行います。
|
466
|
+
そのため、表紙と裏表紙にはノンブルをつける必要はありませんし、つけてはいけません。
|
467
|
+
* ノンブルは、表紙と裏表紙を除いたすべてのページに必要です。
|
468
|
+
たとえ空白ページであってもノンブルを省略してはいけません。
|
469
|
+
* 別のソフトで作った大扉(タイトルページ)や奥付をPDFに入れた場合は、それらのページにもノンブルをつけることを忘れないでください。
|
470
|
+
* 印刷所からノンブルの位置や大きさの指定がある場合は、それに従ってください。
|
471
|
+
ノンブルの調整方法は@<file>{config-starter.yml}で行えます。
|
472
|
+
* ノンブルは「1」から始めることがほとんどですが、印刷所によっては「3」から始めるよう指示されることがあります。
|
473
|
+
その場合は@<file>{config-starter.yml}に「@<code>|nombre_startnumber: 3|」を設定してください。
|
474
|
+
* ノンブルのフォントがPDFに埋め込まれていることを確認してください。
|
475
|
+
ただし本文のフォントほど重要ではないので、もしノンブルのフォントがうまく埋め込めない場合は、そのままで入稿できないか印刷所に相談してみましょう。
|
476
|
+
|
477
|
+
|
478
|
+
|
479
|
+
== @<LaTeX>{}関連
|
480
|
+
|
481
|
+
|
482
|
+
=== LuaLaTeXとjlreqを使いたい
|
483
|
+
|
484
|
+
Starterでは、LuaLaTeXとjlreq.clsにはまだ対応していません。
|
485
|
+
どうしてもこれらが使いたい場合は、Re:VIEWが対応しているのでそちらを使うといいでしょう。
|
486
|
+
|
487
|
+
LuaLaTeXは好きなフォントが簡単に使えるという大きな利点がありますが、コンパイルが遅くなるという欠点があります。
|
488
|
+
またjlreq.clsはカスタマイズ方法がよく分かっていないので、採用ができません。
|
489
|
+
|
490
|
+
これらの採用は今後の課題です。
|
217
491
|
|
218
492
|
|
219
493
|
=== @<LaTeX>{}のスタイルファイルから環境変数を参照する
|
@@ -221,7 +495,7 @@ Starterでは等幅フォントを複数の中から選べます。
|
|
221
495
|
Starterでは、名前が「@<em>{STARTER_}」で始まる環境変数を@<LaTeX>{}のスタイルファイルから参照できます。
|
222
496
|
|
223
497
|
たとえば「@<code>{STARTER_FOO_BAR}」という環境変数を設定すると、@<code>{sty/mystyle.sty}や@<code>{sty/starter.sty}では「@<code>{\STARTER@FOO@BAR}」という名前で参照できます。
|
224
|
-
|
498
|
+
この例で分かるように、環境変数名の「@<code>{_}」は「@<code>{@}」に変換されます。
|
225
499
|
|
226
500
|
//terminal[][環境変数を設定する例(macOS, UNIX)]{
|
227
501
|
$ @<userinput>{export STARTER_FOO_BAR="foobar"}
|
@@ -242,6 +516,10 @@ $ @<userinput>{export STARTER_FOO_BAR="foobar"}
|
|
242
516
|
また値の中に「@<code>{$}」や「@<code>{\\}」が入っていてもエスケープはしないので注意してください。
|
243
517
|
|
244
518
|
|
519
|
+
|
520
|
+
== その他
|
521
|
+
|
522
|
+
|
245
523
|
=== 高度なカスタマイズ
|
246
524
|
|
247
525
|
設定ファイルや@<LaTeX>{}スタイルファイルでは対応できないようなカスタマイズが必要になることがあります。
|
@@ -30,6 +30,8 @@ Re:VIEWおよびStarterでは、「@<file>{catalog.yml}」の「@<code>|PREDEF:|
|
|
30
30
|
|
31
31
|
次のは「本書の目的」のサンプルです。
|
32
32
|
|
33
|
+
//sampleoutputbegin[サンプル]
|
34
|
+
|
33
35
|
===={notoc} 本書の目的
|
34
36
|
|
35
37
|
本書の目的は、SQLを初めてさわる初心者が、簡単な検索と集計をSQLでできるようになることです。
|
@@ -37,10 +39,13 @@ Re:VIEWおよびStarterでは、「@<file>{catalog.yml}」の「@<code>|PREDEF:|
|
|
37
39
|
|
38
40
|
SQLのチューニングや、データベース設計といった内容は、本書の範囲ではありません。
|
39
41
|
|
42
|
+
//sampleoutputend
|
43
|
+
|
40
44
|
|
41
45
|
=== まえがきに「対象読者」を入れる
|
42
46
|
|
43
|
-
|
47
|
+
先ほどの話と似ていますが、まえがきに「本の対象読者」を書きましょう。
|
48
|
+
本を手にとった人が、自分がその本の対象読者かどうか判断できます。
|
44
49
|
|
45
50
|
このとき、「初心者」と「初級者」をちゃんと区別するといいでしょう。
|
46
51
|
|
@@ -49,12 +54,16 @@ SQLのチューニングや、データベース設計といった内容は、
|
|
49
54
|
|
50
55
|
次のは「対象読者」のサンプルです。
|
51
56
|
|
57
|
+
//sampleoutputbegin[サンプル]
|
58
|
+
|
52
59
|
===={notoc} 本書の対象読者
|
53
60
|
|
54
61
|
本書は、何らかのオブジェクト指向言語の入門書を読み終えた初級者を対象としています。
|
55
62
|
そのため、「オブジェクト」「クラス」「メソッド」などの用語は説明なしに使用します。
|
56
63
|
まったくの初心者は本書の対象ではないので注意してください。
|
57
64
|
|
65
|
+
//sampleoutputend
|
66
|
+
|
58
67
|
|
59
68
|
=== まえがきに「前提知識」を入れる
|
60
69
|
|
@@ -66,6 +75,8 @@ SQLのチューニングや、データベース設計といった内容は、
|
|
66
75
|
|
67
76
|
次のは「前提知識」のサンプルです。
|
68
77
|
|
78
|
+
//sampleoutputbegin[サンプル]
|
79
|
+
|
69
80
|
===={notoc} 本書の前提知識
|
70
81
|
|
71
82
|
本書は、Python をある程度使いこなしている中級者以上を対象にしています。そのため、Pythonの基礎知識を持っていることを前提とします。
|
@@ -78,6 +89,8 @@ SQLのチューニングや、データベース設計といった内容は、
|
|
78
89
|
* 「@<code>|return|」と「@<code>|yield|」の違いが説明できる
|
79
90
|
* 「@<code>|@property|」が何か分かる
|
80
91
|
|
92
|
+
//sampleoutputend
|
93
|
+
|
81
94
|
|
82
95
|
=== まえがきにサポートサイトのURLを載せる
|
83
96
|
|
@@ -90,6 +103,8 @@ SQLのチューニングや、データベース設計といった内容は、
|
|
90
103
|
|
91
104
|
次のはサポートサイト紹介文のサンプルです。
|
92
105
|
|
106
|
+
//sampleoutputbegin[サンプル]
|
107
|
+
|
93
108
|
==== サポートサイト
|
94
109
|
|
95
110
|
本書の正誤表は次のサイトに載っています。
|
@@ -97,6 +112,8 @@ SQLのチューニングや、データベース設計といった内容は、
|
|
97
112
|
|
98
113
|
* @<href>{https://www.example.com/mygreatbook/}
|
99
114
|
|
115
|
+
//sampleoutputend
|
116
|
+
|
100
117
|
|
101
118
|
=== まえがきに謝辞を載せる
|
102
119
|
|
@@ -113,7 +130,7 @@ SQLのチューニングや、データベース設計といった内容は、
|
|
113
130
|
まえがきに、使用した(または動作検証した)ソフトウェアのバージョンを載せるといいでしょう。
|
114
131
|
|
115
132
|
たとえばPythonの2.7なのか3.Xなのかは大きな問題です。
|
116
|
-
またLinuxだとCentOSなのかUbuntuなのか、Ubuntuなら18.04なのか20.04
|
133
|
+
またLinuxだとCentOSなのかUbuntuなのか、Ubuntuなら18.04なのか20.04なのか、といった情報をまえがきに書いておきましょう。
|
117
134
|
|
118
135
|
|
119
136
|
=== まえがきの章タイトル以外は目次に載せない
|
@@ -210,14 +227,14 @@ Starterでは節ごとに改ページする設定が用意されています。
|
|
210
227
|
|
211
228
|
== 箇条書き
|
212
229
|
|
213
|
-
=== 箇条書きを正しく使い分ける
|
230
|
+
==={sec-goodenumerate} 箇条書きを正しく使い分ける
|
214
231
|
|
215
232
|
箇条書きには「番号なし」「番号つき」「ラベルつき」の3つがあります。
|
216
233
|
|
217
234
|
番号なしの箇条書きは、項目に順序がないか、あっても重要ではない場合に使います。
|
218
|
-
|
235
|
+
たとえば次の例では、公開された順に項目が並んでいるもののそこはあまり重要ではなく、項目の順番を入れ替えても文章の意味が成り立つので、番号なしの箇条書きを使います。
|
219
236
|
|
220
|
-
//list[][サンプル]{
|
237
|
+
//list[][サンプル][]{
|
221
238
|
スタジオジブリ初期の代表作は次の通りです。
|
222
239
|
|
223
240
|
* 風の谷のナウシカ
|
@@ -240,7 +257,7 @@ Starterでは節ごとに改ページする設定が用意されています。
|
|
240
257
|
番号つきの箇条書きは、手順や順位など、項目の順序が重要な場合に使います。
|
241
258
|
たとえば次の例では項目の順序が重要なので、番号つきの箇条書きを使います。
|
242
259
|
|
243
|
-
//list[][サンプル]{
|
260
|
+
//list[][サンプル][]{
|
244
261
|
スタジオジブリ初期の代表作を、好きな順に並べました。
|
245
262
|
|
246
263
|
1. 風の谷のナウシカ
|
@@ -264,9 +281,9 @@ Starterでは節ごとに改ページする設定が用意されています。
|
|
264
281
|
またラベルはあとから参照しやすくするために使い、順番を表すためには使いません。
|
265
282
|
そのため、ラベルつきの箇条書きは「番号なし箇条書きにラベルをつけたもの」として使います。
|
266
283
|
|
267
|
-
|
284
|
+
たとえば次の例では、項目の順序はさほど重要でないので番号なし箇条書きでもいいのですが、あとから項目を参照するのでラベルつき箇条書きにしています。
|
268
285
|
|
269
|
-
//list[][サンプル]{
|
286
|
+
//list[][サンプル][]{
|
270
287
|
スタジオジブリ初期の代表作は次の通りです。
|
271
288
|
|
272
289
|
- (A) 風の谷のナウシカ
|
@@ -291,7 +308,7 @@ Starterでは節ごとに改ページする設定が用意されています。
|
|
291
308
|
|
292
309
|
|
293
310
|
番号つき箇条書きとラベルつき箇条書きは、きちんと使い分けましょう。
|
294
|
-
|
311
|
+
前者は順序に強い意味がある場合、後者は順序に意味がないまたは弱い場合に使います。
|
295
312
|
|
296
313
|
|
297
314
|
=== 箇条書き直後に継続する段落は字下げしない
|
@@ -301,7 +318,7 @@ Starterでは節ごとに改ページする設定が用意されています。
|
|
301
318
|
次の例を見てください。
|
302
319
|
箇条書きの直後に「@<code>|//noindent|」を入れることで、字下げしないようにしています。
|
303
320
|
|
304
|
-
//list[][サンプル]{
|
321
|
+
//list[][サンプル][]{
|
305
322
|
スタジオジブリ初期の代表作には、
|
306
323
|
|
307
324
|
* 風の谷のナウシカ
|
@@ -311,7 +328,7 @@ Starterでは節ごとに改ページする設定が用意されています。
|
|
311
328
|
@<b>|//noindent|
|
312
329
|
が挙げられます。
|
313
330
|
|
314
|
-
|
331
|
+
しかしスタジオジブリが発足したのは実はラピュタからであり、ナウシカは厳密にはスタジオジブリの制作ではないのです。
|
315
332
|
//}
|
316
333
|
|
317
334
|
//sampleoutputbegin[表示結果]
|
@@ -325,7 +342,7 @@ Starterでは節ごとに改ページする設定が用意されています。
|
|
325
342
|
//noindent
|
326
343
|
が挙げられます。
|
327
344
|
|
328
|
-
|
345
|
+
しかしスタジオジブリが発足したのは実はラピュタからであり、ナウシカは厳密にはスタジオジブリの制作ではないのです。
|
329
346
|
|
330
347
|
//sampleoutputend
|
331
348
|
|
@@ -337,14 +354,14 @@ Starterでは節ごとに改ページする設定が用意されています。
|
|
337
354
|
もっとも、段落の途中に箇条書きを入れること自体がよくありません。
|
338
355
|
この例なら、次のように書き換えるといいでしょう。
|
339
356
|
|
340
|
-
//list[][サンプル]{
|
357
|
+
//list[][サンプル][]{
|
341
358
|
スタジオジブリ初期の代表作には、@<b>|次の3つが挙げられます。|
|
342
359
|
|
343
360
|
* 風の谷のナウシカ
|
344
361
|
* 天空の城ラピュタ
|
345
362
|
* となりのトトロ
|
346
363
|
|
347
|
-
|
364
|
+
しかしスタジオジブリが発足したのは実はラピュタからであり、ナウシカは厳密にはスタジオジブリの制作ではないのです。
|
348
365
|
//}
|
349
366
|
|
350
367
|
|
@@ -359,7 +376,7 @@ Starterでは節ごとに改ページする設定が用意されています。
|
|
359
376
|
日本語の文章では本文が明朝体の場合、強調箇所は太字にするだけでなく、ゴシック体にするのがよいとされています。
|
360
377
|
そのため、強調には「@<code>|@@<nop>{}<b>{...}|」ではなく「@<code>|@@<nop>{}<B>{...}|」または「@<code>|@@<nop>{}<strong>{...}|」を使ってください。
|
361
378
|
|
362
|
-
//list[][サンプル]{
|
379
|
+
//list[][サンプル][]{
|
363
380
|
本文本文@<b>|@@<nop>$$<B>{強調}|本文本文。@@<nop>$$<balloon>{ゴシック体なので望ましい}
|
364
381
|
|
365
382
|
本文本文@<b>|@@<nop>$$<b>{太字}|本文本文。@@<nop>$$<balloon>{明朝体のままなので望ましくない}
|
@@ -380,7 +397,7 @@ Starterでは節ごとに改ページする設定が用意されています。
|
|
380
397
|
|
381
398
|
傍点とは@<bou>{このように}文章の上についた小さな点のことであり、Re:VIEWやStarterなら「@<code>|@@<nop>{}<bou>{...}|」でつけられます。
|
382
399
|
|
383
|
-
|
400
|
+
傍点は強調とよく似ていますが、強調は「重要な箇所」を表すのに対し、傍点は「重要ではないけど他と区別したい・注意を向けたい」という用途で使います。
|
384
401
|
|
385
402
|
たとえば次の例では、否定文であることが見落とされないよう、傍点を使っています。
|
386
403
|
ここは重要箇所ではないので、強調は使わないほうがいいでしょう。
|
@@ -390,7 +407,7 @@ Starterでは節ごとに改ページする設定が用意されています。
|
|
390
407
|
Re:VIEW Starterではアップグレード用スクリプトを用意して@<bou>{いません}。
|
391
408
|
//}
|
392
409
|
|
393
|
-
|
410
|
+
また技術系の文書ではほとんど見かけませんが、小説や漫画では「何か含みを持たせた表現」や「のちの伏線になる箇所」に傍点を使います。
|
394
411
|
参考までに、『ワールドトリガー』22巻@<fn>{fn-z94o3}から傍点を使った例を(ネタバレは避けつつ)引用します。
|
395
412
|
|
396
413
|
//quote{
|
@@ -423,13 +440,13 @@ Re:VIEW Starterではアップグレード用スクリプトを用意して@<bou
|
|
423
440
|
PDFでは、読みやすさのために日本語と英数字の間に少しアキ(隙間)が入ります。
|
424
441
|
これは内部で使っている組版用ソフト「@<LaTeX>{}」の仕様です。
|
425
442
|
|
426
|
-
//list[][サンプル]{
|
427
|
-
あいうえおABC DEFかきくけこ123
|
443
|
+
//list[][サンプル][]{
|
444
|
+
あいうえおABC DEFかきくけこ123。
|
428
445
|
//}
|
429
446
|
|
430
447
|
//sampleoutputbegin[表示結果]
|
431
448
|
|
432
|
-
あいうえおABC DEFかきくけこ123
|
449
|
+
あいうえおABC DEFかきくけこ123。
|
433
450
|
|
434
451
|
//sampleoutputend
|
435
452
|
|
@@ -438,7 +455,7 @@ PDFでは、読みやすさのために日本語と英数字の間に少しア
|
|
438
455
|
しかし記号の場合はアキが入りません。
|
439
456
|
たとえば次の例では、「ン」と「-」の間にはアキが入っていません。
|
440
457
|
|
441
|
-
//list[][サンプル]{
|
458
|
+
//list[][サンプル][]{
|
442
459
|
オプション-pを使う。
|
443
460
|
//}
|
444
461
|
|
@@ -452,7 +469,7 @@ PDFでは、読みやすさのために日本語と英数字の間に少しア
|
|
452
469
|
|
453
470
|
このような場合は、半角空白を入れるか、またはカッコでくくるといいでしょう。
|
454
471
|
|
455
|
-
//list[][サンプル]{
|
472
|
+
//list[][サンプル][]{
|
456
473
|
オプション -p を使う。
|
457
474
|
|
458
475
|
オプション「-p」を使う。
|
@@ -471,7 +488,50 @@ PDFでは、読みやすさのために日本語と英数字の間に少しア
|
|
471
488
|
|
472
489
|
=== [PDF] 等幅フォントで余計な空白が入るのを防ぐ
|
473
490
|
|
474
|
-
|
491
|
+
Re:VIEWやStarterでは、PDFを作成するために「@<LaTeX>{}」という組版ソフトを使っています。
|
492
|
+
この@<LaTeX>{}では、半角空白は次のように扱われます。
|
493
|
+
|
494
|
+
* 文章中の半角空白は、何個連続していても1個分の空白しか出力されない。
|
495
|
+
* ただし「.」と「:」と「!」と「?」の直後の半角空白は、1個しかなくても2個分の空白が出力される。
|
496
|
+
|
497
|
+
このルールは、英語の文章を書くうえでは妥当な仕様です。
|
498
|
+
そしてこのルールは、フォントに依らず適用されます。
|
499
|
+
そのため等幅フォントを使っているときでも、「.」と「:」と「!」と「?」の直後に半角空白があると2個分の空白が出力されます。
|
500
|
+
|
501
|
+
しかし、等幅フォントを使うのはたいていプログラムコードやコマンドを表す場合なので、半角空白が勝手に2個出力されてしまうのは困りものです。
|
502
|
+
たとえば、@<br>{}
|
503
|
+
「@<code>|{a: 1}|」と書いたつもりが、@<br>{}
|
504
|
+
「@<code>|{a: 1}|」と表示されるのは、意図したことではないでしょう。
|
505
|
+
|
506
|
+
そこでStarterでは、等幅フォントの場合はこのルールを適用しないようにしています。
|
507
|
+
そのための「@<code>|\frenchspacing|」@<fn>{fn-2zb8y}というマクロが@<LaTeX>{}にはあるので、これを使います。
|
508
|
+
具体的には、@<LaTeX>{}マクロを次のように上書きしています。
|
509
|
+
|
510
|
+
//list[][]{
|
511
|
+
%% 「@<tt>{}」を上書き
|
512
|
+
\renewcommand{\reviewtt}[1]{{%
|
513
|
+
@<b>|\frenchspacing|% % 「! ? : .」の直後の空白が2文字分になるのを防ぐ
|
514
|
+
\texttt{#1}% % 等幅フォントで表示
|
515
|
+
}}
|
516
|
+
//}
|
517
|
+
|
518
|
+
//footnote[fn-2zb8y][「@<code>{\frenchspacing}」というのは、「フランス流の空白の入れ方」という意味です。フランス語では「. : ! ?」の直後でも空白は1個なようです。]
|
519
|
+
|
520
|
+
「@<code>|@@<nop>{}<code>{}|」が呼び出す「@<code>|\reviewcode|」マクロにも同じ変更をしています。
|
521
|
+
このおかげで、Starterでは「@<code>|@@<nop>{}<tt>{}|」や「@<code>|@@<nop>{}<code>{}|」を使ったときに空白が2個出力されるのを防いでいます。
|
522
|
+
|
523
|
+
ただし、本来このようなルール変更は「@<code>|@@<nop>{}<code>{}|」にだけ行うべきであり、「@<code>|@@<nop>{}<tt>{}|」では変更すべきではありません。
|
524
|
+
現実には「@<code>|@@<nop>{}<tt>{}|」がプログラムコードを表すのに広く使われていることを鑑みて、Starterでは「@<code>|@@<nop>{}<tt>{}|」でもルール変更をしています。
|
525
|
+
しかし本来はすべきでないと知っておいてください。
|
526
|
+
|
527
|
+
なお「@<code>|@@<nop>{}<tt>{}|」を本来の動作に戻すには、@<file>{sty/mystyle.sty}に次のマクロ定義を追加してください。
|
528
|
+
|
529
|
+
//list[][@<file>{sty/mystyle.sty}]{
|
530
|
+
%% @@<nop>{}<tt>{} を本来の動作に戻す
|
531
|
+
\renewcommand{\reviewtt}[1]{%
|
532
|
+
\texttt{#1}% % 等幅フォントで表示
|
533
|
+
}
|
534
|
+
//}
|
475
535
|
|
476
536
|
|
477
537
|
=== 文章中のコードは折り返しする
|
@@ -481,7 +541,16 @@ PDFでは、読みやすさのために日本語と英数字の間に少しア
|
|
481
541
|
|
482
542
|
=== ノートとコラムを使い分ける
|
483
543
|
|
484
|
-
|
544
|
+
ノートとコラムはよく似ています。次のように使い分けるといいでしょう。
|
545
|
+
|
546
|
+
* 本文に対する補足情報は、ノートを使う。
|
547
|
+
あくまで補足情報なので、文章が長くなりすぎないよう注意する。
|
548
|
+
* 章(Chapter)の終わりに、長めの関連情報やエッセーを書く場合はコラムを使う。
|
549
|
+
これは節(Section)と同じ扱いにするので、「@<code>|==[column]|」を使う。
|
550
|
+
|
551
|
+
ときどき、ノートで書くべきことをすべてコラムで書いている同人誌を見かけます。
|
552
|
+
あまりよいことではないので、ノートとコラムの使い分けを検討してみてください。
|
553
|
+
また使い分けがよく分からないと思ったら、商業の技術書籍をいくつか参考にしてみてください。
|
485
554
|
|
486
555
|
|
487
556
|
|
@@ -490,17 +559,20 @@ PDFでは、読みやすさのために日本語と英数字の間に少しア
|
|
490
559
|
=== 節タイトルが複数行になるなら下線や背景色を使わない
|
491
560
|
|
492
561
|
Starterでは節(Section)のタイトルに下線や背景色をつけられます。
|
493
|
-
しかしそれらは節タイトルが1
|
562
|
+
しかしそれらは節タイトルが1行に収まる場合だけを想定しており、複数行の場合は考慮されていません(@<img>{section_title_wlines})。
|
563
|
+
|
564
|
+
//image[section_title_wlines][節タイトルが長くて複数行になった場合][scale=0.9,border=on,pos=p]
|
494
565
|
|
495
|
-
|
496
|
-
|
566
|
+
複数行になるぐらいの長い節タイトルがある場合は、下線も背景色も使わないデザインを選びましょう。
|
567
|
+
Starterであれば、次のどれかを選ぶといいでしょう。
|
497
568
|
|
498
|
-
* 「@<code>{
|
499
|
-
* 「@<code>{
|
569
|
+
* 「@<code>{numbox}」… 節番号を白ヌキ文字(@<img>{section_title_wlines}上から2番目)
|
570
|
+
* 「@<code>{leftline}」… 節タイトル左に縦線(@<img>{section_title_wlines}上から4番目)
|
571
|
+
* 「@<code>{circle}」… 大きい円に白ヌキ文字(@<img>{section_title_wlines}上から5番目)
|
500
572
|
|
501
|
-
|
573
|
+
このうち「@<code>{circle}」は、節タイトルが1行の場合でも2行分の高さを必要とするので、他のデザインと比べてページ数が若干増えることに注意してください。
|
502
574
|
|
503
|
-
Starterにおける節タイトルのデザインを変更する方法は、@<secref>{04-customize|subsec-sectitle}を参照してください。
|
575
|
+
なおStarterにおける節タイトルのデザインを変更する方法は、@<secref>{04-customize|subsec-sectitle}を参照してください。
|
504
576
|
|
505
577
|
|
506
578
|
=== 項を参照するなら項番号をつける
|
@@ -538,16 +610,18 @@ Starterでは、プログラムコードやターミナルの等幅フォント
|
|
538
610
|
|
539
611
|
Starterのデフォルトでは、本文のフォントサイズに関わらず、A5サイズなら9pt、B5サイズなら10ptのフォントサイズが使われます。
|
540
612
|
|
541
|
-
* A5サイズなら、本文が9pt
|
542
|
-
* B5サイズなら、本文が10pt
|
613
|
+
* A5サイズなら、本文が9ptと10ptのどちらであっても、プログラムコードはデフォルトで9pt
|
614
|
+
* B5サイズなら、本文が10ptと11ptのどちらであっても、プログラムコードはデフォルトで10pt
|
615
|
+
|
616
|
+
この調整は、「@<file>{config-starter.yml}」の設定項目「@<code>|program_default_options:|」と「@<code>|terminal_default_options:|」の中の、「@<code>|fontsize:|」で行われています@<fn>{k7dzw}。
|
617
|
+
これらの値は、本文がA5サイズ10ptまたはB5サイズ11ptなら「@<code>|small|」に設定され、A5サイズ9ptまたはB5サイズ10ptなら「@<code>|null|」に設定されます。
|
543
618
|
|
544
|
-
|
545
|
-
本文がA5サイズ10ptまたはB5サイズ11ptならこれらが「@<code>|small|」に設定され、A5サイズ9ptまたはB5サイズ10ptなら「@<code>|normal|」に設定されます。
|
619
|
+
//footnote[k7dzw][以前は「@<code>|progoram_fontsize:|」と「@<code>|terminal_fontsize:|」という設定項目がありましたが、廃止されました。]
|
546
620
|
|
547
621
|
|
548
622
|
=== 重要箇所を目立たせる
|
549
623
|
|
550
|
-
プログラムコードが
|
624
|
+
プログラムコードが5行以上あると、読者はコードのどこに注目すればいいか、分からなくなります。
|
551
625
|
もし注目してほしい箇所が強調されていれば、読者にとってとても理解しやすくなります。
|
552
626
|
|
553
627
|
プログラムコードの中で注目してほしい箇所は、ぜひ太字にして目立たせましょう。
|
@@ -597,7 +671,10 @@ Starterでは「@<code>|@@<nop>{}<weak>{...}|」を使うと、プログラム
|
|
597
671
|
|
598
672
|
=== 差分(追加と削除)の箇所を明示する
|
599
673
|
|
600
|
-
|
674
|
+
サンプルコードを徐々に改善するような内容の場合は、次のようにすると差分が分かりやすくなります。
|
675
|
+
|
676
|
+
* 削除した行に取り消し線を引く。
|
677
|
+
* 追加した行を太字にする。
|
601
678
|
|
602
679
|
たとえば次のようなサンプルコードがあるとします。
|
603
680
|
|
@@ -649,7 +726,7 @@ $('#button').on('click', toggleLabel);
|
|
649
726
|
|
650
727
|
=== 長い行の折り返し箇所を明示する
|
651
728
|
|
652
|
-
|
729
|
+
長い行が右端で折り返されるとき、折り返された箇所が分かるような表示にするといいでしょう。
|
653
730
|
そのための方法は3つあります。
|
654
731
|
|
655
732
|
* 折り返し箇所に何らかの目印をつける
|
@@ -748,9 +825,11 @@ PythonやYAMLではインデントでブロック構造を表すので、ブロ
|
|
748
825
|
これを防ぐには、何らかの方法でインデントを可視化します。
|
749
826
|
そうすると、プログラムコードがページをまたいでもインデントが分からなくなることはありません。
|
750
827
|
|
751
|
-
Starterでは「@<code>|//list[][]@<b>{[
|
828
|
+
Starterでは「@<code>|//list[][]@<b>{[indent=4]}{ ... //}|」@<fn>{lvw95}のようにすることで、インデントごとに薄い縦線をつけられます。
|
829
|
+
|
830
|
+
//footnote[lvw95][後方互換性のために、「@<code>{indentwidth=4}」という名前でも指定できます。]
|
752
831
|
|
753
|
-
//list[][薄い縦線をつけてインデントを可視化する][
|
832
|
+
//list[][薄い縦線をつけてインデントを可視化する][indent=4]{
|
754
833
|
class Fib:
|
755
834
|
|
756
835
|
def __call__(n):
|
@@ -792,30 +871,37 @@ Starterだと「@<code>|//image[ファイル名][説明文][scale=1.0,@<b>{pos=p
|
|
792
871
|
図なら「@<code>|@@<nop>{}<img>{ファイル名}|」、表なら「@<code>|@@<nop>{}<table>{ラベル}|」で参照します。
|
793
872
|
|
794
873
|
|
874
|
+
=== 白黒印刷でも問題ないか確認する
|
875
|
+
|
876
|
+
形は同じで色だけが違う図形を使うと、白黒印刷したときに判別がつかなくなります。
|
877
|
+
|
878
|
+
白黒印刷するなら、形を変えたり線の種類を変えたりするなどして、白黒印刷しても判別できるような図にしましょう。
|
879
|
+
|
880
|
+
|
795
881
|
=== 表のカラム幅を指定する
|
796
882
|
|
797
883
|
表に長い文章を入れると、ページ横にはみ出してしまいます。
|
798
884
|
|
799
|
-
このような場合は、「@<code>{//tsize[
|
885
|
+
このような場合は、「@<code>{//tsize[latex][@<b>{p{70mm\}}]}」のようにカラムの幅を指定しましょう。
|
800
886
|
|
801
|
-
//list[][サンプル]{
|
802
|
-
/@<nop>$$/tsize[|
|
887
|
+
//list[][サンプル][]{
|
888
|
+
/@<nop>$$/tsize[latex][|l|@<b>|p{70mm}||]
|
803
889
|
/@<nop>$$/table[tbl-jqqu9][長いテキストを使ったサンプル]{
|
804
890
|
伝承地 伝承内容
|
805
891
|
-------------------------------------------
|
806
|
-
風の谷
|
807
|
-
ゴンドアの谷
|
892
|
+
風の谷 その者、蒼き衣を纏て金色の野に降り立つべし。失われし大地との絆を結び、ついに人々を青き清浄の地に導かん。
|
893
|
+
ゴンドアの谷 リーテ・ラトバリタ・ウルス・アリアロス・バル・ネトリール
|
808
894
|
/@<nop>$$/}
|
809
895
|
//}
|
810
896
|
|
811
897
|
//sampleoutputbegin[表示結果]
|
812
898
|
|
813
|
-
//tsize[|
|
899
|
+
//tsize[latex][|l|p{70mm}|]
|
814
900
|
//table[tbl-jqqu9][長いテキストを使ったサンプル]{
|
815
901
|
伝承地 伝承内容
|
816
902
|
-------------------------------------------
|
817
|
-
風の谷
|
818
|
-
ゴンドアの谷
|
903
|
+
風の谷 その者、蒼き衣を纏て金色の野に降り立つべし。失われし大地との絆を結び、ついに人々を青き清浄の地に導かん。
|
904
|
+
ゴンドアの谷 リーテ・ラトバリタ・ウルス・アリアロス・バル・ネトリール
|
819
905
|
//}
|
820
906
|
|
821
907
|
//sampleoutputend
|
@@ -828,8 +914,8 @@ Starterだと「@<code>|//image[ファイル名][説明文][scale=1.0,@<b>{pos=p
|
|
828
914
|
表のカラムはデフォルトで左寄せ(l)ですが、右寄せ(r)や中央揃え(c)を指定できます。
|
829
915
|
特にカラムが数値なら、右寄せにするのがいいでしょう。
|
830
916
|
|
831
|
-
//list[][サンプル]{
|
832
|
-
/@<nop>$$/tsize[
|
917
|
+
//list[][サンプル][]{
|
918
|
+
/@<nop>$$/tsize[latex][@<b>{|l|c|r|}]
|
833
919
|
/@<nop>$$/table[tbl-o599k][左寄せ・中央揃え・右寄せのサンプル]{
|
834
920
|
左寄せ 中央揃え 右寄せ
|
835
921
|
-------------------------------------------
|
@@ -842,7 +928,7 @@ Starterだと「@<code>|//image[ファイル名][説明文][scale=1.0,@<b>{pos=p
|
|
842
928
|
|
843
929
|
//sampleoutputbegin[表示結果]
|
844
930
|
|
845
|
-
//tsize[|
|
931
|
+
//tsize[latex][|l|c|r|]
|
846
932
|
//table[tbl-o599k][左寄せ・中央揃え・右寄せのサンプル]{
|
847
933
|
左寄せ 中央揃え 右寄せ
|
848
934
|
-------------------------------------------
|
@@ -873,7 +959,7 @@ Starterだと「@<code>|//image[ファイル名][説明文][scale=1.0,@<b>{pos=p
|
|
873
959
|
//image[margin_book][紙の書籍ではページ左右の余白幅が必要][scale=0.8]
|
874
960
|
|
875
961
|
Starterではこのような制限を考慮しつつ、本文幅が最大になるよう設定しています。
|
876
|
-
そのため、@<
|
962
|
+
そのため、@<B>{印刷用PDFファイルでは奇数ページと偶数ページで左右の余白幅が違います}。
|
877
963
|
これは意図した仕様でありバグではありません。
|
878
964
|
|
879
965
|
電子用PDFファイルではこのようなことを考慮する必要はありません。
|
@@ -882,12 +968,35 @@ Starterではこのような制限を考慮しつつ、本文幅が最大にな
|
|
882
968
|
|
883
969
|
=== [PDF] タブレット向けでは余白を切り詰める
|
884
970
|
|
885
|
-
|
971
|
+
Starterでは、印刷用PDFと電子用PDFを切り替えて生成できます。
|
972
|
+
このとき、電子用PDFのレイアウトは印刷用PDFをほぼ忠実に再現しています。
|
973
|
+
つまり電子用PDFのレイアウトは電子用として最適化されているわけではなく、あくまで印刷用のレイアウトを流用しているだけです。
|
886
974
|
|
975
|
+
もし印刷用PDFを必要とせず、電子用PDFだけを必要とするなら、レイアウトをタブレット向けに最適化するといいでしょう。
|
976
|
+
タブレット向けのPDFでは、本文周辺の余白を切り詰めると、7インチや8インチのタブレットでの読みやすさが向上します。
|
977
|
+
余白がまったくないのもどうかと思いますが、全角1文字分ぐらいの余白があればタブレットの画面では十分です。
|
887
978
|
|
888
|
-
|
979
|
+
Starterでは、プロジェクト作成時にタブレット向けのレイアウトを選択できます。
|
980
|
+
そうすると、タブレット向けに余白を切り詰めたレイアウトになります。
|
981
|
+
印刷用PDFを必要としない人は試してみてください。
|
889
982
|
|
890
|
-
|
983
|
+
なおタブレット向けに余白を切り詰めたA5サイズの本文幅は、切り詰めていない通常のB5サイズの本文幅とほぼ同じになります。
|
984
|
+
つまりB5サイズで余白を切り詰めると本文幅が長くなりすぎるので、Starterではタブレット向けとしてはA5サイズのみを用意しています。
|
985
|
+
|
986
|
+
|
987
|
+
=== [PDF] 電子用PDFではページ番号の位置を揃える
|
988
|
+
|
989
|
+
紙の書籍においてページ番号は、見開きで左右の上隅または下隅に置かれることが多いです。
|
990
|
+
紙の書籍は見開きで読めるので、ページ番号がこのような位置でも問題ありません。
|
991
|
+
|
992
|
+
しかしこれと同じことを電子用PDFで行うと、ページ番号の位置が右上だったり左上だったり(あるいは右下だったり左下だったり)一定しないので、読みづらいです。
|
993
|
+
なぜなら、電子用PDFをタブレットで見るときは見開きではなく1ページずつ読まれるからです。
|
994
|
+
|
995
|
+
つまり紙の書籍におけるページ番号は見開きであることを前提にしており、それと同じ前提を電子用PDFにしてはいけません。
|
996
|
+
|
997
|
+
電子用PDFでは、ページ番号の位置は一定であることが望ましいです。
|
998
|
+
そのため、Starterではページ番号をページ下の真ん中に置いています。
|
999
|
+
またこの位置は紙の書籍でも通用するので、印刷用PDFと電子用PDFとで同じページレイアウトにできます。
|
891
1000
|
|
892
1001
|
|
893
1002
|
=== 非Retina向けには本文をゴシック体にする
|
@@ -916,19 +1025,45 @@ Starterでは「@<file>{config-starter.yml}」の設定を変えるだけで変
|
|
916
1025
|
//image[multiline-title][タイトルの改行位置を指定しなかった場合(上)とした場合(下)][scale=0.7,border=on]
|
917
1026
|
|
918
1027
|
|
919
|
-
=== 大扉を別のソフトで作成する
|
1028
|
+
==={subsec-visualtitlepage} 大扉を別のソフトで作成する
|
920
1029
|
|
921
1030
|
Re:VIEWやStarterが生成する大扉(タイトルページ)は、デザインがよくありません。
|
922
1031
|
PhotoshopやIllustratorやKeynoteで作成したほうが、見栄えのいいデザインになります(@<img>{titlepage-samples})。
|
923
1032
|
|
924
1033
|
//image[titlepage-samples][Keynoteで作成した大扉の例][scale=0.9]
|
925
1034
|
|
1035
|
+
Starterでは、別のソフトで作成した大扉や奥付のPDFファイルを読み込めます。
|
1036
|
+
やり方は@<secref>{04-customize|subsec-coverpdf}を参照してください。
|
1037
|
+
|
1038
|
+
またこうして読み込んだPDFファイルにも、ノンブルがつきます。
|
1039
|
+
以前は大扉や奥付のPDFファイルを読み込む機能がなかったため、最初にノンブルなしの印刷用PDFを生成し、大扉や奥付を差し替えてから、最後にノンブルをつける必要がありました。
|
1040
|
+
今は印刷用PDF生成時に大扉や奥付のPDFファイルを読み込めるので、最初からノンブルつきで印刷用PDFが生成できます。
|
1041
|
+
|
1042
|
+
このように、別ソフトで作成さた大扉を取り込む機能がStarterでは整っています。
|
1043
|
+
積極的に別ソフトで作っていきましょう。
|
1044
|
+
なお印刷所へ入稿するなら、大扉に背景色をつける場合は塗り足し@<fn>{fn-79q5r}もつけましょう。
|
1045
|
+
「塗り足し」が分からなければ、大扉の背景色を白にしておくと入稿時のトラブルが少なくなりま
|
1046
|
+
す。
|
1047
|
+
|
1048
|
+
//footnote[fn-79q5r][塗り足しについては@<secref>{04-customize|subsec-bleed}を参照してください。]
|
1049
|
+
|
1050
|
+
//note[大扉をKeynoteやPagesで作成する]{
|
1051
|
+
Keynote.appで大扉を作成しようとすると、困ったことにKeynote.appにはスライドのサイズをA5やB5にする機能がありません。
|
1052
|
+
かわりにスライドを次のようなカスタムサイズにすると、ちょうどA5やB5のサイズになります。
|
1053
|
+
|
1054
|
+
* A5の場合:419pt x 595pt
|
1055
|
+
* B5の場合:516pt x 728pt
|
1056
|
+
|
1057
|
+
またPages.appなら簡単にA5やB5にできます。
|
1058
|
+
B5にしたい場合は「JIS B5」を選んでください。
|
1059
|
+
//}
|
1060
|
+
|
926
1061
|
|
927
1062
|
|
928
1063
|
== 奥付
|
929
1064
|
|
930
1065
|
|
931
|
-
=== 奥付は最後のページに置く
|
1066
|
+
==={subsec-colophonlastpage} 奥付は最後のページに置く
|
932
1067
|
|
933
1068
|
紙の本は必ず偶数ページになります。
|
934
1069
|
たとえば、ページ数が100ページの本はあっても101ページの本はありません。
|
@@ -940,14 +1075,14 @@ PhotoshopやIllustratorやKeynoteで作成したほうが、見栄えのいい
|
|
940
1075
|
|
941
1076
|
実は素のRe:VIEWではこれが考慮されておらず、奥付が奇数ページに置かれることがあります@<fn>{fn-qzmgo}。
|
942
1077
|
Starterではこのようなことはありません。
|
943
|
-
|
1078
|
+
奥付は必ず最後の偶数ページに置かれます。気が利いてますね。
|
944
1079
|
|
945
1080
|
//footnote[fn-qzmgo][TechBoosterのテンプレートでは偶数ページに置かれるように修正されています。]
|
946
1081
|
|
947
1082
|
|
948
1083
|
=== 奥付に更新履歴とイベント名を記載する
|
949
1084
|
|
950
|
-
|
1085
|
+
一般的に、奥付には本の更新履歴が記載されます。
|
951
1086
|
|
952
1087
|
同人誌ならそれに加えて、初出のイベント名も記載するといいでしょう。
|
953
1088
|
そうすると、どのイベントで手に入れたかが分かりやすくなります@<fn>{fn-ksg34}。
|
@@ -969,3 +1104,240 @@ Starterではこのようなことはありません。
|
|
969
1104
|
たとえば「InDesignで作った」「MS Word 2016で作った」「Pages 10.0で作った」「Vivliostyleで作った」という情報があると、これから本や同人誌を作ろうとする人にとって大きな手がかりとなります。
|
970
1105
|
|
971
1106
|
またエディタに強いこだわりがある人なら「VS Codeで執筆した」「Vimで執筆した」のようにアピールするのもいいでしょう。
|
1107
|
+
|
1108
|
+
|
1109
|
+
|
1110
|
+
=={sec-textlint} textlintによる文章チェック
|
1111
|
+
|
1112
|
+
この章では、「textlint」というツールを使って文章をチェックする方法を紹介します。
|
1113
|
+
|
1114
|
+
|
1115
|
+
=== textlintとは
|
1116
|
+
|
1117
|
+
「@<href>{https://github.com/textlint/textlint, textlint}」とは、日本語の文章をチェックして改善点を指摘してくれるツールです。
|
1118
|
+
|
1119
|
+
たとえば、次のような内容のファイルがあるとします。
|
1120
|
+
ファイル名の拡張子は「@<file>{.rd}」ではなく「@<file>{.md}」であることに注意してください。
|
1121
|
+
|
1122
|
+
//list[][@<file>{sample1.md}:改善前]{
|
1123
|
+
Re:VIEW Starterを使うと、きれいなPDFファイルを作成することができます。
|
1124
|
+
//}
|
1125
|
+
|
1126
|
+
これをtextlintでチェックすると、「もっと簡潔に書けるよ」と指摘してくれます(textlintのインストールについてはあとで説明します)。
|
1127
|
+
|
1128
|
+
//terminal{
|
1129
|
+
$ @<userinput>{textlint sample1.md}
|
1130
|
+
|
1131
|
+
/Users/yourname/sample1.md
|
1132
|
+
1:35 ✓ error 【dict2】 "することができます"は冗長な表現です。"することが"を省き簡潔な表現にすると文章が明瞭になります。
|
1133
|
+
解説: https://github.com/textlint-ja/textlint-rule-ja-no-redundant-expression#dict2 ja-technical-writing/ja-no-redundant-expression
|
1134
|
+
|
1135
|
+
✖ 1 problem (1 error, 0 warnings)
|
1136
|
+
✓ 1 fixable problem.
|
1137
|
+
Try to run: $ textlint --fix [file]
|
1138
|
+
|
1139
|
+
//}
|
1140
|
+
|
1141
|
+
指摘された通りに改善してみましょう。
|
1142
|
+
|
1143
|
+
//list[][@<file>{sample1.md}:改善後]{
|
1144
|
+
Re:VIEW Starterを使うと、きれいなPDFファイルを作成@<del>{することが}できます。
|
1145
|
+
//}
|
1146
|
+
|
1147
|
+
これをtextlintでチェックすると、指摘されなくなりました。
|
1148
|
+
|
1149
|
+
//terminal{
|
1150
|
+
$ textlint sample1.md @<balloon>{何もエラーが出ない}
|
1151
|
+
//}
|
1152
|
+
|
1153
|
+
もう1つ、別の例を見てみましょう。
|
1154
|
+
たとえば次のような文章があるとします。
|
1155
|
+
|
1156
|
+
//list[][@<file>{sample2.md}:改善前]{
|
1157
|
+
ノンブルは、印刷所に入稿するときに必要です。
|
1158
|
+
//}
|
1159
|
+
|
1160
|
+
一見すると問題がない文章ですが、textlintでチェックすると「1つの文に複数個の『に』があるよ」と指摘してくれます。
|
1161
|
+
|
1162
|
+
//terminal{
|
1163
|
+
$ textlint sample2.md
|
1164
|
+
|
1165
|
+
/Users/yourname/sample1.md
|
1166
|
+
1:17 error 一文に二回以上利用されている助詞 "に" がみつかりました。 japanese/no-doubled-joshi
|
1167
|
+
|
1168
|
+
✖ 1 problem (1 error, 0 warnings)
|
1169
|
+
|
1170
|
+
//}
|
1171
|
+
|
1172
|
+
指摘されたことを改善してみましょう。
|
1173
|
+
|
1174
|
+
//list[][@<file>{sample2.md}:改善後]{
|
1175
|
+
ノンブルは、印刷所@<del>{に}@<b>{へ}入稿するときに必要です。
|
1176
|
+
//}
|
1177
|
+
|
1178
|
+
改善後は、指摘されなくなりました。
|
1179
|
+
|
1180
|
+
//terminal{
|
1181
|
+
$ textlint sample2.md @<balloon>{何もエラーが出ない}
|
1182
|
+
//}
|
1183
|
+
|
1184
|
+
このように、textlintを使うと日本語文章の改善できそうな点が分かります。
|
1185
|
+
とはいえ、textlintも万能ではありません。
|
1186
|
+
次の項で注意点を説明します。
|
1187
|
+
|
1188
|
+
|
1189
|
+
=== textlintの注意点
|
1190
|
+
|
1191
|
+
textlintは似たような文章であっても、改善点を指摘してくれないことがあります。
|
1192
|
+
たとえば先ほどの1番目の例である「@<bou>{作成する}ことができます」だと改善点を指摘してくれますが、「@<bou>{作る}ことができます」だと指摘してくれません。
|
1193
|
+
前者が「作成できます」に改善できたように、後者も「作れます」に改善できます。
|
1194
|
+
|
1195
|
+
またtextlintは「どこが改善できるか」を教えてくれますが、「どう改善できるか」は必ずしも教えてくれません。
|
1196
|
+
先ほどの2番目の例がまさにそれで、『に』が複数あることは教えてくれますが、どう直せばいいかは自分で考える必要があります。
|
1197
|
+
|
1198
|
+
さらにtextlintの指摘がいつも正しいわけではありません。
|
1199
|
+
たとえば「血も涙もない。」という文章をtextlintでチェックすると、「1つの文章に複数個の『も』があるよ」と指摘されます。
|
1200
|
+
しかしこの指摘がおかしいことは、明らかでしょう。
|
1201
|
+
|
1202
|
+
//list[][@<file>{sample3.md}:修正前]{
|
1203
|
+
血も涙もない。
|
1204
|
+
//}
|
1205
|
+
|
1206
|
+
//terminal{
|
1207
|
+
$ textlint sample3.md
|
1208
|
+
|
1209
|
+
/Users/yourname/sample3.md
|
1210
|
+
1:4 error 一文に二回以上利用されている助詞 "も" がみつかりました。 japanese/no-doubled-joshi
|
1211
|
+
|
1212
|
+
✖ 1 problem (1 error, 0 warnings)
|
1213
|
+
|
1214
|
+
//}
|
1215
|
+
|
1216
|
+
『も』が複数個現れないように修正できますが、これはさすがにやりすぎです。
|
1217
|
+
しないほうがいいでしょう。
|
1218
|
+
|
1219
|
+
//list[][@<file>{sample3.md}:修正後]{
|
1220
|
+
@<del>{血も涙もない。}
|
1221
|
+
@<b>{血と涙のどちらも欠いている。}
|
1222
|
+
//}
|
1223
|
+
|
1224
|
+
//terminal{
|
1225
|
+
$ textlint sample3.md @<balloon>{何もエラーが出ない}
|
1226
|
+
//}
|
1227
|
+
|
1228
|
+
このような過剰な指摘が起きたのは、Starterがデフォルトで用意したtextlint用の設定が、技術文章向けだからです。
|
1229
|
+
textlintは、事前に設定されたルールに従って文章をチェックするツールです。
|
1230
|
+
設定されたルールが小説向けであれば小説向けのチェックをし、技術文章向けであれば技術文章向けのチェックをします。
|
1231
|
+
|
1232
|
+
textlintの設定は、プロジェクトフォルダの直下にある「@<file>{.textlintrc}」というファイルで変更できます。
|
1233
|
+
たとえば次のように変更すると、複数の『も』が登場してもエラーにならなくなります。
|
1234
|
+
|
1235
|
+
//list[][@<file>{.textlintrc}]{
|
1236
|
+
{
|
1237
|
+
"filters": {
|
1238
|
+
}
|
1239
|
+
, "rules": {
|
1240
|
+
"preset-japanese": false
|
1241
|
+
@<del>|, "preset-ja-technical-writing": true|
|
1242
|
+
@<b>|, "preset-ja-technical-writing": {|
|
1243
|
+
@<b>|"no-doubled-joshi": {|
|
1244
|
+
@<b>|"allow": ["も"]|
|
1245
|
+
@<b>|}|
|
1246
|
+
@<b>|}|
|
1247
|
+
, "preset-jtf-style": false
|
1248
|
+
, "preset-ja-spacing": false
|
1249
|
+
, "preset-ja-engineering-paper": false
|
1250
|
+
}
|
1251
|
+
//}
|
1252
|
+
|
1253
|
+
「@<file>{.textlintrc}」についてこれ以上の解説はしません。
|
1254
|
+
詳しく知りたい人は「textlint 使い方」でGoogle検索してください。
|
1255
|
+
|
1256
|
+
ここまでが、textlintについての一般的な説明でした。
|
1257
|
+
次の項から、Starterでtextlintを使う方法を説明します。
|
1258
|
+
|
1259
|
+
|
1260
|
+
=== Starterのプロジェクトでtextlintを使う
|
1261
|
+
|
1262
|
+
Starterのプロジェクトでtextlintを使うには、次のようにします。
|
1263
|
+
|
1264
|
+
- (1) Node.jsとnpmコマンドをインストールする。
|
1265
|
+
- (2) textlintをインストールする。
|
1266
|
+
- (3) textlintで原稿をチェックする。
|
1267
|
+
|
1268
|
+
(1)と(2)は準備なので、プロジェクトごとに一度だけ行います。
|
1269
|
+
|
1270
|
+
それぞれ順番に説明します。
|
1271
|
+
|
1272
|
+
|
1273
|
+
==== (1) Node.jsとnpmコマンドをインストール
|
1274
|
+
|
1275
|
+
textlintを実行するには、@<href>{https://nodejs.org/, Node.js}とnpmコマンドをインストールする必要があります。
|
1276
|
+
|
1277
|
+
* Dockerを使っている場合は、Dockerイメージの中にNode.jsとnpmコマンドがインストール済みなので、何もする必要がありません。
|
1278
|
+
* Dockerを使っていない場合は、@<href>{https://nodejs.org/}にアクセスしてNode.jsをインストールしてください。
|
1279
|
+
npmコマンドも自動的にインストールされます。
|
1280
|
+
|
1281
|
+
//note[Node.jsのバージョンについて]{
|
1282
|
+
インストールするNode.jsのバージョンは、「LTS」と書かれたほうを選ぶといいでしょう。
|
1283
|
+
Current」と書かれたほうのバージョンでも動作しますが、こちらは上級者向けです。
|
1284
|
+
//}
|
1285
|
+
|
1286
|
+
==== (2) textlintをインストール
|
1287
|
+
|
1288
|
+
次に、textlintとその関連ライブラリをインストールします。
|
1289
|
+
StarterではそのためのRakeタスクが用意されているので、次のコマンドを実行してください。
|
1290
|
+
|
1291
|
+
//terminal[][textlintと関連ライブラリをインストール]{
|
1292
|
+
$ @<userinput>{rake textlint:setup} @<balloon>{Dockerを使わない場合}
|
1293
|
+
$ @<userinput>{rake docker:textlint:setup} @<balloon>{Dockerを使う場合}
|
1294
|
+
//}
|
1295
|
+
|
1296
|
+
これでtextlintのインストールは完了しました。
|
1297
|
+
|
1298
|
+
==== (3) textlintで原稿をチェック
|
1299
|
+
|
1300
|
+
textlintを使って原稿の文章をチェックするには、「@<code>{rake textlint}」(または「@<code>{rake docker:textlint}」)を実行してください。
|
1301
|
+
|
1302
|
+
//terminal[][textlintで原稿の文章をチェックする(結果は省略)]{
|
1303
|
+
$ @<userinput>{rake textlint} @<balloon>{Dockerを使わない場合}
|
1304
|
+
$ @<userinput>{rake docker:textlint} @<balloon>{Dockerを使う場合}
|
1305
|
+
//}
|
1306
|
+
|
1307
|
+
たくさんのエラーが出るので驚くでしょう。
|
1308
|
+
指摘された点のすべてを修正する必要はありません。
|
1309
|
+
自分で納得できたことだけを修正すればいいです。
|
1310
|
+
|
1311
|
+
ただし出力結果を見ると、ファイル名と行番号が原稿とは違うことに気づくはずです。
|
1312
|
+
この理由を次の項で説明します。
|
1313
|
+
|
1314
|
+
|
1315
|
+
=== Starterにおけるtextlint実行の仕組み
|
1316
|
+
|
1317
|
+
textlintは、Starterの原稿ファイル(@<file>{*.re})には対応していません。
|
1318
|
+
そこでStarterでは、次のような仕組みでtextlintを実行します。
|
1319
|
+
|
1320
|
+
- (1) 原稿ファイル(@<file>{*.re})をMarkdown形式のファイル(@<file>{*.md})に変換する。
|
1321
|
+
- (2) Markdown形式のファイルをtextlintでチェックする。
|
1322
|
+
|
1323
|
+
このような仕組みのため、textlintが報告するのはMarkdown形式のファイルにおける行番号であり、原稿ファイルの行番号ではありません。
|
1324
|
+
よってtextlintの指摘事項を反映するには、出力された行番号をもとにMarkdownファイルを見て指摘内容を確認し、原稿ファイルに戻って修正するという手順になります。
|
1325
|
+
|
1326
|
+
これは理想的とは言い難いです。
|
1327
|
+
解決方法は3つ考えられます。
|
1328
|
+
|
1329
|
+
- (A) textlintを改造して、Starterの原稿ファイルを直接読んで解釈できるようにする。
|
1330
|
+
- (B) 原稿ファイルとMarkdownファイルの行番号が一致するように変換する。
|
1331
|
+
- (C) 原稿ファイルとMarkdownファイルとの行番号のマッピングデータを生成し、それを利用してtextlintの出力結果に含まれる行番号をMarkdownファイルの行番号から原稿ファイルの行番号に書き換える。
|
1332
|
+
|
1333
|
+
どれも手間のかかる作業になるので、将来も含めて対応はあまり期待しないでください。
|
1334
|
+
|
1335
|
+
もしもっといい方法を思いついた人がいたら、ぜひ教えてくださるようお願いします。
|
1336
|
+
|
1337
|
+
|
1338
|
+
//note[Markdownへの変換は精度がよくない]{
|
1339
|
+
StarterにおけるMarkdown形式への変換機能はtextlintで使うために実装したので、「textlintで使えればそれでいい」という割り切りをしています。
|
1340
|
+
そのため、Markdown形式への変換は精度があまりよくありません。
|
1341
|
+
|
1342
|
+
「こう改善してほしい」と具体的に提案していただければ対応しますが、そもそもあまり力を入れた機能ではないことをご了承ください。
|
1343
|
+
//}
|