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