|
|
1.1 root 1: Info file ../info/texinfo, produced by Makeinfo, -*- Text -*- from
2: input file texinfo.texinfo.
3:
4: This file documents Texinfo, a documentation system that uses a
5: single source file to produce both on-line help and a printed manual.
6:
7: This is edition 1.1 of the Texinfo documentation, and is for the
8: Texinfo that is distributed as part of Version 18 of GNU Emacs.
9:
10: Copyright (C) 1988 Free Software Foundation, Inc.
11:
12: Permission is granted to make and distribute verbatim copies of this
13: manual provided the copyright notice and this permission notice are
14: preserved on all copies.
15:
16: Permission is granted to copy and distribute modified versions of
17: this manual under the conditions for verbatim copying, provided that
18: the entire resulting derived work is distributed under the terms of a
19: permission notice identical to this one.
20:
21: Permission is granted to copy and distribute translations of this
22: manual into another language, under the above conditions for modified
23: versions, except that this permission notice may be stated in a
24: translation approved by the Foundation.
25:
26:
27:
28: File: texinfo, Node: Breaks Blank-Lines Groups, Prev: Refilling & Noindent, Up: Formatting Paragraphs
29:
30: Breaks, Blank Lines and Groups
31: ==============================
32:
33: Texinfo has several commands for making blank lines, for forcing
34: paragraph and page breaks in the printed manual and for preventing
35: text from running from one page to the next.
36:
37: `@*'
38: Force a line break in the printed manual. This command has no
39: effect on the Info file.
40:
41: `@sp'
42: Generate blank lines in both the printed manual and in the Info
43: file.
44:
45: `@br'
46: Force a paragraph break in the printed manual. This command has
47: no effect on the Info file.
48:
49: `@w'
50: Prevent text from being split across two lines in the printed
51: manual. This command has no effect on the Info file.
52:
53: `@page'
54: Start a new page in the printed manual. This command has no
55: effect on the Info file.
56:
57: `@group'
58: Hold text together that must appear on one printed page. This
59: command has no effect on the Info file.
60:
61: `@need'
62: Start a new printed page if required space not on this one.
63: This command has no effect on the Info file.
64:
65: * Menu:
66:
67: * Line Breaks:: Force a line break in the printed manual.
68: * Sp:: Generate blank lines.
69: * Br:: Force a paragraph break in the printed manual.
70: * W:: Prevent a paragraph break in the printed manual.
71: * Page:: Start a new page in the printed manual.
72: * Group:: Hold text together that must appear on one printed page.
73: * Need:: Start a new printed page if required space not on this one.
74:
75:
76:
77: File: texinfo, Node: Line Breaks, Next: Sp, Prev: Breaks Blank-Lines Groups, Up: Breaks Blank-Lines Groups
78:
79: @*
80: --
81:
82: `@*' forces a line break in the printed manual. It has no effect on
83: the Info file output, where line breaks follow those in the source
84: file. If you want a line break at a certain spot in both forms of
85: output, break the line there in the source file and put `@*' at the
86: end of the line.
87:
88:
89:
90: File: texinfo, Node: Sp, Next: Br, Prev: Line Breaks, Up: Breaks Blank-Lines Groups
91:
92: @sp
93: ---
94:
95: A line containing `@sp N' generates N blank lines of space in either
96: the printed manual or the Info file. For example,
97:
98: @sp 2
99:
100: generates two blank lines.
101:
102:
103:
104: File: texinfo, Node: Br, Next: W, Prev: Sp, Up: Breaks Blank-Lines Groups
105:
106: @br
107: ---
108:
109: In a printed manual, a line containing `@br' forces a paragraph
110: break; in the Info file output, it does nothing (not even a blank
111: line results from it).
112:
113:
114:
115: File: texinfo, Node: W, Next: Page, Prev: Br, Up: Breaks Blank-Lines Groups
116:
117: @w
118: --
119:
120: In a printed manual, `@w{TEXT}' outputs TEXT and prohibits line
121: breaks within TEXT. `@w' has no effect on the Info file output; it
122: is the same as would result from just TEXT.
123:
124:
125:
126: File: texinfo, Node: Page, Next: Group, Prev: W, Up: Breaks Blank-Lines Groups
127:
128: @page
129: -----
130:
131: A line containing `@page' starts a new page in a printed manual. The
132: line has no effect on Info files since they are not paginated.
133:
134:
135:
136: File: texinfo, Node: Group, Next: Need, Prev: Page, Up: Breaks Blank-Lines Groups
137:
138: @group
139: ------
140:
141: A line containing `@group' begins an unsplittable vertical group,
142: which must appear entirely on one page. The group is terminated by a
143: line containing `@end group'. These two lines produce no output of
144: their own, and in the Info file output they have no effect at all.
145:
146: If you forget to end a group, you may get strange and unfathomable
147: error messages when you run TeX. This is because TeX keeps trying to
148: put the rest of the Texinfo file into the group and error messages do
149: not start to get generated until TeX has gone a long way. It's a
150: good rule of thumb to look for a missing `@end group' if you get
151: incomprehensible error messages in TeX.
152:
153:
154:
155: File: texinfo, Node: Need, Prev: Group, Up: Breaks Blank-Lines Groups
156:
157: @need
158: -----
159:
160: A line containing `@need N' starts a new page in a printed manual if
161: fewer than N mils (thousandths of an inch) remain on the current
162: page. The line has no effect on Info files since they are not
163: paginated.
164:
165:
166:
167: File: texinfo, Node: Marking Text, Next: Conditionals, Prev: Formatting Paragraphs, Up: Top
168:
169: Marking Text Within a Paragraph
170: *******************************
171:
172: In Texinfo, text within a paragraph can be marked in a variety of ways.
173: The most important way is to specify whether a word or phrase is a
174: definition, a metasyntactic variable, a literal example of a program
175: or what not.
176:
177: In addition, there are special commands for inserting single
178: characters that have special meaning in Texinfo, such as braces, and
179: for inserting symbols with special handling, such as dots and
180: bullets. Finally, there are ways to emphasize words.
181:
182: * Menu:
183:
184: * Specifying:: Specifying commands, files and so on.
185: * Braces Atsigns Periods:: Inserting braces, `@' and periods.
186: * Dots Bullets Tex:: Inserting dots, bullets and the TeX logo
187: * Emphasis:: Emphasizing text.
188:
189:
190:
191: File: texinfo, Node: Specifying, Next: Braces Atsigns Periods, Up: Marking Text
192:
193: Specifying Definitions, Files, Commands etc.
194: ============================================
195:
196: Texinfo has a variety of commands for specifying just what kind of
197: object a piece of text refers to. Metasyntactic variables, for
198: example, are marked by one @-command and code by another. Texinfo
199: uses this information to determine how to highlight the text. Since
200: the pieces of text are labelled by commands that tell what kind of
201: object they are, it is easy to change the way Texinfo formats and
202: typesets such text. For example, code is usually illustrated in a
203: typewriter font, but it would be easy to change the way Texinfo
204: highlights code to use another font. This change would not effect
205: how metasyntatic variables are highlighted. If straight typesetting
206: commands were used in the body of the file, you would have to check
207: every single occurrence to make sure that you were changing code and
208: not something else that should not be changed.
209:
210: In addition, the commands can be used to generate useful information
211: from the file, such as lists of functions or file names. It is
212: possible, for example, to write code in Emacs Lisp (or a keyboard
213: macro) to insert an index entry after every paragraph that contains
214: the text labelled by a specified command. You could do this to
215: construct an index of functions if you had not already made the
216: entries.
217:
218: The commands serve a variety of purposes:
219:
220: `@code'
221: Indicates text that is a literal example of a piece of a program.
222:
223: `@samp'
224: Indicates text that is a literal example of a sequence of
225: characters.
226:
227: `@file'
228: Indicates the name of a file.
229:
230: `@kbd'
231: Indicates the names of keys on the keyboard or characters you
232: type.
233:
234: `@key'
235: Used for the conventional name for a key on a keyboard.
236:
237: `@ctrl'
238: Indicates an ASCII control character.
239:
240: `@var'
241: Indicates a metasyntactic variable.
242:
243: `@dfn'
244: Indicates the introductory or defining use of a term.
245:
246: `@cite'
247: Indicates the name of a book.
248:
249: * Menu:
250:
251: * Code:: A literal example of a piece of a program.
252: * Samp:: A literal example of a sequence of characters.
253: * File:: The name of a file.
254: * Kbd:: The names of keys or else characters you type.
255: * Key:: The conventional name for a key on a keyboard.
256: * Ctrl:: Indicates the ASCII control character.
257: * Var:: A variable.
258: * Dfn:: The introductory or defining use of a term.
259: * Cite:: The name of a book.
260:
261:
262:
263: File: texinfo, Node: Code, Next: Samp, Up: Specifying
264:
265: @code
266: -----
267:
268: `@code' is used to indicate text that is a piece of a program which
269: consists of entire syntactic tokens. The text follows, enclosed in
270: braces.
271:
272: For example, `@code' is used for an expression in a program, the name
273: of a variable or function used in a program, or a keyword. `@code'
274: is not used for a piece of a token, such as when speaking about the
275: characters used in a token; for example, when you are explaining what
276: letters or printable symbols can be used in the names of functions.
277: It is also not used for input to programs unless the input is written
278: in a language that is like a programming language. For example, it
279: is not used for the single character commands of GNU Emacs although
280: it is used for the names of Emacs Lisp functions that the keyboard
281: commands invoke.
282:
283: You should also `@code' for command names in command languages that
284: resemble programming languages, such as Texinfo or the shell. Note,
285: however, that `@code' is not used for options such as `-c' when such
286: options stand alone. There is some argument as to whether an entire
287: shell command incorporating an option should be written using `@code'
288: or `@samp'.
289:
290: It is an error to alter the case of a word inside an `@code' command.
291: This is a particularly insidious error if the language being
292: documented is case sensitive. If the command is `printf', then
293: `Printf' is a misspelling. If you do not like having such a command
294: with lower case at the beginning of a sentence, you may wish to
295: rearrange the sentence.
296:
297: In the printed manual, `@code' puts the argument in bold face. In
298: the Info file, it uses `...' quotation. For example:
299:
300: To compare two files, showing text inserted or removed, use @code{diff}.
301:
302: produces
303:
304: To compare two files, showing text inserted or removed, use
305: `diff'.
306:
307:
308:
309: File: texinfo, Node: Samp, Next: File, Prev: Code, Up: Specifying
310:
311: @samp
312: -----
313:
314: `@samp' is used to indicate text that is a literal example of a
315: sequence of characters in a file, string, pattern, etc. The text
316: follows, enclosed in braces. The argument appears within `...'
317: quotation in both the Info file and the printed manual; in addition,
318: it is printed in a fixed-width font.
319:
320: To match @samp{foo} at the end of the line, use the regexp @samp{foo$}.
321:
322: produces
323:
324: To match `foo' at the end of the line, use the regexp `foo$'.
325:
326: Any time you are referring to single characters, you should use
327: `@samp' unless `@kbd' is more appropriate. Basically, `@samp' is a
328: catchall for whatever is not covered by `@code', `@file', `@kbd'.
329:
330: Punctuation marks that are part of the English text that surrounds
331: the strings you are specifying are *never* included within the
332: braces. In the following sentence, for example, the commas and
333: period are outside of the braces:
334:
335: A symbol name ends in @samp{a}, @samp{b}, or @samp{c}.
336:
337:
338:
339: File: texinfo, Node: File, Next: Kbd, Prev: Samp, Up: Specifying
340:
341: @file
342: -----
343:
344: `@file' is used to indicate text that is the name of a file or
345: directory. Currently, it is equivalent to `@samp' in its effects on
346: the output. For example,
347:
348: The @file{.el} files are in
349: the @file{/gnu/emacs/lisp} directory.
350:
351: produces
352:
353: The `.el' files are in the `/gnu/emacs/lisp' directory.
354:
355:
356:
357: File: texinfo, Node: Kbd, Next: Key, Prev: File, Up: Specifying
358:
359: @kbd
360: ----
361:
362: `@kbd' is used much like `@code'. The difference is that `@kbd' is
363: for names of keys on the keyboard, or of characters you can type.
364: For example, to refer to the command `M-a', you would use
365:
366: @kbd{M-a}
367:
368: and to refer to `M-x shell', you would use
369:
370: @kbd{M-x shell}
371:
372: The `@kbd' command has the same effect as `@code' in Info, but may
373: produce a different font in a printed manual.
374:
375: You can embed another @-command inside the braces of a `@kbd'
376: command. This is the way to describe a command that would be
377: described more verbosely as "press an `r' and then press the RET key":
378:
379: @kbd{r @key{RET}}
380:
381: This produces: `r RET'
382:
383: You also use the `@kbd' command if you are spelling out the letters
384: you type; for example:
385:
386: To give the @code{logout} command,
387: type the characters @kbd{l o g o u t @key{RET}}.
388:
389: This produces
390:
391: To give the `logout' command, type the characters `l o g o u t
392: RET'.
393:
394:
395:
396: File: texinfo, Node: Key, Next: Ctrl, Prev: Kbd, Up: Specifying
397:
398: @key
399: ----
400:
401: `@key' is used for the conventional name for a key on a keyboard, as in
402:
403: @key{RET}
404:
405: Often, `@key' is used within the argument of a `@kbd' command,
406: whenever the sequence of characters to be typed includes one or more
407: keys that are described by name.
408:
409: For example, to produce `C-x ESC' you would use
410:
411: @kbd{C-x @key{ESC}}
412:
413: The recommended names to use for keys are in upper case and are
414:
415: SPC
416: Space.
417:
418: RET
419: Return.
420:
421: LFD
422: Linefeed.
423:
424: TAB
425: Tab.
426:
427: BS
428: Backspace.
429:
430: ESC
431: Escape.
432:
433: DEL
434: Delete.
435:
436: SFT
437: Shift.
438:
439: CTL
440: Control.
441:
442: META
443: Meta.
444:
445: There are subtleties to handling words like `meta' or `ctrl' which
446: are names of shift keys. When mentioning a character in which the
447: shift key is used, such as `Meta-a', use the `@kbd' command alone
448: without the `@key' command, but when you are referring to shift key
449: in isolation, use the `@key' command. For example, you would use
450: `@kbd{Meta-a}' to produce `Meta-a' and `@key{META}' to produce META.
451:
452:
453:
454: File: texinfo, Node: Ctrl, Next: Var, Prev: Key, Up: Specifying
455:
456: @ctrl
457: -----
458:
459: `@ctrl' is used to describe an ASCII control character. The pattern
460: of usage is `@ctrl{CH}', where CH is an ASCII character whose
461: control-equivalent is wanted. Thus, you put in an `f' when you want
462: to indicate a `control-f'
463:
464: Thus, to specify `control-f', you would enter
465:
466: @ctrl{f}
467:
468: which produces
469:
470: f
471:
472: In the Info file, this generates the specified control character,
473: output literally into the file. This is done so a user can copy the
474: specified control character (along with whatever else he or she
475: wants) into another Emacs buffer and use it. Since the
476: `control-h',`control-i', and `control-j' characters are formatting
477: characters, they should not be indicated this way.
478:
479: In a printed manual, this generates text to describe or identify that
480: control character: an uparrow followed by the character CH.
481:
482:
483:
484: File: texinfo, Node: Var, Next: Dfn, Prev: Ctrl, Up: Specifying
485:
486: @var
487: ----
488:
489: `@var' is used to indicate metasyntactic variables. A metasyntactic
490: variable is something that stands for another piece of text. You
491: would use a metasyntactic variable in the documentation of a function
492: to describe the arguments that are passed to that function.
493:
494: `@var' is not used for names of particular variables in programming
495: languages. For example, the Texinfo variable `texinfo-tex-command'
496: is not a metasyntactic variable.
497:
498: Its effect in the Info file is to upcase the argument; in the printed
499: manual, to italicize it. Example:
500:
501: To delete file @var{filename}, type @code{rm @var{filename}}.
502:
503: produces
504:
505: To delete file FILENAME, type `rm FILENAME'.
506:
507: In some documentation styles, metasyntactic variables are shown with
508: angle brackets, for example:
509:
510: ..., type rm <filename>
511:
512:
513:
514: File: texinfo, Node: Dfn, Next: Cite, Prev: Var, Up: Specifying
515:
516: @dfn
517: ----
518:
519: `@dfn' is used to identify the introductory or defining use of a
520: technical term. The command should be used only in a passage whose
521: purpose is to introduce a term which will be used again or which the
522: reader ought to know. Mere passing mention of a term for the first
523: time doesn't deserve `@dfn'. It generates italics in the printed
524: manual, and double quotation marks in the Info file. Example:
525:
526: Getting rid of a file is called @dfn{deleting} it.
527:
528: produces
529:
530: Getting rid of a file is called "deleting" it.
531:
532:
533:
534: File: texinfo, Node: Cite, Prev: Dfn, Up: Specifying
535:
536: @cite
537: -----
538:
539: `@cite' is used for the name of a book. It produces italics in the
540: printed manual, and quotation marks in the Info file.
541:
542:
543:
544: File: texinfo, Node: Braces Atsigns Periods, Next: Dots Bullets Tex, Prev: Specifying, Up: Marking Text
545:
546: Inserting Braces, `@' and Periods
547: =================================
548:
549: `@' and curly braces are special characters in Texinfo. This means
550: that you have to put an `@' in front of these characters in order to
551: insert them into text.
552:
553: Periods are also special. Depending on whether the period is inside
554: of or at the end of a sentence, less or more space is inserted after
555: a period in a typeset manual. Since it is not always possible for
556: Texinfo to determine when a period ends a sentence and when it is
557: used in an abbreviation, special commands are needed. (Usually,
558: Texinfo figures out how to handle periods, so you don't have to use
559: the special commands; you just enter a period as you would if you
560: were using a typewriter, which means you put two spaces after the
561: period that ends a sentence and after a colon.)
562:
563: * Menu:
564:
565: * Inserting an Atsign:: inserting an atsign.
566: * Insert Left Brace:: Inserting a left brace.
567: * Insert Colon:: Preventing unintended additional whitespace.
568: * Insert Period:: Inserting a period that does end a sentence.
569:
570:
571:
572: File: texinfo, Node: Inserting An Atsign, Next: Insert Left Brace, Up: Braces Atsigns Periods
573:
574: @@
575: --
576:
577: `@@' stands for a single @ in either printed or Info output.
578:
579:
580:
581: File: texinfo, Node: Insert Left Brace, Next: Insert Colon, Prev: Inserting an Atsign, Up: Braces Atsigns Periods
582:
583: @{
584: --
585:
586: `@{' stands for a single { in either printed or Info output.
587:
588: @}
589: --
590:
591: `@}' stands for a single } in either printed or Info output.
592:
593:
594:
595: File: texinfo, Node: Insert Colon, Next: Insert Period, Prev: Insert Left Brace, Up: Braces Atsigns Periods
596:
597: @:
598: --
599:
600: `@:' is used after a character such as period or colon which normally
601: causes TeX to increase the width of the following whitespace, to
602: suppress that effect. For example, it can be used after periods that
603: end abbreviations and do not end sentences. `@:' has no effect on
604: the Info file output.
605:
606: It displays @code{Foo:}@: at that time.
607:
608: produces
609:
610: It displays `Foo:' at that time.
611:
612: The meanings of `@:' and `@.' in Texinfo are designed to work well
613: with the Emacs sentence motion commands. This means they are
614: different from their meanings in some other formatting systems that
615: use @-commands.
616:
617:
618:
619: File: texinfo, Node: Insert Period, Prev: Insert Colon, Up: Braces Atsigns Periods
620:
621: @.
622: --
623:
624: `@.' stands for a period that really does end a sentence, useful when
625: TeX would otherwise assume by its heuristics that that is not so.
626: This happens when there is a single-capital-letter word at the end of
627: a sentence: TeX normally guesses that it is an abbreviation.
628:
629: In the Info file output, `@.' is equivalent to a simple `.'. The
630: Texinfo program preserves the amount of space that you use, so put
631: two spaces after a period if you intend it to be the end of a
632: sentence (as well as using `@.', if necessary, for the printed
633: manual's sake).
634:
635: Give it to X. Give it to X@. Give it to X@.
636:
637: produces
638:
639: Give it to X. Give it to X. Give it to X.
640:
641:
642:
643: File: texinfo, Node: Dots Bullets Tex, Next: Emphasis, Prev: Braces Atsigns Periods, Up: Marking Text
644:
645: Inserting Dots, Bullets and TeX
646: ===============================
647:
648: An ellipsis, a line of dots, is typeset differently than a string of
649: periods; more whitespace is put between the dots in the ellipsis than
650: is put between the periods. Because of this, a special command is
651: used in Texinfo for inserting dots. Also, the trademark, TeX, is
652: typeset in a special fashion and it needs an @-command, as does the
653: command for inserting the copyright symbol. The `@bullet' command is
654: special, too. Each of these commands is followed by a pair of
655: braces, `{}', without any whitespace between the name of the command
656: and the braces.
657:
658: * Menu:
659:
660: * Dots:: Inserting dots.
661: * Bullet:: Inserting bullets.
662: * Tex:: Inserting the TeX trademark.
663:
664:
665:
666: File: texinfo, Node: Dots, Next: Bullet, Up: Dots Bullets Tex
667:
668: @dots{}
669: -------
670:
671: `@dots{}' generates an ellipsis which is three dots in a row,
672: appropriately spaced, like this: `...'. Do not simply write three
673: periods in the input file; that would work for the Info file output,
674: but would produce the wrong amount of space between the periods in
675: the printed manual.
676:
677:
678:
679: File: texinfo, Node: Bullet, Next: Tex, Prev: Dots, Up: Dots Bullets Tex
680:
681: @bullet{}
682: ---------
683:
684: `@bullet{}' generates a large round dot, or the closest possible
685: thing to one.
686:
687: Here is a bullet: *
688:
689:
690:
691: File: texinfo, Node: Tex, Prev: Bullet, Up: Dots Bullets Tex
692:
693: @TeX{}
694: ------
695:
696: `@TeX{}' generates `TeX'. In a printed manual, this is a special
697: logo that is different from three ordinary letters.
698:
699:
700:
701: File: texinfo, Node: Emphasis, Prev: Dots Bullets Tex, Up: Marking Text
702:
703: Emphasizing Text
704: ================
705:
706: Usually, Texinfo changes the font automatically to mark words in the
707: text according to what category the words belong to. The `@code'
708: command, for example, does this. Most often, this is the best way to
709: mark specified words. However, sometimes you will want to emphasize
710: text directly. Texinfo has two ways to do this: commands that tell
711: Texinfo to emphasize the text but leave the method to the program,
712: and commands that specify the font to use. The first method is
713: generally the best and it makes it possible to change the style of a
714: document without have to re-edit it line by line.
715:
716: * Menu:
717:
718: * Emph and Strong:: Emphasizing text.
719: * Fonts:: Selecting italic, bold or typewriter fonts.
720:
721:
722:
723: File: texinfo, Node: Emph and Strong, Next: Fonts, Up: Emphasis
724:
725: @emph and @strong
726: -----------------
727:
728: `@emph' and `@strong' are two forms of emphasis. `@strong' is
729: stronger.
730:
731: In printed output, `@emph' produces *italics* and `@strong' produces
732: *bold*.
733:
734: In the Info file, both of these commands put asterisks around the
735: argument.
736:
737:
738:
739: File: texinfo, Node: Fonts, Prev: Emph and Strong, Up: Emphasis
740:
741: @i, @b and @t
742: --------------
743:
744: These three commands specify font changes in the printed manual and
745: have no effect in the Info file. `@i' requests italic font (in some
746: versions of TeX, a slanted font is used), `@b' requests bold face,
747: and `@t' requests the fixed-width font used by `@kbd'. All three
748: commands apply to an argument that follows, surrounded by braces.
749:
750: If possible, you should avoid using these three commands. If you
751: find a need to use one, it probably indicates a lack in the Texinfo
752: language.
753:
754:
755:
756: File: texinfo, Node: Conditionals, Next: Printing Hardcopy, Prev: Marking Text, Up: Top
757:
758: Conditionals
759: ************
760:
761: You may not always be able to use the same text for both the printed
762: manual and the on-line Info file. In this case, you can use the
763: conditional commands to specify which text is for the printed manual
764: and which is for the Info file.
765:
766: `@ifinfo' begins text that should be ignored by TeX when it typesets
767: the printed manual. The text appears only in the Info file. The
768: `@ifinfo' command should appear on a line by itself. End the
769: info-only text with a line containing `@end ifinfo' by itself. At
770: the beginning of a Texinfo file, the Info permissions are contained
771: within a region marked by `@ifinfo' and `@end ifinfo'.
772:
773: Likewise, `@iftex' and `@end iftex' lines delimit text that will not
774: appear in the Info file but will appear in the printed manual.
775:
776: For example,
777:
778: @iftex
779: This text will appear only in the printed manual.
780: @end iftex
781:
782:
783: @ifinfo
784: However, this text will appear only in the info manual.
785: @end ifinfo
786:
787: The preceding example produces the following. Note how you only see
788: one of the two lines, depending on whether you are reading the
789: on-line Info version or the printed version of this manual.
790:
791: However, this text will appear only in the info manual.
792:
793: The `@titlepage' command is a special variant of `@iftex' that is
794: used for making the title and copyright pages of the printed manual.
795:
796: * Menu:
797:
798: * Using Tex Commands:: Using commands from regular TeX.
799:
800:
801:
802: File: texinfo, Node: Using Tex Commands, Prev: Conditionals, Up: Conditionals
803:
804: Using TeX Commands
805: ==================
806:
807: Inside a region delineated by `@iftex' and `@end iftex', you can
808: embed ordinary TeX commands. Info will ignore these commands since
809: they are only in that part of the file that is seen by TeX. The TeX
810: commands are the same as any TeX commands except that an `@' replaces
811: the `\' used by TeX. For example, in the `@titlepage' section of a
812: Texinfo file, the TeX command `@vskip' is used to format the
813: copyright page.
814:
815: You can enter TeX completely, and use `\' in the TeX commands by
816: delineating a region with the `@tex' and `@end tex' commands. (These
817: commands automatically put the region inside of `@iftex' and `@end
818: iftex' commands.) For example,
819:
820: @tex
821: Here you would put text with TeX commands;
822: such as $\bigl(x\in A(n)\bigm|x\in B(n)\bigr)$
823: that will appear only in the printed manual.
824: @end tex
825:
826: In the Info file, nothing between `@tex' and `@end tex' will appear.
827:
828:
829:
830: File: texinfo, Node: Printing Hardcopy, Next: Creating an Info File, Prev: Conditionals, Up: Top
831:
832: Printing Hardcopy
833: *****************
834:
835: There are three shell commands for printing a hardcopy of a Texinfo
836: file. One is for formatting the file, the second is for sorting the
837: index and the third is for printing the formatted document. When you
838: use the shell commands, you can either work directly in the operating
839: system shell or work within a shell inside of GNU Emacs.
840:
841: The typesetting program TeX is used for formatting a Texinfo file.
842: TeX is a very powerful typesetting program and, if used right, does
843: an exceptionally good job. The @-commands in a Texinfo file are
844: translated by a file called `texinfo.tex' into commands that TeX
845: understands. (That is why the beginning of every Texinfo file starts
846: with the line that says `\input texinfo'; this command tells TeX to
847: use the `texinfo.tex' file in processing the Texinfo file.
848: Customarily, `texinfo.tex' is in a directory called
849: `/usr/lib/tex/macros'.) `texinfo-format-buffer' reads the very same
850: @-commands in the Texinfo file and processes them differently from
851: TeX to make an Info file.
852:
853: Usually, the TeX formatting command is the shell command `tex'
854: followed by the name of the Texinfo file. The TeX command produces a
855: formatted DVI file as well as several auxiliary files containing
856: indices, cross references, etc. The DVI file (for "DeVice
857: Independent" file) can be printed on a wide variety of printers.
858:
859: The TeX formatting command itself does not sort the indices. This is
860: a misfeature of TeX. Hence, to generate a printed index, you first
861: need a sorted index to work from.
862:
863: TeX outputs raw, unsorted index files under names that obey a
864: standard convention. These names are the name of your main input
865: file to TeX, with everything after the first period thrown away, and
866: the two letter names of indices added at the end. For example, the
867: raw index output files for the input file `foo.texinfo' would be
868: `foo.cp', `foo.vr', `foo.fn', `foo.tp', `foo.pg' and `foo.ky'. Those
869: are exactly the arguments to give to `texindex'. Or else, you can
870: use `??' as "wild-cards" and give the command in this form:
871:
872: texindex foo.??
873:
874: For each file specified, `texindex' generates a sorted index file
875: whose name is made by appending `s' to the input file name. The
876: `@printindex' command knows to look for a file of that name.
877: `texindex' does not alter the raw index output file. After you have
878: sorted the indices, you need to rerun the TeX command on the Texinfo
879: file. This regenerates a formatted DVI file with the index entries
880: in the correct order.
881:
882: To summarize, this is a three step process:
883:
884: 1. Run the TeX command on the Texinfo file. This generates the
885: formatted DVI file as well as the raw index files with two
886: letter extensions.
887:
888: 2. Run the shell command `texindex' on the raw index files to sort
889: them. The arguments to `texindex' are the names of the raw
890: index files. `texindex' creates sorted index files whose names
891: are the names of the raw index files with an `s' appended. To
892: cause `texindex' to sort all the raw index files, append `??' to
893: the Texinfo file name in place of the `.texinfo' extension.
894:
895: 3. Rerun the TeX command on the Texinfo file. This regenerates a
896: formatted DVI file with the index entries in the correct order.
897: This second run also makes all the cross references correct as
898: well. (The tables of contents are always correct.)
899:
900: You need not run `texindex' after each TeX run. If you don't, the
901: next TeX run will use whatever sorted index files happen to exist
902: from the previous use of `texindex'. This is usually ok while you
903: are debugging.
904:
905: Finally, the document can be printed out with the DVI print command
906: (a shell command). Depending on the system used, the DVI print
907: command will be a command such as `lpr -d'. The DVI print command
908: may require a file name without any extension or with a `.dvi'
909: extension.
910:
911: The following commands, for example, sort the indices, format and
912: print the ``Bison Manual'' (where `%' is the shell prompt):
913:
914: % tex bison.texinfo
915: % texindex bison.??
916: % tex bison.texinfo
917: % lpr -d bison.dvi
918:
919: (Remember that the words for the shell commands may be different at
920: your site; but these are commonly used versions.)
921:
922: It is often most convenient to give formatting and printing commands
923: from a shell within GNU Emacs. This way, you can easily keep track
924: of errors. To create a shell within Emacs, type `M-x shell'. In
925: this shell, you can format and print the document. You can switch to
926: and from this shell while it is running and do other things. If you
927: are formatting a very long document on a slow machine, this can be
928: very convenient; on a VAX 750, for example, formatting often takes 8
929: seconds or more per page depending on how loaded the computer is.
930: Faster machines take correspondingly less time.
931:
932: * Menu:
933:
934: * Requirements:: Formatting requirements.
935: * Compile-Command:: Formatting with the compile command.
936:
937:
938:
939: File: texinfo, Node: Requirements, Next: Compile-Command, Up: Printing Hardcopy
940:
941: Formatting Requirements
942: =======================
943:
944: Every Texinfo file that is to be input to TeX must begin with a line
945: that looks like
946:
947: \input texinfo @c -*-texinfo-*-
948:
949: This serves two functions.
950:
951: 1. When the file is processed by TeX, it loads the macros needed
952: for processing a Texinfo file.
953:
954: 2. When the file is edited in Emacs, it causes Texinfo mode to be
955: used.
956:
957: Every Texinfo file must end with a line saying
958:
959: @bye
960:
961: which terminates TeX processing and forces out unfinished pages.
962:
963: You also have to include two lines that specify the Info file name
964: and the title of the printed manual:
965:
966: @setfilename NAME-OF-TEXINFO-FILE
967: @settitle NAME OF MANUAL
968:
969: You might also want to include a line saying
970:
971: @setchapternewpage odd
972:
973: to cause each chapter to start on a fresh odd-numbered page.
974:
975: By default, TeX typesets pages for printing in an 8.5 by 11 inch
976: format. However, you can direct TeX to typeset a document in a 7 by
977: 9.25 inch format that is suitable for bound books by inserting the
978: following command on a line by itself at the beginning of the Texinfo
979: file, before the `@setchapternewpage' command:
980:
981: @smallbook
982:
983: The Free Software Foundation distributes printed copies of the ``GNU
984: Emacs Manual'' in this size.
985:
986: Finally, TeX sometimes is unable to typeset a line without extending
987: it into the right margin. This can occur when TeX comes upon what it
988: interprets as a long word that it cannot hyphenate, like a net
989: address, or a very long title. When this happens, TeX prints an
990: error message like this:
991:
992: Overfull \hbox (20.76302pt too wide)
993:
994: and gives the line number along with the text of the offending line
995: marked at all the places that TeX knows to hyphenate words. (In TeX
996: lines are in `horizontal boxes', hence the term, `hbox'.)
997:
998: If the Texinfo file has an overfull hbox, you can rewrite the
999: sentence so the overfull hbox does not occur or you can decide to
1000: leave it. A small excursion into the right margin often does not
1001: matter and may not even be noticable. However, unless told
1002: otherwise, TeX will print a large, ugly, black rectangle beside every
1003: line that is overfull. This is so you will notice the location of
1004: the problem if you are correcting a draft. To prevent such
1005: monstrosities from marring your final printout, put the following in
1006: the beginning of the Texinfo file on lines of their own, before the
1007: `@setchapternewpage' command:
1008:
1009: @iftex
1010: @finalout
1011: @end iftex
1012:
1013: *Note Titlepage::, for information about creating a title page.
1014: *Note Contents::, for information about creating a table of contents.
1015:
1016:
1017:
1018: File: texinfo, Node: Compile-Command, Prev: Requirements, Up: Printing Hardcopy
1019:
1020: Using Local Variables and the Compile Command
1021: =============================================
1022:
1023: Another way to give the TeX formatting command to Texinfo is to put
1024: that command in a "local variables list" at the end of the Texinfo
1025: file. You can then specify the TeX formatting command as a
1026: `compile-command' and have Emacs run the TeX formatting command by
1027: giving the command `M-x compile'. This creates a special shell
1028: called the `*compilation buffer*'. For example, at the end of the
1029: `gdb.texinfo' file, after the `@bye', you would put the following:
1030:
1031: @c Local Variables:
1032: @c compile-command: "tex gdb.texinfo"
1033: @c End:
1034:
1035: This technique is most often used by programmers who compile programs
1036: this way.
1037:
1038:
1039:
1040: File: texinfo, Node: Creating an Info File, Next: Catching Mistakes, Prev: Printing Hardcopy, Up: Top
1041:
1042: Creating an On-line Info file
1043: *****************************
1044:
1045: In GNU Emacs, using Texinfo mode, you can see what part or all of a
1046: Texinfo file will look like in Info by using the keyboard command
1047: `C-c C-f' (`texinfo-format-region'). This formats a region and
1048: displays in a temporary buffer called `*Info Region*'; however, this
1049: command does not turn on Info reading program--it just displays what
1050: the region will look like. The `texinfo-format-region' command is
1051: described more extensively in the chapter on using Texinfo mode.
1052: *Note Info on a Region::.
1053:
1054: In GNU Emacs, the way to create a working Info file is to visit the
1055: file and invoke
1056:
1057: `M-x texinfo-format-buffer'
1058:
1059: A new buffer is created and the Info file text is generated there.
1060: `C-x C-s' will save it under the name specified in the `@setfilename'
1061: command.
1062:
1063: If the Texinfo file has more than 30,000 bytes,
1064: `texinfo-format-buffer' will automatically create a "tag table" for
1065: it. With a tag table, Info can jump to new nodes more quickly than
1066: it can otherwise. In addition, if the file has more than 100,000
1067: bytes in it, `texinfo-format-buffer' will split the file into shorter
1068: Indirect subfiles of about 50,000 bytes each. Files are split so
1069: that Info does not have to make a large buffer to hold the whole of a
1070: large Info file; instead, Info allocates just enough memory for the
1071: small, split off file that is needed at the time. This way, Emacs
1072: avoids wasting memory when you run Info. (Before splitting was
1073: implemented, Info files were always short and "include" files were
1074: designed as a way to create a single, large printed manual out of the
1075: smaller Info files. *Note Include Files::, for more information.)
1076:
1077: When the file is split, Info itself works through a shortened version
1078: of the original file that contains the tag table and references to
1079: the files that were split off. The split off files are called
1080: "indirect" files.
1081:
1082: The split off files have names that are created by appending `-1',
1083: `-2', `-3' and so on to the file names specified by the
1084: `@setfilename' command. The shortened version of the original file
1085: continues to have the name specified by `@setfilename'.
1086:
1087: At one stage in writing this document, for example, the Info file was
1088: saved as `test-texinfo' and that file looked like this:
1089:
1090: Info file: test-texinfo, -*-Text-*-
1091: produced by texinfo-format-buffer
1092: from file: new-texinfo-manual.texinfo
1093:
1094: ^_
1095: Indirect:
1096: test-texinfo-1: 102
1097: test-texinfo-2: 50422
1098: test-texinfo-3: 101300
1099: ^_^L
1100: Tag table:
1101: (Indirect)
1102: Node: overview^?104
1103: Node: info file^?1271
1104: Node: printed manual^?4853
1105: Node: conventions^?6855
1106: ...
1107:
1108: (But `test-texinfo' had far more nodes than are shown here.) Each of
1109: the split off, indirect files, `test-texinfo-1', `test-texinfo-2',
1110: and `test-texinfo-3', is listed in this file after the line that says
1111: `Indirect:'. The tag table is listed after the line that says `Tag
1112: table:'.
1113:
1114: You cannot run the `M-x Info-validate' node checking command on
1115: indirect files. For information on how to prevent files from being
1116: split and how to validate the structure of the nodes, *note
1117: Info-Validating a Large File::.
1118:
1119: * Menu:
1120:
1121: * Installing an Info File:: Putting the Info file in the info directory.
1122:
1123:
1124:
1125: File: texinfo, Node: Installing an Info File, Prev: Creating an Info File, Up: Creating an Info File
1126:
1127: Installing an Info file
1128: =======================
1129:
1130: An Info file is usually installed in the GNU Emacs directory called
1131: `info'. For Info to work, this directory must contain all the Info
1132: files, including the split off files. In addition, the `info'
1133: directory must have a file that serves as a top level directory for
1134: the Info system. This file is called `dir'.
1135:
1136: For example, in the `info' directory, the file called `dir' has the
1137: top level menu for all the Info files in the system. This file has a
1138: master menu that looks like this:
1139:
1140: * Menu:
1141:
1142: * Info: (info). Documentation browsing system.
1143: * Emacs: (emacs). The extensible self-documenting text editor.
1144: * Texinfo: (texinfo). With one source file, make either a printed
1145: manual using TeX or an Info file using
1146: Texinfo.
1147:
1148: To add a new Info file, just add it to this menu. For example, if
1149: you were adding documentation for GDB, you would make the following
1150: entry:
1151:
1152: * GDB: (gdb). The source-level C debugger.
1153:
1154: The first item is the menu item name; it is followed by a colon. The
1155: second item is the name of the Info file, in parentheses; it is
1156: followed by a period. The third part of the entry is the description
1157: of the item.
1158:
1159: The top node of the file, named `top', should have as its parent the
1160: name of a node in another file, where there is a menu that leads to
1161: this file. Specify the file name in parentheses. If the file is to
1162: be installed directly in the Info directory file, use `(dir)' as the
1163: parent of the top node; this is short for `(dir)top', the node `top'
1164: in the file `dir', which is the main menu of Info.
1165:
1166:
1167:
1168: File: texinfo, Node: Catching Mistakes, Next: Command Syntax, Prev: Creating an Info File, Up: Top
1169:
1170: Catching Mistakes
1171: *****************
1172:
1173: Besides mistakes with the content of what ever you are describing,
1174: there are two kinds of mistake you can make with Texinfo: you can
1175: make mistakes with @-commands, and you can make mistakes with the
1176: structure of the nodes and chapters.
1177:
1178: There are two tools for catching the first kind of mistake and two
1179: for catching the second.
1180:
1181: For finding problems with @-commands, your best action is to run `M-x
1182: texinfo-format-region' on regions of your file as you write it. In
1183: Texinfo mode, the `texinfo-format-region' command is bound to `C-c
1184: C-f'. In addition, you can run TeX on the whole file.
1185:
1186: For finding problems with the structure of nodes and chapters, you
1187: can use `C-c C-s' (`texinfo-show-structure') (and the related `occur'
1188: command) and you can use the `M-x Info-validate' command.
1189:
1190: * Menu:
1191:
1192: * Debugging with Info:: Catching errors with info formatting.
1193: * Debugging with Tex:: Catching errors with TeX formatting.
1194: * Using texinfo-show-structure:: Using `texinfo-show-structure'
1195: to catch mistakes.
1196: * Running Info-Validate:: Checking for unreferenced nodes.
1197:
1198:
1199:
1200: File: texinfo, Node: Debugging with Info, Next: Debugging with Tex, Up: Catching Mistakes
1201:
1202: Catching Errors with Info Formatting
1203: ====================================
1204:
1205: After you have written part of a Texinfo file, you can use the `M-x
1206: texinfo-format-region' command to see whether the region formats
1207: properly. In Texinfo mode, this command is bound to the keyboard
1208: command `C-c C-f'.
1209:
1210: If you have made a mistake with an @-command, `M-x
1211: texinfo-format-region' will stop processing at or after the error and
1212: give an error message. To see where in the file the error occurred,
1213: switch to the `*Info Region*' buffer; the cursor will be in a
1214: position that is after the location of the error. Also, the text
1215: will not be formatted after the place the error occurred.
1216:
1217: For example, if you accidently end a menu with the command `@end
1218: menus' with an `s' on the end, instead of with `@end menu', you will
1219: get an error message that says:
1220:
1221: @end menus is not handled by texinfo.
1222:
1223: The cursor will stop at the point in the file where the error occurs,
1224: or not long after it. It will look like this:
1225:
1226: @menu
1227: * Using texinfo-show-structure:: Using `texinfo-show-structure'
1228: to catch mistakes.
1229: * Running Info-Validate:: Checking for unreferenced nodes.
1230: @end menus
1231:
1232: The `texinfo-format-region' command does not always recognize errors.
1233: For example, no errors were reported when `texinfo-format-region' was
1234: run on the whole itemized list of which the following is a part:
1235:
1236: name of the Texinfo file as an extension. The @samp{??} are `wildcards'
1237: that cause the shell to substitute all the raw index files. (@xref{sorting
1238: indices), for more information about sorting indices.) @refill
1239: @cindex Sorting indices
1240: @cindex Indices, sorting
1241:
1242: @item
1243: @emph{Third}, rerun the @TeX{} command on the Texinfo file. This
1244: regenerates a formatted DVI file with the index entries in the correct
1245: order. This second run also makes all the cross references and table of
1246: contents correct as well.
1247:
1248: Instead, `texinfo-format-region' ran without reporting the error, but
1249: it produced output with very long lines, containing some of the
1250: original `@cindex' commands mixed in. (It is not practical to
1251: display these over long lines here.
1252:
1253: However, when `texinfo-format-region' was run on part of the list
1254: that is shown, it did give an error message, `Search failed: "[{,}"'.
1255: (This error message is explained in the section on using the Emacs
1256: Lisp Debugger, *note Using the Emacs Lisp Debugger::.)
1257:
1258: Sometimes `texinfo-format-region' will stop long after the original
1259: error; this is because it does not discover the problem until then.
1260: In this case, you will have to backtrack.
1261:
1262:
1263:
1264: File: texinfo, Node: Using the Emacs Lisp Debugger, Up: Debugging with Info
1265:
1266: Using the Emacs Lisp Debugger
1267: -----------------------------
1268:
1269: If an error is especially elusive, you can turn on the Emacs Lisp
1270: debugger and look at the backtrace; this tells you where in the
1271: `texinfo-format-region' function the problem occurred. You can turn
1272: on the debugger with the command:
1273:
1274: M-x set-variable RET debug-on-error RET t
1275:
1276: and turn it off with
1277:
1278: M-x set-variable RET debug-on-error RET nil
1279:
1280: Often, when you are using the debugger, it is easier to follow what
1281: is going on if you use the Emacs Lisp files that are not
1282: byte-compiled. The byte-compiled sources send octal numbers to the
1283: debugger that may look mysterious. To use the uncompiled source
1284: files, load `texinfmt.el' and `texinfo.el' with the `M-x load-file'
1285: command.
1286:
1287: The debugger will not catch an error if `texinfo-format-region' does
1288: not detect one. In the example shown above, `texinfo-format-region'
1289: did not find the error when the whole list was formatted, but only
1290: when part of the list was formatted. When `texinfo-format-region'
1291: did not find an error, the debugger did not find one either.
1292:
1293: However, when `texinfo-format-region' did report an error, it invoked
1294: the debugger. This is the backtrace it produced:
1295:
1296: Signalling: (search-failed "[},]")
1297: re-search-forward("[},]")
1298: (while ...)
1299: (let ...)
1300: texinfo-format-parse-args()
1301: (let ...)
1302: texinfo-format-xref()
1303: funcall(texinfo-format-xref)
1304: (if ...)
1305: (let ...)
1306: (if ...)
1307: (while ...)
1308: texinfo-format-scan()
1309: (save-excursion ...)
1310: (let ...)
1311: texinfo-format-region(103370 103631)
1312: * call-interactively(texinfo-format-region)
1313:
1314: The backtrace is read from the bottom up. `texinfo-format-region'
1315: was called interactively; and it, in turn, called various functions,
1316: including `texinfo-format-scan', `texinfo-format-xref' and
1317: `texinfo-format-parse-args'. Inside the function
1318: `texinfo-format-parse-args', the function `re-search-forward' was
1319: called; it was this function that could not find the missing right
1320: hand brace.
1321:
1322: *Note : (emacs)Lisp Debug, for more information.
1323:
1324:
1325:
1326: File: texinfo, Node: Debugging with Tex, Next: Using texinfo-show-structure, Prev: Debugging with Info, Up: Catching Mistakes
1327:
1328: Catching Errors with TeX Formatting
1329: ===================================
1330:
1331: You can also catch mistakes when you format a file with TeX.
1332:
1333: Usually, you will want to do this after you have run
1334: `texinfo-format-buffer' on the same file. `texinfo-format-buffer' is
1335: usually faster and sometimes gives error messages that make more
1336: sense. *Note Debugging with Info::, for more information.
1337:
1338: For example, TeX was run on the same itemized list discussed in the
1339: section on the use of `texinfo-format-region' (*note Debugging with
1340: Info::.); the fragment with the error looked like this:
1341:
1342: name of the texinfo file as an extension. The @samp{??} are `wildcards'
1343: that cause the shell to substitute all the raw index files. (@xref{sorting
1344: indices, for more information about sorting indices.) @refill
1345:
1346: This produced the following output, after which TeX stopped:
1347:
1348: Runaway argument?
1349: {sorting indices, for more information about sorting indices.) @refill @ETC.
1350: ! Paragraph ended before \xref was complete.
1351: <to be read again>
1352: \par
1353: l.27
1354:
1355: ?
1356:
1357: In this case, TeX produced an accurate and understandable error
1358: message: `Paragraph ended before \xref was complete.' (Note, however,
1359: that TeX translated the `@' into a `\'.) Also, `\par' is an internal
1360: TeX command of no relevance to Texinfo.)
1361:
1362: Unfortunately, TeX is not always so helpful, and sometimes you have
1363: to be truly a Sherlock Holmes to discover what went wrong.
1364:
1365: In any case, if you run into a problem like this, you can do one of
1366: two things.
1367:
1368: 1. You can tell TeX to continue running and to ignore errors as
1369: best it can by typing `r RET' at the `?' prompt.
1370:
1371: This is often the best thing to do. However, beware: the one
1372: error may produce a cascade of additional error messages as it
1373: consequences are felt through the rest of the file.
1374:
1375: 2. You can tell TeX to stop this run by typing `x RET' at the `?'
1376: prompt.
1377:
1378: Sometimes TeX will format a file without producing error messages
1379: even though there is a problem. This usually occurs if a command is
1380: not ended but TeX is able to continue processing anyhow. For
1381: example, if you fail to end an itemized list with the `@end itemize'
1382: command, TeX will write a DVI file that you can print out. The only
1383: error message that TeX will give you is the somewhat mysterious
1384: comment that
1385:
1386: (\end occurred inside a group at level 1)
1387:
1388: However, if you print the DVI file, you will find that the text of
1389: the file that follows the itemized list is entirely indented as if it
1390: were part of the last item in the itemized list. The error message
1391: is the way TeX says that it expected to find an `@end' command
1392: somewhere in the file; but that it could not locate where it was
1393: needed.
1394:
1395: Another source of notoriously hard to find errors is a missing `@end
1396: group' command. If you ever are stumped by incomprehensible errors,
1397: look for a missing `@end group' command first.
1398:
1399: If you do not have the header lines in the file, TeX may stop in the
1400: beginning of its run and display output that looks like the following.
1401: The `*' indicates that TeX is waiting for input.
1402:
1403: This is TeX, Version 2.0 for Berkeley UNIX (preloaded format=plain-cm
1404: 87.10.25) (#tz-bar-a02987.tex [1])
1405: *
1406:
1407: In this case, simply type `\end RET' after the asterisk. Then put
1408: the header lines into the Texinfo file and run the TeX command again.
1409:
1410:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.