Texinfo

The GNU Documentation Format

Edition 2.23, for Texinfo Version Three

October 1996

Robert J. Chassell
Richard M. Stallman


Table of Contents


index (arbitrarily chosen to be the concept index).

@dircategory Texinfo documentation system @direntry * Texinfo: (texinfo). The GNU documentation format. * install-info: (texinfo)Invoking install-info. Updating info/dir entries. * texi2dvi: (texinfo)Format with texi2dvi. Printing Texinfo documentation. * texindex: (texinfo)Format with tex/texindex. Sorting Texinfo index files.

@shorttitlepage Texinfo

Copyright (C) 1988, 1990, 1991, 1992, 1993, 1995, 1996 Free Software Foundation, Inc.

This is the second edition of the Texinfo documentation,
and is consistent with version 2 of `texinfo.tex'.

Published by the Free Software Foundation
59 Temple Place Suite 330,
Boston, MA 02111-1307 USA
Printed copies are available for $15 each.
ISBN 1-882114-64-7

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 Free Software Foundation.

Cover art by Etienne Suvasa.

Texinfo Copying Conditions

The programs currently being distributed that relate to Texinfo include portions of GNU Emacs, plus other separate programs (including makeinfo, info, 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.

Overview of Texinfo

Texinfo(1) is a documentation system that uses a single source file to produce both on-line information and printed output. This means that instead of writing two different documents, one for the on-line help or other on-line information and the other for a typeset manual or other printed work, you need write only one document. When the work is revised, you need revise only one document. (You can read the on-line information, known as an Info file, with an Info documentation-reading program.)

Using Texinfo, you can create a printed document with the normal features of a book, including chapters, sections, cross references, and indices. From the same Texinfo source file, you can create a menu-driven, on-line Info file with nodes, menus, cross references, and indices. You can, if you wish, make the chapters and sections of the printed document correspond to the nodes of the on-line information; and you use the same cross references and indices for both the Info file and the printed work. The GNU Emacs Manual is a good example of a Texinfo file, as is this manual.

To make a printed document, you process a Texinfo source file with the TeX typesetting program. This creates a DVI file that you can typeset and print as a book or report. (Note that the Texinfo language is completely different from TeX's usual language, plain TeX.) If you do not have TeX, but do have troff or nroff, you can use the texi2roff program instead.

To make an Info file, you process a Texinfo source file with the makeinfo utility or Emacs's texinfo-format-buffer command; this creates an Info file that you can install on-line.

TeX and texi2roff work with many types of printer; similarly, Info works with almost every type of computer terminal. This power makes Texinfo a general purpose system, but brings with it a constraint, which is that a Texinfo file may contain only the customary "typewriter" characters (letters, numbers, spaces, and punctuation marks) but no special graphics.

A Texinfo file is a plain ASCII file containing text and @-commands (words preceded by an `@') that tell the typesetting and formatting programs what to do. You may edit a Texinfo file with any text editor; but it is especially convenient to use GNU Emacs since that editor has a special mode, called Texinfo mode, that provides various Texinfo-related features. (See section Using Texinfo Mode.)

