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