Info file ../info/texinfo, produced by Makeinfo, -*- Text -*- from input file texinfo.texinfo. This file documents Texinfo, a documentation system that uses a single source file to produce both on-line help and a printed manual. This is edition 1.1 of the Texinfo documentation, and is for the Texinfo that is distributed as part of Version 18 of GNU Emacs. Copyright (C) 1988 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation.  File: texinfo, Node: Top, Next: License, Prev: (dir), Up: (dir) * Menu: * License:: Licensing information. * Overview:: What is Texinfo? * Texinfo Mode:: Special features in GNU Emacs. * Beginning a File:: What to put at the beginning of a Texinfo file. * Ending a File:: What to put at the end of a Texinfo file. * Structuring:: How to make nodes and chapters. * Quotations and Examples:: How to insert quotations and examples. * Lists and Tables:: How to make lists and tables. * Cross References:: How to make cross references. * Formatting Paragraphs:: How to format paragraphs. * Marking Text:: How to mark code, definitions, variables etc. * Conditionals:: Putting text in only Info or the printed work. * Printing Hardcopy:: How to print a hardcopy of the manual. * Creating an Info File:: How to create an on-line Info file. * Catching Mistakes:: How to find problems. Indices, nodes containing large menus * Command Index:: An item for each @-command. * Concept Index:: An item for each concept. A detailed node listing Overview * Info File:: Characteristics of the Info file. * Printed Manual:: Characteristics of the printed manual. * Conventions:: General syntactic conventions. * Short Sample:: A short sample Texinfo file. Using Texinfo Mode * Info on a Region:: Formatting a region for Info. * Showing the Structure:: Showing the structure of a file. * Inserting:: Inserting frequently used commands. Beginning a Texinfo File. * First Line:: The first line of a Texinfo file. * Start-of-Header:: Identifying the start of the header. * Setfilename:: Specifying the name of the Info file. * Settitle:: Specifying the title used by the headings. * Setchapternewpage:: Starting chapters on odd numbered pages. * Titlepage:: The title and copyright page. * Center:: Centering a line. * Copyright & Printed Permissions:: Ensuring free distributability. * Top Node:: The master menu. * License and Distribution:: Your are free to copy and distribute this. Ending a Texinfo File * Contents:: Generating tables of contents. * Indices:: Generating indices. * Index Entries:: Defining the entries of an index. * Combining Indices:: Putting two or more indices together. * Printing Indices & Menus:: Printing an index and generating menus. Node and Chapter Structuring * Chapter:: Creating a chapter. * Unnumbered and Appendix:: Chapter-like parts. * Section:: Creating sections * Subsection:: Creating subsections. * Subsubsection:: Creating subsubsections. * Node:: Creating nodes. * Menu:: Creating menus. Making quotations and examples * Quotation:: Inserting long quotations. * Example:: Inserting examples of code and the like. * Display:: Inserting displayed text. Making lists and two column tables * Itemize:: Creating itemized lists. * Enumerate:: Creating enumerated lists. * Table:: Creating two column tables. * Itemx:: Putting an extra item in the first column of a table. Making Cross References * Xref:: Making a regular cross reference. * Pxref:: Making a parenthetical cross reference. * Inforef:: Making a cross reference to an Info file. Formatting Paragraphs * Refilling & Noindent:: Refilling paragraphs and preventing indentation * Refill:: Using the `@refill' command. * Noindent:: Using the `@noindent' command. Breaks, Blank Lines and Groups * Line Breaks:: Inserting line breaks in TeX. * Sp:: Inserting blank lines. * Br:: Inserting paragraph breaks. * W:: Preventing line breaks. * Page:: Starting new pages. * Group:: Holding text together on one page. * Need:: Keeping text together. Marking Text Within a Paragraph * Code:: A literal example of a piece of a program. * Samp:: A literal example of a sequence of characters. * File:: The name of a file. * Kbd:: The names of keys or else characters you type. * Key:: The conventional name for a key on a keyboard. * Ctrl:: Indicates the ASCII control character. * Var:: A variable. * Dfn:: The introductory or defining use of a term. * Cite:: The name of a book. Inserting Braces, `@' and Periods * Braces Atsigns Periods:: Inserting braces, `@' and periods. * Dots Bullets Tex:: Inserting dots, bullets and the TeX logo * Emphasis:: Emphasizing text. Emphasizing Text * Emph and Strong:: Emphasizing text. * Fonts:: Selecting italic, bold or typewriter fonts. Creating an Info File * Installing an Info File:: Putting the Info file in the `info' directory. Catching Mistakes * Debugging with Info:: Catching errors with info formatting. * Using the Emacs Lisp Debugger:: Using the Emacs Lisp Debugger * Debugging with Tex:: Catching errors with TeX formatting. * Using texinfo-show-structure:: Using `texinfo-show-structure' to catch mistakes. * Using Occur:: Using `occur' to catch mistakes. * Running Info-Validate:: Checking for unreferenced nodes. Finding badly referenced nodes * Info-Validating a Large File:: Running `Info-validate' on a large file. * Splitting:: Splitting a file manually. Appendices * Command Syntax:: Details about the syntax. * Include Files:: Making one printed file out of several Info files. * TeX Input:: Where TeX finds its `\input' file. * Sample Permissions:: You may copy GNU Software. * Ifinfo Permissions:: What to put in the `ifinfo' section. * Titlepage Permissions:: What to put in the `@titlepage' section.  File: texinfo, Node: License, Next: Overview, Prev: Top, Up: Top Licensing Information ********************* The programs currently being distributed that relate to Texinfo include two portions of GNU Emacs, plus two other separate programs (`texindex' and `texinfo.tex'). These programs are "free"; this means that everyone is free to use them and free to redistribute them on a free basis. The Texinfo related programs are not in the public domain; they are copyrighted and there are restrictions on their distribution, but these restrictions are designed to permit everything that a good cooperating citizen would want to do. What is not allowed is to try to prevent others from further sharing any version of these programs that they might get from you. Specifically, we want to make sure that you have the right to give away copies of the programs that relate to Texinfo, that you receive source code or else can get it if you want it, that you can change these programs or use pieces of them in new free programs, and that you know you can do these things. To make sure that everyone has such rights, we have to forbid you to deprive anyone else of these rights. For example, if you distribute copies of the Texinfo related programs, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. Also, for our own protection, we must make certain that everyone finds out that there is no warranty for the programs that relate to Texinfo. If these programs are modified by someone else and passed on, we want their recipients to know that what they have is not what we distributed, so that any problems introduced by others will not reflect on our reputation. The precise conditions of the licenses for the programs currently being distributed that relate to Texinfo are found in the General Public Licenses that accompany them. The programs that are part of GNU Emacs are covered by the GNU Emacs copying terms (*note : (emacs)License.), and other programs are covered by licenses that are contained in their source files.  File: texinfo, Node: Overview, Next: Texinfo Mode, Prev: License, Up: Top Overview of Texinfo ******************* Texinfo is a documentation system that uses a single source file for both on-line help and a printed manual. This means that instead of writing two different documents, one for the on-line help and the other for the printed manual, only one document needs to be written. When the system is revised, only one file has to be revised. Using Texinfo, you can create a document with the normal features of a book such as chapters, sections, cross references and indices. The chapters and sections of the printed manual can be made to correspond to the nodes of the on-line help. The cross references and indices can be used in both the on-line help and in the printed document. Indices are generated semi-automatically. The ``GNU Emacs Manual'' is a good example of a Texinfo file. To make the printed manual, the Texinfo source file is processed by the TeX typesetting program; the resulting DVI file can be typeset and printed as a book. To make the on-line help, the Texinfo source file is by processed the `M-x texinfo-format-buffer' command; the resulting Info file is installed in the `info' directory. Since the Texinfo source file is used for a dual task--to create both the on-line help and the printed manual--it must be written in a special format that uses @-commands (words preceded by an `@') to indicate chapters, sections, nodes, examples, index entries and the like. Before writing a Texinfo source file, you should be familiar with the on-line Info documentation reading program. (*note info: (info)Info, for more information.) If you are writing a document that will be both on-line and printed, you will need both Info and TeX. To make an Info file, you use the `M-x texinfo-format-buffer' command in GNU Emacs. To make a printed manual, you need to use TeX, a powerful, sophisticated typesetting program written by Donald Knuth. TeX is freely distributable. It is written in a dialect of Pascal called WEB and can be compiled either in Pascal or (by using a conversion program that comes with the TeX distribution) in C. (For information about getting TeX, *note : (emacs)TeX Mode.) When TeX processes a Texinfo source file, TeX makes use of a macro definitions file called `texinfo.tex' that comes with the GNU Emacs distribution in the `emacs/man' sources directory. (The first line of every Texinfo file has a command that says `\input texinfo'; this tells TeX to use the `texinfo.tex' file.) If the `texinfo.tex' file has not already been copied to the directory which contains the other TeX macro definition files when Emacs was installed, you will probably want to copy it to that directory. Usually, this is the `/usr/lib/tex/macros' directory. For more information, *note @TeX{} Input Initialization: TeX Input. Documentation for GNU utilities and libraries should be written in Texinfo format. * Menu: * Info File:: Characteristics of the Info file. * Printed Manual:: Characteristics of the Printed Manual. * Conventions:: General Syntactic Conventions. * Short Sample:: A short sample Texinfo file.  File: texinfo, Node: Info File, Next: Printed Manual, Up: Overview Characteristics of the Info file ================================ A Texinfo file can be transformed into a printed manual and an on-line Info file. An on-line Info file is a file formatted so that the Info documentation reading program can operate on it. Info files are divided into pieces called "nodes", each of which contains the discussion of one topic. Each node has a name, and contains both text for the user to read and pointers to other nodes, which are identified by their names. The Info program displays one node at a time, and provides commands with which the user can move to the other nodes to which the current node points. *note info: (info)Info, for more information about using Info. Normally, most of the nodes are arranged in a tree which branches down. Each node may have any number of child nodes that describe subtopics of the node's topic. The names of these child nodes, if any, are listed in a "menu" within the parent node; this allows certain Info commands to be used to move to one of the child nodes. Each child node records the parent node name, as its `Up' pointer. Thus, if a node were at the logical level of a `chapter', its child nodes would be `sections'; likewise, the child nodes of a section would be subsections. The root of the tree is the top node of the file, through which users enter the file from the Info directory. By convention, this node is always called `Top'. This node normally contains just a brief summary of the file's purpose, and a large menu through which the rest of the file is reached. Generally you enter the Info file from the top; then you can either traverse the file systematically by going from node to node or you can search large menus that correspond to indices and go directly to the node that has the information you want. If you want to read through an Info file in sequence, as if it were a printed manual, you can get the whole file with the advanced Info command `g *'. (*note info: (info)Expert.) All the children of any one parent are linked together in a bidirectional chain of `Next' and `Previous' pointers. This means that all the nodes that are logically parallel to sections within a chapter are all linked together. Normally the order in this chain is the same as the order of the children in the parent's menu. The last child has no `Next' pointer, and the first child normally has the parent as its `Previous' pointer (as well as its `Up' pointer, of course). Structuring the nodes in a tree is a matter of convention, not a requirement. In fact, the `Up', `Previous' and `Next' pointers of a node can point to any other nodes, and the menu can contain any other nodes. The structure of nodes can be any directed graph. But it is usually more comprehensible to make it a tree. Info provides another kind of pointer between nodes, called a reference, that can be sprinkled through the text of a node. This is usually the best way to represent links that do not fit the tree structure. Most often the nodes fall into a strict tree structure that corresponds to the structure of chapters and sections in the printed manual. But there are times when this is not right for the material being discussed. Therefore, Texinfo uses separate commands to specify the node structure of the Info file and the section structure of the printed manual. Also, Texinfo requires that you specify menus explicitly, rather than generate them automatically based on an assumed tree structure.  File: texinfo, Node: Printed Manual, Next: Conventions, Prev: Info File, Up: Top Characteristics of the Printed Manual ===================================== A Texinfo file can be formatted and typeset as a printed manual. The printed manual will be the same as any other book; it will have a title page, copyright page, table of contents, and preface as you would expect, as well as chapters, numbered or unnumbered sections and subsections, not to mention page headers, cross references and indices. Texinfo can be used for writing a book without ever having the intention of converting it into on-line help. Texinfo can be used for writing a novel; and it can even be used to write a memo, although this application is not recommended since electronic mail is so much easier. Texinfo uses the formatting language called TeX for typesetting. A file called `texinfo.tex' contains information (definitions or "macros") that TeX uses when it typesets a Texinfo file. (The macros tell TeX how to convert the Texinfo @-commands to TeX commands which TeX can then process to create the typeset document.) `texinfo.tex' contains the specifications for printing a document, either with 7 inch by 9.25 inch pages or with 8.5 inch by 11 inch pages. (This is 178 mm by 235 mm or else 216 mm by 280 mm.) Also, by changing the parameters in `texinfo.tex' you can easily change the size of the printed document. In addition, you can readily change the style in which the printed document is formatted; for example, you can change the sizes and fonts used, the amount of indentation for each paragraph, the degree to which words are hyphenated, and the like. By changing the specifications, you can make a book look dignified, old and serious, or light-hearted, young and cheery. TeX is very powerful and has a great many features. Because a Texinfo file must be able to present information both on a character-only terminal in Info form and in a typeset book, the commands that Texinfo supports are necessarily limited.  File: texinfo, Node: Conventions, Next: Short Sample, Prev: Printed Manual, Up: Overview General Syntactic Conventions ============================= Texinfo files contain a strictly limited set of constructs. The strict limits make it possible for Texinfo files to be understood both by TeX and by the code which converts them into Info files. All ASCII printing characters except `@', `{' and `}' can appear in body text in a Texinfo file and stand for themselves. `@' is the escape character which introduces commands. `{' and `}' should be used only to surround arguments to certain commands. `{' and `}' appearing anywhere else will be treated by TeX as a grouping but treated by the code that produces an Info file as themselves; this inconsistency is undesirable, so don't let it occur. To put one of these special characters into the document, put an `@' character in front of it. For example, you would insert `@@', `@{', and `@}'. It is customary in TeX to use doubled single-quote characters to begin and end quotations, `"' like these `"'. This convention should be followed in Texinfo files. Also, three hyphens in a row, `--', are used for a dash--like this. In TeX, a single or even a double hyphen produces a dash that is shorter than you want. TeX ignores the line-breaks in the input text, except for blank lines, which separate paragraphs. Info generally preserves the line breaks that are present in the input file. Therefore, break the lines in the Texinfo file the way you want them to appear in the output Info file, and let TeX take care of itself. Since Info does not normally refill paragraphs when it processes them, a line with @-commands in it will sometimes look bad after Info has run on it. To cause Info to refill the paragraph after finishing with the other processing, you need to put the command `@refill' at the end of the paragraph. (*Note Refilling paragraphs and Preventing indentation: Refilling & Noindent.) To prevent a paragraph from being indented in the printed manual, put the command `@noindent' on a line by itself before the start of the text that should not be indented. If you mark off a region of the Texinfo file with the `@iftex' and `@end iftex' commands so that the region will appear only in the printed copy, you can use TeX commands that cannot be used in the Info file. In order to be made into a printed manual, a Texinfo file *must* begin with lines that looks like \input texinfo @c -*-texinfo-*- @setfilename INFO-FILE-NAME @settitle NAME OF MANUAL The `\input texinfo' line tells TeX to use the `texinfo.tex' file. This line is usually followed by a start-of-header line (not shown here) and then by the `@setfilename INFO-FILE-NAME' and `@settitle NAME OF MANUAL' lines. These two lines are needed to provide a name for the Info file and to specify the name used on the left-hand page headers of the printed manual. The two lines that contain the `@setfilename' and `@settitle' commands usually are sandwiched between the start-of-header line and the end-of-header line. (*Note Start-of-Header::, for more information.) The start-of-header and end-of-header lines are needed if you are going to run TeX or Info on just part of a file.  File: texinfo, Node: Short Sample, Prev: Conventions, Up: Overview A Short Sample Texinfo File =========================== A Texinfo file looks like the following, which is a complete but very short Texinfo file. The `@comment' command introduces comments that will not appear in either the Info file or the printed manual; they are for the person who reads the Texinfo file. The first part of the file, from `\input texinfo' through to `@end titlepage', looks more intimidating than it is. Most of the material is standard boilerplate; when you write a manual, you just put in the name of your own manual in this section. All the commands that tell TeX how to typeset the printed manual and tell `texinfo-format-buffer' how to create an Info file are preceded by `@'; thus, `@node' indicates a node and `@chapter' indicates the start of a chapter. \input texinfo @c -*-texinfo-*- @setfilename name-of-texinfo-file @settitle Name of Manual @setchapternewpage odd @ifinfo @comment The following line inserts the copyright notice @comment into the Info file. Copyright @copyright{} 1988 Free Software Foundation, Inc. @end ifinfo @comment The titlepage section does not appear in the Info file. @titlepage @sp 10 @comment The title is printed in a large font. @center @titlefont{Sample Title} @comment The following two commands start the copyright page @comment for the printed manual. This will not appear in the Info file. @page @vskip 0pt plus 1filll Copyright @copyright{} year copyright-owner @end titlepage @comment The Top node contains the master menu for the Info file. @comment This appears only in the Info file, not the printed manual. @node Top, First Chapter, (dir), (dir) @comment node-name, next, previous, up @menu * First Chapter:: The first chapter is the only chapter in this sample. @end menu @node First Chapter, , Top, Top @comment node-name, next, previous, up @chapter First Chapter @cindex Reference to First Chapter This is the contents of the first chapter. Here is a numbered list. @enumerate @item This is the first item. @item This is the second item. @end enumerate The @kbd{M-x texinfo-format-buffer} command transforms a Texinfo file like this into an Info file; and @TeX{} typesets it for a printed manual. @node Concept Index, , Previous Node, Top @comment node-name, next, previous, up @unnumbered Concept Index @printindex cp @contents @bye Here is what the contents of the first chapter of the sample look like: This is the contents of the first chapter. Here is a numbered list. 1. This is the first item. 2. This is the second item. The `M-x texinfo-format-buffer' command transforms a Texinfo file like this into an Info file; and TeX typesets it for a printed manual.  File: texinfo, Node: Texinfo Mode, Next: Beginning a File, Prev: Overview, Up: Top Using Texinfo Mode ****************** In GNU Emacs, Texinfo mode is a major mode for editing Texinfo files. This means that Emacs has commands and features especially designed for working with Texinfo files. Like all other Emacs features, you can customize or enhance these as you wish. In particular, the keybindings are very easy to change. The keybindings described here are the default or standard ones. The major features of Texinfo mode are: * Paragraph filling control. * A command to show the structure of the file. * Pre-defined keystroke commands to insert commonly used strings of text. * Formatting a part of a file for Info, rather than the whole file. In general, in Texinfo mode, the GNU Emacs editing commands are like those in text-mode. The major difference is that the paragraph separation variable and syntax table are set up so expression commands skip Texinfo bracket groups. This means, for example, that the `M-q' (`fill-paragraph') command will refill a paragraph but not the @-command on a line adjacent to it. By convention, the Texinfo file name shall end with the extension `.texinfo' so that Emacs knows to use Texinfo mode for editing it. * Menu: * Info on a Region:: Formatting part of a file for Info. * Showing the Structure:: Showing the structure of a file. * Inserting:: Inserting frequently used commands.  File: texinfo, Node: Info on a Region, Next: Showing the Structure, Prev: Texinfo Mode, Up: Texinfo Mode Formatting a Region for Info ============================ To see what part of a Texinfo file will look like after it has been transformed into an Info file, use the command `C-c C-f' (`texinfo-format-region'). This command formats the current region of the Texinfo file for Info and writes it to a temporary buffer called `*Info Region*'. For `texinfo-format-region' to work, the file *must* include a line that has `@setfilename' in its header. The command is: `C-c C-f' texinfo-format-region  File: texinfo, Node: Showing the Structure, Next: Inserting, Prev: Info on a Region, Up: Texinfo Mode Showing the Structure of a File =============================== You can show the structure of a Texinfo file by using the `C-c C-s' command (`texinfo-show-structure'). This command shows the structure of a Texinfo file by listing the lines with the @-commands for `@node', `@chapter', `@section' and the like. These lines are displayed in another window called the `*Occur*' window. In that window, you can position the cursor over one of the lines and use the `C-c C-c' command (`occur-mode-goto-occurrence'), to jump to the corresponding spot in the Texinfo file. The two commands are: `C-c C-s' texinfo-show-structure `C-c C-c' occur-mode-goto-occurrence Often, when you are working on a manual, you will be interested only in the structure of the current chapter. In this case, you can mark off the region of the buffer that you are interested in with the `C-x n' (`narrow-to-region') command and `texinfo-show-structure' will work on only that region. (To see the whole buffer again, use `C-x w' (`widen').)  File: texinfo, Node: Inserting, Prev: Showing the Structure, Up: Texinfo Mode Inserting Frequently Used Commands ================================== Texinfo mode provides commands that insert various frequently used @-commands into the buffer. You can use these commands to save keystrokes. And you can insert balanced curly braces with the `M-{' command, (`texinfo-insert-braces') and later use the `M-}' command (`up-list') to move forward past the closing brace. The special commands are invoked by typing `C-c' twice and then the first letter of the @-command. `C-c C-c c' texinfo-insert-@code `C-c C-c d' texinfo-insert-@dfn `C-c C-c e' texinfo-insert-@end `C-c C-c i' texinfo-insert-@item `C-c C-c n' texinfo-insert-@node `C-c C-c s' texinfo-insert-@samp `C-c C-c v' texinfo-insert-@var `M-{' texinfo-insert-braces `M-}' up-list This list was generated by analyzing the frequency with which commands were used in the ``GNU Emacs Manual'' and the ``GDB Manual''. If you wish to add your own insert commands, you can bind a keyboard macro to a key, use abbreviations or extend the code in `texinfo.el'.  File: texinfo, Node: Beginning a File, Next: Ending a File, Prev: Texinfo Mode, Up: Top Beginning a Texinfo File ************************ Various pieces of information have to be provided to Texinfo at the beginning of a Texinfo file, such as the name of the file, the title of the document and the like. Generally, the beginning of a Texinfo file has four parts: 1. The header, marked by start-of-header and end-of-header lines, that includes the commands for naming the Texinfo file and telling TeX what definitions' file to use when processing the file. 2. A section, marked by the `@ifinfo' and `@end ifinfo' commands, that contains a short statement of what the file is about, the copyright notice and copying permissions. This section appears only in the Info file. 3. A section, marked by the `@titlepage' and `@end titlepage' commands, that contains the title page, the copyright page and copying permissions. This section appears only in the printed manual. 4. The `Top' node that contains an extensive menu for the whole Info file. The contents of this node only appear in the Info file. If the Texinfo file has a section containing licensing information and a warranty disclaimer, that section usually follows the `Top' node. The licensing section will be followed by a preface or else by the first chapter of the manual. Since the copyright notice and the copying permissions are in sections that appear only in the Info file or only in the printed manual, this information has to be repeated twice. The following sample shows what is needed. \input texinfo @c -*-texinfo-*- @comment %**start of header (This is for running Texinfo on a region.) @setfilename name-of-texinfo-file @settitle Name of Manual @setchapternewpage odd @comment %**end of header (This is for running Texinfo on a region.) @ifinfo This file documents ... Copyright @copyright{} year copyright-owner Permission is granted to ... @end ifinfo @titlepage @sp 10 @center @titlefont{Name of Manual When Printed} @sp 2 @center Subtitle, If Any @sp 2 @center Author @comment The following two commands start the copyright page. @page @vskip 0pt plus 1filll Copyright @copyright{} year copyright-owner Published by ... Permission is granted to ... @end titlepage @node Top, Overview, (dir), (dir) @menu * First Chapter:: The first chapter is usually an overview. * Second Chapter:: ... @end menu @node First Chapter, Second Chapter, top, top @comment node-name, next, previous, up @chapter First Chapter @cindex Reference to First Chapter * Menu: * Header:: Necessary first lines. * Permissions for Info:: Copyright notice and copying permissions. * Titlepage & Copyright Page:: Printed title and copyright pages. * Top Node:: The top node and master menu. * License and Distribution:: The importance of the license.  File: texinfo, Node: Header, Next: Permissions for Info, Prev: Beginning a File, Up: Beginning a File The Texinfo File Header ======================= Texinfo files start with at least three lines that provide Info and TeX with necessary information. If you want to run TeX on just a part of the Texinfo File, you also have to mark these heading lines with start-of-header and end-of-header lines. * Menu: * First Line:: The first line of a Texinfo file. * Start-of-Header:: Identifying the start of the header. * Setfilename:: Specifying the name of the Info file. * Settitle:: Specifying the title used by the headings. * Setchapternewpage:: Starting chapters on odd numbered pages. * End-of-Header:: Identifying the end of the header.  File: texinfo, Node: First Line, Next: Start-of-Header, Prev: Header, Up: Header The First Line of a Texinfo File -------------------------------- Every Texinfo file that is to be the top-level input to TeX must begin with a line that looks like this: \input texinfo @c -*-texinfo-*- The line serves two functions: 1. When the file is processed by TeX, it loads the macros needed for processing a Texinfo file. These are in a file called `texinfo.tex' which is usually located in the `/usr/lib/tex/macros' directory. 2. When the file is edited in GNU Emacs, it causes Texinfo mode to be used. The `\input texinfo' line should be followed by the start-of-header line. This makes it possible for the command for running TeX on a part of the Texinfo file (`texinfo-hardcopy-region') to operate. The reason for this is that the `texinfo-hardcopy-region' command will look on the line preceding the start-of-header line for the `\input texinfo' line.  File: texinfo, Node: Start-of-Header, Next: Setfilename, Prev: First Line, Up: Header `start-of-header' ----------------- The start-of-header line should immediately follow the first line of the Texinfo file. The `texinfo-hardcopy-region' command will look at the line preceding the start-of-header line to find the `\input texinfo' line. Usually, the start-of-header line looks like this: @comment %**start of header (This is for running Texinfo on a region.) The reason for the odd string of characters (`%**') is so that the `texinfo-hardcopy-region' command does not accidently find something that it shouldn't when it is looking for the header. In the default configuration, the phrase `(This is for running Texinfo on a region.)' is not needed and is just included to make it easier for someone reading the Texinfo file. The start-of-header line and the end-of-header line are Texinfo mode variables that you can change.  File: texinfo, Node: Setfilename, Next: Settitle, Prev: Start-of-Header, Up: Header @setfilename ------------ In order to be made into an Info file, a Texinfo file must contain a line that looks like this: @setfilename INFO-FILE-NAME This line specifies the name of the Info file to be generated. In fact, there can be other things in the file before this line, but they are ignored in the generation of an Info file. The `@setfilename' line is ignored when a printed manual is generated.  File: texinfo, Node: Settitle, Next: Setchapternewpage, Prev: Setfilename, Up: Header @settitle --------- In order to be made into a printed manual file, a Texinfo file must contain a line that specifies the title of the manual. Texinfo uses this information during printing to put the title on every other page as a heading; Texinfo puts the current chapter title on the other pages. Texinfo can find the name of the chapter title from the information provided by the `@chapter' command, but you must tell it the manual title with `@settitle': @settitle TITLE This command, on a line by itself, causes TITLE to be used for the headings. Usually, you will use the same words for the title on the title page and for the title specified by this command for the headings, but the two could be different. For example, the title on the title page may be longer than the title specified by the `settitle' command. The `@settitle' command should precede everything that generates actual output.  File: texinfo, Node: Setchapternewpage, Next: End-of-Header, Prev: Settitle, Up: Header @setchapternewpage ------------------ Conventionally, chapters start on the page on the right hand side of a book; and the right hand page has an odd number. To make sure that Texinfo does this, you can use the command `@setchapternewpage'. For example, to cause each chapter to start on a fresh odd-numbered page: @setchapternewpage odd Page numbering is turned on by the `@end titlepage' command, so the `@setchapternewpage' should come before it. Although it can occur anywhere in the beginning of the file, it is most convenient to put it in this location.  File: texinfo, Node: End-of-Header, Prev: Setchapternewpage, Up: Header `end-of-header' --------------- The end-of-header line should follow the line containing the `@setchapternewpage' command. Usually, the end-of-header line looks like this: @comment %**end of header (This is for running Texinfo on a region.) In the default configuration, the phrase `(This is for running Texinfo on a region.)' is not needed and is just included to make it easier for someone reading the Texinfo file. The reason for the odd string of characters (`%**') is so that the `texinfo-hardcopy-region' command does not accidently find something that it shouldn't when it is looking for the header. The start-of-header line and the end-of-header line are Texinfo mode variables that you can change.  File: texinfo, Node: Permissions for Info, Next: Titlepage & Copyright Page, Prev: Header, Up: Beginning a File Copying Permissions for Info ============================ Since the title page and the copyright page appear only in the printed copy of the manual, the same information has to inserted in a section that appears only in the Info file. This section usually contains a brief description of the contents of the Info file, a copyright notice and copying permissions. The copyright notice should read: Copyright YEAR COPYRIGHT-OWNER and be put on a line by itself. Standard text for the copyright permissions is contained in the appendix. *Note Ifinfo Permissions::, for the complete text.  File: texinfo, Node: Titlepage & Copyright Page, Next: Top Node, Prev: Permissions for Info, Up: Beginning a File The Title and Copyright Pages ============================= The title and copyright pages appear in the printed manual, but not in the Info file. Because of this, it is possible to use a couple of slightly obscure TeX typesetting commands that could not be used in an Info file. In addition, this part of the beginning of a Texinfo file contains the text of the copying permissions that will appear in the printed manual. * Menu: * Titlepage:: Creating a title page for the printed manual. * Center:: Centering a line. * Copyright & Printed Permissions:: Inserting the copyright notice and printed permissions.  File: texinfo, Node: Titlepage, Next: Center, Prev: Titlepage & Copyright Page, Up: Titlepage & Copyright Page @titlepage ---------- Start the material for the title page and following copyright page with `@titlepage' on a line by itself and end it with `@end titlepage' on a line by itself. The title page and copyright page material appears only in the printed manual, not in the Info file. Also, the `@end titlepage' command starts a new page and turns on page numbering (generation of headings). Therefore, all the material that you want to appear on unnumbered pages should be put between the `@titlepage' and `@end titlepage' commands. By using the `@page' command you can force a page break within the region delineated by the `@titlepage' and `@end titlepage' commands and create more than one unnumbered page. This is how the copyright page is produced. To select a large font suitable for the title itself, you can use the command `@titlefont'. For example: @center @titlefont{Texinfo} Also, you can use `@sp' commands to adjust vertical spacing. For example: @sp 2 In the sample, the spacing was chosen to fit an 8 1/2 by 11 inch manual.  File: texinfo, Node: Center, Next: Copyright & Printed Permissions, Prev: Titlepage, Up: Titlepage & Copyright Page @center ------- A line containing `@center TEXT' produces a line of output containing TEXT, centered between the margins.  File: texinfo, Node: Copyright & Printed Permissions, Prev: Center, Up: Titlepage & Copyright Page The Copyright Page and Printed Permissions ------------------------------------------ By international treaty, the copyright notice for a book should either be on the title page or on the back of the title page. Other locations in a book are not official and do not provide copyright protection. The copyright notice should include the year followed by the name of the person or organization who has the copyright. When the copyright notice is on the back of the title page, the page is not numbered. Therefore, in Texinfo, the information on the copyright page should be within the region delineated by the `@titlepage' and `@end titlepage' commands. To cause a page break, the `@page' command is used. In the sample, the `@page' command is followed by the somewhat mysterious line that reads: `@vskip 0pt plus 1filll'. This is a line that uses TeX commands to push the copyright notice and the other text on the copyright page towards the bottom of the page. The `@vskip' command means to skip lines and put in white space. The `0pt plus 1filll' means to put in zero points of mandatory white space, and as much optional white space as needed. Note the use of three `l's in the word `filll'; this is the correct use in TeX. The `@copyright{}' command generates a `c' inside a circle. The copyright notice itself has the following legally defined sequence: Copyright (C) YEAR COPYRIGHT-OWNER It is customary to put information on how to get a manual after the copyright notice (the address of the Free Software Foundation, for example) and the permissions. Note that the permissions have to be repeated here as well as in the `ifinfo' section that immediately follows the header since this section appears only in the printed manual and the `ifinfo' section appears only in the Info file. Standard text for the permissions appears in the appendix. *Note Sample Permissions::.  File: texinfo, Node: Top Node, Next: License and Distribution, Prev: Titlepage & Copyright Page, Up: Beginning a File The Top Node and Master Menu ============================ The `Top' node contains an extensive, master menu for the whole Info file. The contents of this node appear only in the Info file. Nothing in this node should appear in the printed file. Since a node line by itself and a menu by itself are not printed, the contents of this node do not have to be within a region delineated by `@ifinfo' and `@end ifinfo' commands. However, any text within the node should be marked off in that manner. You may want to put a short summary before the master menu inside a region delineated by `@ifinfo' and `@end ifinfo' commands. Usually, the `Previous' and `Up' nodes refer to the top level directory of the whole Info system, with pointers to `(dir)'. Generally, the top menu is divided into parts. * The first part contains the major nodes in the Texinfo file: the nodes for the chapters, chapter-like sections and the major appendices. * The second part contains entries for the indices. In an Info file, it is very useful to have indices here at the beginning of the file in the top node rather than at the end, as in a printed book. * The third and subsequent parts contain a listing of the other, lower level nodes, often ordered by chapter. This way, an inquirer can go directly to a particular node if he or she is searching for specific information. (These nodes are not required; use them if you think they are a convenience.) Each section in the menu can be introduced a descriptive line. So long as the line does not begin with an asterisk, it will not be treated as a menu item. (*Note Making Menus: Menu, for more information.) For example, the Top node of this manual looks like this (but with many more entries): @node Top, Overview, (dir), (dir) @menu * Overview:: What is Texinfo? * Texinfo Mode:: Special features in GNU Emacs. ... Indices, nodes containing large menus * Command Index:: An item for each @-command. * Concept Index:: An item for each concept. A detailed node listing Overview * Info File:: Characteristics of the Info file. * Printed Manual:: Characteristics of the printed manual. Using Texinfo Mode * Info on a Region:: Formatting a region for Info. * Showing the Structure:: Showing the structure of a file. ... ...  File: texinfo, Node: License and Distribution, Prev: Top Node, Up: Beginning a File Licensing and Distribution Information ====================================== If the Texinfo file has a section containing the "General Public License" and the distribution information and a warranty disclaimer, this section usually follows the `Top' node. The licensing and distribution information and the disclaimer are followed by a preface or else by the first chapter of the manual. The licensing agreement is very important to Project GNU documentation and software. Without it, you may find that you can no longer get the software or its documentation. This sounds paradoxical, but the state of the world is such that documentation and software that does not have a "restrictive" license to make them freely distributable may be lost to the public. This has happened. For a good example of the text that could be used for the Distribution, General Public License and NO WARRANTY sections of your document, see the latest version of the ``GNU Emacs Manual''. Although a preface is not a required part of a Texinfo file, it is very helpful. Ideally, it should state clearly and concisely what the file is about and who would be interested in reading it. In general, the preface would follow the licensing and distribution information, although sometimes people put it earlier in the document. Usually, a preface is put in an `@unnumbered' section. (*Note Unnumbered and Appendix::.)  File: texinfo, Node: Ending a File, Next: Structuring, Prev: Beginning a File, Up: Top Ending a Texinfo File ********************* The end of a Texinfo file should include the indices, the commands to generate detailed and summary tables of contents and the @-command that tells TeX that it has reached the end of the file. For example, a Texinfo file might be ended as follows: @node Concept Index, , Previous Node, Top @comment node-name, next, previous, up @unnumbered Concept Index @printindex cp @contents @bye The `@bye' command should be on a line by itself and every Texinfo file must end with such a line. This command terminates TeX processing and forces out unfinished pages. * Menu: * Contents:: Generating a table of contents * Indices:: Generating, sorting and printing indices  File: texinfo, Node: Contents, Next: Indices, Up: Ending a File Generating a Table of Contents ============================== The commands `@chapter', `@section', etc., supply the information to make up a table of contents, but they do not cause an actual table to be generated. To do this, you must use the commands `@contents' and `@summarycontents'. `@contents' The table of contents command outputs (into a printed manual) a complete table of contents, based on the `@chapter', `@unnumbered' and other sectioning commands. This command should be used on a line by itself. `@summarycontents' The summary contents command generates a summary table of contents that lists only the chapters (and appendices and unnumbered chapters); sections, subsections and subsubsections are omitted. This command should be used on a line by itself. Only large manuals need a summary table of contents. You can use either one of these commands, or both. Each command automatically generates a chapter-like heading at the top of the page. Tables of contents should be generated at the very end of the manual, just before the `@bye' command; the tables of contents commands should follow any indices that are output, so that the indices will appear in the contents. INDICES... @summarycontents @contents @bye The commands `@contents' and `@summarycontents' are ignored when an Info file is being generated.