home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Professional
/
OS2PRO194.ISO
/
os2
/
prgramer
/
unix
/
info
/
texinfo.i07
(
.txt
)
< prev
next >
Wrap
GNU Info File
|
1993-06-12
|
48KB
|
863 lines
This is Info file texinfo, produced by Makeinfo-1.47 from the input
file texinfo2.tex.
This file documents Texinfo, a documentation system that uses a
single source file to produce both on-line information and a printed
manual.
Copyright (C) 1988, 1990, 1991, 1992 Free Software Foundation, Inc.
This is the second edition of the Texinfo documentation,
and is consistent with version 2 of `texinfo.tex'.
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: Using Ordinary TeX Commands, Next: set and clear, Prev: Conditional Commands, Up: Conditionals
Using Ordinary TeX Commands
===========================
Inside a region delineated by `@iftex' and `@end iftex', you can
embed some PlainTeX commands. Info will ignore these commands since
they are only in that part of the file which is seen by TeX. You can
write the TeX commands as you would write them in a normal TeX file,
except that you must replace the `\' used by TeX with an `@'. For
example, in the `@titlepage' section of a Texinfo file, you can use the
TeX command `@vskip' to format the copyright page. (The `@titlepage'
command causes Info to ignore the region automatically, as it does with
the `@iftex' command.)
However, many features of PlainTeX will not work, as they are
overridden by features of Texinfo.
You can enter PlainTeX completely, and use `\' in the TeX commands,
by delineating a region with the `@tex' and `@end tex' commands. (The
`@tex' command also causes Info to ignore the region, like the `@iftex'
command.)
For example, here is a mathematical expression written in PlainTeX:
@tex
$$ \chi^2 = \sum_{i=1}^N
\left (y_i - (a + b x_i)
\over \sigma_i\right)^2 $$
@end tex
The output of this example will appear only in a printed manual. If
you are reading this in Info, you will not see anything after this
paragraph.
File: texinfo, Node: set and clear, Prev: Using Ordinary TeX Commands, Up: Conditionals
`@set' and `@clear'
===================
You can direct the Texinfo formatting commands to format or ignore
parts of a Texinfo file with the `@set', `@clear', and related
commands. For example, you can use this option to create one document
that has two variants, such as a guide book both for tourists and for
natives of an area. The version for tourists could have extra
information about how to `get around', while the version for natives
would not.
To create such a document, write a Texinfo file that specifies some
text for one version, some text for the other version, and some text
for both versions. The Texinfo formatting commands will only affect
the version you designate.
Use the `@set FLAG' command to turn on, or "set", a FLAG; a "flag"
can be any word. The format for the command looks like this:
@set FLAG
When a FLAG is set, the Texinfo formatting commands will format text
between subsequent pairs of `@ifset FLAG' and `@end ifset' commands.
For example, here is an extract from a Texinfo file:
Unless you have good surge suppressors on your
power line, you should turn off your computer
before a thunderstorm.
@set enough-time-before-storm
@ifset enough-time-before-storm
Save all your files, type @kbd{sync} to ensure that
the operating system copies all data in memory to the hard
disk, type @kbd{halt}, and then turn off the machine.
@end ifset
Pull the electric plug from the wall.
In the example, the formatting commands will format the text between
`@ifset enough-time-before-storm' and `@end ifset' because the
`enough-time-before-storm' flag is set.
Use the `@clear FLAG' command to turn off, or "clear", a flag.
Clearing a flag is the opposite of setting a flag. The command looks
like this:
@clear FLAG
When FLAG is cleared, then the Texinfo formatting commands do *not*
format the text between `@ifset FLAG' and `@end ifset'; that text is
ignored and does not appear in either printed or Info output.
Thus, if you clear the `enough-time-before-storm' flag of the
preceding example with `@clear FLAG', the Texinfo formatting commands
ignore the text between the `@ifset enough-time-before-storm' and `@end
ifset' commands. In the formatted output, that text does not appear;
you see only the line that says, "Pull the electric plug from the
wall", in both printed and Info output.
If a flag is cleared with an `@clear FLAG' command, then the
formatting commands format text between subsequent pairs of `@ifclear'
and `@end ifclear' commands. But if the flag is set with `@set FLAG',
then the formatting commands do *not* format text between an `@ifclear'
and an `@end ifclear' command; rather, they ignore that text. An
`@ifclear' command looks like this:
@ifclear FLAG
In brief, the commands are:
`@set FLAG'
Tell the Texinfo formatting commands that FLAG is set.
`@clear FLAG'
Tell the Texinfo formatting commands that FLAG is cleared.
`@ifset FLAG'
If FLAG is set, tell the Texinfo formatting commands to format the
text up to the following `@end ifset' command.
If FLAG is cleared, tell the Texinfo formatting commands to ignore
text up to the following `@end ifset' command.
`@ifclear FLAG'
If FLAG is set, tell the Texinfo formatting commands to ignore the
text up to the following `@end ifclear' command.
If FLAG is cleared, tell the Texinfo formatting commands to format
the text up to the following `@end ifclear' command.
Write each of these commands on a line of its own.
File: texinfo, Node: Format/Print Hardcopy, Next: Create an Info File, Prev: Conditionals, Up: Top
Format and Print Hardcopy
*************************
There are three major shell commands for making a printed manual
from a Texinfo file: one for converting the Texinfo file into a file
that will be printed, a second for sorting indices, and a third for
printing the formatted document. When you use the shell commands, you
can either work directly in the operating system shell or work within a
shell inside GNU Emacs.
If you are using GNU Emacs, you can use commands provided by Texinfo
mode instead of shell commands. In addition to the three commands to
format a file, sort the indices, and print the result, Texinfo mode
offers key bindings for commands to recenter the output buffer, show the
print queue, and delete a job from the print queue.
* Menu:
* Use TeX:: Use TeX to format for hardcopy.
* Shell Format & Print:: How to format and print a hardcopy manual
with shell commands.
* Within Emacs:: How to format and print from an Emacs shell.
* Texinfo Mode Printing:: How to format and print in Texinfo mode.
* Compile-Command:: How to print using Emacs's compile command.
* Requirements Summary:: TeX formatting requirements summary.
* Preparing for TeX:: What you need to do to use TeX.
* Overfull hboxes:: What are and what to do with overfull hboxes.
* smallbook:: Printing small format books and manuals.
File: texinfo, Node: Use TeX, Next: Shell Format & Print, Up: Format/Print Hardcopy
Use TeX
=======
The typesetting program called TeX is used for formatting a Texinfo
file.(1) TeX is a very powerful typesetting program and, if used right,
does an exceptionally good job. *Note How to Obtain TeX: Obtaining TeX,
for information on how to obtain TeX.
The `makeinfo', `texinfo-format-region', and `texinfo-format-buffer'
commands read the very same @-commands in the Texinfo file as does TeX,
but process them differently to make an Info file; see *Note Create an
Info File::.
---------- Footnotes ----------
(1) If you do not have TeX, you can use the `texi2roff' program for
formatting.
File: texinfo, Node: Shell Format & Print, Next: Within Emacs, Prev: Use TeX, Up: Format/Print Hardcopy
How to Format and Print Using Shell Commands
============================================
Format the Texinfo file with the shell command `tex' followed by the
name of the Texinfo file. This produces a formatted DVI file as well
as several auxiliary files containing indices, cross references, etc.
The DVI file (for "DeVice Independent" file) can be printed on a wide
variety of printers.
The `tex' formatting command itself does not sort the indices; it
writes an output file of unsorted index data. This is a misfeature of
TeX. Hence, to generate a printed index, you first need a sorted index
to work from. The `texindex' command sorts indices.(1)
The `tex' formatting command outputs unsorted index files under
names that obey a standard convention. These names are the name of
your main input file to the `tex' formatting command, with everything
after the first period thrown away, and the two letter names of indices
added at the end. For example, the raw index output files for the
input file `foo.texinfo' would be `foo.cp', `foo.vr', `foo.fn',
`foo.tp', `foo.pg' and `foo.ky'. Those are exactly the arguments to
give to `texindex'. Or else, you can use `??' as "wild-cards" and give
the command in this form:
texindex foo.??
This command will run `texindex' on all the unsorted index files,
including any that you have defined yourself using `@defindex' or
`@defcodeindex'. (You may execute `texindex foo.??' even if there are
similarly named files with two letter extensions that are not index
files, such as `foo.el'. The `texindex' command reports but otherwise
ignores such files.)
For each file specified, `texindex' generates a sorted index file
whose name is made by appending `s' to the input file name. The
`@printindex' command knows to look for a file of that name. `texindex'
does not alter the raw index output file.
After you have sorted the indices, you need to rerun the `tex'
formatting command on the Texinfo file. This regenerates a formatted
DVI file with up-to-date index entries.(2)
To summarize, this is a three step process:
1. Run the `tex' formatting command on the Texinfo file. This
generates the formatted DVI file as well as the raw index files
with two letter extensions.
2. Run the shell command `texindex' on the raw index files to sort
them. This creates the corresponding sorted index files.
3. Rerun the `tex' formatting command on the Texinfo file. This
regenerates a formatted DVI file with the index entries in the
correct order. This second run also corrects the page numbers for
the cross references. (The tables of contents are always correct.)
You need not run `texindex' each time after you run the `tex'
formatting. If you do not, on the next run, the `tex' formatting
command will use whatever sorted index files happen to exist from the
previous use of `texindex'. This is usually OK while you are debugging.
Rather than type the `tex' and `texindex' commands yourself, you can
use `texi2dvi'. This shell script is designed to simplify the
`tex'--`texindex'--`tex' sequence by figuring out whether index files
and DVI files are up-to-date. It runs `texindex' and `tex' only when
necessary.
The syntax for `texi2dvi' is like this (where `%' is the shell
prompt):
% texi2dvi FILENAME...
Finally, you can print the DVI file with the DVI print command. The
precise command to use depends on the system; `lpr -d' is common. The
DVI print command may require a file name without any extension or with
a `.dvi' extension.
The following commands, for example, sort the indices, format, and
print the `Bison Manual' (where `%' is the shell prompt):
% tex bison.texinfo
% texindex bison.??
% tex bison.texinfo
% lpr -d bison.dvi
(Remember that the shell commands may be different at your site; but
these are commonly used versions.)
---------- Footnotes ----------
(1) The source file `texindex.c' comes as part of the standard GNU
distribution and is usually installed when Emacs is installed.
(2) If you use more than one index and have cross references to an
index other than the first, you must run `tex' *three times* to get
correct output: once to generate raw index data; again (after
`texindex') to output the text of the indices and determine their true
page numbers; and a third time to output correct page numbers in cross
references to them. However, cross references to indices are rare.
File: texinfo, Node: Within Emacs, Next: Texinfo Mode Printing, Prev: Shell Format & Print, Up: Format/Print Hardcopy
From an Emacs Shell ...
=======================
You can give formatting and printing commands from a shell within GNU
Emacs. To create a shell within Emacs, type `M-x shell'. In this
shell, you can format and print the document. *Note How to Format and
Print Using Shell Commands: Shell Format & Print, for details.
You can switch to and from the shell buffer while `tex' is running
and do other editing. If you are formatting a long document on a slow
machine, this can be very convenient.
You can also use `texi2dvi' from an Emacs shell. For example, here
is how to use `texi2dvi' to format and print the `GCC Internals Manual'
from a shell within Emacs (where `%' is the shell prompt):
% texi2dvi gcc.texinfo
% lpr -d gcc.dvi
*Note Texinfo Mode Printing::, for more information about formatting
and printing in Texinfo mode.
File: texinfo, Node: Texinfo Mode Printing, Next: Compile-Command, Prev: Within Emacs, Up: Format/Print Hardcopy
Formatting and Printing in Texinfo Mode
=======================================
Texinfo mode provides several predefined key commands for TeX
formatting and printing. These include commands for sorting indices,
looking at the printer queue, killing the formatting job, and
recentering the display of the buffer in which the operations occur.
`C-c C-t C-r'
`M-x texinfo-tex-region'
Run TeX on the current region.
`C-c C-t C-b'
`M-x texinfo-tex-buffer'
Run TeX on the current buffer.
`C-c C-t C-i'
`M-x texinfo-texindex'
Sort the indices of a Texinfo file formatted with
`texinfo-tex-region' or `texinfo-tex-buffer'.
`C-c C-t C-p'
`M-x texinfo-tex-print'
Print a DVI file that was made with `texinfo-tex-region' or
`texinfo-tex-buffer'.
`C-c C-t C-q'
`M-x texinfo-show-tex-print-queue'
Show the print queue.
`C-c C-t C-d'
`M-x texinfo-delete-from-tex-print-queue'
Delete a job from the print queue; you will be prompted for the job
number shown by a preceding `C-c C-t C-q' command
(`texinfo-show-tex-print-queue').
`C-c C-t C-k'
`M-x texinfo-kill-tex-job'
Kill the currently running TeX job started by `texinfo-tex-region'
or `texinfo-tex-buffer', or any other process running in the
Texinfo shell buffer.
`C-c C-t C-x'
`M-x texinfo-quit-tex-job'
Quit a TeX formatting job that has stopped because of an error by
sending an x to it. When you do this, TeX preserves a record of
what it did in a `.log' file.
`C-c C-t C-l'
`M-x texinfo-recenter-tex-output-buffer'
Redisplay the shell buffer in which the TeX printing and formatting
commands are run to show its most recent output.
Thus, the usual sequence of commands for formatting a buffer is as
follows (with comments to the right):
C-c C-t C-b Run TeX on the buffer.
C-c C-t C-i Sort the indices.
C-c C-t C-b Rerun TeX to regenerate indices.
C-c C-t C-p Print the DVI file.
C-c C-t C-q Display the printer queue.
The Texinfo mode TeX formatting commands start a subshell in Emacs
called the `*texinfo-tex-shell*'. The `texinfo-tex-command',
`texinfo-texindex-command', and `tex-dvi-print-command' commands are
all run in this shell.
You can watch the commands operate in the `*texinfo-tex-shell*'
buffer, and you can switch to and from and use the
`*texinfo-tex-shell*' buffer as you would any other shell buffer.
The formatting and print commands depend on the values of several
variables. The default values are:
Variable Default value
texinfo-tex-command "tex"
texinfo-texindex-command "texindex"
texinfo-tex-shell-cd-command "cd"
texinfo-tex-dvi-print-command "lpr -d"
texinfo-show-tex-queue-command "lpq"
texinfo-delete-from-print-queue-command "lprm"
texinfo-start-of-header "%**start"
texinfo-end-of-header "%**end"
texinfo-tex-trailer "@bye"
The default values of `texinfo-tex-command' and
`texinfo-texindex-command' are set in the `texnfo-tex.el' file.
You can change the values of these variables with the `M-x
edit-options' command (*note Editing Variable Values: ( emacs)Edit
Options.), with the `M-x set-variable' command (*note Examining and
Setting Variables: (emacs)Examining.), or with your `.emacs'
initialization file (*note Init File: (emacs)Init File.).
File: texinfo, Node: Compile-Command, Next: Requirements Summary, Prev: Texinfo Mode Printing, Up: Format/Print Hardcopy
Using the Local Variables List
==============================
Yet another way to apply the TeX formatting command to a Texinfo
file is to put that command in a "local variables list" at the end of
the Texinfo file. You can then specify the TeX formatting command as a
`compile-command' and have Emacs run the TeX formatting command by
typing `M-x compile'. This creates a special shell called the
`*compilation buffer*' in which Emacs runs the compile command. For
example, at the end of the `gdb.texinfo' file, after the `@bye', you
would put the following:
@c Local Variables:
@c compile-command: "tex gdb.texinfo"
@c End:
This technique is most often used by programmers who also compile
programs this way; see *Note Compilation: (emacs)Compilation.
File: texinfo, Node: Requirements Summary, Next: Preparing for TeX, Prev: Compile-Command, Up: Format/Print Hardcopy
TeX Formatting Requirements Summary
===================================
Every Texinfo file that is to be input to TeX must begin with a
`\input' command and contain an `@settitle' command:
\input texinfo
@settitle NAME-OF-MANUAL
The first command instructs TeX to load the macros it needs to process
a Texinfo file and the second command specifies the title of printed
manual.
Every Texinfo file must end with a line that terminates TeX
processing and forces out unfinished pages:
@bye
Strictly speaking, these three lines are all a Texinfo file needs for
TeX, besides the body. (The `@setfilename' line is the only line that
a Texinfo file needs for Info formatting.)
Usually, the file's first line contains an `@c -*-texinfo-*-'
comment that causes Emacs to switch to Texinfo mode when you edit the
file. In addition, the beginning usually includes an `@setfilename'
for Info formatting, an `@setchapternewpage' command, a title page, a
copyright page, and permissions. Besides an `@bye', the end of a file
usually includes indices and a table of contents.
For more information, see
*Note `@setchapternewpage': setchapternewpage,
*Note Page Headings: Headings,
*Note Titlepage & Copyright Page::,
*Note Printing Indices & Menus::, and
*Note Contents::.
File: texinfo, Node: Preparing for TeX, Next: Overfull hboxes, Prev: Requirements Summary, Up: Format/Print Hardcopy
Preparing to Use TeX
====================
TeX needs to know where to find the `texinfo.tex' file that you have
told it to input with the `\input texinfo' command at the beginning of
the first line. The `texinfo.tex' file tells TeX how to handle
@-commands. (`texinfo.tex' is included in the standard GNU
distributions.)
Usually, the `texinfo.tex' file is put in the default directory that
contains TeX macros (the `/usr/lib/tex/macros' directory) when GNU
Emacs or other GNU software is installed. In this case, TeX will find
the file and you do not need to do anything special. Alternatively, you
can put `texinfo.tex' in the directory in which the Texinfo source file
is located, and TeX will find it there.
However, you may want to specify the location of the `\input' file
yourself. One way to do this is to write the complete path for the file
after the `\input' command. Another way is to set the `TEXINPUTS'
environment variable in your `.cshrc' or `.profile' file. The
`TEXINPUTS' environment variable will tell TeX where to find the
`texinfo.tex' file and any other file that you might want TeX to use.
Whether you use a `.cshrc' or `.profile' file depends on whether you
use `csh', `sh', or `bash' for your shell command interpreter. When
you use `csh', it looks to the `.cshrc' file for initialization
information, and when you use `sh' or `bash', it looks to the
`.profile' file.
In a `.cshrc' file, you could use the following `csh' command
sequence:
setenv TEXINPUTS .:/usr/me/mylib:/usr/lib/tex/macros
In a `.profile' file, you could use the following `sh' command
sequence:
TEXINPUTS=.:/usr/me/mylib:/usr/lib/tex/macros
export TEXINPUTS
This would cause TeX to look for `\input' file first in the current
directory, indicated by the `.', then in a hypothetical user's
`me/mylib' directory, and finally in the system library.
File: texinfo, Node: Overfull hboxes, Next: smallbook, Prev: Preparing for TeX, Up: Format/Print Hardcopy
Overfull "hboxes"
=================
TeX is sometimes unable to typeset a line without extending it into
the right margin. This can occur when TeX comes upon what it
interprets as a long word that it cannot hyphenate, such as an
electronic mail network address or a very long title. When this
happens, TeX prints an error message like this:
Overfull \hbox (20.76302pt too wide)
(In TeX, lines are in "horizontal boxes", hence the term, "hbox". The
backslash, `\', is the TeX equivalent of `@'.)
TeX also provides the line number in the Texinfo source file and the
text of the offending line, which is marked at all the places that TeX
knows how to hyphenate words. *Note Catching Errors with TeX
Formatting: Debugging with TeX, for more information about typesetting
errors.
If the Texinfo file has an overfull hbox, you can rewrite the
sentence so the overfull hbox does not occur, or you can decide to
leave it. A small excursion into the right margin often does not
matter and may not even be noticeable.
However, if you do leave an overfull hbox, unless told otherwise,
TeX will print a large, ugly, black rectangle beside the line. This is
so you will notice the location of the problem if you are correcting a
draft. To prevent such a monstrosity from marring your final printout,
put the following in the beginning of the Texinfo file on a line of its
own, before the `@titlepage' command:
@finalout
File: texinfo, Node: smallbook, Prev: Overfull hboxes, Up: Format/Print Hardcopy
Printing "Small" Books
======================
By default, TeX typesets pages for printing in an 8.5 by 11 inch
format. However, you can direct TeX to typeset a document in a 7 by
9.25 inch format that is suitable for bound books by inserting the
following command on a line by itself at the beginning of the Texinfo
file, before the title page:
@smallbook
(Since regular sized books are often about 7 by 9.25 inches, this
command might better have been called the `@regularbooksize' command,
but it came to be called the `@smallbook' command by comparison to the
8.5 by 11 inch format.)
If you write the `@smallbook' command between the start-of-header
and end-of-header lines, the Texinfo mode TeX region formatting
command, `texinfo-tex-region', will format the region in "small" book
size (*note Start of Header::.).
The Free Software Foundation distributes printed copies of `The GNU
Emacs Manual' and other manuals in the "small" book size. *Note
`@smallexample' and `@smalllisp': smallexample & smalllisp, for
information about commands that make it easier to produce examples for
a smaller manual.
File: texinfo, Node: Create an Info File, Next: Install an Info File, Prev: Format/Print Hardcopy, Up: Top
Creating an Info File
*********************
`makeinfo' is a utility that converts a Texinfo file into an Info
file; `texinfo-format-region' and `texinfo-format-buffer' are GNU Emacs
functions that do the same.
A Texinfo file must possess an `@setfilename' line near its
beginning, otherwise the Info formatting commands will fail.
For information on installing the Info file in the Info system, see
*Note Install an Info File::.
* Menu:
* makeinfo advantages:: `makeinfo' provides better error checking.
* Running makeinfo:: How to run `makeinfo' from a shell.
* makeinfo options:: Specify fill-column and other options.
* Pointer Validation:: How to check that pointers point somewhere.
* makeinfo in Emacs:: How to run `makeinfo' from Emacs.
* texinfo-format commands:: Two Info formatting commands written
in Emacs Lisp are an alternative
to `makeinfo'.
* Tag and Split Files:: How tagged and split files help Info
to run better.
File: texinfo, Node: makeinfo advantages, Next: Running makeinfo, Up: Create an Info File
`makeinfo' Preferred
====================
The `makeinfo' utility creates an Info file from a Texinfo source
file more quickly than either of the Emacs formatting commands and
provides better error messages. We recommend it. `makeinfo' is a C
program that is independent of Emacs. You do not need to run Emacs to
use `makeinfo', which means you can use `makeinfo' on machines that are
too small to run Emacs. You can run `makeinfo' in any one of three
ways: from an operating system shell, from a shell inside Emacs, or by
typing a key command in Texinfo mode in Emacs.
The `texinfo-format-region' and the `texinfo-format-buffer' commands
are useful if you cannot run `makeinfo'. Also, in some circumstances,
they format short regions or buffers more quickly than `makeinfo'.
File: texinfo, Node: Running makeinfo, Next: makeinfo options, Prev: makeinfo advantages, Up: Create an Info File
Running `makeinfo' from a Shell
===============================
To create an Info file from a Texinfo file, type `makeinfo' followed
by the name of the Texinfo file. Thus, to create the Info file for
Bison, type the following at the shell prompt (where `%' is the prompt):
% makeinfo bison.texinfo
(You can run a shell inside Emacs by typing `M-x shell'.)
Sometimes you will want to specify options. For example, if you wish
to discover which version of `makeinfo' you are using, type:
% makeinfo --version
*Note makeinfo options::, for more information.
File: texinfo, Node: makeinfo options, Next: Pointer Validation, Prev: Running makeinfo, Up: Create an Info File
Options for `makeinfo'
======================
The `makeinfo' command takes a number of options. Most often,
options are used to set the value of the fill column and specify the
footnote style. Each command line option is a word preceded by `--'(1)
or a letter preceded by `-'. You can use abbreviations for the option
names as long as they are unique.
For example, you could use the following command to create an Info
file for `bison.texinfo' in which each line is filled to only 68
columns (where `%' is the prompt):
% makeinfo --fill-column=68 bison.texinfo
You can write two or more options in sequence, like this:
% makeinfo --no-split --fill-column=70 ...
This would keep the Info file together as one possibly very long file
and would also set the fill column to 70.
The options are:
`-D VAR'
Cause VAR to be defined. This is equivalent to `@set VAR' in the
Texinfo file.
`--error-limit=LIMIT'
Set the maximum number of errors that `makeinfo' will report
before exiting (on the assumption that continuing would be
useless). The default number of errors that can be reported before
`makeinfo' gives up is 100.
`--fill-column=WIDTH'
Specify the maximum number of columns in a line; this is the
right-hand edge of a line. Paragraphs that are filled will be
filled to this width. (Filling is the process of breaking up and
connecting lines so that lines are the same length as or shorter
than the number specified as the fill column. Lines are broken
between words.)
`--footnote-style=STYLE'
Set the footnote style to STYLE, either `end' for the end node
style or `separate' for the separate node style. The value set by
this option overrides the value set in a Texinfo file by an
`@footnotestyle' command. When the footnote style is `separate',
`makeinfo' makes a new node containing the footnotes found in the
current node. When the footnote style is `end', `makeinfo' places
the footnote references at the end of the current node.
`-I DIR'
Add `dir' to the directory search list for finding files that are
included using the `@include' command. By default, `makeinfo'
searches only the current directory.
`--no-headers'
Do not include menus or node lines in the output. This results in
an ASCII file that you cannot read in Info since it does not
contain the requisite nodes or menus; but you can print such a
file in a single, typewriter-like font and produce acceptable
output.
`--no-split'
Suppress the splitting stage of `makeinfo'. Normally, large
output files (where the size is greater than 70k bytes) are split
into smaller subfiles, each one approximately 50k bytes. If you
specify `--no-split', `makeinfo' will not split up the output file.
`--no-pointer-validate'
`--no-validate'
Suppress the pointer-validation phase of `makeinfo'. Normally,
after a Texinfo file is processed, some consistency checks are
made to ensure that cross references can be resolved, etc. *Note
Pointer Validation::.
`--no-warn'
Suppress the output of warning messages. This does *not* suppress
the output of error messages, only warnings. You might want this
if the file you are creating has examples of Texinfo cross
references within it, and the nodes that are referenced do not
actually exist.
`--output=FILE'
`-o FILE'
Specify that the output should be directed to FILE and not to the
file name specified in the `@setfilename' command found in the
texinfo source. FILE can be the special token `-', which specifies
standard output.
`--paragraph-indent=INDENT'
Set the paragraph indentation style to INDENT. The value set by
this option overrides the value set in a Texinfo file by an
`@paragraphindent' command. The value of INDENT is interpreted as
follows:
* If the value of INDENT is `asis', do not change the existing
indentation at the starts of paragraphs.
* If the value of INDENT is zero, delete any existing
indentation.
* If the value of INDENT is greater than zero, indent each
paragraph by that number of spaces.
`--reference-limit=LIMIT'
Set the value of the number of references to a node that
`makeinfo' will make without reporting a warning. If a node has
more than this number of references in it, `makeinfo' will make the
references but also report a warning.
`-U VAR'
Cause VAR to be undefined. This is equivalent to `@clear VAR' in
the Texinfo file.
`--verbose'
Cause `makeinfo' to display messages saying what it is doing.
Normally, `makeinfo' only outputs messages if there are errors or
warnings.
`--version'
Report the version number of this copy of `makeinfo'.
---------- Footnotes ----------
(1) `--' has replaced `+', the old introductory character, to
maintain POSIX.2 compatibility without losing long-named options.
File: texinfo, Node: Pointer Validation, Next: makeinfo in Emacs, Prev: makeinfo options, Up: Create an Info File
Pointer Validation
==================
If you do not suppress pointer-validation (by using the
`--no-pointer-validation' option), `makeinfo' will check the validity
of the final Info file. Mostly, this means ensuring that nodes you
have referenced really exist. Here is a complete list of what is
checked:
1. If a `Next', `Previous', or `Up' node reference is a reference to a
node in the current file and is not an external reference such as
to `(dir)', then the referenced node must exist.
2. In every node, if the `Previous' node is different from the `Up'
node, then the `Previous' node must also be pointed to by a `Next'
node.
3. Every node except the `Top' node must have an `Up' pointer.
4. The node referenced by an `Up' pointer must contain a reference to
the current node in some manner other than through a `Next'
reference. This includes menu entries and cross references.
5. If the `Next' reference of a node is not the same as the `Next'
reference of the `Up' reference, then the node referenced by the
`Next' pointer must have a `Previous' pointer that points back to
the current node. This rule allows the last node in a section to
point to the first node of the next chapter.
File: texinfo, Node: makeinfo in Emacs, Next: texinfo-format commands, Prev: Pointer Validation, Up: Create an Info File
Running `makeinfo' inside Emacs
===============================
You can run `makeinfo' in GNU Emacs Texinfo mode by using either the
`makeinfo-region' or the `makeinfo-buffer' commands. In Texinfo mode,
the commands are bound to `C-c C-m C-r' and `C-c C-m C-b' by default.
`C-c C-m C-r'
`M-x makeinfo-region'
Format the current region for Info.
`C-c C-m C-b'
`M-x makeinfo-buffer'
Format the current buffer for Info.
When you invoke either `makeinfo-region' or `makeinfo-buffer', Emacs
prompts for a file name, offering the name of the visited file as the
default. You can edit the default file name in the minibuffer if you
wish, before typing RET to start the `makeinfo' process.
The Emacs `makeinfo-region' and `makeinfo-buffer' commands run the
`makeinfo' program in a temporary shell buffer. If `makeinfo' finds
any errors, Emacs displays the error messages in the temporary buffer.
You can parse the error messages by typing `C-x `' (`next-error').
This causes Emacs to go to and position the cursor on the line in the
Texinfo source that `makeinfo' thinks caused the error. *Note Running
`make' or Compilers Generally: (emacs)Compilation, for more information
about using the `next-error' command.
In addition, you can kill the shell in which the `makeinfo' command
is running or make the shell buffer display its most recent output.
`C-c C-m C-k'
`M-x makeinfo-kill-job'
Kill the current running `makeinfo' job created by
`makeinfo-region' or `makeinfo-buffer'.
`C-c C-m C-l'
`M-x makeinfo-recenter-output-buffer'
Redisplay the `makeinfo' shell buffer to display its most recent
output.
(Note that the parallel commands for killing and recentering a TeX job
are `C-c C-t C-k' and `C-c C-t C-l'. *Note Texinfo Mode Printing::.)
You can specify options for `makeinfo' by setting the
`makeinfo-options' variable with either the `M-x edit-options' or the
`M-x set-variable' command, or by setting the variable in your `.emacs'
initialization file.
For example, you could write the following in your `.emacs' file:
(setq makeinfo-options
"--paragraph-indent=0 --no-split
--fill-column=70 --verbose")
For more information, see
*Note Editing Variable Values: (emacs)Edit Options,
*Note Examining and Setting Variables: (emacs)Examining,
*Note Init File: (emacs)Init File, and
*Note Options for `makeinfo': makeinfo options.
File: texinfo, Node: texinfo-format commands, Next: Tag and Split Files, Prev: makeinfo in Emacs, Up: Create an Info File
The `texinfo-format...' Commands
================================
In GNU Emacs in Texinfo mode, you can format part or all of a Texinfo
file with the `texinfo-format-region' command. This formats the
current region and displays the formatted text in a temporary buffer
called `*Info Region*'.
Similarly, you can format a buffer with the `texinfo-format-buffer'
command. This command creates a new buffer and generates the Info file
in it. Typing `C-x C-s' will save the Info file under the name
specified by the `@setfilename' line which must be near the beginning
of the Texinfo file.
`C-c C-e C-r'
``texinfo-format-region''
Format the current region for Info.
`C-c C-e C-b'
``texinfo-format-buffer''
Format the current buffer for Info.
The `texinfo-format-region' and `texinfo-format-buffer' commands
provide you with some error checking, and other functions can provide
you with further help in finding formatting errors. These procedures
are described in an appendix; see *Note Catching Mistakes::. However,
the `makeinfo' program is often faster and provides better error
checking (*note makeinfo in Emacs::.).
File: texinfo, Node: Tag and Split Files, Prev: texinfo-format commands, Up: Create an Info File
Tag Files and Split Files
=========================
If a Texinfo file has more than 30,000 bytes,
`texinfo-format-buffer' automatically creates a tag table for its Info
file; `makeinfo' always creates a tag table. With a "tag table", Info
can jump to new nodes more quickly than it can otherwise.
In addition, if the Texinfo file contains more than about 70,000
bytes, `texinfo-format-buffer' and `makeinfo' split the large Info file
into shorter "indirect" subfiles of about 50,000 bytes each. Big files
are split into smaller files so that Emacs does not need to make a
large buffer to hold the whole of a large Info file; instead, Emacs
allocates just enough memory for the small, split off file that is
needed at the time. This way, Emacs avoids wasting memory when you run
Info. (Before splitting was implemented, Info files were always kept
short and "include files" were designed as a way to create a single,
large printed manual out of the smaller Info files. *Note Include
Files::, for more information. Include files are still used for very
large documents, such as `The Emacs Lisp Reference Manual', in which
each chapter is a separate file.)
When a file is split, Info itself makes use of a shortened version of
the original file that contains just the tag table and references to
the files that were split off. The split off files are called
"indirect" files.
The split off files have names that are created by appending `-1',
`-2', `-3' and so on to the file name specified by the `@setfilename'
command. The shortened version of the original file continues to have
the name specified by `@setfilename'.
At one stage in writing this document, for example, the Info file
was saved as `test-texinfo' and that file looked like this:
Info file: test-texinfo, -*-Text-*-
produced by texinfo-format-buffer
from file: new-texinfo-manual.texinfo
^_
Indirect:
test-texinfo-1: 102
test-texinfo-2: 50422
test-texinfo-3: 101300
^_^L
Tag table:
(Indirect)
Node: overview^?104
Node: info file^?1271
Node: printed manual^?4853
Node: conventions^?6855
...
(But `test-texinfo' had far more nodes than are shown here.) Each of
the split off, indirect files, `test-texinfo-1', `test-texinfo-2', and
`test-texinfo-3', is listed in this file after the line that says
`Indirect:'. The tag table is listed after the line that says `Tag
table:'.
In the list of indirect files, the number following the file name
records the cumulative number of bytes in the preceding indirect files,
not counting the file list itself, the tag table, or the permissions
text in each file. In the tag table, the number following the node name
records the location of the beginning of the node, in bytes from the
beginning.
If you are using `texinfo-format-buffer' to create Info files, you
may want to run the `Info-validate' command. (The `makeinfo' command
does such a good job on its own, you do not need `Info-validate'.)
However, you cannot run the `M-x Info-validate' node-checking command
on indirect files. For information on how to prevent files from being
split and how to validate the structure of the nodes, see *Note Using
Info-validate::.
File: texinfo, Node: Install an Info File, Next: Command List, Prev: Create an Info File, Up: Top
Installing an Info File
***********************
Info files are usually kept in the `.../emacs/info' directory. (You
can find the location of this directory within Emacs by typing `C-h i'
to enter Info and then typing `C-x C-f' to see the full pathname to the
`info' directory.)
* Menu:
* Directory file:: The top level menu for all Info files.
* New Info File:: Listing a new info file.
* Other Info Directories:: How to specify Info files that are
located in other directories.
File: texinfo, Node: Directory file, Next: New Info File, Up: Install an Info File
The `dir' File
==============
For Info to work, the `info' directory must contain a file that
serves as a top level directory for the Info system. By convention,
this file is called `dir'. The `dir' file is itself an Info file. It
contains the top level menu for all the Info files in the system. The
menu looks like this:
* Menu:
* Info: (info). Documentation browsing system.
* Emacs: (emacs). The extensible, self-documenting
text editor.
* Texinfo: (texinfo). With one source file, make
either a printed manual using
TeX or an Info file.
...
Each of these menu entries points to the `Top' node of the Info file
that is named in parentheses. (The menu entry does not need to specify
the `Top' node, since Info goes to the `Top' node if no node name is
mentioned. *Note Nodes in Other Info Files: Other Info Files.)
Thus, the `Info' entry points to the `Top' node of the `info' file
and the `Emacs' entry points to the `Top' node of the `emacs' file.
In each of the Info files, the `Up' pointer of the `Top' node refers
back to the `dir' file. For example, the line for the `Top' node of
the Emacs manual looks like this in Info:
File: emacs Node: Top, Up: (DIR), Next: Distrib
(Note that in this case, the file name is written in upper case
letters--it can be written in either upper or lower case. Info has a
feature that it will change the case of the file name to lower case if
it cannot find the name as written.)
File: texinfo, Node: New Info File, Next: Other Info Directories, Prev: Directory file, Up: Install an Info File
Listing a New Info File
=======================
To add a new Info file to your system, write a new menu entry to the
menu in the `dir' file by editing the `dir' file by hand. Also, put the
new Info file in the `.../emacs/info' directory. For example, if you
were adding documentation for GDB, you would make the following new
entry:
* GDB: (gdb). The source-level C debugger.
The first part of the menu entry is the menu entry name; it is followed
by a colon. The second part is the name of the Info file, in
parentheses; it is followed by a period. The third part of the entry
is the description of the item.
Conventionally, the name of an Info file has a `.info' extension.
Thus, you might list the name of the file like this:
* GDB: (gdb.info). The source-level C debugger.
However, Info will look for a file with a `.info' extension if it does
not find the file under the name given in the menu. This means that in
a menu you can refer to the file `gdb.info' as `gdb', as shown in the
first example. This looks better.
File: texinfo, Node: Other Info Directories, Prev: New Info File, Up: Install an Info File
Info Files in Other Directories
===============================
If an Info file is not in the `info' directory, there are two ways
to specify its location:
* Write the pathname as the menu's second part, or;
* Specify the `info' directory name in an environment variable in
your `.profile' or `.cshrc' initialization file. (Only you and
others with the same environment variable will be able to find Info
files whose location is specified this way.)
For example, to reach a test file in the `~bob/manuals' directory,
you could add an entry like this to the menu in the `dir' file:
* Test: (~bob/manuals/info-test). Bob's own test file.
In this case, the absolute file name of the `info-test' file is written
as the second part of the menu entry.
Alternatively, you may set the `INFOPATH' environment variable in
your `.cshrc' or `.profile' file. The `INFOPATH' environment variable
will tell Info where to look.
If you use `sh' or `bash' for your shell command interpreter, you
must set the `INFOPATH' environment variable in the `.profile'
initialization file; but if you use `csh', you must set the variable in
the `.cshrc' initialization file. The two files require slightly
different command formats.
* In a `.cshrc' file, you could set the `INFOPATH' variable as
follows:
setenv INFOPATH .:~bob/manuals:/usr/local/emacs/info
* In a `.profile' file, you would achieve the same effect by writing:
INFOPATH=.:~bob/manuals:/usr/local/emacs/info
export INFOPATH
Either form would cause Info to look first in the current directory,
indicated by the `.', then in the `~bob/manuals' directory, and finally
in the `/usr/local/emacs/info' directory (which is the usual location
for the standard Info directory).