tmtms-review 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +9 -0
  3. data/COPYING +515 -0
  4. data/ChangeLog +2083 -0
  5. data/README.rdoc +50 -0
  6. data/Rakefile +56 -0
  7. data/VERSION +1 -0
  8. data/bin/review-check +178 -0
  9. data/bin/review-checkdep +63 -0
  10. data/bin/review-compile +205 -0
  11. data/bin/review-epubmaker +661 -0
  12. data/bin/review-epubmaker-ng +176 -0
  13. data/bin/review-index +118 -0
  14. data/bin/review-pdfmaker +208 -0
  15. data/bin/review-preproc +142 -0
  16. data/bin/review-validate +51 -0
  17. data/bin/review-vol +102 -0
  18. data/debian/README.Debian +12 -0
  19. data/debian/README.source +5 -0
  20. data/debian/changelog +5 -0
  21. data/debian/compat +1 -0
  22. data/debian/control +22 -0
  23. data/debian/copyright +62 -0
  24. data/debian/docs +6 -0
  25. data/debian/manpage.1.ex +59 -0
  26. data/debian/patches/path.diff +91 -0
  27. data/debian/patches/series +1 -0
  28. data/debian/review.install +13 -0
  29. data/debian/review.links +4 -0
  30. data/debian/rules +13 -0
  31. data/debian/source/format +1 -0
  32. data/doc/format.rdoc +582 -0
  33. data/doc/format_idg.rdoc +180 -0
  34. data/doc/libepubmaker/sample.yaml +90 -0
  35. data/doc/quickstart.rdoc +188 -0
  36. data/doc/ruby-uuid/README +11 -0
  37. data/doc/ruby-uuid/README.ja +34 -0
  38. data/doc/sample.css +108 -0
  39. data/doc/sample.yaml +62 -0
  40. data/lib/epubmaker.rb +28 -0
  41. data/lib/epubmaker/content.rb +82 -0
  42. data/lib/epubmaker/epubv2.rb +418 -0
  43. data/lib/epubmaker/epubv3.rb +249 -0
  44. data/lib/epubmaker/producer.rb +204 -0
  45. data/lib/epubmaker/resource.rb +66 -0
  46. data/lib/lineinput.rb +155 -0
  47. data/lib/review.rb +3 -0
  48. data/lib/review/book.rb +46 -0
  49. data/lib/review/book/base.rb +235 -0
  50. data/lib/review/book/chapter.rb +81 -0
  51. data/lib/review/book/compilable.rb +159 -0
  52. data/lib/review/book/index.rb +339 -0
  53. data/lib/review/book/page_metric.rb +38 -0
  54. data/lib/review/book/parameters.rb +97 -0
  55. data/lib/review/book/part.rb +44 -0
  56. data/lib/review/book/volume.rb +65 -0
  57. data/lib/review/builder.rb +444 -0
  58. data/lib/review/compiler.rb +550 -0
  59. data/lib/review/configure.rb +38 -0
  60. data/lib/review/epubbuilder.rb +18 -0
  61. data/lib/review/exception.rb +21 -0
  62. data/lib/review/extentions.rb +3 -0
  63. data/lib/review/extentions/object.rb +9 -0
  64. data/lib/review/extentions/string.rb +33 -0
  65. data/lib/review/htmlbuilder.rb +1097 -0
  66. data/lib/review/htmllayout.rb +19 -0
  67. data/lib/review/htmlutils.rb +36 -0
  68. data/lib/review/i18n.rb +30 -0
  69. data/lib/review/i18n.yaml +34 -0
  70. data/lib/review/idgxmlbuilder.rb +1145 -0
  71. data/lib/review/latexbuilder.rb +815 -0
  72. data/lib/review/latexindex.rb +35 -0
  73. data/lib/review/latexutils.rb +79 -0
  74. data/lib/review/preprocessor.rb +563 -0
  75. data/lib/review/review.tex.erb +232 -0
  76. data/lib/review/textbuilder.rb +17 -0
  77. data/lib/review/textutils.rb +66 -0
  78. data/lib/review/tocparser.rb +342 -0
  79. data/lib/review/tocprinter.rb +221 -0
  80. data/lib/review/topbuilder.rb +785 -0
  81. data/lib/review/unfold.rb +138 -0
  82. data/lib/uuid.rb +312 -0
  83. data/review.gemspec +141 -0
  84. data/test/CHAPS +2 -0
  85. data/test/bib.re +13 -0
  86. data/test/book_test_helper.rb +35 -0
  87. data/test/test.re +43 -0
  88. data/test/test_book.rb +598 -0
  89. data/test/test_book_chapter.rb +418 -0
  90. data/test/test_book_parameter.rb +42 -0
  91. data/test/test_book_part.rb +50 -0
  92. data/test/test_builder.rb +144 -0
  93. data/test/test_compiler.rb +44 -0
  94. data/test/test_epubmaker.rb +507 -0
  95. data/test/test_helper.rb +27 -0
  96. data/test/test_htmlbuilder.rb +554 -0
  97. data/test/test_htmlutils.rb +28 -0
  98. data/test/test_i18n.rb +64 -0
  99. data/test/test_idgxmlbuilder.rb +589 -0
  100. data/test/test_index.rb +31 -0
  101. data/test/test_latexbuilder.rb +656 -0
  102. data/test/test_lineinput.rb +198 -0
  103. data/test/test_preprocessor.rb +23 -0
  104. data/test/test_textutils.rb +68 -0
  105. data/test/test_topbuilder.rb +244 -0
  106. data/test/test_uuid.rb +156 -0
  107. metadata +161 -0
