1c20acc61e8de78ddd4de7cb69725b7917f9f1ae
[sgt/halibut] / doc / input.but
1 \C{input} Halibut input format
2
3 This chapter describes the format in which you should write
4 documents to be processed by Halibut.
5
6 \H{input-basics} The basics
7
8 Halibut's input files mostly look like ordinary ASCII text files;
9 you can edit them with any text editor you like.
10
11 Writing \i{paragraphs of ordinary text} is very simple: you just
12 write ordinary text in the ordinary way. You can wrap a paragraph
13 across more than one line using \i{line breaks} in the text file,
14 and Halibut will ignore this when it \I{wrapping paragraphs}rewraps
15 the paragraph for each output format. To separate paragraphs, use a
16 \i{blank line} (i.e. two consecutive line breaks). For example, a
17 fragment of Halibut input looking like this:
18
19 \c This is a line of text.
20 \c This is another line of text.
21 \c
22 \c This line is separated from the previous one by a blank line.
23
24 will produce two paragraphs looking like this:
25
26 \quote{
27 This is a line of text.
28 This is another line of text.
29
30 This line is separated from the previous one by a blank line.
31 }
32
33 The first two lines of the input have been merged together into a
34 single paragraph, and the line break in the input file was treated
35 identically to the spaces between the individual words.
36
37 Halibut is designed to have very few \I{escaping, special
38 characters}\i{special characters}. The only printable characters in
39 Halibut input which will not be treated exactly literally in the
40 output are the \i{backslash} (\c{\\}) and the \i{braces} (\c{\{} and
41 \c{\}}). If you do not use these characters, \e{everything} else you
42 might type in normal ASCII text is perfectly safe. If you do need to
43 use any of those three characters in your document, you will have to
44 precede each one with a backslash. Hence, for example, you could
45 write
46
47 \c This \\ is a backslash, and these are \{braces\}.
48
49 and Halibut would generate the text
50
51 \quote{
52 This \\ is a backslash, and these are \{braces\}.
53 }
54
55 If you want to write your input file in a character set other than
56 ASCII, you can do so by using the \c{\\cfg\{input-charset\}}
57 command. See \k{input-config} for details of this.
58
59 \H{input-inline} Simple \i{inline formatting commands}
60
61 Halibut formatting commands all begin with a backslash, followed by
62 a word or character identifying the command. Some of them then use
63 braces to surround one or more pieces of text acted on by the
64 command. (In fact, the \c{\\\\}, \c{\\\{} and \c{\\\}} sequences you
65 met in \k{input-basics} are themselves formatting commands.)
66
67 This section describes some simple formatting commands you can use
68 in Halibut documents. The commands in this section are \e{inline}
69 commands, which means you can use them in the middle of a paragraph.
70 \K{input-para} describes some \e{paragraph} commands, which affect a
71 whole paragraph at a time.
72
73 Many of these commands are followed by a pair of braces surrounding
74 some text. In all cases, it is perfectly safe to have a \i{line break}
75 (in the input file) within those braces; Halibut will treat that
76 exactly the same as a space. For example, these two paragraphs will
77 be treated identically:
78
79 \c Here is some \e{emphasised
80 \c text}.
81 \c
82 \c Here is some \e{emphasised text}.
83
84 \S{input-emph} \c{\\e}: Emphasising text
85
86 Possibly the most obvious piece of formatting you might want
87 to use in a document is \i\e{emphasis}.
88 To emphasise text, you use the \i\c{\\e} command, and follow it up
89 with the text to be emphasised in braces. For example, the first
90 sentence in this paragraph was generated using the Halibut input
91
92 \c Possibly the most obvious piece of formatting you might want
93 \c to use in a document is \e{emphasis}.
94
95 \S{input-code} \c{\\c} and \c{\\cw}: Displaying \i{computer code} inline
96
97 Halibut was primarily designed to produce software manuals. It can
98 be used for other types of document as well, but software manuals
99 are its speciality.
100
101 In software manuals, you often want to format text in a way that
102 indicates that it is something you might see displayed \i{verbatim}
103 on a computer screen. In printed manuals, this is typically done by
104 setting that text in a font which is obviously \I{fixed-width
105 font}fixed-width. This provides a visual cue that the text being
106 displayed is code, and it also ensures that punctuation marks are
107 clearly separated and shown individually (so that a user can copy
108 the text accurately and conveniently).
109
110 Halibut provides \e{two} commands for this, which are subtly
111 different. The names of those commands are \i\c{\\c} (\q{code}) and
112 \i\c{\\cw} (\q{\i{weak code}}). You use them just like \c{\\e}, by
113 following them with some text in braces. For example, this...
114
115 \c This sentence contains some \c{code} and some \cw{weak code}.
116
117 ... produces this:
118
119 \quote{
120 This sentence contains some \c{code} and some \cw{weak code}.
121 }
122
123 The distinction between code and weak code is mainly important when
124 producing plain text output. Plain text output is typically viewed
125 in a fixed-width font, so there is no need (and no way) to change
126 font in order to make the order of punctuation marks clear. However,
127 marking text as code is also \e{sometimes} done to provide a visual
128 distinction between it and the text around it, so that the reader
129 knows where the literal computer text starts and stops; and in plain
130 text, this cannot be done by changing font, so there needs to be an
131 alternative way.
132
133 So in the plain text output format, things marked as code (\c{\\c})
134 will be surrounded by quote marks, so that it's obvious where they
135 start and finish. Things marked as weak code (\c{\\cw}) will not
136 look any different from normal text.
137
138 I recommend using weak code for any application where it is
139 \e{obvious} that the text is literal computer input or output. For
140 example, if the text is capitalised, that's usually good enough. If
141 I talk about the Pentium's \cw{EAX} and \cw{EDX} registers, for
142 example, you don't need quotes to notice that those are special; so
143 I would write that in Halibut as \q{\c{the Pentium's \\cw\{EAX\} and
144 \\cw\{EDX\} registers}}. But if I'm talking about the Unix command
145 \c{man}, which is an ordinary English word in its own right, a reader
146 might be slightly confused if it appeared in the middle of a
147 sentence undecorated; so I would write that as \q{\c{the Unix command
148 \\c\{man\}}}.
149
150 In summary:
151
152 \b \c{\\c} means \q{this text \e{must} be visually distinct from the
153 text around it}. Halibut's various output formats will do this by
154 changing the font if possible, or by using quotes if not.
155
156 \b \c{\\cw} means \q{it would be nice to display this text in a
157 fixed-width font if possible, but it's not essential}.
158
159 In really extreme cases, you might want Halibut to use \i{quotation
160 marks} even in output formats which can change font. In
161 \k{input-date}, for example, I mention the special formatting
162 command \q{\cw{\\.}}. If that appeared at the end of a sentence
163 \e{without} the quotes, then the two adjacent full stops would look
164 pretty strange even if they were obviously in different fonts. So I
165 used the \c{\\q} command to provide my own set of quotes, and then
166 used \c{\\cw} rather than \c{\\c} to ensure that none of Halibut's
167 output formats would add another set of quotes:
168
169 \c the special formatting command \q{\cw{\\.}}.
170
171 There is a separate mechanism for displaying computer code in an
172 entire paragraph; see \k{input-codepara} for that one.
173
174 \S{input-quotes} \c{\\q}: \ii{Quotation marks}
175
176 Halibut's various output formats don't all use the same conventions
177 for displaying text in ordinary quotation marks (\q{like these}).
178 Some output formats have access to proper matched quote characters,
179 whereas others are restricted to using plain ASCII. Therefore, it is
180 not ideal to use the ordinary ASCII double quote character in your
181 document (although you can if you like).
182
183 Halibut provides the formatting command \i\c{\\q} to indicate quoted
184 text. If you write
185
186 \c Here is some \q{text in quotes}.
187
188 then Halibut will print
189
190 \quote{
191 Here is some \q{text in quotes}.
192 }
193
194 and in every output format Halibut generates, it will choose the
195 best quote characters available to it in that format.
196
197 You can still use the ordinary quote characters of your choice if
198 you prefer; or you could even use the \c{\\u} command (see
199 \k{input-unicode}) to generate \i{Unicode matched quotes} (single or
200 double) in a way which will automatically fall back to the normal
201 ASCII one if they aren't available. But I recommend using the
202 built-in \c{\\q} command in most cases, because it's simple and does
203 the best it can everywhere.
204
205 If you're using the \c{\\c} or \c{\\cw} commands to display literal
206 computer code, you will probably want to use literal \i{ASCII quote
207 characters}, because it is likely to matter precisely which quote
208 character you use. In fact, Halibut actually \e{disallows} the use
209 of \c{\\q} within either of \c{\\c} and \c{\\cw}, since this
210 simplifies some of the output formats.
211
212 \S{input-nonbreaking} \c{\\-} and \c{\\_}: \ii{Non-breaking hyphens}
213 and \I{non-breaking spaces}spaces
214
215 If you use an ordinary hyphen in the middle of a word (such as
216 \q{built-in}), Halibut's output formats will feel free to break a
217 line after that hyphen when \i{wrapping paragraphs}. This is fine
218 for a word like \q{built-in}, but if you were displaying some
219 literal computer code such as the Emacs command
220 \c{M\-x\_psychoanalyze\-pinhead}, you might prefer to see the whole
221 hyphenated word treated as an unbreakable block. In some cases, you
222 might even want to prevent the \e{space} in that command from
223 becoming a line break.
224
225 For these purposes, Halibut provides the commands \i\c{\\-} and
226 \i\c{\\_}, which generate a non-breaking hyphen and a non-breaking
227 space respectively. So the above Emacs command might be written as
228
229 \c the Emacs command \c{M\-x\_psychoanalyze\-pinhead}
230
231 Unfortunately, some of Halibut's output formats do not support
232 non-breaking hyphens, and others don't support \e{breaking} hyphens!
233 So Halibut cannot promise to honour these commands in all situations.
234 All it can do is make a best effort.
235
236 \S{input-date} \c{\\date}: Automatic \i{date} generation
237
238 Sometimes you might want your document to give an up-to-date
239 indication of the date on which it was run through Halibut.
240
241 Halibut supplies the \i\c{\\date} command to do this. In its
242 simplest form, you simply say
243
244 \c This document was generated on \date.
245
246 and Halibut generates something like
247
248 \quote{
249 This document was generated on \date.
250 }
251
252 You can follow the \c{\\date} command directly with punctuation (as
253 in this example, where it is immediately followed by a full stop),
254 but if you try to follow it with an alphabetic or numeric character
255 (such as writing \c{\\dateZ}) then Halibut will assume you are
256 trying to invoke the name of a macro command you have defined
257 yourself, and will complain if no such command exists. To get round
258 this you can use the special \q{\cw{\\.}} do-nothing command. See
259 \k{input-macro} for more about general Halibut command syntax and
260 \q{\cw{\\.}}.
261
262 If you would prefer the date to be generated in a specific format,
263 you can follow the \c{\\date} command with a format specification in
264 braces. The format specification will be run through the standard C
265 function \i\c{strftime}, so any format acceptable to that function
266 is acceptable here as well. I won't document the format here,
267 because the details vary from computer to computer (although there
268 is a standard core which should be supported everywhere). You should
269 look at your local system's manual for \c{strftime} for details.
270
271 Here's an example which generates the date in the international
272 standard \i{ISO 8601} format:
273
274 \c This document was generated on \date{%Y-%m-%d %H:%M:%S}.
275
276 And here's some sample output from that command:
277
278 \quote{
279 This document was generated on \date{%Y-%m-%d %H:%M:%S}.
280 }
281
282 \S{input-weblink} \c{\\W}: \i{WWW hyperlinks}
283
284 Since one of Halibut's output formats is \i{HTML}, it's obviously
285 useful to be able to provide \I{linking to web sites}links to
286 arbitrary \i{web sites} in a Halibut document.
287
288 This is done using the \i\c{\\W} command. \c{\\W} expects to be
289 followed by \e{two} sets of braces. In the first set of braces you
290 put a \i{URL}; in the second set you put the text which should be a
291 \i{hyperlink}. For example, you might write
292
293 \c Try searching on \W{http://www.google.com/}{Google}.
294
295 and Halibut would generate
296
297 \quote{
298 Try searching on \W{http://www.google.com/}{Google}.
299 }
300
301 Note that hyperlinks, like the non-breaking commands discussed in
302 \k{input-nonbreaking}, are \e{discretionary}: if an output format
303 does not support them then they will just be left out completely. So
304 unless you're \e{only} intending to use the HTML output format, you
305 should avoid storing vital content in the URL part of a \c{\\W}
306 command. The Google example above is reasonable (because most users
307 are likely to be able to find Google for themselves even without a
308 convenient hyperlink leading straight there), but if you really need
309 to direct users to a specific web site, you will need to give the
310 URL in actual displayed text (probably displayed as code as well).
311 However, there's nothing to stop you making it a hyperlink \e{as
312 well} for the convenience of HTML readers.
313
314 The \c{\\W} command supports a piece of extra syntax to make this
315 convenient for you. You can specify \c{\\c} or \c{\\cw} \e{between}
316 the first and second pairs of braces. For example, you might write
317
318 \c Google is at \W{http://www.google.com/}\cw{www.google.com}.
319
320 and Halibut would produce
321
322 \quote{
323 Google is at \W{http://www.google.com/}\cw{www.google.com}.
324 }
325
326 If you want the link text to be an index term as well, you can also
327 specify \c{\\i} or \c{\\ii}; this has to come before \c{\\c} or
328 \c{\\cw} if both are present. (See \k{input-index} for more about
329 indexing.)
330
331 \S{input-unicode} \c{\\u}: Specifying arbitrary \i{Unicode}
332 characters
333
334 Halibut has extensive support for Unicode and character set
335 conversion. You can specify any (reasonably well known) \i{character
336 set} for your input document, and Halibut will convert it all to
337 Unicode as it reads it in. See \k{input-config} for more details of
338 this.
339
340 If you need to specify a Unicode character in your input document
341 which is not supported by the input character set you have chosen,
342 you can use the \i\c{\\u} command to do this. \c{\\u} expects to be
343 followed by a sequence of hex digits; so that \c{\\u0041}, for
344 example, denotes the Unicode character \cw{0x0041}, which is the
345 capital letter A.
346
347 If a Unicode character specified in this way is not supported in a
348 particular \e{output} format, you probably don't just want it to be
349 omitted. So you can put a pair of braces after the \c{\\u} command
350 containing \i{fallback text}. For example, to specify an amount of
351 money in euros, you might write this:
352
353 \c This is likely to cost \u20AC{EUR\_}2500 at least.
354
355 Halibut will render that as a Euro sign \e{if available}, and
356 the text \q{EUR\_} if not. In the output format you're currently
357 reading in, the above input generates this:
358
359 \quote{
360 This is likely to cost \u20AC{EUR\_}2500 at least.
361 }
362
363 If you read it in other formats, you may see different results.
364
365 \S{input-xref} \i\c{\\k} and \i\c{\\K}: \ii{Cross-references} to
366 other sections
367
368 \K{intro-features} mentions that Halibut \I{section numbers}numbers
369 the sections of your document automatically, and can generate
370 cross-references to them on request. \c{\\k} and \c{\\K} are the
371 commands used to generate those cross-references.
372
373 To use one of these commands, you simply follow it with a pair of
374 braces containing the keyword for the section in question. For
375 example, you might write something like
376
377 \c \K{input-xref} expands on \k{intro-features}.
378
379 and Halibut would generate something like
380
381 \quote{
382 \K{input-xref} expands on \k{intro-features}.
383 }
384
385 The \i{keywords} \c{input-xref} and \c{intro-features} are
386 \i{section keywords} used in this manual itself. In your own
387 document, you would have supplied a keyword for each one of your own
388 sections, and you would provide your own keywords for the \c{\\k}
389 command to work on.
390
391 The difference between \c{\\k} and \c{\\K} is simply that \c{\\K}
392 starts the cross-reference text with a capital letter; so you would
393 use \c{\\K} at the beginning of a sentence, and \c{\\k} everywhere
394 else.
395
396 In output formats which permit it, cross-references act as
397 \i{hyperlinks}, so that clicking the mouse on a cross-reference
398 takes you straight to the referenced section.
399
400 The \c{\\k} commands are also used for referring to entries in a
401 \i{bibliography} (see \k{input-biblio} for more about
402 bibliographies), and can also be used for referring to an element of
403 a \i{numbered list} by its number (see \k{input-list-number} for
404 more about numbered lists).
405
406 See \k{input-sections} for more about chapters and sections.
407
408 \S{input-inline-comment} \i\c{\\#}: Inline comments
409
410 If you want to include \i{comments} in your Halibut input, to be seen
411 when reading it directly but not copied into the output text, then
412 you can use \c{\\#} to do this. If you follow \c{\\#} with text in
413 braces, that text will be ignored by Halibut.
414
415 For example, you might write
416
417 \c The typical behaviour of an antelope \#{do I mean
418 \c gazelle?} is...
419
420 and Halibut will simply leave out the aside about gazelles, and will
421 generate nothing but
422
423 \quote{
424 The typical behaviour of an antelope \#{do I mean
425 gazelle?} is...
426 }
427
428 This command will respect nested braces, so you can use it to
429 comment out sections of Halibut markup:
430
431 \c This function is \#{very, \e{very}} important.
432
433 In this example, the comment lasts until the final closing brace (so
434 that the whole \q{very, \e{very}} section is commented out).
435
436 The \c{\\#} command can also be used to produce a whole-paragraph
437 comment; see \k{input-commentpara} for details of that.
438
439 \H{input-para} \ii{Paragraph-level commands}
440
441 This section describes Halibut commands which affect an entire
442 paragraph, or sometimes even \e{more} than one paragraph, at a time.
443
444 \S{input-codepara} \i\c{\\c}: Displaying whole \I{code
445 paragraphs}paragraphs of \i{computer code}
446
447 \K{input-code} describes a mechanism for displaying computer code in
448 the middle of a paragraph, a few words at a time.
449
450 However, this is often not enough. Often, in a computer manual, you
451 really want to show several lines of code in a \i{display
452 paragraph}.
453
454 This is also done using the \c{\\c} command, in a slightly different
455 way. Instead of using it in the middle of a paragraph followed by
456 braces, you can use it at the start of each line of a paragraph. For
457 example, you could write
458
459 \c \c #include <stdio.h>
460 \c \c
461 \c \c int main(int argc, char **argv) {
462 \c \c printf("hello, world\n");
463 \c \c return 0;
464 \c \c }
465
466 and Halibut would generate
467
468 \quote{
469
470 \c #include <stdio.h>
471 \c
472 \c int main(int argc, char **argv) {
473 \c printf("hello, world\n");
474 \c return 0;
475 \c }
476
477 }
478
479 Note that the above paragraph makes use of a backslash and a pair of
480 braces, and does \e{not} need to escape them in the way described in
481 \k{input-basics}. This is because code paragraphs formatted in this
482 way are a special case; the intention is that you can just copy and
483 paste a lump of code out of your program, put \q{\cw{\\c }} at the
484 start of every line, and simply \e{not have to worry} about the
485 details - you don't have to go through the whole block looking for
486 characters to escape.
487
488 Since a backslash inside a code paragraph generates a literal
489 backslash, this means you cannot use any other Halibut formatting
490 commands inside a code paragraph. In particular, if you want to
491 emphasise a particular word in the paragraph, you can't do that
492 using \c{\\e} (\k{input-emph}) in the normal way.
493
494 Therefore, Halibut provides an alternative means of \i{emphasis in
495 code paragraphs}. Each line beginning with \c{\\c} can optionally be
496 followed by a single line beginning with \c{\\e}, indicating the
497 emphasis in that line. The emphasis line contains the letters \c{b}
498 and \c{i} (for \q{bold} and \q{italic}, although some output formats
499 might render \c{i} as underlining instead of italics), positioned to
500 line up under the parts of the text that you want emphasised.
501
502 For example, if you wanted to do \i{syntax highlighting} on the
503 above C code by highlighting the preprocessor command in italic and
504 the keywords in bold, you might do it like this:
505
506 \c \c #include <stdio.h>
507 \c \e iiiiiiiiiiiiiiiiii
508 \c \c
509 \c \c int main(int argc, char **argv) {
510 \c \e bbb bbb bbbb
511 \c \c printf("hello, world\n");
512 \c \c return 0;
513 \c \e bbbbbb
514 \c \c }
515
516 and Halibut would generate:
517
518 \quote{
519
520 \c #include <stdio.h>
521 \e iiiiiiiiiiiiiiiiii
522 \c
523 \c int main(int argc, char **argv) {
524 \e bbb bbb bbbb
525 \c printf("hello, world\n");
526 \c return 0;
527 \e bbbbbb
528 \c }
529
530 }
531
532 Note that not every \c{\\c} line has to be followed by a \c{\\e}
533 line; they're optional.
534
535 Also, note that highlighting within a code paragraph is
536 \e{discretionary}. Not all of Halibut's output formats can support
537 it (plain text, in particular, has no sensible way to do it). Unless
538 you know you are using a restricted range of output formats, you
539 should use highlighting in code paragraphs \e{only} as a visual aid,
540 and not rely on it to convey any vital semantic content.
541
542 \S{input-lists} \c{\\b}, \c{\\n}, \c{\\dt}, \c{\\dd}, \c{\\lcont}:
543 \ii{Lists}
544
545 Halibut supports bulletted lists, numbered lists and description
546 lists.
547
548 \S2{input-list-bullet} \i\c{\\b}: \ii{Bulletted lists}
549
550 To create a bulletted list, you simply prefix each paragraph
551 describing a bullet point with the command \c{\\b}. For example, this
552 Halibut input:
553
554 \c Here's a list:
555 \c
556 \c \b One.
557 \c
558 \c \b Two.
559 \c
560 \c \b Three.
561
562 would produce this Halibut output:
563
564 \quote{
565 Here's a list:
566
567 \b One.
568
569 \b Two.
570
571 \b Three.
572 }
573
574 \S2{input-list-number} \i\c{\\n}: \ii{Numbered lists}
575
576 Numbered lists are just as simple: instead of \c{\\b}, you use
577 \c{\\n}, and Halibut takes care of getting the numbering right for
578 you. For example:
579
580 \c Here's a list:
581 \c
582 \c \n One.
583 \c
584 \c \n Two.
585 \c
586 \c \n Three.
587
588 This produces the Halibut output:
589
590 \quote{
591 Here's a list:
592
593 \n One.
594
595 \n Two.
596
597 \n Three.
598 }
599
600 The disadvantage of having Halibut sort out the list numbering for
601 you is that if you need to refer to a list item by its number, you
602 can't reliably know the number in advance (because if you later add
603 another item at the start of the list, the numbers will all change).
604 To get round this, Halibut allows an optional keyword in braces
605 after the \c{\\n} command. This keyword can then be referenced using
606 the \c{\\k} or \c{\\K} command (see \k{input-xref}) to provide the
607 number of the list item. For example:
608
609 \c Here's a list:
610 \c
611 \c \n One.
612 \c
613 \c \n{this-one} Two.
614 \c
615 \c \n Three.
616 \c
617 \c \n Now go back to step \k{this-one}.
618
619 This produces the following output:
620
621 \quote{
622 Here's a list:
623
624 \n One.
625
626 \n{this-one} Two.
627
628 \n Three.
629
630 \n Now go back to step \k{this-one}.
631 }
632
633 The keyword you supply after \c{\\n} is allowed to contain escaped
634 special characters (\c{\\\\}, \c{\\\{} and \c{\\\}}), but should not
635 contain any other Halibut markup. It is intended to be a word or two
636 of ordinary text. (This also applies to keywords used in other
637 commands, such as \c{\\B} and \c{\\C}).
638
639 \S2{input-list-description} \i\c{\\dt} and \i\c{\\dd}:
640 \ii{Description lists}
641
642 To write a description list, you prefix alternate paragraphs with
643 the \c{\\dt} (\q{described thing}) and \c{\\dd} (description)
644 commands. For example:
645
646 \c \dt Pelican
647 \c
648 \c \dd This is a large bird with a big beak.
649 \c
650 \c \dt Panda
651 \c
652 \c \dd This isn't.
653
654 This produces the following output:
655
656 \quote{
657
658 \dt Pelican
659
660 \dd This is a large bird with a big beak.
661
662 \dt Panda
663
664 \dd This isn't.
665
666 }
667
668 \S2{input-list-continuation} \ii{Continuing list items} into further
669 paragraphs
670
671 All three of the above list types assume that each list item is a
672 single paragraph. For a short, snappy list in which each item is
673 likely to be only one or two words, this is perfectly sufficient;
674 but occasionally you will find you want to include several
675 paragraphs in a single list item, or even to \I{nested lists}nest
676 other types of paragraph (such as code paragraphs, or other lists)
677 inside a list item.
678
679 To do this, you use the \i\c{\\lcont} command. This is a command
680 which can span \e{multiple} paragraphs.
681
682 After the first paragraph of a list item, include the text
683 \c{\\lcont\{}. This indicates that the subsequent paragraph(s) are a
684 \e{continuation} of the list item that has just been seen. So you
685 can include further paragraphs, and eventually include a closing
686 brace \c{\}} to finish the list continuation. After that, you can
687 either continue adding other items to the original list, or stop
688 immediately and return to writing normal paragraphs of text.
689
690 Here's a (long) example.
691
692 \c Here's a list:
693 \c
694 \c \n One. This item is followed by a code paragraph:
695 \c
696 \c \lcont{
697 \c
698 \c \c code
699 \c \c paragraph
700 \c
701 \c }
702 \c
703 \c \n Two. Now when I say \q{two}, I mean:
704 \c
705 \c \lcont{
706 \c
707 \c \n Two, part one.
708 \c
709 \c \n Two, part two.
710 \c
711 \c \n Two, part three.
712 \c
713 \c }
714 \c
715 \c \n Three.
716
717 The output produced by this fragment is:
718
719 \quote{
720
721 Here's a list:
722
723 \n One. This item is followed by a code paragraph:
724
725 \lcont{
726
727 \c code
728 \c paragraph
729
730 }
731
732 \n Two. Now when I say \q{two}, I mean:
733
734 \lcont{
735
736 \n Two, part one.
737
738 \n Two, part two.
739
740 \n Two, part three.
741
742 }
743
744 \n Three.
745
746 }
747
748 This syntax might seem a little bit inconvenient, and perhaps
749 counter-intuitive: you might expect the enclosing braces to have to
750 go around the \e{whole} list item, rather than everything except the
751 first paragraph.
752
753 \c{\\lcont} is a recent addition to the Halibut input language;
754 previously, \e{all} lists were required to use no more than one
755 paragraph per list item. So it's certainly true that this feature
756 looks like an afterthought because it \e{is} an afterthought, and
757 it's possible that if I'd been designing the language from scratch
758 with multiple-paragraph list items in mind, I would have made it
759 look different.
760
761 However, the advantage of doing it this way is that no enclosing
762 braces are required in the \e{common} case: simple lists with only
763 one paragraph per item are really, really easy to write. So I'm not
764 too unhappy with the way it turned out; it obeys the doctrine of
765 making simple things simple, and difficult things possible.
766
767 Note that \c{\\lcont} can only be used on \c{\\b}, \c{\\n} and
768 \c{\\dd} paragraphs; it cannot be used on \c{\\dt}.
769
770 \S{input-rule} \i\c{\\rule}: \ii{Horizontal rules}
771
772 The command \c{\\rule}, appearing on its own as a paragraph, will
773 cause a horizontal rule to be drawn, like this:
774
775 \c Some text.
776 \c
777 \c \rule
778 \c
779 \c Some more text.
780
781 This produces the following output:
782
783 \quote{
784
785 Some text.
786
787 \rule
788
789 Some more text.
790
791 }
792
793 \S{input-quote} \i\c{\\quote}: \ii{Indenting multiple paragraphs} as a
794 long \i{quotation}
795
796 Quoting verbatim text using a code paragraph (\k{input-codepara}) is
797 not always sufficient for your quoting needs. Sometimes you need to
798 quote some normally formatted text, possibly in multiple paragraphs.
799 This is similar to HTML's \i\cw{<BLOCKQUOTE>} command.
800
801 To do this, you can use the \c{\\quote} command. Like \c{\\lcont},
802 this is a command which expects to enclose at least one paragraph
803 and possibly more. Simply write \c{\\quote\{} at the beginning of
804 your quoted section, and \c{\}} at the end, and the paragraphs in
805 between will be formatted to indicate that they are a quotation.
806
807 (This very manual, in fact, uses this feature a lot: all of the
808 examples of Halibut input followed by Halibut output have the output
809 quoted using \c{\\quote}.)
810
811 Here's some example Halibut input:
812
813 \c In \q{Through the Looking Glass}, Lewis Carroll wrote:
814 \c
815 \c \quote{
816 \c
817 \c \q{The question is,} said Alice, \q{whether you \e{can} make
818 \c words mean so many different things.}
819 \c
820 \c \q{The question is,} said Humpty Dumpty, \q{who is to be
821 \c master - that's all.}
822 \c
823 \c }
824 \c
825 \c So now you know.
826
827 The output generated by this is:
828
829 \quote{
830
831 In \q{Through the Looking Glass}, Lewis Carroll wrote:
832
833 \quote{
834
835 \q{The question is,} said Alice, \q{whether you \e{can} make
836 words mean so many different things.}
837
838 \q{The question is,} said Humpty Dumpty, \q{who is to be
839 master - that's all.}
840
841 }
842
843 So now you know.
844
845 }
846
847 \S{input-sections} \i\c{\\C}, \i\c{\\H}, \i\c{\\S}, \i\c{\\A},
848 \i\c{\\U}: Chapter and \i{section headings}
849
850 \K{intro-features} mentions that Halibut \I{section
851 numbering}numbers the sections of your document automatically, and
852 can generate cross-references to them on request; \k{input-xref}
853 describes the \c{\\k} and \c{\\K} commands used to generate the
854 cross-references. This section describes the commands used to set up
855 the sections in the first place.
856
857 A paragraph beginning with the \c{\\C} command defines a chapter
858 heading. The \c{\\C} command expects to be followed by a pair of
859 braces containing a keyword for the chapter; this keyword can then
860 be used with the \c{\\k} and \c{\\K} commands to generate
861 cross-references to the chapter. After the closing brace, the rest
862 of the paragraph is used as the displayed chapter title. So the
863 heading for the current chapter of this manual, for example, is
864 written as
865
866 \c \C{input} Halibut input format
867
868 and this allows me to use the command \c{\\k\{input\}} to generate a
869 cross-reference to that chapter somewhere else.
870
871 The \I{keyword syntax}keyword you supply after one of these commands
872 is allowed to contain escaped special characters (\c{\\\\}, \c{\\\{}
873 and \c{\\\}}), but should not contain any other Halibut markup. It
874 is intended to be a word or two of ordinary text. (This also applies
875 to keywords used in other commands, such as \c{\\B} and \c{\\n}).
876
877 The next level down from \c{\\C} is \c{\\H}, for \q{heading}. This
878 is used in exactly the same way as \c{\\C}, but section headings
879 defined with \c{\\H} are considered to be part of a containing
880 chapter, and will be numbered with a pair of numbers. After \c{\\H}
881 comes \c{\\S}, and if necessary you can then move on to \c{\\S2},
882 \c{\\S3} and so on.
883
884 For example, here's a sequence of heading commands. Normally these
885 commands would be separated at least by blank lines (because each is
886 a separate paragraph), and probably also by body text; but for the
887 sake of brevity, both of those have been left out in this example.
888
889 \c \C{foo} Using Foo
890 \c \H{foo-intro} Introduction to Foo
891 \c \H{foo-running} Running the Foo program
892 \c \S{foo-inter} Running Foo interactively
893 \c \S{foo-batch} Running Foo in batch mode
894 \c \H{foo-trouble} Troubleshooting Foo
895 \c \C{bar} Using Bar instead of Foo
896
897 This would define two chapters with keywords \c{foo} and \c{bar},
898 which would end up being called Chapter 1 and Chapter 2 (unless
899 there were other chapters before them). The sections \c{foo-intro},
900 \c{foo-running} and \c{foo-trouble} would be referred to as Section
901 1.1, Section 1.2 and Section 1.3 respectively; the subsections
902 \c{foo-inter} and \c{foo-batch} would be Section 1.2.1 and Section
903 1.2.2. If there had been a \i\c{\\S2} command within one of those,
904 it would have been something like Section 1.2.1.1.
905
906 If you don't like the switch from \c{\\H} to \c{\\S}, you can use
907 \c{\\S1} as a synonym for \c{\\S} and \c{\\S0} as a synonym for
908 \c{\\H}. Chapters are still designated with \c{\\C}, because they
909 need to be distinguished from other types of chapter such as
910 appendices. (Personally, I like the \c{\\C},\c{\\H},\c{\\S} notation
911 because it encourages me to think of my document as a hard disk :-)
912
913 You can define an \i{appendix} by using \c{\\A} in place of \c{\\C}.
914 This is no different from a chapter except that it's given a letter
915 instead of a number, and cross-references to it will say \q{Appendix
916 A} instead of \q{Chapter 9}. Subsections of an appendix will be
917 numbered \q{A.1}, \q{A.2}, \q{A.2.1} and so on.
918
919 \I{renaming sections}If you want a particular section to be referred
920 to as something other than a \q{chapter}, \q{section} or
921 \q{appendix}, you can include a second pair of braces after the
922 keyword. For example, if you're \i{writing a FAQ} chapter and you
923 want cross-references between questions to refer to \q{question
924 1.2.3} instead of \q{section 1.2.3}, you can write each section
925 heading as
926
927 \c \S{question-about-fish}{Question} What about fish?
928
929 (The word \q{Question} should be given with an initial capital
930 letter. Halibut will lower-case it when you refer to it using
931 \c{\\k}, and will leave it alone if you use \c{\\K}.)
932
933 This technique allows you to change the designation of
934 \e{particular} sections. To make an overall change in what \e{every}
935 section is called, see \k{input-config}.
936
937 Finally, the \c{\\U} command defines an \I{unnumbered
938 chapter}\e{unnumbered} chapter. These sometimes occur in books, for
939 specialist purposes such as \q{Bibliography} or
940 \q{Acknowledgements}. \c{\\U} does not expect a keyword argument,
941 because there is no sensible way to generate an automatic
942 cross-reference to such a chapter anyway.
943
944 \S{input-blurb} \c{\\copyright}, \c{\\title}, \c{\\versionid}:
945 Miscellaneous \i{blurb commands}
946
947 These three commands define a variety of \i{special paragraph
948 types}. They are all used in the same way: you put the command at
949 the start of a paragraph, and then just follow it with normal text,
950 like this:
951
952 \c \title My First Manual
953
954 The three special paragraph types are:
955
956 \dt \i\cw{\\title}
957
958 \dd This defines the overall title of the entire document. This
959 title is treated specially in some output formats (for example, it's
960 used in a \cw{<title>} tag in the HTML output), so it needs a
961 special paragraph type to point it out.
962
963 \dt \i\cw{\\copyright}
964
965 \dd This command indicates that the paragraph attached to it
966 contains a \i{copyright statement} for the document. This text is
967 displayed inline where it appears, exactly like a normal paragraph;
968 but in some output formats it is given additional special treatment.
969 For example, Windows Help files have a standard slot in which to
970 store a copyright notice, so that other software can display it
971 prominently.
972
973 \dt \i\cw{\\versionid}
974
975 \dd This command indicates that the paragraph contains a version
976 identifier, such as those produced by CVS (of the form \c{$\#{hope this
977 defuses CVS}Id: thingy.but,v 1.6 2004/01/01 16:47:48 simon Exp $}).
978 This text will be tucked away somewhere unobtrusive, so that anyone
979 wanting to (for example) report errors to the document's author can
980 pick out the \i{version IDs} and send them as part of the report, so
981 that the author can tell at a glance which revision of the document
982 is being discussed.
983
984 \S{input-commentpara} \i\c{\\#}: Whole-paragraph \i{comments}
985
986 \K{input-inline-comment} describes the use of the \c{\\#} command to
987 put a short comment in the middle of a paragraph.
988
989 If you need to use a \e{long} comment, Halibut also allows you to
990 use \c{\\#} without braces, to indicate that an entire paragraph is
991 a comment, like this:
992
993 \c Here's a (fairly short) paragraph which will be displayed.
994 \c
995 \c \# Here's a comment paragraph which will not be displayed, no
996 \c matter how long it goes on. All I needed to indicate this was
997 \c the single \# at the start of the paragraph; I don't need one
998 \c on every line or anything like that.
999 \c
1000 \c Here's another displayed paragraph.
1001
1002 When run through Halibut, this produces the following output:
1003
1004 \quote{
1005
1006 Here's a (fairly short) paragraph which will be displayed.
1007
1008 \# Here's a comment paragraph which will not be displayed, no
1009 matter how long it goes on. All I needed to indicate this was
1010 the single \# at the start of the paragraph; I don't need one
1011 on every line or anything like that.
1012
1013 Here's another displayed paragraph.
1014
1015 }
1016
1017 \H{input-biblio} Creating a \i{bibliography}
1018
1019 If you need your document to refer to other documents (research
1020 papers, books, websites, whatever), you might find a bibliography
1021 feature useful.
1022
1023 You can define a bibliography entry using the \i\c{\\B} command. This
1024 looks very like the \c{\\C} command and friends: it expects a
1025 keyword in braces, followed by some text describing the document
1026 being referred to. For example:
1027
1028 \c \B{freds-book} \q{The Taming Of The Mongoose}, by Fred Bloggs.
1029 \c Published by Paperjam & Notoner, 1993.
1030
1031 If this bibliography entry appears in the finished document, it will
1032 look something like this:
1033
1034 \quote{
1035
1036 \B{freds-book} \q{The Taming Of The Mongoose}, by Fred Bloggs.
1037 Published by Paperjam & Notoner, 1993.
1038
1039 }
1040
1041 I say \q{if} above because not all bibliography entries defined
1042 using the \c{\\B} command will necessarily appear in the finished
1043 document. They only appear if they are \I{citation}referred to by a
1044 \i\c{\\k} command (see \k{input-xref}). This allows you to (for
1045 example) maintain a single Halibut source file with a centralised
1046 database of \e{all} the references you have ever needed in any of
1047 your writings, include that file in every document you feed to
1048 Halibut, and have it only produce the bibliography entries you
1049 actually need for each particular document. (In fact, you might even
1050 want this centralised source file to be created automatically by,
1051 say, a Perl script from BibTeX input, so that you can share the same
1052 bibliography with users of other formatting software.)
1053
1054 If you really want a bibliography entry to appear in the document
1055 even though no text explicitly refers to it, you can do that using
1056 the \i\c{\\nocite} command:
1057
1058 \c \nocite{freds-book}
1059
1060 Normally, each bibliography entry will be referred to (in citations
1061 and in the bibliography itself) by a simple reference number, such
1062 as \k{freds-book}. If you would rather use an alternative reference
1063 notation, such as [Fred1993], you can use the \i\c{\\BR}
1064 (\q{Bibliography Rewrite}) command to specify your own reference
1065 format for a particular book:
1066
1067 \c \BR{freds-book} [Fred1993]
1068
1069 The keyword you supply after \c{\\B} is allowed to contain escaped
1070 special characters (\c{\\\\}, \c{\\\{} and \c{\\\}}), but should not
1071 contain any other Halibut markup. It is intended to be a word or two
1072 of ordinary text. (This also applies to keywords used in other
1073 commands, such as \c{\\n} and \c{\\C}).
1074
1075 \H{input-index} Creating an \i{index}
1076
1077 Halibut contains a comprehensive indexing mechanism, which attempts
1078 to be reasonably easy to use in the common case in spite of its
1079 power.
1080
1081 \S{input-index-simple} Simple indexing
1082
1083 In normal usage, you should be able to add index terms to your
1084 document simply by using the \i\c{\\i} command to wrap one or two
1085 words at a time. For example, if you write
1086
1087 \c The \i{hippopotamus} is a particularly large animal.
1088
1089 then the index will contain an entry under \q{hippopotamus},
1090 pointing to that sentence (or as close to that sentence as the
1091 output format sensibly permits).
1092
1093 You can wrap more than one word in \c{\\i} as well:
1094
1095 \c We recommend using a \i{torque wrench} for this job.
1096
1097 \S{input-index-special} Special cases of indexing
1098
1099 If you need to index a computer-related term, you can use the
1100 special case \i\c{\\i\\c} (or \i\c{\\i\\cw} if you prefer):
1101
1102 \c The \i\c{grep} command is what you want here.
1103
1104 This will cause the word \q{grep} to appear in code style, as if the
1105 \c{\\i} were not present and the input just said \c{\\c\{grep\}};
1106 the word will also appear in code style in the actual index.
1107
1108 If you want to simultaneously index and emphasise a word, there's
1109 another special case \i\c{\\i\\e}:
1110
1111 \c This is what we call a \i\e{paper jam}.
1112
1113 This will cause the words \q{paper jam} to be emphasised in the
1114 document, but (unlike the behaviour of \c{\\i\\c}) they will \e{not}
1115 be emphasised in the index. This different behaviour is based on an
1116 expectation that most people indexing a word of computer code will
1117 still want it to look like code in the index, whereas most people
1118 indexing an emphasised word will \e{not} want it emphasised in the
1119 index.
1120
1121 (In fact, \e{no} emphasis in the text inside \c{\\i} will be
1122 preserved in the index. If you really want a term in the index to
1123 appear emphasised, you must say so explicitly using \c{\\IM}; see
1124 \k{input-index-rewrite}.)
1125
1126 Sometimes you might want to index a term which is not explicitly
1127 mentioned, but which is highly relevant to the text and you think
1128 that somebody looking up that term in the index might find it useful
1129 to be directed here. To do this you can use the \i\c{\\I} command,
1130 to create an \i{\e{invisible} index tag}:
1131
1132 \c If your printer runs out of toner, \I{replacing toner
1133 \c cartridge}here is what to do:
1134
1135 This input will produce only the output \q{If your printer runs out
1136 of toner, here is what to do}; but an index entry will show up under
1137 \q{replacing toner cartridge}, so that if a user thinks the obvious
1138 place to start in the index is under R for \q{replacing}, they will
1139 find their way here with a minimum of fuss.
1140
1141 (It's worth noting that there is no functional difference between
1142 \c{\\i\{foo\}} and \c{\\I\{foo\}foo}. The simple \c{\\i} case is
1143 only a shorthand for the latter.)
1144
1145 Finally, if you want to index a word at the start of a sentence, you
1146 might very well not want it to show up with a capital letter in the
1147 index. For this, Halibut provides the \i\c{\\ii} command, for
1148 \q{index (case-)insensitively}. You use it like this:
1149
1150 \c \ii{Lions} are at the top of the food chain in this area.
1151
1152 This is equivalent to \c{\\I\{lions\}Lions}; in other words, the
1153 text will say \q{Lions}, but it will show up in the index as
1154 \q{lions}. The text inside \c{\\ii} is converted entirely into lower
1155 case before being added to the index data.
1156
1157 \S{input-index-rewrite} \ii{Fine-tuning the index}
1158
1159 Halibut's index mechanism as described so far still has a few
1160 problems left:
1161
1162 \b In a reasonably large index, it's often difficult to predict
1163 \I{replicating index terms}which of several words a user will think
1164 of first when trying to look something up. For example, if they want
1165 to know how to replace a toner cartridge, they might look up
1166 \q{replacing} or they might look up \q{toner cartridge}. You
1167 probably don't really want to have to try to figure out which of
1168 those is more likely; instead, what you'd like is to be able to
1169 effortlessly index the same set of document locations under \e{both}
1170 terms.
1171
1172 \b Also, you may find you've indexed the same concept under multiple
1173 different \I{merging index terms}index terms; for example, there
1174 might be several instances of \c{\\i\{frog\}} and several of
1175 \c{\\i\{frogs\}}, so that you'd end up with two separate index
1176 entries for what really ought to be the same concept.
1177
1178 \b You might well not want the word \q{\cw{grep}} to appear in the
1179 index without explanation; you might prefer it to say something more
1180 \I{rewriting index terms}verbose such as \q{\cw{grep} command}, so
1181 that a user encountering it in the index has some idea of what it is
1182 \e{without} having to follow up the reference. However, you
1183 certainly don't want to have to write \c{\\I\{\\cw\{grep\}
1184 command\}\\c\{grep\}} every time you want to add an index term for
1185 this! You wanted to write \c{\\i\\c\{grep\}} as shown in the
1186 previous section, and tidy it all up afterwards.
1187
1188 All of these problems can be cleaned up by the \i\c{\\IM} (for
1189 \q{Index Modification}) command. \c{\\IM} expects to be followed by
1190 one or more pairs of braces containing index terms as seen in the
1191 document, and then a piece of text (not in braces) describing how it
1192 should be shown in the index.
1193
1194 So to rewrite the \c{grep} example above, you might do this:
1195
1196 \c \IM{grep} \cw{grep} command
1197
1198 This will arrange that the set of places in the document where you
1199 asked Halibut to index \q{\cw{grep}} will be listed under
1200 \q{\cw{grep} command} rather than just under \q{\cw{grep}}.
1201
1202 You can specify more than one index term in a \c{\\IM} command; so
1203 to merge the index terms \q{frog} and \q{frogs} into a single term,
1204 you might do this:
1205
1206 \c \IM{frog}{frogs} frog
1207
1208 This will arrange that the single index entry \q{frog} will list
1209 \e{all} the places in the document where you asked Halibut to index
1210 either \q{frog} or \q{frogs}.
1211
1212 You can use multiple \c{\\IM} commands to replicate the same set of
1213 document locations in more than one index entry. For example:
1214
1215 \c \IM{replacing toner cartridge} replacing toner cartridge
1216 \c \IM{replacing toner cartridge} toner cartridge, replacing
1217
1218 This will arrange that every place in the document where you have
1219 indexed \q{replacing toner cartridge} will be listed both there
1220 \e{and} under \q{toner cartridge, replacing}, so that no matter
1221 whether the user looks under R or under T they will stil find their
1222 way to the same parts of the document.
1223
1224 In this example, note that although the first \c{\\IM} command
1225 \e{looks} as if it's a tautology, it is still necessary, because
1226 otherwise those document locations will \e{only} be indexed under
1227 \q{toner cartridge, replacing}. If you have \e{no} explicit \c{\\IM}
1228 commands for a particular index term, then Halibut will assume a
1229 default one (typically \c{\\IM\{foo\}\_foo}, although it might be
1230 \c{\\IM\{foo\}\_\\c\{foo\}} if you originally indexed using
1231 \c{\\i\\c}); but as soon as you specify an explicit \c{\\IM},
1232 Halibut discards its default implicit one, and you must then specify
1233 that one explicitly as well if you wanted to keep it.
1234
1235 \H{input-config} \ii{Configuring} Halibut
1236
1237 Halibut uses the \i\c{\\cfg} command to allow you to configure various
1238 aspects of its functionality.
1239
1240 The \c{\\cfg} command expects to be followed by at least one pair of
1241 braces, and usually more after that. The first pair of braces
1242 contains a keyword indicating what aspect of Halibut you want to
1243 configure, and the meaning of the one(s) after that depends on the
1244 first keyword.
1245
1246 The current list of configuration keywords in the main Halibut code
1247 is quite small. Here it is in full:
1248
1249 \dt \I\cw{\\cfg\{chapter\}}\cw{\\cfg\{chapter\}\{}\e{new chapter name}\cw{\}}
1250
1251 \dd This tells Halibut that you don't want to call a chapter a
1252 \I{renaming sections}\I{configuring heading display}chapter any
1253 more. For example, if you give the command
1254 \cw{\\cfg\{chapter\}\{Book\}}, then any chapter defined with the
1255 \c{\\C} command will be labelled \q{Book} rather than \q{Chapter},
1256 both in the section headings and in cross-references. This is
1257 probably most useful if your document is not written in English.
1258
1259 \lcont{
1260
1261 Your replacement name should be given with a capital letter. Halibut
1262 will leave it alone if it appears at the start of a sentence (in a
1263 chapter title, or when \c{\\K} is used), and will lower-case it
1264 otherwise (when \c{\\k} is used).
1265
1266 }
1267
1268 \dt \I\cw{\\cfg\{section\}}\cw{\\cfg\{section\}\{}\e{new section name}\cw{\}}
1269
1270 \dd Exactly like \c{chapter}, but changes the name given to
1271 subsections of a chapter.
1272
1273 \dt \I\cw{\\cfg\{appendix\}}\cw{\\cfg\{appendix\}\{}\e{new appendix name}\cw{\}}
1274
1275 \dd Exactly like \c{chapter}, but changes the name given to
1276 appendices.
1277
1278 \dt \I\cw{\\cfg\{input-charset\}}\cw{\\cfg\{input-charset\}\{}\e{character set name}\cw{\}}
1279
1280 \dd This tells Halibut what \i{character set} you are writing your
1281 input file in. By default, it is assumed to be US-ASCII (meaning
1282 \e{only} plain \i{ASCII}, with no accented characters at all).
1283
1284 \lcont{
1285
1286 You can specify any well-known name for any supported character set.
1287 For example, \c{iso-8859-1}, \c{iso8859-1} and \c{iso_8859-1} are
1288 all recognised, \c{GB2312} and \c{EUC-CN} both work, and so on.
1289
1290 This directive takes effect immediately after the \c{\\cfg} command.
1291 All text after that in the file is expected to be in the new
1292 character set. You can even change character set several times
1293 within a file if you really want to.
1294
1295 When Halibut reads the input file, everything you type will be
1296 converted into \i{Unicode} from the character set you specify here,
1297 will be processed as Unicode by Halibut internally, and will be
1298 written to the various output formats in whatever character sets
1299 they deem appropriate.
1300
1301 }
1302
1303 In addition to these configuration commands, there are also
1304 configuration commands provided by each individual output format.
1305 These configuration commands are discussed along with each output
1306 format, in \k{output}.
1307
1308 The \i{default settings} for the above options are:
1309
1310 \c \cfg{chapter}{Chapter}
1311 \c \cfg{section}{Section}
1312 \c \cfg{appendix}{Appendix}
1313 \c \cfg{input-charset}{ASCII}
1314
1315 \H{input-macro} Defining \i{macros}
1316
1317 If there's a complicated piece of Halibut source which you think
1318 you're going to use a lot, you can define your own Halibut command
1319 to produce that piece of source.
1320
1321 In \k{input-unicode}, there is a sample piece of code which prints a
1322 Euro sign, or replaces it with \q{EUR} if the Euro sign is not
1323 available:
1324
1325 \c This is likely to cost \u20AC{EUR\_}2500 at least.
1326
1327 If your document quotes a \e{lot} of prices in Euros, you might not
1328 want to spend all your time typing that out. So you could define a
1329 macro, using the \i\c{\\define} command:
1330
1331 \c \define{eur} \u20AC{EUR\_}
1332
1333 Your macro names may include Roman alphabetic characters
1334 (\c{a}-\c{z}, \c{A}-\c{Z}) and ordinary Arabic numerals
1335 (\c{0}-\c{9}), but nothing else. (This is general \I{command
1336 syntax}syntax for all of Halibut's commands, except for a few
1337 special ones such as \c{\\_} and \c{\\-} which consist of a single
1338 punctuation character only.)
1339
1340 Then you can just write ...
1341
1342 \c This is likely to cost \eur 2500 at least.
1343
1344 ... except that that's not terribly good, because you end up with a
1345 space between the Euro sign and the number. (If you had written
1346 \c{\\eur2500}, Halibut would have tried to interpret it as a macro
1347 command called \c{eur2500}, which you didn't define.) In this case,
1348 it's helpful to use the special \i\c{\\.} command, which is defined
1349 to \I{NOP}\I{doing nothing}do nothing at all! But it acts as a
1350 separator between your macro and the next character:
1351
1352 \c This is likely to cost \eur\.2500 at least.
1353
1354 This way, you will see no space between the Euro sign and the number
1355 (although, of course, there will be space between \q{EUR} and the
1356 number if the Euro sign is not available, because the macro
1357 definition specifically asked for it).