erbook 4.0.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. data/README +3 -3
  2. data/Rakefile +6 -3
  3. data/bin/erbook +285 -251
  4. data/doc/README +2 -2
  5. data/doc/api/classes/ERBook.html +2 -2
  6. data/doc/api/classes/RDoc/AnyMethod.html +20 -20
  7. data/doc/api/classes/RDoc/AnyMethod.src/M000003.html +18 -0
  8. data/doc/api/classes/RDoc/AnyMethod.src/M000004.html +23 -0
  9. data/doc/api/classes/RDoc/AnyMethod.src/M000005.html +4 -4
  10. data/doc/api/classes/RDoc/AnyMethod.src/M000006.html +7 -8
  11. data/doc/api/classes/RDoc/TopLevel.html +30 -30
  12. data/doc/api/classes/RDoc/{AnyMethod.src → TopLevel.src}/M000007.html +4 -4
  13. data/doc/api/classes/RDoc/TopLevel.src/{M000014.html → M000008.html} +4 -4
  14. data/doc/api/classes/RDoc/TopLevel.src/M000009.html +4 -4
  15. data/doc/api/classes/RDoc/TopLevel.src/M000010.html +15 -4
  16. data/doc/api/classes/RDoc/TopLevel.src/M000011.html +11 -4
  17. data/doc/api/classes/RDoc/TopLevel.src/M000012.html +4 -15
  18. data/doc/api/classes/String.html +17 -82
  19. data/doc/api/classes/String.src/M000001.html +4 -4
  20. data/doc/api/classes/String.src/M000002.html +3 -6
  21. data/doc/api/created.rid +1 -1
  22. data/doc/api/files/lib/erbook/rdoc_rb.html +1 -1
  23. data/doc/api/files/lib/erbook/{html_rb.html → to_xhtml_rb.html} +7 -7
  24. data/doc/api/files/lib/erbook_rb.html +1 -1
  25. data/doc/api/fr_file_index.html +1 -1
  26. data/doc/api/fr_method_index.html +12 -14
  27. data/doc/api/index.html +1 -1
  28. data/doc/index.xhtml +2277 -0
  29. data/doc/manual.erb +198 -155
  30. data/fmt/xhtml.icons/index.yaml +20 -0
  31. data/fmt/xhtml.icons/mediawiki-1.13.2/COPYING +340 -0
  32. data/fmt/xhtml.icons/mediawiki-1.13.2/README +103 -0
  33. data/fmt/xhtml.icons/mediawiki-1.13.2/skins/simple/external.png +0 -0
  34. data/fmt/xhtml.icons/tango-icon-theme-0.8.1/48x48/README +2 -0
  35. data/fmt/{html.icons/note.png → xhtml.icons/tango-icon-theme-0.8.1/48x48/apps/accessories-text-editor.png} +0 -0
  36. data/fmt/{html.icons/quote.png → xhtml.icons/tango-icon-theme-0.8.1/48x48/apps/internet-group-chat.png} +0 -0
  37. data/fmt/{html.icons/important.png → xhtml.icons/tango-icon-theme-0.8.1/48x48/emblems/emblem-important.png} +0 -0
  38. data/fmt/{html.icons/warning.png → xhtml.icons/tango-icon-theme-0.8.1/48x48/status/dialog-error.png} +0 -0
  39. data/fmt/{html.icons/tip.png → xhtml.icons/tango-icon-theme-0.8.1/48x48/status/dialog-information.png} +0 -0
  40. data/fmt/{html.icons/caution.png → xhtml.icons/tango-icon-theme-0.8.1/48x48/status/dialog-warning.png} +0 -0
  41. data/fmt/{html.icons/LICENSE → xhtml.icons/tango-icon-theme-0.8.1/COPYING} +0 -0
  42. data/fmt/xhtml.icons/tango-icon-theme-0.8.1/README +12 -0
  43. data/fmt/{html.yaml → xhtml.yaml} +305 -247
  44. data/lib/erbook.rb +2 -2
  45. data/lib/erbook/{html.rb → to_xhtml.rb} +18 -24
  46. metadata +42 -21
  47. data/doc/api/classes/RDoc/AnyMethod.src/M000008.html +0 -22
  48. data/doc/api/classes/RDoc/TopLevel.src/M000013.html +0 -25
  49. data/doc/api/classes/String.src/M000003.html +0 -20
  50. data/doc/api/classes/String.src/M000004.html +0 -26
  51. data/doc/index.html +0 -2663
  52. data/fmt/html.icons/README +0 -31
@@ -55,8 +55,8 @@
55
55
  <tr class="top-aligned-row">
56
56
  <td><strong>In:</strong></td>
57
57
  <td>
58
- <a href="../files/lib/erbook/html_rb.html">
59
- lib/erbook/html.rb
58
+ <a href="../files/lib/erbook/to_xhtml_rb.html">
59
+ lib/erbook/to_xhtml.rb
60
60
  </a>
61
61
  <br />
62
62
  </td>
@@ -86,10 +86,8 @@
86
86
  <h3 class="section-bar">Methods</h3>
87
87
 
88
88
  <div class="name-list">
89
- <a href="#M000004">thru_coderay</a>&nbsp;&nbsp;
90
- <a href="#M000003">thru_maruku</a>&nbsp;&nbsp;
91
- <a href="#M000002">to_html</a>&nbsp;&nbsp;
92
- <a href="#M000001">to_inline_html</a>&nbsp;&nbsp;
89
+ <a href="#M000001">to_inline_xhtml</a>&nbsp;&nbsp;
90
+ <a href="#M000002">to_xhtml</a>&nbsp;&nbsp;
93
91
  </div>
94
92
  </div>
95
93
 
@@ -112,7 +110,7 @@
112
110
  <td class="context-item-value">%w[tt code pre]</td>
113
111
  <td width="3em">&nbsp;</td>
114
112
  <td class="context-item-desc">
115
- The content of these HTML tags will be preserved while they are being
113
+ The content of these XHTML tags will be preserved while they are being
116
114
  processed by Textile. By doing this, we avoid unwanted Textile
117
115
  transformations, such as quotation marks becoming curly (&amp;8192;), in
118
116
  source code.
@@ -125,8 +123,8 @@ source code.
125
123
  <td class="context-item-value">%w[noformat]</td>
126
124
  <td width="3em">&nbsp;</td>
127
125
  <td class="context-item-desc">
128
- The content of these HTML tags will be preserved <b>verbatim</b> throughout
129
- the text-to-HTML conversion process.
126
+ The content of these XHTML tags will be preserved <b>verbatim</b>
127
+ throughout the text-to-XHTML conversion process.
130
128
 
131
129
  </td>
132
130
  </tr>
@@ -134,27 +132,6 @@ the text-to-HTML conversion process.
134
132
  </div>
135
133
  </div>
136
134
 