@@ -0,0 +1,91 @@
1
+ indicate /usr/share/review as lib path.Index: review-0.6+20101123/bin/review-check
2
+ ===================================================================
3
+ --- review-0.6+20101123.orig/bin/review-check 2010-11-23 21:08:35.525325930 +0900
4
+ +++ review-0.6+20101123/bin/review-check 2010-11-23 21:10:00.049309314 +0900
5
+ @@ -13,7 +13,7 @@
6
+ require 'pathname'
7
+
8
+ bindir = Pathname.new(__FILE__).realpath.dirname
9
+ -$LOAD_PATH.unshift((bindir + '../lib').realpath)
10
+ +$LOAD_PATH.unshift("/usr/share/review")
11
+
12
+ require 'review/book'
13
+ require 'optparse'
14
+ Index: review-0.6+20101123/bin/review-checkdep
15
+ ===================================================================
16
+ --- review-0.6+20101123.orig/bin/review-checkdep 2010-11-23 21:08:35.537304196 +0900
17
+ +++ review-0.6+20101123/bin/review-checkdep 2010-11-23 21:09:46.932891759 +0900
18
+ @@ -13,7 +13,7 @@
19
+ require 'pathname'
20
+
21
+ bindir = Pathname.new(__FILE__).realpath.dirname
22
+ -$LOAD_PATH.unshift((bindir + '../lib').realpath)
23
+ +$LOAD_PATH.unshift("/usr/share/review")
24
+
25
+ PREDEF_FILE = 'PREDEF'
26
+
27
+ Index: review-0.6+20101123/bin/review-compile
28
+ ===================================================================
29
+ --- review-0.6+20101123.orig/bin/review-compile 2010-11-23 21:08:35.545307445 +0900
30
+ +++ review-0.6+20101123/bin/review-compile 2010-11-23 21:10:11.464806373 +0900
31
+ @@ -13,7 +13,7 @@
32
+ require 'pathname'
33
+
34
+ bindir = Pathname.new(__FILE__).realpath.dirname
35
+ -$LOAD_PATH.unshift((bindir + '../lib').realpath)
36
+ +$LOAD_PATH.unshift("/usr/share/review")
37
+
38
+ require 'review/compiler'
39
+ require 'review/book'
40
+ Index: review-0.6+20101123/bin/review-epubmaker
41
+ ===================================================================
42
+ --- review-0.6+20101123.orig/bin/review-epubmaker 2010-11-23 21:08:35.557307851 +0900
43
+ +++ review-0.6+20101123/bin/review-epubmaker 2010-11-23 21:10:24.345309100 +0900
44
+ @@ -18,7 +18,7 @@
45
+ require 'pathname'
46
+
47
+ bindir = Pathname.new(__FILE__).realpath.dirname
48
+ -$LOAD_PATH.unshift((bindir + '../lib').realpath)
49
+ +$LOAD_PATH.unshift("/usr/share/review")
50
+
51
+ require 'uuid'
52
+
53
+ Index: review-0.6+20101123/bin/review-index
54
+ ===================================================================
55
+ --- review-0.6+20101123.orig/bin/review-index 2010-11-23 21:08:35.565304467 +0900
56
+ +++ review-0.6+20101123/bin/review-index 2010-11-23 21:10:35.780809275 +0900
57
+ @@ -13,7 +13,7 @@
58
+ require 'pathname'
59
+
60
+ bindir = Pathname.new(__FILE__).realpath.dirname
61
+ -$LOAD_PATH.unshift((bindir + '../lib').realpath)
62
+ +$LOAD_PATH.unshift("/usr/share/review")
63
+
64
+ require 'review/book'
65
+ require 'review/tocparser'
66
+ Index: review-0.6+20101123/bin/review-preproc
67
+ ===================================================================
68
+ --- review-0.6+20101123.orig/bin/review-preproc 2010-11-23 21:08:35.577305709 +0900
69
+ +++ review-0.6+20101123/bin/review-preproc 2010-11-23 21:10:46.252829939 +0900
70
+ @@ -14,7 +14,7 @@
71
+ require 'pathname'
72
+
73
+ bindir = Pathname.new(__FILE__).realpath.dirname
74
+ -$LOAD_PATH.unshift((bindir + '../lib').realpath)
75
+ +$LOAD_PATH.unshift("/usr/share/review")
76
+
77
+ require 'review/preprocessor'
78
+ require 'review/unfold'
79
+ Index: review-0.6+20101123/bin/review-vol
80
+ ===================================================================
81
+ --- review-0.6+20101123.orig/bin/review-vol 2010-11-23 21:08:35.589305906 +0900
82
+ +++ review-0.6+20101123/bin/review-vol 2010-11-23 21:10:56.212818665 +0900
83
+ @@ -13,7 +13,7 @@
84
+ require 'pathname'
85
+
86
+ bindir = Pathname.new(__FILE__).realpath.dirname
87
+ -$LOAD_PATH.unshift((bindir + '../lib').realpath)
88
+ +$LOAD_PATH.unshift("/usr/share/review")
89
+
90
+ require 'review/book'
91
+ require 'review/exception'
@@ -0,0 +1 @@
1
+ path.diff
@@ -0,0 +1,13 @@
1
+ bin/review-check usr/bin
2
+ bin/review-compile usr/bin
3
+ #bin/review-checkdep usr/bin
4
+ bin/review-epubmaker usr/bin
5
+ bin/review-index usr/bin
6
+ bin/review-pdfmaker usr/bin
7
+ bin/review-preproc usr/bin
8
+ bin/review-validate usr/bin
9
+ bin/review-vol usr/bin
10
+ lib/lineinput.rb usr/share/review
11
+ lib/review.rb usr/share/review
12
+ lib/uuid.rb usr/share/review
13
+ lib/review usr/share/review
@@ -0,0 +1,4 @@
1
+ usr/bin/review-compile usr/bin/review2html
2
+ usr/bin/review-compile usr/bin/review2latex
3
+ usr/bin/review-compile usr/bin/review2top
4
+ usr/bin/review-compile usr/bin/review2idgxml
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/make -f
2
+ # -*- makefile -*-
3
+ # Sample debian/rules that uses debhelper.
4
+ # This file was originally written by Joey Hess and Craig Small.
5
+ # As a special exception, when this file is copied by dh-make into a
6
+ # dh-make output file, you may use that output file without restriction.
7
+ # This special exception was added by Craig Small in version 0.37 of dh-make.
8
+
9
+ # Uncomment this to turn on verbose mode.
10
+ #export DH_VERBOSE=1
11
+
12
+ %:
13
+ dh --with quilt $@
@@ -0,0 +1 @@
1
+ 3.0 (native)
@@ -0,0 +1,582 @@
1
+ = ReVIEW フォーマット
2
+
3
+ ReVIEW フォーマットの文法について解説します。ReVIEW
4
+ フォーマットは ASCII の EWB を基本としながら、一部に
5
+ RD や各種 Wiki の文法をとりいれて簡素化しています。
6
+
7
+ == 段落
8
+
9
+ 段落(本文)の間は英語の段落のように1行空けます。ただし、組版に
10
+ まわすときは前処理して1段落を1行に変更してあります。
11
+
12
+ 例:
13
+
14
+ だんらくだんらく〜〜〜
15
+ この行も同じ段落
16
+
17
+ 次の段落〜〜〜
18
+
19
+ 2行以上空いている場合も1行空きと同様に処理します。
20
+
21
+ == 章・節・項・段(見出し)
22
+
23
+ 章・節・項・段など、見出しは「=」「==」「===」「====」「=====」です。6 レベル以上は使えません。
24
+
25
+ 例:
26
+
27
+ = 章のキャプション
28
+
29
+ == 節のキャプション
30
+
31
+ === 項のキャプション
32
+
33
+ ==== 段のキャプション
34
+
35
+ ===== 小段のキャプション
36
+
37
+ 見出しは行の先頭から始める必要があります。行頭に空白が入ると、ただの本文とみなされます。
38
+
39
+ == コラムなど
40
+
41
+ 節や項の見出しに [column] を追加するとコラムのキャプションになります。
42
+
43
+ 例:
44
+
45
+ ===[column] コンパイラコンパイラ
46
+
47
+ このとき、「=」と「[column]」は間を開けず、必ず続けて書かなければ
48
+ なりません。空白があってもいけません。
49
+
50
+ 次の節や項を待たずにコラムを終了する場合は、「===[/column]」を記述します。
51
+
52
+ 例:
53
+
54
+ ===[column] コンパイラコンパイラ
55
+
56
+ コラムの内容
57
+
58
+ ===[/column]
59
+
60
+ == 箇条書き
61
+
62
+ 箇条書き (HTML で言う ul) は「*」で表現します。
63
+ ネストは「**」のように深さに応じて数を増やします。
64
+
65
+ 例:
66
+
67
+ * 第一の項目
68
+ ** 第一の項目のネスト
69
+ * 第二の項目
70
+ ** 第二の項目のネスト
71
+ * 第三の項目
72
+
73
+ 箇条書きを書くには、行頭に1つ以上の空白を必ず入れるようにします。
74
+ 行頭に空白を入れず「*」を書くと、ただのテキストとみなされます。
75
+
76
+ == 番号付き箇条書き
77
+
78
+ 番号付きの箇条書き (HTML で言う ol) は「1. 〜」「2. 〜」
79
+ 「3. 〜」で示します。ネストはしません。
80
+
81
+ 例:
82
+
83
+ 1. 第一の条件
84
+ 2. 第二の条件
85
+ 3. 第三の条件
86
+
87
+ 番号付き箇条書きも、ただの箇条書きと同様、行頭に1つ以上の空白が必要です。
88
+
89
+ == 用語リスト
90
+
91
+ 用語リスト (HTML で言う dl) は「:」と、続く空白で始まる行を使って示します。
92
+
93
+ 例:
94
+
95
+ : Alpha
96
+ DEC の作っていた RISC CPU。
97
+ 浮動小数点数演算が速い。
98
+ : POWER
99
+ IBM とモトローラが共同製作した RISC CPU。
100
+ 派生として POWER PC がある。
101
+ : SPARC
102
+ Sun が作っている RISC CPU。
103
+ CPU 数を増やすのが得意。
104
+
105
+ 頭の「:」それ自体はテキストではないので注意してください。
106
+ その後に続く文字列が用語名(HTMLではdt要素)になります。
107
+
108
+ 用語リストの「:」ではじまる行は、行頭に空白があってもなくてもかまいません。
109
+ そして、その行以降、空白で始まる行が用語内容(HTMLではdd要素)になります。
110
+
111
+ また、リスト内でも後述するインライン命令は有効です。
112
+
113
+ == ソースコードなどのリスト
114
+
115
+ ソースコードリストにはキャプションの付くリストとキャプションの付かないリストがあります。
116
+ 連番つきリストは「//list[識別子][キャプション]{ 〜 //}」で、
117
+ 連番なしリストは「//emlist[キャプション]{ 〜 //}」です。
118
+ //emlistのキャプションは省略できます。
119
+
120
+ 例:
121
+
122
+ //list[main][main()]{ ←「main」が識別子で「main()」がキャプション
123
+ int
124
+ main(int argc, char **argv)
125
+ {
126
+ puts("OK");
127
+ return 0;
128
+ }
129
+ //}
130
+
131
+ 例:
132
+
133
+ //emlist{
134
+ printf("hello");
135
+ //}
136
+
137
+ ブロック内でも後述するインライン命令は有効です。
138
+
139
+ また本文中で「リスト X を見てください」のようにリストを指定
140
+ する場合は、//list で指定した識別子を使って「@<list>{main}」
141
+ と表記します。
142
+
143
+ === ソースコード専用の引用
144
+
145
+ ソースコードを引用する場合、ファイル名が必要です。
146
+
147
+ 例:
148
+
149
+ //source[/hello/world.rb]{
150
+ puts "hello world!"
151
+ //}
152
+
153
+ ソースコードの引用は、キャプションをつけた//emlistとあまり違いはありません。
154
+ が、HTMLのCSSなどでは区別した表現ができます。
155
+
156
+ == 行番号付き連番ありリスト
157
+
158
+ 連番ありのリスト(list)で自動的に行番号がつきます。
159
+
160
+ 例:
161
+
162
+ //listnum[hello][ハローワールド]{
163
+ puts "hello world!"
164
+ //}
165
+
166
+ 参照方法はlistと変わりません。
167
+
168
+ 例:
169
+
170
+ ..は@<list>{hello}をみてください。
171
+
172
+ == 行番号付き連番なしリスト
173
+
174
+ 連番なしのリスト(emlist)で自動的に行番号がつきます。
175
+
176
+ 例:
177
+
178
+ //emlistnum{
179
+ puts "hello world!"
180
+ //}
181
+
182
+ == 本文中でのソースコード引用
183
+
184
+ 本文中でソースコードを引用して記述します。
185
+
186
+ 例:
187
+
188
+ @<code>{p = obj.ref_cnt}
189
+
190
+ == コマンドラインのキャプチャ
191
+
192
+ コマンドラインの操作を示すときは //cmd{ 〜 //} を使います。
193
+
194
+ 例:
195
+
196
+ //cmd{
197
+ $ ls /
198
+ //}
199
+
200
+ ブロック内でも後述するインライン命令は有効です。
201
+
202
+ == 図
203
+
204
+ 図は //image{ 〜 //} で指定します。執筆中はアスキーアートで
205
+ 代替しているため、ダミーのアスキーアートが入っていることがあり
206
+ ます。この部分は、組版時には単に無視してください。
207
+
208
+ 例:
209
+
210
+ //image[unixhistory][UNIX系OSの簡単な系譜]{
211
+ System V 系列
212
+ +----------- SVr4 --> 各種商用UNIX(Solaris, AIX, HP-UX, ...)
213
+ V1 --> V6 --|
214
+ +--------- 4.4BSD --> FreeBSD, NetBSD, OpenBSD, ...
215
+ BSD 系列
216
+
217
+ --------------> Linux
218
+ //}
219
+
220
+ 3番目の引数として、画像の倍率・大きさを指定することができます。
221
+ 今のところ「scale=X」で倍率(X倍)が指定できます。
222
+
223
+ また本文中で「図 X を見てください」のように図を指定する場合は、
224
+ //image で指定した識別子を用いて「@<img>{unixhistory}」と
225
+ 記述します。//image と @<img> でつづりが違うので注意してください。
226
+
227
+ なお、後述しますが、インラインで図を出力するには@<icon>を使用します。
228
+
229
+ == 番号が振られていない図
230
+
231
+ //indepimage[ファイル名][キャプション] で番号が振られていない画像ファイルを生成します。キャプションは省略できます。
232
+
233
+ 例:
234
+
235
+ //indepimage[unixhistory2]
236
+
237
+ 同様のことは、//numberlessimageでも使えます。
238
+
239
+ 例:
240
+
241
+ //numberlessimage[door_image_path][扉絵]
242
+
243
+ ※ただし、//indepimageと機能的にかぶっているので、将来は廃止され、//indepimageに統合される予定です。
244
+
245
+ == グラフ表現ツールを使った図
246
+
247
+ //graph[ファイル名][コマンド名][キャプション] で各種グラフ表現ツールを使った画像ファイルの生成ができます。キャプションは省略できます。
248
+
249
+ 例: gnuplotの使用
250
+
251
+ //graph[sin_x][gnuplot]{
252
+ plot sin(x)
253
+ //}
254
+
255
+ コマンド名には、「graphviz」「gnuplot」「blockdiag」「aafigure」のいずれかを指定できます。ツールはそれぞれ別途インストールする必要があります。
256
+
257
+ == 表
258
+
259
+ 表は //table[識別子][キャプション]{ 〜 //} です。ヘッダと内容を
260
+ 分ける罫線は「------」で書き込んであります。
261
+
262
+ カラム間は任意個数のタブで区切ります。また、カラム先頭の「.」は削
263
+ 除されるので、カラムの先頭文字が「.」の場合は「.」をもう一つ余計に
264
+ 付けてください。例えば「.」という内容のカラムは「..」と書きます。
265
+ また、空のカラムは「.」と書けます。
266
+
267
+ 例:
268
+
269
+ //table[envvars][重要な環境変数]{
270
+ 名前 意味
271
+ -------------------------------------------------------------
272
+ PATH コマンドの存在するディレクトリ
273
+ TERM 使っている端末の種類。linux・kterm・vt100など
274
+ LANG ユーザのデフォルトロケール。日本語ならja_JP.eucJPやja_JP.utf8
275
+ LOGNAME ユーザのログイン名
276
+ TEMP 一時ファイルを置くディレクトリ。/tmpなど
277
+ PAGER manなどで起動するテキスト閲覧プログラム。lessなど
278
+ EDITOR デフォルトエディタ。viやemacsなど
279
+ MANPATH manのソースを置いているディレクトリ
280
+ DISPLAY X Window Systemのデフォルトディスプレイ
281
+ //}
282
+
283
+ 本文中で「表 X を見てください」のように表を指定する場合は
284
+ @<table>{envvars} という表記を使います。
285
+
286
+ 表内でも後述するインライン命令は有効です。
287
+
288
+ == 引用
289
+
290
+ 引用は「//quote{ 〜 //}」を使って記述します。
291
+
292
+ 例:
293
+
294
+ //quote{
295
+ 百聞は一見に如かず。
296
+ //}
297
+
298
+ 引用内でも後述するインライン命令は有効です。
299
+ また、いまのところ引用内で別のブロック構文を使うことはできません。
300
+
301
+ == 脚注
302
+
303
+ 脚注は「//footnote」を使って記述します。
304
+
305
+ 例:
306
+
307
+ パッケージは本書のサポートサイトから入手できます@<fn>{site}。
308
+ 各自ダウンロードしてインストールしておいてください。
309
+ //footnote[site][本書のサポートサイト: http://i.loveruby.net/ja/stdcompiler ]
310
+
311
+ 本文中の「@<fn>{site}」は脚注番号に置換され、「本書のサポート
312
+ サイト……」という文は実際の脚注に変換されます。
313
+
314
+ 注意: PDFで、コラムや表など平文でないところで「@<fn>{~}」を使うには、footnotetextオプションを使う必要があります。
315
+
316
+ === footnotetextオプション
317
+
318
+ footnotetextオプションを使うには、YAMLファイルのparamsに「--footnotetext」を追加します。
319
+
320
+ これでPDFのコラムや表のなかでも脚注が使えるようになります。
321
+
322
+ ただし、通常の脚注(footnote)ではなく、footnotemarkとfootnotetextを使うため、本文と脚注が別ページに分かれる可能性があるなど、いろいろな制約があります。
323
+
324
+ == 参考文献の定義
325
+
326
+ 参考文献は同一ディレクトリ内の bib.re に定義します。
327
+ //bibpaper[site][キャプション]{..コメント..}
328
+ コメントが無い場合も定義可能です。
329
+ //bibpaper[site][キャプション]
330
+
331
+ 例:
332
+
333
+ //bibpaper[lins][Lins, 1991]{
334
+ Refael D. Lins. A shared memory architecture for parallel study of
335
+ algorithums for cyclic reference_counting. Technical Report 92,
336
+ Computing Laboratory, The University of Kent at Canterbury , August
337
+ 1991
338
+ //}
339
+
340
+ 本文中で参考文献を参照したい場合は次のようにしてください。
341
+
342
+ 例:
343
+
344
+ …という研究が知られています(@<bib>{lins})
345
+
346
+ == リード文
347
+
348
+ リード文は //lead{ 〜 //} で指定します。
349
+ 歴史的経緯により//read{ 〜 //} でも使えます。
350
+
351
+ 例:
352
+
353
+ //lead{
354
+ 本章ではまずこの本の概要について話し、
355
+ 次にLinuxでプログラムを作る方法を説明していきます。
356
+ //}
357
+
358
+ == TeX式
359
+
360
+ LaTeX の式を挿入するには、//texequation{ 〜 //} を使います。
361
+
362
+ 例:
363
+
364
+ //texequation{
365
+ \sum_{i=1}^nf_n(x)
366
+ //}
367
+
368
+ == 空白制御
369
+
370
+ 出力される空白を制御するタグとしては、//noindentがあります。
371
+
372
+ //noindent:: その直後に来る段落冒頭のインデントをなくする(HTMLではnoindentクラスになる)
373
+
374
+ 以前あった「//linebreak」(改行)、「//pagebreak」(改ページ)は廃止になります。
375
+
376
+ == コメント
377
+
378
+ 最終結果に出力されないコメントを記述したい場合は「#@#」を使ってください。
379
+
380
+ 例:
381
+
382
+ #@# ここで 1 行あける
383
+
384
+ また、修正が必要な警告的コメントには#@warn(...)を使ってください。
385
+
386
+ 例:
387
+
388
+ #@warn(あとで書く)
389
+
390
+ 最終結果に出力するコメントを記述したい場合は、//commentまたは@<comment>を使った上で、review-compileコマンドに--draftオプションを追加してください。
391
+
392
+ 例:
393
+
394
+ @<comment>{あとで書く}
395
+
396
+ == 生データ行
397
+
398
+ ReVIEW のタグ範囲を越えて何か特別な行を挿入したい場合、//raw を使います。
399
+
400
+ 例:
401
+
402
+ //raw[|html|<div class="special">\nここは特別な行です。\n</div>]
403
+
404
+ 「|ビルダ名|そのまま出力させる内容」という書式です。
405
+
406
+ ビルダ名には「html」「latex」「idgxml」「top」のいずれかが入り、(複数のビルダにまたがる指定が必要かは別として)「,」で区切って複数指定することも可能です。
407
+ 「バックスラッシュ+n」は改行に変換されます。
408
+ 該当のビルダを使用しているときのみ、内容が出力されます。
409
+
410
+ 例:
411
+
412
+ (HTMLビルダの場合:)
413
+ <div class="special">
414
+ ここは特別な行です。
415
+ </div>
416
+
417
+ (ほかのビルダの場合は単に無視されて何も出力されない)
418
+
419
+ //raw およびこの後に紹介する @<raw> インラインタグは、誤った内容を入れると
420
+ 構造化文書を容易に破壊し得ることに注意してください。
421
+
422
+ == その他の文法
423
+
424
+ ReVIEW は任意のブロックを追加可能なので、本によって専用ブロックを
425
+ 使う場合があります。これまでに使った例を以下に示します。
426
+
427
+ //prototype:: 関数プロトタイプ。『ふつうのLinuxプログラミング』で使用。
428
+ //type:: 関数の型宣言。『ふつうのHaskellプログラミング』で使用。
429
+
430
+ 拡張文法はreview-ext.rbというファイルで指定できます。
431
+ 例えば、
432
+
433
+ # review-ext.rb
434
+ ReVIEW::Compiler.defblock :foo, 0..1
435
+
436
+ class ReVIEW::HTMLBuilder
437
+ def foo(lines, caption = nil)
438
+ puts lines.join(",")
439
+ end
440
+ end
441
+
442
+ のようにすると、以下のような文法を追加できます。
443
+
444
+ //foo{
445
+ A
446
+ B
447
+ C
448
+ //}
449
+
450
+ # 出力結果
451
+ A,B,C
452
+
453
+ 詳しいことについては、ここでは触れません。
454
+
455
+
456
+ == 段落中で使う文法 (インライン命令)
457
+
458
+ @<list>{program}:: 「リスト1.5」のような文字列に置換される。
459
+ @<img>{unixhistory}:: 「図1.3」のような文字列に置換される。
460
+ @<table>{ascii}:: 「表1.2」のような文字列に置換される。
461
+ @<fn>{site}:: 脚注番号に置換される。
462
+ @<kw>{信任状, credential}:: キーワード。太字などにして強調してください。
463
+ @<chap>{advanced}:: 「第17章」のような、章番号を含むテキストに置換される。
464
+ @<title>{advanced}:: その章の章題に置換される。
465
+ @<chapref>{advanced}:: 『第17章「さらに進んだ話題」』のように、章番号とタイトルを含むテキストに置換される。
466
+ @<bou>{ふさわしい}:: 傍点。
467
+ @<ruby>{直截, ちょくせつ}:: ルビ。
468
+ @<ami>{重点ポイント}:: 文字に対するアミかけ。
469
+ @<b>{どうしても}:: 太字 (ボールド)。
470
+ @<i>{どうしても}:: イタリック。
471
+ @<strong>{どうしても}:: 強調。
472
+ @<em>{どうしても}:: 強調。
473
+ @<tt>{foo($bar)}:: テキストをテレタイプ文字(等幅フォント)で出力する。
474
+ @<tti>{FooClass}:: テキストをテレタイプ文字(等幅フォント)のイタリックで出力する。
475
+ @<ttb>{BarClass}:: テキストをテレタイプ文字(等幅フォント)の太字で出力する。
476
+ @<u>{下線}:: 下線。
477
+ @<br>{}:: 段落中改行。
478
+ @<m>{a + \alpha}:: TeXインライン式。
479
+ @<icon>{samplephoto}:: インライン画像。
480
+ @<uchar>{2460}:: Unicode文字の出力。引数は16進数で指定する。
481
+ @<href>{http://www.google.com/}:: リンク。URLで指定できる
482
+ @<raw>{|ビルダ名|<span>★</span>}:: そのまま出力する。「}」は「バックスラッシュ+}」でエスケープする。ビルダ名は「html」「latex」「idgxml」「top」のいずれかで、「,」で区切って複数指定することも可能。該当のビルダを使用時のみ、出力される。内容に「バックスラッシュ+n」を入れると改行に変換される。
483
+
484
+ == 著者用タグ (プリプロセッサ命令)
485
+
486
+ これまでに説明したタグはすべて最終段階まで残り、見ために
487
+ 影響を与えます。それに対して以下のタグは著者が使うための
488
+ 専用タグであり、最終段階ではすべて消されてしまいます。
489
+
490
+ #@#:: コメント。この行には何を書いても無視される。
491
+ #@warn(...):: 警告メッセージ。プリプロセス時にメッセージが出力される。
492
+ #@require, #@provide:: キーワードの依存関係を宣言する。
493
+ #@mapfile(ファイル名) 〜 #@end:: ファイルの内容をその場に展開する。
494
+ #@maprange(ファイル名, 範囲名) 〜 #@end:: ファイル内の範囲をその場に展開する。
495
+ #@mapoutput(コマンド) 〜 #@end:: コマンドを実行して、その出力結果を展開する。
496
+
497
+ == HTMLのレイアウト機能
498
+
499
+ CHAPSファイルが置かれているディレクトリに layouts/layout.erb
500
+ を置くとその html を ERB で評価します。
501
+
502
+ 例:
503
+
504
+ <html>
505
+ <head>
506
+ <title><%= title %></title>
507
+ </head>
508
+ <body>
509
+ <%= body %>
510
+ <hr/>
511
+ </body>
512
+ </html>
513
+
514
+ == 部タイトル取得(目次生成機能)
515
+
516
+ PART ファイルに定義してください。
517
+ PART ファイルは CHAPS の部わけと対応しています。
518
+
519
+ 例:
520
+
521
+ CHAPS:
522
+ intro.re
523
+
524
+ start.re
525
+
526
+ end.re
527
+
528
+ PART:
529
+ (序章なので空行)
530
+ はじまりの部
531
+ おわりの部
532
+
533
+ == 見出し参照
534
+
535
+ 見出し番号と見出しを生成します。
536
+ 見出しの階層は"|"で区切って指定してください。
537
+
538
+ 例:
539
+
540
+ @<hd>{はじめに|まずわ}
541
+
542
+ 他の章を参照したい場合は、先頭に章のidを指定してください。
543
+
544
+ 例:
545
+
546
+ @<hd>{preface|はじめに|まずわ}
547
+
548
+ == リンク
549
+
550
+ Web ハイパーリンクを記述するには、リンクに @<href>、アンカーに //label
551
+ を使います。リンクの書式は @<href>{URL, 文字表現} で、「, 文字表現」を
552
+ 省略すると URL がそのまま使われます。URL 中に , を使いたいときには、\,
553
+ と表記してください。
554
+
555
+ 例:
556
+
557
+ @<href>{http://github.com/, GitHub}
558
+ @<href>{http://www.google.com/}
559
+ @<href>{#point1, ドキュメント内ポイント}
560
+ @<href>{chap1.html#point1, ドキュメント内ポイント}
561
+ //label[point1]
562
+
563
+ == 国際化(i18n)
564
+
565
+ ReVIEWが出力する文字列(「第◯章」「図」「表」など)を、指定した言語に
566
+ 合わせて出力することができます。デフォルトは日本語です。
567
+
568
+ CHAPS などと同じディレクトリに locale.yaml というファイルを用意して、
569
+ 以下のように記述します(日本語の場合)。
570
+
571
+ 例:
572
+
573
+ locale: ja
574
+
575
+ 既存の表記を書き換えたい場合は、該当する項目を上書きします。
576
+ 既存の設定ファイルは lib/review/i18n.yaml にあります。
577
+
578
+ 例:
579
+
580
+ locale: ja
581
+ image: イメージ
582
+ table: テーブル