An example of printed Texinfo output; page 25 of the official GNU Texinfo manual.
|Original author(s)||Richard M. Stallman
|Initial release||February 1986|
|Stable release||6.0 (June 26, 2015) [±]|
|Written in||C, Perl|
|License||GNU General Public License|
Texinfo is a typesetting syntax used for generating documentation in both on-line and printed form (creating filetypes as dvi, html, pdf, etc., and its own hypertext format, info) with a single source file. It is implemented by a computer program released as free software of the same name, created and made available by the GNU Project from the Free Software Foundation.
The main purpose of Texinfo is to provide a way to easily typeset software manuals. Similar to the LaTeX syntax, all the normal features of a book, such as chapters, sections, cross references, tables and indices are available for use in documents. Using the various output generators that are available for Texinfo, it is possible to keep several documentation types up-to-date (such as on-line documentation provided via a Web site, and printed documentation, as generated using the TeX typesetting system) using only a single source file. As the manual notes, "TeX works with virtually all printers; Info works with virtually all computer terminals; the HTML output works with virtually all Web browsers. Thus Texinfo can be used by almost any computer user."
In order to make it possible for several documentation output formats to be updated all at once, upon changing the original Texinfo (.texi) source file, several syntax converters are available that can be used to generate transliterations of the Texinfo file into other formats. Most of these are created using the makeinfo program, which is part of the GNU Texinfo distribution.
- (Generated via makeinfo --html.) As HTML is the standard language for documents presented on the World Wide Web, this output format can effectively be used to produce online documentation pages. The manual notes that the makeinfo program attempts to restrict its output files to a certain subset of HTML markup that can be read by as many browsers as possible.
- (Generated via texi2dvi.) The Device independent file format is output by the TeX typesetting system, and can be used for generating device-specific commands that can be viewed or printed; for example, translation to PostScript (ps files).
- (Generated via texi2dvi --pdf or texi2pdf.) Based on the PostScript language, this format was developed by Adobe Systems for portable document interchange. Like the PostScript format, it can represent the exact appearance of a document and supports arbitrary scaling. It is intended to be platform-independent and can be viewed with a large variety of software. Texinfo uses the pdftex program, a variant of TeX, to output PDF.
- (Generated via makeinfo --docbook.) This is an XML-based mark-up language for technical documentation that bears some resemblance to Texinfo, in broad outlines. It is also possible to convert Docbook files to Texinfo, using the docbook2X program.
- (Generated via makeinfo --xml.) For general purposes.
- (Generated via makeinfo.) This is a specific format which essentially is a plain text version of the original Texinfo syntax in conjunction with a few control characters to separate nodes and provide navigational elements for menus, cross-references, sections, and so on. The Info format can be viewed with the info program.
Notable is the lack of man as an output format from the standard Texinfo tools. True, Texinfo is used for writing the documentation of GNU software, which typically is used in Unix-like environments such as GNU/Linux, where the traditional format for documentation is man. But the design rationale for the standard Texinfo tools' omission of man as an output format is that man pages have a strict conventional format, used traditionally as quick reference guides, whereas typical Texinfo applications are for tutorials as well as reference manuals. As such, no benefit is seen in expressing Texinfo content in man page format. Moreover, many GNU projects eschew man pages almost completely, referring the reader of the provided man page (which often describes itself as seldom maintained) to the Info document.
However, there are third party products to convert info pages to man pages (e.g. info2man). The benefit is that readers can use man and less/more and do not have to learn the Emacs keybindings for the command-line info program.
Texinfo source file
Texinfo enables structuring a document like a book with chapters, sections, cross references and indices. The source is almost plain text, but technically it is formatted text marked up by commands that begin with "
@". A sample of a part of a source file:
@ifnottex @node Top @top Short Sample @insertcopying @end ifnottex @menu * First Chapter:: The first chapter is the only chapter in this sample. * Index:: Complete index. @end menu
The commands mark structure such as chapters or denote a part of the source to be processed only for certain types of output.
History and status
The Texinfo format was created by Richard M. Stallman, combining another system for print output in use at MIT called BoTeX, with the online Info hyperlinked documentation system, also created by Stallman on top of the TECO implementation of Emacs. BoTeX itself was based an earlier system called Bolio (associated with Dave Moon, and used for documentation of the Lisp Machine), converted to use TeX for its output. Robert Chassell helped Stallman to create the first translator to create Info in Emacs Lisp. The Texinfo software distribution development was led by Brian Fox (up to version 3.8), Karl Berry (through version 5.2), and by Gavin Smith (since Dec. 2014).
Notes and references
- GNU's Who, The GNU Team has grown larger in the last few months: Brian Fox and Opus Goldstein have joined Jay Fenlason as the only employees of the Foundation. Most recently, Brian created a stand-alone texinfo formatter and browser..., February, 1988, GNU's Bulletin, vol. 1 no. 4
- Gnu Status, by Richard M. Stallman. 5. Documentation system. I now have a truly compatible pair of programs which can convert a file of texinfo format documentation into either a printed manual or an Info file. Documentation files are needed for many utilities., February 1986, G N U ' S B U L L E T I N, Volume 1 No.1
- Smith, Gavin (2015-06-26). "Texinfo 6.0 released" (Mailing list). info-gnu. Retrieved 2015-06-29.
- The official Texinfo documentation notes that the first syllable of "Texinfo" is pronounced so as to rhyme with "speck", not "hex"; this pronunciation is derived from the pronunciation of TeX. In the word "TeX", the "Χ" is actually the Greek letter "chi" rather than the English letter "ex". "TeX" is pronounced as if the "Χ" were the last sound in the name "Bach", but "Texinfo" is pronounced as if the "Χ" were a "k". Furthermore, the name "Texinfo" should be written with only a capital "T" and the rest of the letters in lower case.
- What's GNU: Texinfo, Issue 6, Oct 01, 1994, By Arnold Robbins, Linux Journal
- GNU Texinfo Manual, Section 1.14 History
- Richard Stallman, January 8, 2012, post on emacs-devel mailing list: "...Info has existed since 1976 or so, in the original Emacs. At that time, Info files were written by hand, and everyone could edit system files on ITS."
- Daniel Weinreb and David Moon (January 1979), Lisp Machine Manual, Second Preliminary Version