137
- <div id="aliases-list">
138
- <h3 class="section-bar">External Aliases</h3>
139
-
140
- <div class="name-list">
141
- <table summary="aliases">
142
- <tr class="top-aligned-row context-row">
143
- <td class="context-item-name">to_html</td>
144
- <td>-&gt;</td>
145
- <td class="context-item-value">to_html_maruku</td>
146
- </tr>
147
- <tr class="top-aligned-row context-row">
148
- <td>&nbsp;</td>
149
- <td colspan="2" class="context-item-desc">
150
- XXX: Maruku also defines <a href="String.html#M000002">String#to_html</a>
151
- so we have to hack around it :-(
152
-
153
- </td>
154
- </tr>
155
- </table>
156
- </div>
157
- </div>
158
135
 
159
136
 
160
137
 
@@ -164,44 +141,20 @@ so we have to hack around it :-(
164
141
  <div id="methods">
165
142
  <h3 class="section-bar">Public Instance methods</h3>
166
143
 
167
- <div id="method-M000004" class="method-detail">
168
- <a name="M000004"></a>
169
-
170
- <div class="method-heading">
171
- <a href="String.src/M000004.html" target="Code" class="method-signature"
172
- onclick="popupCode('String.src/M000004.html');return false;">
173
- <span class="method-name">thru_coderay</span><span class="method-args">()</span>
174
- </a>
175
- </div>
176
-
177
- <div class="method-description">
178
- <p>
179
- Adds syntax coloring to &lt;code&gt; elements in the given text. If the
180
- &lt;code&gt; tag has an attribute lang=&quot;&#8230;&quot;, then that is
181
- considered the programming language for which appropriate syntax coloring
182
- should be applied. Otherwise, the programming language is assumed to be
183
- ruby.
184
- </p>
185
- </div>
186
- </div>
187
-
188
- <div id="method-M000003" class="method-detail">
189
- <a name="M000003"></a>
144
+ <div id="method-M000001" class="method-detail">
145
+ <a name="M000001"></a>
190
146
 
191
147
  <div class="method-heading">
192
- <a href="String.src/M000003.html" target="Code" class="method-signature"
193
- onclick="popupCode('String.src/M000003.html');return false;">
194
- <span class="method-name">thru_maruku</span><span class="method-args">(aInline = false)</span>
148
+ <a href="String.src/M000001.html" target="Code" class="method-signature"
149
+ onclick="popupCode('String.src/M000001.html');return false;">
150
+ <span class="method-name">to_inline_xhtml</span><span class="method-args">()</span>
195
151
  </a>
196
152
  </div>
197
153
 
198
154
  <div class="method-description">
199
155
  <p>
200
- Returns the result of running this string through Maruku.
201
- </p>
202
- <p>
203
- If aInline is true, then the resulting HTML will <b>not</b> be wrapped in a
204
- HTML paragraph element.
156
+ Transforms this string into an <b>inline</b> XHTML string (one that does
157
+ not contain any block-level XHTML elements at the root).
205
158
  </p>
206
159
  </div>
207
160
  </div>
@@ -212,40 +165,22 @@ HTML paragraph element.
212
165
  <div class="method-heading">
213
166
  <a href="String.src/M000002.html" target="Code" class="method-signature"
214
167
  onclick="popupCode('String.src/M000002.html');return false;">
215
- <span class="method-name">to_html</span><span class="method-args">(aInline = false)</span>
168
+ <span class="method-name">to_xhtml</span><span class="method-args">(aInline = false)</span>
216
169
  </a>
217
170
  </div>
218
171
 
219
172
  <div class="method-description">
220
173
  <p>
221
- Transforms this string into HTML while ensuring that the result contains
174
+ Transforms this string into XHTML while ensuring that the result contains
222
175
  one or more block-level elements at the root.
223
176
  </p>
224
177
  <p>
225
- If aInline is true, then the resulting HTML will be an <b>inline</b>
178
+ If aInline is true, then the resulting XHTML will be an <b>inline</b>
226
179
  string.
227
180
  </p>
228
181
  </div>
229
182
  </div>
230
183
 
231
- <div id="method-M000001" class="method-detail">
232
- <a name="M000001"></a>
233
-
234
- <div class="method-heading">
235
- <a href="String.src/M000001.html" target="Code" class="method-signature"
236
- onclick="popupCode('String.src/M000001.html');return false;">
237
- <span class="method-name">to_inline_html</span><span class="method-args">()</span>
238
- </a>
239
- </div>
240
-
241
- <div class="method-description">
242
- <p>
243
- Transforms this string into an <b>inline</b> HTML string (one that does not
244
- contain any block-level HTML elements at the root).
245
- </p>
246
- </div>
247
- </div>
248
-
249
184
 
250
185
  </div>
251
186
 
@@ -5,14 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>to_inline_html (String)</title>
8
+ <title>to_inline_xhtml (String)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/erbook/html.rb, line 33</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_inline_html</span>
15
- <span class="ruby-identifier">to_html</span> <span class="ruby-keyword kw">true</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/erbook/to_xhtml.rb, line 33</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_inline_xhtml</span>
15
+ <span class="ruby-identifier">to_xhtml</span> <span class="ruby-keyword kw">true</span>
16
16
  <span class="ruby-keyword kw">end</span></pre>
17
17
  </body>
18
18
  </html>
@@ -5,16 +5,13 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>to_html (String)</title>
8
+ <title>to_xhtml (String)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/erbook/html.rb, line 45</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_html</span> <span class="ruby-identifier">aInline</span> = <span class="ruby-keyword kw">false</span>
15
- <span class="ruby-comment cmt"># XXX: Maruku also defines String#to_html so we have to hack around it :-(</span>
16
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">to_html_maruku</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">caller</span>.<span class="ruby-identifier">detect</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">%r'/lib/maruku/output/'</span> }
17
-
13
+ <pre><span class="ruby-comment cmt"># File lib/erbook/to_xhtml.rb, line 42</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_xhtml</span> <span class="ruby-identifier">aInline</span> = <span class="ruby-keyword kw">false</span>
18
15
  <span class="ruby-identifier">protect</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-constant">VERBATIM_TAGS</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">text</span><span class="ruby-operator">|</span>
19
16
  <span class="ruby-identifier">html</span> = <span class="ruby-identifier">protect</span>(<span class="ruby-identifier">text</span>, <span class="ruby-constant">PROTECTED_TAGS</span>, <span class="ruby-keyword kw">false</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">thru_maruku</span> <span class="ruby-identifier">aInline</span> }
20
17
 
data/doc/api/created.rid CHANGED
@@ -1 +1 @@
1
- Sat, 15 Nov 2008 18:25:12 -0800
1
+ Sat, 22 Nov 2008 23:17:15 -0800
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Sat Nov 15 17:16:15 -0800 2008</td>
59
+ <td>Sat Nov 22 16:53:55 -0800 2008</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -5,7 +5,7 @@
5
5
 
6
6
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
7
  <head>
8
- <title>File: html.rb</title>
8
+ <title>File: to_xhtml.rb</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
11
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
@@ -47,16 +47,16 @@
47
47
 
48
48
 
49
49
  <div id="fileHeader">
50
- <h1>html.rb</h1>
50
+ <h1>to_xhtml.rb</h1>
51
51
  <table class="header-table">
52
52
  <tr class="top-aligned-row">
53
53
  <td><strong>Path:</strong></td>
54
- <td>lib/erbook/html.rb
54
+ <td>lib/erbook/to_xhtml.rb
55
55
  </td>
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Sat Nov 15 17:16:15 -0800 2008</td>
59
+ <td>Sat Nov 22 22:05:20 -0800 2008</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -71,9 +71,9 @@
71
71
  <div id="description">
72
72
  <p>
73
73
  This file defines the <a
74
- href="../../../classes/String.html#M000002">String#to_html</a> and <a
75
- href="../../../classes/String.html#M000001">String#to_inline_html</a>
76
- methods, which are invoked to transform plain text into HTML.
74
+ href="../../../classes/String.html#M000002">String#to_xhtml</a> and <a
75
+ href="../../../classes/String.html#M000001">String#to_inline_xhtml</a>
76
+ methods, which are invoked to transform plain text into XHTML.
77
77
  </p>
78
78
  <p>
79
79
  This particular implementation features the Markdown formatting system via
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Sat Nov 15 17:16:15 -0800 2008</td>
59
+ <td>Sat Nov 22 22:05:20 -0800 2008</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -21,8 +21,8 @@
21
21
  <h1 class="section-bar">Files</h1>
22
22
  <div id="index-entries">
23
23
  <a href="files/lib/erbook_rb.html">lib/erbook.rb</a><br />
24
- <a href="files/lib/erbook/html_rb.html">lib/erbook/html.rb</a><br />
25
24
  <a href="files/lib/erbook/rdoc_rb.html">lib/erbook/rdoc.rb</a><br />
25
+ <a href="files/lib/erbook/to_xhtml_rb.html">lib/erbook/to_xhtml.rb</a><br />
26
26
  </div>
27
27
  </div>
28
28
  </body>
@@ -20,20 +20,18 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Methods</h1>
22
22
  <div id="index-entries">
23
- <a href="classes/RDoc/TopLevel.html#M000009">all_classes (RDoc::TopLevel)</a><br />
24
- <a href="classes/RDoc/TopLevel.html#M000011">all_methods (RDoc::TopLevel)</a><br />
25
- <a href="classes/RDoc/TopLevel.html#M000010">all_modules (RDoc::TopLevel)</a><br />
26
- <a href="classes/RDoc/AnyMethod.html#M000007">comment_html (RDoc::AnyMethod)</a><br />
27
- <a href="classes/RDoc/AnyMethod.html#M000006">decl (RDoc::AnyMethod)</a><br />
28
- <a href="classes/RDoc/AnyMethod.html#M000005">full_name (RDoc::AnyMethod)</a><br />
29
- <a href="classes/RDoc/TopLevel.html#M000013">parse (RDoc::TopLevel)</a><br />
30
- <a href="classes/RDoc/TopLevel.html#M000014">parse_file (RDoc::TopLevel)</a><br />
31
- <a href="classes/RDoc/TopLevel.html#M000012">refresh_all_classes_and_modules (RDoc::TopLevel)</a><br />
32
- <a href="classes/String.html#M000004">thru_coderay (String)</a><br />
33
- <a href="classes/String.html#M000003">thru_maruku (String)</a><br />
34
- <a href="classes/String.html#M000002">to_html (String)</a><br />
35
- <a href="classes/String.html#M000001">to_inline_html (String)</a><br />
36
- <a href="classes/RDoc/AnyMethod.html#M000008">top_level (RDoc::AnyMethod)</a><br />
23
+ <a href="classes/RDoc/TopLevel.html#M000007">all_classes (RDoc::TopLevel)</a><br />
24
+ <a href="classes/RDoc/TopLevel.html#M000009">all_methods (RDoc::TopLevel)</a><br />
25
+ <a href="classes/RDoc/TopLevel.html#M000008">all_modules (RDoc::TopLevel)</a><br />
26
+ <a href="classes/RDoc/AnyMethod.html#M000005">comment_html (RDoc::AnyMethod)</a><br />
27
+ <a href="classes/RDoc/AnyMethod.html#M000004">decl (RDoc::AnyMethod)</a><br />
28
+ <a href="classes/RDoc/AnyMethod.html#M000003">full_name (RDoc::AnyMethod)</a><br />
29
+ <a href="classes/RDoc/TopLevel.html#M000011">parse (RDoc::TopLevel)</a><br />
30
+ <a href="classes/RDoc/TopLevel.html#M000012">parse_file (RDoc::TopLevel)</a><br />
31
+ <a href="classes/RDoc/TopLevel.html#M000010">refresh_all_classes_and_modules (RDoc::TopLevel)</a><br />
32
+ <a href="classes/String.html#M000001">to_inline_xhtml (String)</a><br />
33
+ <a href="classes/String.html#M000002">to_xhtml (String)</a><br />
34
+ <a href="classes/RDoc/AnyMethod.html#M000006">top_level (RDoc::AnyMethod)</a><br />
37
35
  </div>
38
36
  </div>
39
37
  </body>
data/doc/api/index.html CHANGED
@@ -19,6 +19,6 @@
19
19
  <frame src="fr_class_index.html" name="Classes" />
20
20
  <frame src="fr_method_index.html" name="Methods" />
21
21
  </frameset>
22
- <frame src="files/lib/erbook/html_rb.html" name="docwin" />
22
+ <frame src="files/lib/erbook/to_xhtml_rb.html" name="docwin" />
23
23
  </frameset>
24
24
  </html>
data/doc/index.xhtml ADDED
@@ -0,0 +1,2277 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
4
+ <!ENTITY icon_caution "data:image/png;base64,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">
5
+ <!ENTITY icon_tip "data:image/png;base64,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">
6
+ <!ENTITY icon_important "data:image/png;base64,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">
7
+ <!ENTITY icon_note "data:image/png;base64,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">
8
+ <!ENTITY icon_warning "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAlSSURBVGiB1ZpJjFzFGcd/31t6ncWzeHrGG15JwBAcjAGDkwtJDPIgnAgh+UAkDlzgFHHIzQeOUXKJAheUE1IQEoqMMiZBkSMQToxkx2DMImMbg5cZz7jbs3W/3t6rL4funnm9zoxnEiklleq9qn9X/f9ffVWvlhZV5f85OGtSi4iMwT4LDtsi9wObDaQC1X4AW+S2BZPAtUD1vIFjo3CaNbCerKaOMZEnbMt6XlWf6Uml7M337U50pYbsSFcXkZ4u3HgCTEDZ8yhls5Tm5pmfmAiufXXBm7+VDkTk3cCYN0dVT/xPBYyJ7LdFXutav37Xzr0PJgfuuVvcaAymZyCbhVIZiiUolys/cF2IuhCJQFcSeropFwukL3ytl8+ey2VvpS8Gqi+Pqp76rwo4JrIjKvK629tzYM+PHo8P3LtbyNyGTAbyhWXVsdBaPAYDfWhvN5kLF/Szkx/ny7NzJ4uqLx1WvbzmAo6LHLQc553d+x9ObHporyXzOZi4CYFZHuEWeaoKtgXDKehNcP30WfPVx2c84/vPHlJ9f80EHBd5xU0kXn300MFEd/8g3JgA31826fB7rb0mjOMgG4bI3r7F6b+e8Mpe/ugh1d+tWsB7Im90p4aO7Hvyp8moWjB1a0nC4bxw/e2EhfMlNUjJ8jn73onc3FT6rVHVFzvxszoVHhd5pTs1dOSxp59KRr1SHXkNxcY8o4qqVtIG3AKmRWqAYDKN7QU8dOgnye6hwSPHRV7pxLFtDxwXOegmEn/+8c9HE9GCDzmvvQVXaOVWedWKFsuSCfy48PGxv3m+l/9FuzHRUsAxkR1Rx/n08aef6uqyXMh5bUl3dJ8O5Bc5N4tfyFnXhVfMcvr4iWzZD/a0mp1aulBU5PV7H9mb6HIctGr5dq5Ra7CTazS5UUM9phFfLdfpeeJujLv3PZCIirzeimuTgDGR/W5vz4GNO7ZZZi7X1Fg7X25HOky4kXQdtlpOqB0DmBmP1PYtltOdPDAmsn9JAbbIa/c9tCeumRkUWdEA7GTldqSpietgBDOdY9fe++OWyGsdBYyJPJFcP7hrIDUkWvLrLbGElVnCymHXCJNeFqZkWDfUL4nBvl1jIk+0FWBb1vNbv7cjqdNzqGW3dZGWrrGElRtdY8meEEFFqqmFPznNxp13JW14Psx5cTktIiryTP+mDWImp8GNdJ7mGtKFZ1UQWXwXaY0Jl4XxjRioCCkpvZtSYkSeQURq09dCD4zBvq71A7bjB6jjoiILDbS0imWhlgWWhVbzqeUvWE7aYyyrqT5aYaq/JZ7AKvskBvvsMdhX422FHg4P37U5ofO5yo9rhMMVhUmH3aCKa8JUDbCAEWmJQaQyBjoYCNfFvzXD4OaRBHC4yYVE5P5kb7etBtSxmt3n7bfrXqUhXevgPfccsOiGiBDki8R7k7ZV2fUBYQGw2Y3HMEXT5JNrRVSN1lUkSPuKLat5vBnFiUYANtdgCwIMpNx4FC0U6gdeVcxqBKhRjJqWW2ARwbIsROpbMA3vlZWA4CSiKKSaBaj2O7EoahVbzgodl60dQhAEHffuqkoQBItCar0SMmItNV4eNxrBVA8L6gTUKlPXreu+Ow1qlMAEy8fXhCBYdmVCaCrPZuumVwjPQiK3S4UCanRxKgvFlQQTmBWRryNKRUjx3DmCbHaRg+9jTEC5WMQSuV3Dh3tgspwvDNuBDRK9ox5YqdU7hXImQzmTQZJJrL4+/JuTWF0xSl4BKmdMQP0sdK2Yzz8QlejCtLUcESJSGaTGYLTzBn8lYWHJks3iZ7MAWNFuyoUiAteaBASq57Mzc08lYzFbInEkHl+oCKDwwgtNgky+gP/dt5THxyEIlr3UuBMMgNWbJD+XDYzq+YW8UPmx9NVxz1rfT/Gzz1Bj6r6aC+PCGPx0msLnn5M/+RGlq1dR3++4oDO1FWo7TLW8E8YAdqqP6WuTHnCsqQdG4fTx9HTgOxZqfLwPPsAeHEQGBiAwaKmI8TyCdBoNgtaWW8KCq8FIMoaJ2OTTs8EonG4SgKoi8u7Mjclfdo8MSnDpGuWpKZia6rhvrdsPrALTSZgC0eF+5m+kVeDdMKG6yVbhzfFL3+WcrRswlnTeUYW7fAnXWA6mk/sgQmTrMLeu3MgpvBnmXCdgVPVEPj19cTY9rc7Wjc2bmQ4NrRbTSby7bZhsZlYL6dmLjSfZTSsEo/ryN598mXd2bgLXWZMBqHQWZmg48QgLcx0iOzcwfv5SHni5kW+TgFHVU8G8dzLz3bhxd29f2n2WYcFluVgL0QaI37uFmauTxp/zTrY6fm+5RiupvvTtv7/wyskYzo5NS7pGeEO+li4W3T6C6Y5x89OLng8vteLaUsBh1csSmGcvfnjGs7aOYA31LWnBVblYC4yb6sPdluLqR+c9Ccyz7e4M2q6SD6m+H3iFo5f/+UkuumcXdqr/ztznDjBuqo/4nu1cP/VFzuSLRzvdFSx5vP4XkTcSg+uObDuwJ+l/M07h8g2g+YPTlLdCDFVR8R0jRLYPc+PUl7l8evatp5c4Xl/2BYediL267cc/TFjzebwvrqCl8pp+bcV1SO6+C7pjXD953jP50tpccIREHFTbemfDnrsT67akrMKlcYpXJjBmcQV6J0sELIvYthTxnSPMXZsyU+e+8SQwa3vFBCAizm/g+7vg97HuxKMbfrAzlhjolcKVCUoTGYJcoZko7d3HTsZwh/uIb0+Rz8zrzfNXCt68d+ZD+PUf4GugBBRVtbQqASLiAjEgWkt/BY88Bkd7Bnu3DGwbiXWNDApln9LEbfzZHEGxhMkXCYqVa1aJuljRCFbMxe5NEh3pQ10HbzyjmW8nCrOZ+Rt/h9/+Ec4CBaDYkBZUtbhiASLiAPEq8VjDc+xF2P8g/GwYHokN9NjrNg5Goj1Jy4lFsGMRnJiLAkGhjF8o4ueLFOZyZmY8Uy5m5s11OPsxfPgnOFMjCuSrxPOh97YiViWglmdD/Em451F4eD1sTkB/DLojFTxFKOQhl4WZKRj/F3z6D7hoQuSWISCrqk371eW4kFUlXiMfbUgj1edIKLqAXY1SjQoE1ViuxlIoFkLpgusAWSrWb7lfXckglhDZeDV1Q4RdKvsLJ0S+9qGsCaitOgLAbyGmDHhUra6q5SV53emfPaqCrBDpMPlaalVjI/la9EMCgnZW7hT+A5SLlrQmK/qkAAAAAElFTkSuQmCC">
9
+ <!ENTITY icon_quote "data:image/png;base64,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">
10
+ <!ENTITY icon_link "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAFVBMVEVmmcwzmcyZzP8AZswAZv////////9E6giVAAAAB3RSTlP///////8AGksDRgAAADhJREFUGFcly0ESAEAEA0Ei6/9P3sEcVB8kmrwFyni0bOeyyDpy9JTLEaOhQq7Ongf5FeMhHS/4AVnsAZubxDVmAAAAAElFTkSuQmCC">
11
+ ]>
12
+ <html xmlns="http://www.w3.org/1999/xhtml">
13
+ <head>
14
+ <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
15
+ <meta name="date" content="22 November 2008"/>
16
+ <meta name="author" content="Suraj N. Kurapati"/>
17
+ <meta name="generator" content="erbook 5.0.0"/>
18
+ <title>erbook 5.0.0 user manual</title>
19
+
20
+ <link rel="alternate" type="application/rss+xml" href="http://snk.tuxfamily.org/lib/erbook/ann"/>
21
+
22
+ <style type="text/css" media="screen">
23
+ <![CDATA[body
24
+ {
25
+ margin : auto;
26
+ max-width : 36em;
27
+ padding : 0.5em;
28
+ }
29
+
30
+ /* source code */
31
+
32
+ tt
33
+ {
34
+ background-color : #F0F8FF;
35
+ }
36
+
37
+ pre
38
+ {
39
+ cursor : text;
40
+ line-height : normal;
41
+ border : 1px solid #b1d827;
42
+ background-color : #F5FFDF;
43
+ padding : 1em;
44
+ overflow : auto;
45
+ }
46
+
47
+ /* output of the syntax coloring library */
48
+ pre.code
49
+ {
50
+ background-color : #FFFFE8;
51
+ border-color : #EEDD88;
52
+ }
53
+
54
+ /* hyperlinks */
55
+
56
+ a
57
+ {
58
+ text-decoration : none;
59
+ }
60
+
61
+ a:hover
62
+ {
63
+ text-decoration : underline;
64
+ }
65
+
66
+ a:link
67
+ {
68
+ color : #002BB8;
69
+ }
70
+
71
+ a:visited
72
+ {
73
+ color : #5A3696;
74
+ }
75
+
76
+ a.here,
77
+ a.list
78
+ {
79
+ color : #000000;
80
+ }
81
+
82
+ a:target,
83
+ a:target *,
84
+ *:target a.list
85
+ {
86
+ background-color : #FF4500 !important;
87
+ color : #FFFFFF !important;
88
+ }
89
+
90
+ a:target,
91
+ *:target a.list
92
+ {
93
+ padding : 0.1em;
94
+ font-weight : bolder;
95
+ text-decoration : none;
96
+ }
97
+ ]]>
98
+ </style>
99
+ <style type="text/css" media="all">
100
+ <![CDATA[body
101
+ {
102
+ color : #000000;
103
+ background-color : #FFFFFF;
104
+ line-height : 1.5em;
105
+ font-family : Calibri, Verdana, sans-serif;
106
+ }
107
+
108
+ /* emphasis */
109
+
110
+ blockquote
111
+ {
112
+ color : #333;
113
+ font-style : italic;
114
+ }
115
+
116
+ em
117
+ {
118
+ }
119
+
120
+ hr
121
+ {
122
+ height : 0;
123
+ border : 0;
124
+ border-top : 2px solid #FF0000;
125
+ }
126
+
127
+ /* source code */
128
+
129
+ tt,
130
+ code,
131
+ pre
132
+ {
133
+ font-family : Monaco, Consolas, "Lucida Console", monospace;
134
+ font-size : 100%; /* appears like "size: small" otherwise */
135
+ }
136
+
137
+ /* hyperlinks */
138
+
139
+ a > img
140
+ {
141
+ border : none;
142
+ }
143
+
144
+ a img
145
+ {
146
+ _border : none; /* for IE6 */
147
+ }
148
+
149
+ /* lists */
150
+
151
+ #content li:first-child
152
+ {
153
+ margin-top : 1em;
154
+ }
155
+
156
+ #content li
157
+ {
158
+ margin-bottom : 1em;
159
+ }
160
+
161
+ /* headings */
162
+
163
+ h1,
164
+ h2,
165
+ h3,
166
+ h4,
167
+ h5,
168
+ h6,
169
+ .title
170
+ {
171
+ font-weight : lighter;
172
+ font-family : Constantia, "Book Antiqua", "URW Bookman L", serif;
173
+ }
174
+
175
+ #lof h1,
176
+ #lof h2,
177
+ #lof h3,
178
+ #lof h4,
179
+ #lof h5,
180
+ #lof h6
181
+ {
182
+ margin-top : 1.25em;
183
+ }
184
+
185
+ #content h1,
186
+ #content h2,
187
+ #content h3,
188
+ #content h4,
189
+ #content h5,
190
+ #content h6
191
+ {
192
+ margin-top : 2.5em;
193
+ line-height : 1.25em;
194
+ }
195
+
196
+ #content h1
197
+ {
198
+ font-size : 2.0em;
199
+ }
200
+
201
+ #content h2
202
+ {
203
+ font-size : 1.8em;
204
+ }
205
+
206
+ #content h3
207
+ {
208
+ font-size : 1.6em;
209
+ }
210
+
211
+ #content h4
212
+ {
213
+ font-size : 1.4em;
214
+ }
215
+
216
+ #content h5
217
+ {
218
+ font-size : 1.2em;
219
+ }
220
+
221
+ #content h6
222
+ {
223
+ font-size : 1.0em;
224
+ }
225
+
226
+ /* tables */
227
+
228
+ table
229
+ {
230
+ border-collapse : collapse; /* no spacing between cell borders */
231
+ margin : auto; /* center horizontally */
232
+ margin-top : 1em;
233
+ }
234
+
235
+ th,
236
+ td
237
+ {
238
+ padding : 1em;
239
+ border : 1px solid #bbb;
240
+ vertical-align : top;
241
+ background-color : inherit;
242
+ _background-color : #FFFFFF; /* for IE6 */
243
+ }
244
+
245
+ th
246
+ {
247
+ background-color : #F5F5F5;
248
+ }
249
+
250
+ /* document structure */
251
+
252
+ #nav
253
+ {
254
+ text-align : center;
255
+ margin-bottom : 4em;
256
+ }
257
+
258
+ #header
259
+ {
260
+ text-align : center;
261
+ }
262
+
263
+ .header_outside_above,
264
+ #header,
265
+ .header_outside_below
266
+ {
267
+ margin-bottom : 5em;
268
+ }
269
+
270
+ .footer_outside_above,
271
+ #footer,
272
+ .footer_outside_below
273
+ {
274
+ margin-top : 5em;
275
+ }
276
+
277
+ #header .header_inside_above,
278
+ #footer .footer_inside_above
279
+ {
280
+ margin-bottom : 4em;
281
+ }
282
+
283
+ #header .header_inside_below,
284
+ #footer .footer_inside_below
285
+ {
286
+ margin-top : 4em;
287
+ }
288
+
289
+ #Abstract
290
+ {
291
+ margin-bottom : 5em;
292
+ }
293
+
294
+ #toc li
295
+ {
296
+ list-style-type : none;
297
+ }
298
+
299
+ #toc li ul
300
+ {
301
+ padding-bottom : 1em;
302
+ border-left : thick solid #F5F5F5;
303
+ _border-left : none; /* for IE6 */
304
+ }
305
+
306
+ #toc li ul:hover
307
+ {
308
+ border-color : #DCDCDC;
309
+ }
310
+
311
+ #toc > ul
312
+ {
313
+ padding-left : 1em;
314
+ }
315
+
316
+ #bib
317
+ {
318
+ margin-top : 5em;
319
+ }
320
+
321
+ #footer
322
+ {
323
+ border-top : thick dotted #DCDCDC;
324
+ padding-top : 1em;
325
+ text-align : center;
326
+ }
327
+
328
+ #footer-credits
329
+ {
330
+ margin-top : 2em;
331
+ margin-bottom : 2em;
332
+ }
333
+
334
+ /* document nodes */
335
+
336
+ .part > .title,
337
+ .chapter > .title
338
+ {
339
+ padding-bottom : 0.5em;
340
+ }
341
+
342
+ .part > .title > big,
343
+ .chapter > .title > big
344
+ {
345
+ display : block;
346
+ margin-top : 0.25em;
347
+ }
348
+
349
+ .part .title big,
350
+ .chapter .title big
351
+ {
352
+ _display : block; /* for IE6 */
353
+ _margin-top : 0.25em; /* for IE6 */
354
+ _margin-bottom : 0.75em; /* for IE6 */
355
+ }
356
+
357
+ .paragraph > .title,
358
+ .tip > .title,
359
+ .note > .title,
360
+ .caution > .title,
361
+ .warning > .title,
362
+ .important > .title,
363
+ .figure > .title,
364
+ .table > .title,
365
+ .example > .title,
366
+ .equation > .title,
367
+ .procedure > .title
368
+ {
369
+ font-size : large;
370
+ margin-top : 2em;
371
+ }
372
+
373
+ .paragraph .title,
374
+ .tip .title,
375
+ .note .title,
376
+ .caution .title,
377
+ .warning .title,
378
+ .important .title,
379
+ .figure .title,
380
+ .table .title,
381
+ .example .title,
382
+ .equation .title,
383
+ .procedure .title
384
+ {
385
+ _font-size : large; /* for IE6 */
386
+ _font-weight : bold; /* large is not bold in IE6 */
387
+ _margin-top : 2em; /* for IE6 */
388
+ }
389
+
390
+ .tip ,
391
+ .note ,
392
+ .caution ,
393
+ .warning ,
394
+ .important,
395
+ .figure ,
396
+ .table ,
397
+ .example ,
398
+ .equation ,
399
+ .procedure
400
+ {
401
+ margin : 3em;
402
+ }
403
+
404
+ .tip > .content,
405
+ .note > .content,
406
+ .caution > .content,
407
+ .warning > .content,
408
+ .important > .content,
409
+ .figure > .content,
410
+ .table > .content,
411
+ .example > .content,
412
+ .equation > .content,
413
+ .procedure > .content
414
+ {
415
+ min-height : 48px; /* 48px is height of icon */
416
+ }
417
+
418
+ .tip > .content > .icon,
419
+ .note > .content > .icon,
420
+ .caution > .content > .icon,
421
+ .warning > .content > .icon,
422
+ .important > .content > .icon
423
+ {
424
+ float : left;
425
+ margin : 0 1em 1em 0; /* top right bottom left */
426
+ }
427
+
428
+ .tip .content .icon,
429
+ .note .content .icon,
430
+ .caution .content .icon,
431
+ .warning .content .icon,
432
+ .important .content .icon
433
+ {
434
+ _display : none; /* IE6 cannot display embedded images */
435
+ }
436
+
437
+ .figure > .title
438
+ {
439
+ text-align : center;
440
+ }
441
+
442
+ .figure .title
443
+ {
444
+ _text-align : center; /* for IE6 */
445
+ }
446
+
447
+ .figure > .content img
448
+ {
449
+ display : block;
450
+ margin : auto;
451
+ }
452
+
453
+ .figure .content img
454
+ {
455
+ _display : block; /* for IE6 */
456
+ _margin : auto; /* for IE6 */
457
+ }
458
+ ]]>
459
+ </style>
460
+ <style type="text/css" media="print">
461
+ <![CDATA[/* source code */
462
+
463
+ tt
464
+ {
465
+ font-weight : normal;
466
+ }
467
+
468
+ pre
469
+ {
470
+ border : none;
471
+ }
472
+
473
+ /* headings */
474
+
475
+ h1,
476
+ h2,
477
+ h3,
478
+ h4,
479
+ h5,
480
+ h6
481
+ {
482
+ font-weight : normal;
483
+ clear : both;
484
+ }
485
+
486
+ /* hyperlinks */
487
+
488
+ /* blend all hyperlinks with normal text */
489
+ a:link,
490
+ a:visited
491
+ {
492
+ color : #000000;
493
+ text-decoration : none;
494
+ }
495
+
496
+ /* emphasize external and cross-reference hyperlinks */
497
+ a:not([href^="#"]):link,
498
+ a:not([href^="#"]):visited,
499
+ a.xref[title]:link,
500
+ a.xref[title]:visited
501
+ {
502
+ color : #0000FF;
503
+ text-decoration : underline;
504
+ font-weight : bolder;
505
+ }
506
+
507
+ /* show URL of destination for external hyperlinks */
508
+ a:not([href^="#"]):after
509
+ {
510
+ content : " " attr(href);
511
+ font-family : Monaco, Consolas, "Lucida Console", monospace;
512
+ }
513
+
514
+ /* show name of destination for cross-references */
515
+ a.xref[title]:after
516
+ {
517
+ content : " " attr(title);
518
+ }
519
+
520
+ a:after
521
+ {
522
+ font-weight : normal;
523
+ font-size : smaller;
524
+ }
525
+
526
+ /* document structure */
527
+
528
+ #nav,
529
+ #lof
530
+ {
531
+ display : none;
532
+ }
533
+
534
+ #toc,
535
+ .part,
536
+ .chapter,
537
+ #bib
538
+ {
539
+ page-break-before : always;
540
+ }
541
+
542
+ /* document nodes */
543
+
544
+ .part > .title > big,
545
+ .chapter > .title > big
546
+ {
547
+ padding-bottom : 0.5em;
548
+ }
549
+
550
+ .part .title big,
551
+ .chapter .title big
552
+ {
553
+ _padding-bottom : 0.5em; /* for IE6 */
554
+ }
555
+ ]]>
556
+ </style>
557
+
558
+ <style type="text/css" media="screen">
559
+ <![CDATA[
560
+ /* decorate external hyperlinks with a visual indicator */
561
+ a:not([href^="#"])
562
+ {
563
+ color : #3366BB;
564
+ background : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAFVBMVEVmmcwzmcyZzP8AZswAZv////////9E6giVAAAAB3RSTlP///////8AGksDRgAAADhJREFUGFcly0ESAEAEA0Ei6/9P3sEcVB8kmrwFyni0bOeyyDpy9JTLEaOhQq7Ongf5FeMhHS/4AVnsAZubxDVmAAAAAElFTkSuQmCC");
565
+ background-position : center right;
566
+ background-repeat : no-repeat;
567
+ padding-right : 13px;
568
+ }
569
+
570
+ /* display icon for blockquote elements */
571
+ blockquote
572
+ {
573
+ background-image : url("data:image/png;base64,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");
574
+ background-repeat : no-repeat;
575
+ margin-left : 0;
576
+ padding-left : 65px;
577
+ min-height : 50px;
578
+ }
579
+ ]]>
580
+ </style>
581
+ </head>
582
+ <body>
583
+ <div id="nav">
584
+ <a href="#Abstract">Abstract</a> &middot; <a href="#Contents">Contents</a> &middot; <a href="#Cautions">Cautions</a> &middot; <a href="#Equations">Equations</a> &middot; <a href="#Examples">Examples</a> &middot; <a href="#Figures">Figures</a> &middot; <a href="#Importants">Importants</a> &middot; <a href="#Notes">Notes</a> &middot; <a href="#Procedures">Procedures</a> &middot; <a href="#Tables">Tables</a> &middot; <a href="#Tips">Tips</a> &middot; <a href="#Warnings">Warnings</a> &middot; <a href="#References">References</a>
585
+ </div>
586
+
587
+ <br style="display: none"/>
588
+ <hr style="display: none"/>
589
+ <br style="display: none"/>
590
+
591
+
592
+ <div id="header">
593
+
594
+ <p><img src='erbook.png' alt='erbook logo' /></p>
595
+ <h1 class="title">erbook 5.0.0 user manual</h1>
596
+ <h2 class="authors"><a href="http://snk.tuxfamily.org">Suraj N. Kurapati</a></h2>
597
+ <h3 class="date">22 November 2008</h3>
598
+
599
+ </div>
600
+
601
+
602
+ <div id="Abstract">
603
+ <h1 class="title"><a class="here" title="Permanent link to this section" href="#Abstract">Abstract</a></h1>
604
+ <div class="content"><p>erbook is an extensible document processor that emits <a class="xref" href="#xhtml" title="Chapter 5.1. XHTML (web page)">XHTML (web page)</a>, <a class="xref" href="#latex" title="Chapter 5.3. LaTeX (PDF)">LaTeX (PDF)</a>, <a class="xref" href="#man" title="Chapter 5.4. man (UNIX manual page)">man (UNIX manual page)</a>, <a class="xref" href="#text" title="Chapter 5.2. Plain text">plain text</a>, and <a class="xref" href="#HelloWorld" title="Section 3.2.3. Creating your own document format">any document format you can imagine</a> from <a href='http://en.wikipedia.org/wiki/ERuby'>eRuby templates</a> that allow scripting and dynamic content generation. <span style='float: right; font-size: larger'><a class="xref" href="#Introduction" title="Chapter 1. Introduction">Read more&#8230;</a></span></p>
605
+
606
+ <p><div class="paragraph">
607
+ <p class="title"><a class="here" title="Permanent link to this section" href="#Resources">Resources</a></p>
608
+ <div class="content"><ul>
609
+ <li><a href='http://snk.tuxfamily.org/lib/erbook/log'>Release notes</a> &#8212; news of project releases. <a href='http://snk.tuxfamily.org/lib/erbook/ann'><img src='feed-icon-28x28.png' alt='RSS feed' /></a></li>
610
+
611
+ <li><a href='http://snk.tuxfamily.org/lib/erbook/pkg'>Downloads</a> &#8212; obtain the newest release package.</li>
612
+
613
+ <li><a href='http://snk.tuxfamily.org/lib/erbook/src'>Source code</a> &#8212; obtain via <a href='http://git.or.cz'>Git</a> or browse online. <a href='http://snk.tuxfamily.org/lib/erbook/dev'><img src='feed-icon-28x28.png' alt='RSS feed' /></a></li>
614
+
615
+ <li><a href='api/index.html'>API reference</a> &#8212; documentation for source code.</li>
616
+ </ul>
617
+
618
+ <p>To get help or provide feedback, simply <a class="xref" href="#License" title="Section 1.2.2. License">contact the author</a>.</p></div>
619
+ </div></p></div>
620
+ </div>
621
+
622
+ <br style="display: none"/>
623
+ <hr style="display: none"/>
624
+ <br style="display: none"/>
625
+
626
+ <div id="toc">
627
+ <h1 class="title" id="Contents"><a class="here" href="#Contents">Contents</a></h1>
628
+ <ul>
629
+ <li>1&nbsp;&nbsp;<a id="rev:Introduction" href="#Introduction">Introduction</a><ul><li>1.1&nbsp;&nbsp;<a id="rev:Relevance" href="#Relevance">Relevance</a><ul><li>1.1.1&nbsp;&nbsp;<a id="rev:Reviews" href="#Reviews">Reviews</a></li></ul></li><li>1.2&nbsp;&nbsp;<a id="rev:Logistics" href="#Logistics">Logistics</a><ul><li>1.2.1&nbsp;&nbsp;<a id="rev:Credits" href="#Credits">Credits</a></li><li>1.2.2&nbsp;&nbsp;<a id="rev:License" href="#License">License</a></li><li>1.2.3&nbsp;&nbsp;<a id="rev:Version-numbers" href="#Version-numbers">Version numbers</a></li></ul></li></ul></li><li>2&nbsp;&nbsp;<a id="rev:Setup" href="#Setup">Setup</a><ul><li>2.1&nbsp;&nbsp;<a id="rev:Requirements" href="#Requirements">Requirements</a></li><li>2.2&nbsp;&nbsp;<a id="rev:Installation" href="#Installation">Installation</a></li><li>2.3&nbsp;&nbsp;<a id="rev:Manifest" href="#Manifest">Manifest</a></li></ul></li><li>3&nbsp;&nbsp;<a id="rev:Theory-of-operation" href="#Theory-of-operation">Theory of operation</a><ul><li>3.1&nbsp;&nbsp;<a id="rev:Nodes" href="#Nodes">Nodes</a><ul><li>3.1.1&nbsp;&nbsp;<a id="rev:Node.class" href="#Node.class">The <code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code> class</a></li></ul></li><li>3.2&nbsp;&nbsp;<a id="rev:SpecFile" href="#SpecFile">Format specification file</a><ul><li>3.2.1&nbsp;&nbsp;<a id="rev:SpecFile.nodes" href="#SpecFile.nodes">Node definition</a><ul><li>3.2.1.1&nbsp;&nbsp;<a id="rev:SpecFile.nodes.output" href="#SpecFile.nodes.output">Node output template</a></li></ul></li><li>3.2.2&nbsp;&nbsp;<a id="rev:SpecFile.output" href="#SpecFile.output">Document output template</a></li><li>3.2.3&nbsp;&nbsp;<a id="rev:HelloWorld" href="#HelloWorld">Creating your own document format</a></li></ul></li></ul></li><li>4&nbsp;&nbsp;<a id="rev:Usage" href="#Usage">Usage</a><ul><li>4.1&nbsp;&nbsp;<a id="rev:Command-line-invocation" href="#Command-line-invocation">Command-line invocation</a></li><li>4.2&nbsp;&nbsp;<a id="rev:include" href="#include">Including external documents</a></li><li>4.3&nbsp;&nbsp;<a id="rev:Unindenting-nodes-hierarchically" href="#Unindenting-nodes-hierarchically">Unindenting nodes hierarchically</a></li></ul></li><li>5&nbsp;&nbsp;<a id="rev:Formats" href="#Formats">Formats</a><ul><li>5.1&nbsp;&nbsp;<a id="rev:xhtml" href="#xhtml">XHTML (web page)</a><ul><li>5.1.1&nbsp;&nbsp;<a id="rev:Text-to-XHTML-conversion" href="#Text-to-XHTML-conversion">Text to XHTML conversion</a><ul><li>5.1.1.1&nbsp;&nbsp;<a id="rev:Syntax-coloring-for-source-code" href="#Syntax-coloring-for-source-code">Syntax coloring for source code</a><ul><li>5.1.1.1.1&nbsp;&nbsp;<a id="rev:Specifying-the-programming-language" href="#Specifying-the-programming-language">Specifying the programming language</a></li></ul></li><li>5.1.1.2&nbsp;&nbsp;<a id="rev:Smart-sizing-of-source-code" href="#Smart-sizing-of-source-code">Smart sizing of source code</a></li><li>5.1.1.3&nbsp;&nbsp;<a id="rev:Protecting-verbatim-text" href="#Protecting-verbatim-text">Protecting verbatim text</a></li></ul></li><li>5.1.2&nbsp;&nbsp;<a id="rev:Parameters" href="#Parameters">Parameters</a></li><li>5.1.3&nbsp;&nbsp;<a id="rev:Methods" href="#Methods">Methods</a><ul><li>5.1.3.1&nbsp;&nbsp;<a id="rev:a-ERBook::Node-title" href="#a-ERBook::Node-title"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span><span style="color:#666">#title()</span></code></a></li><li>5.1.3.2&nbsp;&nbsp;<a id="rev:a-ERBook::Node-id" href="#a-ERBook::Node-id"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span><span style="color:#666">#id()</span></code></a></li><li>5.1.3.3&nbsp;&nbsp;<a id="rev:a-ERBook::Node-title_xhtml" href="#a-ERBook::Node-title_xhtml"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span><span style="color:#666">#title_xhtml()</span></code></a></li><li>5.1.3.4&nbsp;&nbsp;<a id="rev:a-ERBook::Node-content_xhtml" href="#a-ERBook::Node-content_xhtml"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span><span style="color:#666">#content_xhtml()</span></code></a></li><li>5.1.3.5&nbsp;&nbsp;<a id="rev:a-ERBook::Node-title_link-aTitle-nil" href="#a-ERBook::Node-title_link-aTitle-nil"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span><span style="color:#666">#title_link(aTitle = nil)</span></code></a></li><li>5.1.3.6&nbsp;&nbsp;<a id="rev:a-ERBook::Node-index_link" href="#a-ERBook::Node-index_link"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span><span style="color:#666">#index_link()</span></code></a></li><li>5.1.3.7&nbsp;&nbsp;<a id="rev:a-ERBook::Node-number_link" href="#a-ERBook::Node-number_link"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span><span style="color:#666">#number_link()</span></code></a></li><li>5.1.3.8&nbsp;&nbsp;<a id="rev:a-Hash-to_xml_atts" href="#a-Hash-to_xml_atts"><code class="code"><span style="color:#036;font-weight:bold">Hash</span><span style="color:#666">#to_xml_atts()</span></code></a></li><li>5.1.3.9&nbsp;&nbsp;<a id="rev:a-ERBook::Template-verbatim-aContent" href="#a-ERBook::Template-verbatim-aContent"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Template</span><span style="color:#666">#verbatim(aContent)</span></code></a></li><li>5.1.3.10&nbsp;&nbsp;<a id="rev:a-ERBook::Template-hyperlink-aUrl-aLabel-aUrl-aTitle-nil" href="#a-ERBook::Template-hyperlink-aUrl-aLabel-aUrl-aTitle-nil"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Template</span><span style="color:#666">#hyperlink(aUrl, aLabel = aUrl, aTitle = nil)</span></code></a></li><li>5.1.3.11&nbsp;&nbsp;<a id="rev:a-ERBook::Template-embed_image_file-aPath-aFormat-aPath-w-aAtts" href="#a-ERBook::Template-embed_image_file-aPath-aFormat-aPath-w-aAtts"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Template</span><span style="color:#666">#embed_image_file(aPath, aFormat = aPath[/\w+/], aAtts = {})</span></code></a></li><li>5.1.3.12&nbsp;&nbsp;<a id="rev:a-ERBook::Template-embed_image_data-aData-aFormat-aAtts" href="#a-ERBook::Template-embed_image_data-aData-aFormat-aAtts"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Template</span><span style="color:#666">#embed_image_data(aData, aFormat, aAtts = {})</span></code></a></li><li>5.1.3.13&nbsp;&nbsp;<a id="rev:a-String-to_xml_entities" href="#a-String-to_xml_entities"><code class="code"><span style="color:#036;font-weight:bold">String</span><span style="color:#666">#to_xml_entities()</span></code></a></li><li>5.1.3.14&nbsp;&nbsp;<a id="rev:a-String-to_uri_fragment" href="#a-String-to_uri_fragment"><code class="code"><span style="color:#036;font-weight:bold">String</span><span style="color:#666">#to_uri_fragment()</span></code></a></li><li>5.1.3.15&nbsp;&nbsp;<a id="rev:a-String-to_inline_xhtml" href="#a-String-to_inline_xhtml"><code class="code"><span style="color:#036;font-weight:bold">String</span><span style="color:#666">#to_inline_xhtml()</span></code></a></li><li>5.1.3.16&nbsp;&nbsp;<a id="rev:a-String-to_xhtml-aInline-false" href="#a-String-to_xhtml-aInline-false"><code class="code"><span style="color:#036;font-weight:bold">String</span><span style="color:#666">#to_xhtml(aInline = false)</span></code></a></li></ul></li><li>5.1.4&nbsp;&nbsp;<a id="rev:xhtml.nodes" href="#xhtml.nodes">Nodes</a><ul><li>5.1.4.1&nbsp;&nbsp;<a id="rev:Structural-nodes" href="#Structural-nodes">Structural nodes</a><ul><li>5.1.4.1.1&nbsp;&nbsp;<a id="rev:xhtml.nodes.header" href="#xhtml.nodes.header">header</a></li><li>5.1.4.1.2&nbsp;&nbsp;<a id="rev:xhtml.nodes.footer" href="#xhtml.nodes.footer">footer</a></li><li>5.1.4.1.3&nbsp;&nbsp;<a id="rev:xhtml.nodes.abstract" href="#xhtml.nodes.abstract">abstract</a></li><li>5.1.4.1.4&nbsp;&nbsp;<a id="rev:xhtml.nodes.xref" href="#xhtml.nodes.xref">xref</a></li></ul></li><li>5.1.4.2&nbsp;&nbsp;<a id="rev:Organizational-nodes" href="#Organizational-nodes">Organizational nodes</a><ul><li>5.1.4.2.1&nbsp;&nbsp;<a id="rev:xhtml.nodes.part" href="#xhtml.nodes.part">part</a><ul><li>5.1.4.2.1.1&nbsp;&nbsp;<a id="rev:An-example" href="#An-example">An example</a></li></ul></li><li>5.1.4.2.2&nbsp;&nbsp;<a id="rev:xhtml.nodes.chapter" href="#xhtml.nodes.chapter">chapter</a><ul><li>5.1.4.2.2.1&nbsp;&nbsp;<a id="rev:An-example-5.1.4.2.2.1" href="#An-example-5.1.4.2.2.1">An example</a></li></ul></li><li>5.1.4.2.3&nbsp;&nbsp;<a id="rev:xhtml.nodes.section" href="#xhtml.nodes.section">section</a><ul><li>5.1.4.2.3.1&nbsp;&nbsp;<a id="rev:An-example-5.1.4.2.3.1" href="#An-example-5.1.4.2.3.1">An example</a></li></ul></li><li>5.1.4.2.4&nbsp;&nbsp;<a id="rev:xhtml.nodes.paragraph" href="#xhtml.nodes.paragraph">paragraph</a></li></ul></li><li>5.1.4.3&nbsp;&nbsp;<a id="rev:Admonition-nodes" href="#Admonition-nodes">Admonition nodes</a><ul><li>5.1.4.3.1&nbsp;&nbsp;<a id="rev:xhtml.nodes.warning" href="#xhtml.nodes.warning">warning</a></li><li>5.1.4.3.2&nbsp;&nbsp;<a id="rev:xhtml.nodes.caution" href="#xhtml.nodes.caution">caution</a></li><li>5.1.4.3.3&nbsp;&nbsp;<a id="rev:xhtml.nodes.important" href="#xhtml.nodes.important">important</a></li><li>5.1.4.3.4&nbsp;&nbsp;<a id="rev:xhtml.nodes.note" href="#xhtml.nodes.note">note</a></li><li>5.1.4.3.5&nbsp;&nbsp;<a id="rev:xhtml.nodes.tip" href="#xhtml.nodes.tip">tip</a></li></ul></li><li>5.1.4.4&nbsp;&nbsp;<a id="rev:Auxilary-materials" href="#Auxilary-materials">Auxilary materials</a><ul><li>5.1.4.4.1&nbsp;&nbsp;<a id="rev:xhtml.nodes.figure" href="#xhtml.nodes.figure">figure</a></li><li>5.1.4.4.2&nbsp;&nbsp;<a id="rev:xhtml.nodes.table" href="#xhtml.nodes.table">table</a></li><li>5.1.4.4.3&nbsp;&nbsp;<a id="rev:xhtml.nodes.example" href="#xhtml.nodes.example">example</a></li><li>5.1.4.4.4&nbsp;&nbsp;<a id="rev:xhtml.nodes.equation" href="#xhtml.nodes.equation">equation</a></li><li>5.1.4.4.5&nbsp;&nbsp;<a id="rev:xhtml.nodes.procedure" href="#xhtml.nodes.procedure">procedure</a></li></ul></li><li>5.1.4.5&nbsp;&nbsp;<a id="rev:Bibliographical-nodes" href="#Bibliographical-nodes">Bibliographical nodes</a><ul><li>5.1.4.5.1&nbsp;&nbsp;<a id="rev:xhtml.nodes.reference" href="#xhtml.nodes.reference">reference</a></li><li>5.1.4.5.2&nbsp;&nbsp;<a id="rev:xhtml.nodes.cite" href="#xhtml.nodes.cite">cite</a></li></ul></li></ul></li></ul></li><li>5.2&nbsp;&nbsp;<a id="rev:text" href="#text">Plain text</a></li><li>5.3&nbsp;&nbsp;<a id="rev:latex" href="#latex">LaTeX (PDF)</a></li><li>5.4&nbsp;&nbsp;<a id="rev:man" href="#man">man (UNIX manual page)</a></li></ul></li>
630
+
631
+ <li><a href="#References">References</a></li>
632
+ </ul>
633
+ </div>
634
+
635
+ <div id="lof"><h2 id="Cautions" class="title"><a class="here" href="#Cautions">Cautions</a></h2> <ol><li><a id="rev:An-example-1-1" href="#An-example-1-1">An example</a></li></ol><h2 id="Equations" class="title"><a class="here" href="#Equations">Equations</a></h2> <ol><li><a id="rev:An-example-1-1-1-1-1-1" href="#An-example-1-1-1-1-1-1">An example</a></li></ol><h2 id="Examples" class="title"><a class="here" href="#Examples">Examples</a></h2> <ol><li><a id="rev:HelloWorld.spec" href="#HelloWorld.spec">HelloWorld format specification file</a></li><li><a id="rev:HelloWorld.input" href="#HelloWorld.input">Input document for HelloWorld format</a></li><li><a id="rev:HelloWorld.output" href="#HelloWorld.output">Output of HelloWorld format</a></li><li><a id="rev:An-example-4" href="#An-example-4">An example</a></li></ol><h2 id="Figures" class="title"><a class="here" href="#Figures">Figures</a></h2> <ol><li><a id="rev:An-example-1-1-1-1" href="#An-example-1-1-1-1">An example</a></li></ol><h2 id="Importants" class="title"><a class="here" href="#Importants">Importants</a></h2> <ol><li><a id="rev:Save-XHTML-output-as-.xhtml" href="#Save-XHTML-output-as-.xhtml">Save XHTML output as <tt>.xhtml</tt></a></li><li><a id="rev:An-example-2" href="#An-example-2">An example</a></li></ol><h2 id="Notes" class="title"><a class="here" href="#Notes">Notes</a></h2> <ol><li><a id="rev:See-the-source-of-this-manual" href="#See-the-source-of-this-manual">See the source of this manual</a></li><li><a id="rev:An-example-2-2" href="#An-example-2-2">An example</a></li></ol><h2 id="Procedures" class="title"><a class="here" href="#Procedures">Procedures</a></h2> <ol><li><a id="rev:An-example-1-1-1-1-1-1-1" href="#An-example-1-1-1-1-1-1-1">An example</a></li></ol><h2 id="Tables" class="title"><a class="here" href="#Tables">Tables</a></h2> <ol><li><a id="rev:An-example-1-1-1-1-1" href="#An-example-1-1-1-1-1">An example</a></li></ol><h2 id="Tips" class="title"><a class="here" href="#Tips">Tips</a></h2> <ol><li><a id="rev:An-example-1-1-1" href="#An-example-1-1-1">An example</a></li></ol><h2 id="Warnings" class="title"><a class="here" href="#Warnings">Warnings</a></h2> <ol><li><a id="rev:An-example-1" href="#An-example-1">An example</a></li></ol></div>
636
+
637
+ <br style="display: none"/>
638
+ <hr style="display: none"/>
639
+ <br style="display: none"/>
640
+
641
+ <div id="content">
642
+
643
+ <div class="chapter">
644
+ <h1 class="title">
645
+ Chapter&nbsp;<a class="list" title="Return to table of contents" id="Introduction" href="#rev:Introduction">1</a>
646
+ <br/>
647
+ <big><a class="here" title="Permanent link to this section" href="#Introduction">Introduction</a></big>
648
+ </h1>
649
+ <div class="content"><p>erbook is an extensible document processor that emits <a class="xref" href="#xhtml" title="Chapter 5.1. XHTML (web page)">XHTML (web page)</a>, <a class="xref" href="#latex" title="Chapter 5.3. LaTeX (PDF)">LaTeX (PDF)</a>, <a class="xref" href="#man" title="Chapter 5.4. man (UNIX manual page)">man (UNIX manual page)</a>, <a class="xref" href="#text" title="Chapter 5.2. Plain text">plain text</a>, and <a class="xref" href="#HelloWorld" title="Section 3.2.3. Creating your own document format">any document format you can imagine</a> from <a href='http://en.wikipedia.org/wiki/ERuby'>eRuby templates</a> that allow scripting and dynamic content generation.</p>
650
+
651
+ <p><div class="note">
652
+ <p class="title"><a class="list" title="Return to table of contents" id="See-the-source-of-this-manual" href="#rev:See-the-source-of-this-manual">Note 1</a>.&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#See-the-source-of-this-manual">See the source of this manual</a></p>
653
+ <div class="content"><img class="icon" src="&icon_note;" alt="note"/><p>Did you know that this manual was generated by erbook? Here is <a href='manual.erb'>the source document</a> to prove it!</p></div>
654
+ </div> <div class="section">
655
+ <h2 class="title">
656
+ <a class="list" title="Return to table of contents" id="Relevance" href="#rev:Relevance">1.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Relevance">Relevance</a>
657
+ </h2>
658
+ <div class="content"><p>Unlike document processors such as <a href='http://www.docbook.org'>DocBook</a>, <a href='http://deplate.sourceforge.net'>Deplate</a>, and <a href='http://www.jus.uio.no/sisu/SiSU/'>SiSU</a>, erbook is:</p>
659
+
660
+ <ul>
661
+ <li><em>tiny</em> because its core contains less than 210 source lines of code</li>
662
+
663
+ <li><em>extensible</em> because it lets you define <a class="xref" href="#HelloWorld" title="Section 3.2.3. Creating your own document format">your own custom document format</a></li>
664
+ </ul>
665
+
666
+ <p>Unlike the documents of raw text processors such as <a href='http://www.methods.co.nz/asciidoc/'>AsciiDoc</a>, <a href='http://txt2tags.sourceforge.net'>txt2tags</a>, and <a href='http://www.triptico.com/software/grutatxt.html'>Grutatxt</a>, erbook documents are <em>scriptable</em> eRuby templates, which means that you can inject arbitrary Ruby code into your documents for <strong>dynamic content generation</strong>.</p>
667
+
668
+ <p><div class="section">
669
+ <h3 class="title">
670
+ <a class="list" title="Return to table of contents" id="Reviews" href="#rev:Reviews">1.1.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Reviews">Reviews</a>
671
+ </h3>
672
+ <div class="content"><p>Vitor Peres in <a href='http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/283052'>ruby-talk</a>:</p>
673
+
674
+ <blockquote>
675
+ <p>I actually felt like printing [this manual], because it&#8217;s just so well-thought typographically&#8230; Even if [erbook] weren&#8217;t great by itself, I&#8217;d feel good just looking at the manual.</p>
676
+ </blockquote>
677
+
678
+ <p>Ara T. Howard in <a href='http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/282949'>ruby-talk</a>:</p>
679
+
680
+ <blockquote>
681
+ <p>[this manual is] a insanely complete and nice looking bit of documentation [&#8230; erbook] looks like a great project</p>
682
+ </blockquote>
683
+
684
+ <p>Martin DeMello in <a href='http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/283304'>ruby-talk</a>:</p>
685
+
686
+ <blockquote>
687
+ <p>Very nice work indeed!</p>
688
+ </blockquote></div>
689
+ </div></p></div>
690
+ </div> <div class="section">
691
+ <h2 class="title">
692
+ <a class="list" title="Return to table of contents" id="Logistics" href="#rev:Logistics">1.2</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Logistics">Logistics</a>
693
+ </h2>
694
+ <div class="content"><p>erbook is <a class="xref" href="#License" title="Section 1.2.2. License">open source software</a> so feel free to contribute your improvements and discuss your ideas <a class="xref" href="#License" title="Section 1.2.2. License">with the author</a>. You can obtain the source code from <a href='http://snk.tuxfamily.org/lib/erbook/src'>this source repository</a> and monitor for changes by subscribing to <a href='http://snk.tuxfamily.org/lib/erbook/dev'>this news feed</a>.</p>
695
+
696
+ <p><div class="section">
697
+ <h3 class="title">
698
+ <a class="list" title="Return to table of contents" id="Credits" href="#rev:Credits">1.2.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Credits">Credits</a>
699
+ </h3>
700
+ <div class="content"><p>The erbook logo, its image file &#8220;erbook.png&#8221;, and its source file &#8220;erbook.svg&#8221; make use of the <a href='http://openclipart.org/media/files/lemmling/9065'>&#8220;cartoon owl sitting on a book&#8221;</a> graphic, which was created and released into the public domain by <a href='http://openclipart.org/media/people/lemmling'>Jens Vierbuchen</a> on July 7, 2008.</p></div>
701
+ </div> <div class="section">
702
+ <h3 class="title">
703
+ <a class="list" title="Return to table of contents" id="License" href="#rev:License">1.2.2</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#License">License</a>
704
+ </h3>
705
+ <div class="content"><p>Copyright 2006 Suraj N. Kurapati <a href='mailto:sunaku@gmail.com'>&#115;&#117;&#110;&#097;&#107;&#117;&#064;&#103;&#109;&#097;&#105;&#108;&#046;&#099;&#111;&#109;</a></p>
706
+
707
+ <p>Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.</p>
708
+
709
+ <p>THE SOFTWARE IS PROVIDED &#8220;AS IS&#8221; AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</p></div>
710
+ </div> <div class="section">
711
+ <h3 class="title">
712
+ <a class="list" title="Return to table of contents" id="Version-numbers" href="#rev:Version-numbers">1.2.3</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Version-numbers">Version numbers</a>
713
+ </h3>
714
+ <div class="content"><p>erbook releases are numbered in <em>major.minor.patch</em> form, according to the <a href='http://www.rubygems.org/read/chapter/7'>RubyGems rational versioning policy</a> which can be <a href='http://ablog.apress.com/?p=738'>summarized</a> thus:</p>
715
+ <table border="1">
716
+ <thead>
717
+ <tr>
718
+ <td rowspan='2'>What increased in the version number?</td>
719
+ <td colspan='3'>What does the increase signify about the release?</td>
720
+ </tr>
721
+ <tr>
722
+ <th>Backwards compatible?</th>
723
+ <th>New features?</th>
724
+ <th>Bug fixes?</th>
725
+ </tr>
726
+ </thead>
727
+ <tbody>
728
+ <tr>
729
+ <th>major</th>
730
+ <td style='background-color: #FFE4E1;'>No</td>
731
+ <td>Yes</td>
732
+ <td>Yes</td>
733
+ </tr>
734
+ <tr>
735
+ <th>minor</th>
736
+ <td>Yes</td>
737
+ <td>Yes</td>
738
+ <td>Yes</td>
739
+ </tr>
740
+ <tr>
741
+ <th>patch</th>
742
+ <td>Yes</td>
743
+ <td style='background-color: #FFE4E1;'>No</td>
744
+ <td>Yes</td>
745
+ </tr>
746
+ </tbody>
747
+ </table></div>
748
+ </div></p></div>
749
+ </div></p></div>
750
+ </div>
751
+ <div class="chapter">
752
+ <h1 class="title">
753
+ Chapter&nbsp;<a class="list" title="Return to table of contents" id="Setup" href="#rev:Setup">2</a>
754
+ <br/>
755
+ <big><a class="here" title="Permanent link to this section" href="#Setup">Setup</a></big>
756
+ </h1>
757
+ <div class="content"><p><div class="section">
758
+ <h2 class="title">
759
+ <a class="list" title="Return to table of contents" id="Requirements" href="#rev:Requirements">2.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Requirements">Requirements</a>
760
+ </h2>
761
+ <div class="content"><p>Your system needs the following software to run erbook.</p>
762
+ <table border="1"><thead><tr><th>Software</th><th>Description</th><th>Notes</th></tr></thead><tbody><tr><td style='text-align: left;'><a href='http://ruby-lang.org'>Ruby</a></td><td style='text-align: left;'>Ruby language interpreter</td><td style='text-align: left;'>Version 1.8.x is required.</td>
763
+ </tr><tr><td style='text-align: left;'><a href='http://maruku.rubyforge.org'>Maruku</a></td><td style='text-align: left;'>Markdown processor</td><td style='text-align: left;'>Required by the <a class="xref" href="#xhtml" title="Chapter 5.1. XHTML (web page)">default XHTML format</a>.</td>
764
+ </tr><tr><td style='text-align: left;'><a href='http://coderay.rubychan.de'>CodeRay</a></td><td style='text-align: left;'>Syntax highlighter</td><td style='text-align: left;'>Required by the <a class="xref" href="#xhtml" title="Chapter 5.1. XHTML (web page)">default XHTML format</a>.</td>
765
+ </tr><tr><td style='text-align: left;'><a href='http://trollop.rubyforge.org'>Trollop</a></td><td style='text-align: left;'>Command-line option parser</td><td style='text-align: left;'>Required by the <em>erbook</em> executable.</td>
766
+ </tr></tbody></table>
767
+ <p>If your system has <a href='http://rubygems.org'>RubyGems</a>, then you can install Maruku and CodeRay by running the following command:</p>
768
+
769
+ <pre>gem install trollop maruku coderay</pre></div>
770
+ </div> <div class="section">
771
+ <h2 class="title">
772
+ <a class="list" title="Return to table of contents" id="Installation" href="#rev:Installation">2.2</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Installation">Installation</a>
773
+ </h2>
774
+ <div class="content"><p>If your system has <a href='http://rubygems.org'>RubyGems</a>, then you can install erbook by running the following commands:</p>
775
+
776
+ <pre>gem install erbook
777
+ erbook -v</pre>
778
+
779
+ <p>Otherwise, follow these instructions:</p>
780
+
781
+ <ol>
782
+ <li>
783
+ <p>Download the newest release package from <a href='http://snk.tuxfamily.org/lib/erbook/pkg'>the download area</a>.</p>
784
+ </li>
785
+
786
+ <li>
787
+ <p>Extract the release package somewhere on your system.</p>
788
+ </li>
789
+
790
+ <li>
791
+ <p>Go inside the extracted directory and run the following command:</p>
792
+
793
+ <pre>ruby bin/erbook -v</pre>
794
+ </li>
795
+ </ol>
796
+
797
+ <p>If the installation was successful, then you will see output like this: <pre>project: erbook
798
+ version: 5.0.0
799
+ release: 2008-11-22
800
+ website: http://snk.tuxfamily.org/lib/erbook
801
+ install: /home/sun/src/erbook
802
+ </pre></p>
803
+
804
+ <p>Otherwise, you can <a class="xref" href="#License" title="Section 1.2.2. License">contact the author</a> for help.</p></div>
805
+ </div> <div class="section">
806
+ <h2 class="title">
807
+ <a class="list" title="Return to table of contents" id="Manifest" href="#rev:Manifest">2.3</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Manifest">Manifest</a>
808
+ </h2>
809
+ <div class="content"><p>You will see the following items inside erbook&#8217;s installation directory, whose path you can determine by running this command:</p>
810
+
811
+ <pre>erbook -v</pre>
812
+
813
+ <ul>
814
+ <li>
815
+ <p><tt>bin/</tt> &#8212; contains executable programs.</p>
816
+
817
+ <ul>
818
+ <li><tt>erbook</tt> &#8212; core logic of erbook.</li>
819
+ </ul>
820
+ </li>
821
+
822
+ <li>
823
+ <p><tt>fmt/</tt> &#8212; contains the predefined set of <a class="xref" href="#SpecFile" title="Section 3.2. Format specification file">format specification files</a>. If you ever need to install your custom format specification file globally, then put it inside this directory.</p>
824
+ </li>
825
+
826
+ <li>
827
+ <p><tt>latex.yaml</tt> &#8212; high-quality typesetting</p>
828
+ </li>
829
+
830
+ <li>
831
+ <p><tt>man.yaml</tt> &#8212; manual page for UNIX</p>
832
+ </li>
833
+
834
+ <li>
835
+ <p><tt>xhtml.yaml</tt> &#8212; web page for the Internet</p>
836
+ </li>
837
+
838
+ <li>
839
+ <p><tt>text.yaml</tt> &#8212; plain text, nothing fancy</p>
840
+ </li>
841
+
842
+ <li>
843
+ <p><tt>lib/</tt> &#8212; erbook automatically adds this directory to Ruby&#8217;s load path.</p>
844
+
845
+ <ul>
846
+ <li>
847
+ <p><tt>erbook.rb</tt> &#8212; project version information.</p>
848
+ </li>
849
+
850
+ <li>
851
+ <p><tt>erbook/</tt></p>
852
+
853
+ <ul>
854
+ <li>
855
+ <p><tt>to_xhtml.rb</tt> &#8212; provides methods (see <a class="xref" href="#Text-to-XHTML-conversion">Section 5.1.1. Text to XHTML conversion</a>) for the <a class="xref" href="#xhtml">Chapter 5.1. XHTML (web page)</a> format.</p>
856
+ </li>
857
+
858
+ <li>
859
+ <p><tt>rdoc.rb</tt> &#8212; provides RDoc parse trees to Ruby code.</p>
860
+ </li>
861
+ </ul>
862
+ </li>
863
+ </ul>
864
+ </li>
865
+
866
+ <li>
867
+ <p><tt>doc/</tt> &#8212; contains this manual and other documentation.</p>
868
+
869
+ <ul>
870
+ <li>
871
+ <p><tt>erbook.svg</tt> &#8212; source file of the erbook logo.</p>
872
+ </li>
873
+
874
+ <li>
875
+ <p><tt>manual.erb</tt> &#8212; source file of this manual.</p>
876
+ </li>
877
+
878
+ <li>
879
+ <p><tt>api/</tt> &#8212; contains API reference documentation for the provided Ruby code.</p>
880
+ </li>
881
+ </ul>
882
+ </li>
883
+
884
+ <li>
885
+ <p><tt>LICENSE</tt> &#8212; project license and copyright notice.</p>
886
+ </li>
887
+ </ul></div>
888
+ </div></p></div>
889
+ </div>
890
+ <div class="chapter">
891
+ <h1 class="title">
892
+ Chapter&nbsp;<a class="list" title="Return to table of contents" id="Theory-of-operation" href="#rev:Theory-of-operation">3</a>
893
+ <br/>
894
+ <big><a class="here" title="Permanent link to this section" href="#Theory-of-operation">Theory of operation</a></big>
895
+ </h1>
896
+ <div class="content"><p>When you run erbook, it does the following:</p>
897
+
898
+ <ol>
899
+ <li>
900
+ <p>Loads the <a class="xref" href="#SpecFile" title="Section 3.2. Format specification file">format specification file</a>.</p>
901
+ </li>
902
+
903
+ <li>
904
+ <p>Creates an <strong>input document</strong> by:</p>
905
+
906
+ <ul>
907
+ <li>
908
+ <p>Reading the input (the content of either the input file or the standard input stream) into memory.</p>
909
+ </li>
910
+
911
+ <li>
912
+ <p>Evaluating <a class="xref" href="#include" title="Section 4.2. Including external documents">include directives</a> in the input.</p>
913
+ </li>
914
+ </ul>
915
+ </li>
916
+
917
+ <li>
918
+ <p>Transforms the input document into a <strong>processed document</strong> by:</p>
919
+
920
+ <ul>
921
+ <li>
922
+ <p>Building a <strong>document tree</strong> data structure from <a class="xref" href="#Nodes" title="Section 3.1. Nodes">nodes</a> present in the input document.</p>
923
+ </li>
924
+
925
+ <li>
926
+ <p>Replacing every node in the input document with the result of its <a class="xref" href="#SpecFile.nodes.output" title="Section 3.2.1.1. Node output template">node output template</a>.</p>
927
+ </li>
928
+ </ul>
929
+ </li>
930
+
931
+ <li>
932
+ <p>Transforms the processed document into an <strong>output document</strong> according to the <a class="xref" href="#SpecFile.output" title="Section 3.2.2. Document output template">document output template</a>.</p>
933
+ </li>
934
+
935
+ <li>
936
+ <p>Prints the output document to the standard output stream.</p>
937
+ </li>
938
+ </ol>
939
+
940
+ <p>Although there is only one document being processed here, we refer to it using three distinct terms: <strong>input</strong>, <strong>processed</strong>, and <strong>output</strong>; because the content of the document changes radically with every transformation.</p>
941
+
942
+ <p><div class="section">
943
+ <h2 class="title">
944
+ <a class="list" title="Return to table of contents" id="Nodes" href="#rev:Nodes">3.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Nodes">Nodes</a>
945
+ </h2>
946
+ <div class="content"><p>A node is a block of text that appears like this:</p>
947
+
948
+ <pre>&lt;% node_type node_argument1, node_argument2, ... do |node_object| %&gt;
949
+ node_content
950
+ &lt;% end %&gt;</pre>
951
+
952
+ <p>Or like this:</p>
953
+
954
+ <pre>&lt;% node_type node_argument1, node_argument2, ... do %&gt;
955
+ node_content
956
+ &lt;% end %&gt;</pre>
957
+
958
+ <p>Or like this:</p>
959
+
960
+ <pre>&lt;%= node_type node_argument1, node_argument2, ... %&gt;</pre>
961
+
962
+ <p>Alternatively, you may omit the leading &#8221;&lt;&#8221; and trailing &#8220;%&gt;&#8221; characters from an eRuby directive if the directive spans an <em>entire</em> line. So, the above examples become:</p>
963
+
964
+ <pre>% node_type node_argument1, node_argument2, ... do |node_object|
965
+ node_content
966
+ % end</pre>
967
+
968
+ <p>And:</p>
969
+
970
+ <pre>% node_type node_argument1, node_argument2, ... do
971
+ node_content
972
+ % end</pre>
973
+
974
+ <p>And:</p>
975
+
976
+ <pre>%= node_type node_argument1, node_argument2, ...</pre>
977
+
978
+ <p>Technically, nodes are Ruby method invocations composed of the following:</p>
979
+ <table border="1"><thead><tr><th>Component</th><th>Description</th></tr></thead><tbody><tr><td style='text-align: left;'><code class="code">node_type</code></td><td style='text-align: left;'>name of the method being invoked</td>
980
+ </tr><tr><td style='text-align: left;'><code class="code">node_argument1, node_argument2, ...</code></td><td style='text-align: left;'>arguments for the method invocation</td>
981
+ </tr><tr><td style='text-align: left;'><code class="code">node_content</code></td><td style='text-align: left;'>a block argument being passed to the method invocation</td>
982
+ </tr><tr><td style='text-align: left;'><code class="code">node_object</code></td><td style='text-align: left;'>a <code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code> object (see <a class="xref" href="#Node.class">Section 3.1.1. The <code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code> class</a>) representing this method invocation</td>
983
+ </tr></tbody></table>
984
+ <p>A <a class="xref" href="#SpecFile" title="Section 3.2. Format specification file">format specification file</a> defines what types of nodes an input document may use.</p>
985
+
986
+ <p><div class="section">
987
+ <h3 class="title">
988
+ <a class="list" title="Return to table of contents" id="Node.class" href="#rev:Node.class">3.1.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Node.class">The <code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code> class</a>
989
+ </h3>
990
+ <div class="content"><p>When erbook builds a document tree from the nodes in an input document, it stores information about these nodes into <code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code> objects. A <code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code> object has the following properties (methods):</p>
991
+ <table border="1"><thead><tr><th>Property</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td style='text-align: left;'>type</td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'>Name of the type of this node.</td>
992
+ </tr><tr><td style='text-align: left;'>args</td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">Array</span></code></td><td style='text-align: left;'>Arguments passed to this node.</td>
993
+ </tr><tr><td style='text-align: left;'>content</td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'>The block of text passed to this node.</td>
994
+ </tr><tr><td style='text-align: left;'>output</td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'>Result of the node output template for the content of this node.</td>
995
+ </tr><tr><td style='text-align: left;'>digest</td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'>A unique identifier for the content of this node.</td>
996
+ </tr><tr><td style='text-align: left;'>trace</td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">Array</span></code></td><td style='text-align: left;'>A stack trace describing the location of this node in the input document.</td>
997
+ </tr><tr><td style='text-align: left;'>index</td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'>A LaTeX-style section number for this node. This property is only present if the <strong>index</strong> parameter is enabled in the definition of this type of node.</td>
998
+ </tr><tr><td style='text-align: left;'>number</td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">Integer</span></code></td><td style='text-align: left;'>An order-of-occurrence number for this node. This property is only present if the <strong>number</strong> parameter is enabled in the definition of this type of node.</td>
999
+ </tr><tr><td style='text-align: left;'>depth</td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">Integer</span></code></td><td style='text-align: left;'>Distance from the root of the document tree to this node.</td>
1000
+ </tr><tr><td style='text-align: left;'>parent</td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code></td><td style='text-align: left;'>The <code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code> object which contains this node. The value of this property will be <code class="code"><span style="color:#038;font-weight:bold">nil</span></code> if this node is a root of the document tree.</td>
1001
+ </tr><tr><td style='text-align: left;'>children</td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">Array</span></code> of <code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code></td><td style='text-align: left;'>List of child nodes from the document tree.</td>
1002
+ </tr></tbody></table>
1003
+ <p>Furthermore, the <code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code> class is derived from <a href='http://www.ruby-doc.org/stdlib/libdoc/ostruct/rdoc/classes/OpenStruct.html'>Ruby&#8217;s <code class="code"><span style="color:#036;font-weight:bold">OpenStruct</span></code> class</a>, so you can define new properties for <code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code> objects dynamically.</p></div>
1004
+ </div></p></div>
1005
+ </div> <div class="section">
1006
+ <h2 class="title">
1007
+ <a class="list" title="Return to table of contents" id="SpecFile" href="#rev:SpecFile">3.2</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#SpecFile">Format specification file</a>
1008
+ </h2>
1009
+ <div class="content"><p>A format specification file is a plain-text file marked up in <a href='http://yaml4r.sourceforge.net/cookbook/'>YAML syntax</a>. Through the following parameters, it defines (1) what types of nodes an input document may contain, (2) how the content of those nodes is transformed into output, and (3) how the processed document is transformed into the output document.</p>
1010
+ <table border="1"><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td style='text-align: left;'>desc</td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'>A short description of the output format.</td>
1011
+ </tr><tr><td style='text-align: left;'>code</td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'>Ruby code that will be loaded before the input document is processed. This source code will be evaluated inside the main erbook executable, so any file-system or path-dependent portions of this source code should take appropriate precautions.</td>
1012
+ </tr><tr><td style='text-align: left;'>nodes</td><td style='text-align: left;'>Hash</td><td style='text-align: left;'>A listing of <a class="xref" href="#SpecFile.nodes" title="Section 3.2.1. Node definition">node definitions</a>.</td>
1013
+ </tr><tr><td style='text-align: left;'>output</td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'>An eRuby template for the final output document. See <a class="xref" href="#SpecFile.output">Section 3.2.2. Document output template</a>.</td>
1014
+ </tr></tbody></table>
1015
+ <p><div class="section">
1016
+ <h3 class="title">
1017
+ <a class="list" title="Return to table of contents" id="SpecFile.nodes" href="#rev:SpecFile.nodes">3.2.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#SpecFile.nodes">Node definition</a>
1018
+ </h3>
1019
+ <div class="content"><p>A node definition is a mapping from a name (the &#8220;node type&#8221;) to the following set of parameters:</p>
1020
+ <table border="1"><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td style='text-align: left;'>index</td><td style='text-align: left;'>Boolean</td><td style='text-align: left;'>Assign a LaTeX-style section number to this node?</td>
1021
+ </tr><tr><td style='text-align: left;'>number</td><td style='text-align: left;'>Boolean</td><td style='text-align: left;'>Assign an order-of-occurrence number to this node?</td>
1022
+ </tr><tr><td style='text-align: left;'>silent</td><td style='text-align: left;'>Boolean</td><td style='text-align: left;'>Suppress the output of this node?</td>
1023
+ </tr><tr><td style='text-align: left;'>output</td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'>An eRuby template for the content of this node. See <a class="xref" href="#SpecFile.nodes.output">Section 3.2.1.1. Node output template</a>.</td>
1024
+ </tr></tbody></table>
1025
+ <p>You may define additional parameters in a node definition if you want.</p>
1026
+
1027
+ <p><div class="section">
1028
+ <h4 class="title">
1029
+ <a class="list" title="Return to table of contents" id="SpecFile.nodes.output" href="#rev:SpecFile.nodes.output">3.2.1.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#SpecFile.nodes.output">Node output template</a>
1030
+ </h4>
1031
+ <div class="content"><p>A node output template (the <strong>output</strong> parameter in a node definition) is an eRuby template that transforms a node&#8217;s content into output. During the processing stage, erbook replaces all nodes in the input document with the result of this template <em>unless</em> the <strong>silent</strong> parameter is enabled in this node&#8217;s definition.</p>
1032
+
1033
+ <p>The following variables are available for use in this template:</p>
1034
+ <table border="1"><thead><tr><th>Variable</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td style='text-align: left;'><code class="code"><span style="color:#33B">@node</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code></td><td style='text-align: left;'>The node for which this template is being evaluated.</td>
1035
+ </tr><tr><td style='text-align: left;'><code class="code"><span style="color:#33B">@roots</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">Array</span></code> of <code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code></td><td style='text-align: left;'>All root nodes in the document tree.</td>
1036
+ </tr><tr><td style='text-align: left;'><code class="code"><span style="color:#33B">@nodes</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">Array</span></code> of <code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code></td><td style='text-align: left;'>All nodes in the document tree.</td>
1037
+ </tr><tr><td style='text-align: left;'><code class="code"><span style="color:#33B">@types</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">Hash</span></code></td><td style='text-align: left;'>Mapping from node type (<code class="code"><span style="color:#036;font-weight:bold">String</span></code>) to array of <code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code> objects having that type.</td>
1038
+ </tr><tr><td style='text-align: left;'><code class="code"><span style="color:#33B">@spec</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">Hash</span></code></td><td style='text-align: left;'>Data from the format specification file.</td>
1039
+ </tr></tbody></table>
1040
+ <p>erbook also provides the following mappings inside the <code class="code"><span style="color:#33B">@spec</span></code> variable:</p>
1041
+ <table border="1"><thead><tr><th>Expression</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td style='text-align: left;'><code class="code"><span style="color:#33B">@spec</span>[<span style="color:#A60">:name</span>]</code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'>Short-hand name of the current format.</td>
1042
+ </tr><tr><td style='text-align: left;'><code class="code"><span style="color:#33B">@spec</span>[<span style="color:#A60">:file</span>]</code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'>Path of the current format specification file.</td>
1043
+ </tr></tbody></table></div>
1044
+ </div></p></div>
1045
+ </div> <div class="section">
1046
+ <h3 class="title">
1047
+ <a class="list" title="Return to table of contents" id="SpecFile.output" href="#rev:SpecFile.output">3.2.2</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#SpecFile.output">Document output template</a>
1048
+ </h3>
1049
+ <div class="content"><p>A document output template (the <strong>output</strong> parameter in a format specification file) is an eRuby template that transforms a processed document into the final output document.</p>
1050
+
1051
+ <p>The following variables are available for use in this template:</p>
1052
+ <table border="1"><thead><tr><th>Variable</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td style='text-align: left;'><code class="code"><span style="color:#33B">@content</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'>Content of the processed document.</td>
1053
+ </tr><tr><td style='text-align: left;'><code class="code"><span style="color:#33B">@roots</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">Array</span></code> of <code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code></td><td style='text-align: left;'>All root nodes in the document tree.</td>
1054
+ </tr><tr><td style='text-align: left;'><code class="code"><span style="color:#33B">@nodes</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">Array</span></code> of <code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code></td><td style='text-align: left;'>All nodes in the document tree.</td>
1055
+ </tr><tr><td style='text-align: left;'><code class="code"><span style="color:#33B">@types</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">Hash</span></code></td><td style='text-align: left;'>Mapping from node type (<code class="code"><span style="color:#036;font-weight:bold">String</span></code>) to array of <code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span></code> objects having that type.</td>
1056
+ </tr><tr><td style='text-align: left;'><code class="code"><span style="color:#33B">@spec</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">Hash</span></code></td><td style='text-align: left;'>Data from the format specification file.</td>
1057
+ </tr></tbody></table>
1058
+ <p>erbook also provides the following mappings inside the <code class="code"><span style="color:#33B">@spec</span></code> variable:</p>
1059
+ <table border="1"><thead><tr><th>Expression</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td style='text-align: left;'><code class="code"><span style="color:#33B">@spec</span>[<span style="color:#A60">:name</span>]</code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'>Short-hand name of the current format.</td>
1060
+ </tr><tr><td style='text-align: left;'><code class="code"><span style="color:#33B">@spec</span>[<span style="color:#A60">:file</span>]</code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'>Path of the current format specification file.</td>
1061
+ </tr></tbody></table></div>
1062
+ </div> <div class="section">
1063
+ <h3 class="title">
1064
+ <a class="list" title="Return to table of contents" id="HelloWorld" href="#rev:HelloWorld">3.2.3</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#HelloWorld">Creating your own document format</a>
1065
+ </h3>
1066
+ <div class="content"><p>Here is a working example to help you digest all that you&#8217;ve learned so far about format specification files. A few things to notice in this example are:</p>
1067
+
1068
+ <ul>
1069
+ <li>
1070
+ <p>We define a <code class="code">generate_name()</code> method in <a class="xref" href="#HelloWorld.spec">Example 1. HelloWorld format specification file</a> and make use of it in the <a class="xref" href="#HelloWorld.input">Example 2. Input document for HelloWorld format</a>. This shows how to provide format-specific functionality to an input document.</p>
1071
+ </li>
1072
+
1073
+ <li>
1074
+ <p>We define a <code class="code"><span style="color:#d70;font-weight:bold">$style</span></code> variable in <a class="xref" href="#HelloWorld.input">Example 2. Input document for HelloWorld format</a> and make use of it in <a class="xref" href="#HelloWorld.spec">Example 1. HelloWorld format specification file</a>. This shows how to pass parameters from an input document to your format specification file.</p>
1075
+ </li>
1076
+ </ul>
1077
+
1078
+ <p>To run this example:</p>
1079
+
1080
+ <ol>
1081
+ <li>
1082
+ <p>Save the code shown in <a class="xref" href="#HelloWorld.spec">Example 1. HelloWorld format specification file</a> to a file named <tt>HelloWorld.spec</tt></p>
1083
+ </li>
1084
+
1085
+ <li>
1086
+ <p>Save the text shown in <a class="xref" href="#HelloWorld.input">Example 2. Input document for HelloWorld format</a> to a file named <tt>HelloWorld.input</tt></p>
1087
+ </li>
1088
+
1089
+ <li>
1090
+ <p>Run this command:</p>
1091
+
1092
+ <pre>erbook HelloWorld.spec HelloWorld.input &gt; HelloWorld.output</pre>
1093
+ </li>
1094
+
1095
+ <li>
1096
+ <p>Examine the <tt>HelloWorld.output</tt> file to your satisfaction!</p>
1097
+ </li>
1098
+ </ol>
1099
+
1100
+ <p><div class="example">
1101
+ <p class="title"><a class="list" title="Return to table of contents" id="HelloWorld.spec" href="#rev:HelloWorld.spec">Example 1</a>.&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#HelloWorld.spec">HelloWorld format specification file</a></p>
1102
+ <div class="content"><p><pre class="code" lang="rhtml">desc: An example format.
1103
+
1104
+ code: |
1105
+ # Returns a random, yet pronounceable, name.
1106
+ def generate_name
1107
+ letters = ('a'..'z').to_a - %w[ c q w x ] # redundant sounds
1108
+ vowels = %w[a e i o u]
1109
+ consonants = letters - vowels
1110
+ sets = [consonants, vowels]
1111
+
1112
+ length = 3 + rand(5)
1113
+
1114
+ name = (0...length).map do |i|
1115
+ # alternate between consonants and vowels
1116
+ set = sets[i % sets.length]
1117
+
1118
+ # choose a random letter from the set
1119
+ set[rand(set.length)]
1120
+ end.join
1121
+
1122
+ name
1123
+ end
1124
+
1125
+ class Node
1126
+ def name
1127
+ # dynamically compute (and store)
1128
+ # the name of this node on demand
1129
+ @name ||= generate_name
1130
+ end
1131
+ end
1132
+
1133
+ nodes:
1134
+ hello:
1135
+ index: true
1136
+ number: true
1137
+ silent: false
1138
+ output: |
1139
+ <span style="color:#070">&lt;h3&gt;</span><span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> <span style="color:#33B">@node</span>.type <span style="font-weight:bold;color:#888">%&gt;</span></span> #<span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> <span style="color:#33B">@node</span>.index <span style="font-weight:bold;color:#888">%&gt;</span></span>: <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> <span style="color:#33B">@node</span>.name.inspect <span style="font-weight:bold;color:#888">%&gt;</span></span><span style="color:#070">&lt;/h3&gt;</span>
1140
+
1141
+ My name is <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> <span style="color:#33B">@node</span>.name.inspect <span style="font-weight:bold;color:#888">%&gt;</span></span> and these are my properties:
1142
+
1143
+ <span style="color:#070">&lt;dl</span> <span style="color:#007">style</span>=<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> <span style="color:#d70;font-weight:bold">$style</span> <span style="font-weight:bold;color:#888">%&gt;</span></span><span style="color:#710">&quot;</span></span><span style="color:#070">&gt;</span>
1144
+ <span style="color:#070">&lt;dt&gt;</span>args<span style="color:#070">&lt;/dt&gt;</span>
1145
+ <span style="color:#070">&lt;dd&gt;</span><span style="color:#070">&lt;code&gt;</span><span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> <span style="color:#33B">@node</span>.args.inspect <span style="font-weight:bold;color:#888">%&gt;</span></span><span style="color:#070">&lt;/code&gt;</span><span style="color:#070">&lt;/dd&gt;</span>
1146
+
1147
+ <span style="color:#070">&lt;dt&gt;</span>index<span style="color:#070">&lt;/dt&gt;</span>
1148
+ <span style="color:#070">&lt;dd&gt;</span><span style="color:#070">&lt;code&gt;</span><span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> <span style="color:#33B">@node</span>.index.inspect <span style="font-weight:bold;color:#888">%&gt;</span></span><span style="color:#070">&lt;/code&gt;</span><span style="color:#070">&lt;/dd&gt;</span>
1149
+
1150
+ <span style="color:#070">&lt;dt&gt;</span>number<span style="color:#070">&lt;/dt&gt;</span>
1151
+ <span style="color:#070">&lt;dd&gt;</span><span style="color:#070">&lt;code&gt;</span><span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> <span style="color:#33B">@node</span>.number.inspect <span style="font-weight:bold;color:#888">%&gt;</span></span><span style="color:#070">&lt;/code&gt;</span><span style="color:#070">&lt;/dd&gt;</span>
1152
+
1153
+ <span style="color:#070">&lt;dt&gt;</span>trace<span style="color:#070">&lt;/dt&gt;</span>
1154
+ <span style="color:#070">&lt;dd&gt;</span><span style="color:#070">&lt;pre&gt;</span><span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> <span style="color:#33B">@node</span>.trace.join(<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#b0b">\n</span><span style="color:#710">&quot;</span></span>) <span style="font-weight:bold;color:#888">%&gt;</span></span><span style="color:#070">&lt;/pre&gt;</span><span style="color:#070">&lt;/dd&gt;</span>
1155
+
1156
+ <span style="color:#070">&lt;dt&gt;</span>content<span style="color:#070">&lt;/dt&gt;</span>
1157
+ <span style="color:#070">&lt;dd&gt;</span><span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> <span style="color:#33B">@node</span>.content <span style="font-weight:bold;color:#888">%&gt;</span></span><span style="color:#070">&lt;/dd&gt;</span>
1158
+ <span style="color:#070">&lt;/dl&gt;</span>
1159
+
1160
+ output: |
1161
+ Welcome to the &quot;<span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> <span style="color:#33B">@spec</span>[<span style="color:#A60">:name</span>] <span style="font-weight:bold;color:#888">%&gt;</span></span>&quot; format.
1162
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> <span style="color:#33B">@content</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1163
+ That's all folks!
1164
+ </pre></p></div>
1165
+ </div> <div class="example">
1166
+ <p class="title"><a class="list" title="Return to table of contents" id="HelloWorld.input" href="#rev:HelloWorld.input">Example 2</a>.&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#HelloWorld.input">Input document for HelloWorld format</a></p>
1167
+ <div class="content"><p><pre class="code" lang="rhtml"><span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> <span style="color:#d70;font-weight:bold">$style</span> = <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">border-left: thick dotted LightGrey; padding-left: 1em;</span><span style="color:#710">&quot;</span></span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1168
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> hello <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Pretentious</span><span style="color:#710">&quot;</span></span>, <span style="color:#00D;font-weight:bold">1</span>, <span style="color:#00D;font-weight:bold">2</span>, <span style="color:#00D;font-weight:bold">3</span> <span style="color:#080;font-weight:bold">do</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1169
+ <span style="color:#070">&lt;big&gt;</span>I'm<span style="color:#070">&lt;/big&gt;</span> the very first node, oh _yes_ I am! *sneer*
1170
+
1171
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> hello <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Bashful</span><span style="color:#710">&quot;</span></span>, <span style="color:#00D;font-weight:bold">4</span>, <span style="color:#00D;font-weight:bold">5</span>, <span style="color:#00D;font-weight:bold">6</span> <span style="color:#080;font-weight:bold">do</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1172
+ Hi, I... *hide*
1173
+
1174
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> hello <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Hopeful</span><span style="color:#710">&quot;</span></span>, rand <span style="color:#080;font-weight:bold">do</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1175
+ *sigh*
1176
+
1177
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> hello <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Confused</span><span style="color:#710">&quot;</span></span>, (rand * rand) <span style="color:#080;font-weight:bold">do</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1178
+ Huh?
1179
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1180
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1181
+
1182
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> hello <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Raving</span><span style="color:#710">&quot;</span></span>, <span style="color:#038;font-weight:bold">__FILE__</span> <span style="color:#080;font-weight:bold">do</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1183
+ Oh it's *on* now! You're going *down*!
1184
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1185
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1186
+
1187
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> hello <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Sleepy</span><span style="color:#710">&quot;</span></span>, <span style="color:#036;font-weight:bold">Time</span>.now <span style="color:#080;font-weight:bold">do</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1188
+ *yawn* Just five more minutes...
1189
+
1190
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> hello <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Peaceful</span><span style="color:#710">&quot;</span></span>, <span style="color:#036;font-weight:bold">Dir</span>.pwd <span style="color:#080;font-weight:bold">do</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1191
+ So _be_ happy my friend, *happy*!
1192
+
1193
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> hello <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Lonely (as you can see, I have no block)</span><span style="color:#710">&quot;</span></span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1194
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1195
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1196
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1197
+
1198
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> hello <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Snappy</span><span style="color:#710">&quot;</span></span> <span style="color:#080;font-weight:bold">do</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1199
+ Zip! Zap! Wake up, you sap!
1200
+ _Whoo I'm wild!_ ;-)
1201
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1202
+
1203
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> hello <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Independent (no block, no parents, I am _free_!)</span><span style="color:#710">&quot;</span></span> <span style="font-weight:bold;color:#888">%&gt;</span></span></pre></p></div>
1204
+ </div> <div class="example">
1205
+ <p class="title"><a class="list" title="Return to table of contents" id="HelloWorld.output" href="#rev:HelloWorld.output">Example 3</a>.&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#HelloWorld.output">Output of HelloWorld format</a></p>
1206
+ <div class="content"><p>Welcome to the &#8220;HelloWorld&#8221; format. <h3>hello #1: nil</h3></p>
1207
+
1208
+ <p>My name is nil and these are my properties:</p>
1209
+ <dl style='border-left: thick dotted LightGrey; padding-left: 1em;'>
1210
+ <dt>args</dt>
1211
+ <dd><code class="code">[<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Pretentious</span><span style="color:#710">&quot;</span></span>, <span style="color:#00D;font-weight:bold">1</span>, <span style="color:#00D;font-weight:bold">2</span>, <span style="color:#00D;font-weight:bold">3</span>]</code></dd>
1212
+
1213
+ <dt>index</dt>
1214
+ <dd><code class="code"><span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">1</span><span style="color:#710">&quot;</span></span></code></dd>
1215
+
1216
+ <dt>number</dt>
1217
+ <dd><code class="code"><span style="color:#00D;font-weight:bold">1</span></code></dd>
1218
+
1219
+ <dt>trace</dt>
1220
+ <dd><pre>doc/HelloWorld.input:1
1221
+ bin/erbook:307
1222
+ bin/erbook:307:in `instance_eval'
1223
+ bin/erbook:307</pre></dd>
1224
+
1225
+ <dt>content</dt>
1226
+ <dd><big>I'm</big> the very first node, oh _yes_ I am! *sneer*
1227
+
1228
+ <h3>hello #1.1: nil</h3>
1229
+
1230
+ My name is nil and these are my properties:
1231
+
1232
+ <dl style='border-left: thick dotted LightGrey; padding-left: 1em;'>
1233
+ <dt>args</dt>
1234
+ <dd><code class="code">[<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Bashful</span><span style="color:#710">&quot;</span></span>, <span style="color:#00D;font-weight:bold">4</span>, <span style="color:#00D;font-weight:bold">5</span>, <span style="color:#00D;font-weight:bold">6</span>]</code></dd>
1235
+
1236
+ <dt>index</dt>
1237
+ <dd><code class="code"><span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">1.1</span><span style="color:#710">&quot;</span></span></code></dd>
1238
+
1239
+ <dt>number</dt>
1240
+ <dd><code class="code"><span style="color:#00D;font-weight:bold">2</span></code></dd>
1241
+
1242
+ <dt>trace</dt>
1243
+ <dd><pre>doc/HelloWorld.input:3
1244
+ bin/erbook:115:in `content_from_block'
1245
+ bin/erbook:288:in `hello'
1246
+ doc/HelloWorld.input:1
1247
+ bin/erbook:307
1248
+ bin/erbook:307:in `instance_eval'
1249
+ bin/erbook:307</pre></dd>
1250
+
1251
+ <dt>content</dt>
1252
+ <dd>Hi, I... *hide*
1253
+
1254
+ <h3>hello #1.1.1: nil</h3>
1255
+
1256
+ My name is nil and these are my properties:
1257
+
1258
+ <dl style='border-left: thick dotted LightGrey; padding-left: 1em;'>
1259
+ <dt>args</dt>
1260
+ <dd><code class="code">[<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Hopeful</span><span style="color:#710">&quot;</span></span>, <span style="color:#60E;font-weight:bold">0.0790764609144532</span>]</code></dd>
1261
+
1262
+ <dt>index</dt>
1263
+ <dd><code class="code"><span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">1.1.1</span><span style="color:#710">&quot;</span></span></code></dd>
1264
+
1265
+ <dt>number</dt>
1266
+ <dd><code class="code"><span style="color:#00D;font-weight:bold">3</span></code></dd>
1267
+
1268
+ <dt>trace</dt>
1269
+ <dd><pre>doc/HelloWorld.input:5
1270
+ bin/erbook:115:in `content_from_block'
1271
+ bin/erbook:288:in `hello'
1272
+ doc/HelloWorld.input:3
1273
+ bin/erbook:115:in `content_from_block'
1274
+ bin/erbook:288:in `hello'
1275
+ doc/HelloWorld.input:1
1276
+ bin/erbook:307
1277
+ bin/erbook:307:in `instance_eval'
1278
+ bin/erbook:307</pre></dd>
1279
+
1280
+ <dt>content</dt>
1281
+ <dd>*sigh*
1282
+
1283
+ <h3>hello #1.1.1.1: nil</h3>
1284
+
1285
+ My name is nil and these are my properties:
1286
+
1287
+ <dl style='border-left: thick dotted LightGrey; padding-left: 1em;'>
1288
+ <dt>args</dt>
1289
+ <dd><code class="code">[<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Confused</span><span style="color:#710">&quot;</span></span>, <span style="color:#60E;font-weight:bold">0.528769558981025</span>]</code></dd>
1290
+
1291
+ <dt>index</dt>
1292
+ <dd><code class="code"><span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">1.1.1.1</span><span style="color:#710">&quot;</span></span></code></dd>
1293
+
1294
+ <dt>number</dt>
1295
+ <dd><code class="code"><span style="color:#00D;font-weight:bold">4</span></code></dd>
1296
+
1297
+ <dt>trace</dt>
1298
+ <dd><pre>doc/HelloWorld.input:7
1299
+ bin/erbook:115:in `content_from_block'
1300
+ bin/erbook:288:in `hello'
1301
+ doc/HelloWorld.input:5
1302
+ bin/erbook:115:in `content_from_block'
1303
+ bin/erbook:288:in `hello'
1304
+ doc/HelloWorld.input:3
1305
+ bin/erbook:115:in `content_from_block'
1306
+ bin/erbook:288:in `hello'
1307
+ doc/HelloWorld.input:1
1308
+ bin/erbook:307
1309
+ bin/erbook:307:in `instance_eval'
1310
+ bin/erbook:307</pre></dd>
1311
+
1312
+ <dt>content</dt>
1313
+ <dd>Huh?
1314
+ </dd>
1315
+ </dl></dd>
1316
+ </dl>
1317
+ <h3>hello #1.1.2: nil</h3>
1318
+
1319
+ My name is nil and these are my properties:
1320
+
1321
+ <dl style='border-left: thick dotted LightGrey; padding-left: 1em;'>
1322
+ <dt>args</dt>
1323
+ <dd><code class="code">[<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Raving</span><span style="color:#710">&quot;</span></span>, <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">doc/HelloWorld.input</span><span style="color:#710">&quot;</span></span>]</code></dd>
1324
+
1325
+ <dt>index</dt>
1326
+ <dd><code class="code"><span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">1.1.2</span><span style="color:#710">&quot;</span></span></code></dd>
1327
+
1328
+ <dt>number</dt>
1329
+ <dd><code class="code"><span style="color:#00D;font-weight:bold">5</span></code></dd>
1330
+
1331
+ <dt>trace</dt>
1332
+ <dd><pre>doc/HelloWorld.input:9
1333
+ bin/erbook:115:in `content_from_block'
1334
+ bin/erbook:288:in `hello'
1335
+ doc/HelloWorld.input:3
1336
+ bin/erbook:115:in `content_from_block'
1337
+ bin/erbook:288:in `hello'
1338
+ doc/HelloWorld.input:1
1339
+ bin/erbook:307
1340
+ bin/erbook:307:in `instance_eval'
1341
+ bin/erbook:307</pre></dd>
1342
+
1343
+ <dt>content</dt>
1344
+ <dd>Oh it's *on* now! You're going *down*!
1345
+ </dd>
1346
+ </dl></dd>
1347
+ </dl>
1348
+ <h3>hello #1.2: nil</h3>
1349
+
1350
+ My name is nil and these are my properties:
1351
+
1352
+ <dl style='border-left: thick dotted LightGrey; padding-left: 1em;'>
1353
+ <dt>args</dt>
1354
+ <dd><code class="code">[<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Sleepy</span><span style="color:#710">&quot;</span></span>, <span style="color:#036;font-weight:bold">Sat</span> <span style="color:#036;font-weight:bold">Nov</span> <span style="color:#00D;font-weight:bold">22</span> <span style="color:#00D;font-weight:bold">23</span>:<span style="color:#00D;font-weight:bold">17</span>:<span style="color:#00D;font-weight:bold">11</span> -<span style="color:#00D;font-weight:bold">0800</span> <span style="color:#00D;font-weight:bold">2008</span>]</code></dd>
1355
+
1356
+ <dt>index</dt>
1357
+ <dd><code class="code"><span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">1.2</span><span style="color:#710">&quot;</span></span></code></dd>
1358
+
1359
+ <dt>number</dt>
1360
+ <dd><code class="code"><span style="color:#00D;font-weight:bold">6</span></code></dd>
1361
+
1362
+ <dt>trace</dt>
1363
+ <dd><pre>doc/HelloWorld.input:11
1364
+ bin/erbook:115:in `content_from_block'
1365
+ bin/erbook:288:in `hello'
1366
+ doc/HelloWorld.input:1
1367
+ bin/erbook:307
1368
+ bin/erbook:307:in `instance_eval'
1369
+ bin/erbook:307</pre></dd>
1370
+
1371
+ <dt>content</dt>
1372
+ <dd>*yawn* Just five more minutes...
1373
+
1374
+ <h3>hello #1.2.1: nil</h3>
1375
+
1376
+ My name is nil and these are my properties:
1377
+
1378
+ <dl style='border-left: thick dotted LightGrey; padding-left: 1em;'>
1379
+ <dt>args</dt>
1380
+ <dd><code class="code">[<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Peaceful</span><span style="color:#710">&quot;</span></span>, <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">/home/sun/src/erbook</span><span style="color:#710">&quot;</span></span>]</code></dd>
1381
+
1382
+ <dt>index</dt>
1383
+ <dd><code class="code"><span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">1.2.1</span><span style="color:#710">&quot;</span></span></code></dd>
1384
+
1385
+ <dt>number</dt>
1386
+ <dd><code class="code"><span style="color:#00D;font-weight:bold">7</span></code></dd>
1387
+
1388
+ <dt>trace</dt>
1389
+ <dd><pre>doc/HelloWorld.input:13
1390
+ bin/erbook:115:in `content_from_block'
1391
+ bin/erbook:288:in `hello'
1392
+ doc/HelloWorld.input:11
1393
+ bin/erbook:115:in `content_from_block'
1394
+ bin/erbook:288:in `hello'
1395
+ doc/HelloWorld.input:1
1396
+ bin/erbook:307
1397
+ bin/erbook:307:in `instance_eval'
1398
+ bin/erbook:307</pre></dd>
1399
+
1400
+ <dt>content</dt>
1401
+ <dd>So _be_ happy my friend, *happy*!
1402
+
1403
+ <h3>hello #1.2.1.1: nil</h3>
1404
+
1405
+ My name is nil and these are my properties:
1406
+
1407
+ <dl style='border-left: thick dotted LightGrey; padding-left: 1em;'>
1408
+ <dt>args</dt>
1409
+ <dd><code class="code">[<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Lonely (as you can see, I have no block)</span><span style="color:#710">&quot;</span></span>]</code></dd>
1410
+
1411
+ <dt>index</dt>
1412
+ <dd><code class="code"><span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">1.2.1.1</span><span style="color:#710">&quot;</span></span></code></dd>
1413
+
1414
+ <dt>number</dt>
1415
+ <dd><code class="code"><span style="color:#00D;font-weight:bold">8</span></code></dd>
1416
+
1417
+ <dt>trace</dt>
1418
+ <dd><pre>doc/HelloWorld.input:15
1419
+ bin/erbook:115:in `content_from_block'
1420
+ bin/erbook:288:in `hello'
1421
+ doc/HelloWorld.input:13
1422
+ bin/erbook:115:in `content_from_block'
1423
+ bin/erbook:288:in `hello'
1424
+ doc/HelloWorld.input:11
1425
+ bin/erbook:115:in `content_from_block'
1426
+ bin/erbook:288:in `hello'
1427
+ doc/HelloWorld.input:1
1428
+ bin/erbook:307
1429
+ bin/erbook:307:in `instance_eval'
1430
+ bin/erbook:307</pre></dd>
1431
+
1432
+ <dt>content</dt>
1433
+ <dd />
1434
+ </dl>
1435
+ </dd>
1436
+ </dl></dd>
1437
+ </dl></dd>
1438
+ </dl><h3>hello #2: nil</h3>
1439
+ <p>My name is nil and these are my properties:</p>
1440
+ <dl style='border-left: thick dotted LightGrey; padding-left: 1em;'>
1441
+ <dt>args</dt>
1442
+ <dd><code class="code">[<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Snappy</span><span style="color:#710">&quot;</span></span>]</code></dd>
1443
+
1444
+ <dt>index</dt>
1445
+ <dd><code class="code"><span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">2</span><span style="color:#710">&quot;</span></span></code></dd>
1446
+
1447
+ <dt>number</dt>
1448
+ <dd><code class="code"><span style="color:#00D;font-weight:bold">9</span></code></dd>
1449
+
1450
+ <dt>trace</dt>
1451
+ <dd><pre>doc/HelloWorld.input:17
1452
+ bin/erbook:307
1453
+ bin/erbook:307:in `instance_eval'
1454
+ bin/erbook:307</pre></dd>
1455
+
1456
+ <dt>content</dt>
1457
+ <dd>Zip! Zap! Wake up, you sap!
1458
+ _Whoo I'm wild!_ ;-)
1459
+ </dd>
1460
+ </dl><h3>hello #3: nil</h3>
1461
+ <p>My name is nil and these are my properties:</p>
1462
+ <dl style='border-left: thick dotted LightGrey; padding-left: 1em;'>
1463
+ <dt>args</dt>
1464
+ <dd><code class="code">[<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Independent (no block, no parents, I am _free_!)</span><span style="color:#710">&quot;</span></span>]</code></dd>
1465
+
1466
+ <dt>index</dt>
1467
+ <dd><code class="code"><span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">3</span><span style="color:#710">&quot;</span></span></code></dd>
1468
+
1469
+ <dt>number</dt>
1470
+ <dd><code class="code"><span style="color:#00D;font-weight:bold">10</span></code></dd>
1471
+
1472
+ <dt>trace</dt>
1473
+ <dd><pre>doc/HelloWorld.input:20
1474
+ bin/erbook:307
1475
+ bin/erbook:307:in `instance_eval'
1476
+ bin/erbook:307</pre></dd>
1477
+
1478
+ <dt>content</dt>
1479
+ <dd />
1480
+ </dl>
1481
+ <p>That&#8217;s all folks!</p></div>
1482
+ </div></p></div>
1483
+ </div></p></div>
1484
+ </div></p></div>
1485
+ </div>
1486
+ <div class="chapter">
1487
+ <h1 class="title">
1488
+ Chapter&nbsp;<a class="list" title="Return to table of contents" id="Usage" href="#rev:Usage">4</a>
1489
+ <br/>
1490
+ <big><a class="here" title="Permanent link to this section" href="#Usage">Usage</a></big>
1491
+ </h1>
1492
+ <div class="content"><p><div class="section">
1493
+ <h2 class="title">
1494
+ <a class="list" title="Return to table of contents" id="Command-line-invocation" href="#rev:Command-line-invocation">4.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Command-line-invocation">Command-line invocation</a>
1495
+ </h2>
1496
+ <div class="content"><p>erbook is an extensible document processor based on eRuby.</p>
1497
+
1498
+ <ul>
1499
+ <li>
1500
+ <p>The standard input stream will be read if an input file is not specified.</p>
1501
+ </li>
1502
+
1503
+ <li>
1504
+ <p>The final output document will be written to the standard output stream.</p>
1505
+ </li>
1506
+
1507
+ <li>
1508
+ <p>If an error occurs, the input document will be written to the standard output stream, so that you can investigate line numbers in the error.</p>
1509
+ </li>
1510
+ </ul>
1511
+ <b>Usage:</b>
1512
+ <p><pre>erbook [Option...] FormatName [InputFile]</pre> <pre>erbook [Option...] FormatFile [InputFile]</pre></p>
1513
+ <b>FormatName:</b>
1514
+ <dl>
1515
+ <dt>latex</dt>
1516
+
1517
+ <dd>high-quality typesetting</dd>
1518
+
1519
+ <dt>man</dt>
1520
+
1521
+ <dd>manual page for UNIX</dd>
1522
+
1523
+ <dt>xhtml</dt>
1524
+
1525
+ <dd>web page for the Internet</dd>
1526
+
1527
+ <dt>text</dt>
1528
+
1529
+ <dd>plain text, nothing fancy</dd>
1530
+ </dl>
1531
+ <b>Option:</b>
1532
+ <dl>
1533
+ <dt><tt>--unindent</tt>, <tt>-u</tt></dt>
1534
+
1535
+ <dd>Unindent node content hierarchically</dd>
1536
+
1537
+ <dt><tt>--version</tt>, <tt>-v</tt></dt>
1538
+
1539
+ <dd>Print version and exit</dd>
1540
+
1541
+ <dt><tt>--help</tt>, <tt>-h</tt></dt>
1542
+
1543
+ <dd>Show this message</dd>
1544
+ </dl>
1545
+
1546
+ <p><div class="paragraph">
1547
+ <p class="title"><a class="here" title="Permanent link to this section" href="#Command-line-arguments">Command-line arguments</a></p>
1548
+ <div class="content"><p>The first command-line argument to erbook is either the name of a predefined format (FormatName) or the path to a <a class="xref" href="#SpecFile" title="Section 3.2. Format specification file">format specification file</a> (FormatFile).</p>
1549
+
1550
+ <p>Predefined formats are simply short-hand names of format specification files located in the <tt>fmt/</tt> subdirectory of the erbook installation directory (see <a class="xref" href="#Manifest">Section 2.3. Manifest</a>).</p></div>
1551
+ </div> <div class="paragraph">
1552
+ <p class="title"><a class="here" title="Permanent link to this section" href="#Saving-the-output-to-a-file">Saving the output to a file</a></p>
1553
+ <div class="content"><p>Simply redirect the standard ouput stream (STDOUT) to a file like this:</p>
1554
+
1555
+ <pre>erbook &gt; YOUR_PATH_HERE</pre>
1556
+
1557
+ <p>In the above example, <strong>YOUR_PATH_HERE</strong> is the path of the file in which the output should be saved.</p>
1558
+
1559
+ <p><div class="important">
1560
+ <p class="title"><a class="list" title="Return to table of contents" id="Save-XHTML-output-as-.xhtml" href="#rev:Save-XHTML-output-as-.xhtml">Important 1</a>.&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Save-XHTML-output-as-.xhtml">Save XHTML output as <tt>.xhtml</tt></a></p>
1561
+ <div class="content"><img class="icon" src="&icon_important;" alt="important"/><p>When you use the XHTML format, ensure that the file extension of your saved output document is either <tt>.xhtml</tt> or <tt>.xml</tt>. Alternatively, ensure that your saved output document is served to web browsers under the <tt>application/xhtml+xml</tt> mime type.</p>
1562
+
1563
+ <p>Otherwise, most web browsers <em>will not display</em> the icons and graphics embedded in the saved XHTML output document because they will treat it as HTML instead of as XML. See this <a href='http://www.quirksmode.org/bugreports/archives/2005/02/custom_dtds_int_1.html'>QuirksMode.org bug report</a> for details.</p></div>
1564
+ </div></p></div>
1565
+ </div></p></div>
1566
+ </div> <div class="section">
1567
+ <h2 class="title">
1568
+ <a class="list" title="Return to table of contents" id="include" href="#rev:include">4.2</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#include">Including external documents</a>
1569
+ </h2>
1570
+ <div class="content"><p>The <strong>include</strong> directive allows you to insert the content of an arbitrary file at a certain place in the input document. It is written like this:</p>
1571
+
1572
+ <pre>&lt;%# include YOUR_PATH_HERE #%&gt;</pre>
1573
+
1574
+ <p>In the above example, <strong>YOUR_PATH_HERE</strong> is the path of the file whose content you wish to insert into the input document.</p>
1575
+
1576
+ <p>You can divide a large document into separate files for easier editing and stitch them together, dynamically, into a single document using the <strong>include</strong> directive.</p></div>
1577
+ </div> <div class="section">
1578
+ <h2 class="title">
1579
+ <a class="list" title="Return to table of contents" id="Unindenting-nodes-hierarchically" href="#rev:Unindenting-nodes-hierarchically">4.3</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Unindenting-nodes-hierarchically">Unindenting nodes hierarchically</a>
1580
+ </h2>
1581
+ <div class="content"><p>When writing erbook documents, I prefer to indent the content of nodes according to their depth (as can be seen in <a class="xref" href="#See-the-source-of-this-manual" title="Note 1. See the source of this manual">the source of this manual</a>) because my <a href='http://jedit.org'>text editor of choice</a> automatically folds blocks of text based on indentation.</p>
1582
+
1583
+ <p>If you also prefer to write documents in this way, be sure to pass the <tt>--unindent</tt> option to <strong>erbook</strong> so that the indentation will not affect the resulting output.</p></div>
1584
+ </div></p></div>
1585
+ </div>
1586
+ <div class="part">
1587
+ <h1 class="title">
1588
+ Part&nbsp;<a class="list" title="Return to table of contents" id="Formats" href="#rev:Formats">5</a>
1589
+ <br/>
1590
+ <big><a class="here" title="Permanent link to this section" href="#Formats">Formats</a></big>
1591
+ </h1>
1592
+ <div class="content"><p>This part describes the default formats provided along with erbook. The <a class="xref" href="#SpecFile" title="Section 3.2. Format specification file">format specification files</a> for these formats can be found in the <tt>fmt/</tt> directory of the erbook installation directory (see <a class="xref" href="#Manifest">Section 2.3. Manifest</a>).</p>
1593
+
1594
+ <p>These formats are meant to serve as working examples. If you require more functionality from one of these formats, simply make a copy of the corresponding format specification file and edit the copy to suit your needs. If you would like to contribute or discuss your enhancements to these default formats, you can <a class="xref" href="#License" title="Section 1.2.2. License">contact the author</a>.</p>
1595
+
1596
+ <p><div class="chapter">
1597
+ <h1 class="title">
1598
+ Chapter&nbsp;<a class="list" title="Return to table of contents" id="xhtml" href="#rev:xhtml">5.1</a>
1599
+ <br/>
1600
+ <big><a class="here" title="Permanent link to this section" href="#xhtml">XHTML (web page)</a></big>
1601
+ </h1>
1602
+ <div class="content"><p>This format generates a <em>monolithic</em> XHTML document that allows users to easily search for a particular topic using nothing more than their web browser&#8217;s built-in text search mechanism. This facilitates offline reading, where an Internet search engine is not available.</p>
1603
+
1604
+ <p>In the XHTML document, you will notice that the numbers of chapters, sections, figures, admonitions, etc. are hyperlinks that take you back to the corresponding place in the table of contents. These links make it easy to navigate the XHTML document, especially for users of text-only web browsers.</p>
1605
+
1606
+ <p>Furthermore, the XHTML document comes equipped with a stylesheet that makes it suitable for printing. In particular, users of the <a href='http://mozilla.org'>Mozilla</a> and <a href='http://www.opera.com/'>Opera</a> family of web browsers will be pleasantly surprised to notice that all hyperlinks have been expanded to include their target URL next to the link text. So try using the &#8220;print preview&#8221; function of a graphical web browser to see how the XHTML document will appear when printed.</p>
1607
+
1608
+ <p><div class="section">
1609
+ <h3 class="title">
1610
+ <a class="list" title="Return to table of contents" id="Text-to-XHTML-conversion" href="#rev:Text-to-XHTML-conversion">5.1.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Text-to-XHTML-conversion">Text to XHTML conversion</a>
1611
+ </h3>
1612
+ <div class="content"><p>The <tt>lib/erbook/to_xhtml.rb</tt> file inside erbook&#8217;s installation directory (see <a class="xref" href="#Manifest">Section 2.3. Manifest</a>) defines the following methods:</p>
1613
+
1614
+ <ul>
1615
+ <li>
1616
+ <p><code class="code"><span style="color:#036;font-weight:bold">String</span><span style="color:#666">#to_xhtml</span></code> - Transforms this string into XHTML while ensuring that the result contains one or more block-level elements at the root.</p>
1617
+ </li>
1618
+
1619
+ <li>
1620
+ <p><code class="code"><span style="color:#036;font-weight:bold">String</span>.to_inline_xhtml</code> - Transforms this string into an <em>inline</em> XHTML string (one that does not contain any block-level XHTML elements at the root).</p>
1621
+ </li>
1622
+ </ul>
1623
+
1624
+ <p>The default implementation of the <code class="code"><span style="color:#036;font-weight:bold">String</span><span style="color:#666">#to_xhtml</span></code> method employs the <a href='http://daringfireball.net/projects/markdown/'>Markdown</a> markup system. If you do not like Markdown or wish to use a different markup system for text in your documents, then simply edit the <tt>to_xhtml.rb</tt> file and adjust the source code of the default <code class="code"><span style="color:#036;font-weight:bold">String</span><span style="color:#666">#to_xhtml</span></code> and <code class="code"><span style="color:#036;font-weight:bold">String</span>.to_inline_xhtml</code> methods accordingly.</p>
1625
+
1626
+ <p>For example, if you replace the entire <tt>to_xhtml.rb</tt> file with the following code, then the output of all nodes will appear within red boxes in the final output document.</p>
1627
+
1628
+ <p><pre class="code">
1629
+ <span style="color:#080;font-weight:bold">class</span> <span style="color:#B06;font-weight:bold">String</span>
1630
+ <span style="color:#666"># Transforms this string into XHTML while ensuring that the</span>
1631
+ <span style="color:#666"># result contains one or more block-level elements at the root.</span>
1632
+ <span style="color:#080;font-weight:bold">def</span> <span style="color:#06B;font-weight:bold">to_xhtml</span>
1633
+ <span style="background-color:#fff0f0"><span style="color:#710">'</span><span style="color:#D20">&lt;p style=&quot;border: thin solid red&quot;&gt;</span><span style="color:#710">'</span></span> + <span style="color:#038;font-weight:bold">self</span> + <span style="background-color:#fff0f0"><span style="color:#710">'</span><span style="color:#D20">&lt;/p&gt;</span><span style="color:#710">'</span></span>
1634
+ <span style="color:#080;font-weight:bold">end</span>
1635
+
1636
+ <span style="color:#666"># Transforms this string into an *inline* XHTML string (one that</span>
1637
+ <span style="color:#666"># does not contain any block-level XHTML elements at the root).</span>
1638
+ <span style="color:#080;font-weight:bold">def</span> <span style="color:#06B;font-weight:bold">to_inline_xhtml</span>
1639
+ <span style="color:#038;font-weight:bold">self</span>
1640
+ <span style="color:#080;font-weight:bold">end</span>
1641
+ <span style="color:#080;font-weight:bold">end</span>
1642
+ </pre></p>
1643
+
1644
+ <p>In addition to supporting Markdown syntax, the default implementation has some additional features which are described in the following subsections.</p>
1645
+
1646
+ <p><div class="section">
1647
+ <h4 class="title">
1648
+ <a class="list" title="Return to table of contents" id="Syntax-coloring-for-source-code" href="#rev:Syntax-coloring-for-source-code">5.1.1.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Syntax-coloring-for-source-code">Syntax coloring for source code</a>
1649
+ </h4>
1650
+ <div class="content"><p>Syntax coloring is <em>automatically added</em> to source code found inside the <strong>&#60;code&#62;</strong> and <strong>&#60;/code&#62;</strong> HTML tags. The syntax coloring library, <a href='http://coderay.rubychan.de'>CodeRay</a>, currently supports the following programming languages:</p>
1651
+
1652
+ <ul>
1653
+ <li>Ruby</li>
1654
+
1655
+ <li>C</li>
1656
+
1657
+ <li>Delphi</li>
1658
+
1659
+ <li>HTML</li>
1660
+
1661
+ <li>RHTML (Rails)</li>
1662
+
1663
+ <li>Nitro-XHTML</li>
1664
+ </ul>
1665
+
1666
+ <p><div class="section">
1667
+ <h5 class="title">
1668
+ <a class="list" title="Return to table of contents" id="Specifying-the-programming-language" href="#rev:Specifying-the-programming-language">5.1.1.1.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Specifying-the-programming-language">Specifying the programming language</a>
1669
+ </h5>
1670
+ <div class="content"><p>Because different programming languages have different syntax coloring schemes, you can specify the language of your source code using the <code class="code">lang</code> attribute to ensure that only the appropriate coloring scheme is used. Note that unless the <code class="code">lang</code> attribute is specified, <em>Ruby</em> is assumed to be the programming language of all source code by default.</p>
1671
+
1672
+ <p>For example, here is some source code <em>without</em> the <code class="code">lang</code> attribute:</p>
1673
+
1674
+ <p><pre class="code">
1675
+ <span style="color:#666"># Ruby ###########################</span>
1676
+ <span style="color:#080;font-weight:bold">def</span> <span style="color:#06B;font-weight:bold">hello</span>
1677
+ puts <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Hello world!</span><span style="color:#710">&quot;</span></span>
1678
+ <span style="color:#080;font-weight:bold">end</span>
1679
+
1680
+
1681
+ <span style="background-color:#fff0ff"><span style="color:#404">/</span><span style="color:#808">* C ****************************</span><span style="color:#404">/</span></span>
1682
+ <span style="color:#666">#include &lt;stdio.h&gt;</span>
1683
+ int main(int argc, char **argv) {
1684
+ printf(<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Hello world!</span><span style="color:#b0b">\n</span><span style="color:#710">&quot;</span></span>);
1685
+ <span style="color:#080;font-weight:bold">return</span> <span style="color:#00D;font-weight:bold">0</span>;
1686
+ }
1687
+
1688
+
1689
+ &lt;!-- <span style="color:#036;font-weight:bold">HTML</span> -----------------------&gt;
1690
+ &lt;html&gt;
1691
+ &lt;body&gt;
1692
+ <span style="color:#036;font-weight:bold">Hello</span> world!
1693
+ &lt;body&gt;
1694
+ &lt;<span style="background-color:#fff0ff"><span style="color:#404">/</span><span style="color:#808">html&gt;
1695
+ </span></span></pre></p>
1696
+
1697
+ <p>And here is the same source code with a <code class="code">lang=<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">c</span><span style="color:#710">&quot;</span></span></code> attribute:</p>
1698
+
1699
+ <p><pre class="code" lang="c">
1700
+ <span style="color:#579"># Ruby</span> <span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#</span><span style="color:#579">#
1701
+ def</span> hello
1702
+ puts <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Hello world!</span><span style="color:#710">&quot;</span></span>
1703
+ end
1704
+
1705
+
1706
+ <span style="color:#666">/* C ****************************/</span>
1707
+ <span style="color:#579">#include</span> <span style="color:#B44;font-weight:bold">&lt;stdio.h&gt;</span>
1708
+ <span style="color:#339;font-weight:bold">int</span> main(<span style="color:#339;font-weight:bold">int</span> argc, <span style="color:#339;font-weight:bold">char</span> **argv) {
1709
+ printf(<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Hello world!</span><span style="color:#b0b">\n</span><span style="color:#710">&quot;</span></span>);
1710
+ <span style="color:#080;font-weight:bold">return</span> <span style="color:#00D;font-weight:bold">0</span>;
1711
+ }
1712
+
1713
+
1714
+ &lt;!-- HTML -----------------------&gt;
1715
+ &lt;html&gt;
1716
+ &lt;body&gt;
1717
+ Hello world!
1718
+ &lt;body&gt;
1719
+ &lt;/html&gt;
1720
+ </pre></p>
1721
+
1722
+ <p>And here is the same source code with a <code class="code">lang=<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">html</span><span style="color:#710">&quot;</span></span></code> attribute:</p>
1723
+
1724
+ <p><pre class="code" lang="html">
1725
+ # Ruby ###########################
1726
+ def hello
1727
+ puts &quot;Hello world!&quot;
1728
+ end
1729
+
1730
+
1731
+ /* C ****************************/
1732
+ #include <span style="color:#070">&lt;stdio.h&gt;</span>
1733
+ int main(int argc, char **argv) {
1734
+ printf(&quot;Hello world!\n&quot;);
1735
+ return 0;
1736
+ }
1737
+
1738
+
1739
+ <span style="color:#666">&lt;!-- HTML -----------------------&gt;</span>
1740
+ <span style="color:#070">&lt;html&gt;</span>
1741
+ <span style="color:#070">&lt;body&gt;</span>
1742
+ Hello world!
1743
+ <span style="color:#070">&lt;body&gt;</span>
1744
+ <span style="color:#070">&lt;/html&gt;</span>
1745
+ </pre></p></div>
1746
+ </div></p></div>
1747
+ </div> <div class="section">
1748
+ <h4 class="title">
1749
+ <a class="list" title="Return to table of contents" id="Smart-sizing-of-source-code" href="#rev:Smart-sizing-of-source-code">5.1.1.2</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Smart-sizing-of-source-code">Smart sizing of source code</a>
1750
+ </h4>
1751
+ <div class="content"><p>Source code is <em>automatically sized</em> to be displayed as either a line or paragraph of text, depending on whether it contains line breaks.</p>
1752
+
1753
+ <p>For example, here is a single line <code class="code">life = <span style="color:#038;font-weight:bold">true</span> <span style="color:#080;font-weight:bold">or</span> <span style="color:#038;font-weight:bold">false</span></code> of code. And here is a paragraph <pre class="code">life =
1754
+ <span style="color:#038;font-weight:bold">true</span> <span style="color:#080;font-weight:bold">or</span>
1755
+ <span style="color:#038;font-weight:bold">false</span></pre> of code.</p></div>
1756
+ </div> <div class="section">
1757
+ <h4 class="title">
1758
+ <a class="list" title="Return to table of contents" id="Protecting-verbatim-text" href="#rev:Protecting-verbatim-text">5.1.1.3</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Protecting-verbatim-text">Protecting verbatim text</a>
1759
+ </h4>
1760
+ <div class="content"><p>Sometimes you just need to protect some text from being mangled by the text-to-XHTML conversion process . In such cases, you can wrap the text you want to proctect within <strong>&#60;noformat&#62;</strong> and <strong>&#60;/noformat&#62;</strong> tags.</p></div>
1761
+ </div></p></div>
1762
+ </div> <div class="section">
1763
+ <h3 class="title">
1764
+ <a class="list" title="Return to table of contents" id="Parameters" href="#rev:Parameters">5.1.2</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Parameters">Parameters</a>
1765
+ </h3>
1766
+ <div class="content"><p>The XHTML format accepts the following document parameters.</p>
1767
+ <table border="1"><thead><tr><th>Parameter</th><th>Type</th><th>Default value</th><th>Description</th></tr></thead><tbody><tr><td style='text-align: left;'><code class="code"><span style="color:#d70;font-weight:bold">$title</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'><code class="code"><span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">$title</span><span style="color:#710">&quot;</span></span></code></td><td style='text-align: left;'>Title of the document.</td>
1768
+ </tr><tr><td style='text-align: left;'><code class="code"><span style="color:#d70;font-weight:bold">$authors</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">Hash</span></code></td><td style='text-align: left;'><code class="code">{<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">$authors</span><span style="color:#710">&quot;</span></span> =&gt; <span style="color:#038;font-weight:bold">nil</span>}</code></td><td style='text-align: left;'>A mapping of author name to author URL. You can obfuscate e-mail addresses using the provided <code class="code"><span style="color:#036;font-weight:bold">String</span><span style="color:#666">#to_xml_entities</span></code> method like this: <code class="code">{ <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">Y. Matsumoto</span><span style="color:#710">&quot;</span></span> =&gt; <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">mailto:matz@ruby.invalid</span><span style="color:#710">&quot;</span></span>.to_xml_entities }</code></td>
1769
+ </tr><tr><td style='text-align: left;'><code class="code"><span style="color:#d70;font-weight:bold">$date</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">Time</span>.now.strftime(<span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">%d %B %Y</span><span style="color:#710">&quot;</span></span>)</code></td><td style='text-align: left;'>Date when the document was written.</td>
1770
+ </tr><tr><td style='text-align: left;'><code class="code"><span style="color:#d70;font-weight:bold">$logo</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">String</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#038;font-weight:bold">nil</span></code></td><td style='text-align: left;'>Arbitrary content that goes above the document title in the default header.</td>
1771
+ </tr><tr><td style='text-align: left;'><code class="code"><span style="color:#d70;font-weight:bold">$feeds</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#036;font-weight:bold">Hash</span></code></td><td style='text-align: left;'><code class="code"><span style="color:#038;font-weight:bold">nil</span></code></td><td style='text-align: left;'>A mapping of feed URL to feed format. Here is an example: <code class="code"><span style="color:#d70;font-weight:bold">$feeds</span> = { <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">my_rss_feed.xml</span><span style="color:#710">&quot;</span></span> =&gt; <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">rss</span><span style="color:#710">&quot;</span></span>, <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">my_atom_feed.xml</span><span style="color:#710">&quot;</span></span> =&gt; <span style="background-color:#fff0f0"><span style="color:#710">&quot;</span><span style="color:#D20">atom</span><span style="color:#710">&quot;</span></span> }</code></td>
1772
+ </tr></tbody></table></div>
1773
+ </div> <div class="section">
1774
+ <h3 class="title">
1775
+ <a class="list" title="Return to table of contents" id="Methods" href="#rev:Methods">5.1.3</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Methods">Methods</a>
1776
+ </h3>
1777
+ <div class="content"><p>The XHTML format provides the following methods. In the method declarations shown below,</p>
1778
+
1779
+ <ul>
1780
+ <li>a pound sign (#) indicates that the method is an <em>instance method</em>, meaning that it can only be invoked on instances of a class, not on the classes themselves.</li>
1781
+
1782
+ <li>a double colon sign (::) indicates that the method is a <em>class method</em>, meaning that it can only be invoked on a class.</li>
1783
+ </ul>
1784
+
1785
+ <p><div class="section">
1786
+ <h4 class="title">
1787
+ <a class="list" title="Return to table of contents" id="a-ERBook::Node-title" href="#rev:a-ERBook::Node-title">5.1.3.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#a-ERBook::Node-title"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span><span style="color:#666">#title()</span></code></a>
1788
+ </h4>
1789
+ <div class="content"><p>
1790
+ Returns the user-defined title for this node&#8216;s content.
1791
+ </p></div>
1792
+ </div><div class="section">
1793
+ <h4 class="title">
1794
+ <a class="list" title="Return to table of contents" id="a-ERBook::Node-id" href="#rev:a-ERBook::Node-id">5.1.3.2</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#a-ERBook::Node-id"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span><span style="color:#666">#id()</span></code></a>
1795
+ </h4>
1796
+ <div class="content"><p>
1797
+ Returns the user-defined indentifer for this node.
1798
+ </p></div>
1799
+ </div><div class="section">
1800
+ <h4 class="title">
1801
+ <a class="list" title="Return to table of contents" id="a-ERBook::Node-title_xhtml" href="#rev:a-ERBook::Node-title_xhtml">5.1.3.3</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#a-ERBook::Node-title_xhtml"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span><span style="color:#666">#title_xhtml()</span></code></a>
1802
+ </h4>
1803
+ <div class="content"><p>
1804
+ Returns the title of this node as XHTML.
1805
+ </p></div>
1806
+ </div><div class="section">
1807
+ <h4 class="title">
1808
+ <a class="list" title="Return to table of contents" id="a-ERBook::Node-content_xhtml" href="#rev:a-ERBook::Node-content_xhtml">5.1.3.4</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#a-ERBook::Node-content_xhtml"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span><span style="color:#666">#content_xhtml()</span></code></a>
1809
+ </h4>
1810
+ <div class="content"><p>
1811
+ Returns the content of this node as XHTML.
1812
+ </p></div>
1813
+ </div><div class="section">
1814
+ <h4 class="title">
1815
+ <a class="list" title="Return to table of contents" id="a-ERBook::Node-title_link-aTitle-nil" href="#rev:a-ERBook::Node-title_link-aTitle-nil">5.1.3.5</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#a-ERBook::Node-title_link-aTitle-nil"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span><span style="color:#666">#title_link(aTitle = nil)</span></code></a>
1816
+ </h4>
1817
+ <div class="content"><p>
1818
+ Returns a hyperlink to this node containing its title.
1819
+ </p></div>
1820
+ </div><div class="section">
1821
+ <h4 class="title">
1822
+ <a class="list" title="Return to table of contents" id="a-ERBook::Node-index_link" href="#rev:a-ERBook::Node-index_link">5.1.3.6</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#a-ERBook::Node-index_link"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span><span style="color:#666">#index_link()</span></code></a>
1823
+ </h4>
1824
+ <div class="content"><p>
1825
+ Returns a hyperlink to this node containing its LaTeX-style index number.
1826
+ </p></div>
1827
+ </div><div class="section">
1828
+ <h4 class="title">
1829
+ <a class="list" title="Return to table of contents" id="a-ERBook::Node-number_link" href="#rev:a-ERBook::Node-number_link">5.1.3.7</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#a-ERBook::Node-number_link"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Node</span><span style="color:#666">#number_link()</span></code></a>
1830
+ </h4>
1831
+ <div class="content"><p>
1832
+ Returns a hyperlink to this node containing its occurrence number.
1833
+ </p></div>
1834
+ </div><div class="section">
1835
+ <h4 class="title">
1836
+ <a class="list" title="Return to table of contents" id="a-Hash-to_xml_atts" href="#rev:a-Hash-to_xml_atts">5.1.3.8</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#a-Hash-to_xml_atts"><code class="code"><span style="color:#036;font-weight:bold">Hash</span><span style="color:#666">#to_xml_atts()</span></code></a>
1837
+ </h4>
1838
+ <div class="content"><p>
1839
+ Transforms this hash into a string of XML attribute key=&quot;value&quot;
1840
+ pairs.
1841
+ </p></div>
1842
+ </div><div class="section">
1843
+ <h4 class="title">
1844
+ <a class="list" title="Return to table of contents" id="a-ERBook::Template-verbatim-aContent" href="#rev:a-ERBook::Template-verbatim-aContent">5.1.3.9</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#a-ERBook::Template-verbatim-aContent"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Template</span><span style="color:#666">#verbatim(aContent)</span></code></a>
1845
+ </h4>
1846
+ <div class="content"><p>
1847
+ Protects the given content from the text-to-XHTML conversion process.
1848
+ </p></div>
1849
+ </div><div class="section">
1850
+ <h4 class="title">
1851
+ <a class="list" title="Return to table of contents" id="a-ERBook::Template-hyperlink-aUrl-aLabel-aUrl-aTitle-nil" href="#rev:a-ERBook::Template-hyperlink-aUrl-aLabel-aUrl-aTitle-nil">5.1.3.10</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#a-ERBook::Template-hyperlink-aUrl-aLabel-aUrl-aTitle-nil"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Template</span><span style="color:#666">#hyperlink(aUrl, aLabel = aUrl, aTitle = nil)</span></code></a>
1852
+ </h4>
1853
+ <div class="content"><p>
1854
+ Returns XHTML for a hyperlink to the given URL of the given label and
1855
+ mouse-hover title.
1856
+ </p></div>
1857
+ </div><div class="section">
1858
+ <h4 class="title">
1859
+ <a class="list" title="Return to table of contents" id="a-ERBook::Template-embed_image_file-aPath-aFormat-aPath-w-aAtts" href="#rev:a-ERBook::Template-embed_image_file-aPath-aFormat-aPath-w-aAtts">5.1.3.11</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#a-ERBook::Template-embed_image_file-aPath-aFormat-aPath-w-aAtts"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Template</span><span style="color:#666">#embed_image_file(aPath, aFormat = aPath[/\w+/], aAtts = {})</span></code></a>
1860
+ </h4>
1861
+ <div class="content"><p>
1862
+ Returns an &lt;img/&gt; tag that embeds the given image file.
1863
+ </p><table border="1">
1864
+ <tr><td valign='top'>aPath:</td><td>path to the image file
1865
+
1866
+ </td></tr>
1867
+ <tr><td valign='top'>aFormat:</td><td>format of the image file (e.g. PNG, JPEG, GIF, etc.)
1868
+
1869
+ </td></tr>
1870
+ <tr><td valign='top'>aAtts:</td><td>additional attributes for the &lt;img&gt; tag
1871
+
1872
+ </td></tr>
1873
+ </table></div>
1874
+ </div><div class="section">
1875
+ <h4 class="title">
1876
+ <a class="list" title="Return to table of contents" id="a-ERBook::Template-embed_image_data-aData-aFormat-aAtts" href="#rev:a-ERBook::Template-embed_image_data-aData-aFormat-aAtts">5.1.3.12</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#a-ERBook::Template-embed_image_data-aData-aFormat-aAtts"><code class="code"><span style="color:#036;font-weight:bold">ERBook</span>::<span style="color:#036;font-weight:bold">Template</span><span style="color:#666">#embed_image_data(aData, aFormat, aAtts = {})</span></code></a>
1877
+ </h4>
1878
+ <div class="content"><p>
1879
+ Returns an &lt;img/&gt; tag that embeds the given raw image data.
1880
+ </p><table border="1">
1881
+ <tr><td valign='top'>aData:</td><td>raw image data
1882
+
1883
+ </td></tr>
1884
+ <tr><td valign='top'>aFormat:</td><td>format of the image file (e.g. PNG, JPEG, GIF, etc.)
1885
+
1886
+ </td></tr>
1887
+ <tr><td valign='top'>aAtts:</td><td>additional attributes for the &lt;img&gt; tag
1888
+
1889
+ </td></tr>
1890
+ </table></div>
1891
+ </div><div class="section">
1892
+ <h4 class="title">
1893
+ <a class="list" title="Return to table of contents" id="a-String-to_xml_entities" href="#rev:a-String-to_xml_entities">5.1.3.13</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#a-String-to_xml_entities"><code class="code"><span style="color:#036;font-weight:bold">String</span><span style="color:#666">#to_xml_entities()</span></code></a>
1894
+ </h4>
1895
+ <div class="content"><p>
1896
+ Transforms this UTF-8 string into XML entities.
1897
+ </p></div>
1898
+ </div><div class="section">
1899
+ <h4 class="title">
1900
+ <a class="list" title="Return to table of contents" id="a-String-to_uri_fragment" href="#rev:a-String-to_uri_fragment">5.1.3.14</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#a-String-to_uri_fragment"><code class="code"><span style="color:#036;font-weight:bold">String</span><span style="color:#666">#to_uri_fragment()</span></code></a>
1901
+ </h4>
1902
+ <div class="content"><p>
1903
+ Transforms this string into a valid URI fragment. See <a href='http://www.nmt.edu/tcc/help/pubs/xhtml/id-type.html'>www.nmt.edu/tcc/help/pubs/xhtml/id-type.html</a>
1904
+ </p></div>
1905
+ </div><div class="section">
1906
+ <h4 class="title">
1907
+ <a class="list" title="Return to table of contents" id="a-String-to_inline_xhtml" href="#rev:a-String-to_inline_xhtml">5.1.3.15</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#a-String-to_inline_xhtml"><code class="code"><span style="color:#036;font-weight:bold">String</span><span style="color:#666">#to_inline_xhtml()</span></code></a>
1908
+ </h4>
1909
+ <div class="content"><p>
1910
+ Transforms this string into an <b>inline</b> XHTML string (one that does
1911
+ not contain any block-level XHTML elements at the root).
1912
+ </p></div>
1913
+ </div><div class="section">
1914
+ <h4 class="title">
1915
+ <a class="list" title="Return to table of contents" id="a-String-to_xhtml-aInline-false" href="#rev:a-String-to_xhtml-aInline-false">5.1.3.16</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#a-String-to_xhtml-aInline-false"><code class="code"><span style="color:#036;font-weight:bold">String</span><span style="color:#666">#to_xhtml(aInline = false)</span></code></a>
1916
+ </h4>
1917
+ <div class="content"><p>
1918
+ Transforms this string into XHTML while ensuring that the result contains
1919
+ one or more block-level elements at the root.
1920
+ </p><p>
1921
+ If aInline is true, then the resulting XHTML will be an <b>inline</b>
1922
+ string.
1923
+ </p></div>
1924
+ </div></p></div>
1925
+ </div> <div class="chapter">
1926
+ <h1 class="title">
1927
+ Chapter&nbsp;<a class="list" title="Return to table of contents" id="xhtml.nodes" href="#rev:xhtml.nodes">5.1.4</a>
1928
+ <br/>
1929
+ <big><a class="here" title="Permanent link to this section" href="#xhtml.nodes">Nodes</a></big>
1930
+ </h1>
1931
+ <div class="content"><p>Unless otherwise noted, all nodes defined by the XHTML format accept two arguments, in this order:</p>
1932
+
1933
+ <ol>
1934
+ <li>a required <em>title</em> for the node</li>
1935
+
1936
+ <li>an optional <em>unique identifier</em> for the node</li>
1937
+ </ol>
1938
+
1939
+ <p>The second argument is used by the cross-referencing nodes (see <a class="xref" href="#xhtml.nodes.xref">Section 5.1.4.1.4. xref</a> and <a class="xref" href="#xhtml.nodes.cite">Section 5.1.4.5.2. cite</a>), which allow you to refer to another node in the document by its unique identifier.</p>
1940
+
1941
+ <p>Furthermore, <a class="xref" href="#SpecFile.nodes" title="Section 3.2.1. Node definition">node definitions</a> in the XHTML format have two additional parameters:</p>
1942
+ <table border="1"><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td style='text-align: left;'>toc</td><td style='text-align: left;'>Boolean</td><td style='text-align: left;'>Include this node in the <strong>Table of Contents</strong> (TOC)?</td>
1943
+ </tr><tr><td style='text-align: left;'>lof</td><td style='text-align: left;'>Boolean</td><td style='text-align: left;'>Include this node in the <strong>List of Figures</strong> (LOF)?</td>
1944
+ </tr></tbody></table>
1945
+ <p><div class="section">
1946
+ <h4 class="title">
1947
+ <a class="list" title="Return to table of contents" id="Structural-nodes" href="#rev:Structural-nodes">5.1.4.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Structural-nodes">Structural nodes</a>
1948
+ </h4>
1949
+ <div class="content"><p>The nodes described in this section form the overall structure of the output document.</p>
1950
+
1951
+ <p><div class="section">
1952
+ <h5 class="title">
1953
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.header" href="#rev:xhtml.nodes.header">5.1.4.1.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.header">header</a>
1954
+ </h5>
1955
+ <div class="content"><p>This node overrides the logo, title, list of authors, and date when the document was written, all of which are shown at the top of the document.</p></div>
1956
+ </div> <div class="section">
1957
+ <h5 class="title">
1958
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.footer" href="#rev:xhtml.nodes.footer">5.1.4.1.2</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.footer">footer</a>
1959
+ </h5>
1960
+ <div class="content"><p>This node overrides (1) the date when this document was generated and (2) the hyperlink to the erbook website, shown at the bottom of the document. The hyperlink is there as a way of saying thanks for erbook, the <em>wonderful</em> little utility you have grown so fond of! ;-)</p></div>
1961
+ </div> <div class="section">
1962
+ <h5 class="title">
1963
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.abstract" href="#rev:xhtml.nodes.abstract">5.1.4.1.3</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.abstract">abstract</a>
1964
+ </h5>
1965
+ <div class="content"><p>A summary of the entire document. This is what most readers will <em>skim</em> through, if you are lucky. Alas, nobody reads entire documents these days! :-(</p></div>
1966
+ </div> <div class="section">
1967
+ <h5 class="title">
1968
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.xref" href="#rev:xhtml.nodes.xref">5.1.4.1.4</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.xref">xref</a>
1969
+ </h5>
1970
+ <div class="content"><p>A cross-reference; a hyperlink that takes you to any node in the document.</p>
1971
+
1972
+ <p>The first argument of this node is either the unique identifier or the user-defined title of the node you wish to cross-reference. If no nodes in the document have the given identifier or user-defined title, then an error will be raised.</p>
1973
+
1974
+ <p>The second argument of this node overrides the default link text of the cross-reference.</p>
1975
+
1976
+ <p>For example, this node in the input document:</p>
1977
+
1978
+ <pre>&lt;%= xref &quot;SpecFile&quot; %&gt;</pre>
1979
+
1980
+ <p>appears in the output document like this: <a class="xref" href="#SpecFile">Section 3.2. Format specification file</a>.</p>
1981
+
1982
+ <p>As another example, this node in the input document:</p>
1983
+
1984
+ <pre>&lt;%= xref &quot;SpecFile&quot;, &quot;custom link text&quot; %&gt;</pre>
1985
+
1986
+ <p>appears in the output document like this: <a class="xref" href="#SpecFile" title="Section 3.2. Format specification file">custom link text</a>.</p></div>
1987
+ </div></p></div>
1988
+ </div> <div class="section">
1989
+ <h4 class="title">
1990
+ <a class="list" title="Return to table of contents" id="Organizational-nodes" href="#rev:Organizational-nodes">5.1.4.2</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Organizational-nodes">Organizational nodes</a>
1991
+ </h4>
1992
+ <div class="content"><p>The nodes described in this section are meant to help organize the document&#8217;s content logically. Based on how deeply these nodes are nested in the document, their heading will be larger (shallow depth) or smaller (deep depth).</p>
1993
+
1994
+ <p><div class="section">
1995
+ <h5 class="title">
1996
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.part" href="#rev:xhtml.nodes.part">5.1.4.2.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.part">part</a>
1997
+ </h5>
1998
+ <div class="content"><p>A collection of chapters.</p>
1999
+
2000
+ <p><div class="part">
2001
+ <h1 class="title">
2002
+ Part&nbsp;<a class="list" title="Return to table of contents" id="An-example" href="#rev:An-example">5.1.4.2.1.1</a>
2003
+ <br/>
2004
+ <big><a class="here" title="Permanent link to this section" href="#An-example">An example</a></big>
2005
+ </h1>
2006
+ <div class="content"><p>This is how a <strong>part</strong> node appears.</p></div>
2007
+ </div></p></div>
2008
+ </div> <div class="section">
2009
+ <h5 class="title">
2010
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.chapter" href="#rev:xhtml.nodes.chapter">5.1.4.2.2</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.chapter">chapter</a>
2011
+ </h5>
2012
+ <div class="content"><p>A collection of sections.</p>
2013
+
2014
+ <p><div class="chapter">
2015
+ <h1 class="title">
2016
+ Chapter&nbsp;<a class="list" title="Return to table of contents" id="An-example-5.1.4.2.2.1" href="#rev:An-example-5.1.4.2.2.1">5.1.4.2.2.1</a>
2017
+ <br/>
2018
+ <big><a class="here" title="Permanent link to this section" href="#An-example-5.1.4.2.2.1">An example</a></big>
2019
+ </h1>
2020
+ <div class="content"><p>This is how a <strong>chapter</strong> node appears.</p></div>
2021
+ </div></p></div>
2022
+ </div> <div class="section">
2023
+ <h5 class="title">
2024
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.section" href="#rev:xhtml.nodes.section">5.1.4.2.3</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.section">section</a>
2025
+ </h5>
2026
+ <div class="content"><p>A collection of paragraphs about a particular topic.</p>
2027
+
2028
+ <p><div class="section">
2029
+ <h6 class="title">
2030
+ <a class="list" title="Return to table of contents" id="An-example-5.1.4.2.3.1" href="#rev:An-example-5.1.4.2.3.1">5.1.4.2.3.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#An-example-5.1.4.2.3.1">An example</a>
2031
+ </h6>
2032
+ <div class="content"><p>This is how a <strong>section</strong> node appears.</p></div>
2033
+ </div></p></div>
2034
+ </div> <div class="section">
2035
+ <h5 class="title">
2036
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.paragraph" href="#rev:xhtml.nodes.paragraph">5.1.4.2.4</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.paragraph">paragraph</a>
2037
+ </h5>
2038
+ <div class="content"><p>A collection of sentences about a particular idea.</p>
2039
+
2040
+ <p><div class="paragraph">
2041
+ <p class="title"><a class="here" title="Permanent link to this section" href="#An-example-609202208">An example</a></p>
2042
+ <div class="content"><p>This is how a <strong>paragraph</strong> node appears. Notice that there is no LaTeX-style index number in the heading of this <strong>paragraph</strong> node.</p></div>
2043
+ </div></p></div>
2044
+ </div></p></div>
2045
+ </div> <div class="section">
2046
+ <h4 class="title">
2047
+ <a class="list" title="Return to table of contents" id="Admonition-nodes" href="#rev:Admonition-nodes">5.1.4.3</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Admonition-nodes">Admonition nodes</a>
2048
+ </h4>
2049
+ <div class="content"><p>An admonition is basically a box that is indented more deeply than the text surrounding it. It is typically used to convey extraneous or pertinent information about the application of ideas discussed in the surrounding text.</p>
2050
+
2051
+ <p>I like to follow the KDE guidelines<sup>[<a class="cite" href="#KDE.admonitions">1</a>]</sup> when determining which admonition to use in my documents.</p>
2052
+
2053
+ <p> <div class="section">
2054
+ <h5 class="title">
2055
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.warning" href="#rev:xhtml.nodes.warning">5.1.4.3.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.warning">warning</a>
2056
+ </h5>
2057
+ <div class="content"><p>Use a <strong>warning</strong> node when &#8220;data loss could occur if you follow the procedure being described.&#8221; <sup>[<a class="cite" href="#KDE.admonitions">1</a>]</sup></p>
2058
+
2059
+ <p><div class="warning">
2060
+ <p class="title"><a class="list" title="Return to table of contents" id="An-example-1" href="#rev:An-example-1">Warning 1</a>.&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#An-example-1">An example</a></p>
2061
+ <div class="content"><img class="icon" src="&icon_warning;" alt="warning"/><p>This is how a <strong>warning</strong> node appears.</p></div>
2062
+ </div></p></div>
2063
+ </div> <div class="section">
2064
+ <h5 class="title">
2065
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.caution" href="#rev:xhtml.nodes.caution">5.1.4.3.2</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.caution">caution</a>
2066
+ </h5>
2067
+ <div class="content"><p>bq. A note of caution. Use this for example when the reader may lose easily recovered or replaceable information (e.g. user settings), or when they could cause data loss if they don&#8217;t correctly follow the procedure being outlined. <sup>[<a class="cite" href="#KDE.admonitions">1</a>]</sup></p>
2068
+
2069
+ <p><div class="caution">
2070
+ <p class="title"><a class="list" title="Return to table of contents" id="An-example-1-1" href="#rev:An-example-1-1">Caution 1</a>.&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#An-example-1-1">An example</a></p>
2071
+ <div class="content"><img class="icon" src="&icon_caution;" alt="caution"/><p>This is how a <strong>caution</strong> node appears.</p></div>
2072
+ </div></p></div>
2073
+ </div> <div class="section">
2074
+ <h5 class="title">
2075
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.important" href="#rev:xhtml.nodes.important">5.1.4.3.3</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.important">important</a>
2076
+ </h5>
2077
+ <div class="content"><p>Use an <strong>important</strong> node when:</p>
2078
+
2079
+ <p>bq. When there is no danger of data loss, but you wish to make clear to the reader a consequence that isn&#8217;t immediately obvious (e.g. when changing the font for one instance of a program also changes the default setting, and this isn&#8217;t clear from the GUI.) <sup>[<a class="cite" href="#KDE.admonitions">1</a>]</sup></p>
2080
+
2081
+ <p><div class="important">
2082
+ <p class="title"><a class="list" title="Return to table of contents" id="An-example-2" href="#rev:An-example-2">Important 2</a>.&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#An-example-2">An example</a></p>
2083
+ <div class="content"><img class="icon" src="&icon_important;" alt="important"/><p>This is how a <strong>important</strong> node appears.</p></div>
2084
+ </div></p></div>
2085
+ </div> <div class="section">
2086
+ <h5 class="title">
2087
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.note" href="#rev:xhtml.nodes.note">5.1.4.3.4</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.note">note</a>
2088
+ </h5>
2089
+ <div class="content"><p>Use a <strong>note</strong> node to convey:</p>
2090
+
2091
+ <p>bq. Information the user should be aware of, but is peripheral to the actual task being described. <sup>[<a class="cite" href="#KDE.admonitions">1</a>]</sup></p>
2092
+
2093
+ <p><div class="note">
2094
+ <p class="title"><a class="list" title="Return to table of contents" id="An-example-2-2" href="#rev:An-example-2-2">Note 2</a>.&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#An-example-2-2">An example</a></p>
2095
+ <div class="content"><img class="icon" src="&icon_note;" alt="note"/><p>This is how a <strong>note</strong> node appears.</p></div>
2096
+ </div></p></div>
2097
+ </div> <div class="section">
2098
+ <h5 class="title">
2099
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.tip" href="#rev:xhtml.nodes.tip">5.1.4.3.5</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.tip">tip</a>
2100
+ </h5>
2101
+ <div class="content"><p>Use a <strong>tip</strong> node when:</p>
2102
+
2103
+ <p>bq. When you&#8217;re giving a hint to make things easier or more productive for the reader. <sup>[<a class="cite" href="#KDE.admonitions">1</a>]</sup></p>
2104
+
2105
+ <p><div class="tip">
2106
+ <p class="title"><a class="list" title="Return to table of contents" id="An-example-1-1-1" href="#rev:An-example-1-1-1">Tip 1</a>.&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#An-example-1-1-1">An example</a></p>
2107
+ <div class="content"><img class="icon" src="&icon_tip;" alt="tip"/><p>This is how a <strong>tip</strong> node appears.</p></div>
2108
+ </div></p></div>
2109
+ </div></p></div>
2110
+ </div> <div class="section">
2111
+ <h4 class="title">
2112
+ <a class="list" title="Return to table of contents" id="Auxilary-materials" href="#rev:Auxilary-materials">5.1.4.4</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Auxilary-materials">Auxilary materials</a>
2113
+ </h4>
2114
+ <div class="content"><p><div class="section">
2115
+ <h5 class="title">
2116
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.figure" href="#rev:xhtml.nodes.figure">5.1.4.4.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.figure">figure</a>
2117
+ </h5>
2118
+ <div class="content"><p>A diagram, sketch, image, or illustration; something that visually depicts an idea or thought.</p>
2119
+
2120
+ <p><div class="figure">
2121
+ <p class="title"><a class="list" title="Return to table of contents" id="An-example-1-1-1-1" href="#rev:An-example-1-1-1-1">Figure 1</a>.&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#An-example-1-1-1-1">An example</a></p>
2122
+ <div class="content"><p>This is how a <strong>figure</strong> node appears.</p></div>
2123
+ </div></p></div>
2124
+ </div> <div class="section">
2125
+ <h5 class="title">
2126
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.table" href="#rev:xhtml.nodes.table">5.1.4.4.2</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.table">table</a>
2127
+ </h5>
2128
+ <div class="content"><p>Information (typically measurement data) represented in tabular form for easy reading, comparison, and analysis.</p>
2129
+
2130
+ <p><div class="table">
2131
+ <p class="title"><a class="list" title="Return to table of contents" id="An-example-1-1-1-1-1" href="#rev:An-example-1-1-1-1-1">Table 1</a>.&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#An-example-1-1-1-1-1">An example</a></p>
2132
+ <div class="content"><p>This is how a <strong>table</strong> node appears.</p></div>
2133
+ </div></p></div>
2134
+ </div> <div class="section">
2135
+ <h5 class="title">
2136
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.example" href="#rev:xhtml.nodes.example">5.1.4.4.3</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.example">example</a>
2137
+ </h5>
2138
+ <div class="content"><p>A sample application of an idea or thought.</p>
2139
+
2140
+ <p><div class="example">
2141
+ <p class="title"><a class="list" title="Return to table of contents" id="An-example-4" href="#rev:An-example-4">Example 4</a>.&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#An-example-4">An example</a></p>
2142
+ <div class="content"><p>This is how a <strong>example</strong> node appears.</p></div>
2143
+ </div></p></div>
2144
+ </div> <div class="section">
2145
+ <h5 class="title">
2146
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.equation" href="#rev:xhtml.nodes.equation">5.1.4.4.4</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.equation">equation</a>
2147
+ </h5>
2148
+ <div class="content"><p>A mathematical equation or formula.</p>
2149
+
2150
+ <p><div class="equation">
2151
+ <p class="title"><a class="list" title="Return to table of contents" id="An-example-1-1-1-1-1-1" href="#rev:An-example-1-1-1-1-1-1">Equation 1</a>.&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#An-example-1-1-1-1-1-1">An example</a></p>
2152
+ <div class="content"><p>This is how a <strong>equation</strong> node appears.</p></div>
2153
+ </div></p></div>
2154
+ </div> <div class="section">
2155
+ <h5 class="title">
2156
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.procedure" href="#rev:xhtml.nodes.procedure">5.1.4.4.5</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.procedure">procedure</a>
2157
+ </h5>
2158
+ <div class="content"><p>An outline; a series of steps outlining some kind of process.</p>
2159
+
2160
+ <p><div class="procedure">
2161
+ <p class="title"><a class="list" title="Return to table of contents" id="An-example-1-1-1-1-1-1-1" href="#rev:An-example-1-1-1-1-1-1-1">Procedure 1</a>.&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#An-example-1-1-1-1-1-1-1">An example</a></p>
2162
+ <div class="content"><p>This is how a <strong>procedure</strong> node appears.</p></div>
2163
+ </div></p></div>
2164
+ </div></p></div>
2165
+ </div> <div class="section">
2166
+ <h4 class="title">
2167
+ <a class="list" title="Return to table of contents" id="Bibliographical-nodes" href="#rev:Bibliographical-nodes">5.1.4.5</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#Bibliographical-nodes">Bibliographical nodes</a>
2168
+ </h4>
2169
+ <div class="content"><p>The nodes in this section deal with attribution of ideas&#8212;an important weapon against plagiarism.</p>
2170
+
2171
+ <p><div class="section">
2172
+ <h5 class="title">
2173
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.reference" href="#rev:xhtml.nodes.reference">5.1.4.5.1</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.reference">reference</a>
2174
+ </h5>
2175
+ <div class="content"><p>This node stores bibliography information about an information source that is relevant to your document.</p>
2176
+
2177
+ <p>If you wish to cite a certain source in several places in your document, start by creating a <strong>reference</strong> node first and then use a <strong>cite</strong> node (see <a class="xref" href="#xhtml.nodes.cite">Section 5.1.4.5.2. cite</a>) to perform the citation.</p>
2178
+
2179
+ <p><div class="paragraph">
2180
+ <p class="title"><a class="here" title="Permanent link to this section" href="#An-example-609275168">An example</a></p>
2181
+ <div class="content"><p>See <a class="xref" href="#xhtml.nodes.reference.example">Reference 2</a> for an example of how a <strong>reference</strong> node appears.</p></div>
2182
+ </div> </p></div>
2183
+ </div> <div class="section">
2184
+ <h5 class="title">
2185
+ <a class="list" title="Return to table of contents" id="xhtml.nodes.cite" href="#rev:xhtml.nodes.cite">5.1.4.5.2</a>&nbsp;&nbsp;<a class="here" title="Permanent link to this section" href="#xhtml.nodes.cite">cite</a>
2186
+ </h5>
2187
+ <div class="content"><p>A citation to a <strong>reference</strong> node (see <a class="xref" href="#xhtml.nodes.reference">Section 5.1.4.5.1. reference</a>) in the document&#8217;s bibliography.</p>
2188
+
2189
+ <p>The first argument of this node is the unique identifier of the reference node you wish to cite. You can specify additional arguments to give more detail about the citation.</p>
2190
+
2191
+ <p>For example, this node in the input document:</p>
2192
+
2193
+ <pre>&lt;%= cite &quot;xhtml.nodes.reference.example&quot; %&gt;</pre>
2194
+
2195
+ <p>appears in the output document like this: <sup>[<a class="cite" href="#xhtml.nodes.reference.example">2</a>]</sup></p>
2196
+
2197
+ <p>As another example, this node in the input document:</p>
2198
+
2199
+ <pre>&lt;%= cite &quot;xhtml.nodes.reference.example&quot;, &quot;chapter 10&quot;, &quot;page 53&quot;, &quot;...&quot; %&gt;</pre>
2200
+
2201
+ <p>appears in the output document like this: <sup>[<a class="cite" href="#xhtml.nodes.reference.example">2</a>, chapter 10, page 53, ...]</sup></p></div>
2202
+ </div></p></div>
2203
+ </div></p></div>
2204
+ </div></p></div>
2205
+ </div></p>
2206
+
2207
+ <p><div class="chapter">
2208
+ <h1 class="title">
2209
+ Chapter&nbsp;<a class="list" title="Return to table of contents" id="text" href="#rev:text">5.2</a>
2210
+ <br/>
2211
+ <big><a class="here" title="Permanent link to this section" href="#text">Plain text</a></big>
2212
+ </h1>
2213
+ <div class="content"><p>This format is not yet implemented. I will do this evenually, but until then, <strong>patches are welcome!</strong> :-)</p>
2214
+ <a href='http://en.wikipedia.org/wiki/Plain_text'>http://en.wikipedia.org/wiki/Plain_text</a></div>
2215
+ </div> <div class="chapter">
2216
+ <h1 class="title">
2217
+ Chapter&nbsp;<a class="list" title="Return to table of contents" id="latex" href="#rev:latex">5.3</a>
2218
+ <br/>
2219
+ <big><a class="here" title="Permanent link to this section" href="#latex">LaTeX (PDF)</a></big>
2220
+ </h1>
2221
+ <div class="content"><p>This format is not yet implemented. I will do this evenually, but until then, <strong>patches are welcome!</strong> :-)</p>
2222
+ <a href='http://www.latex-project.org'>http://www.latex-project.org</a></div>
2223
+ </div> <div class="chapter">
2224
+ <h1 class="title">
2225
+ Chapter&nbsp;<a class="list" title="Return to table of contents" id="man" href="#rev:man">5.4</a>
2226
+ <br/>
2227
+ <big><a class="here" title="Permanent link to this section" href="#man">man (UNIX manual page)</a></big>
2228
+ </h1>
2229
+ <div class="content"><p>This format is not yet implemented. I will do this evenually, but until then, <strong>patches are welcome!</strong> :-)</p>
2230
+ <a href='http://en.wikipedia.org/wiki/Man_page'>http://en.wikipedia.org/wiki/Man_page</a></div>
2231
+ </div></p></div>
2232
+ </div></div>
2233
+
2234
+ <div id="bib">
2235
+ <h1 class="title" id="References"><a class="here" href="#References">References</a></h1>
2236
+ <ol>
2237
+ <li id="KDE.admonitions"><p>L. Watts, &#8220;Admonitions: Tips, hints, and Warnings&#8221;, in <em>The KDE DocBook Authors guide</em>, Chapter 13, [Online document], 22 September 2004 (Revision 1.00.00), [cited 8 December 2007], Available at <a href='http://l10n.kde.org/docs/markup/tips-hints-etc.html'>http://l10n.kde.org/docs/markup/tips-hints-etc.html</a></p></li>
2238
+ <li id="xhtml.nodes.reference.example"><p>This is how a <strong>reference</strong> node appears.</p></li>
2239
+ </ol>
2240
+ </div>
2241
+
2242
+ <br style="display: none"/>
2243
+ <hr style="display: none"/>
2244
+ <br style="display: none"/>
2245
+
2246
+
2247
+ <div id="footer">
2248
+
2249
+ Generated by <a href="http://snk.tuxfamily.org/lib/erbook">erbook 5.0.0</a> on Sat Nov 22 23:17:15 -0800 2008.
2250
+
2251
+ <div id="footer-credits">
2252
+ <p>
2253
+ <img class="icon" src="&icon_caution;" alt="caution"/>
2254
+ <img class="icon" src="&icon_tip;" alt="tip"/>
2255
+ <img class="icon" src="&icon_important;" alt="important"/>
2256
+ <img class="icon" src="&icon_note;" alt="note"/>
2257
+ <img class="icon" src="&icon_warning;" alt="warning"/>
2258
+ <img class="icon" src="&icon_quote;" alt="quote"/>
2259
+
2260
+ <br/>
2261
+
2262
+ The icons shown above are &copy; 2005 <a href="http://tango.freedesktop.org">Tango Desktop Project</a>. They are part of the <a href="http://tango.freedesktop.org/Tango_Icon_Library">Tango Icon Theme</a> set, which is distributed under the <a href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-ShareAlike 2.5 License Agreement</a>.
2263
+ </p>
2264
+
2265
+ <p>
2266
+ <img class="icon" src="&icon_link;" alt="link"/>
2267
+
2268
+ <br/>
2269
+
2270
+ The icons shown above are &copy; 2007 <a href="https://www.ohloh.net/projects/mediawiki/contributors">MediaWiki contributors</a>. They are part of the <a href="http://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a> software, which is distributed under the <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, version 2</a>.
2271
+ </p>
2272
+ </div>
2273
+
2274
+ </div>
2275
+
2276
+ </body>
2277
+ </html>