Before writing a Texinfo source file, you should become familiar with the Info documentation reading program and learn about nodes, menus, cross references, and the rest. (See Info file `info', node `Top', for more information.)

You can use Texinfo to create both on-line help and printed manuals; moreover, Texinfo is freely redistributable. For these reasons, Texinfo is the format in which documentation for GNU utilities and libraries is written.

Info files

An Info file is a Texinfo file formatted so that the Info documentation reading program can operate on it. (makeinfo and texinfo-format-buffer are two commands that convert a Texinfo file into an Info file.)

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 other related nodes.

Each node of an Info file may have any number of child nodes that describe subtopics of the node's topic. The names of child nodes are listed in a menu within the parent node; this allows you to use certain Info commands to move to one of the child nodes. Generally, an Info file is organized like a book. If a node is at the logical level of a chapter, its child nodes are at the level of sections; likewise, the child nodes of sections are at the level of subsections.

All the children of any one parent are linked together in a bidirectional chain of `Next' and `Previous' pointers. The `Next' pointer provides a link to the next section, and the `Previous' pointer provides a link to the previous section. This means that all the nodes that are at the level of sections within a chapter are linked together. Normally the order in this chain is the same as the order of the children in the parent's menu. Each child node records the parent node name as its `Up' pointer. The last child has no `Next' pointer, and the first child has the parent both as its `Previous' and as its `Up' pointer.(2)

The book-like structuring of an Info file into nodes that correspond to chapters, sections, and the like is a matter of convention, not a requirement. The `Up', `Previous', and `Next' pointers of a node can point to any other nodes, and a menu can contain any other nodes. Thus, the node structure can be any directed graph. But it is usually more comprehensible to follow a structure that corresponds to the structure of chapters and sections in a printed book or report.

In addition to menus and to `Next', `Previous', and `Up' pointers, Info provides pointers of another kind, called references, that can be sprinkled throughout the text. This is usually the best way to represent links that do not fit a hierarchical structure.

Usually, you will design a document so that its nodes match the structure of chapters and sections in the printed output. But there are times when this is not right for the material being discussed. Therefore, Texinfo uses separate commands to specify the node structure for the Info file and the section structure for the printed output.

Generally, you enter an Info file through a node that by convention is 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. From this node, you can either traverse the file systematically by going from node to node, or you can go to a specific node listed in the main menu, or you can search the index menus and then 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* RET. (See Info file `info', node `Expert'.)

The `dir' file in the `info' directory serves as the departure point for the whole Info system. From it, you can reach the `Top' nodes of each of the documents in a complete Info system.

Printed Books

A Texinfo file can be formatted and typeset as a printed book or manual. To do this, you need TeX, a powerful, sophisticated typesetting program written by Donald Knuth.(3)

A Texinfo-based book is similar to any other typeset, printed work: it can have a title page, copyright page, table of contents, and preface, as well as chapters, numbered or unnumbered sections and subsections, page headers, cross references, footnotes, and indices.

You can use Texinfo to write a book without ever having the intention of converting it into on-line information. You can use Texinfo for writing a printed novel, and even to write a printed memo, although this latter application is not recommended since electronic mail is so much easier.

TeX is a general purpose typesetting program. Texinfo provides a file called `texinfo.tex' that contains information (definitions or macros) that TeX uses when it typesets a Texinfo file. (`texinfo.tex' tells 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.

Most often, documents are printed on 8.5 inch by 11 inch pages (216mm by 280mm; this is the default size), but you can also print for 7 inch by 9.25 inch pages (178mm by 235mm; the @smallbook size) or on European A4 size paper (@afourpaper). (See section Printing "Small" Books. Also, see section Printing on A4 Paper.)

By changing the parameters in `texinfo.tex', you can change the size of the printed document. In addition, you can 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 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. (See section `TeX Mode' in The GNU Emacs Manual, for information about TeX.)

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 formatting commands that Texinfo supports are necessarily limited.

See section How to Obtain TeX.

@-commands

In a Texinfo file, the commands that tell TeX how to typeset the printed manual and tell makeinfo and texinfo-format-buffer how to create an Info file are preceded by `@'; they are called @-commands. For example, @node is the command to indicate a node and @chapter is the command to indicate the start of a chapter.

Please note: All the @-commands, with the exception of the @TeX{} command, must be written entirely in lower case.

The Texinfo @-commands are 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 that converts them into Info files. You can display Info files on any terminal that displays alphabetic and numeric characters. Similarly, you can print the output generated by TeX on a wide variety of printers.

Depending on what they do or what arguments(4) they take, you need to write @-commands on lines of their own or as part of sentences:

As a general rule, a command requires braces if it mingles among other text; but it does not need braces if it starts a line of its own. The non-alphabetic commands, such as @:, are exceptions to the rule; they do not need braces.

As you gain experience with Texinfo, you will rapidly learn how to write the different commands: the different ways to write commands make it easier to write and read Texinfo files than if all commands followed exactly the same syntax. (For details about @-command syntax, see section @-Command Syntax.)

General Syntactic Conventions

All printable ASCII characters except `@', `{' and `}' can appear 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. To put one of these special characters into the document, put an `@' character in front of it, like this: `@@', `@{', and `@}'.

It is customary in TeX to use doubled single-quote characters to begin and end quotations: @tt{ " } and @w{@tt{ " }}. This convention should be followed in Texinfo files. TeX converts doubled single-quote characters to left- and right-hand doubled quotation marks, "like this", and Info converts doubled single-quote characters to ASCII double-quotes: @tt{ " } and @tt{ " } to @w{@tt{ " }}.

Use three hyphens in a row, `---', for a dash--like this. In TeX, a single or even a double hyphen produces a printed dash that is shorter than the usual typeset dash. Info reduces three hyphens to two for display on the screen.

To prevent a paragraph from being indented in the printed manual, put the command @noindent on a line by itself before the paragraph.

If you mark off a region of the Texinfo file with the @iftex and @end iftex commands, that region will appear only in the printed copy; in that region, you can use certain commands borrowed from plain TeX that you cannot use in Info. Likewise, if you mark off a region with the @ifinfo and @end ifinfo commands, that region will appear only in the Info file; in that region, you can use Info commands that you cannot use in TeX. Similarly for @ifhtml and @end ifhtml. See section Conditionally Visible Text.

Caution: Do not use tabs in a Texinfo file! TeX uses variable-width fonts, which means that it cannot predefine a tab to work in all circumstances. Consequently, TeX treats tabs like single spaces, and that is not what they look like.

To avoid this problem, Texinfo mode causes GNU Emacs to insert multiple spaces when you press the TAB key.

Also, you can run untabify in Emacs to convert tabs in a region to multiple spaces.

Comments

You can write comments in a Texinfo file that will not appear in either the Info file or the printed manual by using the @comment command (which may be abbreviated to @c). Such comments are for the person who reads the Texinfo file. All the text on a line that follows either @comment or @c is a comment; the rest of the line does not appear in either the Info file or the printed manual. (Often, you can write the @comment or @c in the middle of a line, and only the text that follows after the @comment or @c command does not appear; but some commands, such as @settitle and @setfilename, work on a whole line. You cannot use @comment or @c in a line beginning with such a command.)

You can write long stretches of text that will not appear in either the Info file or the printed manual by using the @ignore and @end ignore commands. Write each of these commands on a line of its own, starting each command at the beginning of the line. Text between these two commands does not appear in the processed output. You can use @ignore and @end ignore for writing comments. Often, @ignore and @end ignore is used to enclose a part of the copying permissions that applies to the Texinfo source file of a document, but not to the Info or printed version of the document.

What a Texinfo File Must Have

By convention, the names of Texinfo files end with one of the extensions `.texinfo', `.texi', or `.tex'. The longer extension is preferred since it describes more clearly to a human reader the nature of the file. The shorter extensions are for operating systems that cannot handle long file names.

In order to be made into a printed manual and an Info file, a Texinfo file must begin with lines like this:

\input texinfo
@setfilename info-file-name
@settitle name-of-manual

The contents of the file follow this beginning, and then you must end a Texinfo file with a line like this:

@bye

The `\input texinfo' line tells TeX to use the `texinfo.tex' file, which tells TeX how to translate the Texinfo @-commands into TeX typesetting commands. (Note the use of the backslash, `\'; this is correct for TeX.) The `@setfilename' line provides a name for the Info file and tells TeX to open auxiliary files. The `@settitle' line specifies a title for the page headers (or footers) of the printed manual.

The @bye line at the end of the file on a line of its own tells the formatters that the file is ended and to stop formatting.

Usually, you will not use quite such a spare format, but will include mode setting and start-of-header and end-of-header lines at the beginning of a Texinfo file, like this:

\input texinfo   @c -*-texinfo-*-
@c %**start of header
@setfilename info-file-name
@settitle name-of-manual
@c %**end of header

In the first line, `-*-texinfo-*-' causes Emacs to switch into Texinfo mode when you edit the file.

The @c lines which surround the `@setfilename' and `@settitle' lines are optional, but you need them in order to run TeX or Info on just part of the file. (See section Start of Header, for more information.)

Furthermore, you will usually provide a Texinfo file with a title page, indices, and the like. But the minimum, which can be useful for short documents, is just the three lines at the beginning and the one line at the end.

Six Parts of a Texinfo File

Generally, a Texinfo file contains more than the minimal beginning and end--it usually contains six parts:

1. Header
The Header names the file, tells TeX which definitions' file to use, and performs other "housekeeping" tasks.
2. Summary Description and Copyright
The Summary Description and Copyright segment describes the document and contains the copyright notice and copying permissions for the Info file. The segment must be enclosed between @ifinfo and @end ifinfo commands so that the formatters place it only in the Info file.
3. Title and Copyright
The Title and Copyright segment contains the title and copyright pages and copying permissions for the printed manual. The segment must be enclosed between @titlepage and @end titlepage commands. The title and copyright page appear only in the printed manual.
4. `Top' Node and Master Menu
The Master Menu contains a complete menu of all the nodes in the whole Info file. It appears only in the Info file, in the `Top' node.
5. Body
The Body of the document may be structured like a traditional book or encyclopedia or it may be free form.
6. End
The End contains commands for printing indices and generating the table of contents, and the @bye command on a line of its own.

A Short Sample Texinfo File

Here is a complete but very short Texinfo file, in 6 parts. The first three parts of the file, from `\input texinfo' through to `@end titlepage', look more intimidating than they are. Most of the material is standard boilerplate; when you write a manual, simply insert the names for your own manual in this segment. (See section Beginning a Texinfo File.)

In the following, the sample text is indented; comments on it are not. The complete file, without any comments, is shown in section A Sample Texinfo File.

Part 1: Header

The header does not appear in either the Info file or the
printed output. It sets various parameters, including the
name of the Info file and the title used in the header.

\input texinfo   @c -*-texinfo-*-
@c %**start of header
@setfilename sample.info
@settitle Sample Document
@c %**end of header

@setchapternewpage odd

Part 2: Summary Description and Copyright

The summary description and copyright segment does not
appear in the printed document.

@ifinfo
This is a short example of a complete Texinfo file.

Copyright @copyright{} 1990 Free Software Foundation, Inc.
@end ifinfo

Part 3: Titlepage and Copyright

The titlepage segment does not appear in the Info file.

@titlepage
@sp 10
@comment The title is printed in a large font.
@center @titlefont{Sample Title}

@c The following two commands start the copyright page.
@page
@vskip 0pt plus 1filll
Copyright @copyright{} 1990 Free Software Foundation, Inc.
@end titlepage

Part 4: `Top' Node and Master Menu

The `Top' node contains the master menu for the Info file.
Since a printed manual uses a table of contents rather than
a menu, the master menu appears only in the Info file.

@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.
* Concept Index::    This index has two entries.
@end menu

Part 5: The Body of the Document

The body segment contains all the text of the document, but not the indices or table of contents. This example illustrates a node and a chapter containing an enumerated list.

@node    First Chapter, Concept Index, Top,      Top
@comment node-name,     next,          previous, up
@chapter First Chapter
@cindex Sample index entry

This is the contents of the first chapter.
@cindex Another sample index entry

Here is a numbered list.

@enumerate
@item
This is the first item.

@item
This is the second item.
@end enumerate

The @code{makeinfo} and @code{texinfo-format-buffer}
commands transform a Texinfo file such as this into
an Info file; and @TeX{} typesets it for a printed
manual.

Part 6: The End of the Document

The end segment contains commands both for generating an index in a node and unnumbered chapter of its own and for generating the table of contents; and it contains the @bye command that marks the end of the document.

@node    Concept Index,    ,  First Chapter, Top
@comment node-name,    next,  previous,      up
@unnumbered Concept Index

@printindex cp

@contents
@bye

The Results

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 makeinfo and texinfo-format-buffer commands transform a Texinfo file such as this into an Info file; and TeX typesets it for a printed manual.

Acknowledgements

Richard M. Stallman wrote Edition 1.0 of this manual. Robert J. Chassell revised and extended it, starting with Edition 1.1. Karl Berry made updates for the Texinfo 3.8 and subsequent releases, starting with Edition 2.22.

Our thanks go out to all who helped improve this work, particularly to Fran@,{c}ois Pinard and David D. Zuhn, who tirelessly recorded and reported mistakes and obscurities; our special thanks go to Melissa Weisshaus for her frequent and often tedious reviews of nearly similar editions. Our mistakes are our own.

Please send suggestions and corrections to:

Internet address:
    bug-texinfo@prep.ai.mit.edu

Please include the manual's edition number and update date in your messages.

Using Texinfo Mode

You may edit a Texinfo file with any text editor you choose. A Texinfo file is no different from any other ASCII file. However, GNU Emacs comes with a special mode, called Texinfo mode, that provides Emacs commands and tools to help ease your work.

This chapter describes features of GNU Emacs' Texinfo mode but not any features of the Texinfo formatting language. If you are reading this manual straight through from the beginning, you may want to skim through this chapter briefly and come back to it after reading succeeding chapters which describe the Texinfo formatting language in detail.

Texinfo mode provides special features for working with Texinfo files:

Perhaps the two most helpful features are those for inserting frequently used @-commands and for creating node pointers and menus.

The Usual GNU Emacs Editing Commands

In most cases, the usual Text mode commands work the same in Texinfo mode as they do in Text mode. Texinfo mode adds new editing commands and tools to GNU Emacs' general purpose editing features. The major difference concerns filling. In Texinfo mode, the paragraph separation variable and syntax table are redefined so that Texinfo commands that should be on lines of their own are not inadvertently included in paragraphs. Thus, the M-q (fill-paragraph) command will refill a paragraph but not mix an indexing command on a line adjacent to it into the paragraph.

In addition, Texinfo mode sets the page-delimiter variable to the value of texinfo-chapter-level-regexp; by default, this is a regular expression matching the commands for chapters and their equivalents, such as appendices. With this value for the page delimiter, you can jump from chapter title to chapter title with the C-x ] (forward-page) and C-x [ (backward-page) commands and narrow to a chapter with the C-x p (narrow-to-page) command. (See section `Pages' in The GNU Emacs Manual, for details about the page commands.)

You may name a Texinfo file however you wish, but the convention is to end a Texinfo file name with one of the three extensions `.texinfo', `.texi', or `.tex'. A longer extension is preferred, since it is explicit, but a shorter extension may be necessary for operating systems that limit the length of file names. GNU Emacs automatically enters Texinfo mode when you visit a file with a `.texinfo' or `.texi' extension. Also, Emacs switches to Texinfo mode when you visit a file that has `-*-texinfo-*-' in its first line. If ever you are in another mode and wish to switch to Texinfo mode, type M-x texinfo-mode.

Like all other Emacs features, you can customize or enhance Texinfo mode as you wish. In particular, the keybindings are very easy to change. The keybindings described here are the default or standard ones.

Inserting Frequently Used Commands

Texinfo mode provides commands to insert various frequently used @-commands into the buffer. You can use these commands to save keystrokes.

The insert commands are invoked by typing C-c twice and then the first letter of the @-command:

C-c C-c c
M-x texinfo-insert-@code
Insert @code{} and put the cursor between the braces.
C-c C-c d
M-x texinfo-insert-@dfn
Insert @dfn{} and put the cursor between the braces.
C-c C-c e
M-x texinfo-insert-@end
Insert @end and attempt to insert the correct following word, such as `example' or `table'. (This command does not handle nested lists correctly, but inserts the word appropriate to the immediately preceding list.)
C-c C-c i
M-x texinfo-insert-@item
Insert @item and put the cursor at the beginning of the next line.
C-c C-c k
M-x texinfo-insert-@kbd
Insert @kbd{} and put the cursor between the braces.
C-c C-c n
M-x texinfo-insert-@node
Insert @node and a comment line listing the sequence for the `Next', `Previous', and `Up' nodes. Leave point after the @node.
C-c C-c o
M-x texinfo-insert-@noindent
Insert @noindent and put the cursor at the beginning of the next line.
C-c C-c s
M-x texinfo-insert-@samp
Insert @samp{} and put the cursor between the braces.
C-c C-c t
M-x texinfo-insert-@table
Insert @table followed by a SPC and leave the cursor after the SPC.
C-c C-c v
M-x texinfo-insert-@var
Insert @var{} and put the cursor between the braces.
C-c C-c x
M-x texinfo-insert-@example
Insert @example and put the cursor at the beginning of the next line.
C-c C-c {
M-x texinfo-insert-braces
Insert {} and put the cursor between the braces.
C-c C-c }
C-c C-c ]
M-x up-list
Move from between a pair of braces forward past the closing brace. Typing C-c C-c ] is easier than typing C-c C-c }, which is, however, more mnemonic; hence the two keybindings. (Also, you can move out from between braces by typing C-f.)

To put a command such as @code{...} around an existing word, position the cursor in front of the word and type C-u 1 C-c C-c c. This makes it easy to edit existing plain text. The value of the prefix argument tells Emacs how many words following point to include between braces--1 for one word, 2 for two words, and so on. Use a negative argument to enclose the previous word or words. If you do not specify a prefix argument, Emacs inserts the @-command string and positions the cursor between the braces. This feature works only for those @-commands that operate on a word or words within one line, such as @kbd and @var.

This set of insert commands was created after analyzing the frequency with which different @-commands are 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'.

C-c C-c C-d (texinfo-start-menu-description) is an insert command that works differently from the other insert commands. It inserts a node's section or chapter title in the space for the description in a menu entry line. (A menu entry has three parts, the entry name, the node name, and the description. Only the node name is required, but a description helps explain what the node is about. See section The Parts of a Menu.)

To use texinfo-start-menu-description, position point in a menu entry line and type C-c C-c C-d. The command looks for and copies the title that goes with the node name, and inserts the title as a description; it positions point at beginning of the inserted text so you can edit it. The function does not insert the title if the menu entry line already contains a description.

This command is only an aid to writing descriptions; it does not do the whole job. You must edit the inserted text since a title tends to use the same words as a node name but a useful description uses different words.

Showing the Section Structure of a File

You can show the section structure of a Texinfo file by using the C-c C-s command (texinfo-show-structure). This command shows the section structure of a Texinfo file by listing the lines that begin with the @-commands for @chapter, @section, and the like. It constructs what amounts to a table of contents. These lines are displayed in another buffer called the `*Occur*' buffer. In that buffer, 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.

C-c C-s
M-x texinfo-show-structure
Show the @chapter, @section, and such lines of a Texinfo file.
C-c C-c
M-x occur-mode-goto-occurrence
Go to the line in the Texinfo file corresponding to the line under the cursor in the `*Occur*' buffer.

If you call texinfo-show-structure with a prefix argument by typing C-u C-c C-s, it will list not only those lines with the @-commands for @chapter, @section, and the like, but also the @node lines. (This is how the texinfo-show-structure command worked without an argument in the first version of Texinfo. It was changed because @node lines clutter up the `*Occur*' buffer and are usually not needed.) You can use texinfo-show-structure with a prefix argument to check whether the `Next', `Previous', and `Up' pointers of an @node line are correct.

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 by using the C-x n n (narrow-to-region) command and texinfo-show-structure will work on only that region. To see the whole buffer again, use C-x n w (widen). (See section `Narrowing' in The GNU Emacs Manual, for more information about the narrowing commands.)

In addition to providing the texinfo-show-structure command, Texinfo mode sets the value of the page delimiter variable to match the chapter-level @-commands. This enables you to use the C-x ] (forward-page) and C-x [ (backward-page) commands to move forward and backward by chapter, and to use the C-x p (narrow-to-page) command to narrow to a chapter. See section `Pages' in The GNU Emacs Manual, for more information about the page commands.

Updating Nodes and Menus

Texinfo mode provides commands for automatically creating or updating menus and node pointers. The commands are called "update" commands because their most frequent use is for updating a Texinfo file after you have worked on it; but you can use them to insert the `Next', `Previous', and `Up' pointers into an @node line that has none and to create menus in a file that has none.

If you do not use the updating commands, you need to write menus and node pointers by hand, which is a tedious task.

You can use the updating commands

You can also use the commands to update all the nodes and menus in a region or in a whole Texinfo file.

The updating commands work only with conventional Texinfo files, which are structured hierarchically like books. In such files, a structuring command line must follow closely after each @node line, except for the `Top' @node line. (A structuring command line is a line beginning with @chapter, @section, or other similar command.)

You can write the structuring command line on the line that follows immediately after an @node line or else on the line that follows after a single @comment line or a single @ifinfo line. You cannot interpose more than one line between the @node line and the structuring command line; and you may interpose only an @comment line or an @ifinfo line.

Commands which work on a whole buffer require that the `Top' node be followed by a node with an @chapter or equivalent-level command. Note that the menu updating commands will not create a main or master menu for a Texinfo file that has only @chapter-level nodes! The menu updating commands only create menus within nodes for lower level nodes. To create a menu of chapters, you must provide a `Top' node.

The menu updating commands remove menu entries that refer to other Info files since they do not refer to nodes within the current buffer. This is a deficiency. Rather than use menu entries, you can use cross references to refer to other Info files. None of the updating commands affect cross references.

Texinfo mode has five updating commands that are used most often: two are for updating the node pointers or menu of a single node (or a region); two are for updating every node pointer and menu in a file; and one, the texinfo-master-menu command, is for creating a master menu for a complete file, and optionally, for updating every node and menu in the whole Texinfo file.

The texinfo-master-menu command is the primary command:

C-c C-u m
M-x texinfo-master-menu
Create or update a master menu that includes all the other menus (incorporating the descriptions from pre-existing menus, if any). With an argument (prefix argument, C-u, if interactive), first create or update all the nodes and all the regular menus in the buffer before constructing the master menu. (See section The `Top' Node and Master Menu, for more about a master menu.) For texinfo-master-menu to work, the Texinfo file must have a `Top' node and at least one subsequent node. After extensively editing a Texinfo file, you can type the following:
C-u M-x texinfo-master-menu
or
C-u C-c C-u m
This updates all the nodes and menus completely and all at once.

The other major updating commands do smaller jobs and are designed for the person who updates nodes and menus as he or she writes a Texinfo file.

The commands are:

C-c C-u C-n
M-x texinfo-update-node
Insert the `Next', `Previous', and `Up' pointers for the node that point is within (i.e., for the @node line preceding point). If the @node line has pre-existing `Next', `Previous', or `Up' pointers in it, the old pointers are removed and new ones inserted. With an argument (prefix argument, C-u, if interactive), this command updates all @node lines in the region (which is the text between point and mark).
C-c C-u C-m
M-x texinfo-make-menu
Create or update the menu in the node that point is within. With an argument (C-u as prefix argument, if interactive), the command makes or updates menus for the nodes which are either within or a part of the region. Whenever texinfo-make-menu updates an existing menu, the descriptions from that menu are incorporated into the new menu. This is done by copying descriptions from the existing menu to the entries in the new menu that have the same node names. If the node names are different, the descriptions are not copied to the new menu.
C-c C-u C-e
M-x texinfo-every-node-update
Insert or update the `Next', `Previous', and `Up' pointers for every node in the buffer.
C-c C-u C-a
M-x texinfo-all-menus-update
Create or update all the menus in the buffer. With an argument (C-u as prefix argument, if interactive), first insert or update all the node pointers before working on the menus. If a master menu exists, the texinfo-all-menus-update command updates it; but the command does not create a new master menu if none already exists. (Use the texinfo-master-menu command for that.) When working on a document that does not merit a master menu, you can type the following:
C-u C-c C-u C-a
or
C-u M-x texinfo-all-menus-update
This updates all the nodes and menus.

The texinfo-column-for-description variable specifies the column to which menu descriptions are indented. By default, the value is 32 although it is often useful to reduce it to as low as 24. You can set the variable with the M-x edit-options command (see section `Editing Variable Values' in The GNU Emacs Manual) or with the M-x set-variable command (see section `Examining and Setting Variables' in The GNU Emacs Manual).

Also, the texinfo-indent-menu-description command may be used to indent existing menu descriptions to a specified column. Finally, if you wish, you can use the texinfo-insert-node-lines command to insert missing @node lines into a file. (See section Other Updating Commands, for more information.)

Updating Requirements

To use the updating commands, you must organize the Texinfo file hierarchically with chapters, sections, subsections, and the like. When you construct the hierarchy of the manual, do not `jump down' more than one level at a time: you can follow the `Top' node with a chapter, but not with a section; you can follow a chapter with a section, but not with a subsection. However, you may `jump up' any number of levels at one time--for example, from a subsection to a chapter.

Each @node line, with the exception of the line for the `Top' node, must be followed by a line with a structuring command such as @chapter, @section, or @unnumberedsubsec.

Each @node line/structuring-command line combination must look either like this:

@node     Comments,  Minimum, Conventions, Overview
@comment  node-name, next,    previous,    up
@section Comments

or like this (without the @comment line):

@node Comments, Minimum, Conventions, Overview
@section Comments

In this example, `Comments' is the name of both the node and the section. The next node is called `Minimum' and the previous node is called `Conventions'. The `Comments' section is within the `Overview' node, which is specified by the `Up' pointer. (Instead of an @comment line, you can write an @ifinfo line.)

If a file has a `Top' node, it must be called `top' or `Top' and be the first node in the file.

The menu updating commands create a menu of sections within a chapter, a menu of subsections within a section, and so on. This means that you must have a `Top' node if you want a menu of chapters.

Incidentally, the makeinfo command will create an Info file for a hierarchically organized Texinfo file that lacks `Next', `Previous' and `Up' pointers. Thus, if you can be sure that your Texinfo file will be formatted with makeinfo, you have no need for the `update node' commands. (See section Creating an Info File, for more information about makeinfo.) However, both makeinfo and the texinfo-format-... commands require that you insert menus in the file.

Other Updating Commands

In addition to the five major updating commands, Texinfo mode possesses several less frequently used updating commands:

M-x texinfo-insert-node-lines
Insert @node lines before the @chapter, @section, and other sectioning commands wherever they are missing throughout a region in a Texinfo file. With an argument (C-u as prefix argument, if interactive), the texinfo-insert-node-lines command not only inserts @node lines but also inserts the chapter or section titles as the names of the corresponding nodes. In addition, it inserts the titles as node names in pre-existing @node lines that lack names. Since node names should be more concise than section or chapter titles, you must manually edit node names so inserted. For example, the following marks a whole buffer as a region and inserts @node lines and titles throughout:
C-x h C-u M-x texinfo-insert-node-lines
(Note that this command inserts titles as node names in @node lines; the texinfo-start-menu-description command (see section Inserting Frequently Used Commands) inserts titles as descriptions in menu entries, a different action. However, in both cases, you need to edit the inserted text.)
M-x texinfo-multiple-files-update
Update nodes and menus in a document built from several separate files. With C-u as a prefix argument, create and insert a master menu in the outer file. With a numeric prefix argument, such as C-u 2, first update all the menus and all the `Next', `Previous', and `Up' pointers of all the included files before creating and inserting a master menu in the outer file. The texinfo-multiple-files-update command is described in the appendix on @include files. See section texinfo-multiple-files-update.
M-x texinfo-indent-menu-description
Indent every description in the menu following point to the specified column. You can use this command to give yourself more space for descriptions. With an argument (C-u as prefix argument, if interactive), the texinfo-indent-menu-description command indents every description in every menu in the region. However, this command does not indent the second and subsequent lines of a multi-line description.
M-x texinfo-sequential-node-update
Insert the names of the nodes immediately following and preceding the current node as the `Next' or `Previous' pointers regardless of those nodes' hierarchical level. This means that the `Next' node of a subsection may well be the next chapter. Sequentially ordered nodes are useful for novels and other documents that you read through sequentially. (However, in Info, the g* RET command lets you look through the file sequentially, so sequentially ordered nodes are not strictly necessary.) With an argument (prefix argument, if interactive), the texinfo-sequential-node-update command sequentially updates all the nodes in the region.

Formatting for Info

Texinfo mode provides several commands for formatting part or all of a Texinfo file for Info. Often, when you are writing a document, you want to format only part of a file--that is, a region.

You can use either the texinfo-format-region or the makeinfo-region command to format a region:

C-c C-e C-r
M-x texinfo-format-region
C-c C-m C-r
M-x makeinfo-region
Format the current region for Info.

You can use either the texinfo-format-buffer or the makeinfo-buffer command to format a whole buffer:

C-c C-e C-b
M-x texinfo-format-buffer
C-c C-m C-b
M-x makeinfo-buffer
Format the current buffer for Info.

For example, after writing a Texinfo file, you can type the following:

C-u C-c C-u m
or
C-u M-x texinfo-master-menu

This updates all the nodes and menus. Then type the following to create an Info file:

C-c C-m C-b
or
M-x makeinfo-buffer

For TeX or the Info formatting commands to work, the file must include a line that has @setfilename in its header.

See section Creating an Info File, for details about Info formatting.

Formatting and Printing

Typesetting and printing a Texinfo file is a multi-step process in which you first create a file for printing (called a DVI file), and then print the file. Optionally, you may also create indices. To do this, you must run the texindex command after first running the tex typesetting command; and then you must run the tex command again. Or else run the texi2dvi command which automatically creates indices as needed.

Often, when you are writing a document, you want to typeset and print only part of a file to see what it will look like. You can use the texinfo-tex-region and related commands for this purpose. Use the texinfo-tex-buffer command to format all of a buffer.

C-c C-t C-b
M-x texinfo-tex-buffer
Run texi2dvi on the buffer. In addition to running TeX on the buffer, this command automatically creates or updates indices as needed.
C-c C-t C-r
M-x texinfo-tex-region
Run TeX on the region.
C-c C-t C-i
M-x texinfo-texindex
Run texindex to sort the indices of a Texinfo file formatted with texinfo-tex-region. The texinfo-tex-region command does not run texindex automatically; it only runs the tex typesetting command. You must run the texinfo-tex-region command a second time after sorting the raw index files with the texindex command. (Usually, you do not format an index when you format a region, only when you format a buffer. Now that the texi2dvi command exists, there is no little need for this command.)
C-c C-t C-p
M-x texinfo-tex-print
Print the file (or the part of the file) previously formatted with texinfo-tex-buffer or texinfo-tex-region.

For texinfo-tex-region or texinfo-tex-buffer to work, the file must start with a `\input texinfo' line and must include an @settitle line. The file must end with @bye on a line by itself. (When you use texinfo-tex-region, you must surround the @settitle line with start-of-header and end-of-header lines.)

See section Format and Print Hardcopy, for a description of the other TeX related commands, such as tex-show-print-queue.

Texinfo Mode Summary

In Texinfo mode, each set of commands has default keybindings that begin with the same keys. All the commands that are custom-created for Texinfo mode begin with C-c. The keys are somewhat mnemonic.

Insert Commands

The insert commands are invoked by typing C-c twice and then the first letter of the @-command to be inserted. (It might make more sense mnemonically to use C-c C-i, for `custom insert', but C-c C-c is quick to type.)

C-c C-c c       Insert `@code'.
C-c C-c d       Insert `@dfn'.
C-c C-c e       Insert `@end'.
C-c C-c i       Insert `@item'.
C-c C-c n       Insert `@node'.
C-c C-c s       Insert `@samp'.
C-c C-c v       Insert `@var'.
C-c C-c {       Insert braces.
C-c C-c ]
C-c C-c }       Move out of enclosing braces.

C-c C-c C-d     Insert a node's section title
                in the space for the description
                in a menu entry line.

Show Structure

The texinfo-show-structure command is often used within a narrowed region.

C-c C-s         List all the headings.

The Master Update Command

The texinfo-master-menu command creates a master menu; and can be used to update every node and menu in a file as well.

C-c C-u m
M-x texinfo-master-menu
                Create or update a master menu.

C-u C-c C-u m   With C-u as a prefix argument, first
                create or update all nodes and regular
                menus, and then create a master menu.

Update Pointers

The update pointer commands are invoked by typing C-c C-u and then either C-n for texinfo-update-node or C-e for texinfo-every-node-update.

C-c C-u C-n     Update a node.
C-c C-u C-e     Update every node in the buffer.

Update Menus

Invoke the update menu commands by typing C-c C-u and then either C-m for texinfo-make-menu or C-a for texinfo-all-menus-update. To update both nodes and menus at the same time, precede C-c C-u C-a with C-u.

C-c C-u C-m     Make or update a menu.

C-c C-u C-a     Make or update all
                menus in a buffer.

C-u C-c C-u C-a With C-u as a prefix argument,
                first create or update all nodes and
                then create or update all menus.

Format for Info

The Info formatting commands that are written in Emacs Lisp are invoked by typing C-c C-e and then either C-r for a region or C-b for the whole buffer.

The Info formatting commands that are written in C and based on the makeinfo program are invoked by typing C-c C-m and then either C-r for a region or C-b for the whole buffer.

Use the texinfo-format... commands:

C-c C-e C-r     Format the region.
C-c C-e C-b     Format the buffer.

Use makeinfo:

C-c C-m C-r     Format the region.
C-c C-m C-b     Format the buffer.
C-c C-m C-l     Recenter the makeinfo output buffer.
C-c C-m C-k     Kill the makeinfo formatting job.

Typeset and Print

The TeX typesetting and printing commands are invoked by typing C-c C-t and then another control command: C-r for texinfo-tex-region, C-b for texinfo-tex-buffer, and so on.

C-c C-t C-r     Run TeX on the region.
C-c C-t C-b     Run texi2dvi on the buffer.
C-c C-t C-i     Run texindex.
C-c C-t C-p     Print the DVI file.
C-c C-t C-q     Show the print queue.
C-c C-t C-d     Delete a job from the print queue.
C-c C-t C-k     Kill the current TeX formatting job.
C-c C-t C-x     Quit a currently stopped TeX formatting job.
C-c C-t C-l     Recenter the output buffer.

Other Updating Commands

The `other updating commands' do not have standard keybindings because they are rarely used.

M-x texinfo-insert-node-lines
                Insert missing @node lines in region.
                With C-u as a prefix argument,
                use section titles as node names.

M-x texinfo-multiple-files-update
                Update a multi-file document.
                With C-u 2 as a prefix argument,
                create or update all nodes and menus
                in all included files first.

M-x texinfo-indent-menu-description
                Indent descriptions.

M-x texinfo-sequential-node-update
                Insert node pointers in strict sequence.

Beginning a Texinfo File

Certain pieces of information must be provided at the beginning of a Texinfo file, such as the name of the file and the title of the document.

Generally, the beginning of a Texinfo file has four parts:

  1. The header, delimited by special comment lines, that includes the commands for naming the Texinfo file and telling TeX what definitions' file to use when processing the Texinfo file.
  2. A short statement of what the file is about, with a copyright notice and copying permissions. This is enclosed in @ifinfo and @end ifinfo commands so that the formatters place it only in the Info file.
  3. A title page and copyright page, with a copyright notice and copying permissions. This is enclosed between @titlepage and @end titlepage commands. The title and copyright page appear only in the printed manual.
  4. The `Top' node that contains a menu for the whole Info file. The contents of this node appear only in the Info file.

Also, optionally, you may include the copying conditions for a program and a warranty disclaimer. The copying section will be followed by an introduction or else by the first chapter of the manual.

Since the copyright notice and copying permissions for the Texinfo document (in contrast to the copying permissions for a program) are in parts that appear only in the Info file or only in the printed manual, this information must be given twice.

Sample Texinfo File Beginning

The following sample shows what is needed.

\input texinfo   @c -*-texinfo-*-
@c %**start of header
@setfilename name-of-info-file
@settitle name-of-manual
@setchapternewpage odd
@c %**end of header

@ifinfo
This file documents ...

Copyright year copyright-owner

Permission is granted to ...
@end ifinfo

@c  This title page illustrates only one of the
@c  two methods of forming a title page.

@titlepage
@title name-of-manual-when-printed
@subtitle subtitle-if-any
@subtitle second-subtitle
@author author

@c  The following two commands
@c  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)

@ifinfo
This document describes ...

This document applies to version ...
of the program named ...
@end ifinfo

@menu
* Copying::          Your rights and freedoms.
* First Chapter::    Getting started ...
* Second Chapter::              ...
  ...
  ...
@end menu

@node    First Chapter, Second Chapter, top,      top
@comment node-name,     next,           previous, up
@chapter First Chapter
@cindex Index entry for First Chapter

The Texinfo File Header

Texinfo files start with at least three lines that provide Info and TeX with necessary information. These are the \input texinfo line, the @settitle line, and the @setfilename line. If you want to run TeX on just a part of the Texinfo File, you must write the @settitle and @setfilename lines between start-of-header and end-of-header lines.

Thus, the beginning of a Texinfo file looks like this:

\input texinfo   @c -*-texinfo-*-
@setfilename sample.info
@settitle Sample Document

or else like this:

\input texinfo   @c -*-texinfo-*-
@c %**start of header
@setfilename sample.info
@settitle Sample Document
@c %**end of 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-*-

This line serves two functions:

  1. When the file is processed by TeX, the \input texinfo command tells TeX to load 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. TeX uses the backslash, `\', to mark the beginning of a command, just as Texinfo uses @. The `texinfo.tex' file causes the switch from `\' to `@'; before the switch occurs, TeX requires `\', which is why it appears at the beginning of the file.
  2. When the file is edited in GNU Emacs, the `-*-texinfo-*-' mode specification tells Emacs to use Texinfo mode.

Start of Header

Write a start-of-header line on the second line of a Texinfo file. Follow the start-of-header line with @setfilename and @settitle lines and, optionally, with other command lines, such as @smallbook or @footnotestyle; and then by an end-of-header line (see section End of Header).

With these lines, you can format part of a Texinfo file for Info or typeset part for printing.

A start-of-header line looks like this:

@c %**start of header

The odd string of characters, `%**', is to ensure that no other comment is accidentally taken for a start-of-header line.

@setfilename

In order to serve as the primary input file for either makeinfo or TeX, a Texinfo file must contain a line that looks like this:

@setfilename info-file-name

Write the @setfilename command at the beginning of a line and follow it on the same line by the Info file name. Do not write anything else on the line; anything on the line after the command is considered part of the file name, including a comment.

The @setfilename line specifies the name of the Info file to be generated. This name should be different from the name of the Texinfo file. There are two conventions for choosing the name: you can either remove the `.tex' extension from the input file name, or replace it with the `.info' extension.

Some operating systems cannot handle long file names. You can run into a problem even when the file name you specify is itself short enough. This occurs because the Info formatters split a long Info file into short indirect subfiles, and name them by appending `-1', `-2', ..., `-10', `-11', and so on, to the original file name. (See section Tag Files and Split Files.) The subfile name `texinfo.info-10', for example, is too long for some systems; so the Info file name for this document is `texinfo' rather than `texinfo.info'.

The Info formatting commands ignore everything written before the @setfilename line, which is why the very first line of the file (the \input line) does not need to be commented out.

The @setfilename line produces no output when you typeset a printed manual, but is does an essential job: it opens the index, cross-reference, and other auxiliary files used by Texinfo.

@settitle

In order to be made into a printed manual, a Texinfo file must contain a line that looks like this:

@settitle title

Write the @settitle command at the beginning of a line and follow it on the same line by the title. This tells TeX the title to use in a header or footer. Do not write anything else on the line; anything on the line after the command is considered part of the title, including a comment.

Conventionally, when TeX formats a Texinfo file for double-sided output, the title is printed in the left-hand (even-numbered) page headings and the current chapter title is printed in the right-hand (odd-numbered) page headings. (TeX learns the title of each chapter from each @chapter command.) Page footers are not printed.

Even if you are printing in a single-sided style, TeX looks for an @settitle command line, in case you include the manual title in the heading.

The @settitle command should precede everything that generates actual output in TeX.

Although the title in the @settitle command is usually the same as the title on the title page, it does not affect the title as it appears on the title page. Thus, the two do not need not match exactly; and the title in the @settitle command can be a shortened or expanded version of the title as it appears on the title page. (See section @titlepage.)

TeX prints page headings only for that text that comes after the @end titlepage command in the Texinfo file, or that comes after an @headings command that turns on headings. (See section The @headings Command, for more information.)

You may, if you wish, create your own, customized headings and footings. See section Page Headings, for a detailed discussion of this process.

@setchapternewpage

In a book or a manual, text is usually printed on both sides of the paper, chapters start on right-hand pages, and right-hand pages have odd numbers. But in short reports, text often is printed only on one side of the paper. Also in short reports, chapters sometimes do not start on new pages, but are printed on the same page as the end of the preceding chapter, after a small amount of vertical whitespace.

You can use the @setchapternewpage command with various arguments to specify how TeX should start chapters and whether it should typeset pages for printing on one or both sides of the paper (single-sided or double-sided printing).

Write the @setchapternewpage command at the beginning of a line followed by its argument.

For example, you would write the following to cause each chapter to start on a fresh odd-numbered page:

@setchapternewpage odd

You can specify one of three alternatives with the @setchapternewpage command:

@setchapternewpage off
Cause TeX to typeset a new chapter on the same page as the last chapter, after skipping some vertical whitespace. Also, cause TeX to format page headers for single-sided printing. (You can override the headers format with the @headings double command; see section The @headings Command.)
@setchapternewpage on
Cause TeX to start new chapters on new pages and to typeset page headers for single-sided printing. This is the form most often used for short reports. This alternative is the default.
@setchapternewpage odd
Cause TeX to start new chapters on new, odd-numbered pages (right-handed pages) and to typeset for double-sided printing. This is the form most often used for books and manuals.

Texinfo does not have an @setchapternewpage even command.

(You can countermand or modify an @setchapternewpage command with an @headings command. See section The @headings Command.)

At the beginning of a manual or book, pages are not numbered--for example, the title and copyright pages of a book are not numbered. By convention, table of contents pages are numbered with roman numerals and not in sequence with the rest of the document.

Since an Info file does not have pages, the @setchapternewpage command has no effect on it.

Usually, you do not write an @setchapternewpage command for single-sided printing, but accept the default which is to typeset for single-sided printing and to start new chapters on new pages. Usually, you write an @setchapternewpage odd command for double-sided printing.

Paragraph Indenting

The Info formatting commands may insert spaces at the beginning of the first line of each paragraph, thereby indenting that paragraph. You can use the @paragraphindent command to specify the indentation. Write an @paragraphindent command at the beginning of a line followed by either `asis' or a number. The template is:

@paragraphindent indent

The Info formatting commands indent according to the value of indent:

The default value of indent is `asis'.

Write the @paragraphindent command before or shortly after the end-of-header line at the beginning of a Texinfo file. (If you write the command between the start-of-header and end-of-header lines, the region formatting commands indent paragraphs as specified.)

A peculiarity of the texinfo-format-buffer and texinfo-format-region commands is that they do not indent (nor fill) paragraphs that contain @w or @* commands. See section Refilling Paragraphs, for a detailed description of what goes on.

End of Header

Follow the header lines with an end-of-header line. An end-of-header line looks like this:

@c %**end of header

If you include the @setchapternewpage command between the start-of-header and end-of-header lines, TeX will typeset a region as that command specifies. Similarly, if you include an @smallbook command between the start-of-header and end-of-header lines, TeX will typeset a region in the "small" book format.

See section Start of Header.

Summary and Copying Permissions for Info

The title page and the copyright page appear only in the printed copy of the manual; therefore, the same information must be 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 an appendix to this manual; see section `ifinfo' Copying Permissions, for the complete text.

The permissions text appears in an Info file before the first node. This mean that a reader does not see this text when reading the file using Info, except when using the advanced Info command g *.

The Title and Copyright Pages

A manual's name and author are usually printed on a title page. Sometimes copyright information is printed on the title page as well; more often, copyright information is printed on the back of the title page.

The title and copyright pages appear in the printed manual, but not in the Info file. Because of this, it is possible to use several slightly obscure TeX typesetting commands that cannot 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.

See section Titlepage Copying Permissions, for the standard text for the copyright permissions.

@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 @end titlepage command starts a new page and turns on page numbering. (See section Page Headings, for details about how to generate page headings.) 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 thereby create more than one unnumbered page. This is how the copyright page is produced. (The @titlepage command might perhaps have been better named the @titleandadditionalpages command, but that would have been rather long!)

When you write a manual about a computer program, you should write the version of the program to which the manual applies on the title page. If the manual changes more frequently than the program or is independent of it, you should also include an edition number(5) for the manual. This helps readers keep track of which manual is for which version of the program. (The `Top' node should also contain this information; see section @top.)

Texinfo provides two main methods for creating a title page. One method uses the @titlefont, @sp, and @center commands to generate a title page in which the words on the page are centered.

The second method uses the @title, @subtitle, and @author commands to create a title page with black rules under the title and author lines and the subtitle text set flush to the right hand side of the page. With this method, you do not specify any of the actual formatting of the title page. You specify the text you want, and Texinfo does the formatting. You may use either method.

For extremely simple applications, Texinfo also provides a command @shorttitlepage which takes a single argument as the title. The argument is typeset on a page by itself and followed by a blank page.

@titlefont, @center, and @sp

You can use the @titlefont, @sp, and @center commands to create a title page for a printed document. (This is the first of the two methods for creating a title page in Texinfo.)

Use the @titlefont command to select a large font suitable for the title itself.

For example:

@titlefont{Texinfo}

Use the @center command at the beginning of a line to center the remaining text on that line. Thus,

@center @titlefont{Texinfo}

centers the title, which in this example is "Texinfo" printed in the title font.

Use the @sp command to insert vertical space. For example:

@sp 2

This inserts two blank lines on the printed page. (See section @sp n: Insert Blank Lines, for more information about the @sp command.)

A template for this method looks like this:

@titlepage
@sp 10
@center @titlefont{name-of-manual-when-printed}
@sp 2
@center subtitle-if-any
@sp 2
@center author
...
@end titlepage

The spacing of the example fits an 8 1/2 by 11 inch manual.

@title, @subtitle, and @author

You can use the @title, @subtitle, and @author commands to create a title page in which the vertical and horizontal spacing is done for you automatically. This contrasts with the method described in the previous section, in which the @sp command is needed to adjust vertical spacing.

Write the @title, @subtitle, or @author commands at the beginning of a line followed by the title, subtitle, or author.

The @title command produces a line in which the title is set flush to the left-hand side of the page in a larger than normal font. The title is underlined with a black rule.

The @subtitle command sets subtitles in a normal-sized font flush to the right-hand side of the page.

The @author command sets the names of the author or authors in a middle-sized font flush to the left-hand side of the page on a line near the bottom of the title page. The names are underlined with a black rule that is thinner than the rule that underlines the title. (The black rule only occurs if the @author command line is followed by an @page command line.)

There are two ways to use the @author command: you can write the name or names on the remaining part of the line that starts with an @author command:

@author by Jane Smith and John Doe

or you can write the names one above each other by using two (or more) @author commands:

@author Jane Smith
@author John Doe

(Only the bottom name is underlined with a black rule.)

A template for this method looks like this:

@titlepage
@title name-of-manual-when-printed
@subtitle subtitle-if-any
@subtitle second-subtitle
@author author
@page
...
@end titlepage

Copyright Page and Permissions

By international treaty, the copyright notice for a book should be either on the title page or on the back of the title page. The copyright notice should include the year followed by the name of the organization or person who owns the copyright.

When the copyright notice is on the back of the title page, that page is customarily not numbered. Therefore, in Texinfo, the information on the copyright page should be within @titlepage and @end titlepage commands.

Use the @page command to cause a page break. To push the copyright notice and the other text on the copyright page towards the bottom of the page, you can write a somewhat mysterious line after the @page command that reads like this:

@vskip 0pt plus 1filll

This is a TeX command that is not supported by the Info formatting commands. The @vskip command inserts whitespace. The `0pt plus 1filll' means to put in zero points of mandatory whitespace, and as much optional whitespace as needed to push the following text to the bottom of the page. Note the use of three `l's in the word `filll'; this is the correct usage in TeX.

In a printed manual, the @copyright{} command generates a `c' inside a circle. (In Info, it generates `(C)'.) 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, followed by the copying permissions for the manual.

Note that permissions must be given here as well as in the summary segment within @ifinfo and @end ifinfo that immediately follows the header since this text appears only in the printed manual and the `ifinfo' text appears only in the Info file.

See section Sample Permissions, for the standard text.

Heading Generation

An @end titlepage command on a line by itself not only marks the end of the title and copyright pages, but also causes TeX to start generating page headings and page numbers.

To repeat what is said elsewhere, Texinfo has two standard page heading formats, one for documents which are printed on one side of each sheet of paper (single-sided printing), and the other for documents which are printed on both sides of each sheet (double-sided printing). (See section @setchapternewpage.) You can specify these formats in different ways:

Most documents are formatted with the standard single-sided or double-sided format, using @setchapternewpage odd for double-sided printing and no @setchapternewpage command for single-sided printing.

The @headings Command

The @headings command is rarely used. It specifies what kind of page headings and footings to print on each page. Usually, this is controlled by the @setchapternewpage command. You need the @headings command only if the @setchapternewpage command does not do what you want, or if you want to turn off pre-defined page headings prior to defining your own. Write an @headings command immediately after the @end titlepage command.

You can use @headings as follows:

@headings off
Turn off printing of page headings.
@headings single
Turn on page headings appropriate for single-sided printing.
@headings double
Turn on page headings appropriate for double-sided printing. The two commands, @headings on and @headings double, are synonymous.
@headings singleafter
@headings doubleafter
Turn on single or double headings, respectively, after the current page is output.
@headings on
Turn on page headings: single if `@setchapternewpage on', double otherwise.

For example, suppose you write @setchapternewpage off before the @titlepage command to tell TeX to start a new chapter on the same page as the end of the last chapter. This command also causes TeX to typeset page headers for single-sided printing. To cause TeX to typeset for double sided printing, write @headings double after the @end titlepage command.

You can stop TeX from generating any page headings at all by writing @headings off on a line of its own immediately after the line containing the @end titlepage command, like this:

@end titlepage
@headings off

The @headings off command overrides the @end titlepage command, which would otherwise cause TeX to print page headings.

You can also specify your own style of page heading and footing. See section Page Headings, for more information.

The `Top' Node and Master Menu

The `Top' node is the node from which you enter an Info file.

A `Top' node should contain a brief description of the Info file and an extensive, master menu for the whole Info file. This helps the reader understand what the Info file is about. Also, you should write the version number of the program to which the Info file applies; or, at least, the edition number.

The contents of the `Top' node should appear only in the Info file; none of it should appear in printed output, so enclose it between @ifinfo and @end ifinfo commands. (TeX does not print either an @node line or a menu; they appear only in Info; strictly speaking, you are not required to enclose these parts between @ifinfo and @end ifinfo, but it is simplest to do so. See section Conditionally Visible Text.)

Sometimes, you will want to place an @top sectioning command line containing the title of the document immediately after the @node Top line (see section The @top Sectioning Command, for more information).

For example, the beginning of the Top node of this manual contains an @top sectioning command, a short description, and edition and version information. It looks like this:

...
@end titlepage

@ifinfo
@node Top, Copying, (dir), (dir)
@top Texinfo

Texinfo is a documentation system...

This is edition...
...
@end ifinfo

@menu
* Copying::                 Texinfo is freely
                              redistributable.
* Overview::                What is Texinfo?
...
@end menu

In a `Top' node, the `Previous', and `Up' nodes usually refer to the top level directory of the whole Info system, which is called `(dir)'. The `Next' node refers to the first node that follows the main or master menu, which is usually the copying permissions, introduction, or first chapter.

Parts of a Master Menu

A master menu is a detailed main menu listing all the nodes in a file.

A master menu is enclosed in @menu and @end menu commands and does not appear in the printed document.

Generally, a master menu is divided into parts.

Each section in the menu can be introduced by a descriptive line. So long as the line does not begin with an asterisk, it will not be treated as a menu entry. (See section Writing a Menu, for more information.)

For example, the master menu for this manual looks like the following (but has many more entries):

@menu
* Copying::             Texinfo is freely
                          redistributable.
* Overview::            What is Texinfo?
* Texinfo Mode::        Special features in GNU Emacs.
...
...
* Command and Variable Index::
                        An entry for each @-command.
* Concept Index::       An entry for each concept.

@detailmenu
 --- The Detailed Node Listing ---

Overview of Texinfo

* Info Files::          What is an Info file?
* Printed Manuals::     Characteristics of
                          a printed manual.
...
...

Using Texinfo Mode

* Info on a Region::    Formatting part of a file
                          for Info.
...
...
@end detailmenu
@end menu

Software Copying Permissions

If the Texinfo file has a section containing the "General Public License" and the distribution information and a warranty disclaimer for the software that is documented, this section usually follows the `Top' node. The General Public License is very important to Project GNU software. It ensures that you and others will continue to have a right to use and share the software.

The copying and distribution information and the disclaimer are followed by an introduction or else by the first chapter of the manual.

Although an introduction 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, an introduction would follow the licensing and distribution information, although sometimes people put it earlier in the document. Usually, an introduction is put in an @unnumbered section. (See section @unnumbered, @appendix.)

Ending a Texinfo File

The end of a Texinfo file should include the commands that create indices and generate detailed and summary tables of contents. And it must include the @bye command that marks the last line processed by TeX.

For example:

@node    Concept Index,     , Variables Index, Top
@c        node-name,    next, previous,        up
@unnumbered Concept Index

@printindex cp

@contents
@bye

Index Menus and Printing an Index

To print an index means to include it as part of a manual or Info file. This does not happen automatically just because you use @cindex or other index-entry generating commands in the Texinfo file; those just cause the raw data for the index to be accumulated. To generate an index, you must include the @printindex command at the place in the document where you want the index to appear. Also, as part of the process of creating a printed manual, you must run a program called texindex (see section Format and Print Hardcopy) to sort the raw data to produce a sorted index file. The sorted index file is what is actually used to print the index.

Texinfo offers six different types of predefined index: the concept index, the function index, the variables index, the keystroke index, the program index, and the data type index (see section Predefined Indices). Each index type has a two-letter name: `cp', `fn', `vr', `ky', `pg', and `tp'. You may merge indices, or put them into separate sections (see section Combining Indices); or you may define your own indices (see section Defining New Indices).

The @printindex command takes a two-letter index name, reads the corresponding sorted index file and formats it appropriately into an index.

The @printindex command does not generate a chapter heading for the index. Consequently, you should precede the @printindex command with a suitable section or chapter command (usually @unnumbered) to supply the chapter heading and put the index into the table of contents. Precede the @unnumbered command with an @node line.

For example:

@node Variable Index, Concept Index, Function Index, Top
@comment    node-name,         next,       previous, up
@unnumbered Variable Index

@printindex vr

@node     Concept Index,     , Variable Index, Top
@comment      node-name, next,       previous, up
@unnumbered Concept Index

@printindex cp

@summarycontents
@contents
@bye

(Readers often prefer that the concept index come last in a book, since that makes it easiest to find.)

Generating a Table of Contents

The @chapter, @section, and other structuring commands supply the information to make up a table of contents, but they do not cause an actual table to appear in the manual. To do this, you must use the @contents and @summarycontents commands:

@contents
Generate a table of contents in a printed manual, including all chapters, sections, subsections, etc., as well as appendices and unnumbered chapters. (Headings generated by the @heading series of commands do not appear in the table of contents.) The @contents command should be written on a line by itself.
@shortcontents
@summarycontents
(@summarycontents is a synonym for @shortcontents; the two commands are exactly the same.) Generate a short or summary table of contents that lists only the chapters (and appendices and unnumbered chapters). Omit sections, subsections and subsubsections. Only a long manual needs a short table of contents in addition to the full table of contents. Write the @shortcontents command on a line by itself right before the @contents command.

The table of contents commands automatically generate a chapter-like heading at the top of the first table of contents page. Write the table of contents commands at the very end of a Texinfo file, just before the @bye command, following any index sections--anything in the Texinfo file after the table of contents commands will be omitted from the table of contents.

When you print a manual with a table of contents, the table of contents are printed last and numbered with roman numerals. You need to place those pages in their proper place, after the title page, yourself. (This is the only collating you need to do for a printed manual. The table of contents is printed last because it is generated after the rest of the manual is typeset.)

Here is an example of where to write table of contents commands:

indices...
@shortcontents
@contents
@bye

Since an Info file uses menus instead of tables of contents, the Info formatting commands ignore the @contents and @shortcontents commands.

@bye File Ending

An @bye command terminates TeX or Info formatting. None of the formatting commands see any of the file following @bye. The @bye command should be on a line by itself.

If you wish, you may follow the @bye line with notes. These notes will not be formatted and will not appear in either Info or a printed manual; it is as if text after @bye were within @ignore ... @end ignore. Also, you may follow the @bye line with a local variables list. See section Using the Local Variables List, for more information.

Chapter Structuring

The chapter structuring commands divide a document into a hierarchy of chapters, sections, subsections, and subsubsections. These commands generate large headings; they also provide information for the table of contents of a printed manual (see section Generating a Table of Contents).

The chapter structuring commands do not create an Info node structure, so normally you should put an @node command immediately before each chapter structuring command (see section Nodes). The only time you are likely to use the chapter structuring commands without using the node structuring commands is if you are writing a document that contains no cross references and will never be transformed into Info format.

It is unlikely that you will ever write a Texinfo file that is intended only as an Info file and not as a printable document. If you do, you might still use chapter structuring commands to create a heading at the top of each node--but you don't need to.

Tree Structure of Sections

A Texinfo file is usually structured like a book with chapters, sections, subsections, and the like. This structure can be visualized as a tree (or rather as an upside-down tree) with the root at the top and the levels corresponding to chapters, sections, subsection, and subsubsections.

Here is a diagram that shows a Texinfo file with three chapters, each of which has two sections.

                          Top
                           |
         -------------------------------------
        |                  |