review-retrovert 0.9.10 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +1 -1
  3. data/.gitignore +0 -1
  4. data/.pinact.yaml +12 -0
  5. data/.ruby-version +1 -1
  6. data/Dockerfile +2 -1
  7. data/Dockerfile.local +13 -0
  8. data/Gemfile.lock +62 -35
  9. data/Makefile +7 -0
  10. data/README.md +2 -1
  11. data/Rakefile +9 -0
  12. data/aqua.yaml +20 -0
  13. data/hooks/post_push +14 -1
  14. data/lib/review/retrovert/cli.rb +10 -2
  15. data/lib/review/retrovert/converter.rb +106 -20
  16. data/lib/review/retrovert/reviewdef.rb +29 -0
  17. data/lib/review/retrovert/sty/review-utbook.cls +7 -0
  18. data/lib/review/retrovert/version.rb +1 -1
  19. data/lib/review/retrovert/yamlconfig.rb +38 -1
  20. data/review-retrovert.gemspec +18 -4
  21. data/zizmor.yml +5 -0
  22. metadata +54 -121
  23. data/.github/FUNDING.yml +0 -4
  24. data/.github/workflows/release.yml +0 -26
  25. data/.github/workflows/retrovert.yml +0 -76
  26. data/testdata/mybook/.gitignore +0 -9
  27. data/testdata/mybook/.textlintrc +0 -11
  28. data/testdata/mybook/README.md +0 -43
  29. data/testdata/mybook/Rakefile +0 -24
  30. data/testdata/mybook/catalog.yml +0 -60
  31. data/testdata/mybook/config-noretrovert.yml +0 -404
  32. data/testdata/mybook/config-retrovert.yml +0 -16
  33. data/testdata/mybook/config-starter.yml +0 -264
  34. data/testdata/mybook/config.yml +0 -404
  35. data/testdata/mybook/contents/00-preface.re +0 -129
  36. data/testdata/mybook/contents/01-install.re +0 -305
  37. data/testdata/mybook/contents/02-tutorial.re +0 -1228
  38. data/testdata/mybook/contents/03-syntax.re +0 -4610
  39. data/testdata/mybook/contents/04-customize.re +0 -1064
  40. data/testdata/mybook/contents/05-faq.re +0 -606
  41. data/testdata/mybook/contents/06-bestpractice.re +0 -1343
  42. data/testdata/mybook/contents/91-compare.re +0 -418
  43. data/testdata/mybook/contents/92-filelist.re +0 -125
  44. data/testdata/mybook/contents/93-background.re +0 -267
  45. data/testdata/mybook/contents/99-postface.re +0 -39
  46. data/testdata/mybook/contents/r0-inner.re +0 -2
  47. data/testdata/mybook/contents/r0-root.re +0 -31
  48. data/testdata/mybook/contents/table.csv +0 -4
  49. data/testdata/mybook/contents/test.txt +0 -1
  50. data/testdata/mybook/css/normalize.css +0 -349
  51. data/testdata/mybook/css/webstyle.css +0 -692
  52. data/testdata/mybook/data/terms.txt +0 -3
  53. data/testdata/mybook/data/words.txt +0 -15
  54. data/testdata/mybook/images/03-syntax/favicon-16x16.png +0 -0
  55. data/testdata/mybook/images/03-syntax/figure_heretop.png +0 -0
  56. data/testdata/mybook/images/03-syntax/index-page.png +0 -0
  57. data/testdata/mybook/images/03-syntax/order-detail.png +0 -0
  58. data/testdata/mybook/images/03-syntax/tw-icon1.jpg +0 -0
  59. data/testdata/mybook/images/03-syntax/tw-icon2.jpg +0 -0
  60. data/testdata/mybook/images/03-syntax/tw-icon3.jpg +0 -0
  61. data/testdata/mybook/images/03-syntax/tw-icon4.jpg +0 -0
  62. data/testdata/mybook/images/04-customize/caption_pagebreak.png +0 -0
  63. data/testdata/mybook/images/04-customize/chaptitlepage_sample.png +0 -0
  64. data/testdata/mybook/images/04-customize/section_decoration_samples.png +0 -0
  65. data/testdata/mybook/images/05-faq/codeblock_rpadding1.png +0 -0
  66. data/testdata/mybook/images/05-faq/codeblock_rpadding2.png +0 -0
  67. data/testdata/mybook/images/05-faq/dummy-image.png +0 -0
  68. data/testdata/mybook/images/06-bestpractice/figure_heretop.png +0 -0
  69. data/testdata/mybook/images/06-bestpractice/font_beramono.png +0 -0
  70. data/testdata/mybook/images/06-bestpractice/heading_design1.png +0 -0
  71. data/testdata/mybook/images/06-bestpractice/heading_design2.png +0 -0
  72. data/testdata/mybook/images/06-bestpractice/margin_book.png +0 -0
  73. data/testdata/mybook/images/06-bestpractice/multiline-title.png +0 -0
  74. data/testdata/mybook/images/06-bestpractice/preface_numbered.png +0 -0
  75. data/testdata/mybook/images/06-bestpractice/program_border.png +0 -0
  76. data/testdata/mybook/images/06-bestpractice/sechead_design_4.png +0 -0
  77. data/testdata/mybook/images/06-bestpractice/section_title_wlines.png +0 -0
  78. data/testdata/mybook/images/06-bestpractice/titlepage-samples.png +0 -0
  79. data/testdata/mybook/images/93-background/bug913.png +0 -0
  80. data/testdata/mybook/images/93-background/slide2.png +0 -0
  81. data/testdata/mybook/images/avatar-b.png +0 -0
  82. data/testdata/mybook/images/avatar-g.png +0 -0
  83. data/testdata/mybook/images/avatar-r.png +0 -0
  84. data/testdata/mybook/images/caution-icon.png +0 -0
  85. data/testdata/mybook/images/cover_a5.pdf +0 -0
  86. data/testdata/mybook/images/cover_b5.pdf +0 -0
  87. data/testdata/mybook/images/info-icon.png +0 -0
  88. data/testdata/mybook/images/tw-icon.jpg +0 -0
  89. data/testdata/mybook/images/warning-icon.png +0 -0
  90. data/testdata/mybook/layouts/layout.epub.erb +0 -29
  91. data/testdata/mybook/layouts/layout.html5.erb +0 -108
  92. data/testdata/mybook/layouts/layout.tex.erb +0 -432
  93. data/testdata/mybook/layouts/layout.tex.erb.orig +0 -386
  94. data/testdata/mybook/lib/hooks/beforetexcompile.rb +0 -55
  95. data/testdata/mybook/lib/ruby/review-book.rb +0 -64
  96. data/testdata/mybook/lib/ruby/review-builder.rb +0 -1342
  97. data/testdata/mybook/lib/ruby/review-cli.rb +0 -58
  98. data/testdata/mybook/lib/ruby/review-compiler.rb +0 -1176
  99. data/testdata/mybook/lib/ruby/review-epubbuilder.rb +0 -33
  100. data/testdata/mybook/lib/ruby/review-epubmaker.rb +0 -609
  101. data/testdata/mybook/lib/ruby/review-htmlbuilder.rb +0 -949
  102. data/testdata/mybook/lib/ruby/review-latexbuilder.rb +0 -1065
  103. data/testdata/mybook/lib/ruby/review-maker.rb +0 -346
  104. data/testdata/mybook/lib/ruby/review-markdownbuilder.rb +0 -945
  105. data/testdata/mybook/lib/ruby/review-markdownmaker.rb +0 -91
  106. data/testdata/mybook/lib/ruby/review-monkeypatch.rb +0 -93
  107. data/testdata/mybook/lib/ruby/review-pdfmaker.rb +0 -546
  108. data/testdata/mybook/lib/ruby/review-textbuilder.rb +0 -36
  109. data/testdata/mybook/lib/ruby/review-tocparser.rb +0 -285
  110. data/testdata/mybook/lib/ruby/review-webmaker.rb +0 -448
  111. data/testdata/mybook/lib/tasks/mytasks.rake +0 -31
  112. data/testdata/mybook/lib/tasks/review.rake +0 -156
  113. data/testdata/mybook/lib/tasks/review.rake.orig +0 -72
  114. data/testdata/mybook/lib/tasks/starter.rake +0 -470
  115. data/testdata/mybook/locale.yml +0 -6
  116. data/testdata/mybook/review-ext.rb +0 -206
  117. data/testdata/mybook/sty/indexstyle.ist +0 -25
  118. data/testdata/mybook/sty/jumoline.sty +0 -310
  119. data/testdata/mybook/sty/mycolophon.sty +0 -81
  120. data/testdata/mybook/sty/mystyle.sty +0 -8
  121. data/testdata/mybook/sty/mytextsize.sty +0 -90
  122. data/testdata/mybook/sty/mytitlepage.sty +0 -126
  123. data/testdata/mybook/sty/review-base.sty +0 -276
  124. data/testdata/mybook/sty/reviewmacro.sty +0 -60
  125. data/testdata/mybook/sty/starter-codeblock.sty +0 -463
  126. data/testdata/mybook/sty/starter-color.sty +0 -134
  127. data/testdata/mybook/sty/starter-font.sty +0 -112
  128. data/testdata/mybook/sty/starter-heading.sty +0 -561
  129. data/testdata/mybook/sty/starter-misc.sty +0 -894
  130. data/testdata/mybook/sty/starter-note.sty +0 -180
  131. data/testdata/mybook/sty/starter-section.sty +0 -262
  132. data/testdata/mybook/sty/starter-talklist.sty +0 -105
  133. data/testdata/mybook/sty/starter-toc.sty +0 -72
  134. data/testdata/mybook/sty/starter-util.sty +0 -35
  135. data/testdata/mybook/sty/starter.sty +0 -36
  136. data/testdata/mybook/style.css +0 -597
