Annotation of 43BSD/contrib/emacs/man/texinfo.texinfo, revision 1.1

1.1     ! root        1: \input texinfo   @c -*-texinfo-*-
        !             2: @setfilename ../info/texinfo
        !             3: @settitle Texinfo
        !             4: 
        !             5: @titlepage
        !             6: @center @titlefont{Texinfo}
        !             7: @sp 1
        !             8: @center The GNU Documentation Format
        !             9: @sp 2
        !            10: @center Richard M. Stallman
        !            11: @end titlepage
        !            12: 
        !            13: @unnumbered Distribution
        !            14: 
        !            15: Copyright @copyright{} 1985 Richard M. Stallman.
        !            16: 
        !            17: Permission is granted to make and distribute verbatim copies of
        !            18: this manual provided the copyright notice and this permission notice
        !            19: are preserved on all copies.
        !            20: 
        !            21: @ignore
        !            22: Permission is granted to process this file through Tex and print the
        !            23: results, provided the printed document carries copying permission
        !            24: notice identical to this one except for the removal of this paragraph
        !            25: (this paragraph not being relevant to the printed manual).
        !            26: 
        !            27: @end ignore
        !            28: Permission is granted to copy and distribute modified versions of this
        !            29: manual under the conditions for verbatim copying, provided that the entire
        !            30: resulting derived work is distributed under the terms of a permission
        !            31: notice identical to this one.
        !            32: 
        !            33: Permission is granted to copy and distribute translations of this manual
        !            34: into another language, under the same conditions as for modified versions.
        !            35: 
        !            36: @node top, commands, , (DIR)
        !            37: @chapter Texinfo Files
        !            38: 
        !            39: Documentation for GNU utilities and libraries should be written
        !            40: in a format called @dfn{texinfo}.  This format can be translated
        !            41: mechanically into either printed manuals or on-line readable
        !            42: Info files.@refill
        !            43: 
        !            44: @menu
        !            45: * info::       What Info files do.
        !            46: * commands::   What goes into a texinfo file.
        !            47: * make-info::  Making a texinfo file into an Info file.
        !            48: * manual::     Making a texinfo file into a printed manual.
        !            49: @end menu
        !            50: 
        !            51: @node info, commands, top, top
        !            52: @section What Info Files Do
        !            53: 
        !            54: An Info file is a file formatted so that the Info documentation reading
        !            55: program can operate on it.  Info files are divided into pieces called
        !            56: @dfn{nodes}, each of which contains the discussion of one topic.  Each node
        !            57: has a name, and contains both text for the user to read and pointers to
        !            58: other nodes, which are identified by their names.  Info displays one node
        !            59: at a time, and provides commands with which the user can move to the other
        !            60: nodes that the current node points to.
        !            61: 
        !            62: Normally most of the nodes are arranged in a tree which branches down.
        !            63: Each node may have any number of child nodes that describe subtopics of the
        !            64: node's topic.  The names of these child nodes, if any, are listed in a
        !            65: @dfn{menu} within the parent node; this allows certain Info commands to
        !            66: be used to move to one of the child nodes.  Each child node records the
        !            67: parent node name, as its `up' pointer.
        !            68: 
        !            69: All the children of any one parent are linked together in a bidirectional
        !            70: chain of `next' and `previous' pointers.  Normally the order in this chain
        !            71: is the same as the order of the children in the parent's menu.  The last
        !            72: child has no `next' pointer, and the first child normally has the parent as
        !            73: its `previous' pointer (as well as its `up' pointer, of course).
        !            74: 
        !            75: The root of the tree is the top node of the file, through which users
        !            76: enter the file from the Info directory.  By convention, this node is always
        !            77: called @samp{top}.  This node normally contains just a brief summary of the
        !            78: file's purpose, and a large menu through which the rest of the file is
        !            79: reached.
        !            80: 
        !            81: Structuring the nodes in a tree is a matter of convention, not a
        !            82: requirement.  In fact, the `up', `previous' and `next' pointers of a node
        !            83: can point to any other nodes, and the menu can contain any other nodes.
        !            84: The structure of nodes can be any directed graph.  But it is usually more
        !            85: comprehensible to the user to make it a tree.  Info provides another kind
        !            86: of pointer between nodes, called a reference, that can be sprinkled through
        !            87: the text of a node.  This is usually the best way to represent links that
        !            88: do not fit the tree structure.
        !            89: 
        !            90: Most often the nodes fall into a strict tree structure, and most often this
        !            91: structure corresponds to the structure of chapters, sections, subsections,
        !            92: and so on of a printed manual.  But there are times when this is not right
        !            93: for the material being discussed.  Therefore, texinfo format uses separate
        !            94: commands to specify the node structure of the Info file and the section
        !            95: structure of the a printed manual.  Also, texinfo requires menus to be
        !            96: specified explicitly, rather than generating them automatically based on an
        !            97: assumed tree structure.
        !            98: 
        !            99: @node commands, make-info, info, top
        !           100: @section General Syntactic Conventions
        !           101: 
        !           102: Texinfo files contain a strictly limited set of constructs for a @TeX{}
        !           103: macro package quite different from plain @TeX{}.  The strict limits make it
        !           104: possible for texinfo files to be understood also by the @code{texinfo}
        !           105: program, which converts them into Info files.
        !           106: 
        !           107: In order to be made into an Info file, a texinfo file must start with a
        !           108: line that looks like
        !           109: @example
        !           110: @@setfilename @var{info-file-name}
        !           111: @end example
        !           112: @noindent
        !           113: which specifies the name of the Info file to be generated.  In fact, there
        !           114: can be other things in the file before this line, but they are ignored in
        !           115: the generation of an Info file.  The @code{@@setfilename} line is ignored
        !           116: when a printed manual is generated.
        !           117: 
        !           118: All ASCII printing characters except @code{@@}, @code{@{} and @code{@}} can
        !           119: appear in body text in a texinfo file and stand for themselves.  @code{@@}
        !           120: is the escape character which introduces commands.  @code{@{} and @code{@}}
        !           121: should be used only to surround arguments to certain commands.  @code{@{}
        !           122: and @code{@}} appearing anywhere else will be treated by @TeX{} as a
        !           123: grouping but treated by texinfo as themselves; this inconsistency is
        !           124: undesirable, so don't let it occur.  To put one of these special characters
        !           125: into the document, put an @samp{@@} character in front of it.@refill
        !           126: 
        !           127: It is customary in @TeX{} to use doubled single-quote characters to begin
        !           128: and end quotations.  This convention should be followed in texinfo files.
        !           129: 
        !           130: @TeX{} ignores the line-breaks in the input text, except for blank lines,
        !           131: which separate paragraphs.  Texinfo generally preserves the line breaks
        !           132: that are present in the input file.  Therefore, you break the lines in the
        !           133: texinfo file the way you want them to appear in the output Info file, and
        !           134: let @TeX{} take care of itself.
        !           135: 
        !           136: @section @@-Command Syntax
        !           137: 
        !           138: The character @@ is used to start special texinfo commands.  (It has the
        !           139: same meaning that @t{\} has in plain @TeX{}.)  Syntactically, there
        !           140: are three classes of @@-commands:
        !           141: 
        !           142: @enumerate
        !           143: @item
        !           144: Non-alphabetic commands, @@ followed by a punctuation character.
        !           145: These commands are always part of the text within a paragraph, and
        !           146: never take any argument.  The two characters (@@ and the other one)
        !           147: are complete in themselves.
        !           148: @item
        !           149: Alphabetic commands used within a paragraph.  These commands have @@
        !           150: followed by a word, followed by an argument within braces.  For
        !           151: example, the command @code{@@i} specifies italic font (for @TeX{}
        !           152: processing only); it is used as follows: @samp{I do @@i@{not@} want
        !           153: to eat that.}
        !           154: @item
        !           155: Alphabetic commands used outside of paragraphs.  Each such command
        !           156: occupies an entire line.  The line starts with @@, followed by the
        !           157: name of the command (a word).  If no argument is needed, the word is
        !           158: followed by the end of the line.  If there is an argument, it is
        !           159: separated from the command name by a space.
        !           160: @end enumerate
        !           161: 
        !           162: Thus, the alphabetic commands fall into two classes that have different
        !           163: argument syntax.  You cannot tell which class a command falls in by the
        !           164: appearance of its name, but you can tell by the command's meaning: if it
        !           165: makes sense to use the command together with other words as part of a
        !           166: paragraph, the command is in class 2 and must be followed by an argument in
        !           167: braces; otherwise, it is in class 3 and uses the rest of the line as its
        !           168: argument.
        !           169: 
        !           170: The purpose of having different syntax for commands of classes 2 and 3 is
        !           171: to make the texinfo file easier to read, and also to help the Emacs
        !           172: paragraph and filling commands work properly.  There is only one exception
        !           173: to this rule: the command @code{@@refill}, which is always used at the end
        !           174: of a paragraph immediately following the final period or other punctuation
        !           175: character.  @code{@@refill} takes no argument.  @code{@@refill} never
        !           176: confuses the Emacs paragraph commands because it cannot start at the
        !           177: beginning of a line.@refill
        !           178: 
        !           179: @section Within-Paragraph Commands
        !           180: 
        !           181: The @@-commands used within a paragraph either generate a small amount of
        !           182: text or modify the treatment of some text.
        !           183: 
        !           184: @subsection @@@@
        !           185: 
        !           186: @code{@@@@} stands for a single @@ in either printed or Info output.
        !           187: 
        !           188: @subsection @@@{
        !           189: 
        !           190: @code{@@@{} stands for a single @{ in either printed or Info output.
        !           191: 
        !           192: @subsection @@@}
        !           193: 
        !           194: @code{@@@}} stands for a single @} in either printed or Info output.
        !           195: 
        !           196: @subsection @@:
        !           197: 
        !           198: @code{@@:}@: is used after a character such as period or colon which
        !           199: normally causes @TeX{} to increase the width of the following whitespace,
        !           200: to suppress that effect.  For example, it can be used after periods that
        !           201: end abbreviations and do not end sentences.  @code{@@:}@: has no effect
        !           202: on the Info file output.
        !           203: 
        !           204: @example
        !           205: It displays @@code@{Foo:@}@@: at that time.
        !           206: @end example
        !           207: 
        !           208: @noindent
        !           209: produces
        !           210: 
        !           211: @quotation
        !           212: It displays @code{Foo:}@: at that time.
        !           213: @end quotation
        !           214: 
        !           215: Note that the meanings of @code{@@:}@: and @code{@@.}@: in texinfo are
        !           216: not compatible with their meanings in Scribe; in fact, they are nearly the
        !           217: opposite.  The meanings in texinfo were designed to work well with the
        !           218: Emacs sentence motion commands.@refill
        !           219: 
        !           220: @subsection @@.
        !           221: 
        !           222: @code{@@.}@: stands for a period that really does end a sentence, useful when
        !           223: @TeX{} will assume by its heuristics that that is not so.  This happens
        !           224: when there is a single-capital-letter word at the end of a sentence: @TeX{}
        !           225: normally guesses that it is an abbreviation.
        !           226: 
        !           227: In the Info file output, @code{@@.}@: is equivalent to a simple @samp{.}.
        !           228: The texinfo program preserves the amount of space that you use, so put
        !           229: two spaces after a period if you intend it to be the end of a sentence
        !           230: (as well as using @code{@@.}, if necessary, for the printed manual's sake).
        !           231: 
        !           232: @example
        !           233: Give it to X. Give it to X@@.  Give it to X@@.
        !           234: @end example
        !           235: 
        !           236: @noindent
        !           237: produces
        !           238: 
        !           239: @quotation
        !           240: Give it to X. Give it to X@.  Give it to X@.
        !           241: @end quotation
        !           242: 
        !           243: @subsection @@*
        !           244: 
        !           245: @code{@@*} forces a line break in the printed manual.  It has no effect on
        !           246: the Info file output, where line breaks follow those in the source file.
        !           247: If you want a line break at a certain spot in both forms of output, break
        !           248: the line there in the source file and put @code{@@*} at the end of the
        !           249: line.
        !           250: 
        !           251: @subsection @@dots
        !           252: 
        !           253: @code{@@dots@{@}} generates an ellipsis: three periods in a row, or `@dots{}'.
        !           254: Do not simply write three periods in the input file; that would work ok for
        !           255: the Info file output, but would produce the wrong amount of space between
        !           256: the periods in the printed manual.
        !           257: 
        !           258: @subsection @@bullet
        !           259: 
        !           260: @code{@@bullet@{@}} generates a large round dot, or the closest possible
        !           261: thing to one.
        !           262: 
        !           263: @subsection @@TeX
        !           264: 
        !           265: @code{@@TeX@{@}} generates `@TeX{}'.  In a printed manual, this is a special
        !           266: logo that is different from three ordinary letters.
        !           267: 
        !           268: @subsection @@copyright
        !           269: 
        !           270: @code{@@copyright@{@}} generates a @samp{C} inside a circle.
        !           271: 
        !           272: @subsection @@code
        !           273: 
        !           274: @code{@@code} is used to indicate text that is a literal example of input
        !           275: to a program.  The text follows, enclosed in braces.  Any time you give a
        !           276: sample of an expression in C, or of a command for the shell, or any such
        !           277: thing, use @code{@@code}.  In the printed manual, it puts the argument in
        !           278: bold face.  In the Info file, it uses `@dots{}' quotation.  Example:
        !           279: 
        !           280: @example
        !           281: To compare two files, showing text inserted or removed, use @@code@{diff@}.
        !           282: @end example
        !           283: 
        !           284: @noindent
        !           285: produces
        !           286: 
        !           287: @quotation
        !           288: To compare two files, showing text inserted or removed, use @code{diff}.
        !           289: @end quotation
        !           290: 
        !           291: @subsection @@samp
        !           292: 
        !           293: @code{@@samp} is used to indicate text that is a literal example of a
        !           294: sequence of characters in a file, string, pattern, etc.  The text follows,
        !           295: enclosed in braces.  The argument appears within `@dots{}' quotation in
        !           296: both the Info file and the printed manual; in addition, it is printed in
        !           297: a fixed-width font.
        !           298: 
        !           299: @example
        !           300: To match @@samp@{foo@} at the end of the line, use the regexp @@samp@{foo$@}.
        !           301: @end example
        !           302: 
        !           303: @noindent
        !           304: produces
        !           305: 
        !           306: @quotation
        !           307: To match @samp{foo} at the end of the line, use the regexp @samp{foo$}.
        !           308: @end quotation
        !           309: 
        !           310: @subsection @@file
        !           311: 
        !           312: @code{@@file} is used to indicate text that is a file name.  Currently
        !           313: it is equivalent to @code{@@samp} in its effects on the output.
        !           314: 
        !           315: @subsection @@kbd
        !           316: 
        !           317: @code{@@kbd} is used much like @code{@@code}.  The difference is that
        !           318: @code{@@kbd} is for names of keys on the keyboard, or of characters you can
        !           319: type.  It has the same effect as @code{@@code} in texinfo, but may produce
        !           320: a different font in a printed manual.@refill
        !           321: 
        !           322: @example
        !           323: To give the @@code@{logout@} command, type the characters @@kbd@{l o g o u t
        !           324: @@key@{RET@}@}.
        !           325: @end example
        !           326: 
        !           327: @noindent
        !           328: produces
        !           329: 
        !           330: @quotation
        !           331: To give the @code{logout} command, type the characters @kbd{l o g o u t
        !           332: @key{RET}}.
        !           333: @end quotation
        !           334: 
        !           335: @subsection @@key
        !           336: 
        !           337: @code{@@key} is used to indicate text that is the name of a key on
        !           338: the keyboard, as in
        !           339: 
        !           340: @example
        !           341: @@key@{RET@}
        !           342: @end example
        !           343: 
        !           344: Often, @code{@@key} is used within the argument of a @code{@@kbd}
        !           345: command, whenever the sequence of characters to be typed includes one or
        !           346: more keys that are described by name.@refill
        !           347: 
        !           348: The recommended names to use for keys are
        !           349: 
        !           350: @table @t
        !           351: @item SPC
        !           352: Space.
        !           353: @item RET
        !           354: Return.
        !           355: @item LFD
        !           356: Linefeed.
        !           357: @item TAB
        !           358: Tab.
        !           359: @item BS
        !           360: Backspace.
        !           361: @item ESC
        !           362: Escape.
        !           363: @item DEL
        !           364: Delete.
        !           365: @item SFT
        !           366: Shift.
        !           367: @item CTL
        !           368: Control.
        !           369: @item META
        !           370: Meta.
        !           371: @end table
        !           372: 
        !           373: @subsection @@ctrl
        !           374: 
        !           375: @code{@@ctrl} is used to describe an ASCII control character.  The pattern
        !           376: of usage is @code{@@ctrl@{@var{ch}@}}, where @var{ch} is an ASCII character whose
        !           377: control-equivalent is wanted.
        !           378: 
        !           379: In the Info file, this generates the specified control character, output
        !           380: literally into the file.
        !           381: 
        !           382: In a printed manual, this generates text to describe or identify that
        !           383: control character: an uparrow followed by the character @var{ch}.
        !           384: 
        !           385: @subsection @@var
        !           386: 
        !           387: @code{@@var} is used to indicate metasyntactic variables.  Its effect in
        !           388: the Info file is to upcase the argument; in the printed manual, to
        !           389: italicize it.  Example:
        !           390: 
        !           391: @example
        !           392: To delete file @@var@{file@}, type @@code@{rm @@var@{file@}@}.
        !           393: @end example
        !           394: 
        !           395: @noindent
        !           396: produces
        !           397: 
        !           398: @quotation
        !           399: To delete file @var{file}, type @code{rm @var{file}}.
        !           400: @end quotation
        !           401: 
        !           402: @subsection @@dfn
        !           403: 
        !           404: @code{@@dfn} is used to identify the introductory or defining use of a
        !           405: technical term.  It generates italics in the printed manual, and double
        !           406: quotation marks in the Info file.  Example:
        !           407: 
        !           408: @example
        !           409: Getting rid of a file is called @@dfn@{deleting@} it.
        !           410: @end example
        !           411: 
        !           412: @noindent
        !           413: produces
        !           414: 
        !           415: @quotation
        !           416: Getting rid of a file is called @dfn{deleting} it.
        !           417: @end quotation
        !           418: 
        !           419: @subsection @@i or @@b or @@t
        !           420: 
        !           421: These three commands specify font change in the printed manual and have no
        !           422: effect in the Info file.  @code{@@i} requests italic font (actually,
        !           423: slanted font is used by @TeX{}), @code{@@b} requests bold face, and
        !           424: @code{@@t} requests the fixed-width font used by @code{@@kbd}.
        !           425: All three commands apply to an argument that follows, surrounded by
        !           426: braces.@refill
        !           427: 
        !           428: @subsection @@w
        !           429: 
        !           430: In a printed manual, @code{@@w@{@var{text}@}} outputs @var{text} and prohibits
        !           431: line breaks within @var{text}.  @code{@@w} has no effect on the Info file
        !           432: output; it is the same as would result from just @var{text}.
        !           433: 
        !           434: @subsection @@refill
        !           435: 
        !           436: If a paragraph contains sizeable @@-constructs, it may look badly filled
        !           437: once texinfo is through with it.
        !           438: 
        !           439: Put @code{@@refill} at the end of the paragraph to tell texinfo to
        !           440: refill the paragraph after finishing all other processing on it.
        !           441: @code{@@refill} has no effect on @TeX{}, which always fills everything
        !           442: that ought to be filled.  Example:@refill
        !           443: 
        !           444: @example
        !           445: To use @@code@{foo@}, pass @@samp@{xx%$@} and @@var@{flag@} and type @@kbd@{x@}
        !           446: after running @@code@{make-foo@}.@@refill
        !           447: @end example
        !           448: 
        !           449: @noindent
        !           450: produces (in the Info file)
        !           451: 
        !           452: @example
        !           453: To use `foo', pass `xx%$' and FLAG and type `x' after running `make-foo'.
        !           454: @end example
        !           455: 
        !           456: @noindent
        !           457: whereas without the @code{@@refill} it would produce
        !           458: 
        !           459: @example
        !           460: To use `foo', pass `xx%$' and FLAG and type `x'
        !           461: after running `make-foo'.
        !           462: @end example
        !           463: 
        !           464: @noindent
        !           465: with the line broken at the same place as in the input.
        !           466: 
        !           467: @section Chapter Structuring Commands
        !           468: 
        !           469: The chapter structuring commands divide a document into a hierarchy of
        !           470: chapters, sections, subsections and subsubsections.  These commands
        !           471: generate large headings in the middle of the text.
        !           472: 
        !           473: In a printed manual, the table of contents is based on the information
        !           474: specified by the chapter structuring commands.
        !           475: 
        !           476: @subsection @@chapter
        !           477: 
        !           478: @code{@@chapter} identifies a chapter in the document.  It is followed by a
        !           479: single argument which is the rest of the line, as in
        !           480: 
        !           481: @example
        !           482: @@chapter Texinfo Files
        !           483: @end example
        !           484: 
        !           485: In @TeX{}, it serves to create a chapter of the document, specifying the
        !           486: chapter title.
        !           487: 
        !           488: In the Info file, @code{@@chapter} causes its argument to appear on a line
        !           489: by itself, with a line of asterisks inserted underneath.  Thus, the above
        !           490: example produces the output@refill
        !           491: 
        !           492: @example
        !           493: Texinfo Files
        !           494: *************
        !           495: @end example
        !           496: 
        !           497: @subsection @@unnumbered, @@appendix
        !           498: 
        !           499: These are equivalent to @code{@@chapter} for Info file output.  In a
        !           500: printed manual, they generate chapters that are numbered differently in the
        !           501: table of contents.  @code{@@unnumbered} chapters appear without chapter
        !           502: numbers of any kind, and @code{@@appendix} chapters are given a letter
        !           503: instead of a number.
        !           504: 
        !           505: @subsection @@section
        !           506: 
        !           507: @code{@@section} is like @code{@@chapter} except that in @TeX{} it makes
        !           508: a section rather than a chapter.  Sections go within chapters.  In the Info
        !           509: file, @code{@@chapter} and @code{@@section} differ only in that
        !           510: @code{@@section} underlines with @samp{=}.@refill
        !           511: 
        !           512: @subsection @@unnumberedsec, @@appendixsec
        !           513: 
        !           514: Use these constructs for sections within chapters made by
        !           515: @code{@@unnumbered} or @code{@@appendix}.
        !           516: 
        !           517: @subsection @@subsection
        !           518: 
        !           519: Subsections are to sections as sections are to chapters.  They are
        !           520: underlined with @samp{-}.
        !           521: 
        !           522: @subsection @@unnumberedsubsec, @@appendixsubsec
        !           523: 
        !           524: Use these constructs for subsections within sections within chapters made
        !           525: by @code{@@unnumbered} or @code{@@appendix}.
        !           526: 
        !           527: @subsection @@subsubsection
        !           528: 
        !           529: Subsubsections are to subsections as subsections are to sections.  They are
        !           530: underlined with periods.
        !           531: 
        !           532: @section Nodes and Cross References
        !           533: 
        !           534: @dfn{Nodes} are the points to which cross-references can refer.  The
        !           535: @code{@@node} command is used to define them.  Each node must be, also, a
        !           536: chapter, section, subsection or subsubsection, and the @code{@@node}
        !           537: command must always be followed by a chapter structuring command (with no
        !           538: blank line between them).
        !           539: 
        !           540: In the Info file, nodes play a fundamental role.  Each node has a name,
        !           541: and other nodes can refer to it by that name.  The @code{@@node} command
        !           542: specifies the name of the node that it defines, and also defines certain
        !           543: references to other nodes.  References to other nodes can also be defined
        !           544: with @code{@@menu} and the variants of @code{@@xref}.
        !           545: 
        !           546: In a printed manual, nodes are not a fundamental concept, but the
        !           547: @code{@@node} command still serves to define a cross-reference point
        !           548: and the variants of @code{@@xref} still serve to make references.
        !           549: 
        !           550: @subsection @@node
        !           551: 
        !           552: @code{@@node} defines the beginning of a new node in the Info output file
        !           553: (@inforef{top, info, info}.).  It is followed by four arguments, separated
        !           554: by commas, making up the rest of the line.  For example,@refill
        !           555: 
        !           556: @example
        !           557: @@node info, tex, commands, top
        !           558: @end example
        !           559: 
        !           560: @noindent
        !           561: defines a node named @code{info}, whose `next' pointer is to node
        !           562: @code{tex}, whose `previous' pointer is to node @code{commands}, and whose
        !           563: `up' pointer is to node @code{top}.  What this means is that texinfo
        !           564: changes @w{@code{@@node @var{args}}} into the special text string necessary to
        !           565: separate Info nodes and to identify the node that is starting and say what
        !           566: nodes it points to.@refill
        !           567: 
        !           568: The pointer names should be the names of nodes defined elsewhere.  For this
        !           569: example, nodes named @code{tex}, @code{commands} and @code{top} should be
        !           570: defined elsewhere in the file with other @code{@@node} commands.  It does
        !           571: not matter whether they are before or after the node that refers to
        !           572: them.@refill
        !           573: 
        !           574: Normally, node @var{a}'s `up' should point at the node whose menu mentions
        !           575: node @var{a}.  Node @var{a}'s `next' should point at the node that follows
        !           576: @var{a} in that menu, and node @var{a}'s `previous' should point at the
        !           577: node that precedes @var{a} in that menu.@refill
        !           578: 
        !           579: The top node of the file, named @samp{top}, should have as its parent the
        !           580: name of a node in another file, where there is a menu that leads to this
        !           581: file.  Specify the file name in parentheses.  If this file is to be
        !           582: installed directly in the Info directory file, use @samp{(dir)} as the
        !           583: parent of the top node; this is short for @samp{(dir)top}, the node @samp{top}
        !           584: in the file @file{dir}, which is the main menu of Info.
        !           585: 
        !           586: In @TeX{}, @code{@@node} is nearly ignored.  It generates no text.  Its
        !           587: only function is to identify the name to use for cross-references to the
        !           588: following chapter or section which makes up the body of the node.  (Cross
        !           589: references are made with @code{@@xref}.)@refill
        !           590: 
        !           591: @code{@@node} should always be followed immediately by a
        !           592: chapter-structuring command such as @code{@@chapter}, @code{@@section},
        !           593: @code{@@subsection} or @code{@@subsubsection}.
        !           594: 
        !           595: @subsection @@menu
        !           596: 
        !           597: Info file nodes can contain @dfn{menus} which point to other nodes.  You
        !           598: must type the menus in by hand, and surround them with lines containing
        !           599: @code{@@menu} and @code{@@end menu}.  The @code{@@menu} line changes
        !           600: into @code{* Menu:}, which indicates the beginning of a menu to the Info
        !           601: program.  The contents are unchanged by texinfo, except for the processing
        !           602: of any other @@ commands within.  The entire menu construct has no effect
        !           603: in the printed manual.@refill
        !           604: 
        !           605: @example
        !           606: @@menu
        !           607: * foo::         The node named foo tells you how to go fooing.
        !           608: * sw: switches. Type @@code@{m sw@} to see node @@code@{switches@}.
        !           609:                 which describes the switches available here.
        !           610: @@end menu
        !           611: @end example
        !           612: 
        !           613: @noindent
        !           614: produces
        !           615: 
        !           616: @example
        !           617: * menu:
        !           618: 
        !           619: * foo::         The node named foo tells you how to go fooing.
        !           620: * sw: switches. Type `m sw' to see node `switches'
        !           621:                 which describes the switches available here.
        !           622: @end example
        !           623: 
        !           624: In this example, the menu has two items.  @samp{foo} is both a menu item name
        !           625: and the name of the node referred to by that item.  @samp{sw} is the other
        !           626: menu item name, and it refers to the node named @samp{switches}.  Since no
        !           627: file name is specified with @samp{foo} or @samp{switches}, they must be the names
        !           628: of other nodes in the same Info file.  Nodes in other Info files can be
        !           629: referred to by putting the file name in parentheses at the beginning of the
        !           630: node name.
        !           631: 
        !           632: @subsection @@xref
        !           633: 
        !           634: @code{@@xref} generates a cross-reference.  In texinfo, it turns into
        !           635: an Info cross-reference which the Info @code{f} command can use
        !           636: to go directly to another node.  In @TeX{}, it turns into a sentence
        !           637: of the form
        !           638: 
        !           639: @example
        !           640: See section @var{section} [@var{topic}], page @var{page}
        !           641: @end example
        !           642: 
        !           643: @noindent
        !           644: but does not generate a period to end it.
        !           645: 
        !           646: @code{@@xref} must refer to an Info node created by @code{@@node}, by the
        !           647: node's name.  If I were in less of a rush, I would have made a node in this
        !           648: file for each texinfo command, and put in plenty of @@xref's to
        !           649: cross-reference them together.  The big node named @code{commands} would
        !           650: actually contain a menu naming the nodes for individual commands.
        !           651: 
        !           652: @code{@@xref} is followed by an argument inside braces, since it is used
        !           653: within a paragraph; but actually the text inside the braces is treated as
        !           654: several arguments, separated by commas.  Whitespace after these commas is
        !           655: ignored.  The closing brace must be followed by a period or a comma, since
        !           656: one of those two is required to terminate an Info cross-reference.  This
        !           657: period or comma will appear in the output, both Info file and printed
        !           658: manual.
        !           659: 
        !           660: The simplest form of @code{@@xref} takes one argument, the name of another
        !           661: node in the same Info file.  Here we show the input text, followed after a
        !           662: blank line by the output text for Info files and the output text for
        !           663: printed manuals.
        !           664: 
        !           665: @example
        !           666: @@xref@{foo@}, for more info.
        !           667: 
        !           668: *note foo::, for more info.
        !           669: @end example
        !           670: 
        !           671: @quotation
        !           672: See section @var{nnn} [foo], page @var{ppp}, for more info.
        !           673: @end quotation
        !           674: 
        !           675: With two arguments, the second one is used as the name of the Info
        !           676: cross-reference, while the first argument is still the node that the
        !           677: cross-reference points to:
        !           678: 
        !           679: @example
        !           680: @@xref@{foo node, foo@}, for more info.
        !           681: 
        !           682: *note foo: foo node, for more info.
        !           683: @end example
        !           684: 
        !           685: @quotation
        !           686: See section @var{nnn} [foo node], page @var{ppp}, for more info.
        !           687: @end quotation
        !           688: 
        !           689: A third argument replaces the node name when it actually appears
        !           690: in the TeX output.  It should state the topic discussed by the
        !           691: section being referenced.  Use a third argument when the node
        !           692: name is unsuitable because of syntax, grammar or diction.
        !           693: 
        !           694: @example
        !           695: @@xref@{foo node, foo, using foo@}, for more info.
        !           696: 
        !           697: *note foo: foo node, for more info.
        !           698: @end example
        !           699: 
        !           700: @quotation
        !           701: See section @var{nnn} [using foo], page @var{ppp}, for more info.
        !           702: @end quotation
        !           703: 
        !           704: If a third argument is given and the second one is empty,
        !           705: then the third argument serves both purposes:
        !           706: 
        !           707: @example
        !           708: @@xref@{foo node, , using foo@}, for more info.
        !           709: 
        !           710: *note using foo: foo node, for more info.
        !           711: @end example
        !           712: 
        !           713: @quotation
        !           714: See section @var{nnn} [using foo], page @var{ppp}, for more info.
        !           715: @end quotation
        !           716: 
        !           717: A fourth argument specifies the name of the Info file in which
        !           718: the referenced node is located, assuming it is not the one which
        !           719: the reference appears in.  @code{@@xref} with only four arguments
        !           720: is used when the reference is not within one Info file, but is
        !           721: within a single printed manual---when multiple texinfo files are
        !           722: incorporated into the same TeX run but make separate Info files.
        !           723: 
        !           724: @example
        !           725: @@xref@{foo node, foo, using foo, myinfofile@}, for more info.
        !           726: 
        !           727: *note foo: (myinfofile) foo node, for more info.
        !           728: @end example
        !           729: 
        !           730: @quotation
        !           731: See section @var{nnn} [using foo], page @var{ppp}, for more info.
        !           732: @end quotation
        !           733: 
        !           734: A fifth argument is used when referencing another Info file
        !           735: which is also part of another printed manual.  It gives the
        !           736: title of that manual.
        !           737: 
        !           738: @example
        !           739: @@xref@{foo node, foo, using foo, myinfofile, Mymanual@},
        !           740: for more info.
        !           741: 
        !           742: *note foo: (myinfofile) foo node, for more info.
        !           743: @end example
        !           744: 
        !           745: @quotation
        !           746: See section @var{nnn} [using foo], page @var{ppp}
        !           747: of Mymanual, for more info.
        !           748: @end quotation
        !           749: 
        !           750: @subsection @@pxref
        !           751: 
        !           752: @code{@@pxref} is nearly the same as @code{@@xref}; it differs in only
        !           753: two ways:
        !           754: 
        !           755: @enumerate
        !           756: @item
        !           757: The output starts with lower case `see' rather than `See'.
        !           758: @item
        !           759: A period is generated automatically in the Info file output to end the
        !           760: Info cross-reference.
        !           761: @end enumerate
        !           762: 
        !           763: The purpose of @code{@@pxref} is to be used inside parentheses as part of
        !           764: another sentence.  In the printed manual, no period is needed after the
        !           765: cross reference text itself (within the parentheses), but a period is
        !           766: needed there in the Info file because only thus can Info recognize the end
        !           767: of the cross-reference.  @code{@@pxref} spares you the need to use complicated
        !           768: methods to put a period into one form of the output and not the other.
        !           769: 
        !           770: @subsection @@inforef
        !           771: 
        !           772: @code{@@inforef} is used for cross-references to Info files for which
        !           773: there are no printed manuals.  Even in a printed manual, @code{@@inforef}
        !           774: generates a reference directing the user to look in an Info file.  The
        !           775: syntax is @code{@@inforef@{@var{node}, @var{name}, @var{file}@}}.
        !           776: 
        !           777: @example
        !           778: @@inforef@{foo node, fooing, FOO@}, to lose.
        !           779: 
        !           780: *note fooing: (FOO) foo node, to lose.
        !           781: @end example
        !           782: 
        !           783: @quotation
        !           784: See Info file @file{FOO}, node `foo node', to lose.
        !           785: @end quotation
        !           786: 
        !           787: @section Insertions
        !           788: 
        !           789: Insertions are blocks of text, consisting of one or more whole paragraphs
        !           790: that are set off from the bulk of the text and treated differently.  They
        !           791: are usually indented, and often not filled.
        !           792: 
        !           793: In texinfo, an insertion is always begun by an @@-command on a line by
        !           794: itself, and ended with an @code{@@end} command.  For example, an @dfn{example}
        !           795: is a kind of insertion that is begun with @code{@@example} and ended with
        !           796: @code{@@end example}.
        !           797: 
        !           798: @subsection @@quotation
        !           799: 
        !           800: @code{@@quotation} is used to indicate text that is excerpted from another
        !           801: (real or hypothetical) printed work.  The inside of a quotation is
        !           802: processed normally except that
        !           803: 
        !           804: @enumerate
        !           805: @item
        !           806: The margins are narrower.
        !           807: @item
        !           808: Paragraphs are not indented.
        !           809: @item
        !           810: Interline spacing and interparagraph spacing are reduced.
        !           811: @end enumerate
        !           812: 
        !           813: Thus, the input
        !           814: 
        !           815: @example
        !           816: @@quotation
        !           817: This is
        !           818: a foo.
        !           819: @@end quotation
        !           820: @end example
        !           821: 
        !           822: @noindent
        !           823: produces in the printed manual
        !           824: 
        !           825: @quotation
        !           826: @quotation
        !           827: This is a foo.
        !           828: @end quotation
        !           829: @end quotation
        !           830: 
        !           831: @noindent
        !           832: and in the Info file
        !           833: 
        !           834: @quotation
        !           835: @example
        !           836: This is
        !           837: a foo.
        !           838: @end example
        !           839: @end quotation
        !           840: 
        !           841: @subsection @@example
        !           842: 
        !           843: @code{@@example} is used to indicate an example that is not part of the
        !           844: running text.  In the printed manual, this is done by switching to
        !           845: a fixed width font, turning off filling, and making extra spaces
        !           846: and blank lines significant.  In the Info file, an analogous result
        !           847: is obtained by indenting each line with five extra spaces.
        !           848: 
        !           849: @code{@@example} should appear on a line by itself; this line will
        !           850: disappear from the output.  Mark the end of the example with a line
        !           851: containing @code{@@end example}, which will likewise disappear.
        !           852: Example:
        !           853: 
        !           854: @example
        !           855: @@example
        !           856: mv foo bar
        !           857: @@end example
        !           858: @end example
        !           859: 
        !           860: @noindent
        !           861: produces
        !           862: 
        !           863: @quotation
        !           864: @example
        !           865: mv foo bar
        !           866: @end example
        !           867: @end quotation
        !           868: 
        !           869: Don't use tabs in lines of an example!
        !           870: 
        !           871: @subsection @@display
        !           872: 
        !           873: @code{@@display} is just like @code{@@example} except that, in the
        !           874: printed manual, @code{@@display} does not select the fixed-width font.
        !           875: In fact, it does not specify the font at all, so that the text appears
        !           876: in the same font it would have appeared in without the @code{@@display}.@refill
        !           877: 
        !           878: @subsection @@itemize
        !           879: 
        !           880: @code{@@itemize} is used to produce sequences of indented paragraphs, with
        !           881: a mark inside the left margin at the beginning of each.  The rest of the
        !           882: line that starts with @code{@@itemize} should contain the character or
        !           883: texinfo commands to generate such a mark.  It should ultimately result in a
        !           884: single character, or the indentation will come out wrong.  You may use
        !           885: the texinfo commands that are normally followed by @samp{@{@}}; in fact, you 
        !           886: may omit the @samp{@{@}} after the command if you use just one command
        !           887: and nothing else.
        !           888: 
        !           889: The text of the indented paragraphs themselves come after the @code{@@itemize},
        !           890: up to another line that says @code{@@end @@itemize}.
        !           891: 
        !           892: Before each paragraph for which a mark in the margin is desired, place a
        !           893: line that says just @code{@@item}.
        !           894: 
        !           895: Here is an example of the use of @code{@@itemize}, followed by the output
        !           896: it produces.  Note that @code{@@bullet} produces a @code{*} in texinfo and
        !           897: a round dot in @TeX{}.
        !           898: 
        !           899: @example
        !           900: @@itemize @@bullet
        !           901: @@item
        !           902: Some text for foo.
        !           903: @@item
        !           904: Some text
        !           905: for bar.
        !           906: @@end itemize
        !           907: @end example
        !           908: 
        !           909: @noindent
        !           910: produces
        !           911: 
        !           912: @quotation
        !           913: @itemize @bullet
        !           914: @item
        !           915: Some text for foo.
        !           916: @item
        !           917: Some text
        !           918: for bar.
        !           919: @end itemize
        !           920: @end quotation
        !           921: 
        !           922: Texinfo indents the lines of the itemization by five additional columns,
        !           923: but it does not fill them.  If @code{@@refill} is used, the paragraph is
        !           924: filled to the narrowed width.
        !           925: 
        !           926: @subsection @@enumerate
        !           927: 
        !           928: @code{@@enumerate} is like @code{@@itemize} except that the marks in the
        !           929: left margin contain successive integers starting with 1.  Do not put any
        !           930: argument on the same line as @code{@@enumerate}.@refill
        !           931: 
        !           932: @example
        !           933: @@enumerate
        !           934: @@item
        !           935: Some text for foo.
        !           936: @@item
        !           937: Some text
        !           938: for bar.
        !           939: @@end enumerate
        !           940: @end example
        !           941: 
        !           942: @noindent
        !           943: produces
        !           944: 
        !           945: @quotation
        !           946: @enumerate
        !           947: @item
        !           948: Some text for foo.
        !           949: @item
        !           950: Some text
        !           951: for bar.
        !           952: @end enumerate
        !           953: @end quotation
        !           954: 
        !           955: @subsection @@table
        !           956: 
        !           957: @code{@@table} is similar to @code{@@itemize}, but allows you to specify a
        !           958: name or heading line for each item.
        !           959: 
        !           960: You must follow each use of @code{@@item} inside of @code{@@table} with
        !           961: text to serve as the heading line for that item.
        !           962: 
        !           963: Also, @code{@@table} itself must be followed by an argument that is a
        !           964: texinfo command such as @code{@@code}, @code{@@var}, @code{@@kbd} or
        !           965: @code{@@asis}.  This command will be applied to the text of each item.
        !           966: @code{@@asis} is a command that does nothing; in that case, each item will
        !           967: come out exactly as it specifies.  (Various other command names might work
        !           968: in this context.  Only commands that normally take arguments in braces may
        !           969: be used, but here you use the command name without an argument.
        !           970: @code{@@item} supplies the arguments.)@refill
        !           971: 
        !           972: @example
        !           973: @@table @@samp
        !           974: @@item foo
        !           975: This is the text for
        !           976: @@samp@{foo@}.
        !           977: @@item bar
        !           978: Text for @@samp@{bar@}.
        !           979: @@end table
        !           980: @end example
        !           981: 
        !           982: @noindent
        !           983: produces
        !           984: 
        !           985: @quotation
        !           986: @table @samp
        !           987: @item foo
        !           988: This is the text for
        !           989: @samp{foo}.
        !           990: @item bar
        !           991: Text for @samp{bar}.
        !           992: @end table
        !           993: @end quotation
        !           994: 
        !           995: @subsection @@itemx
        !           996: 
        !           997: @code{@@itemx} is used inside a @code{@@table} when you have
        !           998: two or more named items for the same block of text.  Use @code{@@itemx}
        !           999: for all but the first of the items.  It works exactly like @code{@@item}
        !          1000: except that it does not generate extra vertical space above the item text.
        !          1001: Example:@refill
        !          1002: 
        !          1003: @example
        !          1004: @@table @@code
        !          1005: @@item upcase
        !          1006: @@itemx downcase
        !          1007: These two functions accept a character or a string as argument,
        !          1008: and return the corresponding upper case (lower case) character
        !          1009: or string.
        !          1010: @@end table
        !          1011: @end example
        !          1012: 
        !          1013: @noindent
        !          1014: produces
        !          1015: 
        !          1016: @quotation
        !          1017: @table @code
        !          1018: @item upcase
        !          1019: @itemx downcase
        !          1020: These two functions accept a character or a string as argument,
        !          1021: and return the corresponding upper case (lower case) character
        !          1022: or string.
        !          1023: @end table
        !          1024: @end quotation
        !          1025: 
        !          1026: @subsection @@noindent
        !          1027: 
        !          1028: @code{@@noindent} is not a kind of insertion, but it is normally used
        !          1029: following an insertion.
        !          1030: 
        !          1031: If you have text following an @code{@@example} or other similar ``special
        !          1032: paragraph'' that reads as a continuation of the text before the
        !          1033: @code{@@example}, it is good to prevent this text from being indented as a
        !          1034: new paragraph.  To accomplish this, put @code{@@noindent} on a line by
        !          1035: itself before the start of the text that should not be indented.
        !          1036: 
        !          1037: To adjust the number of blank lines properly in the Info file output,
        !          1038: remember that the line containing @code{@@noindent} does not generate a
        !          1039: blank line, and neither does the @code{@@end example} line.
        !          1040: 
        !          1041: In the texinfo source file for this documentation, each of the lines that
        !          1042: says `produces' is preceded by a line containing @code{@@noindent}.
        !          1043: 
        !          1044: @section Other Paragraph-Separating Commands
        !          1045: 
        !          1046: @subsection @@setfilename
        !          1047: 
        !          1048: @code{@@setfilename @var{file}} informs texinfo that the Info file being
        !          1049: produced is named @var{file}.  This information is entered in every node
        !          1050: header.  It also tells texinfo the name for the output file.
        !          1051: 
        !          1052: @subsection @@comment
        !          1053: 
        !          1054: A line starting with @code{@@comment} or @code{@@c} is ignored in both
        !          1055: printed and Info output.
        !          1056: 
        !          1057: @subsection @@ignore
        !          1058: 
        !          1059: A line saying @code{@@ignore} causes everything up to the following
        !          1060: @code{@@end ignore} to be ignored in both printed and Info output.
        !          1061: 
        !          1062: @subsection @@br
        !          1063: 
        !          1064: In a printed manual, a line containing @code{@@br} forces a paragraph
        !          1065: break; in the Info file output, it does nothing (not even a blank line
        !          1066: results from it).
        !          1067: 
        !          1068: @subsection @@sp
        !          1069: 
        !          1070: A line containing @code{@@sp @var{n}} generates @var{n} blank lines of space in either the
        !          1071: printed manual or the Info file.
        !          1072: 
        !          1073: @subsection @@page
        !          1074: 
        !          1075: A line containing @code{@@page} starts a new page in a printed manual.  The
        !          1076: line has no effect on Info files since they are not paginated.
        !          1077: 
        !          1078: @subsection @@group
        !          1079: 
        !          1080: A line containing @code{@@group} begins an unsplittable vertical group,
        !          1081: which must appear entirely on one page.  The group is terminated by a line
        !          1082: containing @code{@@end group}.  These two lines produce no output of their
        !          1083: own, and in the Info file output they have no effect at all.
        !          1084: 
        !          1085: @subsection @@need
        !          1086: 
        !          1087: A line containing @code{@@need @var{n}} starts a new page in a printed
        !          1088: manual if fewer than @var{n} mils (thousandths of an inch) remain on the
        !          1089: current page.  The line has no effect on Info files since they are not
        !          1090: paginated.@refill
        !          1091: 
        !          1092: @subsection @@center
        !          1093: 
        !          1094: A line containing @code{@@center @var{text}} produces a line of output containing @var{text},
        !          1095: centered between the margins.
        !          1096: 
        !          1097: @subsection Conditionals
        !          1098: 
        !          1099: You may not always be able to use the same text for @TeX{} and texinfo.
        !          1100: Use the conditional commands to specify which text is for @TeX{} and which
        !          1101: is for texinfo.
        !          1102: 
        !          1103: @code{@@ifinfo} begins text that should be ignored by @TeX{}.  It should
        !          1104: appear on a line by itself.  End the texinfo-only text with a line
        !          1105: containing @code{@@end ifinfo}.@refill
        !          1106: 
        !          1107: Likewise, @code{@@iftex} and @code{@@end iftex} lines delimit code
        !          1108: that should be ignored by texinfo.@refill
        !          1109: 
        !          1110: @section Generating Indices
        !          1111: 
        !          1112: Texinfo files can generate indices automatically.  Each index covers
        !          1113: a certain kind of entry (functions, or variables, or concepts, etc.)@:
        !          1114: and lists all of those entries in alphabetical order, together with
        !          1115: information on how to find the discussion of each entry.  In a printed
        !          1116: manual, this information consists of page numbers.  In an Info file,
        !          1117: it consists of a menu item leading to the node in which the entry
        !          1118: is discussed.
        !          1119: 
        !          1120: 
        !          1121: Normally, six indices are provided for:
        !          1122: 
        !          1123: @itemize @bullet
        !          1124: @item
        !          1125: A @dfn{program index} listing names of programs and leading to the places
        !          1126: where those programs are documented.
        !          1127: 
        !          1128: @item
        !          1129: A @dfn{function index} listing functions (such as, entry points of
        !          1130: libraries).
        !          1131: 
        !          1132: @item
        !          1133: A @dfn{variables index} listing variables (such as, external variables of
        !          1134: libraries).
        !          1135: 
        !          1136: @item
        !          1137: A @dfn{data type index} listing data types (such as, structures defined in
        !          1138: header files).
        !          1139: 
        !          1140: @item
        !          1141: A @dfn{keystroke index} listing keyboard commands.
        !          1142: 
        !          1143: @item
        !          1144: A @dfn{concept index} listing concepts that are discussed.
        !          1145: @end itemize
        !          1146: 
        !          1147: @noindent
        !          1148: Not every manual needs all of these.  Two or more indices can be combined
        !          1149: into one using the @code{@@synindex} command as described below.
        !          1150: 
        !          1151: @subsection Defining the Entries of an Index
        !          1152: 
        !          1153: The data to make an index comes from many individual commands scattered
        !          1154: throughout the source file.  Each command says to add one entry to a
        !          1155: particular index, giving the current page number or node name as the
        !          1156: reference.
        !          1157: 
        !          1158: @table @code
        !          1159: @item @@cindex @var{concept}
        !          1160: Make an entry in the concept index for @var{concept}, referring to the
        !          1161: current page or node.
        !          1162: @item @@findex @var{function}
        !          1163: Make an entry in the function index for @var{function}, referring to the
        !          1164: current page or node.
        !          1165: @item @@vindex @var{variable}
        !          1166: Make an entry in the variable index for @var{variable}, referring to the
        !          1167: current page or node.
        !          1168: @item @@pindex @var{program}
        !          1169: Make an entry in the program index for @var{program}, referring to the
        !          1170: current page or node.
        !          1171: @item @@kindex @var{key}
        !          1172: Make an entry in the key index for @var{key}, referring to the
        !          1173: current page or node.
        !          1174: @item @@tindex @var{data type}
        !          1175: Make an entry in the data type index for @var{data type}, referring to the
        !          1176: current page or node.
        !          1177: @end table
        !          1178: 
        !          1179: If the same name is indexed on several pages, all the pages are listed
        !          1180: in the printed manual's index.  However, only the first node referenced
        !          1181: will appear in the index of an Info file.
        !          1182: 
        !          1183: You are not actually required to use these indices for their canonical
        !          1184: purposes.  For example, you might wish to index some C preprocessor macros.
        !          1185: You could put them in the function index along with actual functions, just
        !          1186: by writing @code{@@findex} commands for them; then, when you print the
        !          1187: ``function index'', you could give it the title `Function and Macro Index'
        !          1188: and all will be consistent for the reader.  Or you could put the macros in
        !          1189: with the data types by writing @code{@@tindex} commands for them, and give
        !          1190: that index a suitable title so the reader will understand.
        !          1191: 
        !          1192: @subsection Combining Indices
        !          1193: 
        !          1194: Sometimes you will want to combine two disparate indices such as functions
        !          1195: and variables, perhaps because you have few enough of one of them that
        !          1196: a separate index for them would look silly.
        !          1197: 
        !          1198: You could put variables into the function index by writing @code{@@findex}
        !          1199: commands for them instead of @code{@@vindex} commands, and produce a
        !          1200: consistent manual by printing the function index with the title `Function
        !          1201: and Variable Index' and not printing the ``variable index'' at all; but this
        !          1202: is not a robust procedure.  It works only as long as your document is never
        !          1203: included in part of or together with another document that is designed to
        !          1204: have a separate variable index; if you did that, the variables from your
        !          1205: document and those from the other would not end up together.
        !          1206: 
        !          1207: What you should do instead when you want functions and variables in one
        !          1208: index is to index the variables with @code{@@vindex} as they should be,
        !          1209: but in the overall file for the document use @code{@@synindex} to redirect
        !          1210: these @code{@@vindex} commands to the function index.  @code{@@synindex} takes two
        !          1211: arguments: the name of an index to redirect, and the name of an index to
        !          1212: redirect it to.  For this purpose, the indices are given two-letter names:
        !          1213: 
        !          1214: @table @samp
        !          1215: @item cp
        !          1216: the concept index.
        !          1217: @item vr
        !          1218: the variable index.
        !          1219: @item fn
        !          1220: the function index.
        !          1221: @item ky
        !          1222: the key index.
        !          1223: @item pg
        !          1224: the program index.
        !          1225: @item tp
        !          1226: the data type index.
        !          1227: @end table
        !          1228: 
        !          1229: Thus, @code{@@synindex vr fn} at the front of an overall manual file
        !          1230: will cause all entries designated for the variable index to go to
        !          1231: the function index as well.  But the included files of this manual
        !          1232: could be used in some other manual, that does not do @code{@@synindex},
        !          1233: and generate a separate variable index.
        !          1234: 
        !          1235: If the texinfo file containing @code{@@synindex} is also to be made into
        !          1236: an Info file itself, you should use @code{@@iftex} around the @code{@@synindex}
        !          1237: commands.
        !          1238: 
        !          1239: @subsection Printing an Index
        !          1240: 
        !          1241: To print an index means to include it as part of a manual or Info file.
        !          1242: This does not happen automatically just because you use @code{@@cindex} or
        !          1243: other index-entry generating commands in the input; those just cause the
        !          1244: raw data for the index to be accumulated.  To print an index, you must
        !          1245: include special texinfo commands at the place in the document where you
        !          1246: want the index to appear.  Also, for the case of the printed manual, you
        !          1247: must run a special program to sort the raw data to produce a sorted index
        !          1248: file, which is what will actually be used to print the index.@refill
        !          1249: 
        !          1250: The texinfo command you need is @code{@@printindex}.  It takes the
        !          1251: two-letter index name (see table above) as an argument without braces, and
        !          1252: reads the corresponding sorted index file and formats it appropriately into
        !          1253: an index.@refill
        !          1254: 
        !          1255: @code{@@printindex} does not generate a chapter heading for the index.
        !          1256: You should precede it with a suitable section or chapter command (usually
        !          1257: @code{@@unnumbered}) to supply the chapter heading and put the index into
        !          1258: the table of contents.  And before that, you probably need a @code{@@node}
        !          1259: command.  For example,@refill
        !          1260: 
        !          1261: @example
        !          1262: @@node Variables Index, Concept Index, Function Index, Top
        !          1263: @@unnumbered Variable Index
        !          1264: 
        !          1265: @@printindex vr
        !          1266: 
        !          1267: @@node Concept index,, Variables Index, Top
        !          1268: @@unnumbered Concept Index
        !          1269: 
        !          1270: @@printindex cp
        !          1271: @end example
        !          1272: 
        !          1273: @subsection Sorting Indices
        !          1274: 
        !          1275: In @TeX{}, @code{@@printindex} needs a sorted index file to work from.
        !          1276: @TeX{} does not know how to do sorting; this is one of the main
        !          1277: deficiencies of @TeX{}.  You must invoke the program @code{texindex} to do
        !          1278: so, giving it the names of the raw index files to be sorted as arguments.
        !          1279: You do not have to run @code{texindex} on all of them; only the ones you
        !          1280: are going to print.
        !          1281: 
        !          1282: @TeX{} outputs raw index files under names that obey a standard convention.
        !          1283: These names are the name of your main input file to @TeX{}, with everything
        !          1284: after the first period thrown away, and the two letter names of indices
        !          1285: added at the end.  For example, the raw index output files for the input
        !          1286: file @file{foo.texinfo} would be @file{foo.cp}, @file{foo.vr},
        !          1287: @file{foo.fn}, @file{foo.tp}, @file{foo.pg} and @file{foo.ky}.  Those are
        !          1288: exactly the arguments to give to @code{texindex}.@refill
        !          1289: 
        !          1290: For each file specified, @code{texindex} generates a sorted index file whose
        !          1291: name is made by appending @samp{s} to the input file name.  The
        !          1292: @code{@@printindex} command knows to look for a file of that name.
        !          1293: @code{texindex} does not alter the raw index output file.@refill
        !          1294: 
        !          1295: You need not run @code{texindex} after each @TeX{} run.  If you don't, the
        !          1296: next @TeX{} run will use whatever sorted index files happen to exist from
        !          1297: the previous use of @code{texindex}.  This is usually ok while you are
        !          1298: debugging.
        !          1299: 
        !          1300: @node make-info, manual ,commands, top
        !          1301: @section Converting Texinfo Files into Info Files
        !          1302: 
        !          1303: Just visit a texinfo file and invoke
        !          1304: 
        !          1305: @example
        !          1306: @kbd{Meta-x texinfo-format-buffer}
        !          1307: @end example
        !          1308: 
        !          1309: @noindent
        !          1310: to convert it to an Info file.  A new buffer is created and the Info file
        !          1311: text is generated there.  @kbd{C-x C-s} will save it under the name specified
        !          1312: in the @code{@@setfilename} command.
        !          1313: 
        !          1314: If the file is large (more than 30 nodes) it is desirable to make a
        !          1315: @dfn{tag table} for it.  To do this, load the @code{info} library
        !          1316: into Emacs with @kbd{M-x load @key{RET} info @key{RET}} and then
        !          1317: do @kbd{M-x Info-tagify}.@refill
        !          1318: 
        !          1319: To check your node structure for errors, load Info and then do
        !          1320: @kbd{M-x Info-validate}.
        !          1321: 
        !          1322: @node manual,, make-info, top
        !          1323: @section Generating a Real Manual
        !          1324: 
        !          1325: Most of the time a single printed manual will be made from several texinfo
        !          1326: source files, each of which is made into a single Info file.  Also, the
        !          1327: real manual should have a table of contents.  Several special commands are
        !          1328: used for these purposes.
        !          1329: 
        !          1330: Every texinfo file that is to be the top-level input to @TeX{} must begin
        !          1331: with a line that looks like
        !          1332: 
        !          1333: @example
        !          1334: \input texinfo   @@c -*-texinfo-*-
        !          1335: @end example
        !          1336: 
        !          1337: @noindent
        !          1338: This serves two functions.
        !          1339: 
        !          1340: @enumerate
        !          1341: @item
        !          1342: When the file is processed by @TeX{}, it loads the macros needed for
        !          1343: processing a texinfo file.
        !          1344: @item
        !          1345: When the file is edited in Emacs, it causes Texinfo Mode to be used.
        !          1346: @end enumerate
        !          1347: 
        !          1348: Every such texinfo file must end with a line saying
        !          1349: 
        !          1350: @example
        !          1351: @@bye
        !          1352: @end example
        !          1353: 
        !          1354: which terminates @TeX{} processing and forces out unfinished pages.
        !          1355: 
        !          1356: You might also want to include a line saying
        !          1357: 
        !          1358: @example
        !          1359: @@setchapternewpage odd
        !          1360: @end example
        !          1361: 
        !          1362: @noindent
        !          1363: to cause each chapter to start on a fresh odd-numbered page.
        !          1364: 
        !          1365: Here is an example of a texinfo file used to generate a manual from two
        !          1366: other texinfo files, @samp{foo.texinfo} and @samp{bar.texinfo}, each of
        !          1367: which makes a separate Info file.  The commands used in it are explained
        !          1368: in the rest of this section.@refill
        !          1369: 
        !          1370: @example
        !          1371: \input texinfo @@c -*-texinfo-*-
        !          1372: @@settitle This Manual
        !          1373: 
        !          1374: @@c put entries intended for the data type index
        !          1375: @@c into the variable index instead.
        !          1376: @@synindex tp vr
        !          1377: @@setchapternewpage odd
        !          1378: 
        !          1379: @@titlepage
        !          1380: @@sp 10
        !          1381: @@center @@titlefont@{This Manual@}
        !          1382: @@sp 3
        !          1383: @@center by
        !          1384: @@sp 3
        !          1385: @@center @@titlefont@{Me@}
        !          1386: @@end titlepage
        !          1387: 
        !          1388: @@c Include the files with the actual text
        !          1389: @@include foo.texinfo
        !          1390: @@include bar.texinfo
        !          1391: 
        !          1392: @@c Print the indices
        !          1393: @@unnumbered Function Index
        !          1394: @@printindex fn
        !          1395: @@unnumbered Variable and Data Type Index
        !          1396: @@printindex vr
        !          1397: @@unnumbered Program Index
        !          1398: @@printindex pg
        !          1399: @@unnumbered Concept Index
        !          1400: @@printindex cp
        !          1401: 
        !          1402: @@c Print the tables of contents
        !          1403: @@summarycontents
        !          1404: @@contents
        !          1405: 
        !          1406: @@c That's all
        !          1407: @@bye
        !          1408: @end example
        !          1409: 
        !          1410: @subsection Title Page
        !          1411: 
        !          1412: Start the material for the title page with @samp{@@titlepage} and follow it
        !          1413: with @samp{@@end titlepage}.  Both of these commands should stand alone on
        !          1414: a line.  They cause the title material to appear only in the printed
        !          1415: manual, not in an info file.  Also, the @samp{@@end titlepage} command
        !          1416: starts a new page and turns on page numbering (generation of headings).
        !          1417: 
        !          1418: The within-paragraph command @samp{@@titlefont} can be used to select a
        !          1419: large font suitable for the title itself.
        !          1420: 
        !          1421: @subsection Headings
        !          1422: 
        !          1423: Texinfo prints the manual title on every other page as a heading, and the
        !          1424: current chapter title on the remaining pages.  It knows the chapter title
        !          1425: automatically, but you must tell it the manual title with @code{@@settitle}:
        !          1426: 
        !          1427: @example
        !          1428: @@settitle @var{title}
        !          1429: @end example
        !          1430: 
        !          1431: @noindent
        !          1432: on a line by itself causes @var{title} to be used for the headings.
        !          1433: 
        !          1434: The @code{@@settitle} command should precede everything that generates
        !          1435: actual output.
        !          1436: 
        !          1437: Normally, headings start appearing after the @samp{@@end titlepage} command.
        !          1438: (They are not wanted on the title page.)  However, you can turn headings on
        !          1439: and off explicitly with the @samp{@@headings} command:
        !          1440: 
        !          1441: @example
        !          1442: @@headings on
        !          1443: @end example
        !          1444: 
        !          1445: @noindent
        !          1446: to start output of headings (starting with the page containing the command)
        !          1447: or
        !          1448: 
        !          1449: @example
        !          1450: @@headings off
        !          1451: @end example
        !          1452: 
        !          1453: @noindent
        !          1454: to stop output of headings (starting also with the current page).
        !          1455: 
        !          1456: @subsection @@include
        !          1457: 
        !          1458: A line of the form @code{@@include @var{filename}} is ignored when generating an
        !          1459: Info file, but in a printed manual it causes the contents of the file
        !          1460: @var{filename} to be processed at that point.
        !          1461: 
        !          1462: Normally, the file named @var{filename} is made into a separate Info file.
        !          1463: The file containing the @code{@@include} may refer to the other Info file
        !          1464: with Info cross-references or menus, since those fill the function of
        !          1465: inclusion for the Info data base.
        !          1466: 
        !          1467: Another technique is to have a special file, used only for making a
        !          1468: comprehensive manual, containing nothing but the beginning, the end, and a
        !          1469: bunch of @code{@@include} commands.
        !          1470: 
        !          1471: A file that is intended to be processed with @code{@@include} should not
        !          1472: start with @samp{\input texinfo}, as that has already been done by the
        !          1473: outer file, and the character @samp{\} has already been redefined to
        !          1474: generate a backslash in the output.
        !          1475: 
        !          1476: A file that is intended to be processed with @code{@@include} should not
        !          1477: end with @code{@@bye}, since that would terminate @TeX{} processing immediately.
        !          1478: 
        !          1479: @subsection Table of Contents
        !          1480: 
        !          1481: The commands @code{@@chapter}, @code{@@section}, etc., supply the
        !          1482: information to make up a table of contents, but they do not cause an actual
        !          1483: table to be output.  To do this, you must use the commands
        !          1484: @code{@@contents} and @code{@@summarycontents}.@refill
        !          1485: 
        !          1486: @code{@@contents}, which should be used on a line by itself, outputs (into
        !          1487: a printed manual) a complete table of contents, based on the
        !          1488: @code{@@chapter} and other sectioning commands already seen.@refill
        !          1489: 
        !          1490: @code{@@summarycontents} generates a summary table of contents that lists
        !          1491: only the chapters (and appendixes and unnumbered chapters); sections,
        !          1492: subsections and subsubsections are omitted.
        !          1493: 
        !          1494: You can use either one of these commands, or both.  Each one automatically
        !          1495: generates a chapter-like heading at the top of the page.  Tables of
        !          1496: contents should be generated at the very end of the manual, just before the
        !          1497: @code{@@bye} command; they should follow any indices that are output, so
        !          1498: that the indices will appear in the contents.
        !          1499: 
        !          1500: @example
        !          1501: @var{indices}@dots{}
        !          1502: @@summarycontents
        !          1503: @@contents
        !          1504: @@bye
        !          1505: @end example
        !          1506: 
        !          1507: The commands @code{@@contents} and @code{@@summarycontents} are ignored when an
        !          1508: Info file is being generated.
        !          1509: 
        !          1510: @contents
        !          1511: @bye

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.