Texinfo: Robert J. Chassell Richard M. Stallman
Texinfo: Robert J. Chassell Richard M. Stallman
Robert J. Chassell
Richard M. Stallman
This manual is for GNU Texinfo (version 6.6, 16 February 2019), a documentation system
that can produce both online information and a printed manual from a single source using
semantic markup.
Copyright
c 1988, 1990, 1991, 1992, 1993, 1995, 1996, 1997, 1998, 1999, 2001, 2001, 2003,
2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018,
2019 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document under
the terms of the GNU Free Documentation License, Version 1.3 or any later
version published by the Free Software Foundation; with no Invariant Sections,
with the Front-Cover Texts being “A GNU Manual”, and with the Back-Cover
Texts as in (a) below. A copy of the license is included in the section entitled
“GNU Free Documentation License”.
(a) The FSF’s Back-Cover Text is: “You have the freedom to copy and modify
this GNU manual. Buying copies from the FSF supports it in developing GNU
and promoting software freedom.”
Short Contents
Texinfo Copying Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1 Overview of Texinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Writing a Texinfo File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 Beginning and Ending a Texinfo File . . . . . . . . . . . . . . . . . . . . . 15
4 Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5 Chapter Structuring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6 Cross-references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7 Marking Text, Words and Phrases . . . . . . . . . . . . . . . . . . . . . . . 60
8 Quotations and Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
9 Lists and Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
10 Special Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
11 Indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
12 Special Insertions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
13 Forcing and Preventing Breaks . . . . . . . . . . . . . . . . . . . . . . . . . 118
14 Definition Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
15 Internationalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
16 Conditionally Visible Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
17 Defining New Texinfo Commands . . . . . . . . . . . . . . . . . . . . . . . 148
18 Include Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
19 Formatting and Printing Hardcopy . . . . . . . . . . . . . . . . . . . . . 162
20 texi2any: The Generic Translator for Texinfo . . . . . . . . . . . . 174
21 Creating and Installing Info Files . . . . . . . . . . . . . . . . . . . . . . . 199
22 Generating HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
A @-Command Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
B Tips and Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
C Sample Texinfo Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
D Using Texinfo Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
E Page Headings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
F Catching Mistakes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
G Info Format Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
H GNU Free Documentation License . . . . . . . . . . . . . . . . . . . . . . 287
Command and Variable Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
General Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
ii
Table of Contents
1 Overview of Texinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 Reporting Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Output Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Info Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Printed Books . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Adding Output Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1 Texinfo Document Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2 Choosing Node Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3 Writing an @node Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.4 @node Line Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.5 The First Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.6 The @top Sectioning Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.7 Node and Menu Illustration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.8 makeinfo Pointer Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.9 Menus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.9.1 Writing a Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.9.2 A Menu Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.9.3 Menu Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.9.4 The Parts of a Menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.9.5 Less Cluttered Menu Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.9.6 Referring to Other Info Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5 Chapter Structuring . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.1 Tree Structure of Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.2 Structuring Command Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.3 @chapter: Chapter Structuring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.4 @unnumbered, @appendix: Chapters with Other Labeling . . . . . . . 44
5.5 @majorheading, @chapheading: Chapter-level Headings . . . . . . . . 44
5.6 @section: Sections Below Chapters. . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.7 @unnumberedsec, @appendixsec, @heading . . . . . . . . . . . . . . . . . . . . 45
5.8 @subsection: Subsections Below Sections. . . . . . . . . . . . . . . . . . . . . . 45
5.9 The @subsection-like Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.10 @subsection and Other Subsub Commands . . . . . . . . . . . . . . . . . . 46
5.11 @part: Groups of Chapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.12 Raise/lower Sections: @raisesections and @lowersections . . 47
6 Cross-references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.1 What References Are For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.2 Different Cross-reference Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.3 Parts of a Cross-reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.4 @xref . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.4.1 @xref with One Argument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.4.2 @xref with Two Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.4.3 @xref with Three Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.4.4 @xref with Four and Five Arguments . . . . . . . . . . . . . . . . . . . . . 53
6.5 Referring to a Manual as a Whole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.6 @ref . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.7 @pxref . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
iv
10 Special Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
10.1 Floats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
10.1.1 @float [type][,label]: Floating Material . . . . . . . . . . . . . . . . . . 88
10.1.2 @caption & @shortcaption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
10.1.3 @listoffloats: Tables of Contents for Floats . . . . . . . . . . . 89
10.2 Inserting Images. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
10.2.1 Image Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
10.2.2 Image Scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
10.3 Footnotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
10.3.1 Footnote Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
10.3.2 Footnote Styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
11 Indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
11.1 Predefined Indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
11.2 Defining the Entries of an Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
11.3 Making Index Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
11.4 Printing Indices and Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
11.5 Combining Indices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
11.5.1 @syncodeindex: Combining indices using @code . . . . . . . . . 98
11.5.2 @synindex: Combining indices . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
11.6 Defining New Indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
15 Internationalization . . . . . . . . . . . . . . . . . . . . . . . . . 135
15.1 @documentlanguage ll[_cc]: Set the Document Language . . 135
15.2 @documentencoding enc: Set Input Encoding . . . . . . . . . . . . . . . 136
Documentation is like sex: when it is good, it is very, very good; and when it
is bad, it is better than nothing. —Dick Brandon
2
1 Overview of Texinfo
Texinfo is a documentation system that uses a single source file to produce both online infor-
mation and printed output. This means that instead of writing several different documents,
one for each output format, you need only write one document.
Using Texinfo, you can create a printed document (via the TEX typesetting system) in
PDF or PostScript format, including chapters, sections, cross-references, and indices. From
the same Texinfo source file, you can create an HTML output file suitable for use with a web
browser, you can create an Info file with special features to make browsing documentation
easy, and also create a Docbook file or a transliteration to XML format.
A Texinfo source file is a plain text file containing text interspersed with @-commands
(words preceded by an ‘@’) that tell the Texinfo processors what to do. Texinfo’s markup
commands are almost entirely semantic; that is, they specify the intended meaning of text
in the document, rather than physical formatting instructions. You can 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
Appendix D [Texinfo Mode], page 256.)
Texinfo was devised specifically for the purpose of writing software documentation and
manuals. If you want to write a good manual for your program, Texinfo has many features
which we hope will make your job easier. However, it provides almost no commands for
controlling the final formatting. Texinfo is not intended to be a general-purpose formatting
program, so if you need to lay out a newspaper, devise a glossy magazine ad, or follow the
exact formatting requirements of a publishing house, Texinfo may not be the simplest tool.
Spell “Texinfo” with a capital “T” and the other letters in lowercase. The first syllable
of “Texinfo” is pronounced like “speck”, not “hex”. This odd pronunciation is derived from
the pronunciation of TEX. Pronounce TEX as if the ‘X’ were the last sound in the name
‘Bach’. In the word TEX, the ‘X’ is, rather than the English letter “ex”, actually the Greek
letter “chi”.
Texinfo is the official documentation format of the GNU project. More information,
including manuals for GNU packages, is available at the GNU documentation web page
(http://www.gnu.org/doc/).
PDF (Generated via texi2dvi --pdf or texi2pdf.) This format was developed by
Adobe Systems for portable document interchange, based on their previous
PostScript language. It can represent the exact appearance of a document, in-
cluding fonts and graphics, and supporting arbitrary scaling. It is intended to be
platform-independent and easily viewable, among other design goals; http://
en.wikipedia.org/wiki/Portable_Document_Format and http://tug.org/
TUGboat / tb22-3 / tb72beebe-pdf . pdf have some background. By default,
Texinfo uses the pdftex program, an extension of TEX, to output PDF; see
http://tug.org/applications/pdftex. See Section 19.15 [PDF Output],
page 173.
Docbook (Generated via makeinfo --docbook.) This is an XML-based format developed
some years ago, primarily for technical documentation. It therefore bears some
resemblance, in broad outline, to Texinfo. See http: / / www . docbook . org.
Various converters from Docbook to Texinfo have also been developed; see the
Texinfo web pages.
XML (Generated via makeinfo --xml.) XML is a generic syntax specification usable
for any sort of content (a reference is at http: / / www . w3 . org / XML). The
makeinfo XML output, unlike all the other output formats, is a transliteration
of the Texinfo source rather than processed output. That is, it translates the
Texinfo markup commands into XML syntax, for further processing by XML
tools. The XML contains enough information to recreate the original content,
except for syntactic constructs such as Texinfo macros and conditionals. The
Texinfo source distribution includes a utility script txixml2texi to do that
backward transformation.
The details of the output syntax are defined in an XML DTD as usual, which
is contained in a file texinfo.dtd included in the Texinfo source distribution
and available via the Texinfo web pages. Texinfo XML files, and XML files in
general, cannot be viewed in typical web browsers; they won’t follow the DTD
reference and as a result will simply report a (misleading) syntax error.
If you want to read through an Info file in sequence, as if it were a printed manual, you
can hit SPC repeatedly, or you get the whole file with the advanced Info command g *. (See
Section “Advanced Info commands” in Info.)
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.
If you wish to refer to an Info file via a URI, you can use the (unofficial) syntax exem-
plified by the following. This works with Emacs/W3, for example:
info:emacs#Dissociated%20Press
info:///usr/info/emacs#Dissociated%20Press
info://localhost/usr/info/emacs#Dissociated%20Press
The info program itself does not follow URIs of any kind.
would be most useful is to write a new back-end for texi2any, our reference implementation
of a Texinfo parser; it creates a tree representation of the Texinfo input that you can use for
the conversion. The documentation in the source file tp/Texinfo/Convert/Converter.pm
is a good place to start. See Chapter 20 [Generic Translator texi2any], page 174.
Another viable approach is use the Texinfo XML output from texi2any as your input.
This XML is an essentially complete representation of the input, but without the Texinfo
syntax and option peculiarities, as described above.
If you still cannot resist the temptation of writing a new program that reads Texinfo
source directly, let us give some more caveats: please do not underestimate the amount of
work required. Texinfo is by no means a simple language to parse correctly, and remains
under development, so you would be committing to an ongoing task. You are advised to
check that the tests of the language that come with texi2any give correct results with your
new program.
From time to time, proposals are made to generate traditional Unix man pages from
Texinfo source. However, because man pages have a strict conventional format, creating
a good man page requires a completely different source from that needed for the typical
Texinfo applications of writing a good user tutorial and/or a good reference manual. This
makes generating man pages incompatible with the Texinfo design goal of not having to
document the same information in different ways for different output formats. You might
as well write the man page directly.
As an alternative way to support man pages, you may find the program help2man to be
useful. It generates a traditional man page from the ‘--help’ output of a program. In fact,
the man pages for the programs in the Texinfo distribution are generated with this. It is
GNU software written by Brendan O’Dea, available from http://www.gnu.org/software/
help2man.
1.6 History
Richard M. Stallman invented the Texinfo format, wrote the initial processors, and created
Edition 1.0 of this manual. Robert J. Chassell greatly revised and extended the manual,
starting with Edition 1.1. Brian Fox was responsible for the standalone Texinfo distribution
until version 3.8, and originally wrote the standalone makeinfo and info programs. Karl
Berry has continued maintenance since Texinfo 3.8 (manual edition 2.22).
Our thanks go out to all who helped improve this work, particularly the indefatigable
Eli Zaretskii and Andreas Schwab, who have provided patches beyond counting. François
Pinard and David D. Zuhn, tirelessly recorded and reported mistakes and obscurities. Zack
Weinberg did the impossible by implementing the macro syntax in texinfo.tex. Thanks to
Melissa Weisshaus for her frequent reviews of nearly similar editions. Dozens of others have
contributed patches and suggestions, they are gratefully acknowledged in the ChangeLog
file. Our mistakes are our own.
Beginnings
In the 1970’s at CMU, Brian Reid developed a program and format named Scribe to mark
up documents for printing. It used the @ character to introduce commands, as Texinfo does.
Much more consequentially, it strove to describe document contents rather than formatting,
an idea wholeheartedly adopted by Texinfo.
Chapter 1: Overview of Texinfo 8
Meanwhile, people at MIT developed another, not too dissimilar format called Bolio.
This then was converted to using TEX as its typesetting language: BoTEX. The earliest
BoTEX version seems to have been 0.02 on October 31, 1984.
BoTEX could only be used as a markup language for documents to be printed, not for
online documents. Richard Stallman (RMS) worked on both Bolio and BoTEX. He also
developed a nifty on-line help format called Info, and then combined BoTEX and Info to
create Texinfo, a mark up language for text that is intended to be read both online and as
printed hard copy.
Moving forward, the original translator to create Info was written (primarily by RMS
and Bob Chassell) in Emacs Lisp, namely the texinfo-format-buffer and other functions.
In the early 1990s, Brian Fox reimplemented the conversion program in C, now called
makeinfo.
Reimplementing in Perl
In 2012, the C makeinfo was itself replaced by a Perl implementation generically called
texi2any. This version supports the same level of output customization as texi2html,
an independent program originally written by Lionel Cons, later with substantial work by
many others. The many additional features needed to make texi2html a replacement for
makeinfo were implemented by Patrice Dumas. The first never-released version of texi2any
was based on the texi2html code. That implementation, however, was abandoned in favor
of the current program, which parses the Texinfo input into a tree for processing. It still
supports nearly all the features of texi2html.
The new Perl program is much slower than the old C program. We hope the speed
gap will close in the future, but it may not ever be entirely comparable. So why did we
switch? In short, we intend and hope that the present program will be much easier than
the previous C implementation of makeinfo to extend to different output styles, back-end
output formats, and all other customizations. In more detail:
• HTML customization. Many GNU and other free software packages had been happily
using the HTML customization features in texi2html for years. Thus, in effect two
independent implementations of the Texinfo language had developed, and keeping them
in sync was not simple. Adding the HTML customization possible in texi2html to a
C program would have been an enormous effort.
• Unicode, and multilingual support generally, especially of east Asian languages. Al-
though of course it’s perfectly plausible to write such support in C, in the particular
case of makeinfo, it would have been tantamount to rewriting the entire program. In
Perl, much of that comes essentially for free.
• Additional back-ends. The makeinfo code had become convoluted to the point where
adding a new back-end was quite complex, requiring complex interactions with ex-
isting back-ends. In contrast, our Perl implementation provides a clean tree-based
representation for all back-ends to work from. People have requested numerous dif-
ferent back-ends (LATEX, the latest (X)HTML, . . . ), and they will now be much more
feasible to implement. Which leads to the last item:
• Making contributions easier. In general, due to the cleaner structure, the Perl program
should be considerably easier than the C for anyone to read and contribute to, with
the resulting obvious benefits.
Chapter 1: Overview of Texinfo 9
See Section 20.1 [Reference Implementation], page 174, for more on the rationale for and
role of texi2any.
10
HTML Written as a numeric entity except contexts where spaces are ignored; for
example, in ‘@footnote{ ^L foo}’, the form feed is ignored.
XML Keep them everywhere; in attributes, escaped as ‘\f’; also, ‘\’ is escaped
as ‘\\’ and newline as ‘\n’.
As you can see, because of these differing requirements of the output formats, it’s not
possible to use form feeds completely portably.
• Caution: Last, do not use tab characters in a Texinfo file! (Except perhaps in verbatim
modes.) TEX uses variable-width fonts, which means that it is impractical at best to
define a tab to work in all circumstances. Consequently, TEX treats tabs like single
spaces, and that is not what they look like in the source. Furthermore, makeinfo does
nothing special with tabs, and thus a tab character in your input file will usually have
a different appearance in the output.
To avoid this problem, Texinfo mode in GNU Emacs inserts multiple spaces when you
press the TAB key. Also, you can run untabify in Emacs to convert tabs in a region to
multiple spaces, or use the unexpand command from the shell.
2.2 Comments
You can write comments in a Texinfo file by using the @comment command, which may be
abbreviated to @c. Such comments are for a person looking at the Texinfo source 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 the visible output. (To be precise, the character after the @c or @comment
must be something other than a dash or alphanumeric, or it will be taken as part of the
command.)
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, work on a whole line. You cannot use @comment or @c within a line beginning
with such a command.
You can also have long stretches of text ignored by the Texinfo processors with 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 writ-
ing comments. (For some caveats regarding nesting of such commands, see Section 16.7
[Conditional Nesting], page 147.)
Chapter 2: Writing a Texinfo File 12
Header
The header tells TEX which definitions file to use, names the manual, and carries out other
such housekeeping tasks.
\input texinfo
@settitle Sample Manual 1.0
2
The longer extensions are preferred, since they describe more clearly to a human reader the nature of
the file. The shorter extensions are for operating systems that cannot handle long file names.
Chapter 2: Writing a Texinfo File 13
@menu
* First Chapter:: The first chapter is the
only chapter in this sample.
* Index:: Complete index.
@end menu
@enumerate
@item
This is the first item.
@item
This is the second item.
@end enumerate
@printindex cp
@bye
Some Results
Here is what the contents of the first chapter of the sample look like:
@copying
This manual is for program, version version.
@quotation
Permission is granted to ...
@end quotation
@end copying
@titlepage
@title name-of-manual-when-printed
@subtitle subtitle-if-any
@subtitle second-subtitle
@author author
Published by ...
@end titlepage
Chapter 3: Beginning and Ending a Texinfo File 16
@ifnottex
@node Top
@top title
@menu
* First Chapter:: Getting started ...
* Second Chapter:: ...
...
* Copying:: Your rights and freedoms.
@end menu
should have been installed on your system along with either the TEX or Texinfo software.
TEX uses the backslash, ‘\’, to mark the beginning of a command, exactly 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.
You may optionally follow this line with a comment to tell GNU Emacs to use Texinfo
mode when the file is edited:
\input texinfo @c -*-texinfo-*-
This may be useful when Emacs doesn’t detect the file type from the file extension auto-
matically.
@setfilename used to be required by the Texinfo processors, and some other programs
may still expect it to be present; for example, Automake (see Section “Texinfo” in GNU
Automake).
Although an explicit ‘.info’ extension is preferable, 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 21.1.5 [Tag and Split Files], page 201.) The subfile
name texinfo.info-10, for example, is too long for old systems with a 14-character limit
on filenames; so the Info file name for this document is texinfo rather than texinfo.info.
When makeinfo is running on operating systems such as MS-DOS which impose severe
limits on file names, it may remove some characters from the original file name to leave
enough space for the subfile suffix, thus producing files named texin-10, gcc.i12, etc.
See also the --output option in Section 20.2 [Invoking texi2any], page 175.
(@copying) to declare this text once, and another command (@insertcopying) to insert
the text at appropriate points.
This section is about the license of the Texinfo document. If the document is a software
manual, the software is typically under a different license—for GNU and many other free
software packages, software is usually released under the GNU GPL, and manuals are re-
leased under the GNU FDL. It is helpful to state the license of the software of the manual,
but giving the complete text of the software license is not necessarily required.
@quotation
Permission is granted to ...
@end quotation
@end copying
The @quotation has no legal significance; it’s there to improve readability in some
contexts.
The text of @copying is output as a comment at the beginning of Info, HTML, XML,
and Docbook output files. It is not output implicitly in plain text or TEX; it’s up to you to
use @insertcopying to emit the copying information. See the next section for details.
The @copyright{} command generates a ‘c’ inside a circle when the output format
supports this glyph (print and HTML always do, for instance). When the glyph is not
supported in the output, it generates the three-character sequence ‘(C)’.
The copyright notice itself has the following legally-prescribed form:
Copyright
c years copyright-owner.
The word ‘Copyright’ must always be written in English, even if the document is other-
wise written in another language. This is due to international law.
The list of years should include all years in which a version was completed (even if it was
released in a subsequent year). It is simplest for each year to be written out individually
and in full, separated by commas.
The copyright owner (or owners) is whoever holds legal copyright on the work. In the
case of works assigned to the FSF, the owner is ‘Free Software Foundation, Inc.’.
The copyright ‘line’ may actually be split across multiple lines, both in the source doc-
ument and in the output. This often happens for documents with a long history, having
many different years of publication. If you do use several lines, do not indent any of them
(or anything else in the @copying block) in the source file.
Chapter 3: Beginning and Ending a Texinfo File 20
See Section “Copyright Notices” in GNU Maintainer Information, for additional infor-
mation. See Section C.2 [GNU Sample Texts], page 251, for the full text to be used in GNU
manuals. See Appendix H [GNU Free Documentation License], page 287, for the license
itself under which GNU and other free manuals are distributed.
3.4.1 @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 3.4.5 [Heading Generation], page 24). All the material that you want to appear on
unnumbered pages should be put between the @titlepage and @end titlepage commands.
You can force the table of contents to appear there with the @setcontentsaftertitlepage
command (see Section 3.5 [Contents], page 24).
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!)
Chapter 3: Beginning and Ending a Texinfo File 21
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
number1 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 3.6 [The
Top Node], page 25.)
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, or you may combine them; see the examples in the sections
below.
For sufficiently simple documents, and for the bastard title page in traditional book
frontmatter, Texinfo also provides a command @shorttitlepage which takes the rest of
the line as the title. The argument is typeset on a page by itself and followed by a blank
page.
1
We have found that it is helpful to refer to versions of independent manuals as ‘editions’ and versions of
programs as ‘versions’; otherwise, we find we are liable to confuse each other in conversation by referring
to both the documentation and the software with the same words.
Chapter 3: Beginning and Ending a Texinfo File 22
Published by ...
@end ifplaintext
You could include other title-like information for the plain text output in the same place.
Both contents commands should be written on a line by themselves, and placed near the
beginning of the file, after the @end titlepage (see Section 3.4.1 [@titlepage], page 20),
before any sectioning command. The contents commands automatically generate a chapter-
like heading at the top of the first table of contents page, so don’t include any sectioning
command such as @unnumbered before them.
Since an Info file uses menus instead of tables of contents, the Info formatting com-
mands ignore the contents commands. But the contents are included in plain text output
(generated by makeinfo --plaintext) and in other output formats, such as HTML.
When makeinfo writes a short table of contents while producing HTML output, the links
in the short table of contents point to corresponding entries in the full table of contents
rather than the text of the document. The links in the full table of contents point to the
main text of the document.
@menu
* First Chapter::
* Second Chapter::
...
* Index::
@end menu
Chapter 3: Beginning and Ending a Texinfo File 26
Like any other menu, a master menu is enclosed in @menu and @end menu and does not
appear in the printed output.
• The first part contains the major nodes in the Texinfo file: the nodes for the chapters,
chapter-like sections, and the appendices.
• The second part contains nodes for the indices.
• The third and subsequent parts contain a listing of the other, lower-level nodes, often
ordered by chapter. This way, rather than go through an intermediary menu, an
inquirer can go directly to a particular node when searching for specific information.
These menu items are not required; add them if you think they are a convenience. If
you do use them, put @detailmenu before the first one, and @end detailmenu after
the last; otherwise, makeinfo will get confused.
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 4.9.1
[Writing a Menu], page 38, for more information.)
For example, the master menu for this manual looks like the following (but has many
more entries):
@menu
* Copying Conditions:: Your rights.
* Overview:: Texinfo in brief.
...
* Command and Variable Index::
* General Index::
@detailmenu
--- The Detailed Node Listing ---
Overview of Texinfo
Texinfo does not have a @setchapternewpage even command, because there is no print-
ing tradition of starting chapters or books on an even-numbered page.
If you don’t like the default headers that @setchapternewpage sets, you can explicit
control them with the @headings command. See Section 3.7.3 [@headings], page 28.
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 and
frontmatter pages are numbered with roman numerals and not in sequence with the rest of
the document.
The @setchapternewpage has no effect in output formats that do not have pages, such
as Info and HTML.
We recommend not including any @setchapternewpage command in your document
source at all, since such desired pagination is not intrinsic to the document. For a particular
hard copy run, if you don’t want the default output (no blank pages, same headers on all
pages) use the --texinfo option to texi2dvi to specify the output you want.
@headings off
The @headings off command overrides the @end titlepage command, which would oth-
erwise cause TEX to print page headings.
You can also specify your own style of page heading and footing. See Appendix E [Page
Headings], page 268, for more information.
none Prevents the first paragraph from being indented (default). This option is
ignored by makeinfo if @paragraphindent asis is in effect.
insert Include normal paragraph indentation. This respects the paragraph indentation
set by a @paragraphindent command (see Section 3.7.4 [@paragraphindent],
page 29).
@printindex cp
@bye
An @bye command terminates Texinfo processing. None of the formatters process any-
thing following @bye; any such text is completely ignored. The @bye command should be
on a line by itself.
Thus, if you wish, you may follow the @bye line with arbitrary notes. Also, you may
follow the @bye line with a local variables list for Emacs, most typically a ‘compile-command’
(see Section 19.7 [Using the Local Variables List], page 168).
31
4 Nodes
A node is a region of text that begins at a @node command, and continues until the next
@node command. To specify a node, write a @node command at the beginning of a line, and
follow it with the name of the node. Each node contains the discussion of one topic. Info
readers display one node at a time, and provide commands for the user to move to related
nodes. The HTML output can be similarly navigated.
Nodes are used as the targets of cross-references. Cross-references, such as the one at
the end of this sentence, are made with @xref and related commands; see Chapter 6 [Cross
References], page 49. Cross-references can be sprinkled throughout the text, and provide a
way to represent links that do not fit a hierarchical structure.
Normally, you put a node command immediately before each chapter structuring
command—for example, an @section or @subsection line. (See Chapter 5 [Chapter
Structuring], page 42.). You must do this even if you do not intend to format the file for
Info. This is because TEX uses both @node names and chapter-structuring names in the
output for cross-references. The only time you are likely to use the chapter structuring
commands without also using nodes is if you are writing a document that contains no cross
references and will only be printed, not transformed into Info, HTML, or other formats.
Although it is technically possible to create Texinfo documents with only one structure
or the other, or for the two structures not to be parallel, or for either the sectioning or node
structure to be abnormally formed, etc., this is not at all recommended. To the best of
our knowledge, all the Texinfo manuals currently in general use do follow the conventional
parallel structure.
After you have inserted an @node line, you should immediately write an @-command for
the chapter or section and insert its name. Next (and this is important!), put in several
index entries. Usually, you will find at least two and often as many as four or five ways of
referring to the node in the index. Use them all. This will make it much easier for people
to find the node.
If you wish, you can ignore @node lines altogether in your first draft and then use the
texinfo-insert-node-lines command to create @node lines for you. However, we do not
recommend this practice. It is better to name the node itself at the same time that you write
a segment so you can easily make cross-references. Useful cross-references are an especially
important feature of a good Texinfo manual.
Even when you explicitly specify all pointers, you cannot write the nodes in the Texinfo
source file in an arbitrary order! Because formatters must process the file sequentially,
irrespective of node pointers, you must write the nodes in the order you wish them to
appear in the output. For Info format one can imagine that the order may not matter, but
it matters for the other formats.
You may optionally follow the node name argument to @node with up to three optional
arguments on the rest of the same line, separating the arguments with commas. These
are the names of the ‘Next’, ‘Previous’, and ‘Up’ pointers, in that order. We recommend
omitting them if your Texinfo document is hierarchically organized, as virtually all are (see
Section 4.8 [makeinfo Pointer Creation], page 38).
Any spaces before or after each name on the @node line are ignored.
The template for a fully-written-out node line with ‘Next’, ‘Previous’, and ‘Up’ pointers
looks like this:
@node node-name, next, previous, up
The node-name argument must be present, but the others are optional. If you
wish to specify some but not others, just insert commas as needed, as in: ‘@node
mynode,,,uppernode’. However, we recommend leaving off all the pointers and letting
makeinfo determine them.
If you are using GNU Emacs, you can use the update node commands provided by
Texinfo mode to insert the names of the pointers; or (recommended), you can leave the
pointers out of the Texinfo file and let makeinfo insert node pointers into the Info file it
creates. (See Appendix D [Texinfo Mode], page 256, and Section 4.8 [makeinfo Pointer
Creation], page 38.)
Alternatively, you can insert the ‘Next’, ‘Previous’, and ‘Up’ pointers yourself. If you
do this, you may find it helpful to use the Texinfo mode keyboard command C-c C-c n.
This command inserts ‘@node’ and a comment line listing the names of the pointers in their
proper order. The comment line helps you keep track of which arguments are for which
pointers. This comment line is especially useful if you are not familiar with Texinfo.
may, however, duplicate the titles of chapters, sections, and the like. Thus you can end
each chapter with a section called “Summary”, so long as the node names for those
sections are all different.
• Node names can contain @-commands. The output is generally the natural result of
the command; for example, using @TeX{} in a node name results in the TEX logo being
output, as it would be in normal text. Cross-references should use @TeX{} just as the
node name does.
For Info and HTML output, especially, it is necessary to expand commands to some
sequence of plain characters; for instance, @TeX{} expands to the three letters ‘TeX’
in the Info node name. However, cross-references to the node should not take the
“shortcut” of using ‘TeX’; stick to the actual node name, commands and all.
Some commands do not make sense in node names; for instance, environments (e.g.,
@quotation), commands that read a whole line as their argument (e.g., @sp), and
plenty of others.
For the complete list of commands that are allowed, and their expansion for HTML
identifiers and file names, see Section 22.4.3 [HTML Xref Command Expansion],
page 214. The expansions for Info are generally given with main the description of
the command.
Prior to the Texinfo 5 release in 2013, this feature was supported in an ad hoc way (the
--commands-in-node-names option to makeinfo). Now it is part of the language.
• Unfortunately, you cannot reliably use periods, commas, or colons within a node name;
these can confuse the Info reader. Also, a node name may not start with a left paren-
thesis preceding a right parenthesis, as in (not)allowed, since this syntax is used to
specify an external manual. (Perhaps these limitations will be removed some day.)
makeinfo warns about such problematic usage in node names, menu items, and cross-
references. If you don’t want to see the warnings, you can set the customization variable
INFO_SPECIAL_CHARS_WARNING to ‘0’ (see Section 20.6.4 [Other Customization Vari-
ables], page 190).
Also, if you insist on using these characters in node names (accepting the resulting
substandard Info output), in order not to confuse the Texinfo processors you must still
escape those characters, by using either special insertions (see Section 12.1.3 [Inserting
a Comma], page 102) or @asis (see [@asis], page 84). For example:
@node foo@asis{::}bar
As an example of avoiding the special characters, the following is a section title in this
manual:
@section @code{@@unnumbered}, @code{@@appendix}: ...
But the corresponding node name lacks the commas and the subtitle:
@node @unnumbered @appendix
• Case is significant in node names.
• Spaces before and after names on the ‘@node’ line are ignored. Multiple whitespace
characters “inside” a name are collapsed to a single space. For example:
@node foo bar
@node foo bar,
@node foo bar ,
Chapter 4: Nodes 35
See Section 21.2 [Installing an Info File], page 202, for more information about installing
an Info file in the info directory.
It is usually best to leave the pointers off entirely and let the tools implicitly define them,
with this simple result:
@node Top
Chapter 4: Nodes 36
very-high-level-summary
@end ifnottex
@top is ignored when raising or lowering sections. That is, it is never lowered and nothing
can be raised to it (see Section 5.12 [Raise/lower sections], page 47).
Note: ‘Next’ and ‘Previous’ refer to nodes at the same hierarchical level in
the manual, not necessarily to the next node within the Texinfo file. In the
Texinfo file, the subsequent node may be at a lower level—a section-level node
most often follows a chapter-level node, for example. (The ‘Top’ node contains
the exception to this rule. Since the ‘Top’ node is the only node at that level,
‘Next’ refers to the first following node, which is almost always a chapter or
chapter-level node.)
To go to Sections 2.1 and 2.2 using Info, you need a menu inside Chapter 2. (See
Section 4.9 [Menus], page 38.) You would write the menu just before the beginning of
Section 2.1, like this:
@menu
* Sect. 2.1:: Description of this section.
* Sect. 2.2:: Description.
@end menu
Using explicit pointers, the node for Sect. 2.1 is written like this:
@node Sect. 2.1, Sect. 2.2, Chapter 2, Chapter 2
@comment node-name, next, previous, up
In Info format, the ‘Next’ and ‘Previous’ pointers of a node usually lead to other nodes
at the same level—from chapter to chapter or from section to section (sometimes, as shown,
the ‘Previous’ pointer points up); an ‘Up’ pointer usually leads to a node at the level above
(closer to the ‘Top’ node); and a ‘Menu’ leads to nodes at a level below (closer to ‘leaves’). (A
cross-reference can point to a node at any level; see Chapter 6 [Cross References], page 49.)
A @node command and a chapter structuring command are conventionally used together,
in that order, often followed by indexing commands. (As shown in the example above, you
may follow the @node line with a comment line, e.g., to show which pointer is which if
explicit pointers are used.) The Texinfo processors use this construct to determine the
relationships between nodes and sectioning commands.
Here is the beginning of the chapter in this manual called “Ending a Texinfo File”. This
shows an @node line followed by an @chapter line, and then by indexing lines.
@node Ending a File
@chapter Ending a Texinfo File
@cindex Ending a Texinfo file
@cindex Texinfo file ending
@cindex File ending
An earlier version of the manual used explicit node pointers. Here is the beginning of
the same chapter for that case. This shows an @node line followed by a comment line, a
@chapter line, and then by indexing lines.
@node Ending a File, Structuring, Beginning a File, Top
@comment node-name, next, previous, up
@chapter Ending a Texinfo File
@cindex Ending a Texinfo file
...
Chapter 4: Nodes 38
4.9 Menus
Menus contain pointers to subordinate nodes. In online output, you use menus to go to
such nodes. Menus have no effect in printed manuals and do not appear in them.
A line that does not start with an ‘* ’ may also appear in a menu. Such a line is not a
menu entry but rather a menu comment line that appears in the Info file. In the example
above, the line ‘Larger Units of Text’ is such a menu comment line; the two lines starting
with ‘* ’ are menu entries.
Technically, menus can carry you to any node, regardless of the structure of the docu-
ment; even to nodes in a different Info file. However, we do not recommend making use of
this, because it is hard for readers to follow. Also, the makeinfo implicit pointer creation
feature (see Section 4.8 [makeinfo Pointer Creation], page 38) and GNU Emacs Texinfo
mode updating commands work only to create menus of subordinate nodes in a hierarchi-
cally structured document. It is much better to use cross-references to refer to arbitrary
nodes.
makeinfo can automatically generate menus in nodes for Info and HTML output, based
on the chapter structure of the document. To specify that you want it to do this, place the
line ‘@validatemenus off’ near the beginning of the document.
In Info, a user selects a node with the m (Info-menu) command. The menu entry name
is what the user types after the m command. In the HTML output from makeinfo, the
accesskey attribute is used with the values ‘1’. . . ‘9’ for the first nine entries. This allows
people using web browsers to follow the first menu entries using (typically) M-digit, e.g.,
M-1 for the first entry.
@menu
* menu entry name: Node name. A short description.
* Node name:: This form is preferred.
@end menu
This produces:
* menu:
@menu
Larger Units of Text
This produces:
Chapter 4: Nodes 40
* menu:
Larger Units of Text
spaces or some versions of some Info readers will not find the node (see Section 4.4 [Node
Line Requirements], page 33).
makeinfo warns when the text of a menu item (and node names and cross-references)
contains a problematic construct that will interfere with its parsing in Info. If you don’t want
to see the warnings, you can set the customization variable INFO_SPECIAL_CHARS_WARNING
to ‘0’ (see Section 20.6.4 [Other Customization Variables], page 190).
5 Chapter Structuring
Texinfo’s chapter structuring commands divide a document into a hierarchy of chapters,
sections, subsections, and subsubsections. These commands generate large headings in the
text, like the one above. They also provide information for generating the table of contents
(see Section 3.5 [Generating a Table of Contents], page 24).
Normally you put a @node command immediately before each chapter structuring com-
mand. See Chapter 4 [Nodes], page 31.
In a Texinfo file that has this structure, the beginning of Chapter 2 would be written
like this:
@node Chapter 2
@chapter Chapter 2
For purposes of example, here is how it would be written with explicit node pointers:
@node Chapter 2, Chapter 3, Chapter 1, Top
@chapter Chapter 2
The chapter structuring commands are described in the sections that follow; the @node
command is described in the previous chapter (see Chapter 4 [Nodes], page 31).
appearance in the body of the document. Some of the commands list their titles in the
tables of contents, while others do not. Here are the details:
• The @chapter and @appendix series of commands produce numbered or lettered entries
both in the body of a document and in its table of contents.
• The @unnumbered series of commands produce unnumbered entries both in the body of
a document and in its table of contents. The @top command, which has a special use,
is a member of this series (see Section 4.6 [@top Command], page 36). An @unnumbered
section is a normal part of the document structure.
• The @heading series of commands produce simple unnumbered headings that do not
appear in a table of contents, are not associated with nodes, and cannot be cross-
referenced. These heading commands never start a new page.
When a @setchapternewpage command says to do so, the @chapter, @unnumbered, and
@appendix commands start new pages in the printed manual; the @heading commands do
not. See Section 3.7.2 [@setchapternewpage], page 27.
Here is a summary:
No new page
Numbered Unnumbered Lettered/numbered Unnumbered
In contents In contents In contents Not in contents
@top @majorheading
@chapter @unnumbered @appendix @chapheading
@section @unnumberedsec @appendixsec @heading
@subsection @unnumberedsubsec @appendixsubsec @subheading
@subsubsection @unnumberedsubsubsec @appendixsubsubsec @subsubheading
No @node command is associated with @part. Just write the command on a line by
itself, including the part title, at the place in the document you want to mark off as starting
that part. For example:
@part Part I:@* The beginning
As can be inferred from this example, no automatic numbering or labeling of the @part
text is done. The text is taken as-is.
Because parts are not associated with nodes, no general text can follow the @part line.
To produce the intended output, it must be followed by a chapter-level command (including
its node). Thus, to continue the example:
@part Part I:@* The beginning
@node Introduction
@chapter Introduction
...
In the TEX output, the @part text is included in both the normal and short tables of
contents (see Section 3.5 [Contents], page 24), without a page number (since that is the
normal convention). In addition, a “part page” is output in the body of the document, with
just the @part text. In the example above, the @* causes a line break on the part page
(but is replaced with a space in the tables of contents). This part page is always forced
to be on an odd (right-hand) page, regardless of the chapter pagination (see Section 3.7.2
[@setchapternewpage], page 27).
In the HTML output, the @part text is similarly included in the tables of contents, and a
heading is included in the main document text, as part of the following chapter or appendix
node.
In the XML and Docbook output, the <part> element includes all the following chapters,
up to the next <part>. A <part> containing chapters is also closed at an appendix.
In the Info and plain text output, @part has no effect.
@part is ignored when raising or lowering sections (see next section). That is, it is never
lowered and nothing can be raised to it.
@include somefile.texi
@raisesections
(Without the @raisesections, all the subsequent sections in the main file would also be
lowered.)
If the included file being lowered has a @top node, you’ll need to conditionalize its
inclusion with a flag (see Section 16.5.1 [@set @value], page 142).
As a practical matter, you generally only want to raise or lower large chunks, usually
in external files as shown above. The final result has to have menus that take the raising
and lowering into account, so you cannot just arbitrarily sprinkle @raisesections and
@lowersections commands throughout the document.
Repeated use of the commands continues to raise or lower the hierarchical level a step at
a time. An attempt to raise above ‘chapter’ reproduces chapter commands; an attempt to
lower below ‘subsubsection’ reproduces subsubsection commands. Also, lowered subsubsec-
tions and raised chapters will not work with makeinfo’s feature of implicitly determining
node pointers, since the menu structure cannot be represented correctly.
Write each @raisesections and @lowersections command on a line of its own.
49
6 Cross-references
Cross-references are used to refer the reader to other parts of the same or different Texinfo
files.
@xref Used to start a sentence in the printed manual and in HTML with ‘See . . . ’ or
an Info cross-reference saying ‘*Note name: node.’.
@ref Used within or, more often, at the end of a sentence; produces just the reference
in the printed manual and in HTML without the preceding ‘See’ (same as @xref
for Info).
@pxref Used within parentheses, at the end of a sentence, or otherwise before punctua-
tion, to make a reference. Its output starts with a lowercase ‘see’ in the printed
manual and in HTML, and a lowercase ‘*note’ in Info. (‘p’ is for ‘parenthesis’.)
Additionally, there are commands to produce references to documents outside the Texinfo
system. The @cite command is used to make references to books and manuals. @url
produces a URL, for example a reference to a page on the World Wide Web. @inforef is
used to make a reference to an Info file for which there is no printed manual.
Chapter 6: Cross-references 50
Whitespace before and after the commas separating these arguments is ignored. To
include a comma in one of the arguments, use @comma{} (see Section 12.1.3 [Inserting a
Comma], page 102).
When processing with TeX, a comma is automatically inserted after the page number
for cross-references to within the same manual, unless the closing brace of the argument
is followed by non-whitespace (such as a comma or period). This gives you the choice of
whether to have a comma there in Info or HTML output. For example,
@xref{Another Section} for more information
produces ‘See Another Section, page ppp, for more information’ in the printed output, and
‘*Note Another Section:: for more information’ in the Info output.
If an unwanted comma is added, follow the argument with a command such as ‘@:’. For
example, ‘@xref{Hurricanes}@: --- for the details’ produces
See Hurricanes, page ppp — for the details
instead of ‘See Hurricanes, page ppp, — for the details’.
Cross-references with one, two, three, four, and five arguments are described separately
following the description of @xref.
makeinfo warns when the text of a cross-reference (and node names and menu items)
contains a problematic construct that will interfere with its parsing in Info. If you don’t want
to see the warnings, you can set the customization variable INFO_SPECIAL_CHARS_WARNING
to ‘0’ (see Section 20.6.4 [Other Customization Variables], page 190).
6.4 @xref
The @xref command generates a cross-reference for the beginning of a sentence.
produces:
*Note Lightning: Electrical Effects.
in Info and
See Section 5.2 [Electrical Effects], page 57.
in a printed manual, where the node name is printed.
The second argument to cross-references must observe some of the restrictions for node
names (see Section 4.4 [Node Line Requirements], page 33). The most common issue is that
colons cannot be used, since that interferes with the parsing of the Info file.
Typically this line would be given near the beginning of the document and used for the
whole manual. But you can turn it off if you want (@xrefautomaticsectiontitle off),
for example, if you’re including some other sub-document that doesn’t have suitable section
names.
6.6 @ref
@ref is nearly the same as @xref except that it does not generate a ‘See’ in the printed
output, just the reference itself. This makes it useful as the last part of a sentence.
For example,
For more information, @pxref{This}, and @ref{That}.
produces in Info:
For more information, *note This::, and *note That::.
and in printed output:
For more information, see Section 1.1 [This], page 1, and Section 1.2 [That],
page 2.
The @ref command can tempt writers to express themselves in a manner that is suitable
for a printed manual but looks awkward in the Info format. Bear in mind that your audience
could be using both the printed and the Info format. For example:
Sea surges are described in @ref{Hurricanes}.
looks ok in the printed output:
Sea surges are described in Section 6.7 [Hurricanes], page 72.
but is awkward to read in Info, “note” being a verb:
Sea surges are described in *note Hurricanes::.
6.7 @pxref
The parenthetical reference command, @pxref, is nearly the same as @xref, but it is best
used within parentheses. The command differs from @xref in that TEX typesets the refer-
ence for the printed manual with a lowercase ‘see’ rather than an uppercase ‘See’.
With one argument, a parenthetical cross-reference looks like this:
... storms cause flooding (@pxref{Hurricanes}) ...
which produces
... storms cause flooding (*note Hurricanes::) ...
in Info and
. . . storms cause flooding (see Section 6.7 [Hurricanes], page 72) . . .
in a printed manual.
With two arguments, a parenthetical cross-reference has this template:
... (@pxref{node-name, cross-reference-name}) ...
which produces
... (*note cross-reference-name: node-name.) ...
in Info and
. . . (see Section nnn [node-name], page ppp) . . .
in a printed manual.
@pxref can be used with up to five arguments, just like @xref (see Section 6.4 [@xref],
page 51).
Chapter 6: Cross-references 56
In past versions of Texinfo, it was not allowed to write punctuation after a @pxref, so
it could be used only before a right parenthesis. This is no longer the case. The effect
of ‘@pxref{node-name}’ is similar to that of ‘see @ref{node-name}’. However, in many
circumstance the latter is preferrable, as this makes it clear in the Info output that the word
“see” should be present.
which produces:
The official GNU ftp site (http://ftp.gnu.org/gnu)
holds programs and texts.
that is, the Info (and TEX, etc.) output is this:
The official GNU ftp site (http://ftp.gnu.org/gnu)
holds programs and texts.
while the HTML output is this:
The official <a href="http://ftp.gnu.org/gnu">GNU ftp site</a>
holds programs and texts.
6.11 @cite{reference}
Use the @cite command for the name of a book that lacks a companion Info file. The
command produces italics in the printed manual, and quotation marks in the Info file.
If a book is written in Texinfo, it is better to use a cross-reference command since a
reader can easily follow such a reference in Info. See Section 6.4 [@xref], page 51.
60
@cite{reference}
Indicate the name of a book. See Section 6.11 [@cite], page 59.
@abbr{abbreviation}
Indicate an abbreviation, such as ‘Comput.’.
@acronym{acronym}
Indicate an acronym. See Section 7.1.14 [@acronym], page 67.
@indicateurl{uniform-resource-locator}
Indicate an example (that is, nonfunctional) uniform resource locator. See
Section 7.1.15 [@indicateurl], page 68. (Use @url (see Section 6.10 [@url],
page 57) for live urls.)
@email{email-address[, displayed-text]}
Indicate an electronic mail address. See Section 7.1.16 [@email], page 68.
7.1.2 @code{sample-code}
Use the @code command to indicate text that is a piece of a program and which consists of
entire syntactic tokens. Enclose the text in braces.
Thus, you should use @code for an expression in a program, for the name of a variable
or function used in a program, or for a keyword in a programming language.
Use @code for command names in languages that resemble programming languages, such
as Texinfo. For example, @code and @samp are produced by writing ‘@code{@@code}’ and
‘@code{@@samp}’ in the Texinfo source, respectively.
It is incorrect to alter the case of a word inside a @code command when it appears at the
beginning of a sentence. Most computer languages are case sensitive. In C, for example,
Printf is different from the identifier printf, and most likely is a misspelling of it. Even
in languages which are not case sensitive, it is confusing to a human reader to see identifiers
spelled in different ways. Pick one spelling and always use that. If you do not want to
start a sentence with a command name written all in lowercase, you should rearrange the
sentence.
In the Info output, @code results in single quotation marks around the text. In other
formats, @code argument is typeset in a typewriter (monospace) font. For example,
The function returns @code{nil}.
produces this:
The function returns nil.
Here are some cases for which it is preferable not to use @code:
• For shell command names, such as ls (use @command).
• For environment variables, such as TEXINPUTS (use @env).
• For shell options, such as ‘-c’, when such options stand alone (use @option).
• An entire shell command often looks better if written using @samp rather than @code.
In this case, the rule is to choose the more pleasing format.
• For a string of characters shorter than a syntactic token. For example, if you are
writing about ‘goto-ch’, which is just a part of the name for the goto-char Emacs
Lisp function, you should use @samp.
Chapter 7: Marking Text, Words and Phrases 62
• In general, when writing about the characters used in a token; for example, do not use
@code when you are explaining what letters or printable symbols can be used in the
names of functions. (Use @samp.) Also, you should not use @code to mark text that
is considered input to programs unless the input is written in a language that is like
a programming language. For example, you should not use @code for the keystroke
commands of GNU Emacs (use @kbd instead) although you may use @code for the
names of the Emacs Lisp functions that the keystroke commands invoke.
By default, TEX will consider breaking lines at ‘-’ and ‘_’ characters within @code
and related commands. This can be controlled with @allowcodebreaks (see Section 13.4
[@allowcodebreaks], page 119). The HTML output attempts to respect this for ‘-’, but
ultimately it is up to the browser’s behavior. For Info, it seems better never to make such
breaks.
For Info, the quotes are omitted in the output of the @code command and related com-
mands (e.g., @kbd, @command), in typewriter-like contexts such as the @example environment
(see Section 8.4 [@example], page 73) and @code itself, etc.
To control which quoting characters are implicitly inserted by Texinfo processors in
the output of ‘@code’, etc., see the OPEN_QUOTE_SYMBOL and CLOSE_QUOTE_SYMBOL cus-
tomization variables (see Section 20.6.4 [Other Customization Variables], page 190). This
is separate from how actual quotation characters in the input document are handled (see
Section 12.2 [Inserting Quote Characters], page 103).
7.1.3 @kbd{keyboard-characters}
Use the @kbd command for characters of input to be typed by users. For example, to refer
to the characters M-a, write:
@kbd{M-a}
and to refer to the characters M-x shell, write:
@kbd{M-x shell}
By default, the @kbd command produces a different font (slanted typewriter instead of
normal typewriter), so users can distinguish the characters that they are supposed to type
from those that the computer outputs.
Since the usage of @kbd varies from manual to manual, you can control the font switching
with the @kbdinputstyle command. This command has no effect on Info output. Write
this command at the beginning of a line with a single word as an argument, one of the
following:
‘code’ Always use the same font for @kbd as @code.
‘example’ Use the distinguishing font for @kbd only in @example and similar environments.
‘distinct’
(the default) Always use the distinguishing font for @kbd.
You can embed another @-command inside the braces of a @kbd command. Here, for
example, is the way to describe a command that would be described more verbosely as
“press the ‘r’ key and then press the RETURN key”:
@kbd{r @key{RET}}
This produces: r RET. (The present manual uses the default for @kbdinputstyle.)
Chapter 7: Marking Text, Words and Phrases 63
You also use the @kbd command if you are spelling out the letters you type; for example:
To give the @code{logout} command,
type the characters @kbd{l o g o u t @key{RET}}.
This produces:
To give the logout command, type the characters l o g o u t RET.
(Also, this example shows that you can add spaces for clarity. If you explicitly want to
mention a space character as one of the characters of input, write @key{SPC} for it.)
7.1.4 @key{key-name}
Use the @key command for the conventional name for a key on a keyboard, as in:
@key{RET}
You can use the @key command within the argument of an @kbd command when the
sequence of characters to be typed includes one or more keys that are described by name.
For example, to produce C-x ESC and M-TAB you would type:
@kbd{C-x @key{ESC}}
@kbd{M-@key{TAB}}
Here is a list of the recommended names for keys:
SPC Space
RET Return
TAB Tab
BS Backspace
ESC Escape
DELETE Delete
SHIFT Shift
CTRL Control
META Meta
There are subtleties to handling words like ‘meta’ or ‘ctrl’ that are names of modifier
keys. When mentioning a character in which the modifier key is used, such as Meta-a, use
the @kbd command alone; do not use the @key command; but when you are referring to the
modifier key in isolation, use the @key command. For example, write ‘@kbd{Meta-a}’ to
produce Meta-a and ‘@key{META}’ to produce META.
As a convention in GNU manuals, @key should not be used in index entries.
Chapter 7: Marking Text, Words and Phrases 64
7.1.5 @samp{text}
Use the @samp command to indicate text that is a literal example or ‘sample’ of a sequence
of characters in a file, string, pattern, etc. Enclose the text in braces. The argument appears
within single quotation marks in both the Info file and the printed manual; in addition, it
is printed in a fixed-width font.
To match @samp{foo} at the end of the line,
use the regexp @samp{foo$}.
produces
To match ‘foo’ at the end of the line, use the regexp ‘foo$’.
Any time you are referring to single characters, you should use @samp unless @kbd or
@key is more appropriate. Also, you may use @samp for entire statements in C and for entire
shell commands—in this case, @samp often looks better than @code. Basically, @samp is a
catchall for whatever is not covered by @code, @kbd, @key, @command, etc.
Only include punctuation marks within braces if they are part of the string you are
specifying. Write punctuation marks outside the braces if those punctuation marks are
part of the English text that surrounds the string. In the following sentence, for example,
the commas and period are outside of the braces:
In English, the vowels are @samp{a}, @samp{e},
@samp{i}, @samp{o}, @samp{u}, and sometimes
@samp{y}.
This produces:
In English, the vowels are ‘a’, ‘e’, ‘i’, ‘o’, ‘u’, and sometimes ‘y’.
7.1.6 @verb{chartextchar}
Use the @verb command to print a verbatim sequence of characters.
Like LATEX’s \verb command, the verbatim text can be quoted using any unique de-
limiter character. Enclose the verbatim text, including the delimiters, in braces. Text is
printed in a fixed-width font:
How many @verb{|@|}-escapes does one need to print this
@verb{.@a @b.@c.} string or @verb{+@’e?‘{}!‘\+} this?
produces
How many @-escapes does one need to print this
@a @b.@c string or @’e?‘{}!‘\ this?
This is in contrast to @samp (see the previous section), @code, and similar commands;
in those cases, the argument is normal Texinfo text, where the three characters @{} are
special, as usual. With @verb, nothing is special except the delimiter character you choose.
The delimiter character itself may appear inside the verbatim text, as shown above. As
another example, ‘@verb{...}’ prints a single (fixed-width) period.
It is not reliable to use @verb inside other Texinfo constructs. In particular, it does not
work to use @verb in anything related to cross-referencing, such as section titles or figure
captions.
Chapter 7: Marking Text, Words and Phrases 65
7.1.7 @var{metasyntactic-variable}
Use the @var command to indicate metasyntactic variables. A metasyntactic variable is
something that stands for another piece of text. For example, you should use a metasyntactic
variable in the documentation of a function to describe the arguments that are passed to
that function.
Do not use @var for the names of normal variables in computer programs. These are
specific names, so @code is correct for them (@code). For example, the Emacs Lisp variable
texinfo-tex-command is not a metasyntactic variable; it is properly formatted using @code.
Do not use @var for environment variables either; @env is correct for them (see the next
section).
The effect of @var in the Info file is to change the case of the argument to all uppercase.
In the printed manual and HTML output, the argument is output in slanted type.
For example,
To delete file @var{filename},
type @samp{rm @var{filename}}.
produces
To delete file filename, type ‘rm filename’.
(Note that @var may appear inside @code, @samp, @file, etc.)
Write a metasyntactic variable all in lowercase without spaces, and use hyphens to make
it more readable. Thus, the Texinfo source for the illustration of how to begin a Texinfo
manual looks like this:
\input texinfo
@@settitle @var{name-of-manual}
This produces:
\input texinfo
@settitle name-of-manual
In some documentation styles, metasyntactic variables are shown with angle brackets,
for example:
..., type rm <filename>
However, that is not the style that Texinfo uses.
7.1.8 @env{environment-variable}
Use the @env command to indicate environment variables, as used by many operating
systems, including GNU. Do not use it for metasyntactic variables; use @var for those (see
the previous section).
@env is equivalent to @code in its effects. For example:
The @env{PATH} environment variable ...
produces
The PATH environment variable . . .
Chapter 7: Marking Text, Words and Phrases 66
7.1.9 @file{file-name}
Use the @file command to indicate text that is the name of a file, buffer, or directory, or
is the name of a node in Info. You can also use the command for file name suffixes. Do not
use @file for symbols in a programming language; use @code.
@file is equivalent to code in its effects. For example,
The @file{.el} files are in
the @file{/usr/local/emacs/lisp} directory.
produces
The .el files are in the /usr/local/emacs/lisp directory.
7.1.10 @command{command-name}
Use the @command command to indicate command names, such as ls or cc.
@command is equivalent to @code in its effects. For example:
The command @command{ls} lists directory contents.
produces
The command ls lists directory contents.
You should write the name of a program in the ordinary text font, rather than using
@command, if you regard it as a new English word, such as ‘Emacs’ or ‘Bison’.
When writing an entire shell command invocation, as in ‘ls -l’, you should use either
@samp or @code at your discretion.
7.1.11 @option{option-name}
Use the @option command to indicate a command-line option; for example, -l or --version
or --output=filename.
@option is equivalent to @code in its effects. For example:
The option @option{-l} produces a long listing.
produces
The option -l produces a long listing.
7.1.12 @dfn{term}
Use the @dfn command to identify the introductory or defining use of a technical term. Use
the command only in passages whose purpose is to introduce a term which will be used
again or which the reader ought to know. Mere passing mention of a term for the first time
does not deserve @dfn. The command generates italics in the printed manual, and double
quotation marks in the Info file. For example:
Getting rid of a file is called @dfn{deleting} it.
produces
Getting rid of a file is called deleting it.
As a general rule, a sentence containing the defining occurrence of a term should be a
definition of the term. The sentence does not need to say explicitly that it is a definition,
but it should contain the information of a definition—it should make the meaning clear.
Chapter 7: Marking Text, Words and Phrases 67
− In common English usage, acronyms are a subset of abbreviations: they include pro-
nounceable words like ‘NATO’, ‘radar’, and ‘snafu’; some sources also include syllable
acronyms like ‘Usenet’, hybrids like ‘SIGGRAPH’, and unpronounceable initialisms like
‘FBI’.
− In Texinfo, an acronym (but not an abbreviation) should consist only of capital letters
and periods, no lowercase.
− In TEX, an acronym (but not an abbreviation) is printed in a slightly smaller font.
− Some browsers place a dotted bottom border under abbreviations but not acronyms.
− It usually turns out to be quite difficult and/or time-consuming to consistently use
@acronym for all sequences of uppercase letters. Furthermore, it looks strange for some
acronyms to be in the normal font size and others to be smaller. Thus, a simpler
approach you may wish to consider is to avoid @acronym and just typeset everything
as normal text in all capitals: ‘GNU’, producing the output ‘GNU’.
− In general, it’s not essential to use either of these commands for all abbreviations; use
your judgment. Text is perfectly readable without them.
7.1.15 @indicateurl{uniform-resource-locator}
Use the @indicateurl command to indicate a uniform resource locator on the World Wide
Web. This is purely for markup purposes and does not produce a link you can follow (use
the @url or @uref command for that, see Section 6.10 [@url], page 57). @indicateurl is
useful for urls which do not actually exist. For example:
For example, the url might be @indicateurl{http://example.org/path}.
which produces:
For example, the url might be ‘http://example.org/path’.
The output from @indicateurl is more or less like that of @samp (see Section 7.1.5
[@samp], page 64).
mark words. However, sometimes you will want to emphasize text without indicating a
category. Texinfo has two commands to do this. Also, Texinfo has several commands that
specify the font in which text will be output. These commands have no effect in Info and
only one of them, the @r command, has any regular use.
used in conjunction with @smallbook (see Section 19.11 [@smallbook], page 171) or similar,
since 10 pt fonts on standard paper (8.5x11 or A4) are too small. One reason to use this
command is to save pages, and hence printing cost, for physical books.
Texinfo does not at present have commands to switch the font family to use, or more
general size-changing commands.
Texinfo also provides a number of font commands that specify font changes in the printed
manual and (where possible) in the HTML output. They have no effect in Info. All the
commands apply to a following argument surrounded by braces.
@b selects bold face;
@i selects an italic font;
@r selects a roman font, which is the usual font in which text is printed. It may or
may not be seriffed.
@sansserif
selects a sans serif font;
@slanted selects a slanted font;
@t selects the fixed-width, typewriter-style font used by @code;
(The commands with longer names were invented much later than the others, at which
time it did not seem desirable to use very short names for such infrequently needed features.)
The @r command can be useful in example-like environments, to write comments in the
standard roman font instead of the fixed-width font. This looks better in printed output,
and produces a <lineannotation> tag in Docbook output.
For example,
@lisp
(+ 2 2) ; @r{Add two plus two.}
@end lisp
produces
(+ 2 2) ; Add two plus two.
The @t command can occasionally be useful to produce output in a typewriter font where
that is supported (e.g., HTML and PDF), but no distinction is needed in Info or plain text:
@t{foo} produces foo, cf. @code{foo} producing foo.
In general, the other font commands are unlikely to be useful; they exist primarily to
make it possible to document the functionality of specific font effects, such as in TEX and
related packages.
71
@flushleft
@flushright
Text is not filled, but is set flush with the left or right margin, respectively.
@raggedright
Text is filled, but only justified on the left, leaving the right margin ragged.
@cartouche
Highlight text, often an example or quotation, by drawing a box with rounded
corners around it.
The @exdent command is used within the above constructs to undo the indentation of
a line.
The @noindent command may be used after one of the above constructs (or at the
beginning of any paragraph) to prevent the following text from being indented as a new
paragraph.
If the author of the quotation is specified in the @quotation block with the @author
command, a line with the author name is displayed after the quotation:
@quotation
People sometimes ask me if it is a sin in the Church of Emacs to use
vi. Using a free version of vi is not a sin; it is a penance. So happy
hacking.
• Texinfo commands are expanded; if you want the output to be the input verbatim, use
the @verbatim environment instead (see Section 8.5 [@verbatim], page 74).
For example,
@example
cp foo @var{dest1}; \
cp foo @var{dest2}
@end example
produces
cp foo dest1; \
cp foo dest2
The lines containing @example and @end example will disappear from the output. To
make the output look good, you should put a blank line before the @example and another
blank line after the @end example. Blank lines inside the beginning @example and the
ending @end example, on the other hand, do appear in the output.
Caution: Do not use tabs in the lines of an example! (Or anywhere else in
Texinfo, except in verbatim environments.) TEX treats tabs as single spaces,
and that is not what they look like. In Emacs, you can use M-x untabify to
convert tabs in a region to multiple spaces.
Examples are often, logically speaking, “in the middle” of a paragraph, and the text
that continues afterwards should not be indented, as in the example above. The @noindent
command prevents a piece of text from being indented as if it were a new paragraph (see
Section 8.12 [@noindent], page 77).
If you want to embed code fragments within sentences, instead of displaying them, use
the @code command or its relatives (see Section 7.1.2 [@code], page 61).
If you wish to write a “comment” on a line of an example in the normal roman font, you
can use the @r command (see Section 7.2.3 [Fonts], page 69).
expandTABme
}
@end verbatim
This produces:
{
@command with strange characters: @’e
expand me
}
Since the lines containing @verbatim and @end verbatim produce no output, typically
you should put a blank line before the @verbatim and another blank line after the @end
verbatim. Blank lines between the beginning @verbatim and the ending @end verbatim
will appear in the output.
You can get a “small” verbatim by enclosing the @verbatim in an @smallformat envi-
ronment, as shown here:
@smallformat
@verbatim
... still verbatim, but in a smaller font ...
@end verbatim
@end smallformat
Finally, a word of warning: it is not reliable to use @verbatim inside other Texinfo
constructs.
See also Section 18.5 [@verbatiminclude], page 160.
written flushleft.
@flushright produces the type of indentation often used in the return address of letters.
For example,
@flushright
Here is an example of text written
flushright. The @code{@flushright} command
right justifies every line but leaves the
left end ragged.
@end flushright
produces
Here is an example of text written
flushright. The @flushright command
right justifies every line but leaves the
left end ragged.
@example
This is an example
@end example
@noindent
This line is not indented. As you can see, the
beginning of the line is fully flush left with the
line that follows after it.
produces:
This is an example
You can use this command to further highlight an example or quotation. For instance,
you could write a manual in which one type of example is surrounded by a cartouche for
emphasis.
For example,
@cartouche
@example
% pwd
/usr/local/share/emacs
@end example
@end cartouche
surrounds the two-line example with a box with rounded corners, in the printed manual.
The output from the example looks like this (if you’re reading this in Info, you’ll see the
@cartouche had no effect):
% pwd
/usr/local/share/emacs
@cartouche also implies @group (see Section 13.9 [@group], page 120).
Texinfo has several ways of making lists and tables. Lists can be bulleted or numbered;
two-column tables can highlight the items in the first column; multi-column tables are also
supported.
And here is a two-column table with the same items and their @-commands:
@enumerate
Enumerated lists, using numbers or letters.
@table
@ftable
@vtable Two-column tables, optionally with indexing.
Chapter 9: Lists and Tables 81
Begin an itemized list by writing @itemize at the beginning of a line. Follow the
command, on the same line, with a character or a Texinfo command that generates a mark.
Usually, you will use @bullet after @itemize, but you can use @minus, or any command
or character that results in a single character in the Info file. (When you write the mark
command such as @bullet after an @itemize command, you may omit the ‘{}’.) If you
don’t specify a mark command, the default is @bullet. If you don’t want any mark at all,
but still want logical items, use @w{} (in this case the braces are required).
After the @itemize, write your items, each starting with @item. Text can follow on the
same line as the @item. The text of an item can continue for more than one paragraph.
There should be at least one @item inside the @itemize environment. If none are
present, makeinfo gives a warning. If you just want indented text and not a list of items,
use @indentedblock; see Section 8.3 [@indentedblock], page 73.
Index entries and comments that are given before an @item including the first, are auto-
matically moved (internally) to after the @item, so the output is as expected. Historically
this has been a common practice.
Usually, you should put a blank line between items. This puts a blank line in the Info
file. (TEX inserts the proper vertical space in any case.) Except when the entries are very
brief, these blank lines make the list look better.
Here is an example of the use of @itemize, followed by the output it produces. @bullet
produces an ‘*’ in Info and a round dot in other output formats.
@itemize @bullet
@item
Some text for foo.
@item
Some text
for bar.
@end itemize
This produces:
Itemized lists may be embedded within other itemized lists. Here is a list marked with
dashes embedded in a list marked with bullets:
Chapter 9: Lists and Tables 82
@itemize @bullet
@item
First item.
@itemize @minus
@item
Inner item.
@item
Second inner item.
@end itemize
@item
Second outer item.
@end itemize
This produces:
• First item.
− Inner item.
− Second inner item.
• Second outer item.
@item
Proximate causes.
@end enumerate
This produces:
1. Underlying causes.
Chapter 9: Lists and Tables 83
2. Proximate causes.
@enumerate 3
@item
Predisposing causes.
@item
Precipitating causes.
@item
Perpetuating causes.
@end enumerate
This produces:
3. Predisposing causes.
4. Precipitating causes.
5. Perpetuating causes.
a. @enumerate
Without an argument, produce a numbered list, with the first item numbered 1.
b. @enumerate unsigned-integer
With an (unsigned) numeric argument, start a numbered list with that number. You
can use this to continue a list that you interrupted with other text.
c. @enumerate upper-case-letter
With an uppercase letter as argument, start a list in which each item is marked by a
letter, beginning with that uppercase letter.
d. @enumerate lower-case-letter
With a lowercase letter as argument, start a list in which each item is marked by a
letter, beginning with that lowercase letter.
@item bar
Text for @samp{bar}.
@end table
This produces:
‘foo’ This is the text for ‘foo’.
‘bar’ Text for ‘bar’.
If you want to list two or more named items with a single block of text, use the @itemx
command. (See Section 9.4.3 [@itemx], page 85.)
The @table command (see Section 9.4.1 [@table], page 84) is not supported inside
@display. Since @display is line-oriented, it doesn’t make sense to use them together.
Chapter 9: Lists and Tables 85
If you want to indent a table, try @quotation (see Section 8.2 [@quotation], page 72) or
@indentedblock (see Section 8.3 [@indentedblock], page 73).
You define the column widths on the @multitable line itself, and write each row of the
actual table following an @item command, with columns separated by a @tab command.
Finally, @end multitable completes the table. Details in the sections below.
@tab @code{split-window-horizontally}
@tab Split the selected window into two windows
positioned side by side.
@item C-Mouse-2
@tab
@tab In the mode line or scroll bar of a window,
split that window.
@end multitable
produces:
10 Special Displays
The commands in this chapter allow you to write text that is specially displayed (output
format permitting), outside of the normal document flow.
One set of such commands is for creating “floats”, that is, figures, tables, and the like,
set off from the main text, possibly numbered, captioned, and/or referred to from elsewhere
in the document. Images are often included in these displays.
Another group of commands is for creating footnotes in Texinfo.
10.1 Floats
A float is a display which is set off from the main text. It is typically labeled as being a
“Figure”, “Table”, “Example”, or some similar type.
A float is so-named because, in principle, it can be moved to the bottom or top of
the current page, or to a following page, in the printed output. (Floating does not make
sense in other output formats.) In the present version of Texinfo, however, this floating is
unfortunately not yet implemented. Instead, the floating material is simply output at the
current location, more or less as if it were an @group (see Section 13.9 [@group], page 120).
Ordinarily, you specify both type and label, to get a labeled and numbered float.
In Texinfo, all floats are numbered in the same way: with the chapter number (or
appendix letter), a period, and the float number, which simply counts 1, 2, 3, . . . , and is
reset at each chapter. Each float type is counted independently.
Floats within an @unnumbered, or outside of any chapter, are simply numbered consec-
utively from 1.
These numbering conventions are not, at present, changeable.
@listoffloats takes one optional argument, the float type. Here’s an example:
@node List of Figures
@unnumbered List of Figures
@listoffloats Figure
And here’s what the output from @listoffloats looks like, given the example figure earlier
in this chapter (the Info output is formatted as a menu):
Figure 10.1: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Without any argument, @listoffloats generates a list of floats for which no float type
was specified, i.e., no first argument to the @float command (see Section 10.1.1 [@float],
page 88).
Each line in the list of floats contains the float type (if any), the float number, and
the caption, if any—the @shortcaption argument, if it was specified, else the @caption
argument. In Info, the result is a menu where each float can be selected. In HTML, each
line is a link to the float. In printed output, the page number is included.
Unnumbered floats (those without cross-reference labels) are omitted from the list of
floats.
• For Info and HTML output, makeinfo uses the optional fifth argument extension to
@image for the filename extension, if it is specified and the file is found. Any leading
period should be included in extension. For example:
@image{foo,,,,.xpm}
If you want to install image files for use by Info readers too, we recommend putting
them in a subdirectory like ‘foo-figures’ for a package foo. Copying the files into
$(infodir)/foo-figures/ should be done in your Makefile.
The width and height arguments are described in the next section.
For TEX output, if an image is the only thing in a paragraph it will ordinarily be displayed
on a line by itself, respecting the current environment indentation, but without the normal
paragraph indentation. If you want it centered, use @center (see Section 3.4.2 [@titlefont
@center @sp], page 21).
For HTML output, makeinfo sets the alt attribute for inline images to the optional
alttext (fourth) argument to @image, if supplied. If not supplied, makeinfo uses the full
file name of the image being displayed. The alttext is processed as Texinfo text, so special
characters such as ‘"’ and ‘<’ and ‘&’ are escaped in the HTML output; also, you can get
an empty alt string with @- (a command that produces no output; see Section 13.3 [@-
@hyphenation], page 119).
For Info output, the alt string is also processed as Texinfo text and output. In this
case, ‘\’ is escaped as ‘\\’ and ‘"’ as ‘\"’; no other escapes are done.
In Info output, makeinfo writes a reference to the binary image file (trying filename
suffixed with extension, .extension, .png, or .jpg, in that order) if one exists. It also
literally includes the .txt file if one exists. This way, Info readers which can display images
(such as the Emacs Info browser, running under X) can do so, whereas Info readers which
can only use text (such as the standalone Info reader) can display the textual version.
The implementation of this is to put the following construct into the Info output:
^@^H[image src="binaryfile" text="txtfile"
alt="alttext ... ^@^H]
where ‘^@’ and ‘^H’ stand for the actual null and backspace control characters. If one of the
files is not present, the corresponding argument is omitted.
The reason for mentioning this here is that older Info browsers (this feature was intro-
duced in Texinfo version 4.6) will display the above literally, which, although not pretty,
should not be harmful.
10.3 Footnotes
A footnote is for a reference that documents or elucidates the primary text.1
Footnotes are distracting; use them sparingly at most, and it is best to avoid them
completely. Standard bibliographical references are usually better placed in a bibliography
at the end of a document instead of in footnotes throughout.
Unless your document has long and important footnotes (as in, say, Gibbon’s Decline
and Fall . . . ), we recommend the ‘end’ style, as it is simpler for readers to follow.
94
Use the @footnotestyle command to specify an Info file’s footnote style. Write this
command at the beginning of a line followed by an argument, either ‘end’ for the end node
style or ‘separate’ for the separate node style.
For example,
@footnotestyle end
or
@footnotestyle separate
Write a @footnotestyle command before or shortly after the end-of-header line at the
beginning of a Texinfo file. (You should include any @footnotestyle command between
the start-of-header and end-of-header lines, so the region formatting commands will format
footnotes as specified.)
In HTML, when the footnote style is ‘end’, or if the output is not split, footnotes are
put at the end of the output. If set to ‘separate’, and the output is split, they are placed
in a separate file.
95
11 Indices
Using Texinfo, you can generate indices without having to sort and collate entries manually.
In an index, the entries are listed in alphabetical order, together with information on how
to find the discussion of each entry. In a printed manual, this information consists of page
numbers. In an Info file, this information is a menu entry leading to the first node referenced.
Texinfo provides several predefined kinds of index: an index for functions, an index for
variables, an index for concepts, and so on. You can combine indices or use them for other
than their canonical purpose. Lastly, you can define your own new indices.
‘fn’ (@findex) function index, for function and function-like names (such as entry
points of libraries).
‘tp’ (@tindex) data type index, for type names (such as structures defined in header
files).
‘vr’ (@vindex) variable index, for variable names (such as global variables of li-
braries).
Not every manual needs all of these, and most manuals use only two or three at most. The
present manual, for example, has two indices: a concept index and an @-command index
(that is actually the function index but is called a command index in the chapter heading).
You are not required to use the predefined indices strictly for their canonical purposes.
For example, suppose you wish to index some C preprocessor macros. You could put them
in the function index along with actual functions, just by writing @findex commands for
them; then, when you print the “Function Index” as an unnumbered chapter, you could
give it the title ‘Function and Macro Index’ and all will be consistent for the reader.
On the other hand, it is best not to stray too far from the meaning of the predefined
indices. Otherwise, in the event that your text is combined with other text from other
manuals, the index entries will not match up. Instead, define your own new index (see
Section 11.6 [New Indices], page 99).
We recommend having a single index in the final document whenever possible, how-
ever many source indices you use, since then readers have only one place to look. Two
or more source indices can be combined into one output index using the @synindex or
@syncodeindex commands (see Section 11.5 [Combining Indices], page 98).
Chapter 11: Indices 96
are written just as they would appear in the middle of a sentence, that is, capitalizing
only proper names and acronyms that always call for uppercase letters. This is the case
convention we use in most GNU manuals’ indices.
If you don’t see how to make an entry terse yet clear, make it longer and clear—not terse
and confusing. If many of the entries are several words long, the index may look better if
you use a different convention: to capitalize the first word of each entry. Whichever case
convention you use, use it consistently.
In any event, do not ever capitalize a case-sensitive name such as a C or Lisp function
name or a shell command; that would be a spelling error. Entries in indices other than
the concept index are symbol names in programming languages, or program names; these
names are usually case-sensitive, so likewise use upper- and lowercase as required.
It is a good idea to make index entries unique wherever feasible. That way, people using
the printed output or online completion of index entries don’t see undifferentiated lists.
Consider this an opportunity to make otherwise-identical index entries be more specific, so
readers can more easily find the exact place they are looking for.
When you are making index entries, it is good practice to think of the different ways
people may look for something. Different people do not think of the same words when they
look something up. A helpful index will have items indexed under all the different words
that people may use. For example, one reader may think it obvious that the two-letter
names for indices should be listed under “Indices, two-letter names, since “Indices” are the
general concept. But another reader may remember the specific concept of two-letter names
and search for the entry listed as “Two letter names for indices”. A good index will have
both entries and will help both readers.
Like typesetting, the construction of an index is a skilled art, the subtleties of which
may not be appreciated until you need to do it yourself.
to supply the chapter heading and put the index into the table of contents. Precede the
chapter heading with an @node line as usual.
For example:
@node Variable Index
@unnumbered Variable Index
@printindex vr
@printindex cp
If you have more than one index, we recommend placing the concept index last.
• In printed output, @printindex produces a traditional two-column index, with dot
leaders between the index terms and page numbers.
• In Info output, @printindex produces a special menu containing the line number of
the entry, relative to the start of the node. Info readers can use this to go to the exact
line of an entry, not just the containing node. (Older Info readers will just go to the
node.) Here’s an example:
* First index entry: Top. (line 7)
The actual number of spaces is variable, to right-justify the line number; it’s been
reduced here to make the line fit in the printed manual.
• In plain text output, @printindex produces the same menu, but the line numbers are
relative to the start of the file, since that’s more convenient for that format.
• In HTML output, @printindex produces links to the index entries.
• In XML and Docbook output, it simply records the index to be printed.
@syncodeindex from to
For this purpose, the indices are given two-letter names:
‘cp’ concept index
‘fn’ function index
‘vr’ variable index
‘ky’ key index
‘pg’ program index
‘tp’ data type index
Write a @syncodeindex command before or shortly after the end-of-header line at the
beginning of a Texinfo file. For example, to merge a function index with a concept index,
write the following:
@syncodeindex fn cp
This will cause all entries designated for the function index to merge in with the concept
index instead.
To merge both a variables index and a function index into a concept index, write the
following:
@syncodeindex vr cp
@syncodeindex fn cp
The @syncodeindex command puts all the entries from the ‘from’ index (the redirected
index) into the @code font, overriding whatever default font is used by the index to which
the entries are now directed. This way, if you direct function names from a function index
into a concept index, all the function names are printed in the @code font as you would
expect.
This defines a new index, called the ‘au’ index. At the same time, it creates a new
indexing command, @auindex, that you can use to make index entries. Use this new indexing
command just as you would use a predefined indexing command.
For example, here is a section heading followed by a concept index entry and two ‘au’
index entries.
@section Cognitive Semantics
@cindex kinesthetic image schemas
@auindex Johnson, Mark
@auindex Lakoff, George
(Evidently, ‘au’ serves here as an abbreviation for “author”.)
Texinfo constructs the new indexing command by concatenating the name of the index
with ‘index’; thus, defining an ‘xy’ index leads to the automatic creation of an @xyindex
command.
Use the @printindex command to print the index, as you do with the predefined indices.
For example:
@node Author Index
@unnumbered Author Index
@printindex au
The @defcodeindex is like the @defindex command, except that, in the printed output,
it prints entries in an @code font by default instead of a roman font.
You should define new indices before the end-of-header line of a Texinfo file, and (of
course) before any @synindex or @syncodeindex commands (see Section 3.2 [Texinfo File
Header], page 16).
As mentioned earlier (see Section 11.1 [Predefined Indices], page 95), we recommend
having a single index in the final document whenever possible, however many source indices
you use, since then readers have only one place to look.
When creating an index, TEX creates a file whose extension is the name of the index
(see [Names of index files], page 164). Therefore you should avoid using index names that
collide with extensions used for other purposes, such as ‘.aux’ or ‘.xml’. makeinfo already
reports an error if a new index conflicts well-known extension name.
101
12 Special Insertions
Texinfo provides several commands for inserting characters that have special meaning in
Texinfo, such as braces, and for other graphic elements that do not correspond to simple
characters you can type.
These are:
• The Texinfo special characters: ‘@ {} , \ # &’.
• Whitespace within and around a sentence.
• Accents.
• Dots and bullets.
• The TEX logo and the copyright symbol.
• The euro and pounds currency symbols.
• The degrees symbol.
• The minus sign.
• Mathematical expressions.
• Glyphs for examples of programming: evaluation, macros, errors, etc.
• Footnotes.
However, Texinfo uses the hash character as a special character in one restricted context:
to introduce the so-called #line directive and variants (see Section 17.6 [External Macro
Processors], page 155).
So, in order to typeset an actual hash character in such a place (for example, in a program
that needs documentation about #line), it’s necessary to use @hashchar{} or some other
construct. Here’s an example:
@hashchar{} 10 "example.c"
Although ‘@hashchar{}’ can be used nearly anywhere, there is no need for it anywhere
except this unusual case.
This works all right for text. However, in examples of computer code, readers are
especially likely to cut and paste the text verbatim—and, unfortunately, some document
viewers will mangle these characters. (The free PDF reader xpdf works fine, but other PDF
readers, both free and nonfree, have problems.)
If this is a concern for you, Texinfo provides these two commands:
@codequoteundirected on-off
causes the output for the ’ character in code environments to be the undirected
single quote, like this: '.
@codequotebacktick on-off
causes the output for the ‘ character in code environments to be the backtick
character (standalone grave accent), like this: `.
If you want these settings for only part of the document, @codequote... off will restore
the normal behavior, as in @codequoteundirected off.
These settings affect @code, @example, @kbd, @samp, @verb, and @verbatim. See
Section 7.1.1 [Useful Highlighting], page 60.
This feature used to be controlled by using @set to change the values of the corresponding
variables txicodequoteundirected and txicodequotebacktick; they are still supported,
but the command interface is preferred.
The “closing punctuation” mentioned above is defined as a right parenthesis (‘)’, right
bracket (‘]’), or right quote, either single or double (‘'’ and ‘''’; the many possible ad-
ditional Unicode right quotes are not included). These characters can be thought of as
invisible with respect to whether a given period ends a sentence. (This is the same rule as
TEX.) For instance, the periods in ‘foo.) Bar’ and ‘foo.'' Bar’ do end sentences.
The meanings of @: and @., etc. in Texinfo are designed to work well with the Emacs
sentence motion commands (see Section “Sentences” in The GNU Emacs Manual). It may
help to imagine that the ‘@’ in ‘@.’, etc., is an invisible lower-case letter ‘a’ which makes an
upper-case letter before it immaterial for the purposes of deciding whether the period ends
the sentence.
A few Texinfo commands are not considered as being an abbreviation, even though they
may end with a capital letter when expanded, so that you don’t have to insert @. and
companions. Notably, this is the case for code-like highlighting commands, @var arguments
ending with a capital letter, @LaTeX, and @TeX. For example, that sentence ended with ‘...
@code{@@TeX}.’; @. was not needed. Similarly, in ... @var{VARNAME}. Text the period
after VARNAME ends the sentence; there is no need to use @..
@frenchspacing off
This is text. Two sentences. Three sentences. Non-French spacing.
produces:
This is text. Two sentences. Three sentences. French spacing.
This is text. Two sentences. Three sentences. Non-French spacing.
@frenchspacing also affects the output after @., @!, and @? (see Section 12.3.3 [Ending
a Sentence], page 105).
@frenchspacing has no effect on the HTML or Docbook output; for XML, it outputs a
transliteration of itself (see Section 1.2 [Output Formats], page 4).
To use the @dmn command, write the number and then follow it immediately, with no
intervening space, by @dmn, and then by the dimension within braces. For example,
A4 paper is 8.27@dmn{in} wide.
produces
A4 paper is 8.27 in wide.
Not everyone uses this style. Some people prefer ‘8.27 in.’ or ‘8.27 inches’. In these cases,
however, you need to use @tie (see Section 13.6 [@tie], page 120) or @w (see Section 13.5
[@w], page 119) so that no line break can occur between the number and the dimension.
Also, if you write a period after an abbreviation within a sentence (as with the ‘in.’ above),
you should write ‘@:’ after the period to prevent TEX from inserting extra whitespace, as
shown here. See Section 12.3.2 [Not Ending a Sentence], page 105.
In Info and plain text, regardless of being used inside @math, @sub{text} is output as
‘_{text}’ and @sup{text} as ‘^{text}’, including the literal braces (to mark the beginning
and end of the “script” text to the reader).
When the output format (and display program) permit (TEX math, HTML), the super-
script is set above the subscript when both commands are given consecutively.
@backslashchar{} in any mode to get a typewriter backslash. See Section 12.1.4 [Inserting
a Backslash], page 102.
For displayed equations, you must at present use TEX directly (see Section 16.3 [Raw
Formatter Commands], page 140).
12.8.2 @copyright{} (
c)
Use the @copyright{} command to generate the copyright symbol, ‘
’.
c Where possible,
this is a ‘c’ inside a circle; in Info, this is ‘(C)’.
Legally, it’s not necessary to use the copyright symbol; the English word ‘Copyright’
suffices, according to international treaty.
12.8.3 @registeredsymbol{} (
R
)
Use the @registeredsymbol{} command to generate the registered symbol, ‘
R
’. Where
possible, this is an ‘R’ inside a circle; in Info, this is ‘(R)’.
If you actually want to typeset some math that does a subtraction, it is better to
use @math. Then the regular ‘-’ character produces a minus sign, as in @math{a-b} (see
Section 12.7 [Inserting Math], page 110).
The @expansion{} command is displayed as ‘7→’, either a long arrow with a flat base or
(when that is not available) the ASCII sequence ‘==>’.
For example, the following
@lisp
(third '(a b c))
@expansion{} (car (cdr (cdr '(a b c))))
@result{} c
@end lisp
produces
(third '(a b c))
7→ (car (cdr (cdr '(a b c))))
⇒ c
which may be read as:
(third '(a b c)) expands to (car (cdr (cdr '(a b c)))); the result of eval-
uating the expression is c.
Often, as in this case, an example looks better if the @expansion{} and @result{} com-
mands are indented.
Thus,
@lisp
(+ 23 'x)
@error{} Wrong type argument: integer-or-marker-p, x
@end lisp
produces
(+ 23 'x)
error Wrong type argument: integer-or-marker-p, x
This indicates that the following error message is printed when you evaluate the expression:
Wrong type argument: integer-or-marker-p, x
The word ‘ error ’ itself is not part of the error message.
@U is useful for inserting occasional glyphs for which Texinfo has no dedicated command,
while allowing the Texinfo source to remain purely 7-bit ASCII for maximum portability.
This command has many limitations—the same limitations as inserting Unicode char-
acters in UTF-8 or another binary form. First and most importantly, TEX knows nothing
about most of Unicode. Supporting specific additional glyphs upon request is possible, but
it’s not viable for texinfo.tex to support whole additional scripts (Japanese, Urdu, . . . ).
The @U command does nothing to change this. If the specified character is not supported
in TEX, an error is given. (See Section 15.2 [@documentencoding], page 136.)
In HTML, XML, and Docbook, the output from @U is always an entity reference of the
form ‘&#xhex;’, as in ‘IJ’ for the example above. This should work even when an
HTML document uses some other encoding (say, Latin 1) and the given character is not
supported in that encoding.
In Info and plain text, if the document encoding is specified explicitly to be UTF-8, the
output will be the UTF-8 representation of the character U+hex (presuming it’s a valid
character). In all other cases, the output is the ASCII sequence ‘U+hex’, as in the six ASCII
characters ‘U+0132’ for the example above.
That’s all. No magic!
118
The space from @w{ }, as well as being non-breakable, also will not stretch or shrink.
Sometimes that is what you want, for instance if you’re doing manual indenting. However,
usually you want a normal interword space that does stretch and shrink (in the printed
output); for that, see the @tie command in the next section.
You can also use the @w command to prevent TEX from automatically hyphenating a
long name or phrase that happens to fall near the end of a line. makeinfo does not ever
hyphenate words.
You can also use @w to avoid unwanted keyword expansion in source control systems. For
example, to literally write $Id$ in your document, use @w{$}Id$. This trick isn’t effective
in Info or plain text output, though.
Although @group would make sense conceptually in a wide variety of contexts, its
current implementation works reliably only within @example and variants, and within
@display, @format, @flushleft and @flushright. See Chapter 8 [Quotations and Ex-
amples], page 71. (What all these commands have in common is that each line of input
produces a line of output.) In other contexts, @group can cause anomalous vertical spacing.
This formatting requirement means that you should write:
@example
@group
...
@end group
@end example
with the @group and @end group commands inside the @example and @end example com-
mands.
The @group command is most often used to hold an example together on one page. In
this Texinfo manual, more than 100 examples contain text that is enclosed between @group
and @end group.
If you forget to end a group, you may get strange and unfathomable error messages when
you run TEX. This is because TEX keeps trying to put the rest of the Texinfo file onto the
one page and does not start to generate error messages until it has processed considerable
text. It is a good rule of thumb to look for a missing @end group if you get incomprehensible
error messages in TEX.
14 Definition Commands
The @deffn command and the other definition commands enable you to describe functions,
variables, macros, commands, user options, special forms and other such artifacts in a
uniform format.
In the Info file, a definition causes the entity category—‘Function’, ‘Variable’, or
whatever—to appear at the beginning of the first line of the definition, followed by the
entity’s name and arguments. In the printed manual, the command causes TEX to print
the entity’s name and its arguments on the left margin and print the category next to the
right margin. In both output formats, the body of the definition is indented. Also, the
name of the entity is entered into the appropriate index: @deffn enters the name into the
index of functions, @defvr enters it into the index of variables, and so on (see Section 11.1
[Predefined Indices], page 95).
A manual need not and should not contain more than one definition for a given name. An
appendix containing a summary should use @table rather than the definition commands.
Otherwise, the second word will be mistaken for the name of the entity. As a general
rule, when any of the arguments in the heading line except the last one are more than one
word, you need to enclose them in braces. This may also be necessary if the text contains
commands, for example, ‘{declaraci@'on}’ if you are writing in Spanish.
Some of the definition commands are more general than others. The @deffn command,
for example, is the general definition command for functions and the like—for entities that
may take arguments. When you use this command, you specify the category to which the
entity belongs. Three predefined, specialized variations (@defun, @defmac, and @defspec)
specify the category for you: “Function”, “Macro”, and “Special Form” respectively. (In
Lisp, a special form is an entity much like a function.) Similarly, the general @defvr
command is accompanied by several specialized variations for describing particular kinds of
variables.
See Section 14.7 [Sample Function Definition], page 132, for a detailed example of a
function definition, including the use of @example inside the definition.
As you can see, the continued lines are combined, as if they had been typed on one source
line.
Although this example only shows a one-line continuation, continuations may extend
over any number of lines, in the same way; put an @ at the end of each line to be continued.
In general, any number of spaces or tabs before the @ continuation character are collapsed
into a single space. There is one exception: the Texinfo processors will not fully collapse
whitespace around a continuation inside braces. For example:
@deffn {Category @
Name} ...
The output (not shown) has excess space between ‘Category’ and ‘Name’. To avoid this,
elide the unwanted whitespace in your input, or put the continuation @ outside braces.
@ does not function as a continuation character in any other context. Ordinarily, ‘@’
followed by a whitespace character (space, tab, newline) produces a normal interword space
(see Section 12.3.1 [Multiple Spaces], page 104).
Chapter 14: Definition Commands 124
Ordinarily, the return type is printed on the same line as the function name and argu-
ments, as shown above. In source code, GNU style is to put the return type on a line by
itself. So Texinfo provides an option to do that: @deftypefnnewline on.
This affects typed functions only—not untyped functions, not typed variables, etc..
Specifically, it affects the commands in this section, and the analogous commands for
object-oriented languages, namely @deftypeop and @deftypemethod (see Section 14.5.6.2
[Object-Oriented Methods], page 131).
Specifying @deftypefnnewline off reverts to the default.
rather than a single argument. We also say that this list is appended to
the other arguments.
apply returns the result of calling function. As with funcall, function
must either be a Lisp function or a primitive function; special forms and
macros do not make sense in apply.
(setq f 'list)
⇒ list
(apply f 'x 'y 'z)
error Wrong type argument: listp, z
(apply '+ 1 2 '(3 4))
⇒ 10
(apply '+ '(1 2 3 4))
⇒ 10
@example
(setq f 'list)
@result{} list
(apply f 'x 'y 'z)
@error{} Wrong type argument: listp, z
(apply '+ 1 2 '(3 4))
@result{} 10
(apply '+ '(1 2 3 4))
@result{} 10
15 Internationalization
Texinfo has some support for writing in languages other than English, although this area still
needs considerable work. (If you are the one helping to translate the fixed strings written
to documents, see Section 20.7 [Internationalization of Document Strings], page 195.)
For a list of the various accented and special characters Texinfo supports, see Section 12.4
[Inserting Accents], page 107.
Since the lists of language codes and country codes are updated relatively frequently, we
don’t attempt to list them here. The valid language codes are on the official home page for
ISO 639, http://www.loc.gov/standards/iso639-2/. The country codes and the official
web site for ISO 3166 can be found via http://en.wikipedia.org/wiki/ISO_3166.
In TEX output, the characters which are supported in the standard Computer Modern
fonts are output accordingly. For example, this means using constructed accents rather
than precomposed glyphs. Using a missing character generates a warning message, as does
specifying an unimplemented encoding.
Although modern TEX systems support nearly every script in use in the world, this
wide-ranging support is not available in texinfo.tex, and it’s not feasible to duplicate or
incorporate all that effort. (Our plan to support other scripts is to create a LATEX back-end
to texi2any, where the support is already present.)
For maximum portability of Texinfo documents across the many different user envi-
ronments in the world, we recommend sticking to 7-bit ASCII in the input unless your
particular manual needs a substantial amount of non-ASCII, e.g., it’s written in German.
You can use the @U command to insert an occasional needed character (see Section 12.10
[Inserting Unicode], page 116).
138
However, this text will appear only in Info and plain text.
@end ifinfo
@ifhtml
And this text will only appear in HTML.
@end ifhtml
@ifplaintext
Whereas this text will only appear in plain text.
@end ifplaintext
@ifxml
Notwithstanding that this will only appear in XML.
@end ifxml
@ifdocbook
Nevertheless, this will only appear in Docbook.
@end ifdocbook
The preceding example produces the following line:
This text will appear only in the printed manual.
Notice that you only see one of the input lines, depending on which version of the manual
you are reading.
In complex documents, you may want Texinfo to issue an error message in some condi-
tionals that should not ever be processed. The @errormsg{text} command will do this; it
takes one argument, the text of the error message.
We mention @errormsg{} here even though it is not strictly related to conditionals,
since in practice it is most likely to be useful in that context. Technically, it can be used
anywhere. See Section 17.6 [External Macro Processors], page 155, for a caveat regarding
the line numbers which @errormsg emits in TEX.
N 2
X yi − (a + bxi )
χ2 =
i=1
σi
Analogously, you can use @ifhtml ... @end ifhtml to delimit Texinfo source to be
included in HTML output only, and @html ... @end html for a region of raw HTML.
Likewise, you can use @ifxml ... @end ifxml to delimit Texinfo source to be included
in XML output only, and @xml ... @end xml for a region of raw XML. Regions of raw
text in other formats will also be present in the XML output, but with protection of XML
characters and within corresponding elements. For example, the raw HTML text:
Chapter 16: Conditionally Visible Text 141
@html
<br />
@end html
will be included in the XML output as:
<html>
<br />
</html>
Again likewise, you can use @ifdocbook ... @end ifdocbook to delimit Texinfo source
to be included in Docbook output only, and @docbook ... @end docbook for a region of
raw Docbook.
The behavior of newlines in raw regions is unspecified.
In all cases, in raw processing, @ retains the same meaning as in the remainder of the
document. Thus, the Texinfo processors must recognize and even execute, to some extent,
the contents of the raw regions, regardless of the final output format. Therefore, specifying
changes that globally affect the document inside a raw region leads to unpredictable and
generally undesirable behavior. For example, using the @kbdinputstyle command inside
a raw region is undefined.
The remedy is simple: don’t do that. Use the raw formatter commands for their intended
purpose, of providing material directly in the underlying format. When you simply want to
give different Texinfo specifications for different output formats, use the @if... conditionals
and stay in Texinfo syntax.
In these commands, whitespace is ignored after the comma separating the arguments,
as usual, but is not ignored at the end of text.
To insert a literal at sign, left brace, or right brace in one of the arguments, you must use
the alphabetic commands @atchar{} (see Section 12.1.1 [Inserting an Atsign], page 101),
and @lbracechar{} or @rbracechar{} (see Section 12.1.2 [Inserting Braces], page 101), or
the parsing will become confused.
With @inlinefmtifelse, it is also necessary to use @comma{} to avoid mistaking a ‘,’
in the text for the delimiter. With @inlinefmt and @inlineraw, @comma{} is not required
(though it’s fine to use it), since these commands always have exactly two arguments.
For TEX, the processed text cannot contain newline-delimited commands. Text to be
ignored (i.e., for non-TEX) can, though.
Two other @inline... conditionals complement the @ifset and @ifclear commands;
see the next section.
The value is the remainder of the input line, and can contain anything. However, unlike
most other commands which take the rest of the line as a value, @set need not appear at
the beginning of a line.
Write the @set command like this:
@set foo This is a string.
This sets the value of the flag foo to “This is a string.”.
The Texinfo formatters then replace a @value{flag} command with the string to which
flag is set. Thus, when foo is set as shown above, the Texinfo formatters convert this:
@value{foo}
to this:
This is a string.
You can write a @value command within a paragraph; but you must write a @set
command on a line of its own.
If you write the @set command like this:
@set foo
without specifying a string, the value of foo is the empty string.
If you clear a previously set flag with @clear flag, a subsequent @value{flag} com-
mand will report an error.
For example, if you set foo as follows:
@set howmuch very, very, very
then the formatters transform
It is a @value{howmuch} wet day.
into
It is a very, very, very wet day.
If you write
@clear howmuch
then the formatters transform
It is a @value{howmuch} wet day.
into
It is a {No value for "howmuch"} wet day.
@value cannot be reliably used as the argument to an accent command (see Section 12.4
[Inserting Accents], page 107). For example, this fails:
@set myletter a
@'@value{myletter}
@ifset flag
conditional-text
@end ifset
For example, you can create one document that has two variants, such as a manual for
a ‘large’ and ‘small’ model:
You can use this machine to dig up shrubs
without hurting them.
@set large
@ifset large
It can also dig up fully grown trees.
@end ifset
Copyright ...
After you format the manual, the @value constructs have been expanded, so the output
contains text like this:
This is Edition 0.35 Beta, last updated 14 August 1992,
of `The GNU Make Manual', for `make', Version 3.63 Beta.
When you update the manual, you change only the values of the flags; you do not need
to edit the three sections.
The newline characters after the @macro line and before the @end macro line are ignored,
that is, not included in the macro body. All other whitespace is treated according to the
usual Texinfo rules.
To allow a macro to be used recursively, that is, in an argument to a call to itself, you
must define it with ‘@rmacro’, like this:
@rmacro rmac {arg}
a\arg\b
@end rmacro
...
@rmac{1@rmac{text}2}
This produces the output ‘a1atextb2b’. With ‘@macro’ instead of ‘@rmacro’, an error
message is given.
You can undefine a macro foo with @unmacro foo. It is not an error to undefine a macro
that is already undefined. For example:
@unmacro foo
It’s not always necessary to worry about commas. To facilitate use of macros, makeinfo
implements two rules for automatic quoting in some circumstances:
1. If a macro takes only one argument, all commas in its invocation are quoted by default.
For example:
@macro TRYME{text}
@strong{TRYME: \text\}
@end macro
In these arguments, there is no escaping of special characters, so each ‘\’ stands for itself.
If a macro is defined to take more than one argument, but is called with only one (in
braces), the remaining arguments are set to the empty string, and no error is given. For
example:
@macro addtwo {p, q}
Both: \p\\q\.
@end macro
@addtwo{a}
produces simply:
Both: a.
@end macro
you can do the following instead:
@iftex
@macro Mac
text for TeX output
@end macro
@end iftex
@ifnottex
@macro Mac
text for not TeX output
@end macro
@end ifnottex
• Texinfo commands in the expansion of a macro in the text of an index entry may end
up being typeset as literal text (including an “@” sign), instead of being interpreted
with their intended meaning.
• White space is ignored at the beginnings of lines.
• Macros can’t be reliably used in the argument to accent commands (see Section 12.4
[Inserting Accents], page 107).
• The backslash escape for commas in macro arguments does not work; @comma{} must
be used.
• Likewise, if you want to pass an argument with the Texinfo command @, (to produce a
cedilla, see Section 12.4 [Inserting Accents], page 107), you have to use @value or an-
other work-around. Otherwise, the comma may be taken as separating the arguments.
For example,
@macro mactwo{argfirst, argsecond}
\argfirst\+\argsecond\.
@end macro
@set fc Fran@,cois
@mactwo{@value{fc},}
produces:
François+.
• Ending a macro body with ‘@c’ may cause text following the macro invocation to be
ignored as a comment in makeinfo. This is not the case when processing with TEX.
This was often done to “comment out” an unwanted newline at the end of a macro
body, but this is not necessary any more, as the final newline before ‘@end macro’ is
not included in the macro body anyway.
• In general, you can’t arbitrarily substitute a macro (or @value) call for Texinfo com-
mand arguments, even when the text is the same. Texinfo is not M4 (or even plain
TEX). It might work with some commands, it fails with others. Best not to do it at
all. For instance, this fails:
@macro offmacro
off
@end macro
Chapter 17: Defining New Texinfo Commands 153
@headings @offmacro
This looks equivalent to @headings off, but for TEXnical reasons, it fails with a mys-
terious error message (namely, ‘Paragraph ended before @headings was complete’).
• Macros cannot define macros in the natural way. To do this, you must use conditionals
and raw TEX. For example:
@ifnottex
@macro ctor {name, arg}
@macro \name\
something involving \arg\ somehow
@end macro
@end macro
@end ifnottex
@tex
\gdef\ctor#1{\ctorx#1,}
\gdef\ctorx#1,#2,{\def#1{something involving #2 somehow}}
@end tex
The makeinfo implementation also has the following limitations (by design):
• @verbatim and macros do not mix; for instance, you can’t start a verbatim block
inside a macro and end it outside (see Section 8.5 [@verbatim], page 74). Starting
any environment inside a macro and ending it outside may or may not work, for that
matter.
• Macros that completely define macros are ok, but it’s not possible to have incompletely
nested macro definitions. That is, @macro and @end macro (likewise for @rmacro) must
be correctly paired. For example, you cannot start a macro definition within a macro,
and then end that nested definition outside the macro.
In the makeinfo implementation before Texinfo 5.0, ends of lines from expansion of a
@macro definition did not end an @-command line-delimited argument (@chapter, @center,
etc.). This is no longer the case. For example:
@macro twolines{}
aaa
bbb
@end macro
@center @twolines{}
In the current makeinfo, this is equivalent to:
@center aaa
bbb
with just ‘aaa’ as the argument to @center. In the earlier implementation, it would have
been parsed as this:
@center aaa bbb
Write the ‘@alias’ command on a line by itself, followed by the new command name,
an equals sign, and the existing command name. Whitespace around the equals sign is
optional and ignored if present. Thus:
@alias new = existing
For example, if your document contains citations for both books and some other media
(movies, for example), you might like to define a macro @moviecite{} that does the same
thing as an ordinary @cite{} but conveys the extra semantic information as well. You’d
do this as follows:
@alias moviecite = cite
Macros do not always have the same effect as aliases, due to vagaries of argument parsing.
Also, aliases are much simpler to define than macros. So the command is not redundant.
Unfortunately, it’s not possible to alias Texinfo environments; for example, @alias
lang=example is an error.
Aliases must not be recursive, directly or indirectly.
It is not advisable to redefine any TEX primitive, plain TEX, or Texinfo command name
as an alias. Unfortunately this is a very large set of names, and the possible resulting errors
from TEX are unpredictable.
makeinfo will accept the same identifiers for aliases as it does for macro names, that is,
alphanumerics and (except as the first character) ‘-’.
with CPP_LINE_DIRECTIVES (see Section 20.6.4 [Other Customization Variables], page 190),
though there is normally no reason to do so.
For those few programs (M4, CPP, Texinfo) which need to document ‘#line’ direc-
tives and therefore have examples which would otherwise match the pattern, the command
@hashchar{} can be used (see Section 12.1.5 [Inserting a Hashsign], page 102). The example
line above looks like this in the source for this manual:
@hashchar{}line 100 "foo.ptexi"
The @hashchar command was added to Texinfo in 2013. If you don’t want to rely on it,
you can also use @set and @value to insert the literal ‘#’:
@set hash #
@value{hash}line 1 "example.c"
Or, if suitable, a @verbatim environment can be used instead of @example. As mentioned
above, #line-recognition is disabled inside verbatim blocks.
18 Include Files
When a Texinfo processor sees an @include command in a Texinfo file, it processes the
contents of the file named by the @include and incorporates them into the output files
being created. Include files thus let you keep a single large document as a collection of
conveniently small parts.
18.2 texinfo-multiple-files-update
GNU Emacs Texinfo mode provides the texinfo-multiple-files-update command. This
command creates or updates ‘Next’, ‘Previous’, and ‘Up’ pointers of included files as well as
those in the outer or overall Texinfo file, and it creates or updates a main menu in the outer
file. Depending on whether you call it with optional arguments, the command updates only
the pointers in the first @node line of the included files or all of them:
M-x texinfo-multiple-files-update
Called without any arguments:
− Create or update the ‘Next’, ‘Previous’, and ‘Up’ pointers of the first @node
line in each file included in an outer or overall Texinfo file.
− Create or update the ‘Top’ level node pointers of the outer or overall file.
− Create or update a main menu in the outer file.
C-u M-x texinfo-multiple-files-update
Called with C-u as a prefix argument:
− Create or update pointers in the first @node line in each included file.
− Create or update the ‘Top’ level node pointers of the outer file.
− Create and insert a master menu in the outer file. The master menu is
made from all the menus in all the included files.
Chapter 18: Include Files 159
@ifnottex
@node Top
@top Include Example
@end ifnottex
Chapter 18: Include Files 160
@include foo.texinfo
@include bar.texinfo
@include concept-index.texinfo
@bye
An included file, such as foo.texinfo, might look like this:
@node First
@chapter First Chapter
@printindex cp
The outer Texinfo source file for The GNU Emacs Lisp Reference Manual is named
elisp.texi. This outer file contains a master menu with 417 entries and a list of 41
@include files.
Include files were designed primarily as a way to create a single, large printed manual
out of several smaller Info files. In a printed manual, all the references were within the same
document, so TEX could automatically determine the references’ page numbers. The Info
formatting commands used include files only for creating joint indices; each of the individual
Texinfo files had to be formatted for Info individually. (Each, therefore, required its own
@setfilename line.)
However, because large Info files are now split automatically, it is no longer necessary to
keep them small.
Nowadays, multiple Texinfo files are used mostly for large documents, such as The GNU
Emacs Lisp Reference Manual, and for projects in which several different people write
different sections of a document simultaneously.
In addition, the Info formatting commands have been extended to work with the
@include command so as to create a single large Info file that is split into smaller files if
necessary. This means that you can write menus and cross-references without naming the
different Texinfo files.
162
With the --ps option, texi2dvi produces PostScript instead of DVI, by running tex
and then dvips (see Dvips). (Or the value of the DVIPS environment variable, if set.)
texi2dvi can also be used to process LATEX files. Normally texi2dvi is able to guess
the input file language by its contents and file name extension; however, if it guesses wrong
you can explicitly specify the input language using --language=lang command line option,
where lang is either ‘latex’ or ‘texinfo’.
One useful option to texi2dvi is ‘--command=cmd’. This inserts cmd on a line by itself at
the start of the file in a temporary copy of the input file, before running TEX. With this, you
can specify different printing formats, such as @smallbook (see Section 19.11 [@smallbook],
page 171), @afourpaper (see Section 19.12 [A4 Paper], page 171), or @pagesizes (see
Section 19.13 [@pagesizes], page 172), without actually changing the document source.
(You can also do this on a site-wide basis with texinfo.cnf; see Section 19.9 [Preparing
for TEX], page 169).
The option -E (equivalently, -e and --expand) does Texinfo macro expansion using
makeinfo instead of the TEX implementation (see Section 17.3 [Macro Details], page 151).
Each implementation has its own limitations and advantages. If this option is used, no line
in the source file may begin with the string @c _texi2dvi or the string @c (_texi2dvi).
texi2dvi takes the --build=mode option to specify where the TEX compilation takes
place, and, as a consequence, how auxiliary files are treated. The build mode can also be
set using the environment variable TEXI2DVI_BUILD_MODE. The valid values for mode are:
‘local’ Compile in the current directory, leaving all the auxiliary files around. This is
the traditional TeX use.
‘tidy’ Compile in a local *.t2d directory, where the auxiliary files are left. Output
files are copied back to the original file.
Using the ‘tidy’ mode brings several advantages:
- the current directory is not cluttered with plethora of temporary files.
- clutter can be even further reduced using --build-dir=dir: all the *.t2d
directories are stored there.
- clutter can be reduced to zero using, e.g., --build-dir=/tmp/\$USER.t2d
or --build-dir=\$HOME/.t2d.
- the output file is updated after every successful TEX run, for sake of con-
current visualization of the output. In a ‘local’ build the viewer stops
during the whole TEX run.
- if the compilation fails, the previous state of the output file is preserved.
- PDF and DVI compilation are kept in separate subdirectories preventing
any possibility of auxiliary file incompatibility.
On the other hand, because ‘tidy’ compilation takes place in another di-
rectory, occasionally TEX won’t be able to find some files (e.g., when using
\graphicspath): in that case, use -I to specify the additional directories to
consider.
‘clean’ Same as ‘tidy’, but remove the auxiliary directory afterwards. Every compila-
tion therefore requires the full cycle.
Chapter 19: Formatting and Printing Hardcopy 164
texi2dvi will use etex (or pdfetex) if it is available, because it runs faster in some cases,
and provides additional tracing information when debugging texinfo.tex. Nevertheless,
this extended version of TEX is not required, and the DVI output is identical. (These days,
pdftex and pdfetex are exactly the same, but we still run pdfetex to cater to ancient TEX
installations.)
texi2dvi attempts to detect auxiliary files output by TEX, either by using the -recorder
option, or by scanning for ‘\openout’ in the log file that a run of TEX produces. You may
control how texi2dvi does this with the TEXI2DVI_USE_RECORDER environment variable.
Valid values are:
‘yes’ use the -recorder option, no checks.
‘no’ scan for ‘\openout’ in the log file, no checks.
‘yesmaybe’
check whether -recorder option is supported, and if yes use it, otherwise check
for tracing ‘\openout’ in the log file is supported, and if yes use it, else it is an
error.
‘nomaybe’ same as ‘yesmaybe’, except that the ‘\openout’ trace in log file is checked first.
The default is ‘nomaybe’. This environment variable is provided for troubleshooting
purposes, and may change or disappear in the future.
For each file specified, texindex generates a sorted index file whose name is made by
appending ‘s’ to the input file name; for example, foo.cps is made from foo.cp. The
@printindex command looks for a file with that name (see Section 11.4 [Printing Indices
& Menus], page 97). TEX does not read the raw index output file, and texindex does not
alter it.
After you have sorted the indices, you need to rerun tex on the Texinfo file. This
regenerates the output file, this time with up-to-date index entries.
Finally, you may need to run tex one more time, to get the page numbers in the cross-
references correct.
To summarize, this is a five step process. (Alternatively, it’s a one-step process: run
texi2dvi; see the previous section.)
1. Run tex on your Texinfo file. This generates a DVI file (with undefined cross-references
and no indices), and the raw index files (with two letter extensions).
2. Run texindex on the raw index files. This creates the corresponding sorted index files
(with three letter extensions).
3. Run tex again on your Texinfo file. This regenerates the DVI file, this time with indices
and defined cross-references, but with page numbers for the cross-references from the
previous run, generally incorrect.
4. Sort the indices again, with texindex.
5. Run tex one last time. This time the correct page numbers are written for the cross-
references.
@cindex @}
...
@printindex cp
Although not a matter of functionality, readers may be interested to know
that the new texindex is a literate program (http: / / en . wikipedia . org / wiki /
Literate_programming) using Texinfo for documentation and (portable) awk for code.
A single source file, texindex/ti.twjr in this case, produces the runnable program, a
printable document, and an online document.
The system is called TexiWeb Jr. and was created by Arnold Robbins, who also wrote
the new texindex. Not coincidentally, he is also the long-time maintainer of gawk (GNU
Awk, see The GNU Awk User’s Guide). The file texindex/Makefile.am shows example
usage of the system.
See the next section for more information about formatting and printing in Texinfo
mode.
Thus, the usual sequence of commands for formatting a buffer is as follows (with com-
ments to the right):
C-c C-t C-b Run texi2dvi on the buffer.
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
*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 ‘*tex-shell*’ buffer, and you can switch
to and from and use the ‘*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-texi2dvi-command "texi2dvi"
texinfo-tex-command "tex"
texinfo-texindex-command "texindex"
texinfo-delete-from-print-queue-command "lprm"
texinfo-tex-trailer "@bye"
tex-start-of-header "%**start"
tex-end-of-header "%**end"
tex-dvi-print-command "lpr -d"
tex-show-queue-command "lpq"
You can change the values of these variables with the M-x set-variable command (see
Section “Examining and Setting Variables” in The GNU Emacs Manual), or with your
.emacs initialization file (see Section “Init File” in The GNU Emacs Manual).
Beginning with version 20, GNU Emacs offers a user-friendly interface, called Customize,
for changing values of user-definable variables. See Section “Easy Customization Interface”
in The GNU Emacs Manual, for more details about this. The Texinfo variables can be found
in the ‘Development/Docs/Texinfo’ group, once you invoke the M-x customize command.
To use the @euro command, you’ll need the ‘feym*’ fonts (e.g., feymr10). See
Section 12.8.6 [@euro], page 112.
All of the above files (and a whole lot more) should be installed by default in a reasonable
TEX installation.
Optionally, you may create a file texinfo.cnf for site configuration. This file is read by
TEX at the beginning of a Texinfo file. You can put any commands you like there, according
to local site-wide conventions. They will be read by TEX when processing any Texinfo
document. For example, if texinfo.cnf contains the line ‘@afourpaper’ (see Section 19.12
[A4 Paper], page 171), then all Texinfo documents will be processed with that page size in
effect. If you have nothing to put in texinfo.cnf, you do not need to create it.
If neither of the above locations for these system files suffice, you can specify the di-
rectories explicitly. For texinfo.tex, you can do this by writing the complete path for
the file after the \input command. Another way, that works for both texinfo.tex and
texinfo.cnf (and any other file TEX might read), is to set the TEXINPUTS environment
variable in your .profile or .cshrc file.
Whether you use .profile or .cshrc depends on whether you use a Bourne shell-
compatible (sh, bash, ksh, . . . ) or C shell-compatible (csh, tcsh) command interpreter,
respeictvely.
In a .profile file, you could use the following sh command sequence:
TEXINPUTS=.:/home/me/mylib:
export TEXINPUTS
While in a .cshrc file, you could use the following csh command sequence:
setenv TEXINPUTS .:/home/me/mylib:
On MS-DOS/MS-Windows, you’d do this (note the use of the ‘;’ character as directory
separator, instead of ‘:’):
set TEXINPUTS=.;d:/home/me/mylib;c:
It is customary for DOS/Windows users to put such commands in the autoexec.bat file,
or in the Windows registry.
These settings would cause TEX to look for \input file first in the current directory, indi-
cated by the ‘.’, then in a hypothetical user ‘me’’s mylib directory, and finally in the system
directories. (A leading, trailing, or doubled ‘:’ indicates searching the system directories at
that point.)
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.
If you have many overfull boxes and/or an antipathy to rewriting, you can coerce TEX
into greatly increasing the allowable interword spacing, thus (if you’re lucky) avoiding many
of the bad line breaks, like this:
@tex
\global\emergencystretch = .9\hsize
@end tex
(You should adjust the fraction as needed.) This huge value for \emergencystretch cannot
be the default, since then the typeset output would generally be of noticeably lower quality;
its default value is ‘.15\hsize’. \hsize is the TEX dimension containing the current line
width.
For any overfull boxes you do have, TEX will print a large, ugly, black rectangle beside
the line that contains the overfull hbox unless told otherwise. 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, write the following in
the beginning of the Texinfo file on a line of its own, before the @titlepage command:
@finalout
19.14 Magnification
You can attempt to direct TEX to typeset pages larger or smaller than usual with the \mag
TEX command. Everything that is typeset is scaled proportionally larger or smaller. (\mag
stands for “magnification”.) This is not a Texinfo @-command, but is a raw TEX command
that is prefixed with a backslash. You have to write this command between @tex and @end
tex (see Section 16.3 [Raw Formatter Commands], page 140).
Follow the \mag command with an ‘=’ and then a number that is 1000 times the magni-
fication you desire. For example, to print pages at 1.2 normal size, write the following near
the beginning of the Texinfo file, before the title page:
@tex
\global\mag=1200
@end tex
With some printing technologies, you can print normal-sized copies that look better than
usual by giving a larger-than-normal master to your print shop. They do the reduction,
thus effectively increasing the resolution.
Chapter 19: Formatting and Printing Hardcopy 173
Depending on your system, DVI files prepared with a nonstandard-\mag may not print
or may print only with certain magnifications. Be prepared to experiment.
The argument to the option is always one word to the shell; if it contains internal
whitespace, the first word is taken as the variable name and the remainder as the
value. For example, -D 'myvar someval' is equivalent to @set myvar someval.
--disable-encoding
--enable-encoding
By default, or with --enable-encoding, output accented and special char-
acters in Info and plain text output based on ‘@documentencoding’. With
--disable-encoding, 7-bit ASCII transliterations are output. See Section 15.2
[@documentencoding], page 136, and Section 12.4 [Inserting Accents], page 107.
--docbook
Generate Docbook output (rather than Info).
--document-language=lang
Use lang to translate Texinfo keywords which end up in the output document.
The default is the locale specified by the @documentlanguage command if there
is one, otherwise English (see Section 15.1 [@documentlanguage], page 135).
--dvi Generate a TeX DVI file using texi2dvi, rather than Info (see Section 20.4
[texi2any Printed Output], page 181).
--dvipdf Generate a PDF file using texi2dvi --dvipdf, rather than Info (see
Section 20.4 [texi2any Printed Output], page 181).
--error-limit=limit
-e limit Report LIMIT errors before aborting (on the assumption that continuing would
be useless); default 100.
--fill-column=width
-f 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.) The default value is 72.
--footnote-style=style
-s style Set the footnote style to style: either ‘end’ for the end node style (the default)
or ‘separate’ for the separate node style. The value set by this option overrides
the value set in a Texinfo file by a @footnotestyle command (see Section 10.3.2
[Footnote Styles], page 93).
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.
In HTML, when the footnote style is ‘end’, or if the output is not split, footnotes
are put at the end of the output. If set to ‘separate’, and the output is split,
they are placed in a separate file.
--force
-F Ordinarily, if the input file has errors, the output files are not created. With
this option, they are preserved.
Chapter 20: texi2any: The Generic Translator for Texinfo 177
--help
-h Print a message with available options and basic usage, then exit successfully.
--html Generate HTML output (rather than Info). By default, the HTML output is
split into one output file per Texinfo source node, and the split output is written
into a subdirectory based on the name of the top-level Info file. See Chapter 22
[Generating HTML], page 209.
-I path Append path to the directory search list for finding files that are included
using the @include command. By default, texi2any searches only the current
directory. If path is not given, the current directory is appended. The path
value can be a single directory or a list of several directories separated by the
usual path separator character (‘:’ on Unix-like systems, ‘;’ on Windows).
--ifdocbook
--ifhtml
--ifinfo
--ifplaintext
--iftex
--ifxml For the given format, process ‘@ifformat’ and ‘@format’ commands, and do not
process ‘@ifnotformat’, regardless of the format being output. For instance, if
--iftex is given, then ‘@iftex’ and ‘@tex’ blocks will be read, and ‘@ifnottex’
blocks will be ignored.
--info Generate Info output. By default, if the output file contains more than about
300,000 bytes, it is split into shorter subfiles of about that size. The name of the
output file and any subfiles is determined by @setfilename (see Section 3.2.3
[@setfilename], page 17). See Section 21.1.5 [Tag and Split Files], page 201.
--init-file=file
Load file as code to modify the behavior and output of the generated manual.
It is customary to use the .pm or the .init extensions for these customization
files, but that is not enforced; the file name can be anything. The --conf-dir
option (see above) can be used to add to the list of directories in which these
customization files are searched for.
--internal-links=file
In HTML mode, output a tab-separated file containing three columns: the
internal link to an indexed item or item in the table of contents, the name of
the index (or table of contents) in which it occurs, and the term which was
indexed or entered. The items are in the natural sorting order for the given
element. This dump can be useful for post-processors.
--macro-expand=file
-E file Output the Texinfo source, with all Texinfo macros expanded, to file. Normally,
the result of macro expansion is used internally by makeinfo and then discarded.
--no-headers
Do not include menus or node separator lines in the output.
When generating Info, this is the same as using --plaintext, resulting in a
simple plain text file. Furthermore, @setfilename is ignored, and output is
Chapter 20: texi2any: The Generic Translator for Texinfo 178
to standard output unless overridden with -o. (This behavior is for backward
compatibility.)
When generating HTML, and output is split, also output navigation links only
at the beginning of each file. If output is not split, do not include navigation
links at the top of each node at all. See Chapter 22 [Generating HTML],
page 209.
--no-ifdocbook
--no-ifhtml
--no-ifinfo
--no-ifplaintext
--no-iftex
--no-ifxml
For the given format, do not process ‘@ifformat’ and ‘@format’ commands,
and do process ‘@ifnotformat’, regardless of the format being output. For
instance, if --no-ifhtml is given, then ‘@ifhtml’ and ‘@html’ blocks will not
be read, and ‘@ifnothtml’ blocks will be.
--no-node-files
--node-files
When generating HTML, create redirection files for anchors and any nodes
not already output with the file name corresponding to the node name (see
Section 22.4.2 [HTML Xref Node Name Expansion], page 213). This makes it
possible for section- and chapter-level cross-manual references to succeed (see
Section 22.4.6 [HTML Xref Configuration], page 217).
If the output is split, this is enabled by default. If the output is not split,
--node-files enables the creation of the redirection files, in addition to the
monolithic main output file. --no-node-files suppresses the creation of redi-
rection files in any case. This option has no effect with any output format other
than HTML. See Chapter 22 [Generating HTML], page 209.
--no-number-footnotes
Suppress automatic footnote numbering. By default, footnotes are numbered
sequentially within a node, i.e., the current footnote number is reset to 1 at the
start of each node.
--no-number-sections
--number-sections
With --number_sections (the default), output chapter, section, and appendix
numbers as in printed manuals. This works only with hierarchically-structured
manuals. You should specify --no-number-sections if your manual is not
normally structured.
--no-pointer-validate
--no-validate
Suppress the pointer-validation phase of makeinfo—a dangerous thing to do.
This can also be done with the @novalidate command (see Section 19.1 [Use
TEX], page 162). Normally, consistency checks are made to ensure that cross-
references can be resolved, etc. See Section 20.5 [Pointer Validation], page 182.
Chapter 20: texi2any: The Generic Translator for Texinfo 179
--no-warn
Suppress warning messages (but not error messages).
--output=file
-o file Specify that the output should be directed to file. This overrides any file name
specified in a @setfilename command found in the Texinfo source. If neither
@setfilename nor this option are specified, the input file name is used to
determine the output name. See Section 3.2.3 [@setfilename], page 17.
If file is ‘-’, output goes to standard output and ‘--no-split’ is implied.
If file is a directory or ends with a ‘/’ the usual rules are used to determine the
output file name (namely, use @setfilename or the input file name) but the files
are written to the file directory. For example, ‘makeinfo -o bar/ foo.texi’,
with or without --no-split, will write bar/foo.info, and possibly other files,
under bar/.
When generating HTML and output is split, file is used as the name for the di-
rectory into which all files are written. For example, ‘makeinfo -o bar --html
foo.texi’ will write bar/index.html, among other files.
--output-indent=val
This option now does nothing, but remains for compatibility. (It used to alter
indentation in XML/Docbook output.)
-P path Prepend path to the directory search list for @include. If path is not given,
the current directory is prepended. See ‘-I’ above.
--paragraph-indent=indent
-p 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 (see
Section 3.7.4 [@paragraphindent], page 29). The value of indent is interpreted
as follows:
‘asis’ Preserve any existing indentation (or lack thereof) at the beginnings
of paragraphs.
‘0’ or ‘none’
Delete any existing indentation.
num Indent each paragraph by num spaces.
The default is to indent by two spaces, except for paragraphs following a section
heading, which are not indented.
--pdf Generate a PDF file using texi2dvi --pdf, rather than Info (see Section 20.4
[texi2any Printed Output], page 181).
--plaintext
Output a plain text file (rather than Info): do not include menus or node
separator lines in the output. This results in a straightforward plain text file
that you can (for example) send in email without complications, or include in
a distribution (for example, an INSTALL file).
With this option, @setfilename is ignored and the output goes to standard
output by default; this can be overridden with -o.
Chapter 20: texi2any: The Generic Translator for Texinfo 180
--ps Generate a PostScript file using texi2dvi --ps, rather than Info (see
Section 20.4 [texi2any Printed Output], page 181).
--set-customization-variable var=value
-c var=value
Set the customization variable var to value. The = is optional, but both var and
value must be quoted to the shell as necessary so the result is a single word.
Many aspects of texi2any behavior and output may be controlled by customiza-
tion variables, beyond what can be set in the document by @-commands and
with other command line switches. See Section 20.6 [Customization Variables],
page 183.
--split=how
--no-split
When generating Info, by default large output files are split into smaller subfiles,
of approximately 300k bytes. When generating HTML, by default each output
file contains one node (see Chapter 22 [Generating HTML], page 209). --no-
split suppresses this splitting of the output.
Alternatively, --split=how may be used to specify at which level the HTML
output should be split. The possible values for how are:
‘chapter’ The output is split at @chapter and other sectioning @-commands
at this level (@appendix, etc.).
‘section’ The output is split at @section and similar.
‘node’ The output is split at every node. This is the default.
Plain text output can be split similarly to HTML. This may be useful for
extracting sections from a Texinfo document and making them available as
separate files.
--split-size=num
Keep Info files to at most num characters if possible; default is 300,000. (How-
ever, a single node will never be split across Info files.)
--transliterate-file-names
Enable transliteration of 8-bit characters in node names for the purpose of file
name creation. See Section 22.4.4 [HTML Xref 8-bit Character Expansion],
page 216.
-U var Cause var to be undefined. This is equivalent to @clear var in the Texinfo file
(see Section 16.5 [@set @clear @value], page 142).
--verbose
Cause makeinfo to display messages saying what it is doing. Normally,
makeinfo only outputs messages if there are errors or warnings.
--version
-V Print the version number, then exit successfully.
--Xopt str
Pass str (a single shell word) to texi2dvi; may be repeated (see Section 20.4
[texi2any Printed Output], page 181).
Chapter 20: texi2any: The Generic Translator for Texinfo 181
The output format options for this are --dvi, --dvipdf, --pdf, and --ps. See
Section 19.2 [Format with texi2dvi], page 162, for more details on these options and
general texi2dvi operation. In addition, the --verbose, --silent, and --quiet options
are passed on if specified; the -I and -o options are likewise passed on with their
arguments, and --debug without its argument.
The only option remaining that is related to the texi2dvi invocation is --Xopt. Here,
just the argument is passed on and multiple --Xopt options accumulate. This provides a
way to construct an arbitrary command line for texi2dvi. For example, running
texi2any --Xopt -t --Xopt @a4paper --pdf foo.texi
is equivalent to running
texi2dvi -t @a4paper --pdf foo.texi
except for the validity check.
Although one might wish that other options to texi2any would take effect, they don’t.
For example, running ‘texi2any --no-number-sections --dvi foo.texi’ still results in a
DVI file with numbered sections. (Perhaps this could be improved in the future, if requests
are received.)
The actual name of the command that is invoked is specified by the TEXI2DVI customiza-
tion variable (see Section 20.6.4 [Other Customization Variables], page 190). As you might
guess, the default is ‘texi2dvi’.
texi2any itself does not generate any normal output when it invokes texi2dvi, only
diagnostic messages.
Option Variable
--enable-encoding ENABLE_ENCODING
Chapter 20: texi2any: The Generic Translator for Texinfo 184
--document-language documentlanguage
--error-limit ERROR_LIMIT
--fill-column FILLCOLUMN
--footnote-style footnotestyle
--force FORCE
--internal-links INTERNAL_LINKS
--macro-expand MACRO_EXPAND
--headers HEADERS, SHOW_MENU
--no-warn NO_WARN
--no-validate novalidate
--number-footnotes NUMBER_FOOTNOTES
--number-sections NUMBER_SECTIONS
--node-files NODE_FILES
--output OUT, OUTFILE, SUBDIR
--paragraph-indent paragraphindent
--silent SILENT
--split SPLIT
--split-size SPLIT_SIZE
--transliterate-file-names TRANSLITERATE_FILE_NAMES
--verbose VERBOSE
Setting such a customization variable to a value ‘foo’ is essentially the same as specifying
the --opt=foo if the option takes an argument, or --opt if not.
In addition, the customization variable TEXINFO_OUTPUT_FORMAT allows specifying what
makeinfo outputs, either one of the usual output formats that can be specified with options,
or various other forms:
‘docbook’
‘dvi’
‘dvipdf’
‘html’
‘info’
‘pdf’
‘plaintext’
‘ps’
‘xml’ These correspond to the command-line options (and TEXINFO_OUTPUT_FORMAT
environment variable values) of the same name. See Section 20.2 [Invoking
texi2any], page 175.
‘debugtree’
Instead of generating a regular output format, output a text representation of
the tree obtained by parsing the input texinfo document.
‘parse’ Do only Texinfo source parsing; there is no output.
‘plaintexinfo’
Output the Texinfo source with all the macros, @include and @value{} ex-
panded. This is similar to setting --macro-expand, but instead of being output
in addition to the normal conversion, output of Texinfo is the main output.
Chapter 20: texi2any: The Generic Translator for Texinfo 185
‘rawtext’ Output raw text, with minimal formatting. For example, footnotes are ignored
and there is no paragraph filling. This is used by the parser for file names and
copyright text in HTML comments, for example.
‘structure’
Do only Texinfo source parsing and determination of the document structure;
there is no output.
‘texinfosxml’
Output the document in TexinfoSXML representation, a syntax for writing
XML data using Lisp S-expressions.
‘textcontent’
Output the text content only, stripped of commands; this is useful for spell
checking or word counting, for example. The trivial detexinfo script setting
this is in the util directory of the Texinfo source as an example. It’s one line:
exec texi2any -c TEXINPUT_OUTPUT_FORMAT=textcontent "$@"
AVOID_MENU_REDUNDANCY
For HTML. If set, and the menu entry and menu description are the same,
then do not print the menu description; default false.
AFTER_BODY_OPEN
For HTML. If set, the corresponding text will appear at the beginning of each
HTML file; default unset.
AFTER_ABOUT
For HTML, when an About-element is output. If set, the corresponding text
will appear at the end of the About element; default unset.
AFTER_OVERVIEW
AFTER_TOC_LINES
For HTML. If set, the corresponding text is output after the short table of
contents for AFTER_OVERVIEW and after the table of contents for AFTER_TOC_
LINES; otherwise, a default string is used. At the time of writing, a </div>
element is closed.
In general, you should set BEFORE_OVERVIEW if AFTER_OVERVIEW is set, and you
should set BEFORE_TOC_LINES if AFTER_TOC_LINES is set.
BASEFILENAME_LENGTH
For HTML. The maximum length of the base filenames; default 245. Changing
this would make cross-manual references to such long node names invalid (see
Section 22.4.1 [HTML Xref Link Basics], page 212).
Chapter 20: texi2any: The Generic Translator for Texinfo 186
BEFORE_OVERVIEW
BEFORE_TOC_LINES
For HTML. If set, the corresponding text is output before the short table of
contents for BEFORE_OVERVIEW and before the table of contents for BEFORE_
TOC_LINES, otherwise a default string is used. At the time of writing, a <div
...> element is opened.
In general you should set AFTER_OVERVIEW if BEFORE_OVERVIEW is set, and you
should set AFTER_TOC_LINES if BEFORE_TOC_LINES is set.
BIG_RULE For HTML. Rule used after and before the top element and before special
elements, but not for footers and headers; default <hr>.
BODYTEXT For HTML, the text appearing in <body>. By default, sets the HTML lang
attribute to the document language (see Section 15.1 [@documentlanguage],
page 135).
CASE_INSENSITIVE_FILENAMES
For HTML. Construct output file names as if the filesystem were case insensitive
(see Section 22.2 [HTML Splitting], page 210); default false.
CHAPTER_HEADER_LEVEL
For HTML. Header formatting level used for chapter level sectioning com-
mands; default ‘2’.
CHECK_HTMLXREF
For HTML. Check that manuals which are the target of external
cross-references (see Section 6.4.4 [Four and Five Arguments], page 53) are
present in htmlxref.cnf (see Section 22.4.6 [HTML Xref Configuration],
page 217); default false.
COMPLEX_FORMAT_IN_TABLE
For HTML. If set, use tables for indentation of complex formats; default false.
CSS_LINES
For HTML. CSS output, automatically determined by default (see Section 22.3
[HTML CSS], page 211).
DATE_IN_HEADER
For HTML. Put the document generation date in the header; off by default.
DEF_TABLE
For HTML. If set, a <table> construction for @deffn and similar @-commands
is used (looking more like the TEX output), instead of definition lists; default
false.
DEFAULT_RULE
For HTML. Rule used between element, except before and after the top ele-
ment, and before special elements, and for footers and headers; default <hr>.
DO_ABOUT For HTML. If set to 0 never do an About special element; if set to 1 always do
an About special element; default 0.
Chapter 20: texi2any: The Generic Translator for Texinfo 187
EXTERNAL_DIR
For HTML. Base directory for external manuals; default none. It is better to
use the general external cross-reference mechanism (see Section 22.4.6 [HTML
Xref Configuration], page 217) than this variable.
EXTRA_HEAD
For HTML. Additional text appearing within <head>; default unset.
FOOTNOTE_END_HEADER_LEVEL
For HTML. Header formatting level used for the footnotes header with the
‘end’ footnotestyle; default ‘4’. See Section 10.3.2 [Footnote Styles], page 93.
FOOTNOTE_SEPARATE_HEADER_LEVEL
For HTML. Header formatting level used for the footnotes header with the ‘sep-
arate’ footnotestyle; default ‘4’. See Section 10.3.2 [Footnote Styles], page 93.
FRAMES For HTML. If set, a file describing the frame layout is generated, together with
a file with the short table of contents; default false.
FRAMESET_DOCTYPE
For HTML. Same as DOCTYPE, but for the file containing the frame descrip-
tion.
HEADER_IN_TABLE
For HTML. Use tables for header formatting rather than a simple <div> ele-
ment; default false.
ICONS For HTML. Use icons for the navigation panel; default false.
IMAGE_LINK_PREFIX
For HTML. If set, the associated value is prepended to the image file links;
default unset.
INLINE_CONTENTS
For HTML. If set, output the contents where the @contents and
similar @-commands are located; default true. This is ignored if
@set*contentsaftertitlepage is set (see Section 3.5 [Contents], page 24).
INLINE_CSS_STYLE
For HTML. Put CSS directly in HTML elements rather than at the beginning
of the output; default false.
KEEP_TOP_EXTERNAL_REF
For HTML. If set, do not ignore ‘Top’ as the first argument for an external ref
to a manual, as is done by default. See Section 6.5 [Referring to a Manual as a
Whole], page 54.
L2H For HTML. If set, latex2html is used to convert @math and @tex sections;
default false. Best used with --iftex.
L2H_CLEAN
(Relevant only if L2H is set.) If set, the intermediate files generated in relation
with latex2html are removed; default true.
Chapter 20: texi2any: The Generic Translator for Texinfo 188
L2H_FILE (Relevant only if L2H is set.) If set, the given file is used as latex2html’s init
file; default unset.
L2H_HTML_VERSION
(Relevant only if L2H is set.) The HTML version used in the latex2html call;
default unset.
L2H_L2H (Relevant only if L2H is set.) The program invoked as latex2html; default is
latex2html.
L2H_SKIP (Relevant only if L2H is set.) If set to a true value, the actual call to latex2html
is skipped; previously generated content is reused instead. If set to 0, the cache
is not used at all. If set to ‘undef’, the cache is used for as many TEX fragments
as possible and for any remaining the command is run. The default is ‘undef’.
L2H_TMP (Relevant only if L2H is set.) Set the directory used for temporary files. None of
the file name components in this directory name may start with ‘.’; otherwise,
latex2html will fail (because of dvips). The default is the empty string, which
means the current directory.
MAX_HEADER_LEVEL
For HTML. Maximum header formatting level used (higher header formatting
level numbers correspond to lower sectioning levels); default ‘4’.
MENU_SYMBOL
For HTML. Symbol used in front of menu entries when node names are used
for menu entries formatting; default ‘•’.
MONOLITHIC
For HTML. Output only one file including the table of contents. Set by default,
but only relevant when the output is not split.
NO_CSS For HTML. Do not use CSS; default false. See Section 22.3 [HTML CSS],
page 211.
NODE_FILE_EXTENSION
For HTML. Extension for node files if NODE_FILENAMES is set; default ‘html’.
PRE_ABOUT
For HTML, when an About element is output. If set to a text string, this text
will appear at the beginning of the About element. If set to a reference on a
subroutine, the result of the subroutine call will appear at the beginning of the
About element. If not set (the default), default text is used.
PRE_BODY_CLOSE
For HTML. If set, the given text will appear at the footer of each HTML file;
default unset.
PROGRAM_NAME_IN_FOOTER
For HTML. If set, output the program name and miscellaneous related infor-
mation in the page footers; default false.
SECTION_NAME_IN_TITLE
For HTML. If set, when output is split, use the argument of the chapter
structuring command (e.g., @chapter or @section) in the <title> instead of
the argument to @node.
Chapter 20: texi2any: The Generic Translator for Texinfo 189
SHORTEXTN
For HTML. If set, use ‘.htm’ as extension; default false.
SHOW_TITLE
For HTML. If set, output the title at the beginning of the document; default
true.
SIMPLE_MENU
For HTML. If set, use a simple preformatted style for the menu, instead of
breaking down the different parts of the menu; default false. See Section 4.9.4
[Menu Parts], page 40.
TOC_LINKS
For HTML. If set, links from headings to toc entries are created; default false.
TOP_FILE This file name may be used for the top-level file. The extension is set appropri-
ately, if necessary. This is used to override the default, and is, in general, only
taken into account when output is split, and for HTML.
TOP_NODE_FILE
For HTML. File name used for the Top node, if NODE_FILENAMES is set; default
is index.
TOP_NODE_FILE_TARGET
For HTML. File name used for the Top node in cross-references; default is
index.
TOP_NODE_UP_URL
For HTML. A url used for (dir) references; the default is undef, meaning that
the normal rules apply, typically leading to a link to ‘dir.html’ from an implicit
or explicit reference to ‘(dir)’ (see Section 22.4 [HTML Xref], page 212). For
more about the Top node pointers, see Section 4.5 [First Node], page 35. For
overriding the Up pointer in other formats, see TOP_NODE_UP in Section 20.6.4
[Other Customization Variables], page 190.
USE_ACCESSKEY
For HTML. Use accesskey in cross-references; default true.
USE_ISO For HTML. Use entities for doubled single-quote characters (see Section 12.5
[Inserting Quotation Marks], page 108), and ‘---’ and ‘--’ (see Section 2.1
[Conventions], page 10); default true.
USE_LINKS
For HTML. Generate <link> elements in the HTML <head> output; default
true.
USE_REL_REV
For HTML. Use rel in cross-references; default true.
VERTICAL_HEAD_NAVIGATION
For HTML. If set, a vertical navigation panel is used; default false.
WORDS_IN_PAGE
For HTML, with output split at nodes. Specifies the approximate minimum
page length at which a navigation panel is placed at the bottom of a page. To
Chapter 20: texi2any: The Generic Translator for Texinfo 190
avoid ever having the navigation buttons at the bottom of a page, set this to a
sufficiently large number. The default is 300.
XREF_USE_FLOAT_LABEL
For HTML. If set, for the float name in cross-references, use the float label
instead of the type followed by the float number (see Section 10.1.1 [@float],
page 88). The default is off.
XREF_USE_NODE_NAME_ARG
For HTML. Only relevant for cross-reference commands with no cross reference
name (second argument). If set to 1, use the node name (first) argument in
cross-reference @-commands for the text displayed as the hyperlink. If set to 0,
use the node name if USE_NODES is set, otherwise the section name. If set to
‘undef’, use the first argument in preformatted environments, otherwise use the
node name or section name depending on USE_NODES. The default is ‘undef’.
SPLIT. See Section 22.4 [HTML Xref], page 212, and see Section 22.4.6 [HTML
Xref Configuration], page 217.
EXTENSION
The extension added to the output file name. The default is different for each
output format.
IGNORE_BEFORE_SETFILENAME
If set, begin outputting at @setfilename, if @setfilename is present; default
true.
IGNORE_SPACE_AFTER_BRACED_COMMAND_NAME
If set, spaces are ignored after an @-command that takes braces. Default true,
matching the TEX behavior.
INDEX_ENTRY_COLON
Symbol used between the index entry and the associated node or section; default
‘:’.
INDEX_SPECIAL_CHARS_WARNING
If set, warn about ‘:’ in index entry, as it leads to invalid entries in index menus
in output Info files. For Info and plaintext only.
INFO_SPECIAL_CHARS_QUOTE
If set, whenever there are problematic characters for Info output in places such
as node names or menu items, surround the part of the construct where they
appear with quoting characters, as described in Appendix G [Info Format Spec-
ification], page 280. See Section 4.4 [Node Line Requirements], page 33.
INFO_SPECIAL_CHARS_WARNING
If set, warn about problematic constructs for Info output (such as the string
‘::’) in node names, menu items, and cross-references; default true. Do not
warn about index entries, since parsing problems there don’t prevent navigation;
readers can still relatively easily find their way to the node in question.
INPUT_ENCODING_NAME
Normalized encoding name suitable for output. Should be a usable charset
name in HTML, typically one of the preferred IANA encoding names. You
should not need to use this variable, since it is set by @documentencoding (see
Section 15.2 [@documentencoding], page 136).
INPUT_PERL_ENCODING
Perl encoding used to process the Texinfo source. You should not need to
use that variable, since it is set by @documentencoding (see Section 15.2
[@documentencoding], page 136).
MAX_MACRO_CALL_NESTING
The maximal number of recursive calls of @-commands defined through
@rmacro; default 100000. The purpose of this variable is to avoid infinite
recursions.
MENU_ENTRY_COLON
Symbol used between the menu entry and the description; default empty.
Chapter 20: texi2any: The Generic Translator for Texinfo 192
NO_USE_SETFILENAME
If set, do not use @setfilename to set the document name; instead, base the
output document name only on the input file name. The default is false.
NODE_FILENAMES
If set, node names are used to construct file names. By default, it is set if the
output is split by node, or if NODE_FILES is set and the output is split in any
way.
NODE_NAME_IN_INDEX
If set, use node names in index entries, otherwise prefer section names; default
true.
NODE_NAME_IN_MENU
If set, use node names in menu entries, otherwise prefer section names; default
true.
OPEN_QUOTE_SYMBOL
When an opening quote is needed, e.g., for ‘@samp’ output, use the specified
character; default ‘ for HTML, ‘ for Docbook. For Info,
the default depends on the enabled document encoding (see Section 15.2
[@documentencoding], page 136); if no document encoding is set, or the
encoding is US-ASCII, etc., ‘'’ is used. This character usually appears as
an undirected single quote on modern systems. If the document encoding is
Unicode, the Info output uses a Unicode left quote.
OUTPUT_ENCODING_NAME
Normalized encoding name used for output files. Should be a usable charset
name in HTML, typically one of the preferred IANA encoding names. By
default, if an input encoding is set (typically through @documentencoding or
INPUT_ENCODING_NAME), this information is used to set the output encoding
name. If no input encoding is specified, the default output encoding name
may be set by the output format. In particular, the XML-based formats use
utf-8 for OUTPUT_ENCODING_NAME if the encoding is not otherwise specified.
See Section 15.2 [@documentencoding], page 136.
OVERVIEW_LINK_TO_TOC
If set, the cross-references in the Overview link to the corresponding Table of
Contents entries; default true.
PACKAGE
PACKAGE_VERSION
PACKAGE_AND_VERSION
PACKAGE_URL
PACKAGE_NAME
The implementation’s short package name, package version, package name and
version concatenated, package url, and full package name, respectively. By de-
fault, these variables are all set through Autoconf, Automake, and configure.
PREFIX The output file prefix, which is prepended to some output file names. By
default it is set by @setfilename or from the input file (see Section 3.2.3
Chapter 20: texi2any: The Generic Translator for Texinfo 193
[@setfilename], page 17). How this value is used depends on the value of
other customization variables or command line options, such as whether the
output is split and NODE_FILENAMES. The default is unset.
PROGRAM Name of the program used. By default, it is set to the name of the program
launched, with a trailing ‘.pl’ removed.
RENAMED_NODES_FILE
If set, use the value for the renamed nodes description file. If not set, the
file is doc_basename-noderename.cnf. See Section 22.4.7 [HTML Xref Link
Preservation], page 218.
RENAMED_NODES_REDIRECTIONS
If set, create redirection files for renamed nodes. Set by default when generating
HTML.
SHOW_MENU
If set, Texinfo menus are output. By default, it is set unless generating Docbook
or if --no-headers is specified.
SORT_ELEMENT_COUNT
If set, the name of a file to which a list of elements (nodes or sections, de-
pending on the output format) is dumped, sorted by the number of lines they
contain after removal of @-commands; default unset. This is used by the pro-
gram texi-elements-by-size in the util/ directory of the Texinfo source
distribution (see [texi-elements-by-size], page 248).
SORT_ELEMENT_COUNT_WORDS
When dumping the elements-by-size file (see preceding item), use word counts
instead of line counts; default false.
TEST If set to true, some variables which are normally dynamically generated anew
for each run (date, program name, version) are set to fixed and given values.
This is useful to compare the output to a reference file, as is done for the tests.
The default is false.
TEXI2DVI Name of the command used to produce PostScript, PDF, and DVI; default
‘texi2dvi’. See Section 20.4 [texi2any Printed Output], page 181.
TEXI2HTML
Generate HTML and try to be as compatible as possible with texi2html; de-
fault false.
TEXINFO_DTD_VERSION
For XML. Version of the DTD used in the XML output preamble. The default
is set based on a variable in configure.ac.
TEXTCONTENT_COMMENT
For stripped text content output (i.e., when TEXINFO_OUTPUT_FORMAT is set to
textcontent). If set, also output comments. Default false.
TOP_NODE_UP
Up node for the Top node; default ‘(dir)’. For overriding the url in HTML out-
put, see TOP_NODE_UP_URL in Section 20.6.3 [HTML Customization Variables],
page 185.
Chapter 20: texi2any: The Generic Translator for Texinfo 194
TREE_TRANSFORMATIONS
The associated value is a comma separated list of transformations that can be
applied to the Texinfo tree prior to outputting the result. If more than one
is specified, the ordering is irrelevant; each is always applied at the necessary
point during processing.
The only one executed by default is ‘move_index_entries_after_items’ for
HTML and Docbook output. Here’s an example of updating the master menu
in a document:
makeinfo \
-c TREE_TRANSFORMATIONS=regenerate_master_menu \
-c PLAINTEXINFO=1 \
mydoc.texi \
-o /tmp/out
(Caveat: Since PLAINTEXINFO output does expand Texinfo macros and con-
ditionals, it’s necessary to remove any such differences before installing the
updates in the original document. This will be remedied in a future release.)
The following transformations are currently supported (many are used in the
pod2texi utility distributed with Texinfo; see Section 20.8 [Invoking pod2texi],
page 196):
‘complete_tree_nodes_menus’
Add menu entries or whole menus for nodes associated with sections
of any level, based on the sectioning tree.
‘fill_gaps_in_sectioning’
Adds empty @unnumbered... sections in a tree to fill gaps in sec-
tioning. For example, an @unnumberedsec will be inserted if a
@chapter is followed by a @subsection.
‘insert_nodes_for_sectioning_commands’
Insert nodes for sectioning commands lacking a corresponding node.
‘move_index_entries_after_items’
In @enumerate and @itemize, move index entries appearing just
before an @item to just after the @item. Comment lines between
index entries are moved too. As mentioned, this is always done for
HTML and Docbook output.
‘regenerate_master_menu’
Update the Top node master menu, either replacing the (first)
@detailmenu in the Top node menu, or creating it at the end of
the Top node menu.
‘simple_menu’
Mostly the same as SIMPLE_MENU: use a simple preformatted style
for the menu. It differs from setting SIMPLE_MENU in that SIMPLE_
MENU only has an effect in HTML output.
Chapter 20: texi2any: The Generic Translator for Texinfo 195
USE_NODES
Preferentially use nodes to decide where elements are separated. If set to false,
preferentially use sectioning to decide where elements are separated. The de-
fault is true.
USE_NODE_TARGET
If set, use the node associated with a section for the section target in cross-
references; default true.
USE_NUMERIC_ENTITY
For HTML and XML. If set, use numeric entities instead of ASCII characters
when there is no named entity. By default, set to true for HTML.
USE_UP_NODE_FOR_ELEMENT_UP
Fill in up sectioning direction with node direction when there is no sectioning
up direction. In practice this can only happen when there is no @top section.
Not set by default.
USE_SETFILENAME_EXTENSION
Default is on for Info, off for other output. If set, use exactly what
@setfilename gives for the output file name, including the extension. You
should not need to explicitly set this variable.
USE_TITLEPAGE_FOR_TITLE
Use the full @titlepage as the title, not a simple title string; default false.
USE_UNIDECODE
If set to false, do not use the Text::Unidecode Perl module to transliterate
more characters; default true.
These Perl-style brace format strings are used for two reasons: first, changing the order
of printf arguments is only available since Perl 5.8.0; second, and more importantly, the
order of arguments is unpredictable, since @-command expansion may lead to different
orders depending on the output format.
The expansion of a translation string is done like this:
1. First, the string is translated. The locale is @documentlanguage.@documentencoding.
If the @documentlanguage has the form ‘ll_CC’, that is tried first, and then just ‘ll’.
If that does not exist, and the encoding is not us-ascii, then us-ascii is tried.
The idea is that if there is a us-ascii encoding, it means that all the characters in the
charset may be expressed as @-commands. For example, there is a fr.us-ascii locale
that can accommodate any encoding, since all the Latin 1 characters have associated
@-commands. On the other hand, Japanese has only a translation ja.utf-8, since
there are no @-commands for Japanese characters.
2. Next, the string is expanded as Texinfo, and converted. The arguments are substituted;
for example, ‘{arg_name}’ is replaced by the corresponding actual argument.
In the following example, ‘{date}’, ‘{program_homepage}’ and ‘{program}’ are the
arguments of the string. Since they are used in @uref, their order is not predictable.
‘{date}’, ‘{program_homepage}’ and ‘{program}’ are substituted after the expansion:
Generated on @emph{{date}} using
@uref{{program_homepage}, @emph{{program}}}.
This approach is admittedly a bit complicated. Its usefulness is that it supports hav-
ing translations available in different encodings for encodings which can be covered by
@-commands, and also specifying how the formatting for some commands is done, indepen-
dently of the output format—yet still be language-dependent. For example, the ‘@pxref’
translation string can be like this:
see {node_file_href} section `{section}\' in @cite{{book}}
which allows for specifying a string independently of the output format, while nevertheless
with rich formatting it may be translated appropriately in many languages.
--toc-file TOC_FILE
--frames FRAMES
--menu SHOW_MENU
--debug DEBUG
--doctype DOCTYPE
--frameset-doctype FRAMESET_DOCTYPE
--test TEST
Finally, any texi2html users seeking more detailed information can check the draft file
doc/texi2oldapi.texi in the Texinfo source repository. It consists mainly of very rough
notes, but may still be useful to some.
199
(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. See Section 19.6 [Texinfo Mode Printing], page 167.)
You can specify options for makeinfo by setting the makeinfo-options variable with
either the M-x customize 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 [makeinfo Options], page 175, as well as “Easy Customization
Interface,” “Examining and Setting Variables,” and “Init File” in The GNU Emacs Manual.
Here is a shell command to format all the files that end in .texinfo in the current
directory:
Emacs processes all the files listed on the command line, even if an error occurs while
attempting to format some of them.
Run batch-texinfo-format only with Emacs in batch mode as shown; it is not inter-
active. It kills the batch mode Emacs on completion.
In addition, if the Texinfo file contains more than about 300,000 bytes, texinfo-format-
buffer and makeinfo split the large Info file into shorter indirect subfiles of about 300,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. See Chapter 18 [Include Files], page 158, 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 the file
test-texinfo and that file looked like this:
Chapter 21: Creating and Installing Info Files 202
^_
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 any permissions text in the first 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 of the
(unsplit) output.
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 Section F.6.1 [Using Info-validate],
page 278.
* 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. See Section 4.9.6 [Nodes in Other Info Files],
page 41.)
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
In this case, the dir file name is written in uppercase letters—it can be written in either
upper- or lowercase. This is not true in general, it is a special case for dir.
This variable tells Emacs where to look for dir files (the files must be named dir).
Emacs merges the files named dir from each of the listed directories. (In Emacs version
18, you can set the Info-directory variable to the name of only one directory.)
For example, to reach a test file in the /home/bob/info directory, you could add an
entry like this to the menu in the standard dir file:
* Test: (/home/bob/info/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.
If you don’t want to edit the system dir file, you can tell Info where to look by setting
the INFOPATH environment variable in your shell startup file. This works with both the
Emacs and standalone Info readers.
Specifically, if you use a Bourne-compatible shell such as sh or bash for your shell com-
mand interpreter, you set the INFOPATH environment variable in the .profile initialization
file; but if you use csh or tcsh, you set the variable in the .cshrc initialization file. On
MS-DOS/MS-Windows systems, you must set INFOPATH in your autoexec.bat file or in
the registry. Each type of shell uses a different syntax.
• In a .cshrc file, you could set the INFOPATH variable as follows:
setenv INFOPATH .:~/info:/usr/local/emacs/info
• In a .profile file, you would achieve the same effect by writing:
INFOPATH=.:$HOME/info:/usr/local/emacs/info
export INFOPATH
• In a autoexec.bat file, you write this command (note the use of ‘;’ as the directory
separator, and a different syntax for using values of other environment variables):
set INFOPATH=.;%HOME%/info;c:/usr/local/emacs/info
The ‘.’ indicates the current directory as usual. Emacs uses the INFOPATH environment vari-
able to initialize the value of Emacs’s own Info-directory-list variable. The standalone
Info reader merges any files named dir in any directory listed in the INFOPATH variable into
a single menu presented to you in the node called ‘(dir)Top’.
However you set INFOPATH, if its last character is a colon (on MS-DOS/MS-Windows
systems, use a semicolon instead), this is replaced by the default (compiled-in) path. This
gives you a way to augment the default path with new directories without having to list all
the standard places. For example (using sh syntax):
INFOPATH=/home/bob/info:
export INFOPATH
will search /home/bob/info first, then the standard directories. Leading or doubled colons
are not treated specially.
When you create your own dir file for use with Info-directory-list or INFOPATH, it’s
easiest to start by copying an existing dir file and replace all the text after the ‘* Menu:’
with your desired entries. That way, the punctuation and special CTRL-_ characters that
Info needs will be present.
As one final alternative, which works only with Emacs Info, you can change the
Info-directory-list variable. For example:
(add-hook 'Info-mode-hook '(lambda ()
Chapter 21: Creating and Installing Info Files 205
(add-to-list 'Info-directory-list
(expand-file-name "~/info"))))
Localization
Printing
Software development
Software libraries
Text creation and manipulation
Each ‘Invoking’ node for every program installed should have a corresponding
@direntry. This lets users easily find the documentation for the different programs they
can run, as with the traditional man system.
--delete Delete the entries in info-file from dir-file. The file name in the entry in dir-file
must be info-file (except for an optional ‘.info’ in either one). Don’t insert any
new entries. Any empty sections that result from the removal are also removed.
--description=text
Specify the explanatory portion of the menu entry. If you don’t specify a
description (either via ‘--entry’, ‘--item’ or this option), the description is
taken from the Info file itself.
--dir-file=name
Specify file name of the Info directory file. This is equivalent to using the dir-file
argument.
--dry-run
Same as ‘--test’.
--entry=text
Insert text as an Info directory entry; text should have the form of an Info menu
item line plus zero or more extra lines starting with whitespace. If you specify
more than one entry, they are all added. If you don’t specify any entries, they
are determined from information in the Info file itself.
--help Display a usage message with basic usage and all available options, then exit
successfully.
--info-file=file
Specify Info file to install in the directory. This is equivalent to using the
info-file argument.
--info-dir=dir
Specify the directory where the directory file dir resides. Equivalent to
‘--dir-file=dir/dir’.
--infodir=dir
Same as ‘--info-dir’.
--item=text
Same as ‘--entry=text’. An Info directory entry is actually a menu item.
--keep-old
Do not replace pre-existing menu entries. When ‘--remove’ is specified, this
option means that empty sections are not removed.
--max-width=column
Specifies the column that the menu entry’s description will be word-wrapped
at. column starts counting at 1.
--maxwidth=column
Same as ‘--max-width’.
--menuentry=text
Same as ‘--name’.
--name=text
Specify the name portion of the menu entry. If the text does not start with an
asterisk ‘*’, it is presumed to be the text after the ‘*’ and before the parentheses
208
that specify the Info file. Otherwise text is taken verbatim, and is taken as
defining the text up to and including the first period (a space is appended if
necessary). If you don’t specify the name (either via ‘--entry’, ‘--item’ or
this option), it is taken from the Info file itself. If the Info does not contain the
name, the basename of the Info file is used.
--no-indent
Suppress formatting of new entries into the dir file.
--quiet
--silent Suppress warnings, etc., for silent operation.
--remove Same as ‘--delete’.
--remove-exactly
Also like ‘--delete’, but only entries if the Info file name matches exactly;
.info and/or .gz suffixes are not ignored.
--section=sec
Put this file’s entries in section sec of the directory. If you specify more than one
section, all the entries are added in each of the sections. If you don’t specify any
sections, they are determined from information in the Info file itself. If the Info
file doesn’t specify a section, the menu entries are put into the Miscellaneous
section.
--section regex sec
Same as ‘--regex=regex --section=sec --add-once’.
install-info tries to detect when this alternate syntax is used, but does not
always guess correctly. Here is the heuristic that install-info uses:
1. If the second argument to --section starts with a hyphen, the original
syntax is presumed.
2. If the second argument to --section is a file that can be opened, the
original syntax is presumed.
3. Otherwise the alternate syntax is used.
When the heuristic fails because your section title starts with a hyphen, or it
happens to be a filename that can be opened, the syntax should be changed to
‘--regex=regex --section=sec --add-once’.
--regex=regex
Put this file’s entries into any section that matches regex. If more than one
section matches, all of the entries are added in each of the sections. Specify
regex using basic regular expression syntax, more or less as used with grep, for
example.
--test Suppress updating of the directory file.
--version
Display version information and exit successfully.
209
22 Generating HTML
makeinfo generates Info output by default, but given the --html option, it will generate
HTML, for web browsers and other programs. This chapter gives some details on such
HTML output.
makeinfo has many user-definable customization variables with which you can influence
the HTML output. See Section 20.6 [Customization Variables], page 183.
makeinfo can also produce output in XML and Docbook formats, but we do not as yet
describe these in detail. See Section 1.2 [Output Formats], page 4, for a brief overview of
all the output formats.
CSS is included. If you need to override makeinfo’s defaults from an ‘@import’, you
can do so with the ‘! important’ CSS construct, as in:
pre.smallexample { font-size: inherit ! important }
• If file contains both ‘@import’ and inline CSS specifications, the ‘@import’’s are in-
cluded first, then makeinfo’s defaults, and lastly the inline CSS from file.
• Any @-directive other than ‘@import’ and ‘@charset’ is treated as a CSS declaration,
meaning makeinfo includes its default CSS and then the rest of the file.
⇒ <a href="emacs/index.html#Top">
1. The standard ASCII letters (a-z and A-Z) are not modified. All other characters may
be changed as specified below.
2. The standard ASCII numbers (0-9) are not modified except when a number is the first
character of the node name. In that case, see below.
3. Multiple consecutive space, tab and newline characters are transformed into just one
space. (It’s not possible to have newlines in node names with the current implementa-
tion, but we specify it anyway, just in case.)
4. Leading and trailing spaces are removed.
5. After the above has been applied, each remaining space character is converted into a
‘-’ character.
6. Other ASCII 7-bit characters are transformed into ‘_00xx’, where xx is the ASCII
character code in (lowercase) hexadecimal. This includes ‘_’, which is mapped to
‘_005f’.
7. If the node name does not begin with a letter, the literal string ‘g_t’ is prefixed to the
result. (Due to the rules above, that string can never occur otherwise; it is an arbitrary
choice, standing for “GNU Texinfo”.) This is necessary because XHTML requires that
identifiers begin with a letter.
For example:
@node A node --- with _'%
⇒ A-node-_002d_002d_002d-with-_005f_0027_0025
Example translations of common characters:
• ‘_’ ⇒ ‘_005f’
• ‘-’ ⇒ ‘_002d’
• ‘A node’ ⇒ ‘A-node’
On case-folding computer systems, nodes differing only by case will be mapped to the
same file. In particular, as mentioned above, Top always maps to the file index.html.
Thus, on a case-folding system, Top and a node named ‘Index’ will both be written to
index.html. Fortunately, the targets serve to distinguish these cases, since HTML target
names are always case-sensitive, independent of operating system.
@t @U @var @verb @w
For @sc, any letters are capitalized.
In addition, the following commands are replaced by constant text, as shown below. If
any of these commands have non-empty arguments, as in @TeX{bad}, it is an error, and
the result is unspecified. In this table, ‘(space)’ means a space character and ‘(nothing)’
means the empty string. The notation ‘U+hhhh’ means Unicode code point hhhh (in hex,
as usual).
There are further transformations of many of these expansions to yield the final file or
other target name, such as space characters to ‘-’, etc., according to the other rules.
@(newline) (space)
@(space) (space)
@(tab) (space)
@! ‘!’
@* (space)
@- (nothing)
@. ‘.’
@: (nothing)
@? ‘?’
@@ ‘@’
@{ ‘{’
@} ‘}’
@LaTeX ‘LaTeX’
@TeX ‘TeX’
@arrow U+2192
@bullet U+2022
@comma ‘,’
@copyright U+00A9
@dots U+2026
@enddots ‘...’
@equiv U+2261
@error ‘error-->’
@euro U+20AC
@exclamdown U+00A1
@expansion U+21A6
@geq U+2265
@leq U+2264
@minus U+2212
@ordf U+00AA
@ordm U+00BA
@point U+2605
@pounds U+00A3
@print U+22A3
@questiondown U+00BF
@registeredsymbol U+00AE
@result U+21D2
@textdegree U+00B0
Chapter 22: Generating HTML 216
@tie (space)
Quotation mark @-commands (@quotedblright{} and the like), are likewise replaced
by their Unicode values. Normal quotation characters (e.g., ASCII ‘ and ’) are not altered.
See Section 12.5 [Inserting Quotation Marks], page 108.
Any @acronym, @abbr, @email, and @image commands are replaced by their first argu-
ment. (For these commands, all subsequent arguments are optional, and ignored here.) See
Section 7.1.14 [@acronym], page 67, and Section 7.1.16 [@email], page 68, and Section 10.2
[Images], page 90.
Accents are handled according to the next section.
Any other command is an error, and the result is unspecified.
split or monolithic form—and, inevitably, it might guess wrong. However, when the referent
manual is generated, it is possible to handle at least some mismatches.
In the case where we assume the referent is split, but it is actually available in mono,
the only recourse would be to generate a manual/ subdirectory full of HTML files which
redirect back to the monolithic manual.html. Since this is essentially the same as a split
manual in the first place, it’s not very appealing.
On the other hand, in the case where we assume the referent is mono, but it is actually
available in split, it is possible to use JavaScript to redirect from the putatively monolithic
manual.html to the different manual/node.html files. Here’s an example:
function redirect() {
switch (location.hash) {
case "#Node1":
location.replace("manual/Node1.html#Node1"); break;
case "#Node2" :
location.replace("manual/Node2.html#Node2"); break;
...
default:;
}
}
Then, in the <body> tag of manual.html:
<body onLoad="redirect();">
Once again, this is something the software which generated the referent manual has to
do in advance, it’s not something the software generating the cross-reference in the present
manual can control.
The file is line-oriented. Lines consisting only of whitespace are ignored. Comments are
indicated with a ‘#’ at the beginning of a line, optionally preceded by whitespace. Since ‘#’
can occur in urls (like almost any character), it does not otherwise start a comment.
Each non-blank non-comment line must be either a variable assignment or manual in-
formation.
A variable assignment line looks like this:
varname = varvalue
Whitespace around the ‘=’ is optional and ignored. The varname should consist of
letters; case is significant. The varvalue is an arbitrary string, continuing to the end of the
line. Variables are then referenced with ‘${varname}’; variable references can occur in the
varvalue.
A manual information line looks like this:
manual keyword urlprefix
with manual the short identifier for a manual, keyword being one of: mono, node, section,
chapter, and urlprefix described below. Variable references can occur only in the urlprefix.
For example (used in the canonical htmlxref.cnf):
G = http://www.gnu.org
GS = ${G}/software
hello mono ${GS}/hello/manual/hello.html
hello chapter ${GS}/hello/manual/html_chapter/
hello section ${GS}/hello/manual/html_section/
hello node ${GS}/hello/manual/html_node/
If the keyword is mono, urlprefix gives the host, directory, and file name for manual as
one monolithic file.
If the keyword is node, section, or chapter, urlprefix gives the host and directory for
manual split into nodes, sections, or chapters, respectively.
When available, makeinfo will use the “corresponding” value for cross-references between
manuals. That is, when generating monolithic output (--no-split), the mono url will be
used, when generating output that is split by node, the node url will be used, etc. However,
if a manual is not available in that form, anything that is available can be used. Here is the
search order for each style:
node ⇒ node, section, chapter, mono
section ⇒ section, chapter, node, mono
chapter ⇒ chapter, section, node, mono
mono ⇒ mono, chapter, section, node
These section- and chapter-level cross-manual references can succeed only when the
target manual was created using --node-files; this is the default for split output.
If you have additions or corrections to the htmlxref.cnf distributed with Texinfo,
please email [email protected] as usual. You can get the latest version from http://
ftpmirror.gnu.org/texinfo/htmlxref.cnf.
exist anywhere to such a removed node (renaming appears the same as removal for this
purpose), and it’s not ideal for those links to simply break.
The preferred approach to preserving links to deleted or renamed nodes is to use anchors
(see Section 6.8 [@anchor], page 56), as this works with all output formats, including Info.
However, Texinfo provides an alternative method to do this for HTML output via a separate
file which specifes old node names and the new nodes to which the old names should be
redirected. This method is deprecated, and support for these files will be removed in future
Texinfo releases. It is specific to HTML and supporting @-commands in node names in
these files in practice complicates the implementation in texi2any.
The renamed nodes file is named manual-noderename.cnf, where manual is the base
name of the manual. For example, the manual texinfo.texi would be supplemented by
a file texinfo-noderename.cnf. (This name can be overridden by setting the RENAMED_
NODES_FILE customization variable; see Section 20.6 [Customization Variables], page 183).
The file is read in pairs of lines, as follows:
old-node-name
@@{} new-node-name
The usual conversion from Texinfo node names to HTML names is applied; see this
entire section for details (see Section 22.4 [HTML Xref], page 212). The unusual ‘@@{}’
separator is used because it is not a valid Texinfo construct, so can’t appear in the node
names.
The effect is that makeinfo generates a redirect from old-node-name to new-node-name
when producing HTML output. Thus, external links to the old node are preserved.
Lines consisting only of whitespace are ignored. Comments are indicated with a ‘@c’ at
the beginning of a line, optionally preceded by whitespace.
220
Thus, the alphabetic commands fall into classes that have different argument syntaxes.
You cannot tell to which class a command belongs by the appearance of its name, but you
can tell by the command’s meaning: if the command stands for a glyph, it is in class 4 and
does not require an argument; if it makes sense to use the command among other text as
part of a paragraph, the command is in class 1 and must be followed by an argument in
braces. The non-alphabetic commands, such as @:, are exceptions to the rule; they do not
need braces.
The purpose of having different syntax for commands is to make Texinfo files easier to
read, and also to help the GNU Emacs paragraph and filling commands work properly.
@@
@atchar{}
Insert an at sign, ‘@’. See Section 12.1.1 [Inserting an Atsign], page 101.
@\
@backslashchar{}
Insert a backslash, ‘\’; @backslashchar{} works anywhere, while @\ works
only inside @math. See Section 12.1.4 [Inserting a Backslash], page 102, and
Section 12.7 [Inserting Math], page 110.
@^
@` Generate a circumflex (hat) or grave accent, respectively, over the next charac-
o and è. See Section 12.4 [Inserting Accents], page 107.
ter, as in ^
@{
@lbracechar{}
Insert a left brace, ‘{’. See Section 12.1.2 [Inserting Braces], page 101.
@}
@rbracechar{}
Insert a right brace, ‘}’. See Section 12.1.2 [Inserting Braces], page 101.
@~ Generate a tilde accent over the next character, as in N. ~ See Section 12.4
[Inserting Accents], page 107.
@AA{}
@aa{} Generate the uppercase and lowercase Scandinavian A-ring letters, respectively:
Å, å. See Section 12.4 [Inserting Accents], page 107.
@abbr{abbreviation}
Indicate a general abbreviation, such as ‘Comput.’. See Section 7.1.13 [@abbr],
page 67.
@acronym{acronym}
Indicate an acronym in all capital letters, such as ‘NASA’. See Section 7.1.14
[@acronym], page 67.
@AE{}
@ae{} Generate the uppercase and lowercase AE ligatures, respectively: Æ, æ. See
Section 12.4 [Inserting Accents], page 107.
@afivepaper
Change page dimensions for the A5 paper size. See Section 19.12 [A4 Paper],
page 171.
@afourlatex
@afourpaper
@afourwide
Change page dimensions for the A4 paper size. See Section 19.12 [A4 Paper],
page 171.
@alias new=existing
Make the command ‘@new’ a synonym for the existing command ‘@existing’.
See Section 17.4 [@alias], page 153.
Appendix A: @-Command Details 223
@allowcodebreaks true-false
Control breaking at ‘-’ and ‘_’ in TEX. See Section 13.4 [@allowcodebreaks],
page 119.
@anchor{name}
Define name as the current location for use as a cross-reference target. See
Section 6.8 [@anchor], page 56.
@appendix title
Begin an appendix. The title appears in the table of contents. In Info, the
title is underlined with asterisks. See Section 5.4 [@unnumbered @appendix],
page 44.
@appendixsec title
@appendixsection title
Begin an appendix section within an appendix. The section title appears
in the table of contents. In Info, the title is underlined with equal signs.
@appendixsection is a longer spelling of the @appendixsec command. See
Section 5.7 [@unnumberedsec @appendixsec @heading], page 45.
@appendixsubsec title
Begin an appendix subsection. The title appears in the table of contents. In
Info, the title is underlined with hyphens. See Section 5.9 [@unnumberedsubsec
@appendixsubsec @subheading], page 45.
@appendixsubsubsec title
Begin an appendix subsubsection. The title appears in the table of contents. In
Info, the title is underlined with periods. See Section 5.10 [@subsubsection],
page 46.
@arrow{} Generate a right arrow glyph: ‘→’. Used by default for @click. See
Section 12.9.8 [Click Sequences], page 116.
@asis Used following @table, @ftable, and @vtable to print the table’s first column
without highlighting (“as is”). See [@asis], page 84.
@author author
Typeset author flushleft and underline it. See Section 3.4.3 [@title @subtitle
@author], page 22.
@b{text} Set text in a bold font. No effect in Info. See Section 7.2.3 [Fonts], page 69.
@bullet{}
Generate a large round dot, • (‘*’ in Info). Often used with @table. See
Section 12.8.5 [@bullet], page 112.
@bye Stop formatting a file. The formatters do not see anything in the input file
following @bye. See Section 3.8 [Ending a File], page 30.
@c comment
Begin a comment in Texinfo. The rest of the line does not appear in any
output. A synonym for @comment. DEL also starts a comment. See Section 2.2
[Comments], page 11.
Appendix A: @-Command Details 224
@caption Define the full caption for a @float. See Section 10.1.2 [@caption
@shortcaption], page 89.
@cartouche
Highlight an example or quotation by drawing a box with rounded corners
around it. Pair with @end cartouche. No effect in Info. See Section 8.14
[@cartouche], page 78.
@center line-of-text
Center the line of text following the command. See Section 3.4.2 [@titlefont
@center @sp], page 21.
@centerchap line-of-text
Like @chapter, but centers the chapter title. See Section 5.3 [@chapter],
page 43.
@chapheading title
Print an unnumbered chapter-like heading, but omit from the table of contents.
In Info, the title is underlined with asterisks. See Section 5.5 [@majorheading
@chapheading], page 44.
@chapter title
Begin a numbered chapter. The chapter title appears in the table of contents. In
Info, the title is underlined with asterisks. See Section 5.3 [@chapter], page 43.
@cindex entry
Add entry to the index of concepts. See Section 11.3 [Defining the Entries of
an Index], page 96.
@cite{reference}
Highlight the name of a book or other reference that has no companion Info
file. See Section 6.11 [@cite], page 59.
@clear flag
Unset flag, preventing the Texinfo formatting commands from formatting text
between subsequent pairs of @ifset flag and @end ifset commands, and pre-
venting @value{flag} from expanding to the value to which flag is set. See
Section 16.5 [@set @clear @value], page 142.
@click{} Represent a single “click” in a GUI. Used within @clicksequence. See
Section 12.9.8 [Click Sequences], page 116.
@clicksequence{action @click{} action}
Represent a sequence of clicks in a GUI. See Section 12.9.8 [Click Sequences],
page 116.
@clickstyle @cmd
Execute @cmd for each @click; the default is @arrow. The usual following
empty braces on @cmd are omitted. See Section 12.9.8 [Click Sequences],
page 116.
@code{sample-code}
Indicate an expression, a syntactically complete token of a program, or a pro-
gram name. Unquoted in Info output. See Section 7.1.2 [@code], page 61.
Appendix A: @-Command Details 225
@codequotebacktick on-off
@codequoteundirected on-off
Control output of ` and ' in code examples. See Section 12.2 [Inserting Quote
Characters], page 103.
@comma{} Insert a comma ‘,’ character; only needed when a literal comma would be taken
as an argument separator. See Section 12.1.3 [Inserting a Comma], page 102.
@command{command-name}
Indicate a command name, such as ls. See Section 7.1.10 [@command], page 66.
@comment comment
Begin a comment in Texinfo. The rest of the line does not appear in any output.
A synonym for @c. See Section 2.2 [Comments], page 11.
@contents
Print a complete table of contents. Has no effect in Info, which uses menus
instead. See Section 3.5 [Generating a Table of Contents], page 24.
@copying Specify copyright holders and copying conditions for the document. Pair with
@end copying. See Section 3.3.1 [@copying], page 19.
@copyright{}
Generate the copyright symbol
.
c See Section 12.8.2 [@copyright], page 111.
@defcodeindex index-name
Define a new index and its indexing command. Print entries in an @code font.
See Section 11.6 [Defining New Indices], page 99.
@defcv category class name
@defcvx category class name
Format a description for a variable associated with a class in object-oriented
programming. Takes three arguments: the category of thing being defined, the
class to which it belongs, and its name. See Chapter 14 [Definition Commands],
page 122.
@deffn category name arguments...
@deffnx category name arguments...
Format a description for a function, interactive command, or similar entity that
may take arguments. @deffn takes as arguments the category of entity being
described, the name of this particular entity, and its arguments, if any. See
Chapter 14 [Definition Commands], page 122.
@defindex index-name
Define a new index and its indexing command. Print entries in a roman font.
See Section 11.6 [Defining New Indices], page 99.
@definfoenclose newcmd, before, after
Must be used within @ifinfo; create a new command @newcmd for Info that
marks text by enclosing it in strings that precede and follow the text. See
Section 17.5 [@definfoenclose], page 154.
Appendix A: @-Command Details 226
described, the type, the name of the entity, and its arguments, if any. See
Chapter 14 [Definition Commands], page 122.
@deftypefnnewline on-off
Specifies whether return types for @deftypefn and similar are printed on lines
by themselves; default is off. See Section 14.5.3 [Functions in Typed Languages],
page 127.
@deftypefun data-type function-name arguments...
@deftypefunx data-type function-name arguments...
Format a description for a function in a typed language. The command is equiv-
alent to ‘@deftypefn Function ...’. See Chapter 14 [Definition Commands],
page 122.
@deftypeivar class data-type variable-name
@deftypeivarx class data-type variable-name
Format a description for a typed instance variable in object-oriented program-
ming. See Chapter 14 [Definition Commands], page 122, and Section 14.5.6
[Abstract Objects], page 129.
@deftypemethod class data-type method-name arguments...
@deftypemethodx class data-type method-name arguments...
Format a description for a typed method in object-oriented programming. See
Chapter 14 [Definition Commands], page 122.
@deftypeop category class data-type name arguments...
@deftypeopx category class data-type name arguments...
Format a description for a typed operation in object-oriented programming.
See Chapter 14 [Definition Commands], page 122, and Section 14.5.6 [Abstract
Objects], page 129.
@deftypevar data-type variable-name
@deftypevarx data-type variable-name
Format a description for a variable in a typed language. The command is equiv-
alent to ‘@deftypevr Variable ...’. See Chapter 14 [Definition Commands],
page 122.
@deftypevr category data-type name
@deftypevrx category data-type name
Format a description for something like a variable in a typed language—an
entity that records a value. Takes as arguments the category of entity being
described, the type, and the name of the entity. See Chapter 14 [Definition
Commands], page 122.
@defun function-name arguments...
@defunx function-name arguments...
Format a description for a function; equivalent to ‘@deffn Function ...’. See
Chapter 14 [Definition Commands], page 122.
@defvar variable-name
@defvarx variable-name
Format a description for a variable; equivalent to ‘@defvr Variable ...’. See
Chapter 14 [Definition Commands], page 122.
Appendix A: @-Command Details 228
@dotless{i-or-j}
Generate dotless i (‘ı’) and dotless j (‘ȷ’). See Section 12.4 [Inserting Accents],
page 107.
@dots{} Generate an ellipsis, ‘...’. See Section 12.8.4 [@dots], page 111.
@email{address[, displayed-text]}
Indicate an electronic mail address. See Section 7.1.16 [@email], page 68.
@emph{text}
Emphasize text, by using italics where possible, and enclosing in asterisks in
Info. See Section 7.2 [Emphasizing Text], page 68.
@end environment
Ends environment, as in ‘@end example’. See [@-commands], page 10.
@enddots{}
Generate an end-of-sentence ellipsis, like this: . . . See Section 12.8.4 [@dots],
page 111.
@enumerate [number-or-letter]
Begin a numbered list, using @item for each entry. Optionally, start list with
number-or-letter. Pair with @end enumerate. See Section 9.3 [@enumerate],
page 82.
@env{environment-variable}
Indicate an environment variable name, such as PATH. See Section 7.1.8 [@env],
page 65.
@equiv{} Indicate to the reader the exact equivalence of two forms with a glyph: ‘ ≡ ’.
See Section 12.9.6 [@equiv], page 115.
@error{} Indicate to the reader with a glyph that the following text is an error message:
‘ error ’. See Section 12.9.5 [@error], page 114.
@errormsg{msg}
Report msg as an error to standard error, and exit unsuccessfully. Texinfo com-
mands within msg are expanded to plain text. See Chapter 16 [Conditionals],
page 138, and Section 17.6 [External Macro Processors], page 155.
@euro{} Generate the Euro currency sign. See Section 12.8.6 [@euro], page 112.
@evenfooting [left] @| [center] @| [right]
@evenheading [left] @| [center] @| [right]
Specify page footings resp. headings for even-numbered (left-hand) pages. See
Section E.4 [How to Make Your Own Headings], page 270.
@everyfooting [left] @| [center] @| [right]
@everyheading [left] @| [center] @| [right]
Specify page footings resp. headings for every page. Not relevant to Info. See
Section E.4 [How to Make Your Own Headings], page 270.
@example Begin an example. Indent text, do not fill, and select fixed-width font. Pair
with @end example. See Section 8.4 [@example], page 73.
Appendix A: @-Command Details 230
@exampleindent indent
Indent example-like environments by indent number of spaces (perhaps 0). See
Section 3.7.6 [@exampleindent], page 30.
@exclamdown{}
Generate an upside-down exclamation point. See Section 12.4 [Inserting Ac-
cents], page 107.
@exdent line-of-text
Remove any indentation a line might have. See Section 8.9 [@exdent], page 76.
@expansion{}
Indicate the result of a macro expansion to the reader with a special glyph:
‘7→’. See Section 12.9.3 [@expansion], page 113.
@file{filename}
Highlight the name of a file, buffer, node, directory, etc. See Section 7.1.9
[@file], page 66.
@finalout
Prevent TEX from printing large black warning rectangles beside over-wide lines.
See Section 19.10 [Overfull hboxes], page 170.
@findex entry
Add entry to the index of functions. See Section 11.3 [Defining the Entries of
an Index], page 96.
@firstparagraphindent word
Control indentation of the first paragraph after section headers according to
word, one of ‘none’ or ‘insert’. See Section 3.7.5 [@firstparagraphindent],
page 29.
@float Environment to define floating material. Pair with @end float. See
Section 10.1 [Floats], page 88.
@flushleft
@flushright
Do not fill text; left (right) justify every line while leaving the right (left) end
ragged. Leave font as is. Pair with @end flushleft (@end flushright). See
Section 8.10 [@flushleft @flushright], page 76.
@fonttextsize 10-11
Change the size of the main body font in the TEX output. See Section 7.2.3
[Fonts], page 69.
@footnote{text-of-footnote}
Enter a footnote. Footnote text is printed at the bottom of the page by TEX;
Info may format in either ‘End’ node or ‘Separate’ node style. See Section 10.3
[Footnotes], page 92.
@footnotestyle style
Specify an Info file’s footnote style, either ‘end’ for the end node style or
‘separate’ for the separate node style. See Section 10.3 [Footnotes], page 92.
Appendix A: @-Command Details 231
@format Begin a kind of example. Like @display, but do not indent. Pair with @end
format. See Section 8.4 [@example], page 73.
@frenchspacing on-off
Control spacing after punctuation. See Section 12.3.4 [@frenchspacing],
page 106.
@ftable formatting-command
Begin a two-column table, using @item for each entry. Automatically enter
each of the items in the first column into the index of functions. Pair with @end
ftable. The same as @table, except for indexing. See Section 9.4.2 [@ftable
@vtable], page 85.
@geq{} Generate a greater-than-or-equal sign, ‘≥’. See Section 12.8.10 [@geq @leq],
page 113.
@group Disallow page breaks within following text. Pair with @end group. Ignored in
Info. See Section 13.9 [@group], page 120.
@guillemetleft{}
@guillemetright{}
@guillemotleft{}
@guillemotright{}
@guilsinglleft{}
@guilsinglright{}
Double and single angle quotation marks: . @guillemotleft and
@guillemotright are synonyms for @guillemetleft and @guillemetright.
See Section 12.5 [Inserting Quotation Marks], page 108.
@H{c} Generate the long Hungarian umlaut accent over c, as in ő.
@hashchar{}
Insert a hash ‘#’ character; only needed when a literal hash would intro-
duce #line directive. See Section 12.1.5 [Inserting a Hashsign], page 102, and
Section 17.6 [External Macro Processors], page 155.
@heading title
Print an unnumbered section-like heading, but omit from the table of
contents. In Info, the title is underlined with equal signs. See Section 5.7
[@unnumberedsec @appendixsec @heading], page 45.
@headings on-off-single-double
Turn page headings on or off, and/or specify single-sided or double-sided page
headings for printing. See Section 3.7.3 [@headings], page 28.
@headitem
Begin a heading row in a multitable. See Section 9.5.2 [Multitable Rows],
page 86.
@headitemfont{text}
Set text in the font used for multitable heading rows; mostly useful in multitable
templates. See Section 9.5.2 [Multitable Rows], page 86.
Appendix A: @-Command Details 232
@html Enter HTML completely. Pair with @end html. See Section 16.3 [Raw Format-
ter Commands], page 140.
@hyphenation{hy-phen-a-ted words}
Explicitly define hyphenation points. See Section 13.3 [@- @hyphenation],
page 119.
@i{text} Set text in an italic font. No effect in Info. See Section 7.2.3 [Fonts], page 69.
@ifclear txivar
If the Texinfo variable txivar is not set, format the following text. Pair with
@end ifclear. See Section 16.5 [@set @clear @value], page 142.
@ifcommanddefined txicmd
@ifcommandnotdefined txicmd
If the Texinfo code ‘@txicmd’ is (not) defined, format the follow text. Pair with
the corresponding @end ifcommand.... See Section 16.6 [Testing for Texinfo
Commands], page 146.
@ifdocbook
@ifhtml
@ifinfo Begin text that will appear only in the given output format. @ifinfo output
appears in both Info and (for historical compatibility) plain text output. Pair
with @end ifdocbook resp. @end ifhtml resp. @end ifinfo. See Chapter 16
[Conditionals], page 138.
@ifnotdocbook
@ifnothtml
@ifnotplaintext
@ifnottex
@ifnotxml
Begin text to be ignored in one output format but not the others. @ifnothtml
text is omitted from HTML output, etc. Pair with the corresponding @end
ifnotformat. See Chapter 16 [Conditionals], page 138.
@ifnotinfo
Begin text to appear in output other than Info and (for historical compatibility)
plain text. Pair with @end ifnotinfo. See Chapter 16 [Conditionals], page 138.
@ifplaintext
Begin text that will appear only in the plain text output. Pair with @end
ifplaintext. See Chapter 16 [Conditionals], page 138.
@ifset txivar
If the Texinfo variable txivar is set, format the following text. Pair with @end
ifset. See Section 16.5 [@set @clear @value], page 142.
@iftex Begin text to appear only in the TEX output. Pair with @end iftex. See
Chapter 16 [Conditionally Visible Text], page 138.
@ifxml Begin text that will appear only in the XML output. Pair with @end ifxml.
See Chapter 16 [Conditionals], page 138.
Appendix A: @-Command Details 233
@ignore Begin text that will not appear in any output. Pair with @end ignore. See
Section 2.2 [Comments and Ignored Text], page 11.
@image{filename, [width], [height], [alt], [ext]}
Include graphics image in external filename scaled to the given width
and/or height, using alt text and looking for ‘filename.ext’ in HTML. See
Section 10.2 [Images], page 90.
@include filename
Read the contents of Texinfo source file filename. See Chapter 18 [Include Files],
page 158.
@indent Insert paragraph indentation. See Section 8.13 [@indent], page 78.
@indentedblock
Indent a block of arbitary text on the left. Pair with @end indentedblock. See
Section 8.3 [@indentedblock], page 73.
@indicateurl{indicateurl}
Indicate text that is a uniform resource locator for the World Wide Web. See
Section 7.1.15 [@indicateurl], page 68.
@inforef{node-name, [entry-name], info-file-name}
Make a cross-reference to an Info file for which there is no printed manual. See
Section 6.9 [@inforef], page 56.
@inlinefmt{fmt, text}
Insert text only if the output format is fmt. See Section 16.4 [Inline Condition-
als], page 141.
@inlinefmtifelse{fmt, text, else-text}
Insert text if the output format is fmt, else else-text.
@inlineifclear{var, text}
@inlineifset{var, text}
Insert text only if the Texinfo variable var is (not) set.
@inlineraw{fmt, raw-text}
Insert text as in a raw conditional, only if the output format is fmt.
\input macro-definitions-file
Use the specified macro definitions file. This command is used only in the first
line of a Texinfo file to cause TEX to make use of the texinfo macro definitions
file. The \ in \input is used instead of an @ because TEX does not recognize @
until after it has read the definitions file. See Section 3.2 [Texinfo File Header],
page 16.
@insertcopying
Insert the text previously defined with the @copying environment. See
Section 3.3.2 [@insertcopying], page 20.
@item Indicate the beginning of a marked paragraph for @itemize and @enumerate;
indicate the beginning of the text of a first column entry for @table, @ftable,
and @vtable. See Chapter 9 [Lists and Tables], page 80.
Appendix A: @-Command Details 234
@itemize mark-generating-character-or-command
Begin an unordered list: indented paragraphs with a mark, such as @bullet,
inside the left margin at the beginning of each item. Pair with @end itemize.
See Section 9.2 [@itemize], page 81.
@itemx Like @item but do not generate extra vertical space above the item text. Thus,
when several items have the same description, use @item for the first and @itemx
for the others. See Section 9.4.3 [@itemx], page 85.
@kbd{keyboard-characters}
Indicate characters of input to be typed by users. See Section 7.1.3 [@kbd],
page 62.
@kbdinputstyle style
Specify when @kbd should use a font distinct from @code according to style:
code, distinct, example. See Section 7.1.3 [@kbd], page 62.
@key{key-name}
Indicate the name of a key on a keyboard. See Section 7.1.4 [@key], page 63.
@kindex entry
Add entry to the index of keys. See Section 11.3 [Defining the Entries of an
Index], page 96.
@L{}
@l{} Generate the uppercase and lowercase Polish suppressed-L letters, respectively:
L, l.
@LaTeX{} Generate the LATEX logo. See Section 12.8.1 [@TeX @LaTeX], page 111.
@leq{} Generate a less-than-or-equal sign, ‘≤’. See Section 12.8.10 [@geq @leq],
page 113.
@lisp Begin an example of Lisp code. Indent text, do not fill, and select fixed-width
font. Pair with @end lisp. See Section 8.6 [@lisp], page 75.
@listoffloats
Produce a table-of-contents-like listing of @floats. See Section 10.1.3
[@listoffloats], page 89.
@lowersections
Change subsequent chapters to sections, sections to subsections, and so on. See
Section 5.12 [@raisesections and @lowersections], page 47.
@macro macroname {params}
Define a new Texinfo command @macroname{params}. Pair with @end macro.
See Section 17.1 [Defining Macros], page 148.
@majorheading title
Print an unnumbered chapter-like heading, but omit from the table of
contents. This generates more vertical whitespace before the heading than the
@chapheading command. See Section 5.5 [@majorheading @chapheading],
page 44.
Appendix A: @-Command Details 235
@math{mathematical-expression}
Format a mathematical expression. See Section 12.7 [Inserting Math], page 110.
@menu Mark the beginning of a menu of nodes. No effect in a printed manual. Pair
with @end menu. See Section 4.9 [Menus], page 38.
@minus{} Generate a minus sign, ‘−’. See Section 12.8.9 [@minus], page 112.
@multitable column-width-spec
Begin a multi-column table. Begin each row with @item or @headitem, and
separate columns with @tab. Pair with @end multitable. See Section 9.5.1
[Multitable Column Widths], page 86.
@need n Start a new page in a printed manual if fewer than n mils (thousandths of an
inch) remain on the current page. See Section 13.10 [@need], page 121.
@node name, next, previous, up
Begin a new node. See Section 4.3 [Writing a Node], page 32.
@noindent
Prevent text from being indented as if it were a new paragraph. See Section 8.12
[@noindent], page 77.
@novalidate
Suppress validation of node references and omit creation of auxiliary files with
TEX. Use before any sectioning or cross-reference commands. See Section 20.5
[Pointer Validation], page 182.
@O{}
@o{} Generate the uppercase and lowercase O-with-slash letters, respectively: Ø, ø.
@oddfooting [left] @| [center] @| [right]
@oddheading [left] @| [center] @| [right]
Specify page footings resp. headings for odd-numbered (right-hand) pages. See
Section E.4 [How to Make Your Own Headings], page 270.
@OE{}
@oe{} Generate the uppercase and lowercase OE ligatures, respectively: Œ, œ. See
Section 12.4 [Inserting Accents], page 107.
@ogonek{c}
Generate an ogonek diacritic under the next character, as in ¡. See Section 12.4
[Inserting Accents], page 107.
@option{option-name}
Indicate a command-line option, such as -l or --help. See Section 7.1.11
[@option], page 66.
@ordf{}
@ordm{} Generate the feminine and masculine Spanish ordinals, respectively: a, o. See
Section 12.4 [Inserting Accents], page 107.
@page Start a new page in a printed manual. No effect in Info. See Section 13.8
[@page], page 120.
Appendix A: @-Command Details 236
@raggedright
Fill text; left justify every line while leaving the right end ragged. Leave
font as is. Pair with @end raggedright. No effect in Info. See Section 8.11
[@raggedright], page 77.
@raisesections
Change subsequent sections to chapters, subsections to sections, and so on. See
Section 5.12 [Raise/lower sections], page 47.
@ref{node, [entry], [node-title], [info-file], [manual]}
Make a plain reference that does not start with any special text. Follow com-
mand with a punctuation mark. Only the first argument is mandatory. See
Section 6.6 [@ref], page 55.
@refill This command used to refill and indent the paragraph after all the other pro-
cessing has been done. It is no longer needed, since all formatters now automat-
ically refill as needed, but you may still see it in the source to some manuals,
as it does no harm.
@registeredsymbol{}
Generate the legal symbol
R
. See Section 12.8.3 [@registeredsymbol],
page 111.
@result{}
Indicate the result of an expression to the reader with a special glyph: ‘⇒’. See
Section 12.9.2 [@result], page 113.
@ringaccent{c}
Generate a ring accent over the next character, as in o̊. See Section 12.4 [In-
serting Accents], page 107.
@samp{text}
Indicate a literal example of a sequence of characters, in general. Quoted in
Info output. See Section 7.1.5 [@samp], page 64.
@sansserif{text}
Set text in a sans serif font if possible. No effect in Info. See Section 7.2.3
[Fonts], page 69.
@sc{text}
Set text in a small caps font in printed output, and uppercase in Info. See
Section 7.2.2 [Smallcaps], page 69.
@section title
Begin a section within a chapter. The section title appears in the table of
contents. In Info, the title is underlined with equal signs. Within @chapter
and @appendix, the section title is numbered; within @unnumbered, the section
is unnumbered. See Section 5.6 [@section], page 44.
@set txivar [string]
Define the Texinfo variable txivar, optionally to the value string. See
Section 16.5 [@set @clear @value], page 142.
Appendix A: @-Command Details 238
@setchapternewpage on-off-odd
Specify whether chapters start on new pages, and if so, whether on odd-
numbered (right-hand) new pages. See Section 3.7.2 [@setchapternewpage],
page 27.
@setfilename info-file-name
Provide a name to be used for the output files. This command is ignored for
TEX formatting. See Section 3.2.3 [@setfilename], page 17.
@settitle title
Specify the title for page headers in a printed manual, and the default document
title for HTML ‘<head>’. See Section 3.2.4 [@settitle], page 18.
@shortcaption
Define the short caption for a @float. See Section 10.1.2 [@caption
@shortcaption], page 89.
@shortcontents
Print a short table of contents, with chapter-level entries only. Not relevant to
Info, which uses menus rather than tables of contents. See Section 3.5 [Gener-
ating a Table of Contents], page 24.
@shorttitlepage title
Generate a minimal title page. See Section 3.4.1 [@titlepage], page 20.
@slanted{text}
Set text in a slanted font if possible. No effect in Info. See Section 7.2.3 [Fonts],
page 69.
@smallbook
Cause TEX to produce a printed manual in a 7 by 9.25 inch format rather than
the regular 8.5 by 11 inch format. See Section 19.11 [@smallbook], page 171.
Also, see Section 8.15 [@small...], page 79.
@smalldisplay
Begin a kind of example. Like @display, but use a smaller font size where
possible. Pair with @end smalldisplay. See Section 8.15 [@small...], page 79.
@smallexample
Begin an example. Like @example, but use a smaller font size where possible.
Pair with @end smallexample. See Section 8.15 [@small...], page 79.
@smallformat
Begin a kind of example. Like @format, but use a smaller font size where
possible. Pair with @end smallformat. See Section 8.15 [@small...], page 79.
@smallindentedblock
Like @indentedblock, but use a smaller font size where possible. Pair with
@end smallindentedblock. See Section 8.15 [@small...], page 79.
@smalllisp
Begin an example of Lisp code. Same as @smallexample. Pair with @end
smalllisp. See Section 8.15 [@small...], page 79.
Appendix A: @-Command Details 239
@smallquotation
Like @quotation, but use a smaller font size where possible. Pair with @end
smallquotation. See Section 8.15 [@small...], page 79.
@sortas {key}
Used in the arguments to index commands to give a string by which the index
entry should be sorted. See Section 11.2 [Indexing Commands], page 96.
@sp n Skip n blank lines. See Section 13.7 [@sp], page 120.
@ss{} Generate the German sharp-S es-zet letter, ß. See Section 12.4 [Inserting Ac-
cents], page 107.
@strong {text}
Emphasize text more strongly than @emph, by using boldface where possible;
enclosed in asterisks in Info. See [Emphasizing Text], page 69.
@sub {text}
Set text as a subscript. See Section 12.6 [Inserting Subscripts and Superscripts],
page 109.
@subheading title
Print an unnumbered subsection-like heading, but omit from the table of con-
tents of a printed manual. In Info, the title is underlined with hyphens. See
Section 5.9 [@unnumberedsubsec @appendixsubsec @subheading], page 45.
@subsection title
Begin a subsection within a section. The subsection title appears in the table of
contents. In Info, the title is underlined with hyphens. Same context-dependent
numbering as @section. See Section 5.8 [@subsection], page 45.
@subsubheading title
Print an unnumbered subsubsection-like heading, but omit from the table of
contents of a printed manual. In Info, the title is underlined with periods. See
Section 5.10 [@subsubsection], page 46.
@subsubsection title
Begin a subsubsection within a subsection. The subsubsection title
appears in the table of contents. In Info, the title is underlined with
periods. Same context-dependent numbering as @section. See Section 5.10
[@subsubsection], page 46.
@subtitle title
In a printed manual, set a subtitle in a normal sized font flush to the right-
hand side of the page. Not relevant to Info, which does not have title pages.
See Section 3.4.3 [@title @subtitle @author], page 22.
@summarycontents
Print a short table of contents. Synonym for @shortcontents. See Section 3.5
[Generating a Table of Contents], page 24.
@sup {text}
Set text as a superscript. See Section 12.6 [Inserting Subscripts and Super-
scripts], page 109.
Appendix A: @-Command Details 240
@tindex entry
Add entry to the index of data types. See Section 11.3 [Defining the Entries of
an Index], page 96.
@title title
In a printed manual, set a title flush to the left-hand side of the page in a
larger than normal font and underline it with a black rule. Not relevant to
Info, which does not have title pages. See Section 3.4.3 [@title @subtitle
@author], page 22.
@titlefont{text}
In a printed manual, print text in a larger than normal font. See Section 3.4.2
[@titlefont @center @sp], page 21.
@titlepage
Begin the title page. Write the command on a line of its own, paired with
@end titlepage. Nothing between @titlepage and @end titlepage appears
in Info. See Section 3.4.1 [@titlepage], page 20.
@today{} Insert the current date, in ‘1 Jan 1900’ style. See Section E.4 [How to Make
Your Own Headings], page 270.
@top title
Mark the topmost @node in the file, which must be defined on the line
immediately preceding the @top command. The title is formatted as a
chapter-level heading. The entire top node, including the @node and @top
lines, are normally enclosed with @ifnottex ... @end ifnottex. In TEX
and texinfo-format-buffer, the @top command is merely a synonym for
@unnumbered. See Section 4.8 [makeinfo Pointer Creation], page 38.
@U{hex} Output a representation of Unicode character U+hex. See Section 12.10 [In-
serting Unicode], page 116.
@u{c}
@ubaraccent{c}
@udotaccent{c}
Generate a breve, underbar, or underdot accent, respectively, over or under the
character c, as in ŏ, o, o.. See Section 12.4 [Inserting Accents], page 107.
¯
@unmacro macroname
Undefine the macro @macroname if it has been defined. See Section 17.1 [Defin-
ing Macros], page 148.
@unnumbered title
Begin a chapter that appears without chapter numbers of any kind. The title
appears in the table of contents. In Info, the title is underlined with asterisks.
See Section 5.4 [@unnumbered @appendix], page 44.
@unnumberedsec title
Begin a section that appears without section numbers of any kind. The title
appears in the table of contents of a printed manual. In Info, the title is
underlined with equal signs. See Section 5.7 [@unnumberedsec @appendixsec
@heading], page 45.
Appendix A: @-Command Details 242
@unnumberedsubsec title
Begin an unnumbered subsection. The title appears in the table of contents. In
Info, the title is underlined with hyphens. See Section 5.9 [@unnumberedsubsec
@appendixsubsec @subheading], page 45.
@unnumberedsubsubsec title
Begin an unnumbered subsubsection. The title appears in the table of contents.
In Info, the title is underlined with periods. See Section 5.10 [@subsubsection],
page 46.
@uref{url[, displayed-text][, replacement}
@url{url[, displayed-text][, replacement}
Define a cross-reference to an external uniform resource locator, e.g., for the
World Wide Web. See Section 6.10 [@url], page 57.
@urefbreakstyle style
Specify how @uref/@url should break at special characters: after, before,
none. See Section 6.10 [@url], page 57.
@v{c} Generate check accent over the character c, as in ǒ. See Section 12.4 [Inserting
Accents], page 107.
@validatemenus on-off
Control whether menus can be automatically generated. See Section 4.9.1 [Writ-
ing a Menu], page 38.
@value{txivar}
Insert the value, if any, of the Texinfo variable txivar, previously defined by
@set. See Section 16.5 [@set @clear @value], page 142.
@var{metasyntactic-variable}
Highlight a metasyntactic variable, which is something that stands for another
piece of text. See Section 7.1.7 [@var], page 65.
@verb{delim literal delim}
Output literal, delimited by the single character delim, exactly as is (in the
fixed-width font), including any whitespace or Texinfo special characters. See
Section 7.1.6 [@verb], page 64.
@verbatim
Output the text of the environment exactly as is (in the fixed-width font). Pair
with @end verbatim. See Section 8.5 [@verbatim], page 74.
@verbatiminclude filename
Output the contents of filename exactly as is (in the fixed-width font). See
Section 18.5 [@verbatiminclude], page 160.
@vindex entry
Add entry to the index of variables. See Section 11.3 [Defining the Entries of
an Index], page 96.
@vskip amount
In a printed manual, insert whitespace so as to push text on the remainder of
the page towards the bottom of the page. Used in formatting the copyright
Appendix A: @-Command Details 243
page with the argument ‘0pt plus 1filll’. (Note spelling of ‘filll’.) @vskip
may be used only in contexts ignored for Info. See Section 3.4.4 [Copyright],
page 23.
@vtable formatting-command
Begin a two-column table, using @item for each entry. Automatically enter
each of the items in the first column into the index of variables. Pair with @end
vtable. The same as @table, except for indexing. See Section 9.4.2 [@ftable
@vtable], page 85.
@w{text} Disallow line breaks within text. See Section 13.5 [@w], page 119.
@xml Enter XML completely. Pair with @end xml. See Section 16.3 [Raw Formatter
Commands], page 140.
@xref{node, [entry], [node-title], [info-file], [manual]}
Make a reference that starts with ‘See’ in a printed manual. Follow command
with a punctuation mark. Only the first argument is mandatory. See Section 6.4
[@xref], page 51.
@xrefautomaticsectiontitle on-off
By default, use the section title instead of the node name in cross references.
See Section 6.4.3 [Three Arguments], page 52.
Blank Lines
• Insert a blank line between a sectioning command and the first following sentence or
paragraph, or between the indexing commands associated with the sectioning command
and the first following sentence or paragraph, as shown in the tip on indexing. It makes
the source easier to read.
• Always insert a blank line before a @table command and after an @end table com-
mand; but never insert a blank line after an @table command.
For example,
Types of fox:
@table @samp
@item Quick
Jump over lazy dogs.
@item Brown
Also jump over lazy dogs.
@end table
@noindent
On the other hand, ...
Insert blank lines before and after @itemize . . . @end itemize and @enumerate . . .
@end enumerate in the same way.
Complete Phrases
Complete phrases are easier to read than . . .
• Write entries in an itemized list as complete sentences; or at least, as complete phrases.
Incomplete expressions . . . awkward . . . like this.
• Write the prefatory sentence or phrase for a multi-item list or table as a complete
expression. Do not write “You can set:”; instead, write “You can set these variables:”.
The former expression sounds cut off.
Definition Commands
Definition commands are @deffn, @defun, @defmac, and the like, and enable you to write
descriptions in a uniform format.
• Write just one definition command for each entity you define with a definition com-
mand. The automatic indexing feature creates an index entry that leads the reader to
the definition.
Appendix B: Tips and Hints 247
• Use @table . . . @end table in an appendix that contains a summary of functions, not
@deffn or other definition commands.
Capitalization
• Capitalize “Texinfo”; it is a name. Do not write the ‘x’ or ‘i’ in uppercase.
• Capitalize “Info”; it is a name.
• Write TEX using the @TeX{} command. Note the uppercase ‘T’ and ‘X’. This command
causes the formatters to typeset the name according to the wishes of Donald Knuth,
who wrote TEX. (Likewise @LaTeX{} for LATEX.)
Spaces
Do not use spaces to format a Texinfo file, except inside of @example . . . @end example
and other literal environments and commands.
For example, TEX fills the following:
@kbd{C-x v}
@kbd{M-x vc-next-action}
Perform the next logical operation
on the version-controlled file
corresponding to the current buffer.
so it looks like this:
C-x v M-x vc-next-action Perform the next logical operation on the version-
controlled file corresponding to the current buffer.
In this case, the text should be formatted with @table, @item, and @itemx, to create a
table.
ANSI C Syntax
When you use @example to describe a C function’s calling conventions, use the ANSI C
syntax, like this:
void dld_init (char *@var{path});
And in the subsequent discussion, refer to the argument values by writing the same argument
names, again highlighted with @var.
Avoid the obsolete style that looks like this:
#include <dld.h>
dld_init (path)
char *path;
Also, it is best to avoid writing #include above the declaration just to indicate that
the function is declared in a header file. The practice may give the misimpression that the
#include belongs near the declaration of the function. Either state explicitly which header
file holds the declaration or, better yet, name the header file used for a group of functions
at the beginning of the section that describes the functions.
Node Length
Keep nodes (sections) to a reasonable length, whatever reasonable might be in the given
context. Don’t hesitate to break up long nodes into subnodes and have an extensive tree
structure; that’s what it’s there for. Many times, readers will probably try to find a single
specific point in the manual, using search, indexing, or just plain guessing, rather than
reading the whole thing from beginning to end.
You can use the texi-elements-by-size utility to see a list of all nodes (or sections)
in the document, sorted by size (either lines or words), to find candidates for splitting. It’s
in the util/ subdirectory of the Texinfo sources.
Appendix B: Tips and Hints 249
Bad Examples
Here are several examples of bad writing to avoid:
In this example, say, “ . . . you must @dfn{check in} the new version.” That flows better.
When you are done editing the file, you must perform a @dfn{check in}.
In the following example, say, “. . . makes a unified interface such as VC mode possible.”
SCCS, RCS and other version-control systems all perform similar functions in
broadly similar ways (it is this resemblance which makes a unified control mode
like this possible).
And in this example, you should specify what ‘it’ refers to:
If you are working with other people, it assists in coordinating everyone’s
changes so they do not step on each other.
And Finally . . .
• Pronounce TEX as if the ‘X’ were a Greek ‘chi’, as the last sound in the name ‘Bach’.
But pronounce Texinfo as in ‘speck’: “teckinfo”.
• Write notes for yourself at the very end of a Texinfo file after the @bye. None of the
formatters process text after the @bye; it is as if the text were within @ignore . . . @end
ignore.
250
\input texinfo
@settitle Sample Manual 1.0
@copying
This is a short example of a complete Texinfo file.
@titlepage
@title Sample Title
@page
@vskip 0pt plus 1filll
@insertcopying
@end titlepage
@ifnottex
@node Top
@top GNU Sample
@menu
* First Chapter:: The first chapter is the
only chapter in this sample.
* Index:: Complete index.
@end menu
Appendix C: Sample Texinfo Files 251
@enumerate
@item
This is the first item.
@item
This is the second item.
@end enumerate
@node Index
@unnumbered Index
@printindex cp
@bye
If you want to literally write $Id$, use @w: @w{$}Id$. Unfortunately, this technique
does not work in plain text output, where it’s not clear what should be done.
• The version.texi in the @include command is maintained automatically by Au-
tomake (see GNU Automake). It sets the ‘VERSION’ and ‘UPDATED’ values used else-
where. If your distribution doesn’t use Automake, but you do use Emacs, you may
find the time-stamp.el package helpful (see Section “Time Stamps” in The GNU Emacs
Manual).
• The @syncodeindex command reflects the recommendation to use only one index where
possible, to make it easier for readers to look up index entries.
• The @dircategory is for constructing the Info directory. See Section 21.2.4 [Installing
Dir Entries], page 205, which includes a variety of recommended category names.
• The ‘Invoking’ node is a GNU standard to help users find the basic information about
command-line usage of a given program. See Section “Manual Structure Details” in
GNU Coding Standards.
• It is best to include the entire GNU Free Documentation License in a GNU manual,
unless the manual is only a few pages long. Of course this sample is even shorter than
that, but it includes the FDL anyway in order to show one conventional way to do
so. The fdl.texi file is available on the GNU machines and in the Texinfo and other
GNU source distributions.
The FDL provides for omitting itself under certain conditions, but in that case the sam-
ple texts given here have to be modified. See Appendix H [GNU Free Documentation
License], page 287.
• If the FSF is not the copyright holder, then use the appropriate name.
• If your manual is published on paper by the FSF or is longer than 400 pages, you should
include the standard FSF cover texts (see Section “License Notices for Documentation”
in GNU Maintainer Information).
• For documents that express your personal views, feelings or experiences, it is more
appropriate to use a license permitting only verbatim copying, rather than the FDL.
See Section C.3 [Verbatim Copying License], page 254.
Here is the sample document:
\input texinfo @c -*-texinfo-*-
@comment $Id@w{$}
@comment %**start of header
@include version.texi
@settitle GNU Sample @value{VERSION}
@syncodeindex pg cp
@comment %**end of header
@copying
This manual is for GNU Sample (version @value{VERSION}, @value{UPDATED}),
which is an example in the Texinfo documentation.
@quotation
Appendix C: Sample Texinfo Files 253
@titlepage
@title GNU Sample
@subtitle for version @value{VERSION}, @value{UPDATED}
@author A.U. Thor (@email{bug-sample@@gnu.org})
@page
@vskip 0pt plus 1filll
@insertcopying
@end titlepage
@contents
@ifnottex
@node Top
@top GNU Sample
@menu
* Invoking sample::
* GNU Free Documentation License::
* Index::
@end menu
@pindex sample
@cindex invoking @command{sample}
@include fdl.texi
@node Index
@unnumbered Index
@printindex cp
@bye
@quotation
Permission is granted to make and distribute verbatim copies
of this entire document without royalty provided the
copyright notice and this permission notice are preserved.
@end quotation
@end copying
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 ]
M-x up-list
Move from between a pair of braces forward past the closing brace. Typing C-c
] is easier than typing 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 differ-
ent @-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 dif-
ferently 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 de-
scription helps explain what the node is about. See Section 4.9.4 [The Parts of a Menu],
page 40.)
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.
Appendix D: Using Texinfo Mode 259
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 de-
scriptions 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 can be useful to reduce it to
as low as 24. You can set the variable via customization (see Section “Customization” in The
GNU Emacs Manual) or with the M-x set-variable command (see Section “Examining
and Setting Variables” in The GNU Emacs Manual).
Appendix D: Using Texinfo Mode 262
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 18.2 [texinfo-multiple-files-update], page 158.
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’ hierarchi-
cal 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 docu-
ments that you read through sequentially. (However, in Info, the g * 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.
D.7 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 (see Section 19.2
[Format with texi2dvi], page 162).
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.
Appendix D: Using Texinfo Mode 265
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 { Insert braces.
C-c ]
C-c } Move out of enclosing braces.
Show Structure
The texinfo-show-structure command is often used within a narrowed region.
C-c C-s List all the headings.
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.
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.
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.
268
The standard format for two-sided printing depends on whether the page number is even
or odd. By convention, even-numbered pages are on the left- and odd-numbered pages are
on the right. (TEX will adjust the widths of the left- and right-hand margins. Usually,
widths are correct, but during double-sided printing, it is wise to check that pages will bind
properly—sometimes a printer will produce output in which the even-numbered pages have
a larger right-hand margin than the odd-numbered pages.)
In the standard double-sided format, the left part of the left-hand (even-numbered) page
contains the page number, the central part is blank, and the right part contains the title
(specified by the @settitle command). The left part of the right-hand (odd-numbered)
page contains the name of the chapter, the central part is blank, and the right part contains
the page number.
Two pages, side by side as in an open book, look like this:
_______________________ _______________________
| | | |
| page number title | | chapter page number |
| | | |
| Start of text ... | | More text ... |
| ... | | ... |
| | | |
The chapter name is preceded by the word “Chapter”, the chapter number and a colon.
This makes it easier to keep track of where you are in the manual.
Besides mistakes in the content of your documentation, there are two kinds of mistake
you can make with Texinfo: you can make mistakes with @-commands, and you can make
mistakes with the structure of the nodes and chapters.
Emacs has two tools for catching the @-command mistakes and two for catching struc-
turing mistakes.
For finding problems with @-commands, you can run TEX or a region formatting com-
mand on the region that has a problem; indeed, you can run these commands on each region
as you write it.
For finding problems with the structure of nodes and chapters, you can use C-c C-
s (texinfo-show-structure) and the related occur command and you can use the M-x
Info-validate command.
?
---------- Buffer: *tex-shell* ----------
In this case, TEX produced an accurate and understandable error message:
Paragraph ended before @xref was complete.
‘@par’ is an internal TEX command of no relevance to Texinfo. ‘l.27’ means that TEX
detected the problem on line 27 of the Texinfo file. The ‘?’ is the prompt TEX uses in this
circumstance.
Unfortunately, TEX is not always so helpful, and sometimes you must truly be a Sherlock
Holmes to discover what went wrong.
In any case, if you run into a problem like this, you can do one of three things.
1. You can tell TEX to continue running and ignore just this error by typing RET at the
‘?’ prompt.
2. You can tell TEX to continue running and to ignore all errors as best it can by typing
r RET at the ‘?’ prompt.
This is often the best thing to do. However, beware: the one error may produce a
cascade of additional error messages as its consequences are felt through the rest of the
file. To stop TEX when it is producing such an avalanche of error messages, type C-c
(or C-c C-c, if you are running a shell inside Emacs).
3. You can tell TEX to stop this run by typing x RET at the ‘?’ prompt.
If you are running TEX inside Emacs, you need to switch to the shell buffer and line at
which TEX offers the ‘?’ prompt.
Sometimes TEX will format a file without producing error messages even though there
is a problem. This usually occurs if a command is not ended but TEX is able to continue
processing anyhow. For example, if you fail to end an itemized list with the @end itemize
command, TEX will write a DVI file that you can print out. The only error message that
TEX will give you is the somewhat mysterious comment:
(@end occurred inside a group at level 1)
Appendix F: Catching Mistakes 276
However, if you print the DVI file, you will find that the text of the file that follows the
itemized list is entirely indented as if it were part of the last item in the itemized list. The
error message is the way TEX says that it expected to find an @end command somewhere
in the file; but that it could not determine where it was needed.
Another source of notoriously hard-to-find errors is a missing @end group command. If
you ever are stumped by incomprehensible errors, look for a missing @end group command
first.
If the Texinfo file lacks header lines, TEX may stop in the beginning of its run and display
output that looks like the following. The ‘*’ indicates that TEX is waiting for input.
This is TeX, Version 3.14159 (Web2c 7.0)
(test.texinfo [1])
*
In this case, simply type \end RET after the asterisk. Then write the header lines in the
Texinfo file and run the TEX command again. (Note the use of the backslash, ‘\’. TEX uses
‘\’ instead of ‘@’; and in this circumstance, you are working directly with TEX, not with
Texinfo.)
Texinfo file. See Section “Using Occur” in The GNU Emacs Manual, for more information
about occur-mode-goto-occurrence.
The first line in the ‘*Occur*’ window describes the regular expression specified by
texinfo-heading-pattern. This regular expression is the pattern that texinfo-show-
structure looks for. See Section “Using Regular Expressions” in The GNU Emacs
Manual, for more information.
When you invoke the texinfo-show-structure command, Emacs will display the struc-
ture of the whole buffer. If you want to see the structure of just a part of the buffer, of one
chapter, for example, use the C-x n n (narrow-to-region) command to mark the region.
(See Section “Narrowing” in The GNU Emacs Manual.) This is how the example used
above was generated. (To see the whole buffer again, use C-x n w (widen).)
If you call texinfo-show-structure with a prefix argument by typing C-u C-c C-s, it
will list lines beginning with @node as well as the lines beginning with the @-sign commands
for @chapter, @section, and the like.
You can remind yourself of the structure of a Texinfo file by looking at the list in the
‘*Occur*’ window; and if you have mis-named a node or left out a section, you can correct
the mistake.
The makeinfo program validates pointers automatically, so you do not need to use
the Info-validate command if you are using makeinfo. You only may need to use
Info-validate if you are unable to run makeinfo and instead must create an Info file
using texinfo-format-region or texinfo-format-buffer, or if you write an Info file
from scratch.
When you do this, Texinfo will not split the file and will not create a tag table for it.
<index entry>*
The <index entry> items are similar to normal menu entries, but the free-format de-
scription is replaced by the line number of where the entries occurs in the text:
<index entry> =
* <entry text>: <entry node>. <lparen>line <lineno><rparen>
Appendix G: Info Format Specification 285
The <entry text> is the index term. The <lineno> is an unsigned integer, given relative
to the start of the <entry node>. There may be arbitrary whitespace after the colon and
period, as usual in menus, and may be broken across lines. Here is an example:
^@^H[index^@^H]
* Menu:
<id> = (<lparen><infofile><rparen>)?(<del>?<nodename><del>?)?
| <id> = (<lparen><infofile><rparen>)?(<nodename>)?
<label> = <del>?<label text><del>?
No space should occur between the ‘*’ character and the following ‘N’ or ‘n’. ‘*Note’
should be used at the start of a sentence, otherwise ‘*note’ should be used. (Some Info
readers, such as the one in Emacs, can display ‘*Note’ and ‘*note’ as ‘See’ and ‘see’
respectively.) In both cases, <label text> is descriptive text.
In both forms the <id> refers to a node or anchor, in the same way as a reference
in the node information line does (see [Info Format Regular Nodes], page 283). The op-
tional parenthesized ‘<infofile>’ is the filename of the manual being referenced, and the
<nodename> is the node or anchor within that manual,
The second form has a descriptive label. A cross-reference in this form should usually
be terminated with a comma or period, to make it feasible to find the end of the <id>.
If <label> contains a colon character (:), it should be surrounded with a pair of <del>
characters. Likewise, if <nodename> contains problematic characters (such as commas or
periods), it should be surrounded by a pair of <del> characters; then a terminating comma
or period is not needed.
As with node names, this quoting mechanism has as of the time of writing limited support
in Info-reading programs; hence we do not recommend using it until this changes.
The format does not prescribe how to find other manuals to resolve such references.
Here are some examples:
*note GNU Free Documentation License::
*note Tag table: Info Format Tag Table, for details.
*Note Overview: (make)Top.
*Note ^?:^?: (bash)Bourne Shell Builtins.
*Note alloca.h: (gnulib)^?alloca.h^?.
The first shows a reference to a node in the current manual using the short form.
Appendix G: Info Format Specification 286
The second also refers to a node in the current manual, namely ‘Info Format Tag Table’;
the ‘Tag table’ before the ‘:’ is only a label on this particular reference, and the ‘for
details.’ is text belonging to the sentence, not part of the reference.
The third example refers to the node ‘Top’ in another manual, namely ‘make’, with
‘Overview’ being the label for this cross-reference.
The fourth example shows a colon character being quoted in a label, and the fifth example
shows a period being quoted in a node name.
See Chapter 6 [Cross References], page 49.
287
under this License. If a section does not fit the above definition of Secondary then it is
not allowed to be designated as Invariant. The Document may contain zero Invariant
Sections. If the Document does not identify any Invariant Sections then there are none.
The “Cover Texts” are certain short passages of text that are listed, as Front-Cover
Texts or Back-Cover Texts, in the notice that says that the Document is released under
this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may
be at most 25 words.
A “Transparent” copy of the Document means a machine-readable copy, represented
in a format whose specification is available to the general public, that is suitable for
revising the document straightforwardly with generic text editors or (for images com-
posed of pixels) generic paint programs or (for drawings) some widely available drawing
editor, and that is suitable for input to text formatters or for automatic translation to
a variety of formats suitable for input to text formatters. A copy made in an otherwise
Transparent file format whose markup, or absence of markup, has been arranged to
thwart or discourage subsequent modification by readers is not Transparent. An image
format is not Transparent if used for any substantial amount of text. A copy that is
not “Transparent” is called “Opaque”.
Examples of suitable formats for Transparent copies include plain ASCII without
markup, Texinfo input format, LaTEX input format, SGML or XML using a publicly
available DTD, and standard-conforming simple HTML, PostScript or PDF designed
for human modification. Examples of transparent image formats include PNG, XCF
and JPG. Opaque formats include proprietary formats that can be read and edited
only by proprietary word processors, SGML or XML for which the DTD and/or pro-
cessing tools are not generally available, and the machine-generated HTML, PostScript
or PDF produced by some word processors for output purposes only.
The “Title Page” means, for a printed book, the title page itself, plus such following
pages as are needed to hold, legibly, the material this License requires to appear in the
title page. For works in formats which do not have any title page as such, “Title Page”
means the text near the most prominent appearance of the work’s title, preceding the
beginning of the body of the text.
The “publisher” means any person or entity that distributes copies of the Document
to the public.
A section “Entitled XYZ” means a named subunit of the Document whose title either
is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in
another language. (Here XYZ stands for a specific section name mentioned below, such
as “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) To “Preserve
the Title” of such a section when you modify the Document means that it remains a
section “Entitled XYZ” according to this definition.
The Document may include Warranty Disclaimers next to the notice which states that
this License applies to the Document. These Warranty Disclaimers are considered to
be included by reference in this License, but only as regards disclaiming warranties:
any other implication that these Warranty Disclaimers may have is void and has no
effect on the meaning of this License.
2. VERBATIM COPYING
Appendix H: GNU Free Documentation License 289
You may copy and distribute the Document in any medium, either commercially or
noncommercially, provided that this License, the copyright notices, and the license
notice saying this License applies to the Document are reproduced in all copies, and
that you add no other conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further copying of the copies
you make or distribute. However, you may accept compensation in exchange for copies.
If you distribute a large enough number of copies you must also follow the conditions
in section 3.
You may also lend copies, under the same conditions stated above, and you may publicly
display copies.
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have printed covers) of
the Document, numbering more than 100, and the Document’s license notice requires
Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all
these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify you as the publisher
of these copies. The front cover must present the full title with all words of the title
equally prominent and visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve the title of the
Document and satisfy these conditions, can be treated as verbatim copying in other
respects.
If the required texts for either cover are too voluminous to fit legibly, you should put
the first ones listed (as many as fit reasonably) on the actual cover, and continue the
rest onto adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than 100,
you must either include a machine-readable Transparent copy along with each Opaque
copy, or state in or with each Opaque copy a computer-network location from which
the general network-using public has access to download using public-standard network
protocols a complete Transparent copy of the Document, free of added material. If
you use the latter option, you must take reasonably prudent steps, when you begin
distribution of Opaque copies in quantity, to ensure that this Transparent copy will
remain thus accessible at the stated location until at least one year after the last time
you distribute an Opaque copy (directly or through your agents or retailers) of that
edition to the public.
It is requested, but not required, that you contact the authors of the Document well
before redistributing any large number of copies, to give them a chance to provide you
with an updated version of the Document.
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under the conditions
of sections 2 and 3 above, provided that you release the Modified Version under precisely
this License, with the Modified Version filling the role of the Document, thus licensing
distribution and modification of the Modified Version to whoever possesses a copy of
it. In addition, you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct from that of the
Document, and from those of previous versions (which should, if there were any,
Appendix H: GNU Free Documentation License 290
be listed in the History section of the Document). You may use the same title as
a previous version if the original publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities responsible for
authorship of the modifications in the Modified Version, together with at least five
of the principal authors of the Document (all of its principal authors, if it has fewer
than five), unless they release you from this requirement.
C. State on the Title page the name of the publisher of the Modified Version, as the
publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications adjacent to the other
copyright notices.
F. Include, immediately after the copyright notices, a license notice giving the public
permission to use the Modified Version under the terms of this License, in the form
shown in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections and required Cover
Texts given in the Document’s license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled “History”, Preserve its Title, and add to it an item
stating at least the title, year, new authors, and publisher of the Modified Version
as given on the Title Page. If there is no section Entitled “History” in the Docu-
ment, create one stating the title, year, authors, and publisher of the Document
as given on its Title Page, then add an item describing the Modified Version as
stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for public access to
a Transparent copy of the Document, and likewise the network locations given in
the Document for previous versions it was based on. These may be placed in the
“History” section. You may omit a network location for a work that was published
at least four years before the Document itself, or if the original publisher of the
version it refers to gives permission.
K. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title
of the section, and preserve in the section all the substance and tone of each of the
contributor acknowledgements and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document, unaltered in their text and
in their titles. Section numbers or the equivalent are not considered part of the
section titles.
M. Delete any section Entitled “Endorsements”. Such a section may not be included
in the Modified Version.
N. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in
title with any Invariant Section.
O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or appendices that qualify
as Secondary Sections and contain no material copied from the Document, you may at
your option designate some or all of these sections as invariant. To do this, add their
Appendix H: GNU Free Documentation License 291
titles to the list of Invariant Sections in the Modified Version’s license notice. These
titles must be distinct from any other section titles.
You may add a section Entitled “Endorsements”, provided it contains nothing but
endorsements of your Modified Version by various parties—for example, statements of
peer review or that the text has been approved by an organization as the authoritative
definition of a standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage of up
to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified
Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be
added by (or through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or by arrangement
made by the same entity you are acting on behalf of, you may not add another; but
you may replace the old one, on explicit permission from the previous publisher that
added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission
to use their names for publicity for or to assert or imply endorsement of any Modified
Version.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this License,
under the terms defined in section 4 above for modified versions, provided that you
include in the combination all of the Invariant Sections of all of the original documents,
unmodified, and list them all as Invariant Sections of your combined work in its license
notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and multiple identical
Invariant Sections may be replaced with a single copy. If there are multiple Invariant
Sections with the same name but different contents, make the title of each such section
unique by adding at the end of it, in parentheses, the name of the original author or
publisher of that section if known, or else a unique number. Make the same adjustment
to the section titles in the list of Invariant Sections in the license notice of the combined
work.
In the combination, you must combine any sections Entitled “History” in the vari-
ous original documents, forming one section Entitled “History”; likewise combine any
sections Entitled “Acknowledgements”, and any sections Entitled “Dedications”. You
must delete all sections Entitled “Endorsements.”
6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents released
under this License, and replace the individual copies of this License in the various
documents with a single copy that is included in the collection, provided that you
follow the rules of this License for verbatim copying of each of the documents in all
other respects.
You may extract a single document from such a collection, and distribute it individu-
ally under this License, provided you insert a copy of this License into the extracted
document, and follow this License in all other respects regarding verbatim copying of
that document.
Appendix H: GNU Free Documentation License 292
! ^
! (end of sentence) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 ^ (circumflex accent) . . . . . . . . . . . . . . . . . . . . . . . . . . 107
" ‘
" (umlaut accent) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 ` (grave accent) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
’ \
' (acute accent) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 \ (literal \ in @math) . . . . . . . . . . . . . . . . . . . . . . . . . . 110
* {
* (force line break) . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 { (literal ‘{’) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
,
, (cedilla accent) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
}
} (literal ‘}’) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
–
- (in image alt string) . . . . . . . . . . . . . . . . . . . . . 91, 119 ~
~ (tilde accent) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
.
. (end of sentence) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 A
aa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
AA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
/ abbr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
/ (allow line break) . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 acronym . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
ae . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
AE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
: afivepaper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 afourlatex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
afourpaper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
afourwide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
= alias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
= (macron accent) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 allowcodebreaks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
ampchar{} (literal ‘&’). . . . . . . . . . . . . . . . . . . . . . . . . 103
anchor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
? appendix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
appendixsec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
? (end of sentence) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 appendixsection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
appendixsubsec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
appendixsubsubsec . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
@ apply. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
@ (literal ‘@’) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 arrow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
asis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Command and Variable Index 296
E G
email . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 \gdef within @tex . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
\emergencystretch . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 geq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
emph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 \globaldefs within @tex . . . . . . . . . . . . . . . . . . . . . 140
end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71, 80 group. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
guillemetleft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
enddots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
guillemetright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
enumerate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
guillemotleft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
env . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 guillemotright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
equiv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 guilsinglleft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 guilsinglright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
errormsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
errormsg, and line numbers in TEX . . . . . . . . . . . 156
euro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 H
evenfooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 H (Hungarian umlaut accent) . . . . . . . . . . . . . . . . . . 107
evenfootingmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 hashchar{} (literal ‘#’) . . . . . . . . . . . . . . . . . . . . . . . 102
evenheading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 hbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
evenheadingmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 heading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
everyfooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 headings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
everyfootingmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 headitem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
everyheading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 headitemfont . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
everyheadingmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 headword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 html . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140, 184
exampleindent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 hyphenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
exclamdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
exdent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
I
i (italic font) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
ifclear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
ifcommanddefined . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
ifcommandnotdefined . . . . . . . . . . . . . . . . . . . . . . . . 146
F ifdocbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138, 141
file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 ifhtml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138, 140
fill_gaps_in_sectioning . . . . . . . . . . . . . . . . . . . . 194 ifinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
finalout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 ifnotdocbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
findex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 ifnothtml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
firstparagraphindent . . . . . . . . . . . . . . . . . . . . . . . . 29 ifnotinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
float . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 ifnotplaintext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
ifnottex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
flushleft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
ifnotxml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
flushright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
ifplaintext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
fn-name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 ifset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
fonttextsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 iftex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
foo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 ifxml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138, 140
foobar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124, 127 ignore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
footnote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
footnotestyle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 include . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
format. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 indent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
forward-word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 indentedblock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
frenchspacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 indicateurl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
ftable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
inforef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Info-validate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
inlinefmt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
inlinefmtifelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
inlineifclear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
inlineifset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
inlineraw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Command and Variable Index 298
L
l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 P
L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
LaTeX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 page, within @titlepage . . . . . . . . . . . . . . . . . . . . . . . 20
lbracechar{} (literal ‘{’) . . . . . . . . . . . . . . . . . . . . . 101 pagesizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
leq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 paragraphindent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
\linkcolor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 parse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
lisp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
listoffloats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 pdf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
lowersections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 phoo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
pindex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
plaintexinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
M plaintext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
macro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 point. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
\mag (raw TEX magnification) . . . . . . . . . . . . . . . . . 172 pounds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
majorheading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 print. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
makeinfo-buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 printindex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
makeinfo-kill-job . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 ps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
makeinfo-recenter-output-buffer . . . . . . . . . . . 200 pxref . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
makeinfo-region . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
\mathopsup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Q
minus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
move_index_entries_after_items . . . . . . . . . . . . 194 questiondown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
multitable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 quotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
quotedblbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
quotedblleft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
N quotedblright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
quoteleft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
need . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 quoteright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
<newline> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 quotesinglbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
next-error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
noindent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
novalidate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Command and Variable Index 299
R T
r (roman font) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 t (typewriter font) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
raggedright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
raisesections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 <tab>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
rawtext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
rbracechar{} (literal ‘}’) . . . . . . . . . . . . . . . . . . . . . 101 tex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
ref . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Texinfo::Parser module . . . . . . . . . . . . . . . . . . . . . 174
refill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 texinfo-all-menus-update . . . . . . . . . . . . . . . . . . . 261
regenerate_master_menu . . . . . . . . . . . . . . . . . . . . . 194 texinfo-every-node-update. . . . . . . . . . . . . . . . . . 261
registeredsymbol . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 texinfo-format-buffer . . . . . . . . . . . . . . . . . 200, 264
result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 texinfo-format-region . . . . . . . . . . . . . . . . . 200, 264
ringaccent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 texinfo-indent-menu-description . . . . . . . . . . . 263
rmacro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 texinfo-insert-braces . . . . . . . . . . . . . . . . . . . . . . 258
texinfo-insert-@code . . . . . . . . . . . . . . . . . . . . . . . 257
texinfo-insert-@dfn . . . . . . . . . . . . . . . . . . . . . . . . 257
S texinfo-insert-dwim-@ref . . . . . . . . . . . . . . . . . . . 257
texinfo-insert-@end . . . . . . . . . . . . . . . . . . . . . . . . 257
samp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
texinfo-insert-@example . . . . . . . . . . . . . . . . . . . . 258
sansserif (sans serif font) . . . . . . . . . . . . . . . . . . . . . 70
texinfo-insert-@item . . . . . . . . . . . . . . . . . . . . . . . 257
sc (small caps font) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
texinfo-insert-@kbd . . . . . . . . . . . . . . . . . . . . . . . . 257
section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 texinfo-insert-@node . . . . . . . . . . . . . . . . . . . . . . . 257
set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 texinfo-insert-node-lines. . . . . . . . . . . . . . . . . . 262
setchapternewpage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 texinfo-insert-@noindent . . . . . . . . . . . . . . . . . . . 257
@setcontentsaftertitlepage . . . . . . . . . . . . . . . . 244 texinfo-insert-@samp . . . . . . . . . . . . . . . . . . . . . . . 257
setfilename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 texinfo-insert-@table . . . . . . . . . . . . . . . . . . . . . . 257
@setshortcontentsaftertitlepage . . . . . . . . . . . 244 texinfo-insert-@var . . . . . . . . . . . . . . . . . . . . . . . . 258
settitle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 texinfo-make-menu . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
shortcaption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 texinfo-master-menu . . . . . . . . . . . . . . . . . . . . . . . . 260
shortcontents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 texinfo-multiple-files-update . . . . . . . . . . . . . 158
shorttitlepage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 texinfo-multiple-files-update (in brief) . . . 263
simple_menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 texinfo-sequential-node-update . . . . . . . . . . . . 263
slanted (slanted font) . . . . . . . . . . . . . . . . . . . . . . . . . 70 texinfo-show-structure . . . . . . . . . . . . . . . . 259, 276
smallbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 texinfo-start-menu-description . . . . . . . . . . . . 258
smalldisplay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 texinfosxml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
smallexample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 texinfo-tex-buffer . . . . . . . . . . . . . . . . . . . . . . . . . . 264
smallformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76, 79 texinfo-tex-print . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
smallindentedblock . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 texinfo-tex-region . . . . . . . . . . . . . . . . . . . . . . . . . . 264
smalllisp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 texinfo-update-node . . . . . . . . . . . . . . . . . . . . . . . . 261
smallquotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73, 79 textcontent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
sortas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 textdegree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
sp (line spacing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 TeX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
sp (titlepage line spacing) . . . . . . . . . . . . . . . . . . . . . . 21 th . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
<space> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 thischapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
ss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 thischaptername . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
strong. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 thischapternum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 thisfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
sub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 thispage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
subheading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 thissection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
subsection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 thissectionname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
subsubheading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 thissectionnum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
subsubsection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 thistitle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
subtitle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 TH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
summarycontents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 tie (unbreakable interword space) . . . . . . . . . . . . 120
sup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 tieaccent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
syncodeindex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 tindex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
synindex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 title . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
titlefont . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
titlepage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Command and Variable Index 300
today. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 V
top . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25, 36 v (caron) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
validatemenus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
value. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
U var . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
verb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
u (breve accent) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 verbatim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
ubaraccent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 verbatiminclude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
udotaccent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 vindex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
unmacro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 vskip TEX vertical skip . . . . . . . . . . . . . . . . . . . . . . . . 23
unnumbered . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 vtable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
unnumberedsec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
unnumberedsubsec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
unnumberedsubsubsec. . . . . . . . . . . . . . . . . . . . . . . . . . 46 W
up-list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
uref . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
urefbreakstyle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
\urefurlonlylinktrue . . . . . . . . . . . . . . . . . . . . . . . . 59 X
url . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140, 184
\urlcolor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 xref . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 xrefautomaticsectiontitle . . . . . . . . . . . . . . . . . . . 52
301
General Index
! @
¡ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 ‘@’ as continuation in definition commands . . . . 123
" ^
(double low-9 quotation mark) . . . . . . . . . . . . . . 108 ‘^@^H’ for images in Info . . . . . . . . . . . . . . . . . . . . . . . 91
" (undirected double quote character) . . . . . . . . . 108
&
‘&#xhex;’, output from @U . . . . . . . . . . . . . . . . . . . . . 117
A
a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
A4 paper, printing on . . . . . . . . . . . . . . . . . . . . . . . . . 171
’ A5 paper, printing on . . . . . . . . . . . . . . . . . . . . . . . . . 171
’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 å . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
’’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Å . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
<abbr> and <abbrev> tags . . . . . . . . . . . . . . . . . . . . . 67
Abbreviations for keys . . . . . . . . . . . . . . . . . . . . . . . . . 63
( Abbreviations, tagging . . . . . . . . . . . . . . . . . . . . . . . . . 67
Abstract of document . . . . . . . . . . . . . . . . . . . . . . . . . . 27
(dir) as Up node of Top node . . . . . . . . . . . . . . . . . . 35
Abstract syntax tree
representation of documents . . . . . . . . . . . . . . . . 174
, Accents, inserting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
accesskey, customization variable for . . . . . . . . . 189
(single low-9 quotation mark). . . . . . . . . . . . . . . . 108
accesskey, in HTML output of menus . . . . . . . . . 39
accesskey, in HTML output of nodes . . . . . . . . . . 31
– <acknowledgements> Docbook tag . . . . . . . . . . . . . 44
<acronym> tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
-, breakpoint within @code . . . . . . . . . . . . . . . . . . . . 119
Acronyms, tagging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Acute accent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
< Adding a new Info file . . . . . . . . . . . . . . . . . . . . . . . . 203
Additional output formats. . . . . . . . . . . . . . . . . . . . . . . 6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 --add-once, for install-info . . . . . . . . . . . . . . . . 206
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Advice on writing entries. . . . . . . . . . . . . . . . . . . . . . . 96
æ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
> Æ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
after, value for @urefbreakstyle . . . . . . . . . . . . . . 58
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 AFTER_ABOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 AFTER_BODY_OPEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
AFTER_OVERVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
? AFTER_TOC_LINES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Aliases, command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
¿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 --align=column, for install-info . . . . . . . . . . . . 206
General Index 302
W X
@w, for blank items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 xdvi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
W3 consortium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 --xml. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
<warning> Docbook tag . . . . . . . . . . . . . . . . . . . . . . . . 72 XML Docbook output, overview . . . . . . . . . . . . . . . . . 5
Weinberg, Zack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 XML Texinfo output, overview . . . . . . . . . . . . . . . . . . 5
Weisshaus, Melissa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 XML, including raw . . . . . . . . . . . . . . . . . . . . . . . . . . 140
White space in node name . . . . . . . . . . . . . . . . . . . . . 34 --Xopt str . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Whitespace in macros . . . . . . . . . . . . . . . . . . . . . . . . . 148 XPM image format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Whitespace, collapsed around continuations . . . 123 XREF_USE_FLOAT_LABEL . . . . . . . . . . . . . . . . . . . . . . . 190
Whitespace, controlling in conditionals . . . . . . . . 141 XREF_USE_NODE_NAME_ARG . . . . . . . . . . . . . . . . . . . . . 190
Whitespace, inserting . . . . . . . . . . . . . . . . . . . . . . . . . 104 XZ-compressed dir files, reading . . . . . . . . . . . . . . . 206
Whole manual, in Info format . . . . . . . . . . . . . . . . . 280
Width of images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Width of text area . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Y
Widths, defining multitable column . . . . . . . . . . . . 86 Years, in copyright line . . . . . . . . . . . . . . . . . . . . . . . . . 19
Wildcards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
word counting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Words and phrases, marking them. . . . . . . . . . . . . . 60 Z
WORDS_IN_PAGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Zaretskii, Eli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Writing a menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Zuhn, David D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7