@@ -1,606 +0,0 @@
1
- = FAQ
2
-
3
- //abstract{
4
- よくある質問とその回答(Frequentry Asked Question, FAQ)を紹介します。
5
- //}
6
-
7
- #@#//makechaptitlepage[toc=on]
8
-
9
-
10
- =={sec-compileerror} コンパイルエラー
11
-
12
-
13
- === コンパイルエラーが出たとき
14
-
15
- PDFファイル生成時のコンパイルエラーについて、対処方法を説明します。
16
-
17
- PDFへのコンパイルは、内部では大きく3つのステージに分かれます。
18
-
19
- - (1) 設定ファイルを読み込む(@<file>{config.yml}、@<file>{config-starter.yml}、@<file>{catalog.yml})
20
- - (2) 原稿ファイル(@<file>{*.re})を@<LaTeX>{}ファイルへ変換する
21
- - (3) @<LaTeX>{}ファイルからPDFファイルを生成する
22
-
23
- (1)のステージでは、設定ファイルの書き方に間違いがあるとエラーが発生します。
24
- たとえば次のような点に注意してください。
25
-
26
- * タブ文字を使ってないか(使っているとエラー)
27
- * インデントが揃っているか(揃ってないとエラー)
28
- * 必要な空白が抜けてないか(「@<code>{-}」や「@<code>{:}」の直後)
29
-
30
- (2)のステージでは、インライン命令やブロック命令の書き方に間違いがあるとエラーが発生します。
31
- たとえば次のような点に注意してください。
32
-
33
- * インライン命令がきちんと閉じているか
34
- * ブロック命令の引数が足りているか、多すぎないか
35
- * 「@<code>|//}|」が足りてないか、または多すぎないか
36
- * 「@<code>|@@<nop>{}<fn>{}|」や「@<code>|@@<nop>{}<img>{}|」や「@<code>|@@<nop>{}<table>{}|」のラベルが合っているか
37
- * 「@<code>|@@<nop>{}<chapref>{}|」で指定した章IDが合っているか
38
- * 「@<code>|@@<nop>{}<secref>{}|」で指定した節や項が存在するか
39
- * 脚注の中で「@<code>{]}」を「@<code>{\]}」とエスケープしているか
40
- * 「@<code>|//image|」で指定した画像ファイルが存在するか
41
- * 原稿ファイル名を間違っていないか
42
- * 原稿ファイルの文字コードがUTF-8になっているか
43
-
44
- このエラーの場合はエラーメッセージが出るので、それを@<bou>{注意深く読めば}解決の糸口が掴めます。
45
-
46
- (3)のステージでのエラーはあまり発生しないものの、原因がとても分かりにくく、@<LaTeX>{}に慣れている人でないと解決は難しいです。
47
- ときどきキャッシュファイル(@<file>{*-pdf/})のせいでおかしくなることがあるので、@<B>{困ったらキャッシュファイルを消して再コンパイル}してみましょう。
48
-
49
- //terminal[][困ったらキャッシュファイルを消して再コンパイル]{
50
- $ @<userinput>{rm -rf mybook-pdf} @<balloon>{キャッシュファイルを消す}
51
- $ @<userinput>{rake pdf} @<balloon>{または rake docker:pdf}
52
- //}
53
-
54
- それでもエラーが解決できない場合は、ハッシュタグ「@<em>{#reviewstarter}」をつけてTwitterで聞いてみてください(宛先はなくて構いません)。
55
-
56
-
57
- === 「@<code>|review-pdfmaker|」でPDFが生成できない
58
-
59
- Starterでは、「@<code>|review-pdfmaker|」や「@<code>|review-epubmaker|」は使えません。
60
- かわりに「@<code>|rake pdf|」や「@<code>|rake epub|」を使ってください。
61
-
62
-
63
-
64
- == 本文
65
-
66
-
67
- === 左右の余白が違う
68
-
69
- 印刷用PDFファイルでは、左右の余白幅を意図的に変えています。
70
- これは印刷時の読みやすさを確保したまま、本文の幅を最大限に広げているからです。
71
- 詳しくは@<secref>{06-bestpractice|subsec-sidemargin}を見てください。
72
-
73
-
74
- === 文章中のプログラムコードに背景色をつけたい
75
-
76
- 「@<code>|@@<nop>{}<code>{...}|」による文章中のプログラムコードに、背景色をつけられます。
77
- そのためには、「@<file>{config-starter.yml}」で「@<code>|inlinecode_gray: true|」を設定してください。
78
-
79
- //list[][ファイル「@<file>{config-starter.yml}」]{
80
- inlinecode_gray: true
81
- //}
82
-
83
- こうすると、@<file>{sty/starter.sty}において次のような@<LaTeX>{}マクロが有効になります。
84
- 背景色を変えたい場合はこのマクロを変更してください。
85
-
86
- //list[][ファイル「sty/starter.sty」]{
87
- \renewcommand{\reviewcode}[1]{%
88
- \,% % ほんの少しスペースを入れる
89
- \colorbox{shadecolor}{% % 背景色を薄いグレーに変更
90
- \texttt{#1}% % 文字種を等幅フォントに変更
91
- }%
92
- \,% % ほんの少しスペースを入れる
93
- }
94
- //}
95
-
96
-
97
- === 索引をつけたい
98
-
99
- Re:VIEWのWikiページを参照してください。
100
-
101
- * @<href>{https://github.com/kmuto/review/blob/master/doc/makeindex.ja.md}
102
-
103
-
104
-
105
- == プログラムコードとターミナル
106
-
107
-
108
- === プログラムコードの見た目が崩れる
109
-
110
- おそらく、プログラムコードの中でタブ文字が使われています。
111
- タブ文字を半角空白に置き換えてみてください。
112
-
113
- Starterでは、プログラム中のタブ文字は自動的に半角空白に置き換わります。
114
- しかしインライン命令があるとどうしてもカラム幅を正しく計算できないので、意図したようには半角空白に置き換わらず、プログラムの見た目が崩れます。
115
-
116
-
117
- === 右端に到達してないのに折り返しされる
118
-
119
- Starterではプログラム中の長い行が自動的に右端で折り返されます。
120
- このとき、右端にはまだ文字が入るだけのスペースがありそうなのに折り返しされることがあります(@<img>{codeblock_rpadding1})。
121
-
122
- //image[codeblock_rpadding1][右端にはまだ文字が入るだけのスペースがありそうだが…][scale=0.7]
123
-
124
- このような場合、プログラムやターミナルの表示幅をほんの少し広げるだけで、右端まで文字が埋まるようになります。
125
-
126
- 具体的には、ファイル「@<file>{config-starter.yml}」の中の「@<code>{program_widen: 0.0mm}」や「@<code>{terminal_widen: 0.0mm}」を、たとえば「@<code>{0.3mm}」に設定してください(値は各自で調整してください)。
127
-
128
- //list[][ファイル「config-starter.yml」]{
129
- ## プログラム(//list)の表示幅をほんの少しだけ広げる。
130
- @<del>{program_widen: 0.0mm}
131
- @<b>{program_widen: 0.3mm}
132
-
133
- ## ターミナル(//terminal, //cmd)の表示幅をほんの少しだけ広げる。
134
- @<del>{terminal_widen: 0.0mm}
135
- @<b>{terminal_widen: 0.3mm}
136
- //}
137
-
138
- こうすると、プログラムやターミナルの表示幅が少しだけ広がり、文字が右端まで埋まるようになります(@<img>{codeblock_rpadding2})。
139
-
140
- //image[codeblock_rpadding2][表示幅をほんの少し広げると、右端まで埋まるようになった][scale=0.7]
141
-
142
-
143
- === 全角文字の幅を半角文字2個分にしたい
144
-
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|」を指定してください。
147
-
148
- または英数字の幅が狭いフォントを使うと、半角文字の幅が全角文字の約半分になります(ぴったりにはなりません)。
149
- @<file>{config-starter.yml}で、次のうち必要なほうを設定してください。
150
-
151
- //list[][]{
152
- ## //list用
153
- program_ttfont: inconsolata-narrow
154
-
155
- ## //terminal用
156
- terminal_ttfont: inconsolata-narrow
157
- //}
158
-
159
-
160
- === ターミナルの出力を折り返しせずに表示したい
161
-
162
- ターミナルの出力結果を折り返しせずに表示するには、いくつか方法があります。
163
-
164
- ===== 小さいフォントで表示する
165
-
166
- 「@<code>|//terminal|」や「@<code>|//list|」では、小さいフォントで表示するオプションがあります。
167
- フォントサイズは「@<code>|small|」「@<code>|x-small|」「@<code>|xx-small|」の3つが選べます。
168
-
169
- //list[][サンプル][]{
170
- /@<nop>$$/terminal[][小さいフォントで表示する][@<b>|fontsize=x-small|]{
171
- Table "public.customers"
172
- Column | Type | Nullable | Default
173
- ------------+---------+----------+---------------------------------------
174
- id | integer | not null | nextval('customers_id_seq'::regclass)
175
- name | text | not null |
176
- created_on | date | not null | CURRENT_DATE
177
- Indexes:
178
- "customers_pkey" PRIMARY KEY, btree (id)
179
- "customers_name_key" UNIQUE CONSTRAINT, btree (name)
180
- /@<nop>$$/}
181
- //}
182
-
183
- //sampleoutputbegin[表示結果]
184
-
185
- //terminal[][小さいフォントで表示する][fontsize=x-small]{
186
- Table "public.customers"
187
- Column | Type | Nullable | Default
188
- ------------+---------+----------+---------------------------------------
189
- id | integer | not null | nextval('customers_id_seq'::regclass)
190
- name | text | not null |
191
- created_on | date | not null | CURRENT_DATE
192
- Indexes:
193
- "customers_pkey" PRIMARY KEY, btree (id)
194
- "customers_name_key" UNIQUE CONSTRAINT, btree (name)
195
- //}
196
-
197
- //sampleoutputend
198
-
199
-
200
-
201
- ===== 幅の狭い等幅フォントを使う
202
-
203
- Starterでは等幅フォントを複数の中から選べます。
204
- このうち「@<em>{inconsolata-narrow}」は文字の表示幅が狭いので、できるだけ折り返しをさせたくない場合に有効です。
205
-
206
- 「@<file>{config-starter.yml}」で「@<code>|terminal_ttfont:|」を「@<code>|inconsolata-narrow|」に設定してください。
207
-
208
-
209
- === コードハイライトしたい
210
-
211
- コードハイライトは、Starterでは未サポートです@<fn>{fn-rkpw8}。
212
- 将来的にはサポートする予定ですが、時期は未定です。
213
-
214
- //footnote[fn-rkpw8][Re:VIEWではコードハイライトができるそうです。]
215
-
216
-
217
-
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
- これらの採用は今後の課題です。
491
-
492
-
493
- === @<LaTeX>{}のスタイルファイルから環境変数を参照する
494
-
495
- Starterでは、名前が「@<em>{STARTER_}」で始まる環境変数を@<LaTeX>{}のスタイルファイルから参照できます。
496
-
497
- たとえば「@<code>{STARTER_FOO_BAR}」という環境変数を設定すると、@<code>{sty/mystyle.sty}や@<code>{sty/starter.sty}では「@<code>{\STARTER@FOO@BAR}」という名前で参照できます。
498
- この例で分かるように、環境変数名の「@<code>{_}」は「@<code>{@}」に変換されます。
499
-
500
- //terminal[][環境変数を設定する例(macOS, UNIX)]{
501
- $ @<userinput>{export STARTER_FOO_BAR="foobar"}
502
- //}
503
-
504
- //list[][環境変数を参照する例]{
505
- %% ファイル:sty/mystyle.sty
506
- \newcommand\foobar[0]{% % 引数なしコマンドを定義
507
- \@ifundefined{STARTER@FOO@BAR}{% % 未定義なら
508
- foobar% % デフォルト値を使う
509
- }{% % 定義済みなら
510
- \STARTER@FOO@BAR% % その値を使う
511
- }%
512
- }
513
- //}
514
-
515
- この機能を使うと、出力や挙動を少し変更したい場合に環境変数でコントロールできます。
516
- また値の中に「@<code>{$}」や「@<code>{\\}」が入っていてもエスケープはしないので注意してください。
517
-
518
-
519
-
520
- == その他
521
-
522
-
523
- === 高度なカスタマイズ
524
-
525
- 設定ファイルや@<LaTeX>{}スタイルファイルでは対応できないようなカスタマイズが必要になることがあります。
526
- たとえば次のような場合です。
527
-
528
- * 印刷用とタブレット用でPDFファイルの仕様を大きく変えたい。
529
- * B5サイズとA5サイズの両方のPDFファイルを生成したい。
530
- * β版と本番用とで設定を切り替えたい。
531
- * コンパイルするたびに、あるプログラムの実行結果を原稿ファイルに埋め込みたい。
532
-
533
- このような要件を、Re:VIEWやStarterの機能を使い倒して実現してもいいですが、それよりも汎用的なやり方で実現しましょう。
534
- 方針としては、設定ファイルや原稿ファイルを用途に応じて生成するのがいいでしょう。
535
-
536
- ここでは例として「印刷用とタブレット用で@<file>{config-starter.yml}の内容を変える」ことを考えてみます。
537
-
538
- //blankline
539
- //noindent
540
- (1) 「@<file>{config-starter.yml}」に拡張子「@<file>{.eruby}」をつけます。
541
-
542
- //terminal{
543
- $ @<userinput>{mv config-starter.yml config-starter.yml.eruby}
544
- ## またはこうでもよい
545
- $ @<userinput>$mv config-starter.yml{,.eruby}$
546
- //}
547
-
548
- //noindent
549
- (2) 次に、そのファイルに次のような条件分岐を埋め込みます。
550
-
551
- //list[][ファイル「config-starter.yml.eruby」]{
552
- ....(省略)....
553
- @<b>$<% if buildmode == 'printing' # 印刷向け %>$
554
- target: pbook
555
- pagesize: B5
556
- fontsize: 10pt
557
- textwidth: 44zw
558
- @<b>$<% elsif buildmode == 'tablet' # タブレット向け %>$
559
- target: tablet
560
- pagesize: A5
561
- fontsize: 10pt
562
- textwidth: 42zw
563
- @<b>$<% else abort "error: buildmode=#{buildmode.inspect}" %>$
564
- @<b>$<% end %>$
565
- //}
566
-
567
- //noindent
568
- (3) 「@<file>{config-starter.yml}」を生成するRakeタスクを定義します。
569
- ここまでが準備です。
570
-
571
- //source[lib/tasks/mytasks.rake]{
572
- def render_eruby_files(param) # 要 Ruby >= 2.2
573
- Dir.glob('**/*.eruby').each do |erubyfile|
574
- origfile = erubyfile.sub(/\.eruby$/, '')
575
- sh "erb -T 2 -P '#{param}' #{erubyfile} > #{origfile}"
576
- end
577
- end
578
-
579
- namespace :setup do
580
-
581
- desc "*印刷用に設定 (B5, 10pt, mono)"
582
- task :printing do
583
- render_eruby_files('buildmode=printing')
584
- end
585
-
586
- desc "*タブレット用に設定 (A5, 10pt, color)"
587
- task :tablet do
588
- render_eruby_files('buildmode=tablet')
589
- end
590
-
591
- end
592
- //}
593
-
594
- //noindent
595
- (4)「@<code>{rake setup:printing}」または「@<code>{rake setup:tablet}」を実行すると、@<file>{config-starter.yml}が生成されます。
596
- そのあとで「@<code>{rake pdf}」を実行すれば、用途に応じたPDFが生成されます。
597
-
598
- //cmd{
599
- $ @<b>{rake setup:printing # 印刷用}
600
- $ rake pdf
601
- $ mv mybook.pdf mybook_printing.pdf
602
-
603
- $ @<b>{rake setup:tablet # タブレット用}
604
- $ rake pdf
605
- $ mv mybook.pdf mybook_tablet.pdf
606
- //}