| \input texinfo.tex @c -*-texinfo-*- |
| |
| @setfilename texinfo.info |
| |
| @c Automake automatically updates version.texi to @set VERSION and |
| @c @set UPDATED to appropriate values. |
| @include version.texi |
| @settitle GNU Texinfo @value{VERSION} |
| |
| @c Define a new index for command-line options. |
| @defcodeindex op |
| |
| @c Put everything except function (command, in this case) names in one |
| @c index (arbitrarily chosen to be the concept index). |
| @syncodeindex op cp |
| @syncodeindex pg cp |
| |
| @c finalout |
| |
| @c flag to index command names without extra text in the entry |
| @ifinfo |
| @set commandlookup |
| @end ifinfo |
| @ifhtml |
| @set commandlookup |
| @end ifhtml |
| |
| @microtype on |
| |
| @copying |
| This manual is for GNU Texinfo (version @value{VERSION}, @value{UPDATED}), |
| a documentation system that can produce both online information and a |
| printed manual from a single source using semantic markup. |
| |
| Copyright @copyright{} 1988-2026 Free Software Foundation, Inc. |
| |
| @quotation |
| 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, no Front-Cover Texts, and no Back-Cover |
| Texts. A copy of the license is included in the section entitled |
| ``GNU Free Documentation License''. |
| @end quotation |
| @end copying |
| |
| @documentinfo |
| @title Texinfo |
| @subtitle The GNU Documentation Format |
| @subtitle for Texinfo version @value{VERSION}, @value{UPDATED} |
| |
| @author Robert J. Chassell |
| @author Richard M. Stallman |
| @end documentinfo |
| |
| @publication |
| Published by the Free Software Foundation @* |
| 31 Milk St # 960789 @* |
| Boston, MA 02196 @* |
| USA @* |
| ISBN 1-882114-67-1 @c for version 4.0, September 1999. |
| @c ISBN 1-882114-65-5 is for version 3.12, March 1998. |
| @c ISBN 1-882114-64-7 is for edition 2.24 of November 1996. |
| @c ISBN 1-882114-63-9 is for edition 2.20 of 28 February 1995. |
| |
| @ignore |
| @sp 1 |
| Cover art by Etienne Suvasa. |
| @end ignore |
| @end publication |
| |
| @maketitle |
| |
| @dircategory Texinfo documentation system |
| @direntry |
| * Texinfo: (texinfo). The GNU documentation format. |
| * install-info: (texinfo)Invoking install-info. Update info/dir entries. |
| * texi2any: (texinfo)Invoking texi2any. Translate Texinfo source. |
| * makeinfo: (texinfo)Invoking texi2any. Translate Texinfo source. |
| * pod2texi: (texinfo)Invoking pod2texi. Translate Perl Pod to Texinfo. |
| * texi2dvi: (texinfo)Format with texi2dvi. Print Texinfo documents. |
| * texi2pdf: (texinfo)PDF Output. PDF output for Texinfo. |
| * pdftexi2dvi: (texinfo)PDF Output. PDF output for Texinfo. |
| * texindex: (texinfo)Format with tex/texindex. Sort Texinfo index files. |
| @end direntry |
| |
| @set txiindexatsignignore |
| @set txiindexbackslashignore |
| @set txiindexlessthanignore |
| @set txiindexhyphenignore |
| |
| |
| @summarycontents |
| @contents |
| |
| |
| @node Top |
| @top Texinfo |
| |
| This manual is for GNU Texinfo (version @value{VERSION}, @value{UPDATED}), |
| a documentation system that can produce both online information and a |
| printed manual from a single source using semantic markup. |
| |
| @ifinfo |
| The first part of this master menu lists the major nodes in this Info |
| document, including the @@-command and concept indices. The rest of |
| the menu lists all the lower-level nodes in the document. |
| @end ifinfo |
| |
| |
| @node Copying Conditions |
| @nodedescription Your rights. |
| @unnumbered Texinfo Copying Conditions |
| @cindex Copying conditions |
| @cindex Conditions for copying Texinfo |
| @cindex Free software |
| @cindex Libre software |
| |
| GNU Texinfo is @dfn{free software}; this means that everyone is free |
| to use it and free to redistribute it on certain conditions. Texinfo |
| is not in the public domain; it is copyrighted and there are |
| restrictions on its distribution, but these restrictions are designed |
| to permit everything that a good cooperating citizen would want to do. |
| What is not allowed is to try to prevent others from further sharing |
| any version of Texinfo that they might get from you. |
| |
| Specifically, we want to make sure that you have the right to give away |
| copies of the programs that relate to Texinfo, that you receive source |
| code or else can get it if you want it, that you can change these |
| programs or use pieces of them in new free programs, and that you know |
| you can do these things. |
| |
| To make sure that everyone has such rights, we have to forbid you to |
| deprive anyone else of these rights. For example, if you distribute |
| copies of the Texinfo related programs, you must give the recipients all |
| the rights that you have. You must make sure that they, too, receive or |
| can get the source code. And you must tell them their rights. |
| |
| Also, for our own protection, we must make certain that everyone finds |
| out that there is no warranty for the programs that relate to Texinfo. |
| If these programs are modified by someone else and passed on, we want |
| their recipients to know that what they have is not what we distributed, |
| so that any problems introduced by others will not reflect on our |
| reputation. |
| |
| The precise conditions of the licenses for the programs currently |
| being distributed that relate to Texinfo are found in the General |
| Public Licenses that accompany them. This manual is covered by the |
| GNU Free Documentation License (@pxref{GNU Free Documentation |
| License}). |
| |
| |
| @node Overview |
| @nodedescription Texinfo in brief. |
| @chapter Overview of Texinfo |
| @cindex Overview of Texinfo |
| @cindex Texinfo overview |
| @cindex Using Texinfo in general |
| @cindex Texinfo, introduction to |
| @cindex Introduction to Texinfo |
| @anchor{Using Texinfo} @c merged node |
| |
| @dfn{Texinfo} is a documentation system that uses a single source file |
| to produce both online information 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 format, including chapters, |
| sections, cross-references, and indices. From the same Texinfo source |
| file, you can create HTML output suitable for use with a web |
| browser, you can create an Info file for use in GNU Emacs or other |
| Info-reading programs, and also create DocBook, EPUB 3, or @LaTeX{} files. |
| |
| @cindex Source file format |
| @cindex Semantic markup |
| A Texinfo source file is a plain text file containing text interspersed |
| with @dfn{@@-commands} (words preceded by an @samp{@@}) that tell the |
| Texinfo processors what to do. Texinfo's markup commands are almost |
| entirely @dfn{semantic}; that is, they specify the intended meaning |
| of text in the document, rather than physical formatting instructions. |
| |
| Output to most output formats is handled by the @command{texi2any} |
| program. @xref{Generic Translator @command{texi2any}}. |
| The exception is when Texinfo code is processed by @TeX{} to DVI or |
| PDF (@pxref{Printed Books}, below). |
| Emacs also offers commands for converting Texinfo code to Info |
| (@pxref{@code{texinfo-format} commands}). |
| |
| GNU Emacs has a special mode, called Texinfo mode, that provides various |
| Texinfo-related features. (@xref{Texinfo Mode}.) |
| |
| @cindex Limited scope of Texinfo |
| 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, Texinfo is not intended to be a general-purpose |
| formatting program. It provides almost no commands for controlling |
| the final formatting, so may be inappropriate for your needs if you |
| want to lay out a newspaper, devise a glossy magazine ad, or follow |
| the exact formatting requirements of a publishing house. |
| |
| @cindex Spelling of Texinfo |
| @cindex Pronunciation of Texinfo |
| 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 @samp{X} were |
| the last sound in the name `Bach'. In the word @TeX{}, the @samp{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 @uref{https://www.gnu.org/doc/, GNU documentation web page}. |
| |
| |
| @node Reporting Bugs |
| @nodedescription Submitting effective bug reports. |
| @section Reporting Bugs |
| |
| @cindex Bugs, reporting |
| @cindex Suggestions for Texinfo, making |
| @cindex Reporting bugs |
| We welcome bug reports and suggestions for any aspect of the Texinfo |
| system: programs, documentation, installation, etc. Please email them |
| to @email{bug-texinfo@@gnu.org}. You can get the latest version of |
| Texinfo via its home page, @uref{https://www.gnu.org/software/texinfo}. |
| |
| @cindex Checklist for bug reports |
| For bug reports, please include enough information for the maintainers |
| to reproduce the problem. Generally speaking, that means: |
| |
| @itemize @bullet |
| @item The version number of Texinfo and the program(s) or manual(s) involved. |
| @item The contents of any input files necessary to reproduce the bug. |
| @item Precisely how you ran any program(s) involved. |
| @item A description of the problem and samples of any erroneous output. |
| @item Hardware and operating system names and versions. |
| @item Anything else that you think would be helpful. |
| @end itemize |
| |
| When in doubt whether something is needed or not, include it. It's |
| better to include too much than to leave out something important. |
| |
| It is critical to send an actual input file that reproduces the |
| problem. |
| |
| Any problems with the Info reader in Emacs should be reported to |
| the Emacs developers: see @ref{Bugs,,, emacs, The GNU Emacs Manual}. |
| |
| @cindex Patches, contributing |
| Patches are welcome; if possible, please make them with @samp{@w{diff -c}}, |
| @samp{@w{diff -u}} (@pxref{,,, diffutils, Comparing and Merging Files}), |
| or @samp{git diff} and include @file{ChangeLog} entries (@pxref{Change Logs,,, |
| standards, GNU Coding Standards}), and follow the existing coding style. |
| |
| |
| @node Output Formats |
| @nodedescription Overview of the supported output formats. |
| @section Output Formats |
| @cindex Output formats |
| @cindex Back-end output formats |
| |
| Here is an overview of the output formats currently supported by Texinfo. |
| |
| @table @asis |
| @cindex Info output, overview |
| @item Info |
| (Generated via @command{texi2any}.) Info format is mostly a plain |
| text transliteration of the Texinfo source. It adds a few control |
| characters to provide navigational information for cross-references, |
| indices, and so on. The Emacs Info subsystem (@pxref{Top,,, info, |
| Info}), and the standalone @command{info} program (@pxref{Top,,, |
| info-stnd, GNU Info}), among others, can read these files. @xref{Info |
| Files}, and @ref{Creating and Installing Info Files}. |
| |
| @cindex Plain text output, overview |
| @item Plain text |
| (Generated via @command{texi2any --plaintext}.) This is almost the |
| same as Info output with the navigational control characters |
| omitted. |
| |
| @cindex HTML output @subentry overview |
| @item HTML |
| @c @cindex Mozilla |
| @c @cindex Lynx |
| @c @cindex Emacs-W3 |
| (Generated via @command{texi2any --html}.) HTML, standing for Hyper |
| Text Markup Language, is the language for writing documents on the World |
| Wide Web. Web browsers |
| @c such as Mozilla, Lynx, and Emacs-W3 |
| can render this language online. There |
| are many versions of HTML, both different standards and |
| browser-specific variations. @command{texi2any} uses a subset |
| of the language that can be interpreted by any common browser, |
| intentionally not using many newer or less widely-supported tags. |
| Although the native output is thus rather plain, it can be customized |
| at various levels, if desired. @xref{Generating HTML}. |
| |
| @cindex EPUB 3 output, overview |
| @item EPUB 3 |
| (Generated via @command{texi2any --epub3}.) |
| EPUB is a format designed for reading electronic books on |
| portable devices. It is a derivative of HTML@. The format was |
| developed by the International Digital Publishing Forum (IDPF), |
| which is now part of the World Wide Web Consortium (W3C)@. The |
| latest major revision, EPUB 3, dates from 2011. |
| |
| |
| @cindex DVI output, overview |
| @pindex dvips @r{(program)} |
| @pindex xdvi |
| @item DVI |
| (Generated via @command{texi2dvi}.) The DeVIce Independent binary |
| format is output by the @TeX{} typesetting program |
| (@uref{http://tug.org}). This is then read by a DVI `driver', which |
| knows the actual device-specific commands that can be viewed or |
| printed, notably Dvips for translation to PostScript (@pxref{Top,,, |
| dvips, Dvips}) and Xdvi for viewing on an X display |
| (@uref{http://sourceforge.net/projects/xdvi/}). @xref{Hardcopy |
| with @TeX{}}. (Be aware that the Texinfo language is very different |
| from @TeX{}'s usual languages: plain @TeX{}, @LaTeX{}, Con@TeX{}t, |
| etc.) |
| |
| @cindex PostScript output, overview |
| @item PostScript |
| (Generated via @command{texi2dvi --ps}.) PostScript is a page |
| description language that became widely used around 1985 and is still |
| used today. @uref{https://en.wikipedia.org/wiki/PostScript} gives a |
| basic description and more preferences. By default, Texinfo uses the |
| @command{dvips} program to convert @TeX{}'s DVI output to PostScript. |
| @xref{Top,,, dvips, Dvips}. |
| |
| @cindex PDF output, overview |
| @cindex Beebe, Nelson |
| @item PDF |
| (Generated via @command{texi2dvi --pdf} or @command{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, including fonts and |
| graphics, and supporting arbitrary scaling. It is intended to be |
| platform-independent and easily viewable, among other design goals; |
| @uref{https://en.wikipedia.org/wiki/Portable_Document_Format} and |
| @uref{http://tug.org/TUGboat/tb22-3/tb72beebe-pdf.pdf} have some |
| background. By default, Texinfo uses the @command{pdftex} program, an |
| extension of @TeX{}, to output PDF; see |
| @uref{http://tug.org/applications/pdftex}. @xref{PDF Output}. |
| |
| @cindex LaTeX output, overview |
| @item @LaTeX{} |
| (Generated via @command{texi2any --latex}.) This is a typesetting |
| system built on top of @TeX{}. It was originally released by |
| Leslie Lamport in 1984. @LaTeX{} adds more definitions to those |
| of @TeX{} and has a wide range of packages built on it. @LaTeX{} is |
| ubiquitous in academic literature. The current version of @LaTeX{} |
| is under active development; more information is available online |
| at @uref{https://www.latex-project.org/}. |
| |
| The @LaTeX{} output can be further processed into DVI, PostScript, |
| or PDF@. In theory, the @LaTeX{} output should allow for much more |
| customizability of the output than would be possible with the plain |
| @TeX{} implementation of Texinfo. |
| |
| |
| @cindex DocBook output, overview |
| @cindex XML DocBook output, overview |
| @item DocBook |
| (Generated via @command{texi2any --docbook}.) This is an XML-based |
| format, primarily for technical |
| documentation. It therefore bears some resemblance, in broad |
| outline, to Texinfo. See @uref{http://www.docbook.org}. Various |
| converters from DocBook @emph{to} Texinfo have also been developed; |
| see the Texinfo web pages. |
| @end table |
| |
| |
| @node Info Files |
| @nodedescription What is an Info file? |
| @section Info Files |
| @cindex Info files |
| |
| As mentioned above, Info format is mostly a plain text transliteration |
| of the Texinfo source, with the addition of a few control characters |
| to separate nodes and provide navigational information, so that |
| Info-reading programs can operate on it. |
| |
| Info files are nearly always created by processing a Texinfo source |
| document. @command{texi2any}, also known as @command{makeinfo}, is |
| the principal command that converts a Texinfo file into an Info file; |
| @pxref{Generic Translator @command{texi2any}}. |
| |
| Generally, you enter an Info file through a node that by convention is |
| named `Top'. This node normally contains just a brief summary of the |
| file's purpose, and a large menu through which the rest of the file is |
| reached. From this node, you can either traverse the file |
| systematically by going from node to node, or you can go to a specific |
| node listed in the main menu, or you can search the index menus and then |
| go directly to the node that has the information you want. Alternatively, |
| with the standalone Info program, you can specify specific menu items on |
| the command line (@pxref{Top,,, info, Info}). |
| |
| If you want to read through an Info file in sequence, as if it were a |
| printed manual, you can hit @key{SPC} repeatedly, or you get the whole |
| file with the advanced Info command @kbd{g *}. (@xref{Advanced,, |
| Advanced Info commands, info, Info}.) |
| |
| The @file{dir} file in the @file{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. |
| |
| @cindex URI syntax for Info |
| If you wish to refer to an Info file via a URI, you can use the |
| (unofficial) syntax exemplified by the following. This works with |
| Emacs/W3, for example: |
| @example |
| info:emacs#Dissociated%20Press |
| info:///usr/info/emacs#Dissociated%20Press |
| info://localhost/usr/info/emacs#Dissociated%20Press |
| @end example |
| |
| The @command{info} program itself does not follow URIs of any kind. |
| |
| |
| @node Printed Books |
| @nodedescription Characteristics of a printed book or manual. |
| @section Printed Books |
| @cindex Printed book and manual characteristics |
| @cindex Manual characteristics, printed |
| @cindex Book characteristics, printed |
| @cindex Texinfo printed book characteristics |
| @cindex Characteristics, printed books or manuals |
| |
| @cindex Knuth, Donald |
| A Texinfo file can be formatted and typeset as a printed book or |
| manual. To do this, you need @TeX{}, a sophisticated typesetting |
| program written by Donald Knuth of Stanford University. It is not part |
| of the Texinfo distribution. |
| |
| Texinfo provides a file @file{texinfo.tex} that contains the definitions |
| that @TeX{} uses when it typesets a Texinfo file. |
| You can get the latest version of @file{texinfo.tex} from |
| the Texinfo home page, @uref{https://www.gnu.org/software/texinfo/}. |
| |
| A Texinfo-based book is similar to any other typeset, printed work: it |
| can have a title page, copyright page, table of contents, and preface, |
| as well as chapters, numbered or unnumbered sections and subsections, |
| page headers, cross-references, footnotes, and indices. |
| |
| @TeX{} is very powerful and has a great many features. However, |
| because a Texinfo file must be able to present information both on a |
| character-only terminal in Info form and in a typeset book, the |
| formatting commands that Texinfo supports are necessarily limited. |
| |
| @xref{Hardcopy with @TeX{}}, for more information on processing a |
| manual with @TeX{}. |
| |
| |
| @node History |
| @nodedescription Acknowledgements, contributors and genesis. |
| @section History |
| |
| @cindex Stallman, Richard M. |
| @cindex Chassell, Robert J. |
| @cindex Fox, Brian |
| @cindex Berry, Karl |
| @cindex Smith, Gavin |
| Richard M. Stallman invented the Texinfo format, wrote the initial |
| processors, and created Edition 1.0 of this manual. Robert@tie{}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. Karl Berry continued maintenance |
| from Texinfo 3.8 (manual edition 2.22), and Gavin Smith has continued |
| maintenance since Texinfo 6.0. |
| |
| @cindex History of Texinfo |
| @cindex Texinfo history |
| @subheading Beginnings |
| |
| @cindex NLS |
| Richard Stallman included an on-line, hypertext help system called |
| Info in the original implementation of Emacs (in 1975/6). |
| Stallman had been inspired after seeing a presentation a couple of years |
| earlier on the ``NLS'' hypertext system of Douglas Engelbart. |
| |
| @ignore |
| From rms@santafe.edu Sat Jan 23 03:41:05 1999 |
| Status: RO |
| X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] |
| [nil nil nil nil nil nil nil nil nil nil nil nil "^Date:" nil nil nil ni |
| +l nil nil nil nil] |
| nil) |
| Reply-to: rms@gnu.org |
| Content-Length: 331 |
| Date: Sat, 23 Jan 1999 01:40:59 -0700 (MST) |
| From: Richard Stallman <rms@gnu.org> |
| To: bob@rattlesnake.com |
| CC: karl@cs.umb.edu, kama@hippo.fido.de, bug-texinfo@gnu.org |
| Subject: Re: Q: Some history questions |
| |
| People at MIT also developed a nifty on-line help format called Info. |
| |
| That was me. I developed Info as a sort of "poor man's hypertext" |
| after I saw a presentation on NLS (Englebart's hypertext system). I |
| THINK this was in 1974, actually before Emacs, and that after |
| developing Emacs in 1975 I adapted Info to work with it. |
| @end ignore |
| |
| @cindex Scribe |
| @cindex Reid, Brian |
| In another development, in the 1970's at CMU, Brian Reid developed |
| a program and format named Scribe to mark up documents for printing. |
| It used the @code{@@} 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. |
| |
| @cindex Bolio |
| @cindex Bo@TeX{} |
| Meanwhile, people at MIT developed another format called Bolio. |
| Richard Stallman (RMS) worked on converting Bolio to use @TeX{} as |
| its typesetting language, resulting in Bo@TeX{}. The earliest Bo@TeX{} |
| version seems to have been 0.02 on October 31, 1984. |
| |
| Bo@TeX{} could only be used as a markup language for documents to be |
| printed, not for online documents. RMS combined Bo@TeX{} and Info |
| to create Texinfo, a mark-up language for text that is intended to |
| be read both online and as printed hard copy. |
| |
| The original translator to create Info was written |
| (primarily by RMS and Bob Chassell) in Emacs Lisp, namely the |
| @code{texinfo-format-buffer} and other functions. In the early 1990s, |
| Brian Fox reimplemented the conversion program in C, now called |
| @command{makeinfo}, as well as the standalone @command{info} program. |
| |
| @subheading Reimplementing in Perl |
| |
| @cindex Cons, Lionel |
| @cindex Dumas, Patrice |
| In 2012, the C @command{makeinfo} was itself replaced by a Perl |
| implementation generically called @command{texi2any}. This version |
| was initially based on @command{texi2html}, an independent program originally |
| written by Lionel Cons, later with substantial work by many others. |
| The features needed to make @command{texi2html} a replacement for |
| @command{makeinfo} were implemented by Patrice Dumas. That program, however, |
| was never released. |
| |
| @cindex Tree representation of documents |
| @cindex Syntax tree representation of documents |
| @cindex Abstract syntax tree representation of documents |
| The current implementation (also written by Patrice Dumas) inherited the design |
| of customization and other features from @command{texi2html} (for more on |
| @command{texi2html} compatibility, @pxref{@command{texi2html}}). However, |
| @command{texi2any} was a full reimplementation: unlike @command{texi2html}, it |
| constructs a tree-based representation of the input document for all back-ends |
| to work from. |
| |
| The new Perl program was intended to have the following advantages over |
| the old C program: |
| |
| @itemize @bullet |
| @item HTML customization. Many GNU and other free software packages |
| had been happily using the HTML customization features in |
| @command{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 @command{texi2html} to a C program would have been an |
| enormous effort at that time. |
| |
| @item Unicode, and multilingual support generally, especially of east |
| Asian languages. At that time, doing it in C would have been tantamount |
| to rewriting the entire program. |
| |
| @item Additional back-ends. The @command{makeinfo} code had become |
| convoluted to the point where adding a new back-end was quite complex, |
| requiring complex interactions with existing back-ends. In contrast, |
| the new implementation provides a clean tree-based representation for |
| all back-ends to work from. People had requested numerous different |
| back-ends (@LaTeX{}, the latest (X)HTML, @dots{}); this change made them |
| much more feasible to implement. |
| |
| @cindex @command{texi2any}, as reference implementation |
| @cindex Reference implementation |
| @cindex Implementation, @command{texi2any} as reference |
| @anchor{Reference Implementation}@c |
| @item @command{texi2any} was intended to be a reference implementation |
| that defines parts of the language not fully specified by the manual, |
| and to provide a reference for command-line options for any other |
| program that might process Texinfo in the future. |
| |
| @end itemize |
| |
| @cindex Future of Texinfo implementations |
| At the time, |
| the new Perl program was much slower than the old C program. |
| Since then, the parser, part of the Info converter |
| and the HTML converter as a whole have been translated to C, leading to |
| important gains in speed compared to the pure Perl implementation of |
| @command{texi2any}. The main program has also been translated to C. The |
| @command{texi2any} C implementation embeds a Perl interpreter for the parts |
| that require Perl. |
| |
| |
| @node Adding Output Formats |
| @nodedescription Man pages and implementing new formats. |
| @section Adding Output Formats |
| @cindex Additional output formats |
| |
| The output formats in the previous sections handle a wide variety of |
| usage, but of course there is always room for more. |
| |
| @cindex Output formats, supporting more |
| If you are a programmer and would like to contribute to the GNU |
| project by implementing additional output formats for Texinfo, that |
| would be excellent. The way to do this that would be most useful is |
| to write a new back-end for @command{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 |
| @file{tta/perl/Texinfo/Convert/Converter.pm} is a good place to start if you are |
| willing to develop in Perl |
| (@pxref{Texinfo::Convert::Converter,,,texi2any_internals,Texinfo modules |
| documentation}). @xref{Generic Translator @command{texi2any}}. |
| |
| @cindex Texinfo parsers, discouraging more |
| 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. |
| |
| @cindex Texinfo language tests |
| @cindex Tests, of Texinfo language |
| Extensive tests of the language and processor are |
| developed with @command{texi2any}; we encourage anyone thinking |
| of writing a program to process Texinfo to use these test cases |
| and verify that they give correct results with your new program. |
| |
| @cindex Man page output, not supported |
| 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. |
| |
| @pindex help2man |
| @cindex O'Dea, Brendan |
| As an alternative way to support man pages, you may find the program |
| @command{help2man} to be useful. It generates a traditional man page |
| from the @samp{--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 |
| @uref{https://www.gnu.org/software/help2man}. |
| |
| |
| @node Writing a Texinfo File |
| @anchor{Beginning and Ending a File}@c old name |
| @nodedescription Format of a Texinfo source file. |
| @chapter Writing a Texinfo File |
| |
| This chapter describes Texinfo syntax and what is required in a Texinfo |
| file, and gives a short sample file. |
| |
| |
| @node Conventions |
| @nodedescription General rules for writing a Texinfo file. |
| @section General Syntactic Conventions |
| @cindex General syntactic conventions |
| @cindex Syntactic conventions |
| @cindex Conventions, syntactic |
| @cindex Characters, basic input |
| @anchor{Formatting Commands} @c old name |
| |
| This section describes the general conventions used in all Texinfo documents. |
| |
| @itemize @bullet |
| @item |
| @cindex Source files, characters used |
| All printable ASCII characters except @samp{@@}, @samp{@{} and |
| @samp{@}} can appear in a Texinfo file and stand for themselves. |
| @samp{@@} is the escape character which introduces commands, while |
| @samp{@{} and @samp{@}} are used to surround arguments to certain |
| commands. To put one of these special characters into the document, put |
| an @samp{@@} character in front of it, like this: @samp{@@@@}, |
| @samp{@@@{}, and @samp{@@@}}. |
| |
| @item |
| @cindex @sortas{at} @@-commands |
| @cindex Formatting commands |
| In a Texinfo file, the commands you write to describe the contents of |
| the manual are preceded by an @samp{@@} character; they are called |
| @dfn{@@-commands}. (The @samp{@@} in Texinfo has the same meaning that |
| @samp{\} has in plain @TeX{}.) |
| |
| @cindex Braces, when to use |
| Depending on what they do or what arguments they take, you |
| need to write @@-commands on lines of their own, or as part of |
| sentences. As a general rule, a command requires braces if it mingles |
| among other text; but it does not need braces if it is on a line of its |
| own. For more details of Texinfo command syntax, see @ref{Command |
| Syntax}. |
| |
| |
| @item |
| Whitespace following an @@-command name is optional and (usually) |
| ignored if present. The exceptions are contexts when whitespace is |
| significant, e.g., an @code{@@example} environment. |
| |
| |
| @item |
| Texinfo supports the usual quotation marks used in English and in |
| other languages; see @ref{Inserting Quotation Marks}. |
| |
| @item |
| @cindex Multiple dashes in source |
| @cindex Dashes in source |
| @cindex Hyphens in source, two or three in a row |
| @cindex Em dash, producing |
| @cindex En dash, producing |
| Use three hyphens in a row, @samp{---}, to produce a long dash---like |
| this (called an @dfn{em dash}), used for punctuation in sentences. |
| Use two hyphens, @samp{--}, to produce a medium dash (called an |
| @dfn{en dash}), used primarily for numeric ranges, as in ``June |
| 25--26''. Use a single hyphen, @samp{-}, to produce a standard hyphen |
| used in compound words. For display on the screen, Info reduces three |
| hyphens to two and two hyphens to one (not transitively!). Of course, |
| any number of hyphens in the source remain as they are in literal |
| contexts, such as @code{@@code} and @code{@@example}. |
| |
| @item |
| @emph{Whitespace}. Texinfo files are plain text files composed of lines |
| terminated by the usual newline character (line feed). Texinfo processors |
| read input one line at a time. Paragraphs are terminated by an empty |
| line or a line containing only spaces. A sequence of several spaces in |
| text is usually treated the same as a single space (except in |
| verbatim modes). |
| |
| @cindex Form feed character |
| @cindex @kbd{CTRL-l} |
| |
| Form feed (@kbd{CTRL-l}) characters terminate any open paragraph. |
| Other form feeds, as well other ASCII whitespace (tab, carriage return) |
| are treated the same as space characters (although the results may |
| differ depending on the output format). Hence, there is not much point |
| in using these whitespace characters in documents. Non-ASCII spaces, |
| such as Unicode ``em space'', are not recognized as whitespace at all, |
| and will be treated as regular, non-whitespace characters. |
| |
| However, in verbatim modes, for example in code samples, tab characters |
| may produce the correct formatting in the output. |
| |
| @ignore @c too detailed for the manual, but kept for implementation tips |
| @item |
| Form feed characters outside of a paragraph are handled as follows: |
| |
| @table @asis |
| @item PDF/DVI |
| Ignored between paragraphs. |
| |
| @item LaTeX |
| Ignored in contexts where spaces are ignored except after specific |
| commands closing braces (@code{@@caption} for example). Left as is |
| in the output otherwise. |
| @c Written as @code{\par@{@}}, a @LaTeX{} macro that starts a paragraph. |
| |
| @item Info |
| Ignored in contexts where spaces are ignored except after specific |
| commands closing braces (@code{@@caption} for example). In other |
| contexts, they may be treated as regular spaces (and thus consolidated |
| with surrounding whitespace). |
| |
| @item HTML |
| Written as a numeric entity except contexts where spaces are ignored; |
| for example, in @samp{@@footnote@{ ^L foo@}}, the form feed is |
| ignored. |
| |
| @item XML |
| Removed format. |
| Keep them everywhere; in attributes, escaped as @samp{\f}; also, |
| @samp{\} is escaped as @samp{\\} and newline as @samp{\n}. |
| |
| @item DocBook |
| Completely removed, as they are not allowed. |
| @end table |
| |
| As you can see, because of these differing requirements of the output |
| formats, it's not possible to use form feeds completely portably. |
| @end ignore |
| |
| @end itemize |
| |
| |
| @node Comments |
| @nodedescription Writing comments and ignored text in general. |
| @section Comments |
| |
| @cindex Comments |
| @findex comment |
| @findex c |
| |
| You can write comments in a Texinfo file by using the @code{@@comment} |
| command, which may be abbreviated to @code{@@c}. Such comments are |
| for a person looking at the Texinfo source file. All the text on a |
| line that follows either @code{@@comment} or @code{@@c} is a comment; |
| the rest of the line does not appear in the visible output. (To be |
| precise, the character after the @code{@@c} or @code{@@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 @code{@@comment} or @code{@@c} in the middle |
| of a line, and only the text that follows after the @code{@@comment} |
| or @code{@@c} command does not appear; but some commands, such as |
| @code{@@settitle}, work on a whole line. You cannot use @code{@@comment} |
| or @code{@@c} within a line beginning with such a command. |
| |
| @findex DEL @r{(comment character)} |
| @cindex Catcode for comments in @TeX{} |
| In cases of nested command invocations, complicated macro definitions, |
| etc., @code{@@c} and @code{@@comment} may provoke an error when |
| processing with @TeX{}. Therefore, you can also use the @kbd{DEL} |
| character (ASCII 127 decimal, 0x7f hex, 0177 octal) as a true @TeX{} |
| comment character (catcode 14, in @TeX{} internals). Everything on |
| the line after the @kbd{DEL} will be ignored and the next line will |
| be merged. |
| |
| @cindex Ignored text |
| @cindex Unprocessed text |
| @findex ignore |
| You can also have long stretches of text ignored by the Texinfo |
| processors with the @code{@@ignore} and @code{@@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 @code{@@ignore} |
| and @code{@@end ignore} for writing comments. (For some caveats |
| regarding nesting of such commands, @pxref{Conditional Nesting}.) |
| |
| |
| @node Minimum |
| @nodedescription What a Texinfo file must have. |
| @section What a Texinfo File Must Have |
| @cindex Minimal Texinfo file (requirements) |
| @cindex Required in Texinfo file |
| @cindex Texinfo file minimum |
| |
| By convention, the name of a Texinfo file ends with one of the |
| extensions @file{.texi}, @file{.texinfo}, @file{.txi}, or |
| @file{.tex}. Using @file{.tex} is discouraged as this extension |
| is already used by @TeX{} and @LaTeX{} input files. The most common |
| and recommended extension is @file{.texi}. The name of a Texinfo |
| file should only contain ASCII characters. |
| |
| The output name is based on the input file name, in the default case. |
| First, any of the extensions @file{.texi}, @file{.tex}, @file{.txi}, |
| or @file{.texinfo} is removed from the input file name; then, |
| the output format specific extension is added---@file{.html} when |
| generating HTML, @file{.info} when generating Info, etc. |
| The output name should only contain ASCII |
| characters@footnote{@command{texi2any} can handle non ASCII characters |
| in input file names, but non ASCII characters in output name will create |
| problems for some output formats, especially for cross-references.}. |
| |
| @cindex Requirements for formatting |
| @cindex Minimal requirements for formatting |
| @cindex Formatting requirements |
| In order to be made into a printed manual, a Texinfo file must begin |
| with a line like this: |
| |
| @example |
| @group |
| \input texinfo |
| @end group |
| @end example |
| |
| @noindent |
| The contents of the file follow this beginning, and then you |
| must end the Texinfo source with a line like this: |
| |
| @example |
| @@bye |
| @end example |
| |
| @findex \input @r{(raw @TeX{} startup)} |
| |
| The @code{@@bye} line at the end of the file on a line of its own tells |
| @TeX{} that the file is ended and to stop formatting. If you |
| leave this out, you'll be dumped at @TeX{}'s prompt at the end of the |
| run. |
| |
| Furthermore, you will usually provide a Texinfo file with a title, |
| a title page, indices, and the like, all of which are explained in |
| this manual. But the minimum, which can be useful for short |
| documents, is just the one line at the beginning and the one line |
| at the end. |
| |
| Without additional information, the input and output encodings are |
| assumed to be UTF-8, an universal codeset compatible with 7-bit |
| ASCII. |
| |
| |
| @node Short Sample Texinfo File |
| @nodedescription A short sample Texinfo file. |
| @anchor{Short Sample}@c |
| @anchor{Sample Beginning}@c |
| @section Short Sample |
| @cindex Sample Texinfo file, no comments |
| |
| Here is a short sample Texinfo file. |
| |
| @example |
| \input texinfo |
| @@settitle Sample Manual 1.0 |
| |
| @@copying |
| This is a short example of a complete Texinfo file. |
| |
| Copyright @@copyright@{@} 2026 Free Software Foundation, Inc. |
| @@end copying |
| @@documentinfo |
| @@title Sample Title |
| @@end documentinfo |
| @@maketitle |
| |
| @@contents |
| |
| @@node Top |
| @@top GNU Sample |
| |
| This manual is for GNU Sample |
| (version @@value@{VERSION@}, @@value@{UPDATED@}). |
| |
| @@node First Chapter |
| @@nodedescription The first chapter is the only chapter in this sample. |
| @@chapter First Chapter |
| |
| @@cindex chapter, first |
| This is the first chapter. |
| @@cindex index entry, another |
| |
| @group |
| Here is a numbered list. |
| |
| @@enumerate |
| @@item |
| This is the first item. |
| |
| @@item |
| This is the second item. |
| @@end enumerate |
| @end group |
| |
| |
| @@node First Section |
| @@section First Section |
| |
| First section of first chapter. |
| |
| |
| @@node Second Section |
| @@section Second Section |
| |
| Second section of first chapter. |
| |
| |
| @@node Index |
| @@nodedescription Complete Index |
| @@unnumbered Index |
| |
| @@printindex cp |
| |
| @@bye |
| @end example |
| |
| |
| @node Texinfo File Header |
| @nodedescription The first lines. |
| @section Texinfo File Header |
| @cindex Header for Texinfo files |
| @cindex Texinfo file header |
| |
| Texinfo files start with the line: |
| |
| @example |
| \input texinfo |
| @end example |
| |
| The @samp{\input texinfo} line tells @TeX{} to use the |
| @file{texinfo.tex} file, which tells @TeX{} how to translate the Texinfo |
| @@-commands into @TeX{} typesetting commands. (Note the use of the |
| backslash, @samp{\}; this is correct for @TeX{}.) |
| |
| It makes sense to include any command that affects document formatting |
| as a whole in the header. The @code{@@settitle} line is usually |
| present at the beginning of the header: |
| |
| @example |
| @@settitle Sample Manual 1.0 |
| @end example |
| |
| The @code{@@settitle} line specifies a title for the page headers |
| (or footers) of the printed manual, and the default title and document |
| description for the @samp{<head>} in HTML@. @code{@@synindex} |
| (@pxref{@code{@@synindex}}), for instance, is another command often |
| included in the header. |
| |
| The start of the Texinfo file up to the first content that is output |
| as part of the main body of the document is the @dfn{preamble}. |
| It includes the header, @ref{Document Permissions} and @ref{Titlepage & Copyright Page} |
| specification. It is important for the @LaTeX{} output format as the |
| end of preamble is where the @code{\begin@{document@}} line is output. In |
| other output formats it may be used to determine how some special output is |
| formatted, for example @ref{@code{@@copying}} output as a comment |
| at the beginning of output files, or the language used in file headers. |
| |
| |
| |
| @node First Line |
| @subsection The First Line of a Texinfo File |
| @nodedescription The first line of a Texinfo file. |
| @cindex First line of a Texinfo file |
| @cindex Beginning line of a Texinfo file |
| @cindex Header of a Texinfo file |
| |
| Every Texinfo file that is to be the top-level input to @TeX{} must begin |
| with a line that looks like this: |
| |
| @example |
| \input texinfo |
| @end example |
| |
| When the file is processed by @TeX{}, the @samp{\input texinfo} command |
| tells @TeX{} to load the macros needed for processing a Texinfo file. |
| These are in a file called @file{texinfo.tex}, which should have been |
| installed on your system along with either the @TeX{} or Texinfo |
| software. @TeX{} uses the backslash, @samp{\}, to mark the beginning of |
| a command, exactly as Texinfo uses @samp{@@}. The @file{texinfo.tex} |
| file causes the switch from @samp{\} to @samp{@@}; before the switch |
| occurs, @TeX{} requires @samp{\}, 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: |
| |
| @example |
| \input texinfo @@c -*-texinfo-*- |
| @end example |
| |
| @noindent This may be useful when Emacs doesn't detect the file type |
| from the file extension automatically. |
| |
| |
| @node @code{@@setfilename} |
| @nodedescription Give the name of the output file. |
| @subsection @code{@@setfilename}: Set the Output File Name |
| |
| @anchor{setfilename}@c old name |
| @c used in references when the reference is not about @setfilename |
| @c in particular, but about the output file name, be it from @setfilename |
| @c or from the input file name. |
| @anchor{Setting the Output File Name} |
| @findex setfilename |
| @cindex output file name |
| |
| The @code{@@setfilename} line specifies the name of the output file to |
| be generated by @command{texi2any}. This command is ignored for |
| @TeX{} formatting. When present, it should be the first Texinfo |
| command (that is, after @samp{\input texinfo}). Write the |
| @code{@@setfilename} command at the beginning of a line and follow it |
| on the same line by the Info file name. |
| |
| @example |
| @@setfilename @var{info-file-name} |
| @end example |
| |
| The name must be different from the name of the Texinfo file. |
| There are two conventions for choosing the name: you |
| can either remove the extension (such as @samp{.texi}) entirely from |
| the input file name, or (recommended) replace it with the @samp{.info} |
| extension. It is not advised to base the @code{@@setfilename} name |
| on a entirely different name than the input file name. |
| |
| @cindex Ignored before @code{@@setfilename} |
| @cindex @samp{\input} source line ignored |
| When a @code{@@setfilename} line is present, the Texinfo processors |
| ignore everything written before the @code{@@setfilename} line. This |
| is why the very first line of the file (the @code{\input} line) does |
| not show up in the output. |
| |
| If there is no @code{@@setfilename} line, @command{texi2any} uses the |
| input file name to determine the output name (@pxref{Minimum}). The |
| @code{\input} line is still ignored in this processing, as well |
| as leading blank lines. |
| |
| When producing another output format, @command{texi2any} will replace any |
| final extension with the output format-specific extension (@samp{html} |
| when generating HTML, for example), or add a dot followed by the |
| extension (@samp{.html} for HTML) if the given name has no extension. |
| |
| @@-commands are not allowed in @code{@@setfilename}, except for |
| @code{@@@@}, @code{@@@{}, @code{@@@}} and associated @@-commands |
| such as @code{@@atchar@{@}}. |
| |
| @code{@@setfilename} used to be required by the Texinfo processors |
| and some other programs. This should not be the case any more; |
| @code{@@setfilename} can be omitted. If the Texinfo input is |
| processed from standard input, without an input file name to deduce the |
| base file name from, @code{@@setfilename} could still be relevant. |
| This is not the only way, however: @option{--output} option specifies |
| the output file name on the @command{texi2any} command-line |
| (@pxref{Invoking @command{texi2any}}). |
| |
| @cindex Length of file names |
| @cindex File name collision |
| @cindex Info file name, choosing |
| Although an explicit @samp{.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 @samp{-1}, |
| @samp{-2}, @dots{}, @samp{-10}, @samp{-11}, and so on, to the original |
| file name. (@xref{Tag and Split Files}.) The subfile name |
| @file{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 could be @file{texinfo} rather than @file{texinfo.info} on |
| such a system. @code{@@setfilename} is a way to specify an |
| alternative name. |
| |
| |
| @node @code{@@settitle} |
| @nodedescription Create a title for the printed work. |
| @subsection @code{@@settitle}: Set the Document Title |
| |
| @anchor{settitle}@c old name |
| @findex settitle |
| @cindex Document title, specifying |
| |
| A Texinfo file should contain a line that looks like this: |
| |
| @example |
| @@settitle @var{title} |
| @end example |
| |
| Write the @code{@@settitle} command at the beginning of a line and |
| follow it on the same line by the title. Do not write anything else |
| on the line. The @code{@@settitle} command should precede everything |
| that generates actual output. The best place for it is right after |
| the @code{@@setfilename} command, if present (described in the previous |
| section). |
| |
| This command gives the title to use in a header or footer |
| for double-sided printed output, in case such headings are output. For |
| more on headings for printed output, see @ref{Heading Generation}. |
| |
| @cindex @code{<title>} HTML tag |
| In HTML, @var{title} serves as the document @samp{<title>} and it becomes |
| the default document description in the @samp{<head>} part. |
| |
| When the title page is used in the output, as is generally the case for printed |
| output, the title in the @code{@@settitle} command does not affect the title as |
| it appears on the title page. Thus, the two do not need not to match exactly. |
| A practice we recommend is to include the version or edition number of the |
| manual in the @code{@@settitle} title; on the title page, the version number |
| generally appears as a @code{@@subtitle} so it would be omitted from the |
| @code{@@title}. @xref{Titlepage & Copyright Page}. |
| |
| |
| @node Preamble |
| @nodedescription Start of the Texinfo file up to first content. |
| @subsection Preamble |
| @cindex Preamble |
| @cindex Texinfo Preamble |
| |
| The @dfn{preamble} starts at the beginning of the Texinfo file and continues |
| until the first directly output material. It typically includes the |
| file header (@pxref{Texinfo File Header}), the @code{@@copying} block |
| specifying the document permissions (@pxref{@code{@@copying}}) and the |
| title page specifications (@pxref{Titlepage & Copyright Page}). |
| |
| The preamble may contain commands that affect document formatting |
| as a whole but which do not produce output, or do not produce output |
| straight away, such as @code{@@settitle} (@pxref{@code{@@settitle}}), |
| @code{@@documentlanguage}, (@pxref{@code{@@documentlanguage}}), |
| commands setting the headings, controlling indentation or hyphenation, |
| or the table of contents (@pxref{Contents}). |
| |
| @ignore |
| The preamble can also contain |
| raw formatter commands (@pxref{Raw Formatter Commands}), but it is not checked |
| that the content of these commands is actually preamble material and not |
| regular output. |
| @end ignore |
| |
| Any text that starts a paragraph, @@-commands that are formatted |
| as quotations, tables, lists and so on, and @code{@@node} (@pxref{Nodes}) |
| and chapter structuring commands (@pxref{Chapter Structuring}) end the |
| preamble. |
| |
| The concept of the preamble is significant for @LaTeX{} output, as the |
| @code{\begin@{document@}} line is output at the end of the preamble. |
| |
| In plaintext, the preamble is simply output as usual at the beginning of the |
| document; for example, a @code{@@contents} in the preamble is output as |
| the table of contents (@pxref{Contents}). |
| |
| There is not much special treatment of the preamble for HTML and Info |
| output either. However, some settings current at the very end of |
| the preamble may be used for the document as a whole, regardless of |
| what follows. This may apply to commands specifying the indentation, |
| or the language (@pxref{@code{@@documentlanguage}}). |
| |
| For example, for the following document, the HTML and Info copying |
| comments are formatted with @code{@@documentlanguage} set to @samp{pt}, |
| as it is the last @code{@@documentlanguage} before the end of the |
| preamble. |
| |
| @example |
| @group |
| \input texinfo |
| @@documentlanguage fr |
| |
| @@copying |
| The copying information @@error@{@} some text |
| @@end copying |
| |
| @@documentlanguage pt |
| |
| Text ending the preamble |
| |
| @@documentlanguage de |
| |
| @@node Top |
| |
| @end group |
| @end example |
| |
| |
| @node Start and End of Header |
| @nodedescription Formatting a region in Emacs requires this. |
| @subsection Start and End of Header for Emacs |
| @anchor{Start of Header}@c old name |
| @cindex Start of header line |
| |
| In Emacs, start- and end-of-header lines can be used to enclose commands that |
| globally affect the document in the Texinfo preamble. This allows you to |
| format only part of a Texinfo file for Info or printing. |
| @xref{@code{texinfo-format} commands}. |
| |
| A start-of-header line is a Texinfo comment that looks like this: |
| |
| @example |
| @@c %**start of header |
| @end example |
| |
| Write the start-of-header line on the second line of a Texinfo file. |
| Follow the start-of-header commands that globally affect the document |
| formatting, such as @code{@@settitle}, @code{@@synindex} or |
| @code{@@footnotestyle}; and then by an @w{end-of-header} line. |
| |
| @anchor{End of Header}@c old name |
| @cindex End of header line |
| |
| A end-of-header line is a Texinfo comment that looks like this: |
| |
| @example |
| @@c %**end of header |
| @end example |
| |
| The odd string of characters, @samp{%**}, is to ensure that no other |
| comment is accidentally taken for a start-of-header line. You can |
| change it if you wish by setting the @code{tex-start-of-header} and/or |
| @code{tex-end-of-header} Emacs variables. @xref{Texinfo Mode Printing}. |
| |
| The start- and end-of-header lines are not part of the Texinfo format |
| specification, which is why they are implemented with comments. |
| |
| |
| @node Directory Category |
| @nodedescription A category for a manual. |
| @section Directory Category |
| |
| @findex dircategory |
| Use the @code{@@dircategory} command to specify a category |
| for the manual. |
| |
| @code{@@dircategory} commands are usually followed by |
| @code{@@direntry} blocks, which are used by @command{install-info}. |
| @xref{Installing Dir Entries}, for an example of how these commands |
| are used. |
| |
| The first @code{@@dircategory} command in a manual is the category for |
| the entire manual. Subsequent uses of @code{@@dircategory} set the category |
| for following @code{@@direntry} blocks only. |
| |
| @cindex Dir categories, choosing |
| @cindex Categories, choosing |
| There is no consistency in the use of directory categories across |
| manuals, and there is unlikely ever to be, as authors work on Texinfo |
| documentation independently with no central co-ordination that would |
| result in such consistency. |
| |
| It is possible for users or operating system distributions to edit |
| categories in Info or Texinfo files, if a logical organization |
| within @code{dir} files is something that they value. |
| |
| Authors of manuals may consider using some of the following categories |
| for manuals. For a package that installs many manuals (such as Emacs), |
| it may be a good idea to use package-specific category, or categories, |
| to group its manuals. |
| |
| @c from util/dir-example and https://www.gnu.org/manual/manual.html |
| @c |
| @c we used to recommend looking at Free Software Directory categories |
| @c but these have changed |
| |
| @display |
| Archiving |
| Audio |
| Business and productivity |
| Compression |
| Database |
| Dictionaries |
| Documentation translation |
| Editors |
| Education |
| Email |
| Fonts |
| Games |
| Graphics |
| Health |
| Interface |
| Internet applications |
| Live communications |
| Localization |
| Mathematics |
| Music |
| Network applications |
| Printing |
| Security |
| Science |
| Software development |
| Software libraries |
| Spreadsheets |
| System administration |
| Telephony |
| Text creation and manipulation |
| Version control |
| Video |
| Web authoring |
| @end display |
| |
| |
| @node Document Permissions |
| @nodedescription Ensuring your manual is free. |
| @anchor{Software Copying Permissions}@c old node name |
| @section Document Permissions |
| @cindex Document permissions |
| @cindex Copying permissions |
| |
| This segment describes the document and contains the copyright notice |
| and copying permissions. This is done with the @code{@@copying} command. |
| A real manual includes more text here, according to the license under |
| which it is distributed. |
| |
| @example |
| @group |
| @@copying |
| This is a short example of a complete Texinfo file, version 1.0. |
| |
| Copyright @@copyright@{@} 2026 Free Software Foundation, Inc. |
| @@end copying |
| @end group |
| @end example |
| |
| The copyright notice and copying permissions for a document need to |
| appear in several places in the various Texinfo output formats. |
| Therefore, Texinfo provides a command (@code{@@copying}) to declare |
| this text once, and another command (@code{@@insertcopying}) to |
| insert the text at appropriate points. |
| |
| For plain text output, you must insert the copyright information |
| explicitly if you want it to appear, as it is not otherwise output. |
| For instance, you could have the following near the start of the Texinfo |
| file: |
| |
| @example |
| @@ifplaintext |
| @@insertcopying |
| @@end ifplaintext |
| @end example |
| |
| You could include other title-like information for the plain text |
| output in the same place. |
| |
| 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 |
| released 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. |
| |
| |
| @node @code{@@copying} |
| @nodedescription Declare the document's copying permissions. |
| @subsection @code{@@copying}: Declare Copying Permissions |
| |
| @anchor{copying}@c old name |
| @findex copying |
| |
| The @code{@@copying} command should be given very early in the document; |
| the recommended location is right after the header material |
| (@pxref{Texinfo File Header}). It conventionally consists of a sentence |
| or two about what the program is, identification of the documentation |
| itself, the legal copyright line, and the copying permissions. Here is |
| a skeletal example: |
| |
| @example |
| @@copying |
| This manual is for @var{program} (version @var{version}, updated |
| @var{date}), which @dots{} |
| |
| Copyright @@copyright@{@} @var{years} @var{copyright-owner}. |
| |
| @@quotation |
| Permission is granted to @dots{} |
| @@end quotation |
| @@end copying |
| @end example |
| |
| The @code{@@quotation} has no legal significance; it's there to improve |
| readability in some contexts. |
| |
| The text of @code{@@copying} appears as a comment at the beginning of Info |
| and HTML output files. This information is also output at the beginning |
| of the DocBook output files using appropriate markup. It is @emph{not} |
| output implicitly in plain text or printed output; it's up to you to use |
| @code{@@insertcopying} to emit the copying information. See the next section |
| for details. |
| |
| The @code{@@copyright@{@}} command generates a @samp{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 @samp{(C)}. |
| |
| The copyright notice itself has the following legally-prescribed |
| form: |
| |
| @example |
| Copyright @copyright{} @var{years} @var{copyright-owner}. |
| @end example |
| |
| @cindex Copyright word, always in English |
| The word `Copyright' must always be written in English, even if the |
| document is otherwise written in another language. This is due to |
| international law. |
| |
| @cindex Years, in copyright line |
| 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. |
| |
| @cindex Copyright holder for FSF works |
| @cindex Holder of copyright for FSF works |
| @cindex Owner of copyright for FSF works |
| 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 document 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 @code{@@copying} block) in the source file. |
| |
| @xref{Copyright Notices,,, maintain, GNU Maintainer Information}, for |
| additional information. @xref{GNU Sample Texts}, for the full text to |
| be used in GNU manuals. @xref{GNU Free Documentation License}, for |
| the license itself under which GNU and other free manuals are |
| distributed. |
| |
| |
| @node @code{@@insertcopying} |
| @nodedescription Where to insert the permissions. |
| @subsection @code{@@insertcopying}: Include Permissions Text |
| |
| @anchor{insertcopying}@c old name |
| @findex insertcopying |
| @cindex Copying text, including |
| @cindex Permissions text, including |
| @cindex Including permissions text |
| |
| The @code{@@insertcopying} command is simply written on a line by |
| itself, like this: |
| |
| @example |
| @@insertcopying |
| @end example |
| |
| This inserts the text previously defined by @code{@@copying}. To meet |
| legal requirements, it must be used on the copyright page in the printed |
| manual (@pxref{Copyright}). |
| |
| The @code{@@copying} command itself causes the permissions text to |
| appear in an Info file @emph{before} the first node. The text is also |
| copied into the beginning of each split Info output file, as is legally |
| necessary. This location implies a human reading the manual using Info |
| does @emph{not} see this text (except when using the advanced Info |
| command @kbd{g *}). This does not matter for legal purposes, |
| because the text is present. But to get a visible text in the output, |
| @code{@@insertcopying} should be used. |
| |
| Similarly, the @code{@@copying} text is automatically included at the |
| beginning of each HTML output file, as an HTML comment. Again, this |
| text is not visible without @code{@@insertcopying} (unless the reader views the |
| HTML source). |
| |
| The permissions text defined by @code{@@copying} also appears |
| automatically at the beginning of the DocBook output files |
| using appropriate markup. @code{@@insertcopying} can be used |
| to output the permission text within normal text. |
| |
| |
| @node Titlepage & Copyright Page |
| @nodedescription Creating the title and copyright pages. |
| @section Title and Copyright Pages |
| |
| @cindex Copyright page |
| @cindex Printed permissions |
| @cindex Permissions, printed |
| The first page of a printed book is usually the @dfn{title page}, |
| which contains the name of the book and the author. Copyright and |
| publication information is usually printed on the next page; we refer |
| to this page as the @dfn{copyright page}. As this is on the back (verso) |
| of the title page, this page is also known as the @dfn{title verso}. |
| @ignore |
| (By international treaty, the copyright notice for a book must be either |
| on the title page or on the back of the title page.) |
| @end ignore |
| |
| @cindex Document metadata |
| Texinfo provides commands for you to provide the document title, any |
| subtitle, the name of the author (or names of several authors), and copying |
| and publication information for the document. This @dfn{metadata} |
| is used for the contents of the title page and copyright page. |
| Likewise, this information appears in the output in some form for other |
| output formats, even if not displayed as a title page. |
| |
| Texinfo provides at least three different ways to provide this metadata |
| and to generate the title and copyright pages, which are described in |
| the following subsections. |
| |
| In HTML, no titlepage is output, in the default case. The best way to get a |
| title page similar to printed manuals is to set the @code{NO_TOP_NODE_OUTPUT} |
| customization variable (@pxref{@code{NO_TOP_NODE_OUTPUT}}). |
| |
| @findex shorttitlepage |
| @cindex Bastard title page |
| @cindex Title page @subentry bastard |
| For sufficiently simple documents, and for the bastard title page in |
| traditional book front matter, Texinfo also provides a command |
| @code{@@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. In HTML, @code{@@shorttitlepage} can play the same role as |
| @code{@@settitle}, if @code{@@settitle} is not set. @xref{@code{@@settitle}}. |
| |
| |
| @node Document Metadata |
| @nodedescriptionblock |
| The @code{@@documentinfo}, @code{@@copying}, @code{@@publication}, and |
| @code{@@maketitle} commands. |
| @end nodedescriptionblock |
| @subsection Document Metadata and the @code{@@maketitle} Command |
| |
| @findex documentinfo |
| The simplest way to define document metadata used for the title page is |
| using the @code{@@documentinfo} command. Here is a template: |
| |
| @example |
| @group |
| @@documentinfo |
| @@title @var{name-of-manual-when-printed} |
| @@subtitle @var{subtitle-if-any} |
| @@subtitle @var{second-subtitle} |
| @@author @var{author} |
| @@end documentinfo |
| @end group |
| @end example |
| |
| You should only use the @code{@@title} command once within the |
| @code{@@documentinfo} block. You can use the @code{@@subtitle} command more |
| than once, and the order that any @code{@@subtitle} commands appear in the |
| block is kept when the Texinfo file is processed. Likewise, you can |
| use @code{@@author} more than once. (However, the order of @code{@@title}, |
| @code{@@subtitle}, and @code{@@author} commands relative to each other is |
| not significant.) |
| |
| Other Texinfo code found in @code{@@documentinfo} is output in metadata |
| sections of output formats. Texinfo processors do not interpret this |
| additional code especially, therefore you often need to use |
| raw formatter commands such that output format metadata specific |
| formatting is produced (@pxref{Raw Formatter Commands}). An example |
| with HTML, EPUB and Docbook metadata: |
| @c similar to a t/*.t test code, but simplified to be shorter |
| |
| @example |
| @@documentinfo |
| @@title The Title |
| @@ifepub |
| @@html |
| <dc:creator id="creator">Some Body</dc:creator> |
| <meta refines="#creator" property="role" scheme="marc:relators" |
| id="role">aut</meta> |
| @@end html |
| @@end ifepub |
| @@ifnotepub |
| @@html |
| <meta name="creator" content="Some Body" /> |
| @@end html |
| @@end ifnotepub |
| @@docbook |
| <author> |
| <firstname>Some</firstname><surname>Body</surname> |
| <affiliation><jobtitle>Director</jobtitle> |
| <orgname>The School of Somewhere</orgname> |
| </affiliation> |
| </author> |
| @@end docbook |
| @@end documentinfo |
| @end example |
| |
| The information for the copyright page appears within the @code{@@copying} |
| and @code{@@publication} commands. @xref{Document Permissions} for more |
| discussion of @code{@@copying}. |
| |
| @findex publication |
| The @code{@@publication} command works very similarly to @code{@@copying}. |
| The Texinfo processors save the contents of this block when they encounter |
| it in the Texinfo source. You use this command to provide information |
| about the publication of the document, such as the address of the |
| publisher, or ISBN@. You use this block for information that would go an |
| ``imprint'' or ``colophon'' in a printed book. |
| |
| @findex maketitle |
| Finally, to actually output the title and copyright pages, you use the |
| @code{@@maketitle} command. Write this command on a line by itself. |
| This draws together the available information to produce these two pages. |
| |
| These commands would be used like this: |
| |
| @example |
| @@copying |
| @var{copying-info} |
| @@end copying |
| @@publication |
| Published by @var{publisher-name} |
| @var{publisher-address} |
| @@end publication |
| @@maketitle |
| @end example |
| |
| |
| @node @code{@@titlepage} |
| @nodedescription Create a title for the printed document. |
| @subsection @code{@@titlepage} |
| |
| @anchor{titlepage}@c old name |
| @cindex Title page |
| @findex titlepage |
| |
| An alternative to using @code{@@maketitle} to create title and copyright |
| pages is to use the @code{@@titlepage} command. Any material enclosed between |
| @code{@@titlepage} and @code{@@end titlepage} lines is directly output |
| for a printed manual. Here is a basic example: |
| |
| @example |
| @group |
| @@titlepage |
| @@title Sample Title |
| @end group |
| @@c The following two commands start the copyright page. |
| @@page |
| @@vskip 0pt plus 1filll |
| @@insertcopying |
| |
| Published by @dots{} |
| |
| Cover art by @dots{} |
| @@end titlepage |
| @end example |
| |
| Start the material for the title page and following copyright page |
| with @code{@@titlepage} on a line by itself and end it with |
| @code{@@end titlepage} on a line by itself. |
| |
| The material before the @samp{@@page} line is used for the title page. |
| The following subsubsections explain the two ways that the @code{@@titlepage} |
| command might be used within a Texinfo document to produce a title page, |
| the first closer to the previous method with @code{@@documentinfo}, |
| the second with more explicit formatting. |
| |
| However, the copyright page is always produced in the same way with |
| @code{@@titlepage}. |
| |
| |
| @anchor{Copyright} |
| @subsubheading Copyright Page |
| @findex page@r{, within @code{@@titlepage}} |
| By using the @code{@@page} command, you can force a page break within the |
| region delineated by the @code{@@titlepage} and @code{@@end titlepage} |
| commands and thereby create more than one unnumbered page. This is how |
| the copyright page is produced. (The @code{@@titlepage} command might |
| perhaps have been better named the @code{@@titleandadditionalpages} |
| command, but that would have been rather long!) |
| |
| @findex vskip @r{@TeX{} vertical skip} |
| @cindex filll @r{@TeX{} dimension} |
| To push the copyright notice and the other text on the copyright page |
| towards the bottom of the page, use the following incantation after |
| @code{@@page}: |
| |
| @example |
| @@vskip 0pt plus 1filll |
| @end example |
| |
| @noindent |
| The @code{@@vskip} command inserts whitespace in the @TeX{} output; it |
| is ignored in all other output formats. The @samp{0pt plus 1filll} |
| means to put in zero points of mandatory whitespace, and as much |
| optional whitespace as needed to push the following text to the bottom |
| of the page. Note the use of three @samp{l}s in the word |
| @samp{filll}; this is correct. |
| |
| To insert the copyright text itself, write @code{@@insertcopying} |
| next (@pxref{Document Permissions}): |
| |
| @example |
| @@insertcopying |
| @end example |
| |
| @noindent (This is required for outputting the copying text when |
| using @code{@@titlepage}, unlike with @code{@@maketitle} where this |
| text is output automatically.) |
| |
| Follow the copying text by the publisher, ISBN numbers, cover art |
| credits, and other such information. |
| |
| |
| |
| @node @code{@@title @@subtitle @@author} |
| @nodedescriptionblock |
| The @code{@@title}, @code{@@subtitle}, and @code{@@author} commands. |
| @end nodedescriptionblock |
| @subsubsection @code{@@title}, @code{@@subtitle}, and @code{@@author} |
| |
| @anchor{title subtitle author}@c old name |
| @findex title |
| @findex subtitle |
| @findex author |
| |
| One way to use @code{@@titlepage} is to use @code{@@title}, @code{@@subtitle}, |
| and @code{@@author} commands inside the @code{@@titlepage} block. 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. |
| The usual formatting consist of black rules under |
| the title and author lines and the subtitle text set flush to the |
| right-hand side of the page. |
| |
| You can use the @code{@@title}, @code{@@subtitle}, and @code{@@author} |
| commands to create a title page in which the vertical and horizontal |
| spacing is done for you automatically. |
| |
| Write the @code{@@title}, @code{@@subtitle}, or @code{@@author} |
| commands at the beginning of a line followed by the title, subtitle, |
| or author. The @code{@@author} command may be used for a quotation in |
| an @code{@@quotation} block (@pxref{@code{@@quotation}}); |
| except for that, it is an error to use any of these commands outside |
| of @code{@@titlepage}. |
| |
| The @code{@@title} command normally produces a line in which the title is set |
| flush to the left-hand side of the page in a larger than normal font. |
| The title is underlined with a black rule. The title must be given on |
| a single line in the source file; it will be broken into multiple |
| lines of output is needed. |
| |
| For long titles, the @code{@@*} command may be used to specify the |
| line breaks in long titles if the automatic breaks do not suit. Such |
| explicit line breaks are generally reflected in all output formats; if |
| you only want to specify them for the printed output, use a |
| conditional (@pxref{Conditionals}). For example: |
| |
| @example |
| @@title This Long Title@@inlinefmt@{tex,@@*@} Is Broken in @@TeX@{@} |
| @end example |
| |
| The @code{@@subtitle} command normally sets subtitles in a normal-sized font |
| flush to the right-hand side of the page. |
| |
| The @code{@@author} command normally sets the names of the author |
| or authors in a middle-sized font flush to the left-hand side of the |
| page on a line near the bottom of the title page. The names are |
| followed by a black rule that is thinner than the rule that normally |
| underlines the title. |
| |
| There are two ways to use the @code{@@author} command: you can write |
| the name or names on the remaining part of the line that starts with |
| an @code{@@author} command: |
| |
| @example |
| @@author by Jane Smith and John Doe |
| @end example |
| |
| @noindent |
| or you can write the names one above each other by using multiple |
| @code{@@author} commands: |
| |
| @example |
| @group |
| @@author Jane Smith |
| @@author John Doe |
| @end group |
| @end example |
| |
| @need 950 |
| A template for this method looks like this: |
| |
| @example |
| @group |
| @@titlepage |
| @@title @var{name-of-manual-when-printed} |
| @@subtitle @var{subtitle-if-any} |
| @@subtitle @var{second-subtitle} |
| @@author @var{author} |
| @@page |
| @dots{} |
| @@end titlepage |
| @end group |
| @end example |
| |
| |
| @node @code{@@titlefont @@center @@sp} |
| @nodedescriptionblock |
| The @code{@@titlefont}, @code{@@center}, and @code{@@sp} commands. |
| @end nodedescriptionblock |
| @subsubsection @code{@@titlefont}, @code{@@center}, and @code{@@sp} |
| |
| @anchor{titlefont center sp}@c old name |
| @findex titlefont |
| @findex center |
| @findex sp @r{(titlepage line spacing)} |
| |
| Texinfo also provides a second method for creating a title page, |
| using typesetting commands that are not to be used in the main text. |
| This method uses the @code{@@titlefont}, @code{@@sp}, and @code{@@center} |
| commands to generate a title page in which the words on the page are |
| centered. |
| |
| Use the @code{@@titlefont} command to select a large font suitable for |
| the title itself. You can use @code{@@titlefont} more than once if you |
| have an especially long title. |
| |
| For HTML output, each @code{@@titlefont} command produces an |
| @code{<h1>} heading, but the HTML document @code{<title>} is not |
| affected. For that, you could put a @code{@@settitle} command before |
| the @code{@@titlefont} command (@pxref{@code{@@settitle}}). |
| |
| @need 700 |
| For example: |
| |
| @example |
| @@titlefont@{Texinfo@} |
| @end example |
| |
| Use the @code{@@center} command at the beginning of a line to center |
| the remaining text on that line. Thus, |
| |
| @example |
| @@center @@titlefont@{Texinfo@} |
| @end example |
| |
| @noindent |
| centers the title, which in this example is ``Texinfo'' printed |
| in the title font. |
| |
| Use the @code{@@sp} command to insert vertical space. For example: |
| |
| @example |
| @@sp 2 |
| @end example |
| |
| @noindent |
| This inserts two blank lines on the printed page. |
| (@xref{@code{@@sp}}, for more information about the @code{@@sp} |
| command.) |
| |
| A template for this method looks like this: |
| |
| @example |
| @group |
| @@titlepage |
| @@sp 10 |
| @@center @@titlefont@{@var{name-of-manual-when-printed}@} |
| @@sp 2 |
| @@center @var{subtitle-if-any} |
| @@sp 2 |
| @@center @var{author} |
| @dots{} |
| @@end titlepage |
| @end group |
| @end example |
| |
| The spacing of the example fits an 8.5 by 11 inch manual. |
| |
| |
| @node Title Page Version |
| @nodedescription Version of a program or edition of a manual. |
| @subsection Displaying the Version or Edition on the Title Page |
| |
| 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. |
| You would typically include these in a subtitle. |
| If the manual changes more frequently than the program or is independent |
| of it, you should also include an edition number@footnote{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.} 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 |
| @ref{The Top Node}.) |
| |
| |
| @node Heading Generation |
| @nodedescription Turn on page headings after the title and copyright pages. |
| @subsection Heading Generation |
| |
| @anchor{end titlepage}@c old name |
| @cindex Generating page headings |
| |
| Texinfo has two standard page heading formats, one for documents |
| printed on one side of each sheet of paper (single-sided printing), |
| and the other for documents printed on both sides of each sheet |
| (double-sided printing). |
| |
| In full generality, you can control the headings in different ways: |
| |
| @itemize @bullet |
| @item |
| The conventional way is to write a @code{@@setchapternewpage} command |
| before the title page commands. |
| |
| Most documents are formatted with the standard single-sided or |
| double-sided headings, (sometimes) using @code{@@setchapternewpage |
| odd} for double-sided printing and (almost always) no |
| @code{@@setchapternewpage} command for single-sided printing |
| (@pxref{@code{@@setchapternewpage}}). |
| |
| @item |
| Alternatively, you can use the @code{@@headings} command to prevent |
| page headings from being generated or to start them for either single |
| or double-sided printing. To turn off headings, write @code{@@headings off}. |
| @xref{@code{@@headings}}. |
| |
| @item |
| Or, you may specify your own page heading and footing format. |
| @xref{Headings}. |
| @end itemize |
| |
| |
| @node Contents |
| @nodedescription How to create a table of contents. |
| @section Generating a Table of Contents |
| @cindex Table of contents |
| @cindex Contents, table of |
| @cindex Short table of contents |
| @findex contents |
| @findex summarycontents |
| @findex shortcontents |
| |
| The @code{@@chapter}, @code{@@section}, and other structuring commands |
| (@pxref{Chapter Structuring}) supply the information to make up a |
| table of contents, but they do not cause an actual table to appear in |
| the manual. To do this, you must use the @code{@@contents} and/or |
| @code{@@summarycontents} command(s). |
| |
| @table @code |
| @item @@contents |
| Generates a table of contents in a printed manual, including all |
| chapters, sections, subsections, etc., as well as appendices and |
| unnumbered chapters. Headings generated by @code{@@majorheading}, |
| @code{@@chapheading}, and the other @code{@@@dots{}heading} commands |
| do not appear in the table of contents (@pxref{Structuring Command |
| Types}). |
| |
| @item @@shortcontents |
| @itemx @@summarycontents |
| (@code{@@summarycontents} is a synonym for @code{@@shortcontents}.) |
| |
| Generates a short or summary table of contents that lists only the |
| chapters, appendices, and unnumbered chapters. Sections, subsections |
| and subsubsections are omitted. Only a long manual needs a short |
| table of contents in addition to the full table of contents. |
| @end table |
| |
| Both contents commands should be written on a line by themselves, and |
| placed near the beginning of the file, after the @code{@@end |
| titlepage} (@pxref{@code{@@titlepage}}) or the @code{@@end |
| documentinfo} (@pxref{Document Metadata}), 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 @code{@@unnumbered} before |
| them. |
| |
| Since an Info file uses menus instead of tables of contents, the Info |
| formatting commands ignore the contents commands. But the contents |
| are included in plain text output and in other output formats, such |
| as HTML. |
| |
| In 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. |
| |
| @code{@@shortcontents} is not implemented for @LaTeX{} output. |
| |
| |
| @node The Top Node |
| @nodedescription Creating the `Top' node |
| @section The `Top' Node |
| @cindex Top node |
| @cindex Node, @samp{Top} |
| @anchor{Top Node Example}@c |
| |
| The `Top' node is the node in which a reader enters an Info manual. |
| As such, it should contain a very brief description of the manual |
| (including the version number). The contents of the `Top' node do |
| not appear in printed output nor in DocBook output. |
| |
| It is conventional to write a line with a @code{@@top} command |
| containing the title of the document immediately after the |
| @code{@@node Top} line (@pxref{@code{@@top} Command}). |
| |
| We repeat the short description from the beginning of |
| the @samp{@@copying} text, but there's no need to repeat the copyright |
| information, so we don't use @samp{@@insertcopying} here. |
| |
| In the Info output (and sometimes HTML output), the `Top' node usually |
| contains a top-level @dfn{menu} listing the chapters, and possibly a |
| @dfn{detailed menu} listing all the nodes in the entire document. It |
| is not usually necessary to give such a menu in the Texinfo source, as |
| @command{texi2any} generates these menus automatically. However, the |
| following example shows how you would use the @code{@@menu} command to |
| give a menu in the `Top' node: |
| |
| |
| @cindex Top node example |
| @example |
| @@node Top |
| @@top Short Sample |
| |
| This is a short sample Texinfo file. |
| |
| @group |
| @@menu |
| * First Chapter:: The first chapter is the |
| only chapter in this sample. |
| * Index:: Complete index. |
| @@end menu |
| @end group |
| @end example |
| |
| |
| @node Master Menu Parts |
| @subsection Parts of a Master Menu |
| @cindex Master menu |
| @cindex Menu, master |
| @cindex Parts of a master menu |
| |
| A @dfn{master menu} is the main menu. It is customary to include a |
| detailed menu listing all the nodes in the document in this menu. |
| Like any other menu, a master menu is enclosed in @code{@@menu} and |
| @code{@@end menu} and does not appear in the printed output nor in |
| DocBook output. |
| |
| The master menu contains entries for the major nodes in the Texinfo |
| file: the nodes for the chapters, chapter-like sections, and the |
| appendices, followed by nodes for the indices. |
| |
| @findex detailmenu |
| @cindex Detailed menu |
| |
| You may choose to follow these entries with a @dfn{detailed menu}. |
| This lists other, lower-level nodes, often ordered by chapter. |
| These items may be a convenience for an inquirer who can go directly |
| to a particular node when searching for specific information, rather |
| than going through an intermediate menu. If you use a detailed menu |
| in your master menu, mark it with the @code{@@detailmenu @dots{} |
| @@end detailmenu} environment. |
| |
| 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. (@xref{Writing a Menu}, for more |
| information.) |
| |
| For example, the master menu for this manual looks like the following |
| (but has many more entries): |
| |
| @example |
| @group |
| @@menu |
| * Copying Conditions:: Your rights. |
| * Overview:: Texinfo in brief. |
| @dots{} |
| @end group |
| @group |
| * Variables Index:: |
| * General Index:: |
| @end group |
| |
| @group |
| @@detailmenu |
| --- The Detailed Node Listing --- |
| |
| Overview of Texinfo |
| |
| * Reporting Bugs:: @dots{} |
| @dots{} |
| @end group |
| |
| @group |
| Beginning a Texinfo File |
| |
| * Sample Beginning:: @dots{} |
| @dots{} |
| @@end detailmenu |
| @@end menu |
| @end group |
| @end example |
| |
| |
| @node The Body of the Document |
| @nodedescription The rest of the nodes. |
| @section The Body of the Document |
| |
| @cindex Frontmatter, text in |
| The body segment contains all the text of the document. |
| A manual is divided into one or more @dfn{nodes} (@pxref{Nodes}). |
| The example illustrates a chapter made of three nodes, one |
| for introductory material in the chapter, and two sections. |
| The introductory material contains an enumerated list. |
| |
| @example |
| @group |
| @@node First Chapter |
| @@chapter First Chapter |
| |
| @@cindex chapter, first |
| This is the first chapter. |
| @@cindex index entry, another |
| |
| Here is a numbered list. |
| |
| @@enumerate |
| @@item |
| This is the first item. |
| |
| @@item |
| This is the second item. |
| @@end enumerate |
| |
| |
| @@node First Section |
| @@section First Section |
| |
| First section of first chapter. |
| |
| |
| @@node Second Section |
| @@section Second Section |
| |
| Second section of first chapter. |
| @end group |
| @end example |
| |
| In the Info output, the @samp{First Chapter} node will contain a |
| menu listing the two sections in the chapter. Similarly, when this |
| node is output in its own HTML file, it will contain a table of contents |
| for the chapter. |
| |
| Here is what the contents of this chapter will look like: |
| |
| @sp 1 |
| @need 700 |
| @quotation |
| @chapheading 1. First Chapter |
| |
| This is the first chapter. |
| |
| Here is a numbered list. |
| |
| @enumerate |
| @item |
| This is the first item. |
| |
| @item |
| This is the second item. |
| @end enumerate |
| |
| @heading 1.1 First Section |
| |
| First section of first chapter. |
| |
| @heading 1.2 Second Section |
| |
| Second section of first chapter. |
| @end quotation |
| |
| @noindent (In the Info and HTML output, the chapter would also be split |
| into nodes.) |
| |
| |
| @node Ending a File |
| @nodedescription What is at the end of a Texinfo file? |
| @section Ending a Texinfo File |
| @cindex Ending a Texinfo file |
| @cindex Texinfo file ending |
| @cindex File ending |
| |
| The end of a Texinfo file should include commands to create indices |
| (@pxref{Printing Indices & Menus}), and the @code{@@bye} command to mark |
| the last line to be processed. For example: |
| |
| @example |
| @@node Index |
| @@unnumbered Index |
| |
| @@printindex cp |
| |
| @@bye |
| @end example |
| |
| @findex bye |
| @anchor{File End} |
| A @code{@@bye} command terminates Texinfo processing. It should be on |
| a line by itself. Anything following @code{@@bye} is completely |
| ignored. |
| |
| |
| @node Nodes |
| @nodedescription Writing nodes, the basic unit of Texinfo. |
| @chapter Nodes |
| @anchor{node}@anchor{@@node} @c old names |
| |
| @cindex Node, defined |
| A @dfn{node} is a region of text that begins at a @code{@@node} |
| command, and continues until the next @code{@@node} command. |
| To specify a node, write a @code{@@node} command at the beginning of |
| a line, and follow it with the name of the node. |
| 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 @code{@@xref} |
| and related commands; see @ref{Cross References}. Cross-references can |
| be sprinkled throughout the text. Other @@-commands may also |
| be the target of cross-references (@pxref{@code{@@anchor}}, @pxref{Floats}). |
| |
| Normally, you put a node command immediately before each chapter |
| structuring command---for example, an @code{@@section} or |
| @code{@@subsection} line. (@xref{Chapter Structuring}.) |
| You should do this even if you do not intend to format the file for Info. |
| This is because printed output uses both @code{@@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. |
| |
| |
| @node Writing a Node |
| @nodedescription How to write a @code{@@node} line. |
| @section Writing a @code{@@node} Line |
| @cindex Writing a @code{@@node} line |
| @cindex @code{@@node} line writing |
| @cindex Node line writing |
| |
| @findex node |
| Write @code{@@node} at the beginning of a line followed by the name of |
| the node, like this: |
| |
| @example |
| @@node @var{node-name} |
| @end example |
| |
| After you have inserted a @code{@@node} line, you should immediately |
| write the @@-command for the associated chapter or section (if any) |
| and insert its name. |
| |
| You may optionally follow the node name argument to @code{@@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. Hence, |
| the template for a fully-written-out node line with `Next', `Previous', |
| and `Up' pointers looks like this: |
| |
| @example |
| @@node @var{node-name}, @var{next}, @var{previous}, @var{up} |
| @end example |
| |
| The @var{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: @samp{@@node mynode,,,uppernode}. |
| Any spaces before or after each name on the @code{@@node} line are |
| ignored. However, if your Texinfo document is hierarchically organized, |
| as virtually all are, we recommend leaving off all the pointers and |
| letting @code{texi2any} determine them. |
| |
| @cindex Creating pointers with @code{texi2any} |
| @cindex Pointer creation with @code{texi2any} |
| @cindex Automatic pointer creation with @code{texi2any} |
| @cindex Implicit pointer creation with @code{texi2any} |
| The @code{texi2any} program automatically determines node pointers |
| for a hierarchically organized document. For it to do this, each |
| @code{@@node} command should be followed immediately by a sectioning |
| command such as @code{@@chapter} or @code{@@section} (except that |
| comment lines may intervene). Finally, you must follow the `Top' |
| @code{@@node} line with a line beginning with @code{@@top} to mark |
| the top-level node in the file. @xref{@code{@@top} Command}. |
| |
| Even when you explicitly specify all pointers, you cannot write the |
| nodes in the Texinfo source file in an arbitrary order. |
| 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. |
| |
| In most cases, you will want to take advantage of the pointer creation |
| feature, and not redundantly specify node pointers that the programs can |
| determine. |
| However, Texinfo documents are not required to be organized |
| hierarchically or in fact to contain sectioning commands at all (for |
| example, if you never intend the document to be printed), so node |
| pointers may still be specified explicitly, in full generality. |
| |
| If you are using GNU Emacs, and want explicit pointers, you can use the |
| update node commands provided by Texinfo mode to insert the names of |
| the pointers. (@xref{Updating Nodes and Menus}.) |
| |
| Alternatively, you can insert the `Next', `Previous', and `Up' |
| pointers yourself. If you do this in Emacs, you may find it helpful |
| to use the Texinfo mode keyboard command @kbd{C-c C-c n}. This command |
| inserts @samp{@@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. |
| |
| |
| @node Node Names |
| @nodedescription How to choose node names. |
| @section Choosing Node Names |
| |
| @cindex Node names, choosing |
| The name of a node identifies the node. For all the details of node |
| names, @pxref{Node Line Requirements}). |
| |
| @anchor{Node Line Tips}@c previous node name |
| Here are some suggestions for node names: |
| |
| @itemize @bullet |
| @item |
| Try to pick node names that are informative but short. |
| |
| In the Info file, the file name, node name, and pointer names are all |
| inserted on one line, which may run into the right edge of the window. |
| (This does not cause a problem with Info, but is ugly.) |
| |
| @item |
| Try to pick node names that differ from each other near the beginnings |
| of their names. This way, it is easy to use automatic name completion in |
| Info. |
| |
| @item |
| Conventionally, node names are capitalized in the same way as section |
| and chapter titles. In this manual, initial and significant words are |
| capitalized; others are not. In other manuals, just initial words and |
| proper nouns are capitalized. Either way is fine; we recommend just |
| being consistent. |
| |
| @item |
| Node names should not contain user-defined macros. @xref{Macro Details} |
| for other constraints on the use of macros. |
| |
| @item |
| In HTML output, any characters in the node name other than plain ASCII |
| letters, numbers or spaces will be changed in the file name. |
| (@xref{HTML Xref Node Name Expansion}.) |
| This can make the URLs for the pages in your manual less user-friendly; |
| for example, in this manual the @samp{@@dots} node is output as |
| @file{__0040dots.html}. |
| @end itemize |
| |
| Because node names are used in cross-references, it is not desirable to |
| casually change them once published. When you delete or rename a node, it is |
| usually a good idea to define an @code{@@anchor} with the old name. |
| That way, references from other manuals, from mail archives, and so on |
| are not invalidated. @xref{@code{@@anchor}}. |
| |
| The pointers from a given node enable you to reach other nodes and |
| consist simply of the names of those nodes. |
| |
| Normally, a node's `Up' pointer contains the name of the node whose |
| menu mentions that node. The node's `Next' pointer contains the name |
| of the node that follows the present node in that menu and its |
| `Previous' pointer contains the name of the node that precedes it in |
| that menu. When a node's `Previous' node is the same as its `Up' |
| node, both pointers name the same node. |
| |
| Usually, the first node of a Texinfo file is the `Top' node, and its |
| `Up' pointer points to the @file{dir} file, which contains the main menu |
| for all of Info. |
| |
| |
| @node Node Line Requirements |
| @nodedescription Keep names unique. |
| @section @code{@@node} Line Requirements |
| |
| @cindex Node line requirements |
| @cindex Restrictions on node names |
| |
| Names used with @code{@@node} have several requirements: |
| |
| @itemize @bullet |
| @item |
| @cindex Unique node names requirement |
| @cindex Node names must be unique |
| All the node names in a single Texinfo file must be unique. |
| |
| This means, for example, that if you end every chapter with a summary, |
| you must name each summary node differently. You cannot just call |
| them all ``Summary''. You 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, anchor names (@pxref{@code{@@anchor}}), |
| and float labels (@pxref{@code{@@float}}) must all be unique. |
| |
| @item |
| @cindex Commands in node names |
| @cindex @sortas{at} @@-commands @subentry in node names |
| Node names can contain @@-commands@footnote{Prior to the Texinfo 5 release in 2013, this feature was supported in |
| an ad hoc way (the @option{--commands-in-node-names} option to |
| @command{makeinfo}). Now it is part of the language. |
| }. For example, using |
| @code{@@TeX@{@}} in a node name results in the @TeX{} logo being |
| output, as it would be in normal text. Cross-references should |
| use @code{@@TeX@{@}} just as the node name does. |
| |
| Some commands do not make sense in node names; for instance, |
| environments (e.g., @code{@@quotation}), commands that read a whole |
| line as their argument (e.g., @code{@@sp}), and plenty of others. |
| For the complete list of commands that are allowed, and their |
| expansion for HTML identifiers and file names, @pxref{HTML Xref |
| Command Expansion}. |
| |
| @item |
| @cindex Parentheses in node name |
| A node name may not start with a left parenthesis preceding a right |
| parenthesis, as in @code{(not)allowed}, since this syntax is used to |
| specify an external manual. |
| |
| @item |
| @cindex Colon in node name |
| @cindex Comma in node name |
| @cindex Period in node name |
| @cindex Characters, invalid in node name |
| @cindex Invalid characters in node names |
| @cindex Node names, invalid characters in |
| @anchor{Info Node Names Constraints} |
| Unfortunately, you cannot reliably use periods, commas, or colons |
| within a node name; these can confuse some Info readers. |
| @command{texi2any} quotes problematic node names and labels by default, |
| but some Info readers do not recognize this syntax. Node name and label |
| quoting causes @code{DEL} characters (@samp{CTRL-?}, character number 127, |
| often rendered as @samp{^?}) to appear around the name. To remove |
| node names and labels quoting, you can set the customization variable |
| @code{INFO_SPECIAL_CHARS_QUOTE} to @samp{0} (@pxref{Info and Plaintext |
| Customization Variables}). |
| |
| @command{texi2any} 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 |
| @code{INFO_SPECIAL_CHARS_WARNING} to @samp{0} (@pxref{Info and Plaintext |
| Customization Variables}). |
| |
| If you insist on using these characters in node names, in order not |
| to confuse the Texinfo processors you must still escape those characters, |
| by using either special insertions (@pxref{Inserting a Comma}) or @code{@@asis} |
| (@pxref{@code{@@asis}}). For example: |
| |
| @example |
| @@node foo@@asis@{::@}bar@@comma@{@} baz |
| @end example |
| |
| As an example of avoiding the special characters, the following is a |
| section title in this manual: |
| |
| @example |
| @@section @@code@{@@@@unnumbered@}, @@code@{@@@@appendix@}: Chapters with@enddots{} |
| @end example |
| |
| @noindent |
| But the corresponding node name lacks the commas and the subtitle: |
| |
| @example |
| @@node @@code@{@@@@unnumbered @@@@appendix@} |
| @end example |
| |
| @cindex Case in node name |
| @item |
| Case is significant in node names. |
| |
| @cindex White space in node name |
| @cindex Spaces in node name |
| @item |
| Spaces before and after names on the @samp{@@node} line are ignored. |
| Multiple whitespace characters ``inside'' a name are collapsed to a |
| single space. For example: |
| |
| @example |
| @@node foo bar |
| @@node foo bar, |
| @@node foo bar , |
| @@node foo bar, |
| @@node foo bar , |
| @end example |
| |
| @c Consistently with the HTML Cross-reference Node Name Expansion |
| @c spaces and newlines generated by @-commands should also be |
| @c collapsed to a single space. If we wanted to be explicit, we |
| @c could have added a line corresponding to |
| @c @node @ foo @: @* bar, |
| @c However, it is best to leave those special cases non documented |
| |
| @noindent all define the same node, namely @samp{foo bar}. |
| @c FIXME to be removed. In 2022 both Info readers find the node. |
| In menu entries, a single internal space should be used in node |
| names or some versions of some Info readers will not find the node. |
| @end itemize |
| |
| |
| @node First Node |
| @nodedescription How to write a `Top' node. |
| @section The First Node |
| @cindex Top node is first |
| @cindex First node |
| |
| The first node of a Texinfo file is the @dfn{Top} node, except in an |
| included file (@pxref{Include Files}). The Top node should contain |
| a short summary and a master menu. @xref{The Top Node} for more |
| information on the Top node contents and examples. Straight text |
| before the Top node outside of any node should be avoided. Such |
| text, if present, is not output for DocBook. |
| |
| |
| Here is a description of the node pointers to be used in the Top node: |
| |
| @itemize @bullet |
| @item |
| @cindex Up node of Top node |
| @cindex (dir) as Up node of Top node |
| The Top node (which must be named @samp{top} or @samp{Top}) should have |
| as its `Up' node the name of a node in another file, where there is a |
| menu that leads to this file. Specify the file name in parentheses. |
| |
| Usually, all Info files are available through a single virtual Info |
| tree, constructed from multiple directories. In this case, use |
| @samp{(dir)} as the parent of the Top node; this specifies the |
| top-level node in the @file{dir} file, which contains the main menu |
| for the Info system as a whole. (Each directory with Info files is |
| intended to contain a file named @file{dir}.) |
| |
| That's fine for Info, but for HTML output, one might well want the Up |
| link from the Top node to go to some specific place. |
| For example, for GNU the natural place would be |
| @url{https://www.gnu.org/manual/} (a web page collecting links to most |
| GNU manuals), better specified as just @code{/manual/} if the manual |
| will be installed on @code{www.gnu.org}. This can be specified with |
| the @code{TOP_NODE_UP_URL} customization variable (@pxref{File Names |
| and Links Customization for HTML}), as in |
| |
| @example |
| $ @kbd{texi2any --html -c TOP_NODE_UP_URL=/manual/} ... |
| @end example |
| |
| @c the following line is not true anymore |
| @c All links to @code{(dir)} will be replaced by the given url. |
| |
| @item |
| @cindex Prev node of Top node |
| The `Prev' node of the Top node is usually omitted. |
| |
| @item |
| @cindex Next node of Top node |
| The `Next' node of the Top node should be the first chapter in your |
| document. |
| |
| @end itemize |
| |
| @xref{Installing an Info File}, for more information about installing |
| an Info file in the @file{info} directory. |
| |
| It is usually best to leave the pointers off entirely and let the |
| tools implicitly define them, with this simple result: |
| |
| @example |
| @@node Top |
| @end example |
| |
| |
| @node @code{@@top} Command |
| @nodedescription How to use the @code{@@top} command. |
| @section The @code{@@top} Sectioning Command |
| |
| @anchor{top command}@c old name |
| @anchor{makeinfo top}@c another old name |
| @anchor{makeinfo top command}@c yet another name |
| @findex top |
| |
| The @code{@@top} command is a special sectioning command that you |
| should only use after a @samp{@@node Top} line at the beginning of a |
| Texinfo file. |
| |
| It produces the same sort of output as @code{@@unnumbered} |
| (@pxref{@code{@@unnumbered @@appendix}}). In @LaTeX{} @code{\part*} is used. |
| |
| @code{@@top} is ignored when raising or lowering sections. That is, |
| it is never lowered and nothing can be raised to it |
| (@pxref{Raise/lower sections}). |
| |
| It used to be conventional to wrap the @samp{Top} node |
| in an @code{@@ifnottex} conditional so that it would not appear in |
| printed output (@pxref{Conditionals}). Thus, a Top node often looked |
| like this: |
| |
| @example |
| @@ifnottex |
| @@node Top |
| @@top @var{your-manual-title} |
| |
| @var{very-high-level-summary} |
| @@end ifnottex |
| @end example |
| |
| This is no longer necessary, as the @samp{Top} node is now never output |
| for printed output. The @samp{Top} node is not output for DocBook either. |
| |
| |
| @node Texinfo Document Structure |
| @nodedescription Double structure of documents. |
| @section Texinfo Document Structure |
| @cindex Texinfo document structure |
| @cindex Document structure, of Texinfo |
| @cindex Structure, of Texinfo documents |
| @cindex Double structure, of Texinfo documents |
| |
| @anchor{Two Paths}@c old node name |
| |
| Nodes can contain @dfn{menus}, which contain the names of @dfn{child |
| nodes} within the parent node; for example, a node corresponding to a |
| chapter would have a menu of the sections in that chapter. The menus |
| allow the user to move to the child nodes in the Info output. |
| |
| In addition, nodes contain @dfn{node pointers} that name other nodes. |
| The `Next' and `Previous' pointers link nodes at the same sectioning |
| level into a chain. As you might imagine, the `Next' pointer links to |
| the next node, and the `Previous' pointer links to the previous node. |
| In general, `Next' and `Previous' refer to nodes at the @emph{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. |
| Thus, for example, all the nodes that are at the level of sections |
| within a chapter are linked together, and the order in this chain |
| is the same as the order of the children in the menu of the parent |
| chapter. Each child node records the parent node name as its `Up' |
| pointer. |
| |
| 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. This is an exception to the rule of |
| `Next' being at the same hierarchical level. |
| |
| @cindex @code{accesskey} @subentry in HTML output of nodes |
| The Info and HTML output for each node includes links to the |
| `Next', `Previous', and `Up' nodes. The HTML also uses |
| the @code{accesskey} attribute with the values @samp{n}, @samp{p}, and |
| @samp{u} respectively. This allows people using web browsers to |
| follow the navigation using (typically) @kbd{M-@var{letter}}, e.g., |
| @kbd{M-n} for the `Next' node, from anywhere within the node. |
| Node pointers and menus provide structure for Info files just as |
| chapters, sections, subsections, and the like provide structure for |
| printed books. The two structures are theoretically distinct; in |
| practice, however, the tree structure of printed books is essentially |
| always used for the node and menu structure also, as this leads to a |
| document which is easy to follow. |
| |
| Typically, the sectioning structure and the node structure are |
| completely parallel, with one node for each chapter, section, etc., |
| and with the nodes following the same hierarchical arrangement as the |
| sectioning. Thus, if a node is at the logical level of a chapter, its |
| child nodes are at the level of sections; similarly, the child nodes |
| of sections are at the level of subsections. |
| |
| 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 |
| different from the conventional structure. To the best of our |
| knowledge, however, all the Texinfo manuals currently in general use do |
| follow the conventional parallel structure. |
| |
| |
| @node Node Menu Illustration |
| @nodedescription A diagram, and sample nodes and menus. |
| @section Node and Menu Illustration |
| |
| Here is a diagram that illustrates a Texinfo file with three chapters, |
| each of which contains two sections. |
| |
| The ``root'' is at the top of the diagram and the ``leaves'' are at |
| the bottom. This is how such a diagram is drawn conventionally; it |
| illustrates an upside-down tree. For this reason, the root node is |
| called the `Top' node, and `Up' node pointers carry you closer to the |
| root. |
| |
| @example |
| @group |
| Top |
| | |
| ------------------------------------- |
| | | | |
| Chapter 1 Chapter 2 Chapter 3 |
| | | | |
| -------- -------- -------- |
| | | | | | | |
| Section Section Section Section Section Section |
| 1.1 1.2 2.1 2.2 3.1 3.2 |
| @end group |
| @end example |
| |
| Using explicit pointers (not recommended, but shown for purposes |
| of the example), the fully-written command to start Chapter@tie{}2 |
| would be this: |
| |
| @example |
| @group |
| @@node Chapter 2, Chapter 3, Chapter 1, Top |
| @@comment node-name, next, previous, up |
| @end group |
| @end example |
| |
| @noindent |
| This @code{@@node} line says that the name of this node is |
| ``Chapter@tie{}2'', the name of the `Next' node is ``Chapter 3'', the |
| name of the `Previous' node is ``Chapter@tie{}1'', and the name of the |
| `Up' node is ``Top''. You can (and should) omit writing out these |
| node names if your document is hierarchically organized, but the |
| pointer relationships still obtain. |
| |
| To go to Sections 2.1 and 2.2 using Info, you need a menu inside |
| Chapter 2. (@xref{Menus}.) You would write the menu just before the |
| beginning of Section 2.1, like this: |
| |
| @example |
| @group |
| @@menu |
| * Sect. 2.1:: Description of this section. |
| * Sect. 2.2:: Description. |
| @@end menu |
| @end group |
| @end example |
| |
| The automatic pointers for the node for Sect.@: 2.1 correspond to: |
| |
| @example |
| @group |
| @@node Sect. 2.1, Sect. 2.2, , Chapter 2 |
| @@comment node-name, next, previous, up |
| @end group |
| @end example |
| |
| Note that no `Prev' pointer is generated, since there is |
| no other node at the same hierarchical level before Sect.@: 2.1. |
| |
| Using explicit pointers, the node for Sect.@: 2.1 could be written like this: |
| |
| @example |
| @group |
| @@node Sect. 2.1, Sect. 2.2, Chapter 2, Chapter 2 |
| @@comment node-name, next, previous, up |
| @end group |
| @end example |
| |
| With automatic pointers, the `Next' and `Previous' pointers of a node |
| lead to other nodes at the same level---from chapter to chapter or |
| from section to section. As shown, when using explicit pointers, |
| the pointers can also lead somewhere else, here, for |
| example, 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 |
| @ref{Cross References}.) |
| |
| Technically, explicit node pointers can carry you to any node, |
| regardless of the structure of the document; even to nodes in a |
| different Info file. However, it would be very confusing for readers |
| to have the `Next', `Previous' and `Up' pointers lead to nodes that |
| do not correspond, even loosely, to the next, previous and up node. |
| |
| A @code{@@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 |
| @code{@@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 a @code{@@node} line followed by a |
| @code{@@chapter} line, and then by indexing lines. |
| |
| @example |
| @group |
| @@node Ending a File |
| @@chapter Ending a Texinfo File |
| @@cindex Ending a Texinfo file |
| @@cindex Texinfo file ending |
| @@cindex File ending |
| @end group |
| @end example |
| |
| |
| @node Node Descriptions |
| @nodedescriptionblock |
| @code{@@nodedescription} and @code{@@nodedescriptionblock}. |
| @end nodedescriptionblock |
| @section Node Descriptions |
| |
| @findex nodedescription |
| You can provide a short description of the purpose of a node by using |
| the @code{@@nodedescription} command following the @code{@@node} line. |
| Such a description might elaborate on or extend the information in the |
| node name itself. |
| |
| @findex nodedescriptionblock |
| You can also use a @code{@@nodedescriptionblock} environment to |
| provide a node description. This may be useful for longer descriptions. |
| |
| @command{texi2any} uses the content you provide with these commands |
| when outputting menus for Info output format (and, optionally, |
| for HTML). @command{texi2any} uses the description after a menu |
| entry for the node if it is generating the menu automatically, or |
| if no description for the menu entry was provided in an explicit |
| @code{@@menu} block. (@xref{Menus}). |
| |
| Here is an example of using these commands: |
| |
| @example |
| @@node Tools |
| @@chapter Tools |
| |
| This chapter is on different tools you can use. |
| |
| @@node Screwdrivers |
| @@nodedescription Flathead and Phillips. |
| @@section Screwdrivers |
| |
| This section is about screwdrivers. |
| |
| @@node Drills |
| @@nodedescriptionblock |
| Making holes in things with power screwdrivers, drill drivers, combi |
| drills, impact drivers, hammer drills, breakers and demolition drills. |
| @@end nodedescriptionblock |
| @@section Drills |
| |
| This section is about drills. |
| @end example |
| |
| In Info output, @command{texi2any} would output the @samp{Tools} node with |
| a menu as follows: |
| |
| @example |
| * Menu: |
| |
| * Screwdrivers:: Flathead and Phillips. |
| * Drills:: Making holes in things with power |
| screwdrivers, drill drivers, combi |
| drills, impact drivers, hammer drills, |
| breakers and demolition drills. |
| @end example |
| |
| |
| @node Menus |
| @nodedescription Listing subordinate nodes. |
| @section Menus |
| @cindex Menus |
| @findex menu |
| |
| @dfn{Menus} contain pointers to subordinate nodes. In Info output, |
| you use menus to go to such nodes. @command{texi2any} can output menus in |
| HTML output, but does not do so by default |
| (@pxref{HTML Output Structure Customization}, @code{FORMAT_MENU}). |
| Menus have no role in printed manuals or other output formats. |
| |
| Menus are automatically generated by @command{texi2any} when outputting |
| Info or HTML with menus for nodes followed by a sectioning command, without an |
| explicit @code{@@menu} block, and with automatic pointers. |
| |
| It is often more convenient to let @command{texi2any} generate |
| menus for you, as you do not then have the burden of updating menu |
| blocks in your Texinfo source when you add, remove, or relocate nodes. |
| In the usual case of a hierarchically organized manual with sectioning |
| commands associated with nodes, and with node pointers left out, you |
| should only write menus if you want exact control over the contents |
| and formatting of menus in Info. |
| |
| |
| @node Writing a Menu |
| @nodedescription What is a menu? |
| @subsection Writing a Menu |
| @cindex Writing a menu |
| @cindex Menu writing |
| |
| A menu consists of a @code{@@menu} command on a line by itself, |
| followed by menu entry lines or menu comment lines, and then followed |
| by an @code{@@end menu} command on a line by itself. |
| |
| A menu looks like this: |
| |
| @example |
| @group |
| @@menu |
| Larger Units of Text |
| |
| * Files:: All about handling files. |
| * Multiples: Buffers. Multiple buffers; editing |
| several files at once. |
| @@end menu |
| @end group |
| @end example |
| |
| @cindex Spaces, in menus |
| In a menu, every line that begins with an @w{@samp{* }} is a @dfn{menu |
| entry}. (Note the space after the asterisk.) In the example above, |
| the two lines starting with @w{@samp{* }} are menu entries. |
| |
| @cindex Menu comment |
| A line that does not start with an @w{@samp{* }} may also appear in a |
| menu. Such a line is not a menu entry but rather a @dfn{menu comment} |
| line. In the example above, the line @samp{Larger Units of Text} |
| is a menu comment line. Menu comment lines and any empty lines are kept |
| in the output. |
| |
| @cindex Hierarchical documents, and menus |
| Technically, menus can carry you to any node, regardless of the |
| structure of the document; even to nodes in a different Info file. |
| However, the @command{texi2any} implicit pointer creation feature |
| (@pxref{Writing a Node}) and GNU Emacs Texinfo mode updating commands |
| work only to create menus of subordinate nodes in a hierarchically |
| structured document. In a hierarchically structured document, it is |
| much better to use cross-references to refer to arbitrary nodes. |
| |
| In Info, a user selects a node with the @kbd{m} (@code{Info-menu}) |
| command. The menu entry name is what the user types after the @kbd{m} |
| command. |
| @cindex @code{accesskey} @subentry in HTML output of menus |
| In the HTML output, the @code{accesskey} attribute is used with the |
| values @samp{1}@dots{}@samp{9} for the first nine entries. This |
| allows people using web browsers to follow the first menu entries |
| using (typically) @kbd{M-@var{digit}}, e.g., @kbd{M-1} for the first |
| entry. |
| |
| |
| @node Menu Example |
| @nodedescription Two and three part menu entries. |
| @subsection A Menu Example |
| @cindex Menu example |
| @cindex Example menu |
| |
| @c merge with Writing a Menu node? |
| |
| A menu looks like this in Texinfo: |
| |
| @example |
| @group |
| @@menu |
| * menu entry name: Node name. A short description. |
| * Node name:: This form is preferred. |
| @@end menu |
| @end group |
| @end example |
| |
| @need 800 |
| @noindent |
| This produces: |
| |
| @example |
| @group |
| * Menu: |
| |
| * menu entry name: Node name. A short description. |
| * Node name:: This form is preferred. |
| @end group |
| @end example |
| |
| @need 700 |
| Here is an example as you might see it in a Texinfo file: |
| |
| @example |
| @group |
| @@menu |
| Larger Units of Text |
| |
| * Files:: All about handling files. |
| * Multiples: Buffers. Multiple buffers; editing |
| several files at once. |
| @@end menu |
| @end group |
| @end example |
| |
| @need 800 |
| @noindent |
| This produces: |
| |
| @example |
| @group |
| * Menu: |
| Larger Units of Text |
| |
| * Files:: All about handling files. |
| * Multiples: Buffers. Multiple buffers; editing |
| several files at once. |
| @end group |
| @end example |
| |
| In this example, the menu has two entries. @samp{Files} is both a menu |
| entry name and the name of the node referred to by that name. |
| @samp{Multiples} is the menu entry name; it refers to the node named |
| @samp{Buffers}. The line @samp{Larger Units of Text} is a comment; it |
| appears in the menu, but is not an entry. |
| |
| Since no file name is specified with either @samp{Files} or |
| @samp{Buffers}, they must be the names of nodes in the same Info file |
| (@pxref{Other Info Files, , Referring to Other Info Files}). |
| |
| |
| @node Menu Location |
| @nodedescription Menus go at the ends of nodes. |
| @subsection Menu Location |
| @cindex Menu location |
| @cindex Location of menus |
| |
| There may be at most one menu in a node. A menu is conventionally |
| located at the end of a node, without any regular text or additional |
| commands between the @code{@@end menu} and the beginning of the next |
| node. |
| |
| @cindex Info format, and menus |
| This convention is useful, since a reader who uses the menu could |
| easily miss any such text. Also, any such post-menu text will be |
| considered part of the menu in Info output (which has no marker for |
| the end of a menu). Thus, a line beginning with @samp{* } will likely |
| be incorrectly handled. |
| |
| It's usually best if a node with a menu does not contain much text. |
| If you find yourself with a lot of text before a menu, we generally |
| recommend moving all but a couple of paragraphs into a new subnode. |
| Otherwise, it is easy for readers to miss the menu. |
| |
| |
| @node Menu Parts |
| @nodedescription A menu entry has three parts. |
| @subsection The Parts of a Menu |
| @cindex Parts of a menu |
| @cindex Menu parts |
| @cindex @code{@@menu} parts |
| |
| A menu entry has three parts, only the second of which is required: |
| |
| @enumerate |
| @item |
| The menu entry name (optional). |
| |
| @item |
| The name of the node (required). |
| |
| @item |
| A description of the item (optional). |
| @end enumerate |
| |
| The template for a generic menu entry looks like this (but see the |
| next section for one more possibility): |
| |
| @example |
| * @var{menu-entry-name}: @var{node-name}. @var{description} |
| @end example |
| |
| Follow the menu entry name with a single colon, and follow the node |
| name with tab, comma, newline, or the two characters period and space |
| (@samp{. }). |
| |
| The third part of a menu entry is a descriptive phrase or sentence. |
| Menu entry names and node names are often short; the description |
| explains to the reader what the node is about. A useful description |
| complements the node name rather than repeats it. The description, |
| which is optional, can spread over multiple lines; if it does, some |
| authors prefer to indent the second line while others prefer to align |
| it with the first (and all others). It's up to you. An empty line, |
| or the next menu entry, ends a description. |
| |
| Space characters in a menu are preserved as-is in the Info output; this |
| allows you to format the menu as you wish. |
| @c FIXME to be removed. In 2022 both Info readers find the node. |
| Unfortunately you must type |
| node names without any extra spaces or some versions of some Info |
| readers will not find the node (@pxref{Node Line Requirements}). |
| |
| @command{texi2any} warns and protect names when the text of a menu item |
| (and node names and cross-references) contains a problematic construct that |
| could interfere with its parsing in Info. @xref{Info Node Names Constraints}. |
| |
| |
| @node Less Cluttered Menu Entry |
| @nodedescription Two part menu entry. |
| @subsection Less Cluttered Menu Entry |
| @cindex Two part menu entry |
| @cindex Double-colon menu entries |
| @cindex Menu entries with two colons |
| @cindex Less cluttered menu entry |
| @cindex Uncluttered menu entry |
| |
| When the menu entry name and node name are the same, you can write |
| the name immediately after the asterisk and space at the beginning of |
| the line and follow the name with two colons. |
| |
| @need 800 |
| For example, write |
| |
| @example |
| * Name:: @var{description} |
| @end example |
| |
| @need 800 |
| @noindent |
| instead of |
| |
| @example |
| * Name: Name. @var{description} |
| @end example |
| |
| We recommend using the node name for the menu entry name whenever |
| possible, since it reduces visual clutter in the menu. |
| |
| |
| @node Other Info Files |
| @nodedescription How to refer to a different Info file. |
| @subsection Referring to Other Info Files |
| @cindex Referring to other Info files |
| @cindex Nodes in other Info files |
| @cindex Other Info files' nodes |
| @cindex Going to other Info files' nodes |
| @cindex Info; other files' nodes |
| |
| You can create a menu entry that enables a reader in Info to go to a |
| node in another Info file by writing the file name in parentheses just |
| before the node name. Some examples: |
| |
| @example |
| @group |
| @@menu |
| * @var{first-entry-name}:(@var{filename})@var{nodename}. @var{description} |
| * (@var{filename})@var{second-node}:: @var{description} |
| @@end menu |
| @end group |
| @end example |
| |
| For example, to refer directly to the @samp{Outlining} and |
| @samp{Rebinding} nodes in the @cite{Emacs Manual}, you could write a |
| menu like this: |
| |
| @example |
| @group |
| @@menu |
| * Outlining: (emacs)Outline Mode. The major mode for |
| editing outlines. |
| * (emacs)Rebinding:: How to redefine the |
| meaning of a key. |
| @@end menu |
| @end group |
| @end example |
| |
| If you do not list the node name, but only name the file, then Info |
| presumes that you are referring to the `Top' node. Examples: |
| |
| @example |
| @group |
| * Info: (info). Documentation browsing system. |
| * (emacs):: The extensible, self-documenting |
| text editor. |
| @end group |
| @end example |
| |
| The GNU Emacs Texinfo mode menu updating commands only work with nodes |
| within the current buffer, so you cannot use them to create menus that |
| refer to other files. You must write such menus by hand. |
| @xref{Updating Nodes and Menus}. |
| |
| |
| @node Chapter Structuring |
| @nodedescription Creating chapters, sections, appendices, etc. |
| @chapter Chapter Structuring |
| @anchor{Structuring}@c old name |
| @cindex Chapter structuring |
| @cindex Structuring of chapters |
| @cindex Sectioning |
| |
| Texinfo's @dfn{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 |
| (@pxref{Contents,, Generating a Table of Contents}). |
| |
| Normally you put a @code{@@node} command immediately before each |
| chapter structuring command. @xref{Nodes}. |
| |
| |
| @node Tree Structuring |
| @nodedescription A manual is like an upside down tree @dots{} |
| @section Tree Structure of Sections |
| @cindex Tree structuring |
| |
| A Texinfo file is usually structured like a book with chapters, |
| sections, subsections, and the like. This structure can be visualized |
| as a tree (or rather as an upside-down tree) with the root at the top |
| and the levels corresponding to chapters, sections, subsection, and |
| subsubsections. |
| |
| Here is a diagram that shows a Texinfo file with three chapters, each |
| with two sections. |
| |
| @example |
| @group |
| Top |
| | |
| ------------------------------------- |
| | | | |
| Chapter 1 Chapter 2 Chapter 3 |
| | | | |
| -------- -------- -------- |
| | | | | | | |
| Section Section Section Section Section Section |
| 1.1 1.2 2.1 2.2 3.1 3.2 |
| |
| @end group |
| @end example |
| |
| In a Texinfo file that has this structure, the beginning of Chapter 2 |
| would be written like this: |
| |
| @example |
| @group |
| @@node Chapter 2 |
| @@chapter Chapter 2 |
| @end group |
| @end example |
| |
| @noindent |
| For purposes of example, here is how it would be written with |
| explicit node pointers: |
| |
| @example |
| @group |
| @@node Chapter 2, Chapter 3, Chapter 1, Top |
| @@chapter Chapter 2 |
| @end group |
| @end example |
| |
| The chapter structuring commands are described in the sections that |
| follow; the @code{@@node} command is described in |
| the previous chapter (@pxref{Nodes}). |
| |
| |
| @node Structuring Command Types |
| @section Structuring Command Types |
| |
| The chapter structuring commands fall into four groups, each of which |
| contains structuring commands at the levels of chapters, sections, |
| subsections, and subsubsections: |
| |
| @itemize @bullet |
| @item |
| The @code{@@chapter}-like commands and @code{@@appendix}-like commands |
| produce numbered or lettered entries both in the body of a document and |
| in its table of contents. |
| |
| @item |
| The @code{@@unnumbered}-like commands produce unnumbered entries |
| both in the body of a document and in its table of contents. The |
| @code{@@top} command, which has a special use, is a member of this |
| group (@pxref{@code{@@top} Command}). An @code{@@unnumbered} section |
| is a normal part of the document structure. |
| |
| @item |
| The @code{@@heading}-like 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. |
| @end itemize |
| |
| In printed output, the chapter structuring commands produce headings |
| in the document. When a @code{@@setchapternewpage} command says to do so, the |
| @code{@@chapter}, @code{@@unnumbered}, and @code{@@appendix} commands |
| start new pages in the printed manual; the @code{@@heading} commands |
| do not. @xref{@code{@@setchapternewpage}}. |
| |
| In Info and plain text output, the command causes the |
| title to appear on a line by itself, with a line of an ASCII character |
| (@samp{*}, @samp{=}, @dots{}) inserted underneath. |
| For example, the ``Chapter Structuring'' heading could be: |
| |
| @example |
| @group |
| 5 Chapter Structuring |
| ********************* |
| @end group |
| @end example |
| |
| @noindent The underlining character is the same for all the commands at the |
| same level. For instance, it is the same for the chapter-level commands |
| @code{@@chapter}, @code{@@apppendix}, @code{@@unnumbered} and |
| @code{@@chapheading}. |
| |
| In HTML, the chapter-level commands produce an @code{<h2>}-level |
| header by default (controlled by the @code{CHAPTER_HEADER_LEVEL} |
| customization variable, @pxref{HTML Customization of Specific Output}). |
| The heading element level is adjusted for the other commands. |
| |
| In the DocBook output, the appropriate level of element is used. |
| The produced element includes all following sections up to the next command |
| at the same or higher level. |
| For example, a @code{<chapter>} element is produced for @code{@@chapter}, |
| and contains any sections or subsections in the chapter. |
| |
| Here is a summary: |
| |
| @tex |
| {\globaldefs=1 \smallfonts \rm} |
| @end tex |
| |
| @multitable @columnfractions .19 .30 .29 .22 |
| @item @tab @tab @tab No new page |
| @item @i{Numbered} @tab @i{Unnumbered} @tab @i{Lettered/numbered} @tab @i{Unnumbered} |
| @item In contents @tab In contents @tab In contents @tab Not in contents |
| @item @tab @code{@@top} @tab @tab @code{@@majorheading} |
| @item @code{@@chapter} @tab @code{@@unnumbered} @tab @code{@@appendix} @tab @code{@@chapheading} |
| @item @code{@@section} @tab @code{@@unnumberedsec} @tab @code{@@appendixsec} @tab @code{@@heading} |
| @item @code{@@subsection} @tab @code{@@unnumberedsubsec} @tab @code{@@appendixsubsec} @tab @code{@@subheading} |
| @item @code{@@subsubsection} @tab @code{@@unnumberedsubsubsec} @tab @code{@@appendixsubsubsec} @tab @code{@@subsubheading} |
| @end multitable |
| @tex |
| {\globaldefs=1 \textfonts \rm} |
| @end tex |
| |
| |
| @node @code{@@chapter} |
| @section @code{@@chapter}: Chapter Structuring |
| |
| @anchor{chapter}@c old name |
| @findex chapter |
| |
| @code{@@chapter} identifies a chapter in the document--the highest |
| level of the normal document structuring hierarchy. Write the command |
| at the beginning of a line and follow it on the same line by the title |
| of the chapter. The chapter is numbered automatically, starting |
| from@tie{}1. |
| |
| For example, the present chapter in this manual is entitled |
| ``Chapter Structuring''; the @code{@@chapter} line |
| looks like this: |
| |
| @example |
| @@chapter Chapter Structuring |
| @end example |
| |
| |
| |
| @node @code{@@unnumbered @@appendix} |
| @section @code{@@unnumbered}, @code{@@appendix}: Chapters with Other Labeling |
| |
| @anchor{unnumbered & appendix}@c old name |
| @findex unnumbered |
| @findex appendix |
| |
| Use the @code{@@unnumbered} command to start a chapter-level element |
| that appears without chapter numbers of any kind. Use the |
| @code{@@appendix} command to start an appendix that is labeled by |
| letter (`A', `B', @dots{}) instead of by number; appendices are also |
| at the chapter level of structuring. |
| |
| Write an @code{@@appendix} or @code{@@unnumbered} command at the |
| beginning of a line and follow it on the same line by the title, |
| just as with @code{@@chapter}. |
| |
| @findex centerchap |
| Texinfo also provides a command @code{@@centerchap}, which is analogous |
| to @code{@@unnumbered}, but centers its argument in the printed and HTML |
| outputs. This kind of stylistic choice is not usually offered by |
| Texinfo. |
| @c but the Hacker's Dictionary wanted it, before they quit Texinfo. |
| You are recommended not to use this command, as |
| it may be removed in future releases of Texinfo. |
| |
| @cindex DocBook and prefatory sections |
| @cindex Preface, etc., and DocBook |
| With @code{@@unnumbered}, if the name of the associated node is one of |
| these English words (case-insensitive): |
| |
| @example |
| Acknowledgements Colophon Dedication Preface |
| @end example |
| |
| @cindex @code{<acknowledgements>} DocBook tag |
| @cindex @code{<colophon>} DocBook tag |
| @cindex @code{<dedication>} DocBook tag |
| @cindex @code{<preface>} DocBook tag |
| @cindex @code{<chapter>} DocBook tag |
| @noindent then the DocBook output uses corresponding special tags |
| (@code{<preface>}, etc.)@: instead of the default @code{<chapter>}. |
| The argument to @code{@@unnumbered} itself can be anything, and is |
| output as the element title as usual. |
| |
| |
| @node @code{@@majorheading @@chapheading} |
| @section @code{@@majorheading}, @code{@@chapheading}: Chapter-level Headings |
| |
| @anchor{majorheading & chapheading}@c old name |
| @findex majorheading |
| @findex chapheading |
| |
| The @code{@@majorheading} and @code{@@chapheading} commands produce |
| chapter-like headings in the body of a document. |
| |
| However, neither command produces an entry in the table of contents, |
| and neither command causes @TeX{} to start a new page in a printed |
| manual. |
| |
| In @TeX{}, a @code{@@majorheading} command generates a larger vertical |
| whitespace before the heading than a @code{@@chapheading} command but |
| is otherwise the same. |
| |
| In other output formats, the @code{@@majorheading} and @code{@@chapheading} |
| commands produce a similar output to @code{@@chapter}. The difference is |
| the lack of numbering and the lack of any association with nodes. |
| @xref{@code{@@chapter}}. |
| |
| |
| @node @code{@@section} |
| @section @code{@@section}: Sections Below Chapters |
| |
| @anchor{section}@c old name |
| @findex section |
| |
| An @code{@@section} command identifies a section within a chapter |
| unit, whether created with @code{@@chapter}, @code{@@unnumbered}, or |
| @code{@@appendix}, following the numbering scheme of the chapter-level |
| command. Thus, within a @code{@@chapter} chapter numbered `1', the |
| sections are numbered `1.1', `1.2', etc.; within an @code{@@appendix} |
| ``chapter'' labeled `A', the sections are numbered `A.1', `A.2', etc.; |
| within an @code{@@unnumbered} chapter, the section gets no number. |
| |
| To make a section, write the @code{@@section} command at the |
| beginning of a line and follow it on the same line by the section |
| title. For example: |
| |
| @example |
| @@section This is a section |
| @end example |
| |
| Section titles are listed in the table of contents. |
| |
| |
| @node @code{@@unnumberedsec @@appendixsec @@heading} |
| @section @code{@@unnumberedsec}, @code{@@appendixsec}, @code{@@heading} |
| |
| @anchor{unnumberedsec appendixsec heading}@c old name |
| @findex unnumberedsec |
| @findex appendixsec |
| @findex heading |
| |
| The @code{@@unnumberedsec}, @code{@@appendixsec}, and @code{@@heading} |
| commands are, respectively, the unnumbered, appendix-like, and |
| heading-like equivalents of the @code{@@section} command (see the |
| previous section). |
| |
| @code{@@unnumberedsec} and @code{@@appendixsec} do not need to be used |
| in ordinary circumstances, because @code{@@section} may also be used |
| within @code{@@unnumbered} and @code{@@appendix} chapters; again, see |
| the previous section. |
| |
| @table @code |
| @item @@unnumberedsec |
| The @code{@@unnumberedsec} command may be used within an unnumbered |
| chapter or within a regular chapter or appendix to produce an |
| unnumbered section. |
| |
| @findex appendixsection |
| @item @@appendixsec |
| @itemx @@appendixsection |
| @code{@@appendixsection} is a longer spelling of the |
| @code{@@appendixsec} command; the two are synonymous. |
| |
| Conventionally, the @code{@@appendixsec} or @code{@@appendixsection} |
| command is used only within appendices. |
| |
| @item @@heading |
| You may use the @code{@@heading} command (almost) anywhere for a |
| section-style heading that will not appear in the table of contents. |
| The @code{@@heading}-series commands can appear inside most |
| environments, for example, though pathological and useless locations |
| such as an argument to another command, etc., are not allowed. |
| |
| @end table |
| |
| |
| @node @code{@@subsection} |
| @section @code{@@subsection}: Subsections Below Sections |
| |
| @anchor{subsection}@c old name |
| @findex subsection |
| |
| Subsections are to sections as sections are to chapters; |
| @pxref{@code{@@section}}. For example: |
| |
| @example |
| @@subsection This is a subsection |
| @end example |
| |
| Subsection titles are listed in the table of contents. |
| |
| |
| @node @code{@@unnumberedsubsec @@appendixsubsec @@subheading} |
| @section The @code{@@subsection}-like Commands |
| |
| @anchor{unnumberedsubsec appendixsubsec subheading}@c old name |
| @findex unnumberedsubsec |
| @findex appendixsubsec |
| @findex subheading |
| @cindex Subsection-like commands |
| |
| The @code{@@unnumberedsubsec}, @code{@@appendixsubsec}, and |
| @code{@@subheading} commands are, respectively, the unnumbered, |
| appendix-like, and heading-like equivalents of the @code{@@subsection} |
| command. (@xref{@code{@@subsection}}.) |
| |
| @code{@@unnumberedsubsec} and @code{@@appendixsubsec} do not need to |
| be used in ordinary circumstances, because @code{@@subsection} may |
| also be used within sections of @code{@@unnumbered} and |
| @code{@@appendix} chapters (@pxref{@code{@@section}}). |
| |
| An @code{@@subheading} command produces a heading like that of a |
| subsection except that it is not numbered and does not appear in the |
| table of contents. Similarly, an @code{@@unnumberedsubsec} command |
| produces an unnumbered heading like that of a subsection and an |
| @code{@@appendixsubsec} command produces a subsection-like heading |
| labeled with a letter and numbers; both of these commands produce |
| headings that appear in the table of contents. |
| |
| |
| @node @code{@@subsubsection} |
| @section @code{@@subsubsection} and Other Subsub Commands |
| |
| @anchor{subsubsection}@c old name |
| @findex subsubsection |
| @findex unnumberedsubsubsec |
| @findex appendixsubsubsec |
| @findex subsubheading |
| @cindex Subsub sectioning commands |
| |
| The fourth and lowest level sectioning commands in Texinfo are the |
| `subsub' commands. They are: |
| |
| @table @code |
| @item @@subsubsection |
| Subsubsections are to subsections as subsections are to sections. |
| (@xref{@code{@@subsection}}.) Subsubsection titles appear in the |
| table of contents. |
| |
| @item @@unnumberedsubsubsec |
| Unnumbered subsubsection titles appear in the table of contents, |
| but lack numbers. Otherwise, unnumbered subsubsections are the same |
| as subsubsections. |
| |
| @item @@appendixsubsubsec |
| Conventionally, appendix commands are used only for appendices and are |
| lettered and numbered appropriately. They also appear in the table |
| of contents. |
| |
| @item @@subsubheading |
| The @code{@@subsubheading} command may be used anywhere that you want |
| a small heading that will not appear in the table of contents. |
| @end table |
| |
| As with subsections, @code{@@unnumberedsubsubsec} and |
| @code{@@appendixsubsubsec} do not need to be used in ordinary |
| circumstances, because @code{@@subsubsection} may also be used within |
| subsections of @code{@@unnumbered} and @code{@@appendix} chapters |
| (@pxref{@code{@@section}}). |
| |
| |
| @node @code{@@part} |
| @nodedescription Collections of chapters. |
| @section @code{@@part}: Groups of Chapters |
| @findex part |
| @cindex Part pages |
| |
| The final sectioning command is @code{@@part}, to mark a @dfn{part} of |
| a manual, that is, a group of chapters or (rarely) appendices. This |
| behaves quite differently from the other sectioning commands, to fit |
| with the way such ``parts'' are conventionally used in books. |
| |
| No @code{@@node} command is associated with @code{@@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: |
| |
| @example |
| @@part Part I:@@* The beginning |
| @end example |
| |
| As can be inferred from this example, no automatic numbering or |
| labeling of the @code{@@part} text is done. The text is taken as-is. |
| |
| Because parts are not associated with nodes, no general text can |
| follow the @code{@@part} line. To produce the intended output, it |
| must be followed by a chapter-level command (including its node). |
| Thus, to continue the example: |
| |
| @example |
| @@part Part I:@@* The beginning |
| |
| @@node Introduction |
| @@chapter Introduction |
| ... |
| @end example |
| |
| In the @TeX{} output, the @code{@@part} text is included in both the |
| normal and short tables of contents (@pxref{Contents}), 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 |
| @code{@@part} text. In the example above, the @code{@@*} 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 |
| (@pxref{@code{@@setchapternewpage}}). In the @LaTeX{} output, |
| the @code{@@part} is output as @code{\part}. |
| |
| In the HTML output, the @code{@@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 DocBook output, the @code{<part>} element includes all |
| the following chapters, up to the next @code{<part>}. A @code{<part>} |
| containing chapters is also closed at an appendix. |
| |
| In the Info and plain text output, @code{@@part} has no effect. |
| |
| @code{@@part} is ignored when raising or lowering sections (see next |
| section). That is, it is never lowered and nothing can be raised to it. |
| |
| |
| @node Raise/lower sections |
| @nodedescription How to change commands' hierarchical level. |
| @section Raise/lower Sections: @code{@@raisesections} and @code{@@lowersections} |
| @findex raisesections |
| @findex lowersections |
| @cindex Raising and lowering sections |
| @cindex Lowering and raising sections |
| @cindex Sections, raising and lowering |
| |
| The @code{@@raisesections} and @code{@@lowersections} commands |
| implicitly raise and lower the hierarchical level of following |
| chapters, sections and the other sectioning commands (excluding parts). |
| |
| That is, the @code{@@raisesections} command changes sections to |
| chapters, subsections to sections, and so on. Conversely, the |
| @code{@@lowersections} command changes chapters to sections, sections |
| to subsections, and so on. Thus, a @code{@@lowersections} command |
| cancels a @code{@@raisesections} command, and vice versa. |
| |
| @cindex Include files, and section levels |
| As a practical matter, you generally only want to raise or lower large |
| chunks, usually in external files. |
| You can use @code{@@lowersections} to include text written as an outer |
| or standalone Texinfo file in another Texinfo file as an inner, |
| included file (@pxref{Include Files}). Typical usage looks like this: |
| |
| @example |
| @@lowersections |
| @@include somefile.texi |
| @@raisesections |
| @end example |
| |
| @noindent (Without the @code{@@raisesections}, all the subsequent |
| sections in the main file would also be lowered.) |
| |
| If the included file being lowered has a @code{@@top} node, you'll |
| need to conditionalize its inclusion with a flag (@pxref{@code{@@set |
| @@value}}). |
| |
| Any menus in the final result have to take the raising and lowering |
| into account, so arbitrarily sprinkling @code{@@raisesections} and |
| @code{@@lowersections} commands throughout the document will likely |
| lead to errors (unless the menus in your document are all generated |
| automatically). |
| |
| 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 |
| subsubsections and raised chapters will not work with |
| @command{texi2any}'s feature of implicitly determining node pointers, |
| since the menu structure cannot be represented correctly. |
| |
| Write each @code{@@raisesections} and @code{@@lowersections} command |
| on a line of its own. |
| |
| |
| @node Unstructured Nodes |
| @nodedescription Nodes outside the main document structure. |
| @section Unstructured Nodes |
| |
| @cindex Unstructured nodes |
| All the examples of nodes in this chapter so far have used a @code{@@node} |
| line followed by a structuring command (such as @code{@@chapter}). |
| |
| @c @cindex Topic-oriented documentation |
| However, you can also create nodes without using a structuring command. |
| You may find this useful if you do not want your manual (or parts of |
| a manual) to have a hierarchical structure, with chapters superior to |
| sections, sections superior to sub-sections and so on. |
| |
| @c comment this out until we know if we properly support this style |
| @c of documentation in Texinfo. |
| @c This unstructured |
| @c style of documentation is known as @dfn{topic-oriented documentation}, |
| @c notably used by the DITA and Mallard systems. |
| |
| To do this, follow the @code{@@node} line with one of the heading commands. |
| For example: |
| |
| @example |
| @@node Topic |
| @@heading All about the Topic |
| @dots{} |
| @end example |
| |
| The argument to the heading command will be printed as usual. When |
| the @code{xrefautomaticsectiontitle} flag is on |
| (@pxref{@code{xrefautomaticsectiontitle}}), this argument will also be |
| used as the text for any cross-references to the node. |
| |
| Such nodes are not part of a hierarchical document structure. This means |
| that they are not listed in any table of contents, and automatic |
| node direction pointers (@samp{Next}, @samp{Prev} or @samp{Up}; |
| @pxref{Writing a Node}) do not link to or from these nodes. |
| |
| @findex xrefname |
| If you wish to create an unstructured node @emph{without} printing |
| a heading at the start, you can use the @code{@@xrefname} command in |
| place of the heading command. For example: |
| |
| @example |
| @@node Topic |
| @@xrefname All about the Topic |
| @dots{} |
| @end example |
| |
| The @code{@@xrefname} command provides the text for cross-references to |
| the node when the @code{xrefautomaticsectiontitle} flag is on, so |
| @samp{@@xref@{Topic@}} would produce output like ``See `All about the |
| Topic@w{'}''. |
| |
| |
| |
| @node Cross References |
| @nodedescription Writing cross-references. |
| @chapter Cross-references |
| @cindex Making cross-references |
| @cindex Cross-references |
| @cindex References |
| |
| @dfn{Cross-references} are used to refer the reader to other parts of the |
| same or different Texinfo files. |
| |
| Use cross-references to provide access to information that is too |
| detailed for the current context, or incidental to it. An online |
| help system or a reference manual is not like a novel; few read such |
| documents in sequence from beginning to end. Instead, people look |
| up what they need. For this reason, such creations should contain |
| many cross-references to help readers find other information that |
| they may not have read. |
| |
| In a printed manual, a cross-reference results in a page reference, |
| unless it is to another manual altogether, in which case the |
| cross-reference names that manual. In Info, a cross-reference results |
| in an entry that you can follow using the Info @samp{f} command. |
| (@xref{Help-Xref,, Following cross-references, info, Info}.) In HTML, a |
| cross-reference results in an hyperlink. In DocBook, the @code{<link>} |
| element is used for cross-references unless it is to another manual, |
| in which case the cross-reference names that manual. |
| |
| The various cross-reference commands use nodes, anchors |
| (@pxref{@code{@@anchor}}) or float labels (@pxref{@code{@@float}}) to define |
| cross-reference locations. When @TeX{} generates a DVI file, it records each |
| cross-reference location page number and uses the page numbers in making |
| references. Thus, even if you are writing a manual that will only be printed, |
| and not used online, you must nonetheless write @code{@@node} lines (or |
| @code{@@anchor} anchors) in order to name the places to which you make |
| cross-references. |
| |
| |
| |
| |
| @node Cross Reference Commands |
| @nodedescription A summary of the different commands. |
| @section Different Cross-reference Commands |
| @cindex Different cross-reference commands |
| |
| There are three different cross-reference commands: |
| |
| @table @code |
| @item @@xref |
| Used to start a sentence with an Info cross-reference saying |
| @samp{*Note @var{name}: @var{node}.} or with @w{`See @dots{}'} |
| in other output formats. |
| |
| @item @@ref |
| Used within or, more often, at the end of a sentence; produces |
| an Info cross-reference saying @samp{*note @var{name}: @var{node}.}, |
| and just the reference in other output formats, |
| without the preceding `See'. |
| |
| @item @@pxref |
| Used within parentheses, at the end of a sentence, or otherwise before |
| punctuation, to make a reference. Its output starts with a lowercase |
| @samp{*note} in Info, and with a lowercase `see' in the other output |
| formats. (@samp{p} is for `parenthesis'.) |
| @end table |
| |
| Additionally, there are commands to produce references to documents |
| outside the Texinfo system. The @code{@@cite} command is used |
| to make references to books and manuals. @code{@@url} produces |
| a @acronym{URL}, for example a reference to a page on the World |
| Wide Web. |
| |
| |
| @node Cross Reference Parts |
| @nodedescription A cross-reference has several parts. |
| @section Parts of a Cross-reference |
| @cindex Cross-reference parts |
| @cindex Parts of a cross-reference |
| @anchor{Reference Syntax} @c merged node |
| |
| A cross-reference command requires only one argument, which is |
| the name of the node to which it refers. A cross-reference command |
| may contain up to four additional arguments. |
| The template for a full five argument cross-reference looks like |
| this: |
| |
| @example |
| @group |
| @@xref@{@var{node-name}, @var{online-label}, @var{printed-label}, |
| @var{manual-name}, @var{printed-manual-title}@} |
| @end group |
| @end example |
| |
| The five possible arguments for a cross-reference are: |
| |
| @enumerate |
| @item |
| The node or anchor name. This is the location to which the cross-reference |
| takes you. In a printed document, the location of the node provides the |
| page reference only for references within the same document. |
| Use @code{@@node} to define the node (@pxref{Writing a Node}), |
| @code{@@anchor} (@pxref{@code{@@anchor}}), or @code{@@float} |
| (@pxref{@code{@@float}}) with a label. |
| This argument is required (except for reference to whole manuals). |
| |
| Write a node name in a cross-reference in exactly the same way as in |
| the @code{@@node} line, including the same capitalization; otherwise, the |
| processors may not find the reference. |
| |
| @item |
| A label for online output. It is usually omitted; then |
| the topic description (third argument) is used if it was specified; |
| if that was omitted as well, the node name is used. |
| |
| @item |
| A label for printed output. Often, this is the title or topic of the |
| section. This is used as the name of the reference in the printed |
| manual. If omitted, the node name is used. |
| |
| @item |
| The name of the manual to which the reference refers, if it is |
| outside the current manual, in a different Texinfo file. |
| |
| @item |
| The title of the printed manual to which the reference refers, |
| from a different Texinfo file. |
| @end enumerate |
| |
| Whitespace before and after the commas separating these arguments is |
| ignored. To include a comma in one of the arguments, use |
| @code{@@comma@{@}} (@pxref{Inserting a Comma}). |
| |
| Cross-references with one, two, three, four, and five arguments are |
| described separately in following sections. |
| |
| @cindex Comma after cross-reference |
| 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 other output formats. For example, |
| |
| @example |
| @@xref@{Another Section@} for more info |
| @end example |
| |
| @noindent |
| with TeX produces @w{`See Another Section, page @var{ppp}, for more info'}, |
| and in the Info output produces |
| @w{@samp{*Note Another Section:: for more info}}. |
| |
| |
| If an unwanted comma is added, follow the argument |
| with a command such as @samp{@@:}. For example, |
| @w{@samp{@@xref@{Hurricanes@}@@: --- for the details}} produces |
| |
| @quotation |
| See Hurricanes, page @var{ppp} --- for the details |
| @end quotation |
| |
| @noindent instead of |
| @w{`See Hurricanes, page @var{ppp}, --- for the details'}. |
| |
| @command{texi2any} warns and protect names when the text of a cross-reference |
| (and node names and menu items) contains a problematic construct that could |
| interfere with its parsing in Info. @xref{Info Node Names Constraints}. |
| |
| |
| @raisesections |
| @node One Argument |
| @nodedescription @code{@@xref} with one argument. |
| @subsection @code{@@xref} with One Argument |
| @cindex One-argument form of cross-references |
| |
| The simplest form of @code{@@xref} takes one argument, the name of |
| another node in the same Texinfo file. |
| |
| @need 700 |
| @noindent |
| For example, |
| |
| @example |
| @@xref@{Tropical Storms@}. |
| @end example |
| |
| @noindent |
| produces |
| |
| @example |
| *Note Tropical Storms::. |
| @end example |
| |
| @noindent |
| in Info and |
| |
| @quotation |
| See Section 3.1 [Tropical Storms], page 24. |
| @end quotation |
| |
| @noindent |
| in a printed manual. |
| |
| |
| @node Two Arguments |
| @nodedescription @code{@@xref} with two arguments. |
| @subsection @code{@@xref} with Two Arguments |
| @cindex Two-argument form of cross-references |
| |
| With two arguments, the second is used as a label for the online output. |
| |
| @need 750 |
| @noindent |
| The template is like this: |
| |
| @example |
| @@xref@{@var{node-name}, @var{online-label}@}. |
| @end example |
| |
| @need 700 |
| @noindent |
| For example, |
| |
| @example |
| @@xref@{Electrical Effects, Lightning@}. |
| @end example |
| |
| @noindent |
| produces: |
| |
| @example |
| *Note Lightning: Electrical Effects. |
| @end example |
| |
| @noindent |
| in Info and |
| |
| @quotation |
| See Section 5.2 [Electrical Effects], page 57. |
| @end quotation |
| |
| @noindent |
| in a printed manual, where the node name is printed. |
| |
| The second argument to cross-references shares constraints |
| with node names. The potentially problematic character in this |
| context is the colon. @xref{Info Node Names Constraints}. |
| |
| |
| @node Three Arguments |
| @nodedescription @code{@@xref} with three arguments. |
| @subsection @code{@@xref} with Three Arguments |
| @cindex Three-argument form of cross-references |
| |
| A third argument replaces the node name in the printed output. The third |
| argument should be the name of the section in the printed output, or |
| else state the topic discussed by that section. |
| |
| @need 750 |
| @noindent |
| The template is like this: |
| |
| @example |
| @group |
| @@xref@{@var{node-name}, @var{online-label}, @var{printed-label}@}. |
| @end group |
| @end example |
| |
| @need 700 |
| @noindent |
| For example, |
| |
| @example |
| @group |
| @@xref@{Electrical Effects, Lightning, Thunder and Lightning@}, |
| for details. |
| @end group |
| @end example |
| |
| @noindent |
| produces |
| |
| @example |
| *Note Lightning: Electrical Effects, for details. |
| @end example |
| |
| @noindent |
| in Info and |
| |
| @quotation |
| See Section 5.2 [Thunder and Lightning], page 57, for details. |
| @end quotation |
| |
| @noindent |
| in a printed manual. |
| |
| If a third argument is given and the second one is empty, then the |
| third argument serves for both. (Note how two commas, side by side, mark |
| the empty second argument.) |
| |
| @example |
| @group |
| @@xref@{Electrical Effects, , Thunder and Lightning@}, |
| for details. |
| @end group |
| @end example |
| |
| @noindent |
| produces |
| |
| @example |
| *Note Thunder and Lightning: Electrical Effects, for details. |
| @end example |
| |
| @noindent |
| in Info and |
| |
| @quotation |
| See Section 5.2 [Thunder and Lightning], page 57, for details. |
| @end quotation |
| |
| @noindent |
| in a printed manual. |
| |
| The third argument to cross-references shares constraints |
| with node names. The potentially problematic character in this |
| context is the colon. @xref{Info Node Names Constraints}. |
| |
| As a practical matter, it is often best to write cross-references with |
| just the first argument if the node name and the section title are the |
| same (or nearly so), and with the first and third arguments only if the |
| node name and title are different. |
| |
| @findex xrefautomaticsectiontitle |
| @anchor{@code{xrefautomaticsectiontitle}} |
| Texinfo offers a setting to use the section title instead of node |
| names by default in cross-references (an explicitly specified third |
| argument still takes precedence): |
| |
| @example |
| @@xrefautomaticsectiontitle on |
| @end example |
| |
| This setting is also used for cross-references to anchors defined with |
| @code{@@namedanchor} (@pxref{@code{@@anchor}}). |
| |
| 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 |
| (@code{@@xrefautomaticsectiontitle off}), for example, if you're |
| including some other sub-document that doesn't have suitable section |
| names. This setting also applies to node headers in HTML: if |
| @code{@@xrefautomaticsectiontitle} is on, the sections names are used |
| in node headers instead of the node names when possible. This setting has |
| no effect in Info or plain text output. |
| |
| |
| @node Four and Five Arguments |
| @nodedescription @code{@@xref} with four and five arguments. |
| @subsection @code{@@xref} with Four and Five Arguments |
| @cindex Four- and five argument forms of cross-references |
| |
| In a cross-reference, a fourth argument specifies the name of another |
| manual, different from the file in which the reference appears, and |
| a fifth argument specifies its title as a printed manual. |
| |
| @need 800 |
| @noindent |
| The full template is: |
| |
| @example |
| @group |
| @@xref@{@var{node-name}, @var{online-label}, @var{printed-label}, |
| @var{manual-name}, @var{printed-manual-title}@}. |
| @end group |
| @end example |
| |
| @need 700 |
| @noindent |
| For example, |
| |
| @example |
| @@xref@{Electrical Effects, Lightning, Thunder and Lightning, |
| weather, An Introduction to Meteorology@}. |
| @end example |
| |
| @noindent |
| produces this output in Info: |
| |
| @example |
| *Note Lightning: (weather)Electrical Effects. |
| @end example |
| |
| @noindent |
| As you can see, the name of the manual is enclosed in parentheses |
| and precedes the name of the node. In HTML, the manual name and |
| the node name are used to construct the hyperlink URL |
| (@pxref{HTML Xref}), while the link text is based on the label. |
| |
| @noindent |
| In a printed manual, the reference looks like this: |
| |
| @quotation |
| See section ``Thunder and Lightning'' in @cite{An Introduction to |
| Meteorology}. |
| @end quotation |
| |
| @noindent |
| The title of the printed manual is typeset like @code{@@cite}; and the |
| reference lacks a page number since the page a reference refers when |
| that reference is to another manual cannot be known. |
| |
| Next case: often, you will leave out the second argument when you use |
| the long version of @code{@@xref}. In this case, the third argument, |
| the topic description, will be used as the cross-reference name in |
| online formats. For example, |
| |
| @example |
| @@xref@{Electrical Effects, , Thunder and Lightning, |
| weather, An Introduction to Meteorology@}. |
| @end example |
| |
| @noindent |
| produces |
| |
| @example |
| @group |
| *Note Thunder and Lightning: (weather)Electrical Effects. |
| @end group |
| @end example |
| |
| @noindent |
| in Info and |
| |
| @quotation |
| See section ``Thunder and Lightning'' in @cite{An Introduction to |
| Meteorology}. |
| @end quotation |
| |
| @noindent |
| in a printed manual. |
| |
| Next case: If the node name and the section title are the same in the |
| other manual, you may also leave out the section title. In this case, |
| the node name is used in both instances. For example, |
| |
| @example |
| @@xref@{Electrical Effects,,, |
| weather, An Introduction to Meteorology@}. |
| @end example |
| |
| @noindent |
| produces |
| |
| @example |
| @group |
| *Note (weather)Electrical Effects::. |
| @end group |
| @end example |
| |
| @noindent |
| in Info and |
| |
| @quotation |
| See section ``Electrical Effects'' in @cite{An Introduction to |
| Meteorology}. |
| @end quotation |
| |
| @noindent |
| in a printed manual. |
| |
| In general, there is no reason to have a manual name argument without a |
| printed manual argument, unless no printed manual is generated. |
| You may also want to refer to another manual file that |
| is within a single printed manual---when multiple Texinfo files are |
| incorporated into the same printed manual but can create separate output files |
| in other output formats. In this case, you need to specify only the fourth |
| argument, and not the fifth. If the printed manual title argument is missing, the |
| manual name will be used instead in printed output. |
| |
| A printed manual title argument without an online manual argument is of |
| little use unless only a printed manual is generated from the Texinfo source. |
| The result in online formats depends on the format, and |
| can be, for example, an empty manual name or a reference to the printed |
| manual formatted in a similar way to the printed output. |
| |
| Finally, it's also allowed to leave out all the arguments |
| @emph{except} the fourth and fifth, to refer to another manual as a |
| whole. See the next section. |
| |
| @lowersections |
| |
| |
| @node Referring to a Manual as a Whole |
| @nodedescription Refer to an entire manual. |
| @section Referring to a Manual as a Whole |
| @cindex Manual, referring to as a whole |
| @cindex Referring to an entire manual |
| @anchor{Top Node Naming} @c old name |
| |
| Ordinarily, you must always name a node in a cross-reference. |
| However, it's not unusual to want to refer to another manual as a |
| whole, rather than a particular section within it. In this case, |
| giving any section name is an unnecessary distraction. |
| |
| So, with cross-references to other manuals (@pxref{Four and Five |
| Arguments}), if the first argument is either @samp{Top} (capitalized |
| just that way) or omitted entirely, and the third argument is omitted, |
| the printed output includes no node or section name. (The Info output |
| includes @samp{Top} if it was given.) For example, |
| |
| @example |
| @@xref@{Top,,, make, The GNU Make Manual@}. |
| @end example |
| |
| @noindent produces |
| |
| @example |
| @group |
| *Note (make)Top::. |
| @end group |
| @end example |
| |
| @noindent and |
| |
| @quotation |
| See @cite{The GNU Make Manual}. |
| @end quotation |
| |
| @noindent |
| Info readers will go to the Top node of the manual whether |
| or not the `Top' node is explicitly specified. |
| |
| It's also possible (and is historical practice) to refer to a whole |
| manual by specifying the `Top' node and an appropriate entry for the |
| third argument to the @code{@@xref} command. Using this idiom, to |
| make a cross-reference to @cite{The GNU Make Manual}, you would write: |
| |
| @example |
| @@xref@{Top,, Overview, make, The GNU Make Manual@}. |
| @end example |
| |
| @noindent |
| which produces |
| |
| @example |
| *Note Overview: (make)Top. |
| @end example |
| |
| @noindent |
| in Info and |
| |
| @quotation |
| See section ``Overview'' in @cite{The GNU Make Manual}. |
| @end quotation |
| |
| @noindent |
| in a printed manual. |
| |
| In this example, @samp{Top} is the name of the first node, and |
| @samp{Overview} is the name of the first section of the manual. There |
| is no widely-used convention for naming the first section in a printed |
| manual, this is just what the Make manual happens to use. This |
| arbitrariness of the first name is a principal reason why omitting the |
| third argument in whole-manual cross-references is preferable. |
| |
| |
| @node @code{@@xref} |
| @nodedescription Begin a reference with `See' @dots{} |
| @section @code{@@xref} |
| |
| @anchor{xref}@c old name |
| @findex xref |
| @cindex Cross-references using @code{@@xref} |
| @cindex References using @code{@@xref} |
| |
| The @code{@@xref} command generates a cross-reference for the |
| beginning of a sentence. Examples of using @code{@@xref} are |
| in previous sections. |
| |
| |
| @node @code{@@ref} |
| @nodedescription A reference for the last part of a sentence. |
| @section @code{@@ref} |
| |
| @anchor{ref}@c old name |
| @findex ref |
| @cindex Cross-references using @code{@@ref} |
| @cindex References using @code{@@ref} |
| |
| @code{@@ref} is nearly the same as @code{@@xref} except that it does |
| not generate a `See' in the output, just the reference itself. |
| This makes it useful as the last part of a sentence. |
| |
| @noindent For example, |
| |
| @cindex Hurricanes |
| @example |
| For more information, @@pxref@{This@}, and @@ref@{That@}. |
| @end example |
| |
| @noindent |
| produces in Info: |
| |
| @example |
| For more information, *note This::, and *note That::. |
| @end example |
| |
| @noindent |
| and in printed output: |
| |
| @quotation |
| For more information, see Section 1.1 [This], page 1, |
| and Section 1.2 [That], page 2. |
| @end quotation |
| |
| The @code{@@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 other output formats such as Info. For example: |
| |
| @cindex Sea surges |
| @example |
| Sea surges are described in @@ref@{Hurricanes@}. |
| @end example |
| |
| @noindent |
| looks ok in the printed output: |
| |
| @quotation |
| Sea surges are described in Section 6.7 [Hurricanes], page 72. |
| @end quotation |
| |
| @noindent |
| but is awkward to read in Info, ``note'' being a verb: |
| |
| @example |
| Sea surges are described in *note Hurricanes::. |
| @end example |
| |
| |
| @node @code{@@pxref} |
| @nodedescription How to write a parenthetical cross-reference. |
| @section @code{@@pxref} |
| |
| @anchor{pxref}@c old name |
| @findex pxref |
| @cindex Cross-references using @code{@@pxref} |
| @cindex References using @code{@@pxref} |
| |
| The parenthetical reference command, @code{@@pxref}, is nearly the |
| same as @code{@@xref}, but it is best used within parentheses. |
| The command differs from @code{@@xref} in that the reference is |
| typeset with a lowercase `see' rather than an uppercase `See'. |
| In Info, @samp{*note} is output. |
| |
| @noindent |
| With one argument, a parenthetical cross-reference looks like this: |
| |
| @cindex Flooding |
| @example |
| @dots{} storms cause flooding (@@pxref@{Hurricanes@}) @dots{} |
| @end example |
| |
| @need 800 |
| @noindent |
| which produces |
| |
| @example |
| @group |
| @dots{} storms cause flooding (*note Hurricanes::) @dots{} |
| @end group |
| @end example |
| |
| @noindent |
| in Info and |
| |
| @quotation |
| @dots{} storms cause flooding (see Section 6.7 [Hurricanes], page 72) @dots{} |
| @end quotation |
| |
| @noindent |
| in a printed manual. |
| |
| The effect of @samp{@@pxref@{@var{node-name}@}} is identical to that of |
| @samp{@@ref@{@var{node-name}@}} in Info output. Hence, it may be |
| preferable, when not inside parentheses, to write |
| @samp{see @@ref@{@var{node-name}@}} rather |
| than @samp{@@pxref@{@var{node-name}@}} when you want the word ``see'' |
| to occur in the output, as Info readers cannot reliably insert this |
| word based on the @samp{*note} cross-reference marker (for example, |
| using the @code{Info-hide-note-references} variable; see |
| @ref{Help-Inv, Help-Inv, Invisible text in Emacs Info, info, Info: An |
| Introduction}). |
| |
| In past versions of Texinfo, it was not allowed to write punctuation |
| after a @code{@@pxref}, so it could be used @emph{only} before a |
| right parenthesis. This is no longer the case. |
| |
| |
| @node @code{@@anchor} |
| @nodedescription Defining arbitrary cross-reference targets |
| @section @code{@@anchor}: Defining Arbitrary Cross-reference Targets |
| |
| @anchor{anchor}@c old name |
| @findex anchor |
| @cindex Anchors |
| @cindex Cross-reference targets, arbitrary |
| @cindex Targets for cross-references, arbitrary |
| |
| You may wish to create cross-references to arbitrary positions |
| in a document, not just to the beginning of nodes. The @code{@@anchor} |
| command marks such a position in your document, called an @dfn{anchor}. |
| Put an @code{@@anchor} command just before the position you wish to |
| refer to. For example: |
| |
| @example |
| This marks the @@anchor@{x-spot@}spot. |
| @dots{} |
| @@xref@{x-spot,,the spot@}. |
| @end example |
| |
| @noindent This produces: |
| |
| @example |
| This marks the spot. |
| @dots{} |
| See [the spot], page 1. |
| @end example |
| |
| The brace-delimited argument to @code{@@anchor}, here @samp{x-spot}, |
| is the @dfn{anchor name}, which plays the same role as a node name. |
| The anchor name is used to create cross-references to the anchor, as |
| with an @code{@@xref} or other cross-reference command, as shown |
| (@pxref{Cross References}). As you can see, the @code{@@anchor} command |
| itself produces no output. |
| |
| Anchor names share the same constraints as nodes on the characters |
| that can be included (@pxref{Info Node Names Constraints}). |
| Anchor names, node names and float labels may not conflict. |
| |
| You can put the @code{@@anchor} command on a line by itself if that |
| helps readability of the source. Whitespace (including newlines) is |
| ignored after @code{@@anchor}. |
| |
| @ignore |
| Anchors, nodes and float labels are |
| given similar treatment in some ways; for example, the |
| @code{goto-node} command takes either an anchor name or a node name as |
| an argument. (@xref{Go to node,,, info, Info}.). Anchor names and float |
| labels could also appear in menus (@pxref{Menus}) and node direction |
| pointers (@pxref{Writing a Node}), although this is not recommended. |
| @end ignore |
| |
| @cindex Nodes, deleting or renaming |
| When you delete or rename a node, it is usually a good idea to define an |
| @code{@@anchor} with the old name. That way, any links to the old node, |
| whether from other Texinfo manuals or general web pages, keep working. |
| Place any such anchors at the start of the node, after the @samp{@@node} |
| line and any structuring or heading command line. |
| |
| By default, links to anchors are unaffected by the |
| @code{xrefautomaticsectiontitle} setting (see @ref{Three Arguments,, |
| @code{xrefautomaticsectiontitle}}). This means that the anchor name |
| will be used as label text in the cross-reference. |
| |
| @findex namedanchor |
| However, you can define a @dfn{named anchor} using @code{@@namedanchor}. |
| The template is: |
| |
| @example |
| @@namedanchor@{@var{anchor-name}, @var{xref-name}@} |
| @end example |
| |
| Use this exactly as you would @code{@@anchor}, except the additional |
| @var{xref-name} parameter gives the text to use if |
| @code{xrefautomaticsectiontitle} is on. For example: |
| |
| @example |
| This marks the @@namedanchor@{x-spot, the spot@}spot. |
| @dots{} |
| @@set xrefautomaticsectiontitle on |
| @@xref@{x-spot@}. |
| @end example |
| |
| @noindent This produces: |
| |
| @example |
| This marks the spot. |
| @dots{} |
| See [the spot], page 1. |
| @end example |
| |
| @node @code{@@link} |
| @nodedescription How to make a plain link. |
| @section @code{@@link}: Plain, unadorned hyperlink |
| @findex link |
| @cindex Cross-references using @code{@@link} |
| @cindex Plain link |
| @cindex Plain hyperlink |
| |
| @code{@@link} produces a plain hyperlink in output formats that |
| support it, including in HTML, DocBook, @LaTeX{} and online PDF@. |
| The template is: |
| |
| @example |
| @@link@{@var{node-name}, @var{label}, @var{manual-name}@} |
| @end example |
| |
| @var{node-name} is the name of the target node or anchor. |
| Either or both of @var{label} and @var{manual-name} can |
| be omitted. @var{label}, if given, is the text to use for the |
| link. @var{manual-name} is the name of the external manual that the |
| target appears within; if not given, the reference is to the current |
| manual. |
| |
| @code{@@link} has similar output to @code{@@ref}, except that it does |
| not produce any extra text around the link label in Info or printed output |
| that would mark it as a cross-reference. |
| |
| Be careful about using @code{@@link} to produce links that are |
| necessary for a user to move around a manual, as these links will do |
| nothing in some output formats. @code{@@link} is best used to add |
| convenience links that are nonetheless not essential for a reader |
| to understand the text of the manual. For example, you might use |
| @code{@@link} in a code sample to reference documentation of a symbol |
| in a programming library. |
| |
| |
| |
| @node @code{@@inforef} |
| @nodedescription How to refer to an Info-only file. |
| @section @code{@@inforef}: Cross-references to Info-only Material |
| |
| @anchor{inforef}@c old name |
| @findex inforef |
| @cindex Cross-references using @code{@@inforef} |
| @cindex References using @code{@@inforef} |
| |
| @code{@@inforef} is used for making cross-references to Info |
| documents---even from a printed manual. This was originally |
| used for Info files that were not generated from any Texinfo source. |
| The command is now obsolete and should not be used. In addition |
| to having little use, similar output can be obtained with |
| @code{@@xref}, @code{@@ref} or @code{@@pxref} with the Info |
| file name as the fourth argument and no fifth argument. |
| |
| The command takes either two or three arguments, in the following |
| order: |
| |
| @enumerate |
| @item |
| The node name. |
| |
| @item |
| The cross-reference name (optional). |
| |
| @item |
| The Info file name. |
| @end enumerate |
| |
| @noindent |
| The template is: |
| |
| @example |
| @@inforef@{@var{node-name}, @var{cross-reference-name}, @var{info-file-name}@} |
| @end example |
| |
| |
| @node @code{@@url} |
| @nodedescription How to refer to a uniform resource locator. |
| @section @code{@@url}, @code{@@uref@{@var{url}[, @var{text}][, @var{replacement}]@}} |
| |
| @anchor{uref}@c old name |
| @anchor{url} |
| @cindex URL @subentry referring to |
| |
| @findex url |
| @cindex @code{href}, producing HTML |
| @code{@@url} produces a reference to a uniform resource locator |
| (URL@:). It takes one mandatory argument, the URL@:, and two optional |
| arguments which control the text that is displayed. In HTML and PDF |
| output, @code{@@url} produces a link you can follow. (To merely |
| indicate a URL without creating a link people can follow, use |
| @code{@@indicateurl}, @pxref{@code{@@indicateurl}}.) |
| |
| @findex uref |
| @code{@@uref} is a synonym for @code{@@url}. |
| (Originally, @code{@@url} had the meaning of @code{@@indicateurl} |
| and @code{@@uref} was required to produce a working link, but |
| in practice @code{@@url} was almost always misused. So we've changed |
| the meaning.) |
| |
| The second argument, if specified, is the text to display (the default |
| is the URL itself); in output formats other than HTML, the URL is |
| output in addition to this text. |
| |
| @cindex Man page, reference to |
| The third argument, if specified, is the text to display, but in this |
| case the URL is not output in any format. This is useful when the |
| text is already sufficiently referential, as in a man page. Also, if |
| the third argument is given, the second argument is ignored. |
| |
| |
| @node @code{@@url} Examples |
| @nodedescription Examples of using all the forms of @code{@@url}. |
| @subsection @code{@@url} Examples |
| |
| @cindex @code{@@url}, examples of using |
| @cindex URL @subentry examples of displaying |
| |
| First, here is an example of the simplest form of @code{@@url}, with |
| just one argument. The given URL is both the target and the visible |
| text of the link: |
| |
| @example |
| The official GNU ftp site is @@url@{https://ftp.gnu.org/gnu@}. |
| @end example |
| |
| @noindent produces: |
| @display |
| The official GNU ftp site is @url{https://ftp.gnu.org/gnu}. |
| @end display |
| |
| @subsubheading Two-argument form of @code{@@url} |
| |
| Here is an example of the two-argument form: |
| @example |
| The official @@url@{https://ftp.gnu.org/gnu, GNU ftp site@} |
| holds programs and texts. |
| @end example |
| |
| @noindent which produces: |
| @display |
| The official @url{https://ftp.gnu.org/gnu, GNU ftp site} |
| holds programs and texts. |
| @end display |
| |
| @noindent The HTML output is this: |
| @example |
| The official <a href="https://ftp.gnu.org/gnu">GNU ftp site</a> |
| holds programs and texts. |
| @end example |
| |
| @noindent In other formats, the output is like this: |
| @example |
| The official GNU ftp site (https://ftp.gnu.org/gnu) |
| holds programs and texts. |
| @end example |
| |
| @subsubheading Three-argument form of @code{@@url} |
| |
| Finally, an example of the three-argument form: |
| @example |
| The @@url@{/man.cgi/1/ls,,ls@} program @dots{} |
| @end example |
| |
| @noindent which, except for HTML, produces: |
| @display |
| The @url{/man.cgi/1/ls,,ls} program @dots{} |
| @end display |
| |
| @noindent but with HTML: |
| @example |
| The <a href="/man.cgi/1/ls">ls</a> program @dots{} |
| @end example |
| |
| |
| By the way, some people prefer to display URLs in the unambiguous |
| format: |
| |
| @display |
| <URL:http://@var{host}/@var{path}> |
| @end display |
| |
| @noindent |
| @cindex @code{<URL...>} convention, not used |
| You can use this form in the input file if you wish. We feel it's not |
| necessary to include the @samp{<URL:} and @samp{>} in the output, |
| since to be useful any software that tries to detect URLs in text |
| already has to detect them without the @samp{<URL:}. |
| |
| |
| @node URL Line Breaking |
| @nodedescription How lines are broken within @code{@@url} text. |
| @subsection URL Line Breaking |
| |
| @cindex Line breaks @subentry URLs |
| @cindex Breakpoints within URLs |
| @TeX{} allows line breaking within URLs at only a few characters |
| (which are special in URLs): @samp{&}, @samp{.}, @samp{#}, @samp{?}, |
| and @samp{/} (but not between two @samp{/} characters). A tiny amount |
| of stretchable space is also inserted around these characters to help |
| with line breaking. |
| |
| For HTML output, modern browsers will also do line breaking within |
| displayed URLs. If you need to allow breaks at other characters you |
| can insert @code{@@/} as needed (@pxref{Line Breaks}). |
| |
| @findex urefbreakstyle |
| By default, in @TeX{} any such breaks at special characters will occur |
| after the character. Some people prefer such breaks to happen before |
| the special character. This can be controlled with the |
| @code{@@urefbreakstyle} command (this command has effect only in |
| @TeX{}): |
| |
| @example |
| @@urefbreakstyle @var{how} |
| @end example |
| |
| @noindent where the argument @var{how} is one of these words: |
| |
| @vindex after@r{, value for @code{@@urefbreakstyle}} |
| @vindex before@r{, value for @code{@@urefbreakstyle}} |
| @vindex none@r{, value for @code{@@urefbreakstyle}} |
| @table @samp |
| @item after |
| (the default) Potentially break after the special characters. |
| @item before |
| Potentially break before the special characters. |
| @item none |
| Do not consider breaking at the special characters at all; any potential |
| breaks must be manually inserted. |
| @end table |
| |
| |
| @node @code{@@url} PDF Output Format |
| @nodedescription A special option to hide links in PDF output. |
| @subsection @code{@@url} PDF Output Format |
| |
| @cindex PDF output of URLs |
| @cindex URLs, PDF output of |
| |
| If the ultimate purpose of a PDF is only to be viewed online, perhaps |
| similar to HTML in some inchoate way, you may not want the URLs to be |
| included in the visible text (just as URLs are not visible to readers |
| of web pages). Texinfo provides a PDF-specific option for this, which |
| must be used inside @code{@@tex}: |
| |
| @findex \urefurlonlylinktrue |
| @example |
| @@tex |
| \global\urefurlonlylinktrue |
| @@end tex |
| @end example |
| |
| The result is that @code{@@url@{https://www.gnu.org, GNU@}} has the |
| visible output of just `GNU', with a link target of |
| @url{https://www.gnu.org}. Ordinarily, the visible output would |
| include both the label and the url: `GNU (@url{https://www.gnu.org})'. |
| |
| This option only has effect when the PDF output is produced with the |
| pdf@TeX{} program, not with other ways of getting from Texinfo to PDF |
| (e.g., @TeX{} to DVI to PDF)@. Consequently, it is ok to specify this |
| option unconditionally within @code{@@tex}, as shown above. It is |
| ignored when DVI is being produced. |
| |
| |
| @node @code{@@cite} |
| @nodedescription How to refer to books not in the Info system. |
| @section @code{@@cite}@{@var{reference}@} |
| |
| @anchor{cite}@c old name |
| @findex cite |
| |
| Use the @code{@@cite} command for the name of a book that lacks a |
| companion Info file. For example, we could refer to @cite{A Book}. |
| The command selects a slanted font in the printed |
| manual, and generates 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. |
| @xref{@code{@@xref}}. |
| |
| @node PDF Colors |
| @nodedescription Colorizing URLs and other links in PDF output. |
| @section PDF Colors |
| |
| @cindex Colored links, in PDF output |
| @cindex Links, coloring in PDF output |
| @cindex URLs, coloring in PDF output |
| |
| By default, URLs and cross-reference links are printed in black in PDF |
| output. Very occasionally, however, you may want to highlight such |
| ``live'' links with a different color, as is commonly done on web |
| pages. Texinfo provides a PDF-specific option for specifying these |
| colors, which must be used inside @code{@@tex}: |
| |
| @findex \linkcolor |
| @findex \urlcolor |
| @example |
| @@tex |
| \global\def\linkcolor@{1 0 0@} % red |
| \global\def\urlcolor@{0 1 0@} % green |
| @@end tex |
| @end example |
| |
| @code{\urlcolor} changes the color of @code{@@url} output (both the |
| actual URL and any textual label), while @code{\linkcolor} changes the |
| color for cross-references to nodes, etc. They are independent. |
| |
| @cindex RGB color specification. |
| The three given values must be numbers between 0 and 1, specifying the |
| amount of red, green, and blue respectively. |
| |
| These definitions only have an effect when the PDF output is produced |
| with the pdf@TeX{} program, not with other ways of getting from |
| Texinfo to PDF (e.g., @TeX{} to DVI to PDF)@. Consequently, it is ok |
| to specify this option unconditionally within @code{@@tex}, as shown |
| above. It is ignored when DVI is being produced. |
| |
| We do not recommend colorizing just for fun; unless you have a |
| specific reason to use colors, best to skip it. |
| |
| |
| |
| |
| @node Marking Text |
| @nodedescriptionblock |
| Marking words and phrases as code, keyboard input, meta-syntactic |
| variables, and the like. |
| @end nodedescriptionblock |
| @chapter Marking Text, Words and Phrases |
| @cindex Paragraph, marking text within |
| @cindex Marking words and phrases |
| @cindex Words and phrases, marking them |
| @cindex Marking text within a paragraph |
| @cindex Text, marking up |
| |
| In Texinfo, you can mark words and phrases in a variety of ways. |
| The Texinfo processors use this information to determine how to |
| highlight the text. |
| You can specify, for example, whether a word or phrase is a |
| defining occurrence, a metasyntactic variable, or a symbol used in a |
| program. Also, you can emphasize text, in several different ways. |
| |
| |
| @node Indicating |
| @nodedescription How to indicate definitions, files, etc. |
| @section Indicating Definitions, Commands, etc. |
| |
| @cindex Highlighting text |
| @cindex Indicating commands, definitions, etc. |
| |
| Texinfo has commands for indicating just what kind of object a piece |
| of text refers to. For example, email addresses are marked by |
| @code{@@email}; that way, the result can be a live link to send email |
| when the output format supports it. If the email address was simply |
| marked as ``print in a typewriter font'', that would not be possible. |
| |
| |
| @node Useful Highlighting |
| @nodedescription Highlighting provides useful information. |
| @subsection Highlighting Commands are Useful |
| |
| The commands serve a variety of purposes: |
| |
| @table @code |
| @item @@code@{@var{sample-code}@} |
| Indicate text that is a literal example of a piece of a program. |
| @xref{@code{@@code}}. |
| |
| @item @@kbd@{@var{keyboard-characters}@} |
| Indicate keyboard input. @xref{@code{@@kbd}}. |
| |
| @item @@key@{@var{key-name}@} |
| Indicate the conventional name for a key on a keyboard. |
| @xref{@code{@@key}}. |
| |
| @item @@samp@{@var{text}@} |
| Indicate text that is a literal example of a sequence of characters. |
| @xref{@code{@@samp}}. |
| |
| @item @@verb@{@var{text}@} |
| Write a verbatim sequence of characters. |
| @xref{@code{@@verb}}. |
| |
| @item @@var@{@var{metasyntactic-variable}@} |
| Indicate a metasyntactic variable. @xref{@code{@@var}}. |
| |
| @item @@env@{@var{environment-variable}@} |
| Indicate an environment variable. @xref{@code{@@env}}. |
| |
| @item @@file@{@var{file-name}@} |
| Indicate the name of a file. @xref{@code{@@file}}. |
| |
| @item @@command@{@var{command-name}@} |
| Indicate the name of a command. |
| @xref{@code{@@command}}. |
| |
| @item @@option@{@var{option}@} |
| Indicate a command-line option. |
| @xref{@code{@@option}}. |
| |
| @item @@dfn@{@var{term}@} |
| Indicate the introductory or defining use of a term. |
| @xref{@code{@@dfn}}. |
| |
| @item @@cite@{@var{reference}@} |
| Indicate the name of a book. @xref{@code{@@cite}}. |
| |
| @item @@abbr@{@var{abbreviation}@} |
| Indicate an abbreviation, such as `Comput.'. |
| |
| @item @@acronym@{@var{acronym}@} |
| Indicate an acronym. @xref{@code{@@acronym}}. |
| |
| @item @@indicateurl@{@var{uniform-resource-locator}@} |
| Indicate an example (that is, nonfunctional) uniform resource locator. |
| @xref{@code{@@indicateurl}}. (Use @code{@@url} (@pxref{@code{@@url}}) for |
| live URLs.) |
| |
| @item @@email@{@var{email-address}[, @var{displayed-text}]@} |
| Indicate an electronic mail address. @xref{@code{@@email}}. |
| |
| @end table |
| |
| |
| @node @code{@@code} |
| @nodedescription Indicating program code. |
| @subsection @code{@@code}@{@var{sample-code}@} |
| |
| @anchor{code}@c old name |
| @findex code |
| |
| @cindex Syntactic tokens, indicating |
| Use the @code{@@code} command to indicate text that is a piece of a |
| program and which consists of entire syntactic tokens. Enclose the |
| text in braces. |
| |
| @cindex Expressions in a program, indicating |
| @cindex Keywords, indicating |
| @cindex Reserved words, indicating |
| Thus, you should use @code{@@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{@@code} for command names in languages that resemble |
| programming languages, such as Texinfo. For example, @code{@@code} and |
| @code{@@samp} are produced by writing @samp{@@code@{@@@@code@}} and |
| @samp{@@code@{@@@@samp@}} in the Texinfo source, respectively. |
| |
| @cindex Case, not altering in @code{@@code} |
| It is incorrect to alter the case of a word inside a @code{@@code} |
| command when it appears at the beginning of a sentence. Most computer |
| languages are case sensitive. In C, for example, @code{Printf} is |
| different from the identifier @code{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. |
| |
| The @code{@@code} argument is typeset in a typewriter (monospace) font. |
| where the output format allows this. For example, |
| |
| @example |
| The function returns @@code@{nil@}. |
| @end example |
| |
| @noindent |
| produces this: |
| |
| @quotation |
| The function returns @code{nil}. |
| @end quotation |
| |
| Here are some cases for which it is preferable @emph{not} to use @code{@@code}: |
| |
| @itemize @bullet |
| @item |
| For shell command names, such as @command{ls} (use @code{@@command}). |
| |
| @item |
| For environment variables, such as @env{TEXINPUTS} (use @code{@@env}). |
| |
| @item |
| For shell options, such as @samp{-c}, when such options stand alone (use |
| @code{@@option}). |
| |
| @item |
| An entire shell command often looks better if written using |
| @code{@@samp} rather than @code{@@code}. In this case, the rule is to |
| choose the more pleasing format. |
| |
| @item |
| For a string of characters shorter than a syntactic token. For example, |
| if you are writing about @samp{goto-ch}, which is just a part of the |
| name for the @code{goto-char} Emacs Lisp function, you should use |
| @code{@@samp}. |
| |
| @item |
| In general, when writing about the characters used in a token; for |
| example, do not use @code{@@code} when you are explaining what letters |
| or printable symbols can be used in the names of functions. (Use |
| @code{@@samp}.) Also, you should not use @code{@@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{@@code} for the keystroke commands of GNU Emacs (use |
| @code{@@kbd} instead) although you may use @code{@@code} for the names |
| of the Emacs Lisp functions that the keystroke commands invoke. |
| |
| @end itemize |
| |
| By default, @TeX{} will consider breaking lines at @samp{-} and |
| @samp{_} characters within @code{@@code} and related commands. This |
| can be controlled with @code{@@allowcodebreaks} |
| (@pxref{@code{@@allowcodebreaks}}). In the HTML output breaking |
| lines is up to the browser's behavior. For Info, it seems better |
| never to make such breaks. |
| |
| For Info and plaintext, quotation characters are usually output around |
| the output of the @code{@@code} command and related commands |
| (e.g., @code{@@kbd}, @code{@@command}) except |
| in typewriter-like contexts such as the @code{@@example} environment |
| (@pxref{@code{@@example}}) and @code{@@code} itself, etc. |
| To control which quoting characters are inserted by |
| @command{texi2any} in the output of @samp{@@code}, etc., see the |
| @code{OPEN_QUOTE_SYMBOL} and @code{CLOSE_QUOTE_SYMBOL} customization |
| variables (@pxref{Customization Variables for Multiple Formats}). |
| |
| |
| @node @code{@@kbd} |
| @nodedescription Showing keyboard input. |
| @subsection @code{@@kbd}@{@var{keyboard-characters}@} |
| |
| @anchor{kbd}@c old name |
| @findex kbd |
| @cindex Keyboard input |
| |
| Use the @code{@@kbd} command for characters of input to be typed by |
| users. For example, to refer to the characters @kbd{M-a}, write: |
| |
| @example |
| @@kbd@{M-a@} |
| @end example |
| |
| @noindent |
| and to refer to the characters @kbd{M-x shell}, write: |
| |
| @example |
| @@kbd@{M-x shell@} |
| @end example |
| |
| @cindex User input |
| @cindex Slanted typewriter font, for @code{@@kbd} |
| By default, the @code{@@kbd} command produces a different font (slanted |
| typewriter instead of normal typewriter, where the output format allows), |
| so users can distinguish the characters that they are supposed |
| to type from those that the computer outputs. |
| |
| @findex kbdinputstyle |
| Since the usage of @code{@@kbd} varies from manual to manual, you can |
| control the font switching with the @code{@@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: |
| |
| @vindex distinct@r{, value for @code{@@kbdinputstyle}} |
| @vindex example@r{, value for @code{@@kbdinputstyle}} |
| @vindex code@r{, value for @code{@@kbdinputstyle}} |
| @table @samp |
| @item code |
| Always use the same font for @code{@@kbd} as @code{@@code}. |
| @item example |
| Use the distinguishing font for @code{@@kbd} only in @code{@@example} |
| and similar environments. |
| @item distinct |
| (the default) Always use the distinguishing font for @code{@@kbd}. |
| @end table |
| |
| You can embed another @@-command inside the braces of a @code{@@kbd} |
| command. Here, for example, is the way to describe a command that |
| would be described more verbosely as ``press the @samp{r} key and then |
| press the @key{RETURN} key'': |
| |
| @example |
| @@kbd@{r @@key@{RET@}@} |
| @end example |
| |
| @noindent |
| This produces: @kbd{r @key{RET}}. (The present manual uses the |
| default for @code{@@kbdinputstyle}.) |
| |
| You also use the @code{@@kbd} command if you are spelling out the letters |
| you type; for example: |
| |
| @example |
| To give the @@code@{logout@} command, |
| type the characters @@kbd@{l o g o u t @@key@{RET@}@}. |
| @end example |
| |
| @noindent |
| This produces: |
| |
| @quotation |
| To give the @code{logout} command, |
| type the characters @kbd{l o g o u t @key{RET}}. |
| @end quotation |
| |
| (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 @kbd{@@key@{SPC@}} for it.) |
| |
| |
| @node @code{@@key} |
| @nodedescription Specifying keys. |
| @subsection @code{@@key}@{@var{key-name}@} |
| |
| @anchor{key}@c old name |
| @findex key |
| |
| Use the @code{@@key} command for the conventional name for a key on a |
| keyboard, as in: |
| |
| @example |
| @@key@{RET@} |
| @end example |
| |
| You can use the @code{@@key} command within the argument of an |
| @code{@@kbd} command when the sequence of characters to be typed |
| includes one or more keys that are described by name. |
| |
| For example, to produce @kbd{C-x @key{ESC}} and @kbd{M-@key{TAB}} you |
| would type: |
| |
| @example |
| @@kbd@{C-x @@key@{ESC@}@} |
| @@kbd@{M-@@key@{TAB@}@} |
| @end example |
| |
| Here is a list of the recommended names for keys: |
| @cindex Recommended names for keys |
| @cindex Keys, recommended names |
| @cindex Names recommended for keys |
| @cindex Abbreviations for keys |
| @cindex Control keys, specifying |
| @cindex Meta keys, specifying |
| |
| @quotation |
| @table @t |
| @item SPC |
| Space |
| @item RET |
| Return |
| @item LFD |
| Linefeed (however, since most keyboards nowadays do not have a Linefeed key, |
| it might be better to call this character @kbd{C-j}) |
| @item TAB |
| Tab |
| @item BS |
| Backspace |
| @item ESC |
| Escape |
| @item DELETE |
| Delete |
| @item SHIFT |
| Shift |
| @item CTRL |
| Control |
| @item META |
| Meta |
| @end table |
| @end quotation |
| |
| @cindex META key |
| 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 @kbd{Meta-a}, use the @code{@@kbd} command |
| alone; do not use the @code{@@key} command; but when you are referring |
| to the modifier key in isolation, use the @code{@@key} command. For |
| example, write @samp{@@kbd@{Meta-a@}} to produce @kbd{Meta-a} and |
| @samp{@@key@{META@}} to produce @key{META}. |
| |
| |
| @node @code{@@samp} |
| @nodedescription Indicating a literal sequence of characters. |
| @subsection @code{@@samp}@{@var{text}@} |
| |
| @anchor{samp}@c old name |
| @findex samp |
| |
| Use the @code{@@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 addition, it is printed in a fixed-width font. |
| |
| @example |
| To match @@samp@{foo@} at the end of the line, |
| use the regexp @@samp@{foo$@}. |
| @end example |
| |
| @noindent |
| produces |
| |
| @quotation |
| To match @samp{foo} at the end of the line, use the regexp |
| @samp{foo$}. |
| @end quotation |
| |
| Any time you are referring to single characters, you should use |
| @code{@@samp} unless @code{@@kbd} or @code{@@key} is more appropriate. |
| Also, you may use @code{@@samp} for entire statements in C and for entire |
| shell commands---in this case, @code{@@samp} often looks better than |
| @code{@@code}. Basically, @code{@@samp} is a catchall for whatever is |
| not covered by @code{@@code}, @code{@@kbd}, @code{@@key}, |
| @code{@@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: |
| |
| @example |
| @group |
| In English, the vowels are @@samp@{a@}, @@samp@{e@}, |
| @@samp@{i@}, @@samp@{o@}, @@samp@{u@}, and sometimes |
| @@samp@{y@}. |
| @end group |
| @end example |
| |
| @noindent |
| This produces: |
| |
| @quotation |
| In English, the vowels are @samp{a}, @samp{e}, |
| @samp{i}, @samp{o}, @samp{u}, and sometimes |
| @samp{y}. |
| @end quotation |
| |
| |
| @node @code{@@verb} |
| @nodedescription Indicating a verbatim sequence of characters. |
| @subsection @code{@@verb}@{@var{char}@var{text}@var{char}@} |
| |
| @anchor{verb}@c old name |
| @findex verb |
| @cindex Verbatim in-line text |
| |
| @cindex Delimiter character, for verbatim |
| Use the @code{@@verb} command to print a verbatim sequence of |
| characters. |
| |
| Like @LaTeX{}'s @code{\verb} command, the verbatim text can be quoted using |
| any unique delimiter character. Enclose the verbatim text, including the |
| delimiters, in braces. Text is printed in a fixed-width font: |
| |
| @example |
| How many @@verb@{|@@|@}-escapes does one need to print this |
| @@verb@{.@@a @@b.@@c.@} string or @@verb@{+@@'e?`@{@}!`\+@} this? |
| @end example |
| |
| @noindent |
| produces |
| |
| @example |
| How many @verb{|@|}-escapes does one need to print this |
| @verb{.@a @b.@c.} string or @verb{+@'e?`{}!`\+} this? |
| @end example |
| |
| This is in contrast to @code{@@samp} (see the previous section), |
| @code{@@code}, and similar commands; in those cases, the argument is |
| normal Texinfo text, where the three characters @code{@@@{@}} are |
| special, as usual. With @code{@@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, @samp{@@verb@{...@}} prints a single |
| (fixed-width) period. |
| |
| It is not reliable to use @code{@@verb} inside other Texinfo |
| constructs. In particular, it does not work to use @code{@@verb} in |
| anything related to cross-referencing, such as section titles or |
| figure captions. |
| |
| |
| @node @code{@@var} |
| @nodedescription Indicating metasyntactic variables. |
| @subsection @code{@@var}@{@var{metasyntactic-variable}@} |
| |
| @anchor{var}@c old name |
| @findex var |
| |
| Use the @code{@@var} command to indicate metasyntactic variables. A |
| @dfn{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 @code{@@var} for the names of normal variables in computer |
| programs. These are specific names, so @code{@@code} is correct for |
| them. For example, the Emacs Lisp variable @code{texinfo-tex-command} |
| is not a metasyntactic variable; it is properly formatted using @code{@@code}. |
| |
| Do not use @code{@@var} for environment variables either; @code{@@env} |
| is correct for them (see the next section). |
| |
| The effect of @code{@@var} in the Info file is to change the case of |
| the argument to all uppercase. In the printed manual, the argument |
| is output in slanted type. |
| @footnote{In @TeX{} output, @code{@@var} uses a slanted typewriter font |
| in code contexts such as @code{@@code} or @code{@@example}. To use a |
| variable-width, slanted roman font in all contexts, specify @samp{@@clear |
| txicodevaristt} (@pxref{@code{@@set @@value}}). This gives consistency |
| for parameter names whether they are in @code{@@def}, @code{@@table |
| @@code}, or a regular paragraph. Note that this flag does nothing in |
| @LaTeX{} output.} |
| |
| @need 700 |
| For example, |
| |
| @example |
| To delete file @@var@{filename@}, |
| type @@samp@{rm @@var@{filename@}@}. |
| @end example |
| |
| @noindent |
| produces |
| |
| @quotation |
| To delete file @var{filename}, type @samp{rm @var{filename}}. |
| @end quotation |
| |
| @noindent |
| (Note that @code{@@var} may appear inside @code{@@code}, |
| @code{@@samp}, @code{@@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: |
| |
| @example |
| @group |
| \input texinfo |
| @@@@settitle @@var@{name-of-manual@} |
| @end group |
| @end example |
| |
| @noindent |
| This produces: |
| |
| @example |
| @group |
| \input texinfo |
| @@settitle @var{name-of-manual} |
| @end group |
| @end example |
| |
| In some documentation styles, metasyntactic variables are shown with |
| angle brackets, for example: |
| |
| @example |
| @dots{}, type rm <filename> |
| @end example |
| |
| @noindent |
| However, that is not the style that Texinfo uses. |
| |
| @c FIXME add a customization variable? Add an example on how to do that |
| @c for HTML? |
| @c (You can, of course, modify the sources to @file{texinfo.tex} |
| @c and the Info formatting commands |
| @c to output the @code{<@dots{}>} format if you wish.) |
| |
| |
| @node @code{@@env} |
| @nodedescription Indicating environment variables. |
| @subsection @code{@@env}@{@var{environment-variable}@} |
| |
| @anchor{env}@c old name |
| @findex env |
| |
| Use the @code{@@env} command to indicate environment variables, as |
| used by many operating systems, including GNU@. Do not use it for |
| @emph{meta}syntactic variables; use @code{@@var} for those (see the |
| previous section). |
| |
| @code{@@env} is equivalent to @code{@@code} in its effects. |
| For example: |
| |
| @example |
| The @@env@{PATH@} environment variable @dots{} |
| @end example |
| @noindent produces |
| @quotation |
| The @env{PATH} environment variable @dots{} |
| @end quotation |
| |
| |
| @node @code{@@file} |
| @nodedescription Indicating file names. |
| @subsection @code{@@file}@{@var{file-name}@} |
| |
| @anchor{file}@c old name |
| @findex file |
| |
| Use the @code{@@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 @code{@@file} |
| for symbols in a programming language; use @code{@@code}. |
| |
| @code{@@file} is equivalent to @code{code} in its effects. For |
| example, |
| |
| @example |
| The @@file@{.el@} files are in |
| the @@file@{/usr/local/emacs/lisp@} directory. |
| @end example |
| |
| @noindent |
| produces |
| |
| @quotation |
| The @file{.el} files are in |
| the @file{/usr/local/emacs/lisp} directory. |
| @end quotation |
| |
| |
| @node @code{@@command} |
| @nodedescription Indicating command names. |
| @subsection @code{@@command}@{@var{command-name}@} |
| |
| @anchor{command}@c old name |
| @findex command |
| @cindex Command names, indicating |
| @cindex Program names, indicating |
| |
| Use the @code{@@command} command to indicate command names, such as |
| @command{ls} or @command{cc}. |
| |
| @code{@@command} is equivalent to @code{@@code} in its effects. |
| For example: |
| |
| @example |
| The command @@command@{ls@} lists directory contents. |
| @end example |
| @noindent produces |
| @quotation |
| The command @command{ls} lists directory contents. |
| @end quotation |
| |
| You should write the name of a program in the ordinary text font, rather |
| than using @code{@@command}, if you regard it as a new English word, |
| such as `Emacs' or `Bison'. |
| |
| When writing an entire shell command invocation, as in @samp{ls -l}, |
| you should use either @code{@@samp} or @code{@@code} at your discretion. |
| |
| |
| @node @code{@@option} |
| @nodedescription Indicating option names. |
| @subsection @code{@@option}@{@var{option-name}@} |
| |
| @anchor{option}@c old name |
| @findex option |
| |
| Use the @code{@@option} command to indicate a command-line option; for |
| example, @option{-l} or @option{--version} or |
| @option{--output=@var{filename}}. |
| |
| @code{@@option} is equivalent to @code{@@code} in its effects. |
| For example: |
| |
| @example |
| The option @@option@{-l@} produces a long listing. |
| @end example |
| @noindent produces |
| @quotation |
| The option @option{-l} produces a long listing. |
| @end quotation |
| |
| |
| @node @code{@@dfn} |
| @nodedescription Specifying definitions. |
| @subsection @code{@@dfn}@{@var{term}@} |
| |
| @anchor{dfn}@c old name |
| @findex dfn |
| |
| Use the @code{@@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 @code{@@dfn}. The command selects a slanted font |
| in the printed manual, and generates double quotation marks in the Info |
| file. For example: |
| |
| @example |
| Getting rid of a file is called @@dfn@{deleting@} it. |
| @end example |
| |
| @noindent |
| produces |
| |
| @quotation |
| Getting rid of a file is called @dfn{deleting} it. |
| @end quotation |
| |
| 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. |
| |
| |
| @node @code{@@abbr} |
| @nodedescription Indicating abbreviations. |
| @subsection @code{@@abbr}@{@var{abbreviation}[, @var{meaning}]@} |
| |
| @anchor{abbr}@c old name |
| @findex abbr |
| |
| @cindex Abbreviations, tagging |
| You can use the @code{@@abbr} command for general abbreviations. The |
| abbreviation is given as the single argument in braces, as in |
| @samp{@@abbr@{Comput.@}}. As a matter of style, or for particular |
| abbreviations, you may prefer to omit periods, as in |
| @samp{@@abbr@{Mr@} Stallman}. |
| |
| @code{@@abbr} accepts an optional second argument, intended to be used |
| for the meaning of the abbreviation. |
| |
| If the abbreviation ends with a lowercase letter and a period, and is |
| not at the end of a sentence, and has no second argument, remember to |
| use the @code{@@.} command (@pxref{Ending a Sentence}) to get the |
| correct spacing. However, you do not have to use @code{@@.} within |
| the abbreviation itself; Texinfo automatically assumes periods within |
| the abbreviation do not end a sentence. |
| |
| In output formats with an appropriate tag, such as HTML and DocBook, this tag |
| is used. Otherwise, the first argument is printed as-is; if the second |
| argument is present, it is printed in parentheses after the |
| abbreviation. For instance: |
| |
| @example |
| @@abbr@{Comput. J., Computer Journal@} |
| @end example |
| |
| @noindent produces: |
| |
| @display |
| @abbr{Comput. J., Computer Journal} |
| @end display |
| |
| For abbreviations consisting of all capital letters, you may prefer to |
| use the @code{@@acronym} command instead. See the next section for |
| more on the usage of these two commands. |
| |
| |
| @node @code{@@acronym} |
| @nodedescription Indicating acronyms. |
| @subsection @code{@@acronym}@{@var{acronym}[, @var{meaning}]@} |
| |
| @anchor{acronym}@c old name |
| @findex acronym |
| |
| @cindex NASA, as acronym |
| @cindex Acronyms, tagging |
| You can use the @code{@@acronym} command for abbreviations written in |
| all capital letters, such as `@acronym{NASA}'. The abbreviation is |
| given as the single argument in braces, as in |
| @samp{@@acronym@{NASA@}}. As a matter of style, or for particular |
| acronyms, you may prefer to use periods, as in |
| @samp{@@acronym@{N.A.S.A.@}}. |
| |
| @code{@@acronym} accepts an optional second argument, intended to be |
| used for the meaning of the acronym. |
| |
| If the acronym is at the end of a sentence, and if there is no second |
| argument, remember to use the @code{@@.} or similar command |
| (@pxref{Ending a Sentence}) to get the correct spacing. |
| |
| In @TeX{}, the acronym is printed in slightly smaller font. In the |
| Info output, the argument is printed as-is. In either format, and |
| in @LaTeX{} output, if the second argument is present, it is printed in |
| parentheses after the acronym. In HTML and DocBook the appropriate |
| tag is used. |
| |
| For instance (since GNU is a recursive acronym, we use |
| @code{@@acronym} recursively): |
| |
| @example |
| @@acronym@{GNU, @@acronym@{GNU@}'s Not Unix@} |
| @end example |
| |
| @noindent produces: |
| |
| @display |
| @acronym{GNU, @acronym{GNU}'s Not Unix} |
| @end display |
| |
| @cindex Family names, in all capitals |
| In some circumstances, it is conventional to print family names in all |
| capitals. Don't use @code{@@acronym} for this, since a name is not an |
| acronym. Use @code{@@sc} instead (@pxref{Smallcaps}). |
| |
| @code{@@abbr} and @code{@@acronym} are closely related commands: they |
| both signal to the reader that a shortened form is being used, and |
| possibly give a meaning. When choosing whether to use these two |
| commands, please bear the following in mind. |
| |
| @itemize @minus |
| @item |
| In common English usage, acronyms are a subset of abbreviations: they |
| include pronounceable words like `@acronym{NATO}', `radar', and |
| `snafu'; some sources also include syllable acronyms like |
| `Usenet', hybrids like `@acronym{SIGGRAPH}', and unpronounceable |
| initialisms like `@acronym{FBI}'. |
| |
| @item |
| In Texinfo, an acronym (but not an abbreviation) should consist only |
| of capital letters and periods, no lowercase. |
| |
| @item |
| In @TeX{}, an acronym (but not an abbreviation) is printed in a |
| slightly smaller font. |
| |
| @item |
| It usually turns out to be quite difficult and/or time-consuming to |
| consistently use @code{@@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 @code{@@acronym} and just typeset |
| everything as normal text in all capitals: @samp{GNU}, producing the |
| output `GNU'. |
| |
| @item |
| In general, it's not essential to use either of these commands for all |
| abbreviations; use your judgment. Text is perfectly readable without |
| them. |
| @end itemize |
| |
| |
| @node @code{@@indicateurl} |
| @nodedescription Indicating an example URL. |
| @subsection @code{@@indicateurl}@{@var{uniform-resource-locator}@} |
| |
| @anchor{indicateurl}@c old name |
| @findex indicateurl |
| @cindex URL @subentry indicating |
| |
| Use the @code{@@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 @code{@@url} or |
| @code{@@uref} command for that, @pxref{@code{@@url}}). |
| @code{@@indicateurl} is useful for URLs which do not actually exist. |
| For example: |
| |
| @example |
| For example, the URL might be @@indicateurl@{http://example.org/path@}. |
| @end example |
| |
| @noindent which produces: |
| |
| @display |
| For example, the URL might be @indicateurl{http://example.org/path}. |
| @end display |
| |
| The output from @code{@@indicateurl} is usually like that of |
| @code{@@samp} (@pxref{@code{@@samp}}). |
| |
| |
| @node @code{@@email} |
| @nodedescription Indicating an electronic mail address. |
| @subsection @code{@@email}@{@var{email-address}[, @var{displayed-text}]@} |
| |
| @anchor{email}@c old name |
| @findex email |
| |
| Use the @code{@@email} command to indicate an electronic mail address. |
| It takes one mandatory argument, the address, and one optional argument, the |
| text to display (the default is the address itself). |
| |
| @cindex Mailto link |
| In Info, the address is shown in angle brackets, preceded by the text |
| to display if any. In printed output, the angle brackets are omitted. In |
| HTML and DocBook output, @code{@@email} produces a @samp{mailto} link. |
| In HTML, a @samp{mailto} link usually brings up a mail composition window. |
| For example: |
| |
| @example |
| Send bug reports to @@email@{bug-texinfo@@@@gnu.org@}, |
| suggestions to the @@email@{bug-texinfo@@@@gnu.org, same place@}. |
| @end example |
| |
| @noindent produces |
| |
| @display |
| Send bug reports to @email{bug-texinfo@@gnu.org}, |
| suggestions to the @email{bug-texinfo@@gnu.org, same place}. |
| @end display |
| |
| |
| @node Emphasis |
| @nodedescription How to emphasize text. |
| @section Emphasizing Text |
| @cindex Emphasizing text |
| |
| Usually, Texinfo changes the font to mark words in the text according |
| to the category the words belong to; an example is the @code{@@code} |
| command. Most often, this is the best way to 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 |
| @code{@@r} command, has any regular use. |
| |
| |
| @node @code{@@emph @@strong} |
| @nodedescription How to emphasize text in Texinfo. |
| @subsection @code{@@emph}@{@var{text}@} and @code{@@strong}@{@var{text}@} |
| |
| @anchor{emph & strong}@c oldname |
| @findex emph |
| @findex strong |
| @cindex Emphasizing text, font for |
| |
| The @code{@@emph} and @code{@@strong} commands are for emphasis; |
| @code{@@strong} is stronger. In printed output, @code{@@emph} produces |
| @emph{italics} and @code{@@strong} produces @strong{bold}. |
| In the Info output, @code{@@emph} surrounds the text with underscores |
| (@samp{_}), and @code{@@strong} puts asterisks around the text. |
| |
| For example, |
| |
| @example |
| @group |
| @@strong@{Caution:@} @@samp@{rm * .[^.]*@} |
| removes @@emph@{all@} files in the directory. |
| @end group |
| @end example |
| |
| @noindent |
| produces the following: |
| |
| @quotation |
| @strong{Caution}: @samp{rm * .[^.]*} |
| removes @emph{all} files in the directory. |
| @end quotation |
| |
| The @code{@@strong} command is seldom used except to mark what is, in |
| effect, a typographical element, such as the word `Caution' in the |
| preceding example. |
| |
| @quotation Caution |
| Do not use @code{@@strong} with the word @samp{Note} followed by a |
| space; Info will mistake the combination for a cross-reference. Use a |
| phrase such as @strong{Please notice} or @strong{Caution} instead, or |
| the optional argument to @code{@@quotation}---@samp{Note} is allowable |
| there. |
| @end quotation |
| |
| |
| @node Smallcaps |
| @nodedescription How to use the small caps font. |
| @subsection @code{@@sc}@{@var{text}@}: The Small Caps Font |
| @cindex Small caps font |
| @findex sc |
| |
| Use the @samp{@@sc} command to set text in @sc{a small caps font} |
| (where possible). Write the text you want to be in small caps between |
| braces in lowercase, like this: |
| |
| @example |
| Richard @@sc@{Stallman@} a commenc@'{e} le projet GNU. |
| @end example |
| |
| @noindent |
| This produces: |
| |
| @display |
| Richard @sc{Stallman} a commenc@'{e} le projet GNU. |
| @end display |
| |
| As shown here, we recommend reserving @code{@@sc} for special cases |
| where you want typographic small caps; family names are one such, |
| especially in languages other than English, though there are no |
| hard-and-fast rules about such things. |
| |
| @cindex @code{<small>} tag |
| @TeX{} typesets any uppercase letters between the braces of an |
| @code{@@sc} command in full-size capitals; only lowercase letters are |
| printed in the small caps font. In the Info output, the argument to |
| @code{@@sc} is printed in all uppercase. In HTML, the argument is |
| uppercased and the output marked with the @code{<small>} tag to reduce |
| the font size, since HTML cannot easily represent true small caps. |
| In @LaTeX{}, a command setting small caps fonts is output. |
| |
| Overall, we recommend using standard upper- and lowercase letters |
| wherever possible. |
| |
| |
| @node Fonts |
| @nodedescription Various font commands for printed output. |
| @subsection Fonts for Printing |
| @cindex Fonts for printing |
| |
| @findex fonttextsize |
| @cindex Font size, reducing |
| @cindex Reducing font size |
| @cindex Smaller fonts |
| Texinfo provides one command to change the size of the main body font |
| in printed output (with @file{texinfo.tex}) for a document: |
| @code{@@fonttextsize}. (This command is not a good way for setting the |
| font size in other output formats, where it may be ignored by |
| @command{texi2any}---in formats such as HTML or @LaTeX{}, |
| we recommend using format-specific features to control such details of |
| formatting, e.g.@: CSS or @LaTeX{} package options respectively.) |
| |
| @code{@@fonttextsize} takes a single argument on the remainder of the line, |
| which must be either @samp{10} or @samp{11}. For example: |
| |
| @example |
| @@fonttextsize 10 |
| @end example |
| |
| @cindex Printing cost, reducing |
| The effect is to reduce the body font to a 10@dmn{pt} size (the |
| default is 11@dmn{pt}). Fonts for other elements, such as sections |
| and chapters, are reduced accordingly. This should only be used in |
| conjunction with @code{@@smallbook} (@pxref{@code{@@smallbook}}) or |
| similar, since 10@dmn{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 and DocBook |
| output. They have no effect in Info. All the commands apply to a following |
| argument surrounded by braces. |
| |
| @table @code |
| @findex b @r{(bold font)} |
| @ifset commandlookup |
| @findex b |
| @end ifset |
| @cindex Bold font |
| @item @@b |
| selects @b{bold} face; |
| |
| @findex i @r{(italic font)} |
| @ifset commandlookup |
| @findex i |
| @end ifset |
| @cindex Italic font |
| @item @@i |
| selects an @i{italic} font; |
| |
| @findex r @r{(roman font)} |
| @ifset commandlookup |
| @findex r |
| @end ifset |
| @cindex Roman font |
| @cindex Default font |
| @item @@r |
| selects a @r{roman} font, which is the usual font in which text is |
| printed. It may or may not be seriffed. |
| |
| @findex sansserif |
| @cindex Sans serif font |
| @item @@sansserif |
| selects a @sansserif{sans serif} font; |
| |
| @findex slanted |
| @cindex Slanted font |
| @cindex Oblique font |
| @item @@slanted |
| selects a @slanted{slanted} font; |
| |
| @findex t @r{(typewriter font)} |
| @ifset commandlookup |
| @findex t |
| @end ifset |
| @cindex Monospace font |
| @cindex Fixed-width font |
| @cindex Typewriter font |
| @item @@t |
| selects the @t{fixed-width}, typewriter-style font used by @code{@@code}; |
| |
| @end table |
| |
| @ignore |
| (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.) |
| @end ignore |
| |
| The @code{@@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. |
| |
| For example, |
| |
| @example |
| @group |
| @@lisp |
| (+ 2 2) ; @@r@{Add two plus two.@} |
| @@end lisp |
| @end group |
| @end example |
| |
| @noindent |
| produces |
| |
| @lisp |
| (+ 2 2) ; @r{Add two plus two.} |
| @end lisp |
| |
| The @code{@@t} command can occasionally be useful for producing output in |
| a typewriter font where that is supported, but no distinction with |
| quotation marks is needed in Info or plain text. (Compare @code{@@t@{foo@}} |
| producing @t{foo} with @code{@@code@{foo@}} producing @code{foo}.) Here |
| are some possible reasons for using @code{@@t} instead of @code{@@code}: |
| |
| @itemize @minus |
| @item The argument is a single character |
| @item There are already quotes of some kind enclosing the argument |
| @item It's evident from context or the argument itself that the argument |
| could be computer code (e.g.@: name of a Usenet newsgroup) |
| @end itemize |
| |
| 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. |
| |
| |
| @node Quotations and Examples |
| @nodedescription Block quotations, examples, etc. |
| @chapter Quotations and Examples |
| |
| Quotations and examples are blocks of text consisting of one or more |
| whole paragraphs that are set off from the bulk of the text and |
| treated differently. They are usually indented in the output. |
| |
| In Texinfo, you always begin a quotation or example by writing an |
| @@-command at the beginning of a line by itself, and end it by writing |
| an @code{@@end} command that is also at the beginning of a line by |
| itself. For instance, you begin an example by writing |
| @code{@@example} by itself at the beginning of a line and end the |
| example by writing @code{@@end example} on a line by itself, at the |
| beginning of that line, and with only one space between the |
| @code{@@end} and the @code{example}. |
| |
| |
| @node Block Enclosing Commands |
| @nodedescription Different constructs for different purposes. |
| @section Block Enclosing Commands |
| |
| Here is a summary of commands that enclose blocks of text, also known |
| as @dfn{environments}. They're explained further in the following |
| sections. |
| |
| @table @code |
| @item @@quotation |
| Indicate text that is quoted. The text is filled, indented (from both |
| margins), and printed in a roman font by default. |
| |
| @item @@indentedblock |
| Like @code{@@quotation}, but the text is indented only on the left. |
| |
| @item @@example |
| Illustrate code, commands, and the like. The text is printed |
| in a fixed-width font, and indented but not filled. |
| |
| @item @@lisp |
| Like @code{@@example}, but specifically for illustrating Lisp code. The |
| text is printed in a fixed-width font, and indented but not filled. |
| |
| @item @@verbatim |
| Mark a piece of text that is to be printed verbatim; no character |
| substitutions are made and all commands are ignored, until the next |
| @code{@@end verbatim}. The text is printed in a fixed-width font, |
| and not indented or filled. Extra spaces and blank lines are |
| significant, and tabs are expanded. |
| |
| @item @@display |
| Display illustrative text. The text is indented but not filled, and |
| no font is selected (so, by default, the font is roman). |
| |
| @item @@format |
| Like @code{@@display} (the text is not filled and no font is |
| selected), but the text is not indented. |
| |
| @item @@smallquotation |
| @itemx @@smallindentedblock |
| @itemx @@smallexample |
| @itemx @@smalllisp |
| @itemx @@smalldisplay |
| @itemx @@smallformat |
| These @code{@@small...} commands are just like their non-small |
| counterparts, except that they output text in a smaller font size, |
| where possible. |
| |
| @item @@flushleft |
| @itemx @@flushright |
| Text is not filled, but is set flush with the left or right margin, |
| respectively. |
| |
| @item @@raggedright |
| Text is filled, but only justified on the left, leaving the right |
| margin ragged. |
| |
| @item @@cartouche |
| Highlight text, often an example or quotation, by drawing a box with |
| rounded corners around it. |
| @end table |
| |
| The @code{@@exdent} command is used within the above constructs to |
| undo the indentation of a line. |
| |
| The @code{@@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. |
| |
| |
| @node @code{@@quotation} |
| @nodedescription Writing a quotation. |
| @section @code{@@quotation}: Block Quotations |
| @anchor{quotation}@c old name |
| |
| @cindex Quotations |
| @findex quotation |
| |
| The text of a quotation is processed like normal text (regular font, |
| text is filled) except that: |
| |
| @itemize @bullet |
| @item |
| the left margin is closer to the center of the page, so the whole of the |
| quotation is indented; the right margin may also be closer to the center |
| of the page |
| |
| @item |
| the first lines of paragraphs are indented no more than other lines; and |
| |
| @item |
| an @code{@@author} command may be given to specify the author of the |
| quotation. |
| @end itemize |
| |
| @quotation |
| This is an example of text written between a @code{@@quotation} |
| command and an @code{@@end quotation} command. A @code{@@quotation} |
| command is most often used to indicate text that is excerpted from |
| another (real or hypothetical) printed work. |
| @end quotation |
| |
| Write a @code{@@quotation} command as text on a line by itself. This |
| line will disappear from the output. Mark the end of the quotation |
| with a line beginning with and containing only @code{@@end quotation}. |
| The @code{@@end quotation} line will likewise disappear from the |
| output. |
| |
| @code{@@quotation} takes one optional argument, given on the remainder |
| of the line. This text, if present, is included at the beginning of |
| the quotation in bold or otherwise emphasized, and followed with a |
| @samp{:}. For example: |
| |
| @example |
| @@quotation Note |
| This is |
| a foo. |
| @@end quotation |
| @end example |
| |
| @noindent |
| produces |
| |
| @quotation Note |
| This is |
| a foo. |
| @end quotation |
| |
| If the @code{@@quotation} argument is one of these English words |
| (case-insensitive): |
| |
| @example |
| Caution Important Note Tip Warning |
| @end example |
| |
| @cindex @code{<caution>} DocBook tag |
| @cindex @code{<important>} DocBook tag |
| @cindex @code{<note>} DocBook tag |
| @cindex @code{<tip>} DocBook tag |
| @cindex @code{<warning>} DocBook tag |
| @cindex @code{<blockquote>} DocBook tag |
| @noindent then the DocBook output uses corresponding special tags |
| (@code{<note>}, etc.)@: instead of the default @code{<blockquote>}. |
| |
| If the author of the quotation is specified in the @code{@@quotation} |
| block with the @code{@@author} command, a line with the author name is |
| displayed after the quotation: |
| |
| @example |
| @@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. |
| |
| @@author Richard Stallman |
| @@end quotation |
| @end example |
| |
| @noindent |
| produces |
| |
| @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. |
| |
| @author Richard Stallman |
| @end quotation |
| |
| |
| @node @code{@@indentedblock} |
| @nodedescription Block of text indented on left. |
| @section @code{@@indentedblock}: Indented text blocks |
| @cindex Indented text block |
| @findex indentedblock |
| |
| The @code{@@indentedblock} environment is similar to |
| @code{@@quotation}, except that text is only indented on the left (and |
| there is no optional argument for an author). Thus, the text font |
| remains unchanged, and text is gathered and filled as usual, but the |
| left margin is increased. For example: |
| |
| @indentedblock |
| This is an example of text written between an @code{@@indentedblock} |
| command and an @code{@@end indentedblock} command. The |
| @code{@@indentedblock} environment can contain any text or other |
| commands desired. |
| @end indentedblock |
| |
| This is written in the Texinfo source as: |
| |
| @example |
| @@indentedblock |
| This is an example ... |
| @@end indentedblock |
| @end example |
| |
| |
| @node @code{@@example} |
| @nodedescription Writing an example in a fixed-width font. |
| @section @code{@@example}: Example Text |
| |
| @anchor{example}@c old name |
| @findex example |
| @cindex Examples, formatting them |
| @cindex Formatting examples |
| |
| The @code{@@example} environment is used to indicate |
| computer input or output that is not part of the running text. If you |
| want to embed code fragments within sentences, use the @code{@@code} |
| command or its relatives instead (@pxref{@code{@@code}}). |
| |
| Write an @code{@@example} command at the beginning of a line by |
| itself. Mark the end of the block with @code{@@end example}. |
| For example, |
| |
| @example |
| @@example |
| cp foo @@var@{dest1@}; \ |
| cp foo @@var@{dest2@} |
| @@end example |
| @end example |
| |
| @noindent |
| produces |
| |
| @example |
| cp foo @var{dest1}; \ |
| cp foo @var{dest2} |
| @end example |
| |
| The output uses a fixed-width font and is indented. Each line |
| in the input file is a line in the output; that is, the source |
| text is not filled. Extra spaces and blank lines are significant. |
| Texinfo commands @emph{are} expanded; if you want the output to be |
| the input verbatim, use the @code{@@verbatim} environment instead |
| (@pxref{@code{@@verbatim}}). |
| |
| 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 @code{@@noindent} command |
| prevents a piece of text from being indented as if it were a new |
| paragraph (@pxref{@code{@@noindent}}). |
| |
| If you wish to use the normal roman font for a code comment, you can |
| use the @code{@@r} command (@pxref{Fonts}). |
| |
| You may optionally give arguments to the @code{@@example} command, |
| separated by commas if there is more than one. In the HTML output, |
| any such arguments are output as class names, prefixed by the string |
| @samp{user-}. This may be useful for adding syntax highlighting to |
| manuals for code samples. |
| |
| We recommend that when you give multiple arguments to @code{@@example}, you |
| use the first argument to specify the language of the code (e.g.@: |
| @samp{C}, @samp{lisp}, @samp{Cplusplus}). You may find uses for other |
| arguments, such as providing a formatting hint or marking code samples |
| for extraction and further processing, but for now nothing definitive |
| is recommended. Perhaps this will change in future Texinfo releases. |
| |
| @quotation Caution |
| Do not use tabs in the lines of an example! (Or anywhere else in |
| Texinfo, except in verbatim environments.) @TeX{} treats a tab as a |
| single space character, so any text following a tab on a line will not |
| be aligned as expected. |
| @end quotation |
| |
| |
| @node @code{@@verbatim} |
| @nodedescription Writing a verbatim example. |
| @section @code{@@verbatim}: Literal Text |
| |
| @anchor{verbatim}@c old name |
| @findex verbatim |
| @cindex Verbatim environment |
| |
| Use the @code{@@verbatim} environment for printing of text that may |
| contain special characters or commands that should not be interpreted, |
| such as computer input or output (@code{@@example} interprets its text |
| as regular Texinfo commands). This is especially useful for including automatically |
| generated files in a Texinfo manual. |
| |
| In general, the output will be just the same as the input. No |
| character substitutions are made, e.g., all spaces and blank lines are |
| significant, including tabs. The text is typeset in a fixed-width font, |
| and not indented or filled. |
| |
| Write a @code{@@verbatim} command at the beginning of a line by |
| itself. This line will disappear from the output. Mark the end of |
| the verbatim block with an @code{@@end verbatim} command, also written |
| at the beginning of a line by itself. The @code{@@end verbatim} will |
| also disappear from the output. |
| |
| For example: |
| |
| @example |
| @@verbatim |
| @{ |
| @var{<tab>}@@command with strange characters: @@'e |
| expand@var{<tab>}me |
| @} |
| @@end verbatim |
| @end example |
| |
| @noindent |
| (where @var{<tab>} stands for a literal tab character). This produces: |
| |
| @verbatim |
| { |
| @command with strange characters: @'e |
| expand me |
| } |
| @end verbatim |
| |
| Since the lines containing @code{@@verbatim} and @code{@@end verbatim} |
| produce no output, typically you should put a blank line before the |
| @code{@@verbatim} and another blank line after the @code{@@end |
| verbatim}. Blank lines between the beginning @code{@@verbatim} and |
| the ending @code{@@end verbatim} will appear in the output. |
| |
| @cindex Verbatim, small |
| @cindex Small verbatim |
| You can get a ``small'' verbatim by enclosing the @code{@@verbatim} in |
| an @code{@@smallformat} environment, as shown here: |
| |
| @example |
| @@smallformat |
| @@verbatim |
| ... still verbatim, but in a smaller font ... |
| @@end verbatim |
| @@end smallformat |
| @end example |
| |
| Finally, a word of warning: it is not reliable to use |
| @code{@@verbatim} inside other Texinfo constructs. |
| |
| See also @ref{@code{@@verbatiminclude}}. |
| |
| |
| @node @code{@@lisp} |
| @nodedescription Illustrating Lisp code. |
| @section @code{@@lisp}: Marking a Lisp Example |
| |
| @anchor{lisp}@c old name |
| @findex lisp |
| @cindex Lisp example |
| |
| The @code{@@lisp} command is very similar to @code{@@example}, |
| but marks the contents as Lisp code. For example: |
| |
| @example |
| @@lisp |
| Example lisp code |
| @@end lisp |
| @end example |
| |
| @noindent |
| The programming language can also be given as an argument to the |
| @code{@@example} command (@pxref{@code{@@example}}), so the example |
| above could also be written as: |
| |
| @example |
| @@example lisp |
| Example lisp code |
| @@end example |
| @end example |
| |
| Use @code{@@lisp} to preserve information regarding the nature of |
| the example. This is useful, for example, if you write a function |
| that evaluates only and all the Lisp code in a Texinfo file. Then you |
| can use the Texinfo file as a Lisp library. |
| |
| |
| @node @code{@@display} |
| @nodedescription Writing an example in the current font. |
| @section @code{@@display}: Examples Using the Text Font |
| |
| @anchor{display}@c old name |
| @findex display |
| @cindex Display formatting |
| |
| The @code{@@display} command begins another kind of environment, where |
| the font is left unchanged, not switched to typewriter as with |
| @code{@@example}. Each line of input still produces a line of output, |
| and the output is still indented. |
| |
| @display |
| This is an example of text written between a @code{@@display} command |
| and an @code{@@end display} command. The @code{@@display} command |
| indents the text, but does not fill it. |
| @end display |
| |
| |
| @node @code{@@format} |
| @nodedescription Writing an example without narrowed margins. |
| @section @code{@@format}: Examples Using the Full Line Width |
| |
| @anchor{format}@c old name |
| @findex format |
| |
| The @code{@@format} command is similar to @code{@@display}, except it |
| leaves the text unindented. Like @code{@@display}, it does not select |
| the fixed-width font. Thus, |
| |
| @example |
| @group |
| @@format |
| This is an example of text written between a @@code@{@@@@format@} command |
| and an @@code@{@@@@end format@} command. As you can see |
| from this example, |
| the @@code@{@@@@format@} command does not fill the text. |
| @@end format |
| @end group |
| @end example |
| |
| @noindent |
| produces |
| |
| @format |
| @group |
| This is an example of text written between a @code{@@format} command |
| and an @code{@@end format} command. As you can see |
| from this example, |
| the @code{@@format} command does not fill the text. |
| @end group |
| @end format |
| |
| |
| @node @code{@@exdent} |
| @nodedescription Undo indentation on a line. |
| @section @code{@@exdent}: Undoing a Line's Indentation |
| |
| @anchor{exdent}@c old name |
| @findex exdent |
| @cindex Indentation undoing |
| |
| The @code{@@exdent} command removes any indentation a line might have. |
| The command is written at the beginning of a line and applies only to |
| the text that follows the command that is on the same line. Do not use |
| braces around the text. The text on an @code{@@exdent} line is also |
| printed in the roman font where the output format allows this. |
| |
| @code{@@exdent} is usually used within examples. Thus, |
| |
| @example |
| @group |
| @@example |
| This line follows an @@@@example command. |
| @@exdent This line is exdented. |
| This line follows the exdented line. |
| The @@@@end example comes on the next line. |
| @@end example |
| @end group |
| @end example |
| |
| @noindent |
| produces |
| |
| @example |
| @group |
| This line follows an @@example command. |
| @exdent This line is exdented. |
| This line follows the exdented line. |
| The @@end example comes on the next line. |
| @end group |
| @end example |
| |
| In practice, the @code{@@exdent} command is rarely used. Usually, you |
| un-indent text by ending the example and returning the page to its |
| normal width. |
| |
| @code{@@exdent} does not have an effect in all output formats. |
| |
| |
| |
| @node @code{@@flushleft @@flushright} |
| @nodedescription Pushing text flush left or flush right. |
| @section @code{@@flushleft} and @code{@@flushright} |
| |
| @anchor{flushleft & flushright}@c old name |
| @findex flushleft |
| @findex flushright |
| @cindex Ragged right, without filling |
| @cindex Ragged left, without filling |
| |
| The @code{@@flushleft} and @code{@@flushright} commands line up the |
| ends of lines on the left and right margins of a page, |
| but do not fill the text. The commands are written on lines of their |
| own, without braces. The @code{@@flushleft} and @code{@@flushright} |
| commands are ended by @code{@@end flushleft} and @code{@@end |
| flushright} commands on lines of their own. |
| |
| @need 1500 |
| For example, |
| |
| @example |
| @group |
| @@flushleft |
| This text is |
| written flushleft. |
| @@end flushleft |
| @end group |
| @end example |
| |
| @noindent |
| produces |
| |
| @quotation |
| @flushleft |
| This text is |
| written flushleft. |
| @end flushleft |
| @end quotation |
| |
| |
| @code{@@flushright} produces the type of indentation often used in the |
| return address of letters. For example, |
| |
| @example |
| @group |
| @@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 |
| @end group |
| @end example |
| |
| @noindent |
| produces |
| |
| @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 |
| |
| |
| @node @code{@@raggedright} |
| @nodedescription Avoiding justification on the right. |
| @section @code{@@raggedright}: Ragged Right Text |
| |
| @anchor{raggedright}@c old name |
| @findex raggedright |
| @cindex Ragged right, with filling |
| |
| The @code{@@raggedright} fills text as usual, but the text is only |
| justified on the left; the right margin is ragged. The command is |
| written on a line of its own, without braces. The |
| @code{@@raggedright} command is ended by @code{@@end raggedright} on a |
| line of its own. This command only has an effect in output |
| formats where text is justified on the left, but |
| not in output formats where text is always set ragged right, such as |
| Info or HTML. |
| |
| The @code{@@raggedright} command can be useful with paragraphs |
| containing lists of commands with long names, when it is known in |
| advance that justifying the text on both margins will make the |
| paragraph look bad. |
| |
| An example (from elsewhere in this manual): |
| |
| @example |
| @group |
| @@raggedright |
| Commands for double and single angle quotation marks: |
| @@code@{@@@@guillemetleft@@@{@@@}@}, @@code@{@@@@guillemetright@@@{@@@}@}, |
| @@code@{@@@@guillemotleft@@@{@@@}@}, @@code@{@@@@guillemotright@@@{@@@}@}, |
| @@code@{@@@@guilsinglleft@@@{@@@}@}, @@code@{@@@@guilsinglright@@@{@@@}@}. |
| @@end raggedright |
| @end group |
| @end example |
| |
| @noindent |
| produces |
| |
| @raggedright |
| Commands for double and single angle quotation marks: |
| @code{@@guillemetleft@{@}}, @code{@@guillemetright@{@}}, |
| @code{@@guillemotleft@{@}}, @code{@@guillemotright@{@}}, |
| @code{@@guilsinglleft@{@}}, @code{@@guilsinglright@{@}}. |
| @end raggedright |
| |
| |
| @node @code{@@noindent} |
| @nodedescription Preventing paragraph indentation. |
| @section @code{@@noindent}: Omitting Indentation |
| |
| @anchor{noindent}@c old name |
| @findex noindent |
| @cindex Omitting indentation |
| @cindex Suppressing indentation |
| @cindex Indentation, omitting |
| |
| An example or other inclusion can break a paragraph into segments. |
| Ordinarily, the formatters indent text that follows an example as a new |
| paragraph. You can prevent this on a case-by-case basis by writing |
| @code{@@noindent} at the beginning of a line, preceding the continuation |
| text. You can also disable indentation for all paragraphs globally with |
| @code{@@paragraphindent} (@pxref{@code{@@paragraphindent}}). |
| |
| Here is an example showing how to eliminate the normal indentation of |
| the text after an @code{@@example}, a common situation: |
| |
| @example |
| @group |
| @@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. |
| @end group |
| @end example |
| |
| @noindent produces: |
| |
| @display |
| @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. |
| @end display |
| |
| The standard usage of @code{@@noindent} is just as above: at the |
| beginning of what would otherwise be a paragraph, to eliminate the |
| indentation that normally happens there. It can either be followed by |
| text or be on a line by itself. There is no reason to use it |
| in other contexts, such as in the middle of a paragraph or inside an |
| environment (@pxref{Quotations and Examples}). |
| |
| You can control the number of blank lines in the Info file output by |
| adjusting the input as desired: a line containing just |
| @code{@@noindent} does not generate a blank line, and neither does an |
| @code{@@end} line for an environment. |
| |
| Do not put braces after a @code{@@noindent} command; they are not |
| used, since @code{@@noindent} is a command used outside of paragraphs |
| (@pxref{Command Syntax}). |
| |
| |
| @node @code{@@indent} |
| @nodedescription Forcing paragraph indentation. |
| @section @code{@@indent}: Forcing Indentation |
| |
| @anchor{indent}@c old name |
| @findex indent |
| @cindex Forcing indentation |
| @cindex Inserting indentation |
| @cindex Indentation, forcing |
| |
| @indent |
| To complement the @code{@@noindent} command (see the previous |
| section), Texinfo provides the @code{@@indent} command to force a |
| paragraph to be indented. For instance, this paragraph (the first in |
| this section) is indented using an @code{@@indent} command. |
| |
| And indeed, the first paragraph of a section is the most likely place |
| to use @code{@@indent}, to override the normal behavior of no |
| indentation there (@pxref{@code{@@paragraphindent}}). It can either be |
| followed by text or be on a line by itself. |
| |
| As a special case, when @code{@@indent} is used in an environment |
| where text is not filled, it produces a paragraph indentation space in |
| the @TeX{} output. (These environments are where a line of input |
| produces a line of output, such as @code{@@example} and |
| @code{@@display}; for a summary of all environments, @pxref{Block |
| Enclosing Commands}.) |
| |
| Do not put braces after an @code{@@indent} command; they are not used, |
| since @code{@@indent} is a command used outside of paragraphs |
| (@pxref{Command Syntax}). |
| |
| |
| @node @code{@@cartouche} |
| @nodedescription Drawing rounded rectangles around text. |
| @section @code{@@cartouche}: Rounded Rectangles |
| |
| @anchor{cartouche}@c old name |
| @findex cartouche |
| @cindex Box with rounded corners |
| @cindex Rounded rectangles, around text |
| |
| Where the output format allows, the @code{@@cartouche} command draws a |
| box with rounded corners around its contents. You can use this command |
| to isolate a portion of the manual from the main flow. You can also |
| further highlight an example or quotation with @code{@@cartouche}. |
| |
| For instance, you could write a manual in which one type of example is |
| surrounded by a cartouche for emphasis. For example, |
| |
| @example |
| @@cartouche |
| @@example |
| % pwd |
| /usr/local/share/emacs |
| @@end example |
| @@end cartouche |
| @end example |
| |
| @noindent |
| 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 @code{@@cartouche} had no effect): |
| |
| @cartouche |
| @example |
| % pwd |
| /usr/local/share/emacs |
| @end example |
| @end cartouche |
| |
| @code{@@cartouche} takes one optional argument, given on the remainder |
| of the line. This text, if present, is the cartouche title. It is |
| output in bold or otherwise emphasized at the beginning of the cartouche, |
| and is centered in some output formats. |
| |
| The following example illustrates a cartouche with a title: |
| |
| @example |
| @@cartouche Important |
| Text explaining something important out of the main |
| flow of the text. |
| @@end cartouche |
| @end example |
| |
| The cartouche with a title looks like this: |
| |
| @cartouche Important |
| Text explaining something important out of the main |
| flow of the text. |
| @end cartouche |
| |
| A cartouche is output on a single page in printed output, similarly to |
| @code{@@group} (@pxref{@code{@@group}}). |
| |
| |
| @node small |
| @nodedescription Examples in a smaller font. |
| @section @code{@@small@dots{}} Block Commands |
| |
| @findex smallexample |
| @findex smallformat |
| @findex smalllisp |
| @findex smallquotation |
| @findex smalldisplay |
| @findex smallindentedblock |
| @cindex Small examples |
| @cindex Examples in smaller fonts |
| @cindex Quotations in smaller fonts |
| @cindex Lisp examples in smaller fonts |
| |
| In addition to the regular @code{@@example} and similar commands, |
| Texinfo has ``small'' example-style commands. These are |
| @code{@@smallquotation}, @code{@@smallindentedblock}, |
| @code{@@smalldisplay}, @code{@@smallexample}, @code{@@smallformat}, |
| and @code{@@smalllisp}. |
| |
| In most output formats, the @code{@@small@dots{}} commands are |
| equivalent to their non-small companion commands. |
| |
| In printed output, however, the @code{@@small@dots{}} commands typeset text in |
| a smaller font than the non-small example commands. Thus, for |
| instance, code examples can contain longer lines and still fit on a |
| page without needing to be rewritten. |
| |
| Mark the end of a @code{@@small@dots{}} block with a corresponding |
| @code{@@end small@dots{}}. For example, pair @code{@@smallexample} with |
| @code{@@end smallexample}. |
| |
| Here is an example of the font used by the @code{@@smallexample} |
| command (in most output formats, the output will be the same as usual): |
| |
| @smallexample |
| @dots{} to make sure that you have the freedom to |
| distribute copies of free software (and charge for |
| this service if you wish), that you receive source |
| code or can get it if you want it, that you can |
| change the software or use pieces of it in new free |
| programs; and that you know you can do these things. |
| @end smallexample |
| |
| The @code{@@small@dots{}} commands use the same font style as their |
| normal counterparts: @code{@@smallexample} and @code{@@smalllisp} use |
| a fixed-width font, and everything else uses the regular font. |
| They also have the same behavior in other respects---whether filling |
| is done and whether margins are narrowed. They do not take arguments |
| even when their normal counterparts do, however. |
| |
| @vindex dispenvsize |
| As a general rule, it's better to just use the regular |
| commands (such as @code{@@example} instead of @code{@@smallexample}), |
| unless you have a good reason for it. When processing with |
| @file{texinfo.tex} only, you can obtain a similar effect with |
| @samp{@@set dispenvsize small}, which uses a smaller font for |
| @code{@@example} and other environments. In HTML output, you can |
| use CSS to change the font size of environments if needed; @pxref{HTML CSS}. |
| |
| |
| @node Lists and Tables |
| @nodedescription Itemized or numbered lists, and tables. |
| @chapter Lists and Tables |
| @cindex Making lists and tables |
| @cindex Lists and tables, making |
| @cindex Tables and lists, making |
| |
| 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. |
| |
| |
| @node Introducing Lists |
| @nodedescription Texinfo formats lists for you. |
| @section Introducing Lists |
| |
| Texinfo automatically indents the text in lists or tables, and numbers |
| an enumerated list. This last feature is useful if you modify the |
| list, since you do not need to renumber it yourself. |
| |
| Numbered lists and tables begin with the appropriate @@-command at the |
| beginning of a line, and end with the corresponding @code{@@end} |
| command on a line by itself. The table and itemized-list commands |
| also require that you write formatting information on the same line as |
| the beginning @@-command. |
| |
| Begin an enumerated list, for example, with an @code{@@enumerate} |
| command and end the list with an @code{@@end enumerate} command. |
| Begin an itemized list with an @code{@@itemize} command, followed on |
| the same line by a formatting command such as @code{@@bullet}, and end |
| the list with an @code{@@end itemize} command. |
| |
| Precede each element of a list with an @code{@@item} or @code{@@itemx} |
| command. |
| |
| @sp 1 |
| @noindent |
| Here is an itemized list of the different kinds of table and lists: |
| |
| @itemize @bullet{} |
| @item |
| Itemized lists with and without bullets. |
| |
| @item |
| Enumerated lists, using numbers or letters. |
| |
| @item |
| Two-column tables with highlighting. |
| @end itemize |
| |
| @sp 1 |
| @noindent |
| Here is an enumerated list with the same items: |
| |
| @enumerate |
| @item |
| Itemized lists with and without bullets. |
| |
| @item |
| Enumerated lists, using numbers or letters. |
| |
| @item |
| Two-column tables with highlighting. |
| @end enumerate |
| |
| @sp 1 |
| @noindent |
| And here is a two-column table with the same items and their |
| @w{@@-commands}: |
| |
| @table @code |
| @item @@itemize |
| Itemized lists with and without bullets. |
| |
| @item @@enumerate |
| Enumerated lists, using numbers or letters. |
| |
| @item @@table |
| @itemx @@ftable |
| @itemx @@vtable |
| Two-column tables, optionally with indexing. |
| @end table |
| |
| |
| @node @code{@@itemize} |
| @nodedescription How to construct a simple list. |
| @section @code{@@itemize}: Making an Itemized List |
| |
| @anchor{itemize}@c old name |
| @findex itemize |
| @cindex Itemization |
| |
| The @code{@@itemize} command produces a sequence of ``items'', each |
| starting with a bullet or other mark inside the left margin, and |
| generally indented. |
| |
| Begin an itemized list by writing @code{@@itemize} at the beginning of |
| a line. Follow the command, on the same line, with a Texinfo command |
| or character to generate a mark. Usually, you will use @code{@@bullet} |
| after @code{@@itemize}, but you can use @code{@@minus}, or any other |
| Texinfo command or character. If you don't specify a mark command, |
| the default is @code{@@bullet}. |
| |
| @findex item @r{in @code{@@itemize}} |
| After the @code{@@itemize}, write your items, each starting with |
| @code{@@item}. Text can follow on the same line as the @code{@@item}. |
| The text of an item can continue for more than one paragraph. |
| |
| Here is an example of the use of @code{@@itemize}: |
| |
| @example |
| @group |
| @@itemize @@bullet@{@} |
| @@item |
| Some text for foo. |
| |
| @@item |
| Some text |
| for bar. |
| @@end itemize |
| @end group |
| @end example |
| |
| @noindent |
| This produces: |
| |
| @quotation |
| @itemize @bullet{} |
| @item |
| Some text for foo. |
| |
| @item |
| Some text |
| for bar. |
| @end itemize |
| @end quotation |
| |
| When you give a mark command such as @code{@@bullet} as the argument |
| to @code{@@itemize} command, you may omit the @samp{@{@}} that would |
| normally follow the command. |
| |
| @cindex @code{@@w}, for blank items |
| If you don't want any mark at all, but still want logical items, use |
| @code{@@w@{@}} (in this case the braces are required). |
| |
| There should be at least one @code{@@item} inside the @code{@@itemize} |
| environment. If none are present, @code{texi2any} gives a warning. |
| If you just want indented text and not a list of items, use |
| @code{@@indentedblock}; @pxref{@code{@@indentedblock}}. |
| |
| Index entries that occur immediately before an @code{@@item} |
| are associated with the @code{@@item}. |
| |
| 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. |
| |
| Itemized lists may be embedded within other itemized lists. Here is a |
| list marked with dashes embedded in a list marked with bullets: |
| |
| @example |
| @group |
| @@itemize @@bullet@{@} |
| @@item |
| First item. |
| |
| @@itemize @@minus@{@} |
| @@item |
| Inner item. |
| |
| @@item |
| Second inner item. |
| @@end itemize |
| |
| @@item |
| Second outer item. |
| @@end itemize |
| @end group |
| @end example |
| |
| @noindent |
| This produces: |
| |
| @quotation |
| @itemize @bullet{} |
| @item |
| First item. |
| |
| @itemize @minus{} |
| @item |
| Inner item. |
| |
| @item |
| Second inner item. |
| @end itemize |
| |
| @item |
| Second outer item. |
| @end itemize |
| @end quotation |
| |
| |
| @node @code{@@enumerate} |
| @nodedescription How to construct a numbered list. |
| @section @code{@@enumerate}: Making a Numbered or Lettered List |
| |
| @anchor{enumerate}@c old name |
| @findex enumerate |
| @cindex Enumeration |
| |
| @code{@@enumerate} is like @code{@@itemize} (@pxref{@code{@@itemize}}), |
| except that the labels on the items are successive integers or letters |
| instead of bullets. |
| |
| Write the @code{@@enumerate} command at the beginning of a line. The |
| command does not require an argument, but accepts either a number or a |
| letter as an option. Without an argument, @code{@@enumerate} starts the |
| list with the number @samp{1}. With a numeric argument, such as |
| @samp{3}, the command starts the list with that number. With an upper- |
| or lowercase letter, such as @samp{a} or @samp{A}, the command starts |
| the list with that letter. |
| |
| Write the text of the enumerated list in the same way as an itemized |
| list: write a line starting with @code{@@item} at the beginning of |
| each item in the enumeration. It is ok to have text following the |
| @code{@@item}, and the text for an item can continue for several |
| paragraphs. |
| |
| You should put a blank line between entries in the list. |
| This generally makes it easier to read the Info file. |
| |
| @need 1500 |
| Here is an example of @code{@@enumerate} without an argument: |
| |
| @example |
| @group |
| @@enumerate |
| @@item |
| Underlying causes. |
| |
| @@item |
| Proximate causes. |
| @@end enumerate |
| @end group |
| @end example |
| |
| @noindent |
| This produces: |
| |
| @enumerate |
| @item |
| Underlying causes. |
| |
| @item |
| Proximate causes. |
| @end enumerate |
| @sp 1 |
| Here is an example with an argument of @kbd{3}: |
| @sp 1 |
| @example |
| @group |
| @@enumerate 3 |
| @@item |
| Predisposing causes. |
| |
| @@item |
| Precipitating causes. |
| |
| @@item |
| Perpetuating causes. |
| @@end enumerate |
| @end group |
| @end example |
| |
| @noindent |
| This produces: |
| |
| @enumerate 3 |
| @item |
| Predisposing causes. |
| |
| @item |
| Precipitating causes. |
| |
| @item |
| Perpetuating causes. |
| @end enumerate |
| @sp 1 |
| Here is a summary: |
| @sp 1 |
| @enumerate a |
| @item |
| @code{@@enumerate} |
| |
| Without an argument, produce a numbered list, with the first item |
| numbered@tie{}1. |
| |
| @item |
| @code{@@enumerate @var{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. |
| |
| @item |
| @code{@@enumerate @var{uppercase-letter}} |
| |
| With an uppercase letter as argument, start a list |
| in which each item is marked |
| by a letter, beginning with that uppercase letter. |
| |
| @item |
| @code{@@enumerate @var{lowercase-letter}} |
| |
| With a lowercase letter as argument, start a list |
| in which each item is marked by |
| a letter, beginning with that lowercase letter. |
| @end enumerate |
| |
| You can also nest enumerated lists, as in an outline. |
| |
| |
| @node Two-column Tables |
| @nodedescription How to construct a two-column table. |
| @section Making a Two-column Table |
| |
| @cindex Tables, making two-column |
| @findex table |
| |
| @code{@@table} is similar to @code{@@itemize} |
| (@pxref{@code{@@itemize}}), but allows you to specify a name or |
| heading line for each item. The @code{@@table} command is used to |
| produce two-column tables, and is especially useful for glossaries, |
| explanatory exhibits, and command-line option summaries. |
| |
| |
| @node @code{@@table} |
| @nodedescription How to construct a two-column table. |
| @subsection Using the @code{@@table} Command |
| |
| @anchor{table}@c old name |
| |
| @cindex Definition lists, typesetting |
| Use the @code{@@table} command to produce a two-column table. This |
| command is typically used when you have a list of items and a brief text |
| with each one, such as a list of definitions. |
| |
| Write the @code{@@table} command at the beginning of a line, after a |
| blank line, and follow it on the same line with an argument that is an |
| `indicating' command, such as @code{@@code}, @code{@@samp}, |
| @code{@@var}, @code{@@option}, or @code{@@kbd} (@pxref{Indicating}). |
| This command will be applied to the text in the first column. For |
| example, @code{@@table @@code} will cause the text in the first column |
| to be output as if it had been the argument to a @code{@@code} command. |
| |
| @anchor{@code{@@asis}}@c command name with @, for consistency |
| @findex asis |
| You may use the @code{@@asis} command as an argument to |
| @code{@@table}. @code{@@asis} is a command that does nothing: if you |
| use this command after @code{@@table}, the first column entries are |
| output without added highlighting (``as is''). |
| |
| The @code{@@table} command works with other commands besides those |
| explicitly mentioned here. However, you can only use predefined |
| Texinfo commands that take an argument in braces. You cannot |
| reliably use a new command defined with @code{@@macro}, although an |
| @code{@@alias} (for a suitable predefined command) is acceptable. |
| @xref{Defining New Texinfo Commands}. |
| |
| @findex item @r{in @code{@@table}} |
| Begin each table entry with an @code{@@item} command at the beginning |
| of a line. Write the text for the first column on the same line as the |
| @code{@@item} command. Write the text for the second column on the line |
| following the @code{@@item} line and on subsequent lines. You may |
| write as many lines of supporting text as you wish, even several |
| paragraphs. But only the text on the same line as the @code{@@item} |
| will be placed in the first column (including any footnotes). |
| You do not need to type anything for an empty second column. |
| |
| Normally, you should put a blank line between table entries. This puts |
| a blank line in the Info file, which looks better unless the entries |
| are very brief. |
| |
| End the table with a line consisting of @code{@@end table}. |
| Follow the end of the table by a blank line for consistent formatting |
| across output formats. |
| |
| @c TeX aloways starts a new paragraph after the table |
| |
| @need 1500 |
| For example, the following table highlights the text in the first |
| column with the @code{@@samp} command: |
| |
| @example |
| @group |
| @@table @@samp |
| @@item foo |
| This is the text for |
| @@samp@{foo@}. |
| |
| @@item bar |
| Text for @@samp@{bar@}. |
| @@end table |
| @end group |
| @end example |
| |
| @noindent |
| This produces: |
| |
| @table @samp |
| @item foo |
| This is the text for |
| @samp{foo}. |
| |
| @item bar |
| Text for @samp{bar}. |
| @end table |
| |
| If you want to list two or more named items with a single block of |
| text, use the @code{@@itemx} command. (@xref{@code{@@itemx}}.) |
| |
| The @code{@@table} command (@pxref{@code{@@table}}) is not supported |
| inside @code{@@display}. Since @code{@@display} is line-oriented, it |
| doesn't make sense to use them together. If you want to indent a |
| table, try @code{@@quotation} (@pxref{@code{@@quotation}}) or |
| @code{@@indentedblock} (@pxref{@code{@@indentedblock}}). |
| |
| |
| @node @code{@@ftable @@vtable} |
| @nodedescription Automatic indexing for two-column tables. |
| @subsection @code{@@ftable} and @code{@@vtable} |
| |
| @anchor{ftable vtable}@c old name |
| @findex ftable |
| @findex vtable |
| @cindex Tables with indexing |
| @cindex Indexing table entries automatically |
| |
| The @code{@@ftable} and @code{@@vtable} commands are the same as the |
| @code{@@table} command except that @code{@@ftable} automatically enters |
| each of the items in the first column of the table into the index of |
| functions and @code{@@vtable} automatically enters each of the items in |
| the first column of the table into the index of variables. This |
| simplifies the task of creating indices. Only the items on the same |
| line as the @code{@@item} or @code{@@itemx} commands are indexed, and |
| they are indexed in exactly the form that they appear on that line. |
| @xref{Indices}, for more information about indices. |
| |
| Begin a two-column table using @code{@@ftable} or @code{@@vtable} by |
| writing the @@-command at the beginning of a line, followed on the same |
| line by an argument that is a Texinfo command such as @code{@@code}, |
| exactly as you would for a @code{@@table} command; and end the table |
| with an @code{@@end ftable} or @code{@@end vtable} command on a line by |
| itself. |
| |
| See the example for @code{@@table} in the previous section. |
| |
| |
| @node @code{@@itemx} |
| @nodedescription How to put more entries in the first column. |
| @subsection @code{@@itemx}: Second and Subsequent Items |
| |
| @anchor{itemx}@c old name |
| @cindex Two named items for @code{@@table} |
| @findex itemx |
| |
| Use the @code{@@itemx} command inside a table when you have two or more |
| first column entries for the same item, each of which should appear on a |
| line of its own. |
| |
| Use @code{@@item} for the first entry, and @code{@@itemx} for all |
| subsequent entries; @code{@@itemx} must always follow an @code{@@item} |
| command, with no blank line intervening. |
| |
| The @code{@@itemx} command works exactly like @code{@@item} except that |
| it does not generate extra vertical space above the first column text in some |
| output formats. If you have multiple consecutive @code{@@itemx} commands, do |
| not insert any blank lines between them. |
| |
| For example, |
| |
| @example |
| @group |
| @@table @@code |
| @@item upcase |
| @@itemx downcase |
| These two functions accept a character or a string as |
| argument, and return the corresponding uppercase (lowercase) |
| character or string. |
| @@end table |
| @end group |
| @end example |
| |
| @noindent |
| This produces: |
| |
| @table @code |
| @item upcase |
| @itemx downcase |
| These two functions accept a character or a string as |
| argument, and return the corresponding uppercase (lowercase) |
| character or string. |
| @end table |
| |
| @noindent |
| (Note also that this example illustrates multi-line supporting text in |
| a two-column table.) |
| |
| |
| @node Multi-column Tables |
| @nodedescription How to construct generalized tables. |
| @section @code{@@multitable}: Multi-column Tables |
| |
| @findex multitable |
| @cindex Tables, making multi-column |
| |
| @code{@@multitable} allows you to construct tables with any number of |
| columns, with each column having any width you like. |
| |
| You define the column widths on the @code{@@multitable} line itself, and |
| write each row of the actual table following an @code{@@item} command, |
| with columns separated by a @code{@@tab} command. Finally, @code{@@end |
| multitable} completes the table. Details in the sections below. |
| |
| |
| @node Multitable Column Widths |
| @nodedescription Defining multitable column widths. |
| @subsection Multitable Column Widths |
| @cindex Multitable column widths |
| @cindex Column widths, defining for multitables |
| @cindex Widths, defining multitable column |
| |
| You can define the column widths for a multitable in two ways: as |
| fractions of the line length; or with a prototype row. Mixing the two |
| methods is not supported. In either case, the widths are defined |
| entirely on the same line as the @code{@@multitable} command. |
| |
| @enumerate |
| @item |
| @findex columnfractions |
| @cindex Line length, column widths as fraction of |
| To specify column widths as fractions of the line length, write |
| @code{@@columnfractions} and the decimal numbers (presumably less than |
| 1; a leading zero is allowed and ignored) after the |
| @code{@@multitable} command, as in: |
| |
| @example |
| @@multitable @@columnfractions .33 .33 .33 |
| @end example |
| |
| The fractions need not add up exactly to 1.0, as these do not. This |
| allows you to produce tables that do not need the full line length. |
| |
| When using @code{@@columnfractions}, the leftmost column may appear |
| slightly wider than you might expect, relative to the other columns. |
| This is due to spacing between columns being included in the width of |
| the other columns. |
| |
| @item |
| @cindex Prototype row, column widths defined by |
| To specify a prototype row, write the longest entry for each column |
| enclosed in braces after the @code{@@multitable} command. For example: |
| |
| @example |
| @@multitable @{some text for column one@} @{for column two@} |
| @end example |
| |
| @noindent |
| The first column will then have the width of the typeset `some text for |
| column one', and the second column the width of `for column two'. |
| |
| The prototype entries need not appear in the table itself. |
| |
| Although we used simple text in this example, the prototype entries can |
| contain Texinfo commands; markup commands such as @code{@@code} are |
| particularly likely to be useful. |
| |
| Prototype rows have no effect in HTML output. |
| |
| @end enumerate |
| |
| |
| @node Multitable Rows |
| @nodedescription Defining multitable rows, with examples. |
| @subsection Multitable Rows |
| |
| @cindex Multitable rows |
| @cindex Rows, of a multitable |
| |
| @findex item @r{in @code{@@multitable}} |
| @findex tab |
| After the @code{@@multitable} command defining the column widths (see |
| the previous section), you begin each row in the body of a multitable |
| with @code{@@item}, and separate the column entries with @code{@@tab}. |
| Line breaks are not special within the table body, and you may break |
| input lines in your source file as necessary. |
| |
| @findex headitem |
| @cindex Heading row, in table |
| @cindex @code{<thead>} HTML/DocBook tag |
| You can also use @code{@@headitem} instead of @code{@@item} to produce |
| a @dfn{heading row}. The @TeX{} output for such a row is in bold, and |
| the HTML and DocBook output uses the @code{<thead>} tag. In Info, the |
| heading row is followed by a separator line made of dashes (@samp{-} |
| characters). |
| |
| @findex headitemfont |
| @cindex Font for multitable heading rows |
| The command @code{@@headitemfont} can be used in templates when the |
| entries in a @code{@@headitem} row need to be used in a template. It |
| is a synonym for @code{@@b}, but using @code{@@headitemfont} avoids |
| any dependency on that particular font style, in case we provide a way |
| to change it in the future. |
| |
| Here is a complete example of a multi-column table (the text is from |
| @cite{The GNU Emacs Manual}, @pxref{Split Window,, Splitting Windows, |
| emacs, The GNU Emacs Manual}): |
| |
| @example |
| @@multitable @@columnfractions .15 .45 .4 |
| @@headitem Key @@tab Command @@tab Description |
| @@item C-x 2 |
| @@tab @@code@{split-window-vertically@} |
| @@tab Split the selected window into two windows, |
| with one above the other. |
| @@item C-x 3 |
| @@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 |
| @end example |
| |
| @noindent produces: |
| |
| @multitable @columnfractions .15 .45 .4 |
| @headitem Key @tab Command @tab Description |
| @item C-x 2 |
| @tab @code{split-window-vertically} |
| @tab Split the selected window into two windows, |
| with one above the other. |
| @item C-x 3 |
| @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 |
| |
| |
| @node Special Displays |
| @nodedescription Floating figures and footnotes. |
| @chapter Special Displays |
| @cindex 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. |
| |
| |
| @node Floats |
| @nodedescription Figures, tables, and the like. |
| @section Floats |
| @cindex Floats |
| |
| A @dfn{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. |
| |
| @cindex Floating, not yet implemented |
| 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 every output format except for @LaTeX{}, 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 @code{@@group} (@pxref{@code{@@group}}). |
| |
| |
| @node @code{@@float} |
| @nodedescription Producing floating material. |
| @subsection @code{@@float} [@var{type}][,@var{label}]: Floating Material |
| |
| @anchor{float}@c old name |
| @findex float |
| @cindex Float environment |
| |
| To produce floating material, enclose the material you want to be |
| displayed separate between @code{@@float} and @code{@@end float} |
| commands, on lines by themselves. |
| |
| Floating material often uses @code{@@image} to display an |
| already-existing graphic (@pxref{Images}), or @code{@@multitable} to |
| display a table (@pxref{Multi-column Tables}). However, the contents |
| of the float can be anything. Here's an example with simple text: |
| |
| @example |
| @@float Figure,fig:ex1 |
| This is an example float. |
| @@end float |
| @end example |
| |
| @noindent And the output: |
| |
| @float Figure,fig:ex1 |
| This is an example float. |
| @end float |
| |
| As shown in the example, @code{@@float} takes two arguments (separated |
| by a comma), @var{type} and @var{label}. Both are optional. |
| |
| @table @var |
| @item type |
| Specifies the sort of float this is; typically a word such as |
| ``Figure'', ``Table'', etc. If this is not given, and @var{label} is, |
| any cross-referencing will simply use a bare number. |
| |
| @item label |
| Specifies a cross-reference label for this float. If given, this |
| float is automatically given a number, and will appear in any |
| @c TODO LaTeX: figure only appears in the @listoffloats if there is a caption |
| @code{@@listoffloats} output (@pxref{@code{@@listoffloats}}). Cross |
| references to @var{label} are allowed. For example, |
| @samp{see @@ref@{fig:ex1@}} will produce see @ref{fig:ex1}. |
| |
| |
| @cindex Floats @subentry making unnumbered |
| @cindex Unnumbered float, creating |
| On the other hand, if @var{label} is not given, then the float will |
| not be numbered and consequently will not appear in the |
| @code{@@listoffloats} output or be cross-referenceable. |
| @end table |
| |
| @noindent Ordinarily, you specify both @var{type} and @var{label}, to get a |
| labeled and numbered float. |
| |
| In the @LaTeX{} output, code loading the @code{float} package is |
| output in the preamble if @code{@@float} are present. |
| A @code{@@float} with type @samp{figure} or @samp{table} |
| (case insensitive) is already defined by the package. Other |
| float types lead to the definition of a new float environment, |
| with names based on the @code{@@float} type with anything else |
| than letters and @samp{-} removed. |
| |
| @cindex Floats @subentry numbering of |
| @cindex Numbering of floats |
| 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, @dots{}, and is reset at each chapter. Each |
| float type is counted independently. |
| |
| Floats within an @code{@@unnumbered}, or outside of any chapter, are |
| simply numbered consecutively from 1. |
| |
| These numbering conventions are not, at present, changeable. |
| |
| |
| @node @code{@@caption @@shortcaption} |
| @nodedescription Specifying descriptions for floats. |
| @subsection @code{@@caption} & @code{@@shortcaption} |
| |
| @anchor{caption shortcaption}@c old name |
| @findex caption |
| @findex shortcaption |
| @cindex Captions, for floats |
| @cindex Short captions, for lists of floats |
| |
| You may write a @code{@@caption} anywhere within a @code{@@float} |
| environment, to define a caption for the float. It is not allowed in |
| any other context. @code{@@caption} takes a single argument, enclosed |
| in braces. Here's an example: |
| |
| @example |
| @@float |
| An example float, with caption. |
| @@caption@{Caption for example float.@} |
| @@end float |
| @end example |
| |
| @noindent The output is: |
| |
| @float |
| An example float, with caption. |
| @caption{Caption for example float.} |
| @end float |
| |
| @code{@@caption} can appear anywhere within the float; it is not |
| processed until the @code{@@end float}. The caption text is usually a |
| sentence or two, but may consist of several paragraphs if necessary. |
| |
| In the output, the caption always appears below the float; this is not |
| currently changeable. It is preceded by the float type and/or number, |
| as specified to the @code{@@float} command (see the previous section). |
| |
| The @code{@@shortcaption} command likewise may be used only within |
| @code{@@float}, and takes a single argument in braces. The short |
| caption text is used instead of the caption text in a list of floats |
| (see the next section). Thus, you can write a long caption for the |
| main document, and a short title to appear in the list of floats. For |
| example: |
| |
| @example |
| @@float |
| ... as above ... |
| @@shortcaption@{Text for list of floats.@} |
| @@end float |
| @end example |
| |
| The text for @code{@@shortcaption} may not contain comments |
| (@code{@@c}), verbatim text (@code{@@verb}), environments such as |
| @code{@@example}, footnotes (@code{@@footnote}), multiple paragraphs, |
| or other complex constructs. The same constraints apply to |
| @code{@@caption} unless there is a @code{@@shortcaption}. In |
| @LaTeX{} a multi-paragraph @code{@@caption} will lead to an error |
| when formatted, unless there is a @code{@@shortcaption}. |
| |
| |
| @node @code{@@listoffloats} |
| @nodedescription A table of contents for floats. |
| @subsection @code{@@listoffloats}: Tables of Contents for Floats |
| |
| @anchor{listoffloats}@c old name |
| @findex listoffloats |
| @cindex List of floats |
| @cindex Floats @subentry list of |
| @cindex Table of contents, for floats |
| |
| You can write a @code{@@listoffloats} command to generate a list of |
| floats for a given float type (@pxref{@code{@@float}}), analogous to |
| the document's overall table of contents. Typically, it is written in |
| its own @code{@@unnumbered} node to provide a heading and structure, |
| rather like @code{@@printindex} (@pxref{Printing Indices & Menus}). |
| |
| @code{@@listoffloats} takes one optional argument, the float type. |
| Here's an example: |
| |
| @example |
| @@node List of Figures |
| @@unnumbered List of Figures |
| @@listoffloats Figure |
| @end example |
| |
| @noindent Without any argument, @code{@@listoffloats} generates a list of |
| floats for which no float type was specified, i.e., no first argument to the |
| @code{@@float} command (@pxref{@code{@@float}}). |
| |
| Here's what the output from @code{@@listoffloats} |
| looks like, given the example figure earlier in this chapter: |
| |
| @ifinfo |
| @display |
| * Figure 12.1: fig:ex1. |
| @end display |
| @end ifinfo |
| @ifnotinfo |
| @listoffloats Figure |
| @end ifnotinfo |
| |
| Usually, each line in the list of floats contains the float type (if any), |
| the float number, and the caption, if any---the @code{@@shortcaption} |
| argument, if it was specified, else the @code{@@caption} argument. |
| The page number may also be included, depending on output format. |
| |
| Unnumbered floats (those without cross-reference labels) are omitted |
| from the list of floats. |
| |
| The formatting of @code{@@listoffloats} depends on the output |
| format. In Info, for example, a @code{@@listoffloats} is formatted |
| as a menu. |
| |
| In @LaTeX{} output, @code{\listoffigures} is output for |
| the @samp{figure} (case insensitive) float type, @code{\listoftables} is output |
| for the @samp{table} (case insensitive) float type. For other float types, a |
| specific @code{\listof} command is output. |
| |
| |
| @node Images |
| @nodedescription Including graphics and images. |
| @section Inserting Images |
| |
| @cindex Images |
| @cindex Pictures, inserting |
| @findex image |
| |
| You can insert an image given in an external file with the |
| @code{@@image} command. Images are most often part of a displayed figure |
| or example, although can be used in most locations. |
| |
| @node Image Syntax |
| @subsection Image Syntax |
| |
| Here is the synopsis of the @code{@@image} command: |
| |
| @example |
| @@image@{@var{filename}@r{[,} @var{width}@r{[,} @var{height}@r{[,} @var{alttext}@r{[, }@var{extension}@r{]]]]}@} |
| @end example |
| |
| @cindex Formats for images |
| @cindex Image formats |
| The @var{filename} argument is mandatory, and must not have an |
| extension, because the different processors support different formats: |
| |
| @itemize @bullet |
| @item |
| @pindex eps image format |
| @TeX{} (DVI output) reads the file @file{@var{filename}.eps} |
| (Encapsulated PostScript format). |
| |
| @item |
| @pindex pdftex@r{, and images} |
| @pindex png image format |
| @pindex jpeg image format |
| @pindex pdf image inclusions |
| @TeX{} (PDF output) tries (in order) @file{@var{filename}.pdf}, @file{@var{filename}.png}, |
| @file{@var{filename}.jpg}, and @file{@var{filename}.jpeg}. It also tries uppercase versions of the extensions. The PDF |
| format does not support EPS images, so such must be converted first. |
| |
| @item |
| In Info, @file{@var{filename}.txt} is included verbatim |
| (more or less as if it were in @code{@@verbatim}). The Info output |
| may also include a reference to @file{@var{filename}.png} or |
| @file{@var{filename}.jpg}. (See below.) |
| |
| @item |
| In HTML, a reference to @file{@var{filename}.png}, |
| @file{@var{filename}.jpg}, @file{@var{filename}.jpeg} or |
| @file{@var{filename}.gif} (in that order) is output. If |
| none of those exist, it gives an error, and outputs a |
| reference to @file{@var{filename}.jpg} anyway. |
| |
| @item |
| @cindex SVG images, used in DocBook |
| In DocBook, all of the following are checked: |
| @file{@var{filename}.eps}, @file{@var{filename}.gif}, |
| @file{@var{filename}.jpeg}, @file{@var{filename}.jpg}, |
| @file{@var{filename}.pdf}, @file{@var{filename}.png} and |
| @file{@var{filename}.svg}. References are output to every file found. Also, |
| @file{@var{filename}.txt} is included verbatim, if present. (The |
| subsequent DocBook processor is supposed to choose the appropriate one.) |
| |
| @item |
| For @LaTeX{}, @file{@var{filename}} without any extension is used; |
| the subsequent @LaTeX{} processor is supposed to choose the |
| appropriate image type. |
| |
| @item |
| For Info and HTML output, the optional fifth argument @var{extension} |
| to @code{@@image} is used for the file extension, |
| if it is specified and the file is found. Any leading period should |
| be included in @var{extension}. For example: |
| |
| @pindex XPM image format |
| @example |
| @@image@{foo,,,,.xpm@} |
| @end example |
| |
| @end itemize |
| |
| If you want to install image files for use by Info readers too, we |
| recommend putting them in a subdirectory like @samp{@var{foo}-figures} |
| for a package @var{foo}. Copying the files into |
| @code{$(infodir)/@var{foo}-figures/} should be done in your |
| @code{Makefile}. |
| |
| The @var{width} and @var{height} arguments are described in the next |
| section. |
| |
| @cindex Images @subentry using inside paragraphs |
| We recommend you try to avoid using images inside paragraphs. The |
| results will likely be sub-optimal in Info format, as @command{texi2any} |
| does not have enough information to break lines around the image in the |
| best place. (The results are likely to be especially bad if |
| @file{@var{filename}.txt} consists of more than one line of text.) |
| |
| If an image is the first thing in a paragraph and followed by |
| more text, then you should precede the @code{@@image} command with |
| @code{@@indent} or @code{@@noindent} to indicate the beginning of |
| paragraph formatting. This is especially important for @TeX{} output |
| to get correct paragraph indentation. |
| |
| Use @code{@@center} to center an image |
| (@pxref{@code{@@titlefont @@center @@sp}}). |
| |
| @cindex Alt attribute for images |
| @cindex Images @subentry alternate text for |
| @cindex @sortas{-} -@r{ (in image alt string)} |
| For HTML output, the @dfn{alt attribute} for |
| inline images is set to the optional @var{alttext} (fourth) argument to |
| @code{@@image}, if supplied. If not supplied, the full file name of |
| the image being displayed is used. The @var{alttext} is |
| processed as Texinfo text, so special characters such as @samp{"} and |
| @samp{<} and @samp{&} are escaped in the HTML output; also, you can |
| get an empty @code{alt} string with @code{@@-} (a command that |
| produces no output; @pxref{@code{@@- @@hyphenation}}). |
| |
| For Info output, the @var{alttext} string is also processed as Texinfo |
| text and output. In this case, @samp{\} is escaped as @samp{\\} and |
| @samp{"} as @samp{\"}; no other escapes are done. |
| |
| In Info output, a reference to the binary image file is written |
| (trying @var{filename} suffixed with @file{@var{extension}}, |
| @file{@var{.extension}}, @file{.png}, or @file{.jpg}, in that order) |
| if one exists. The @file{.txt} file is also literally included, 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. |
| |
| @c Texinfo version 4.6 was released in 2003 |
| @ignore |
| @cindex @samp{^@@^H} for images in Info |
| The implementation of this is to put the following construct into the |
| Info output: |
| |
| @example |
| ^@@^H[image src="@var{binaryfile}" text="@var{txtfile}" |
| alt="@var{alttext} ... ^@@^H] |
| @end example |
| |
| @noindent where @samp{^@@} and @samp{^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 introduced in Texinfo version 4.6) will display the above |
| literally, which, although not pretty, should not be harmful. |
| @end ignore |
| |
| |
| @node Image Scaling |
| @subsection Image Scaling |
| |
| @cindex Images @subentry scaling |
| @cindex Scaling images |
| @cindex Width of images |
| @cindex Height of images |
| @cindex Aspect ratio of images |
| @cindex Distorting images |
| The optional @var{width} and @var{height} arguments to the |
| @code{@@image} command (see the previous section) specify the size to |
| which to scale the image. They are only taken into account in printed |
| output. |
| |
| In @TeX{}, if neither is specified, the image is presented in its natural size |
| (given in the file); if only one is specified, the other is scaled |
| proportionately; and if both are specified, both are respected, thus likely |
| distorting the original image by changing its aspect ratio. |
| |
| @cindex Dimensions and image sizes |
| The @var{width} and @var{height} may be specified using any valid @TeX{} |
| dimension, namely: |
| |
| @table @asis |
| @item pt |
| @cindex Points (dimension) |
| point (72.27pt = 1in) |
| @item pc |
| @cindex Picas |
| pica (1pc = 12pt) |
| @item bp |
| @cindex Big points |
| big point (72bp = 1in) |
| @item in |
| @cindex Inches |
| inch |
| @item cm |
| @cindex Centimeters |
| centimeter (2.54cm = 1in) |
| @item mm |
| @cindex Millimeters |
| millimeter (10mm = 1cm) |
| @item dd |
| @cindex Did@^ot points |
| did@^ot point (1157dd = 1238pt) |
| @item cc |
| @cindex Ciceros |
| cicero (1cc = 12dd) |
| @item sp |
| @cindex Scaled points |
| scaled point (65536sp = 1pt) |
| @end table |
| |
| @pindex ridt.eps |
| For example, the following will scale a file @file{ridt.eps} to one |
| inch vertically, with the width scaled proportionately: |
| |
| @example |
| @@image@{ridt,,1in@} |
| @end example |
| |
| @pindex epsf.tex |
| For @code{@@image} to work with @TeX{}, the file @file{epsf.tex} must be |
| installed somewhere that @TeX{} can find it. (The standard location is |
| @file{@var{texmf}/tex/generic/dvips/epsf.tex}, where @var{texmf} is a |
| root of your @TeX{} directory tree.) This file is included in the |
| Texinfo distribution and is also available from |
| @uref{ftp://tug.org/tex/epsf.tex}, among other places. |
| |
| @code{@@image} can be used within a line as well as for displayed |
| figures. Therefore, if you intend it to be displayed, be sure to leave |
| a blank line before the command, or the output will run into the |
| preceding text. |
| |
| Image scaling is presently implemented only in printed output, not in |
| any other sort of output. |
| |
| |
| @node Footnotes |
| @nodedescription Writing footnotes. |
| @section Footnotes |
| @cindex Footnotes |
| @findex footnote |
| |
| A @dfn{footnote} is for a reference that documents or elucidates the |
| primary text.@footnote{A footnote should complement or expand upon the |
| primary text, but a reader should not need to read a footnote to |
| understand the primary text. For a thorough discussion of footnotes, |
| see @cite{The Chicago Manual of Style}, which is published by the |
| University of Chicago Press.} |
| |
| 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. |
| |
| |
| @node Footnote Commands |
| @nodedescription How to write a footnote in Texinfo. |
| @subsection Footnote Commands |
| |
| In Texinfo, footnotes are created with the @code{@@footnote} command. |
| This command is followed immediately by a left brace, then by the text |
| of the footnote, and then by a terminating right brace. Footnotes may |
| be of any length (they will be broken across pages if necessary), but |
| are usually short. The template is: |
| |
| @example |
| ordinary text@@footnote@{@var{text of footnote}@} |
| @end example |
| |
| As shown here, the @code{@@footnote} command should come right after the |
| text being footnoted, with no intervening space; otherwise, the footnote |
| marker might end up starting a line. |
| |
| For example, this clause is followed by a sample footnote@footnote{Here |
| is the sample footnote.}; in the Texinfo source, it looks like |
| this: |
| |
| @example |
| @dots{}a sample footnote@@footnote@{Here is the sample |
| footnote.@}; in the Texinfo source@dots{} |
| @end example |
| |
| As you can see, this source includes two punctuation marks next to |
| each other; in this case, @samp{.@};} is the sequence. This is normal |
| (the first ends the footnote and the second belongs to the sentence |
| being footnoted), so don't worry that it looks odd. (Another style, |
| perfectly acceptable, is to put the footnote after punctuation |
| belonging to the sentence, as in @samp{;@@footnote@{...}.) |
| |
| In printed output formats, the reference mark for a footnote is a |
| small, superscripted number; the text of the footnote appears at the |
| bottom of the page, below a horizontal line. |
| |
| In Info, the reference mark for a footnote is a pair of parentheses |
| with the footnote number between them, like this: @samp{(1)}. The |
| reference mark is followed by a cross-reference link to the footnote |
| text if footnotes are put in separate nodes (@pxref{Footnote Styles}). |
| |
| In the HTML output, footnote references are generally marked with a |
| small, superscripted number which is rendered as a hypertext link to |
| the footnote text. |
| |
| @cindex Critical editions |
| @cindex Nested footnotes |
| Footnotes cannot be nested, and cannot appear in section headings of |
| any kind or other ``unusual'' places. |
| |
| A final tip: footnotes in the argument of an @code{@@item} command for |
| an @code{@@table} must be entirely on the same line as the |
| @code{@@item} (as usual). @xref{Two-column Tables}. |
| |
| |
| @node Footnote Styles |
| @nodedescription Controlling how footnotes appear. |
| @subsection Footnote Styles |
| |
| Online formats have two footnote styles, which determine where |
| the text of the footnote is located, the @samp{end} and @samp{separate} |
| footnote style. |
| |
| @table @samp |
| @cindex @samp{end} node footnote style |
| @cindex Footnote style @subentry @samp{end} |
| @item end |
| For Info, in the @samp{end} node style, all the footnotes for a single |
| node are placed at the end of that node. The footnotes are separated |
| from the rest of the node by a line of dashes with the word |
| @samp{Footnotes} within it. Each footnote begins with an |
| @samp{(@var{n})} reference mark. |
| |
| @need 700 |
| @noindent |
| Here is an example of the Info output for a single footnote in the |
| end-of-node style: |
| |
| @example |
| @group |
| --------- Footnotes --------- |
| |
| (1) Here is a sample footnote. |
| @end group |
| @end example |
| |
| In HTML, when the footnote style is @samp{end}, or if the output is |
| not split, footnotes are put at the end of each output file. |
| |
| @cindex @samp{separate} footnote style |
| @cindex Footnote style @subentry @samp{separate} |
| @item separate |
| For Info, in the @samp{separate} node style, all the footnotes |
| for a single node are placed in an automatically constructed |
| node of their own. In this style, a ``footnote reference'' follows |
| each @samp{(@var{n})} reference mark in the body of the |
| node. The footnote reference is actually a cross-reference |
| which you use to reach the footnote node. |
| |
| The name of the node with the footnotes is constructed |
| by appending @w{@samp{-Footnotes}} to the name of the node |
| that contains the footnotes. (Consequently, the footnotes' |
| node for the @file{Footnotes} node is |
| @w{@file{Footnotes-Footnotes}}!) The footnotes' node has an |
| `Up' node pointer that leads back to its parent node. |
| |
| @noindent |
| Here is how the first footnote in this manual looks after being |
| formatted for Info in the separate node style: |
| |
| @example |
| @group |
| File: texinfo.info Node: Overview-Footnotes, Up: Overview |
| |
| (1) The first syllable of "Texinfo" is pronounced like |
| "speck", not "hex". @dots{} |
| @end group |
| @end example |
| |
| In HTML, when the footnote style is @samp{separate}, and the output |
| is split, footnotes are placed in a separate file. |
| @end table |
| |
| Unless your document has long and important footnotes (as in, say, |
| Gibbon's @cite{Decline and Fall @dots{}}), we recommend the @samp{end} |
| style, as it is simpler for readers to follow. |
| |
| @findex footnotestyle |
| Use the @code{@@footnotestyle} command to specify the |
| footnote style. Write this command at the beginning of a line followed |
| by an argument, either @samp{end} for the end node style or |
| @samp{separate} for the separate node style. |
| |
| @need 700 |
| For example, |
| |
| @example |
| @@footnotestyle end |
| @end example |
| @noindent |
| or |
| @example |
| @@footnotestyle separate |
| @end example |
| |
| Write a @code{@@footnotestyle} command in the Texinfo file preamble. |
| |
| |
| @node Indices |
| @nodedescription Creating indices. |
| @chapter Indices |
| @cindex 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 other formats, links to the index |
| entries location or to the associated nodes are generated. |
| |
| Texinfo provides several predefined kinds of indices: 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. |
| |
| |
| @node Predefined Indices |
| @nodedescription Use different indices for different kinds of entries. |
| @section Predefined Indices |
| |
| Texinfo provides six predefined indices. Here are their nominal |
| meanings, abbreviations, and the corresponding index entry commands: |
| |
| @table @samp |
| @item cp |
| @cindex @code{cp} (concept) index |
| @findex cindex |
| @findex cpindex |
| (@code{@@cindex}) Concept index, for general concepts. |
| @item fn |
| @cindex @code{fn} (function) index |
| @findex findex |
| @findex fnindex |
| (@code{@@findex}) Function index, for function and function-like |
| names (such as entry points of libraries). |
| @item ky |
| @cindex @code{ky} (keystroke) index |
| @findex kindex |
| @findex kyindex |
| (@code{@@kindex}) Keystroke index, for keyboard commands. |
| @item pg |
| @cindex @code{pg} (program) index |
| @findex pindex |
| @findex pgindex |
| (@code{@@pindex}) Program index, for names of programs. |
| @item tp |
| @cindex @code{tp} (data type) index |
| @findex tindex |
| @findex tpindex |
| (@code{@@tindex}) Data type index, for type names (such as structures |
| defined in header files). |
| @item vr |
| @cindex @code{vr} (variable) index |
| @findex vindex |
| @findex vrindex |
| (@code{@@vindex}) Variable index, for variable names (such as library global |
| variables). |
| @end table |
| |
| @noindent |
| Not every manual needs all of these, and most manuals use only two or |
| three at most. The present manual, for example, has three indices: a |
| concept index, a variable index, and an @@-command index. (The last 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 @code{@@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 (@pxref{New |
| Indices}). |
| |
| 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. Two or more source indices can be combined |
| into one output index by using the @code{@@synindex} or |
| @code{@@syncodeindex} commands (@pxref{Combining Indices}). |
| |
| Index entry commands based on the two letter index names are also |
| valid, for example @code{@@cpindex} can be used instead of @code{@@cindex}. |
| |
| |
| @node Indexing Commands |
| @nodedescription How to make an index entry. |
| @section Defining the Entries of an Index |
| |
| @cindex Defining indexing entries |
| @cindex Index entries |
| @cindex Entries for an index |
| @cindex Specifying index entries |
| @cindex Creating index entries |
| |
| The data to make an index come from many individual indexing commands |
| scattered throughout the Texinfo source file. Each command says to add |
| one entry to a particular index; after formatting, the index will give |
| the current page number or node name as the reference. |
| |
| An index entry consists of an indexing command at the beginning of a |
| line followed, on the rest of the line, by the entry. |
| |
| For example, this section begins with the following five entries for |
| the concept index: |
| |
| @example |
| @@cindex Defining indexing entries |
| @@cindex Index entries, defining |
| @@cindex Entries for an index |
| @@cindex Specifying index entries |
| @@cindex Creating index entries |
| @end example |
| |
| Each predefined index has its own indexing command---@code{@@cindex} |
| for the concept index, @code{@@findex} for the function index, and so |
| on, as listed in the previous section. |
| |
| Index entries should precede the visible material that is being |
| indexed. For instance: |
| |
| @example |
| @@cindex hello |
| Hello, there! |
| @end example |
| |
| @noindent Among other reasons, that way following indexing links (in |
| whatever context) ends up before the material, where readers want to |
| be, instead of after. |
| |
| In Info, an index is usually formatted as a menu. Try to avoid using |
| a colon in index entries, as this may confuse some Info readers. |
| @xref{Menu Parts} for more information about the structure of a menu entry. |
| @c At the time of writing, it always works in standalone info, and a |
| @c single colon not followed by a space works in Emacs. |
| |
| @cindex Index font types |
| By default, entries for a concept index are printed in a roman |
| font and entries for the other indices are printed in a typewriter font. |
| You may change the way part of an entry is printed with the usual |
| Texinfo commands, such as @code{@@file} for |
| file names (@pxref{Marking Text}), and @code{@@r} for the normal roman |
| font (@pxref{Fonts}). |
| |
| @findex sortas |
| @cindex sort keys for index entries |
| @cindex index sorting |
| You may specify an explicit sort key for an |
| index entry using @code{@@sortas} following either the index command |
| or the text of the entry. For example: @samp{@@findex @@sortas@{\@} |
| \ @@r@{(literal \ in @@code@{@@@@math@})} sorts the index entry this |
| produces under backslash. |
| |
| @vindex txiindexbackslashignore |
| @vindex txiindexhyphenignore |
| @vindex txiindexlessthanignore |
| @vindex txiindexatsignignore |
| You may choose to ignore certain characters in index entries |
| for the purposes of sorting. The characters that you can |
| currently choose to ignore are @samp{\}, @samp{-}, @samp{<} |
| and @samp{@@}, which are ignored by giving as an argument to the |
| @code{@@set} command, respectively, @code{txiindexbackslashignore}, |
| @code{txiindexhyphenignore}, @code{txiindexlessthanignore} and |
| @code{txiindexatsignignore}. For example, specifying @samp{@@set |
| txiindexbackslashignore} causes the @samp{\mathopsup} entry in the |
| index for this manual to be sorted as if it were @samp{mathopsup}, |
| so that it appears among the other entries beginning with `M'. |
| This avoids the need to provide explicit sort keys for index |
| entries containing these characters. |
| |
| When using these options, it is possible to get an index entry with |
| an empty sort key. To avoid this, specify a @code{@@sortas} directive |
| in the index entry. For example: |
| |
| @example |
| @@set txiindexbackslashignore |
| @@findex @@sortas@{\@} \ |
| @end example |
| |
| |
| @node Advanced Indexing |
| @nodedescription Advanced indexing commands. |
| @section Advanced Indexing Commands |
| @cindex Indexing, advanced |
| @cindex Advanced indexing |
| |
| Texinfo provides several further commands for indexing. |
| |
| @findex subentry |
| First, you can create @dfn{multilevel} index entries, allowing you |
| to group many related subtopics under the same higher-level topic. |
| You do this by separating the parts of such an entry with the |
| @code{@@subentry} command. Such commands might look like this: |
| |
| @example |
| @@cindex Superhumans @@subentry villains |
| @@cindex Superhumans @@subentry heroes |
| @end example |
| |
| You may have up to three levels in an entry: |
| |
| @example |
| @@cindex coffee makers @@subentry electric @@subentry pink |
| @@cindex coffee makers @@subentry electric @@subentry blue |
| @end example |
| |
| You can use the @code{@@sortas} command mentioned earlier with any or |
| all of the three parts of an entry to cause them to sort differently |
| than they would by default. |
| |
| @findex seeentry |
| Second, you may provide an index entry that points to another, |
| using the @code{@@seeentry} (``see entry'') command. For example: |
| |
| @example |
| @@cindex Indexes @@seeentry@{Indices@} |
| @end example |
| |
| Such an entry should be unique in your document; the idea is to |
| redirect the reader to the other entry where they will find all |
| the information they are looking for. |
| |
| @findex seealso |
| Finally, you may provide a ``see also'' entry using the @code{@@seealso} |
| command. These entries go along with regular entries, and are grouped |
| together with them in the final printed index. For example: |
| |
| @example |
| @@cindex Coffee |
| @@cindex Coffee @@subentry With milk and sugar |
| @@cindex Coffee @@subentry With doughnuts |
| @@cindex Coffee @@subentry Decaffeinated |
| @@cindex Coffee @@seealso@{Tea@} |
| @end example |
| |
| When using all three of these advanced commands, @emph{do not} |
| place a comma between the different parts of the index text. The |
| @command{texindex} program, which sorts the index entries and |
| generates the indexing formatting commands, takes care of placing |
| commas in the correct places for you. |
| |
| Do not interrupt an index or @code{@@subentry} entry by @code{@@sortas} |
| or advanced commands with braces; place the commands with braces at |
| the beginning or at the end of the entry. |
| |
| These features are the most useful with printed documents, and |
| when translating Texinfo to DocBook. |
| |
| |
| @node Index Entries |
| @nodedescription Choose different words for index entries. |
| @section Making Index Entries |
| @cindex Index entries, making |
| @cindex Entries, making index |
| |
| @cindex Writing index entries |
| @cindex Index entries, advice on writing |
| @cindex Advice on writing entries |
| @cindex Capitalization of index entries |
| Concept index entries consist of text. The best way to write an index |
| is to devise entries which are terse yet clear. If you can do this, |
| the index usually looks better if the entries 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: 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. |
| |
| @cindex Unique index entries |
| 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. |
| The advanced indexing features described in @ref{Advanced Indexing} |
| can help with this, as well. |
| |
| |
| When you are making index entries, it is good practice to think of the |
| different ways people may look for something. Different people |
| @emph{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. |
| |
| |
| @node Printing Indices & Menus |
| @nodedescription How to print an index in hardcopy and generate index menus in Info. |
| @section Printing Indices and Menus |
| @cindex Printing an index |
| @cindex Indices, printing and menus |
| @cindex Generating menus with indices |
| @cindex Menus generated with indices |
| |
| |
| @findex printindex |
| @code{@@printindex} takes one argument, a two-letter index |
| abbreviation. You must include the @code{@@printindex} command at the |
| place in the document where you want the index to appear. This does |
| not happen automatically just because you use @code{@@cindex} or other |
| index-entry generating commands in the Texinfo file; those just cause |
| the raw data for the index to be accumulated. |
| |
| You should precede the @code{@@printindex} command with |
| a suitable section or chapter command (usually @code{@@appendix} or |
| @code{@@unnumbered}) to supply the chapter heading and put the index |
| into the table of contents. Precede the chapter heading with an |
| @code{@@node} line as usual. |
| |
| For example: |
| |
| @example |
| @group |
| @@node Variable Index |
| @@unnumbered Variable Index |
| |
| @@printindex vr |
| @end group |
| |
| @group |
| @@node Concept Index |
| @@unnumbered Concept Index |
| |
| @@printindex cp |
| @end group |
| @end example |
| |
| The text @samp{Index} needs to appear in the name of the node containing the |
| index for the index to be found by Info readers. |
| |
| If you have more than one index, we recommend placing the concept index last. |
| |
| Other details of index output in output formats: |
| |
| @itemize |
| @item |
| As part of the process of creating a printed manual with @TeX{}, |
| you run a program called @command{texindex} (@pxref{Hardcopy with @TeX{}}) |
| to sort the raw data to produce a sorted index file. The sorted index |
| file is what is actually used to print the index. |
| |
| @code{@@printindex} reads the corresponding sorted index file and produces |
| a traditional two-column index, with index terms and page numbers. |
| |
| @item |
| In Info output, @code{@@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: |
| |
| @example |
| * First index entry: Top. (line 7) |
| @end example |
| |
| @item |
| In plain text output, @code{@@printindex} formatting is usually similar to a |
| menu in Info, showing the line number of each entry relative to the start of |
| the file. |
| |
| @item |
| In HTML output, @code{@@printindex} produces links to the index |
| entries. |
| |
| @item |
| In DocBook and @LaTeX{} output, it simply records the index to be printed. |
| @end itemize |
| |
| |
| @node Combining Indices |
| @nodedescription How to combine indices. |
| @section Combining Indices |
| @cindex Combining indices |
| @cindex Indices, combining them |
| |
| Sometimes you will want to combine two disparate indices such as |
| functions and concepts, perhaps because you have few enough entries |
| that a separate index would look silly. |
| |
| You could put functions into the concept index by writing |
| @code{@@cindex} commands for them instead of @code{@@findex} commands, |
| and produce a consistent manual by printing the concept index with the |
| title `Function and Concept Index' and not printing the `Function |
| Index' at all; but this is not a robust procedure. It works only if |
| your document is never included as part of another document that is |
| designed to have a separate function index; if your document were to |
| be included with such a document, the functions from your document and |
| those from the other would not end up together. Also, to make your |
| function names appear in the right font in the concept index, you |
| would need to enclose every one of them between the braces of |
| @code{@@code}. |
| |
| |
| @node @code{@@syncodeindex} |
| @nodedescription How to merge two indices, using @code{@@code} font for the merged-from index. |
| @subsection @code{@@syncodeindex}: Combining Indices Using @code{@@code} |
| |
| @anchor{syncodeindex}@c old name |
| @findex syncodeindex |
| |
| When you want to combine functions and concepts into one index, you |
| should index the functions with @code{@@findex} and index the concepts |
| with @code{@@cindex}, and use the @code{@@syncodeindex} command to |
| redirect the function index entries into the concept index. |
| |
| The @code{@@syncodeindex} command takes two arguments; they are the name |
| of the index to redirect, and the name of the index to redirect it to. |
| The template looks like this: |
| |
| @example |
| @@syncodeindex @var{from} @var{to} |
| @end example |
| |
| @cindex Predefined names for indices |
| @cindex Two letter names for indices |
| @cindex Indices, two letter names |
| @cindex Names for indices |
| For this purpose, the indices are given two-letter names: |
| |
| @table @samp |
| @item cp |
| Concept index |
| @item fn |
| Function index |
| @item ky |
| Key index |
| @item pg |
| Program index |
| @item tp |
| Data type index |
| @item vr |
| Variable index |
| @end table |
| |
| Write a @code{@@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: |
| |
| @example |
| @@syncodeindex fn cp |
| @end example |
| |
| @noindent |
| This causes all entries designated for the function index to merge |
| in with the concept index instead. |
| |
| To merge both a variable index and a function index into a concept |
| index, write the following: |
| |
| @example |
| @group |
| @@syncodeindex vr cp |
| @@syncodeindex fn cp |
| @end group |
| @end example |
| |
| @cindex Fonts for indices |
| The @code{@@syncodeindex} command puts all the entries from the `from' |
| index (the redirected index) into the @code{@@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{@@code} font as you would expect. |
| |
| |
| @node @code{@@synindex} |
| @nodedescription How to merge two indices, using the roman font for the merged-from index. |
| @subsection @code{@@synindex}: Combining Indices |
| |
| @anchor{synindex}@c old name |
| @findex synindex |
| |
| The @code{@@synindex} command is nearly the same as the |
| @code{@@syncodeindex} command, except that it does not put the `from' |
| index entries into the @code{@@code} font; rather it puts them in the |
| roman font. Thus, you use @code{@@synindex} when you merge a concept |
| index into a function index. |
| |
| @xref{Printing Indices & Menus}, for information about printing an index |
| at the end of a book or creating an index menu in an Info file. |
| |
| |
| @node New Indices |
| @nodedescription How to define your own indices. |
| @section Defining New Indices |
| |
| @cindex Defining new indices |
| @cindex Indices, defining new |
| @cindex New index defining |
| @findex defindex |
| @findex defcodeindex |
| |
| In addition to the predefined indices (@pxref{Predefined Indices}), |
| you may use the @code{@@defindex} and @code{@@defcodeindex} commands |
| to define new indices. These commands create new indexing @@-commands |
| with which you mark index entries. The @code{@@defindex} command is |
| used like this: |
| |
| @example |
| @@defindex @var{name} |
| @end example |
| |
| New index names are usually two-letter words, such as @samp{au}. |
| For example: |
| |
| @example |
| @@defindex au |
| @end example |
| |
| This defines a new index, called the @samp{au} index. At the same |
| time, it creates a new indexing command, @code{@@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 @samp{au} index entries. |
| |
| @example |
| @@section Cognitive Semantics |
| @@cindex kinesthetic image schemas |
| @@auindex Johnson, Mark |
| @@auindex Lakoff, George |
| @end example |
| |
| @noindent |
| (Evidently, @samp{au} serves here as an abbreviation for ``author''.) |
| |
| Texinfo constructs the new indexing command by concatenating the name |
| of the index with @samp{index}; thus, defining an @samp{xy} index |
| leads to the automatic creation of an @code{@@xyindex} command. |
| |
| Use the @code{@@printindex} command to print the index, as you do with |
| the predefined indices. For example: |
| |
| @example |
| @group |
| @@node Author Index |
| @@unnumbered Author Index |
| |
| @@printindex au |
| @end group |
| @end example |
| |
| The @code{@@defcodeindex} command is like the @code{@@defindex} command, |
| except that, in the printed output, it prints entries in an |
| @code{@@code} font by default instead of in a roman font. |
| |
| You should define new indices before the end-of-header line of a |
| Texinfo file, and (of course) before any @code{@@synindex} or |
| @code{@@syncodeindex} commands (@pxref{Texinfo File Header}). |
| |
| As mentioned earlier (@pxref{Predefined Indices}), we recommend having |
| a single index in the final document whenever possible (no matter how 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 (@pxref{Names of index files}). Therefore you |
| should avoid using index names that collide with extensions used for |
| other purposes, such as @samp{.aux} or @samp{.xml}. |
| @command{texi2any} already reports an error if a new index conflicts |
| well-known extension name. |
| |
| |
| @node Insertions |
| @nodedescription Inserting @@-signs, braces, etc. |
| @chapter Special Insertions |
| @cindex Inserting special characters and symbols |
| @cindex 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. |
| |
| |
| @node Special Characters |
| @nodedescription Inserting @@ @{@} , \ # & |
| @section Special Characters: Inserting @@ @{@} , \ # & |
| @anchor{Braces Atsign}@c previous names for this node |
| @anchor{Atsign Braces Comma} |
| @cindex Special characters, inserting |
| @cindex Commands to insert special characters |
| |
| @samp{@@} and curly braces are the basic special characters in |
| Texinfo. To insert these characters so they appear in text, you must |
| put an @samp{@@} in front of these characters to prevent Texinfo from |
| misinterpreting them. Alphabetic commands are also provided. |
| |
| The other characters (comma, backslash, hash, ampersand) are special |
| only in restricted contexts, as explained in the respective sections. |
| |
| |
| @node Inserting an Atsign |
| @nodedescription @code{@@@@}, @code{@@atchar@{@}}. |
| @subsection Inserting `@@' with @code{@@@@} and @code{@@atchar@{@}} |
| @cindex At sign, inserting |
| @cindex Inserting @@ @r{(literal @samp{@@})} |
| @findex @sortas{@@} @@ @r{(literal @samp{@@})} |
| @ifset commandlookup |
| @findex @sortas{@@} @@ |
| @end ifset |
| @findex atchar |
| |
| @code{@@@@} produces a single @samp{@@} character in the output. Do |
| not put braces after an @code{@@@@} command. |
| |
| @code{@@atchar@{@}} also produces a single @samp{@@} character in the |
| output. It does need following braces, as usual for alphabetic |
| commands. In inline conditionals (@pxref{Inline Conditionals}), it |
| can be necessary to avoid using the literal @samp{@@} character in the |
| source (and may be clearer in other contexts). |
| |
| |
| @node Inserting Braces |
| @nodedescription @code{@@@{ @@@}}, @code{@@l rbracechar@{@}}. |
| @subsection Inserting `@{ `@}' with @code{@@@{ @@@}} and @code{@@l rbracechar@{@}} |
| |
| @findex @{ @r{(literal @samp{@{})} |
| @findex @} @r{(literal @samp{@}})} |
| @ifset commandlookup |
| @findex @{ |
| @findex @} |
| @end ifset |
| @findex lbracechar |
| @findex rbracechar |
| @cindex Braces, inserting |
| |
| @code{@@@{} produces a single @samp{@{} in the output, and @code{@@@}} |
| produces a single @samp{@}}. Do not put braces after either an |
| @code{@@@{} or an @code{@@@}} command. |
| |
| @code{@@lbracechar@{@}} and @code{@@rbracechar@{@}} also produce |
| single @samp{@{} and @samp{@}} characters in the output. They do need |
| following braces, as usual for alphabetic commands. In inline |
| conditionals (@pxref{Inline Conditionals}), it can be |
| necessary to avoid using literal brace characters in the source (and |
| may be clearer in other contexts). |
| |
| |
| @node Inserting a Comma |
| @nodedescription , and @code{@@comma@{@}}. |
| @subsection Inserting `,' with @code{@@comma@{@}} |
| |
| @findex comma |
| @cindex Comma, inserting |
| |
| Ordinarily, a comma `,' is a normal character that can be simply typed |
| in your input where you need it. |
| |
| However, Texinfo uses the comma as a special character only in one |
| context: to separate arguments to those Texinfo commands, such as |
| @code{@@node} (@pxref{Node Line Requirements}), |
| @code{@@acronym} (@pxref{@code{@@acronym}}) and @code{@@xref} |
| (@pxref{Cross References}), as well as user-defined macros |
| (@pxref{Defining Macros}), which take more than one argument. |
| |
| Since a comma character would confuse Texinfo's parsing for these |
| commands, you must use the command @samp{@@comma@{@}} instead if you want |
| to pass an actual comma. Here are some examples: |
| |
| @example |
| @@acronym@{ABC, A Bizarre @@comma@{@}@} |
| @@xref@{Comma,, The @@comma@{@} symbol@} |
| @@mymac@{One argument@@comma@{@} containing a comma@} |
| @end example |
| |
| Although @samp{@@comma@{@}} can be used nearly anywhere, there is no |
| need for it anywhere except in this unusual case. |
| |
| (Incidentally, the name @samp{@@comma} lacks the @samp{char} suffix used |
| in its companion commands only for historical reasons. It didn't seem |
| important enough to define a synonym.) |
| |
| |
| @node Inserting a Backslash |
| @nodedescription \ and @code{@@backslashchar@{@}}. |
| @subsection Inserting `\' with @code{@@backslashchar@{@}} |
| |
| @findex backslashchar |
| @cindex Backslash, inserting |
| |
| Ordinarily, a backslash `\' is a normal character in Texinfo that can |
| be simply typed in your input where you need it. The result is to |
| typeset the backslash from the typewriter font. |
| |
| However, Texinfo uses the backslash as a special character in one |
| restricted context: to delimit formal arguments in the bodies of |
| user-defined macros (@pxref{Defining Macros}). |
| |
| Due to the vagaries of macro argument parsing, it is more reliable to |
| pass an alphabetic command that produces a backslash instead of using |
| a literal \. Hence @code{@@backslashchar@{@}}. Here is an example |
| macro call: |
| |
| @example |
| @@mymac@{One argument@@backslashchar@{@} with a backslash@} |
| @end example |
| |
| @findex \backslash |
| @findex @sortas{\} \ @r{(literal @samp{\} in math)} |
| @ifset commandlookup |
| @findex @sortas{\} \ |
| @end ifset |
| Texinfo documents may also use \ as a command character inside |
| @code{@@math} (@pxref{Inserting Math}). In this case, @code{@@\} or |
| @code{\backslash} produce a ``math'' backslash (from the math symbol |
| font), while @code{@@backslashchar@{@}} produces a typewriter |
| backslash as usual. |
| |
| Although @samp{@@backslashchar@{@}} can be used nearly anywhere, there |
| is no need for it except in these unusual cases. |
| |
| |
| @node Inserting a Hashsign |
| @nodedescription # and @code{@@hashchar@{@}}. |
| @subsection Inserting `#' with @code{@@hashchar@{@}} |
| |
| @findex hashchar |
| @cindex Inserting # |
| @cindex Hash sign, inserting |
| |
| Ordinarily, a hash `#' is a normal character in Texinfo that can be |
| simply typed in your input where you need it. The result is to |
| typeset the hash character from the current font. |
| |
| @cindex Number sign, inserting |
| @cindex Octothorp, inserting |
| @cindex Sharp sign (not), inserting |
| This character has many other names, varying by locale, such as |
| ``number sign'', ``pound'', and ``octothorp''. It is also sometimes |
| called ``sharp'' or ``sharp sign'' since it vaguely resembles the |
| musical symbol by that name. In situations where Texinfo is used, |
| ``hash'' is the most common in our experience. |
| |
| However, Texinfo uses the hash character as a special character in one |
| restricted context: to introduce the so-called @code{#line} directive |
| and variants (@pxref{External Macro Processors}). |
| |
| So, in order to typeset an actual hash character in such a place (for |
| example, in a program that needs documentation about @code{#line}), |
| it's necessary to use @code{@@hashchar@{@}} or some other construct. |
| Here's an example: |
| |
| @example |
| @@hashchar@{@} 10 "example.c" |
| @end example |
| |
| Although @samp{@@hashchar@{@}} can be used nearly anywhere, there |
| is no need for it anywhere except this unusual case. |
| |
| |
| @node Inserting an Ampersand |
| @nodedescription & and @code{@@ampchar@{@}}. |
| @subsection Inserting `&' with @code{@@&} and @code{@@ampchar@{@}} |
| |
| @findex ampchar |
| @findex & @r{(literal @samp{&})} |
| @ifset commandlookup |
| @findex & |
| @end ifset |
| @cindex Inserting & |
| @cindex Ampersand, inserting |
| |
| Ordinarily, an ampersand `&' is a normal character in Texinfo that can be |
| simply typed in your input where you need it. The result is to |
| typeset the ampersand character. |
| |
| However, the ampersand character is treated specially in just |
| one restricted context. In the argument to a definition command |
| (@pxref{Definition Commands}), an ampersand followed by a series |
| of letters may be typeset specially when processing with |
| @TeX{}@footnote{This syntax is used for Emacs Lisp keywords. @xref{A |
| Sample Function Description,,, elisp, GNU Emacs Lisp Reference |
| Manual}.} (@pxref{Def Cmd Conventions}). For example: |
| |
| @example |
| @@defun foo integer1 &optional integer2 &rest integers |
| @@code@{foo@} described here. |
| @@end defun |
| @end example |
| |
| @noindent may have @samp{&optional} and @samp{&rest} formatted in bold, |
| even without any @@-command involved. |
| |
| So, in order to typeset an ampersand in such a context, |
| it's necessary to use @code{@@&} or some other construct. |
| Here's an example of a C++ function taking a reference as a parameter: |
| |
| @example |
| @@deftypefn Function int foo (const std::vector<int>@@& @@var@{bar@}) |
| Documentation of @@code@{foo@}. |
| @@end deftypefn |
| @end example |
| |
| @noindent This gives the output |
| |
| @deftypefn Function int foo (const std::vector<int>@& @var{bar}) |
| Documentation of @code{foo}. |
| @end deftypefn |
| |
| Although @samp{@@&} and @samp{@@ampchar@{@}} can be used nearly |
| anywhere, there is no need for them anywhere except this unusual case. |
| |
| |
| @node Inserting Quote Characters |
| @nodedescription Inserting left and right quotes, in code. |
| @section Inserting Quote Characters |
| |
| @cindex Inserting quote characters |
| @cindex Quote characters, inserting |
| |
| As explained in the early section on general Texinfo input conventions |
| (@pxref{Conventions}), Texinfo source files use the ASCII character |
| @code{`} (96 decimal) to produce a left quote (`), and ASCII @code{'} |
| (39 decimal) to produce a right quote ('). Doubling these input |
| characters (@code{``} and @code{''}) produces double quotes (`` and |
| ''). These are the conventions used by @TeX{}. |
| |
| In examples of computer code, however, @code{`} and @code{'} produce |
| typical renderings for these ASCII characters: the backtick character |
| (standalone grave accent) and undirected single quote respectively. |
| In the past, directed glyphs |
| @iftex |
| @clear txicodequoteundirected |
| @clear txicodequotebacktick |
| (@code{`} and @code{'}) |
| @set txicodequoteundirected |
| @set txicodequotebacktick |
| @end iftex |
| were used by default in @TeX{} output. Texinfo provides these commands |
| to choose between these alternate renderings: |
| |
| @table @code |
| @findex codequoteundirected |
| @cindex undirected single quote |
| @item @@codequoteundirected @var{on-off} |
| Set to @samp{off} to output the @code{'} character in code environments |
| as the right curly single quote. |
| |
| @findex codequotebacktick |
| @cindex Backtick |
| @cindex Grave accent @subentry standalone |
| @item @@codequotebacktick @var{on-off} |
| Set to @samp{off} to output the @code{`} character in code environments |
| as the left curly single quote. |
| @end table |
| |
| If you want these settings for only part of the document, |
| @code{@@codequote... on} will restore the normal behavior, as in |
| @code{@@codequoteundirected on}. |
| |
| These settings affect @code{@@code}, @code{@@example}, @code{@@kbd}, |
| @code{@@samp}, @code{@@verb}, and @code{@@verbatim}. @xref{Useful |
| Highlighting}. |
| |
| Unfortunately, some document viewers will mangle the directed |
| quote characters when copying and pasting. (The free PDF reader |
| @command{xpdf} works fine, but other PDF readers, both free and |
| nonfree, have problems.) |
| |
| @vindex txicodequoteundirected |
| @vindex txicodequotebacktick |
| This feature can also be controlled by using @code{@@set} |
| and @code{@@clear} on the corresponding variables |
| @code{txicodequoteundirected} and @code{txicodequotebacktick}. |
| |
| |
| @node Inserting Space |
| @nodedescription Inserting the right amount of whitespace. |
| @section Inserting Space |
| |
| @cindex Inserting space |
| @cindex Spacing, inserting |
| The following sections describe commands that control spacing of various |
| kinds within and after sentences. |
| |
| |
| @node Multiple Spaces |
| @nodedescription Inserting multiple spaces. |
| @subsection Multiple Spaces |
| |
| @cindex Multiple spaces |
| @cindex Whitespace, inserting |
| @cindex Space, inserting horizontal |
| @findex <space> |
| @findex <tab> |
| @findex <newline> |
| |
| Ordinarily, multiple whitespace characters (space, tab, and newline) |
| are collapsed into a single space. |
| |
| Occasionally, you may want to produce several consecutive spaces, |
| either for purposes of example (e.g., what your program does with |
| multiple spaces as input), or merely for purposes of appearance in |
| headings or lists. Texinfo supports three commands: |
| @code{@@@kbd{SPACE}}, @code{@@@kbd{TAB}}, and @code{@@@kbd{NL}}, all |
| of which insert a single space into the output. (Here, |
| @code{@@@kbd{SPACE}} represents an @samp{@@} character followed by a |
| space, i.e., @samp{@@ }, @kbd{TAB} represents an actual tab character, |
| and @code{@@@kbd{NL}} represents an @samp{@@} character and end-of-line, |
| i.e., when @samp{@@} is the last character on a line.) |
| |
| For example, |
| @example |
| Spacey@@ @@ @@ @@ |
| example. |
| @end example |
| |
| @noindent produces |
| |
| @example |
| Spacey@ @ @ @ |
| example. |
| @end example |
| |
| Do not follow any of these commands with braces. |
| |
| To produce a non-breakable space, see @ref{@code{@@tie}}. |
| |
| |
| @node Not Ending a Sentence |
| @nodedescription Sometimes a .@ doesn't end a sentence. |
| @subsection Not Ending a Sentence |
| |
| @cindex Not ending a sentence |
| @cindex Sentence non-ending punctuation |
| @cindex Periods, inserting |
| @cindex Spacing, in the middle of sentences |
| When a period, exclamation point or question mark is |
| at the end of a sentence, slightly more space is |
| inserted after it in a typeset manual. |
| |
| @findex : @r{(suppress end-of-sentence space)} |
| @ifset commandlookup |
| @findex : |
| @end ifset |
| Usually, Texinfo can determine automatically when a period ends a |
| sentence. However, special commands are needed in some circumstances. |
| Use the @code{@@:} command after a period, question mark, exclamation |
| mark or colon that should not be followed by extra space. This is |
| necessary in the following situations: |
| |
| @enumerate |
| @item After a period that ends a lowercase abbreviation which is not at |
| the end of a sentence. |
| |
| @item When a parenthetical remark in the middle of a sentence (like |
| this one!)@: ends with a period, exclamation point or question mark, |
| @code{@@:} should be used after the right parenthesis. Similarly for |
| right brackets and right quotes (both single and double). |
| @end enumerate |
| |
| For example: |
| |
| @example |
| @samp{foo vs.@@: bar (or?)@@: baz}, |
| @end example |
| |
| @noindent |
| The first line below shows the output, and for comparison, the second |
| line shows the spacing when the @samp{@@:} commands were not used. |
| |
| @quotation |
| foo vs.@: bar (or?)@: baz@* |
| foo vs. bar (or?) baz |
| @end quotation |
| |
| @iftex |
| If you look carefully, you will see a bit of extraneous space after the |
| @samp{vs.}@: and @samp{(or?)}@:. |
| @end iftex |
| |
| It may help you to remember what @code{@@:} does by imagining that it |
| stands for an invisible lowercase character that stops a word ending in |
| a period. |
| |
| A few Texinfo commands force normal interword spacing, so that you |
| don't have to insert @code{@@:} where you otherwise would. These are |
| the code-like highlighting commands, @code{@@var}, @code{@@abbr}, and |
| @code{@@acronym} (@pxref{Useful Highlighting}). For example, in |
| @samp{@@code@{foo. bar@}} the period is not considered to be the end of a |
| sentence, and no extra space is inserted. |
| |
| @code{@@:} has no effect on the HTML or DocBook output. |
| |
| |
| @node Ending a Sentence |
| @nodedescription Sometimes it does. |
| @subsection Ending a Sentence |
| |
| @cindex Ending a Sentence |
| @cindex Sentence ending punctuation |
| |
| @findex . @r{(end of sentence)} |
| @findex ! @r{(end of sentence)} |
| @findex ? @r{(end of sentence)} |
| @ifset commandlookup |
| @findex . |
| @findex ! |
| @findex ? |
| @end ifset |
| @cindex Spacing, at ends of sentences |
| As mentioned above, Texinfo normally inserts additional space after |
| the end of a sentence. It uses the same heuristic for this as @TeX{}: |
| a sentence ends with a period, exclamation point, or question mark, |
| either preceded or followed by optional closing punctuation, and then |
| whitespace, and @emph{not} preceded by a capital letter. |
| |
| Use @code{@@.}@: instead of a period, @code{@@!}@: instead of an |
| exclamation point, and @code{@@?}@: instead of a question mark at the |
| end of a sentence that does end with a capital letter. Do not put |
| braces after any of these commands. For example: |
| |
| @example |
| Give it to M.I.B. and to M.E.W@@. Also, give it to R.J.C@@. |
| Give it to M.I.B. and to M.E.W. Also, give it to R.J.C. |
| @end example |
| |
| @noindent |
| The output follows. In printed output and Info, you can see the |
| desired extra whitespace after the @samp{W} in the first line. |
| |
| @quotation |
| Give it to M.I.B. and to M.E.W@. Also, give it to R.J.C@.@* |
| Give it to M.I.B. and to M.E.W. Also, give it to R.J.C. |
| @end quotation |
| |
| In other output formats, @code{@@.}@: is equivalent to a simple @samp{.}; |
| likewise for @code{@@!}@: and @code{@@?}@:. |
| |
| @cindex Closing punctuation, and sentence ending |
| The ``closing punctuation'' mentioned above is defined as a right |
| parenthesis (@samp{)}, right bracket (@samp{]}), or right quote, |
| either single or double (@samp{'} and @samp{''}; the many possible |
| additional 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 @samp{foo.) Bar} and @samp{foo.'' Bar} do end |
| sentences. |
| |
| The meanings of @code{@@:} and @code{@@.}, etc.@: in Texinfo are |
| designed to work well with the Emacs sentence motion commands |
| (@pxref{Sentences,,, emacs, The GNU Emacs Manual}). It may help to |
| imagine that the @samp{@@} in @samp{@@.}, etc., is an invisible |
| lowercase letter `a' which makes an uppercase 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 @code{@@.} and companions. Notably, this is |
| the case for code-like highlighting commands, @code{@@var} arguments |
| ending with a capital letter, @code{@@LaTeX}, and @code{@@TeX}. For |
| example, that sentence ended with @samp{... @@code@{@@@@TeX@}.}; |
| @code{@@.} was not needed. Similarly, in |
| @code{... @@var@{VARNAME@}. Text} the period after @var{VARNAME} ends |
| the sentence; there is no need to use @code{@@.}. |
| |
| |
| @node @code{@@frenchspacing} |
| @nodedescription Specifying end-of-sentence spacing. |
| @subsection @code{@@frenchspacing} @var{val}: Control Sentence Spacing |
| |
| @anchor{frenchspacing}@c old name |
| @findex frenchspacing |
| @cindex French spacing |
| @cindex Sentences, spacing after |
| @cindex Space, after sentences |
| |
| In American typography, it is traditional and correct to put extra |
| space at the end of a sentence. This is the default in Texinfo |
| (implemented in Info and printed output, not in other output formats). In |
| French typography (and others), this extra space is wrong; all spaces are |
| uniform. |
| |
| Therefore Texinfo provides the @code{@@frenchspacing} command to |
| control the spacing after punctuation. It reads the rest of the line |
| as its argument, which must be the single word @samp{on} or @samp{off} |
| (always these words, regardless of the language of the document). |
| Here is an example: |
| |
| @example |
| @@frenchspacing on |
| This is text. Two sentences. Three sentences. French spacing. |
| |
| @@frenchspacing off |
| This is text. Two sentences. Three sentences. Non-French spacing. |
| @end example |
| |
| @noindent produces: |
| |
| @frenchspacing on |
| This is text. Two sentences. Three sentences. French spacing. |
| |
| @frenchspacing off |
| This is text. Two sentences. Three sentences. Non-French spacing. |
| |
| @code{@@frenchspacing} also affects the output after @code{@@.}, |
| @code{@@!}, and @code{@@?} (@pxref{Ending a Sentence}). |
| |
| @code{@@frenchspacing} has no effect on the HTML or DocBook output. |
| |
| |
| @node @code{@@dmn} |
| @nodedescription Formatting a dimension. |
| @subsection @code{@@dmn}@{@var{dimension}@}: Format a Dimension |
| |
| @anchor{dmn}@c old name |
| @cindex Thin space between number, dimension |
| @cindex Dimension formatting |
| @cindex Format a dimension |
| @findex dmn |
| |
| You can use the @code{@@dmn} command to format a dimension with just enough |
| space for proper typesetting inserted in printed output. In other output |
| formats, the formatting commands insert no space at all. |
| |
| To use the @code{@@dmn} command, write the number and then follow it |
| immediately, with no intervening space, by @code{@@dmn}, and then by |
| the dimension within braces. For example, |
| |
| @example |
| A4 paper is 8.27@@dmn@{in@} wide. |
| @end example |
| |
| @noindent |
| produces |
| |
| @quotation |
| A4 paper is 8.27@dmn{in} wide. |
| @end quotation |
| |
| Not everyone uses this style. Some people prefer `8.27@tie{}in.'@: or |
| `8.27@tie{}inches'. In these cases, however, you need to use |
| @code{@@tie} (@pxref{@code{@@tie}}) or @code{@@w} (@pxref{@code{@@w}}) |
| 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 @samp{@@:} after the |
| period to avoid inserting extra whitespace in printed output, as shown |
| here. @xref{Not Ending a Sentence}. |
| |
| |
| @node Inserting Accents |
| @nodedescription Inserting accents and special characters. |
| @section Inserting Accents |
| |
| @cindex Inserting accents |
| @cindex Accents, inserting |
| @cindex Floating accents, inserting |
| |
| In general, accented and other non-ASCII characters commonly used in languages |
| based on the Latin alphabet can be input directly as encoded characters in |
| Texinfo (@pxref{@code{@@documentencoding}}). However, @@-commands are also |
| available for some characters, in particular if a 7-bit ASCII Texinfo source is |
| desired. |
| |
| Here is a table with the commands Texinfo provides for inserting |
| floating accents. They all need an argument, the character to accent, |
| which can either be given in braces as usual (@code{@@'@{e@}}), or, as |
| a special case, the braces can be omitted, in which case the argument |
| is the next character (@code{@@'e}). This is to make the source as |
| convenient as possible to type and read, since accented characters are |
| very common in some languages. |
| |
| If the command is alphabetic, such as @code{@@dotaccent}, then there |
| must be a space between the command name and argument if braces are |
| not used. If the command is non-alphabetic, such as @code{@@'}, then |
| there must @emph{not} be a space; the argument is the very next |
| character. |
| |
| Exception: the argument to @code{@@tieaccent} must be enclosed in |
| braces (since it is two characters instead of one). |
| |
| In Info and plain text output, accent constructs are output as the true |
| accented characters if the document encoding supports the required characters, |
| unless the option @option{--disable-encoding} is given to @command{texi2any} |
| (@pxref{@code{@@documentencoding}}). ASCII transliterations are used if the |
| encoded characters are not output. |
| |
| @findex " @r{(umlaut accent)} |
| @cindex Umlaut accent |
| @findex ' @r{(acute accent)} |
| @cindex Acute accent |
| @findex = @r{(macron accent)} |
| @cindex Macron accent |
| @findex ^ @r{(circumflex accent)} |
| @cindex Circumflex accent |
| @findex ` @r{(grave accent)} |
| @cindex Grave accent |
| @findex ~ @r{(tilde accent)} |
| @cindex Tilde accent |
| @findex , @r{(cedilla accent)} |
| @cindex Cedilla accent |
| @findex dotaccent |
| @cindex Dot accent |
| @findex H @r{(Hungarian umlaut accent)} |
| @cindex Hungarian umlaut accent |
| @findex ogonek |
| @cindex Ogonek diacritic |
| @findex ringaccent |
| @cindex Ring accent |
| @findex tieaccent |
| @cindex Tie-after accent |
| @findex u @r{(breve accent)} |
| @cindex Breve accent |
| @findex ubaraccent |
| @cindex Underbar accent |
| @findex udotaccent |
| @cindex Underdot accent |
| @findex v @r{(caron)} |
| @cindex Hacek accent |
| @cindex Check accent |
| @cindex Caron |
| @ifset commandlookup |
| @findex " |
| @findex ' |
| @findex = |
| @findex ^ |
| @findex ` |
| @findex ~ |
| @findex , |
| @findex H |
| @findex u |
| @findex v |
| @end ifset |
| @multitable {@t{@@questiondown@{@}}} {Output} {caron/hacek/check accent} |
| @headitem Command @tab Output @tab What |
| @item @t{@@"o} @tab @"o @tab umlaut accent |
| @item @t{@@'o} @tab @'o @tab acute accent |
| @item @t{@@,@{c@}} @tab @,{c} @tab cedilla accent |
| @item @t{@@=o} @tab @=o @tab macron/overbar accent |
| @item @t{@@^o} @tab @^o @tab circumflex accent |
| @item @t{@@`o} @tab @`o @tab grave accent |
| @item @t{@@~o} @tab @~o @tab tilde accent |
| @item @t{@@dotaccent@{o@}} @tab @dotaccent{o} @tab overdot accent |
| @item @t{@@H@{o@}} @tab @H{o} @tab long Hungarian umlaut |
| @item @t{@@ogonek@{a@}} @tab @ogonek{a} @tab ogonek |
| @item @t{@@ringaccent@{o@}} @tab @ringaccent{o} @tab ring accent |
| @item @t{@@tieaccent@{oo@}} @tab @tieaccent{oo} @tab tie-after accent |
| @item @t{@@u@{o@}} @tab @u{o} @tab breve accent |
| @item @t{@@ubaraccent@{o@}} @tab @ubaraccent{o} @tab underbar accent |
| @item @t{@@udotaccent@{o@}} @tab @udotaccent{o} @tab underdot accent |
| @item @t{@@v@{o@}} @tab @v{o} @tab caron/hacek/check accent |
| @end multitable |
| |
| This table lists the Texinfo commands for inserting other characters |
| commonly used in languages other than English. |
| |
| @findex questiondown |
| @cindex @questiondown{} |
| @findex exclamdown |
| @cindex @exclamdown{} |
| @findex aa |
| @cindex @aa{} |
| @findex AA |
| @cindex @AA{} |
| @findex ae |
| @cindex @ae{} |
| @findex AE |
| @cindex @AE{} |
| @cindex Icelandic |
| @cindex Eth |
| @findex dh |
| @cindex @dh{} |
| @findex DH |
| @cindex @DH{} |
| @findex dotless |
| @cindex @dotless{i} (dotless i) |
| @cindex @dotless{j} (dotless j) |
| @cindex Dotless i, j |
| @findex l |
| @cindex @l{} |
| @findex L |
| @cindex @L{} |
| @findex o |
| @cindex @o{} |
| @findex O |
| @cindex @O{} |
| @findex oe |
| @cindex @oe{} |
| @findex OE |
| @cindex @OE{} |
| @cindex Romance ordinals |
| @cindex Ordinals, Romance |
| @cindex Feminine ordinal |
| @findex ordf |
| @cindex @ordf{} |
| @cindex Masculine ordinal |
| @findex ordm |
| @cindex @ordm{} |
| @findex ss |
| @cindex @ss{} |
| @cindex Es-zet |
| @cindex Sharp S |
| @cindex German S |
| @cindex Thorn |
| @findex th |
| @cindex @th{} |
| @findex TH |
| @cindex @TH{} |
| @multitable {@t{@@questiondown@{@}}} {oe OE} {es-zet or sharp S} |
| @item @t{@@exclamdown@{@}} @tab @exclamdown{} @tab upside-down ! |
| @item @t{@@questiondown@{@}} @tab @questiondown{} @tab upside-down ? |
| @item @t{@@aa@{@} @@AA@{@}} @tab @aa{} @AA{} @tab a,A with circle |
| @item @t{@@ae@{@} @@AE@{@}} @tab @ae{} @AE{} @tab ae,AE ligatures |
| @item @t{@@dh@{@} @@DH@{@}} @tab @dh{} @DH{} @tab Icelandic eth |
| @item @t{@@dotless@{i@}} @tab @dotless{i} @tab dotless i |
| @item @t{@@dotless@{j@}} @tab @dotless{j} @tab dotless j |
| @item @t{@@l@{@} @@L@{@}} @tab @l{} @L{} @tab suppressed-L,l |
| @item @t{@@o@{@} @@O@{@}} @tab @o{} @O{} @tab O,o with slash |
| @item @t{@@oe@{@} @@OE@{@}} @tab @oe{} @OE{} @tab oe,OE ligatures |
| @item @t{@@ordf@{@} @@ordm@{@}} @tab @ordf{} @ordm{} @tab Spanish ordinals |
| @item @t{@@ss@{@}} @tab @ss{} @tab es-zet or sharp S |
| @item @t{@@th@{@} @@TH@{@}} @tab @th{} @TH{} @tab Icelandic thorn |
| @end multitable |
| |
| |
| @node Inserting Quotation Marks |
| @nodedescription Inserting quotation marks. |
| @section Inserting Quotation Marks |
| @cindex Inserting quotation marks |
| @cindex Quotation marks, inserting |
| |
| @cindex Quotation characters (`'), in source |
| Use doubled single-quote characters to begin and end quotations: |
| @w{@t{`@w{}`@dots{}'@w{}'}}. Two single quotes |
| are converted to left- and right-hand doubled quotation marks, |
| ``like this''. |
| |
| You may occasionally need to produce two consecutive single quotes; |
| for example, in documenting a computer language such as Maxima where |
| @t{'@w{}'} is a valid command. You can do this with the input |
| @t{'@@w@{@}'}; the empty @code{@@w} command stops the combination into |
| the double-quote characters. |
| |
| @cindex Unicode quotation characters |
| @cindex Grave accent @subentry vs. left quote |
| The left quote character (@t{`}, ASCII code 96) used in Texinfo is a |
| grave accent in ANSI and ISO character set standards. We use it as a |
| quote character because that is how @TeX{} is set up, by default. |
| |
| Texinfo supports several other quotation marks used in languages other |
| than English. Below is a table with the commands Texinfo provides for |
| inserting quotation marks. |
| |
| @cindex Single quotation marks |
| @cindex Double quotation marks |
| @cindex Left quotation marks |
| @cindex Right quotation marks |
| @findex quotedblleft |
| @cindex @code{`@w{}`} |
| @findex quoteleft |
| @cindex @code{`} |
| @cindex " (undirected double quote character) |
| @findex quotedblright |
| @cindex '@w{}' |
| @findex quoteright |
| @cindex ' |
| @cindex Double low-9 quotation mark |
| @cindex Single low-9 quotation mark |
| @findex quotedblbase |
| @cindex @quotedblbase{} (double low-9 quotation mark) |
| @findex quotesinglbase |
| @cindex @quotesinglbase{} (single low-9 quotation mark) |
| @cindex Angle quotation marks |
| @cindex Guillemets |
| @cindex Guillemots |
| @cindex French quotation marks |
| @cindex Quotation marks, French |
| @cindex German quotation marks |
| @cindex Quotation marks, German |
| @cindex Double guillemets |
| @cindex Single guillemets |
| @cindex Double angle quotation marks |
| @cindex Single angle quotation marks |
| @cindex Left-pointing angle quotation marks |
| @cindex Right-pointing angle quotation marks |
| @cindex Double left-pointing angle quotation mark |
| @cindex Double right-pointing angle quotation mark |
| @cindex Single left-pointing angle quotation mark |
| @cindex Single right-pointing angle quotation mark |
| @findex guillemetleft |
| @findex guillemotleft |
| @cindex @sortas{<<} @guillemetleft{} |
| @findex guillemetright |
| @findex guillemotright |
| @cindex @guillemetright{} |
| @findex guilsinglleft |
| @cindex @sortas{<} @guilsinglleft{} |
| @findex guilsinglright |
| @cindex @guilsinglright{} |
| @c The third column doesn't have the full text in the prototype so that |
| @c the Info output fits within 72 columns. |
| @multitable {@t{@@quotedblright@{@} '@w{}'}} {Glyph} {Right-pointing double angle quotation} |
| @headitem Command @tab Glyph @tab Unicode name (point) |
| @item @verb{.@quotedblleft{} ``.} @tab @quotedblleft{} @tab Left double quotation mark (U+201C) |
| @item @verb{.@quotedblright{} ''.} @tab @quotedblright{} @tab Right double quotation mark (U+201D) |
| @item @verb{.@quoteleft{} `.} @tab @quoteleft{} @tab Left single quotation mark (U+2018) |
| @item @verb{.@quoteright{} '.} @tab @quoteright{} @tab Right single quotation mark (U+2019) |
| @item @t{@@quotedblbase@{@}} @tab @quotedblbase{} @tab Double low-9 quotation mark (U+201E) |
| @item @t{@@quotesinglbase@{@}} @tab @quotesinglbase{} @tab Single low-9 quotation mark (U+201A) |
| @item @t{@@guillemetleft@{@}} @tab @guillemetleft{} @tab Left-pointing double angle quotation mark (U+00AB) |
| @item @t{@@guillemetright@{@}} @tab @guillemetright{} @tab Right-pointing double angle quotation mark (U+00BB) |
| @item @t{@@guilsinglleft@{@}} @tab @guilsinglleft{} @tab Single left-pointing angle quotation mark (U+2039) |
| @item @t{@@guilsinglright@{@}} @tab @guilsinglright{} @tab Single right-pointing angle quotation mark (U+203A) |
| @end multitable |
| |
| @cindex Auk, bird species |
| For the double angle quotation marks, Adobe and @LaTeX{} glyph names |
| are also supported: @code{@@guillemotleft} and |
| @code{@@guillemotright}. These names are incorrect; a |
| ``guillemot'' is a bird species (a type of auk). |
| |
| @cindex European Computer Modern fonts |
| @cindex EC fonts |
| The standard @TeX{} fonts support the usual quotation marks used in |
| English (the ones produced with single and doubled ASCII |
| single quotes). For the other quotation marks, @TeX{} uses European |
| Computer Modern (EC) fonts (@file{ecrm1000} and other variants). |
| These fonts are freely available, of course; you can download them |
| from @url{http://ctan.org/pkg/ec}, among other places. |
| |
| @cindex CM-Super fonts |
| The free EC fonts are bitmap fonts created with Metafont. Especially |
| for on-line viewing, Type@tie{}1 (vector) versions of the fonts are |
| preferable; these are available in the CM-Super font package |
| (@url{http://ctan.org/pkg/cm-super}). |
| |
| Both distributions include installation instructions. |
| |
| Traditions for quotation mark usage vary to a great extent between |
| languages (@url{https://en.wikipedia.org/wiki/Quotation_mark}). |
| Texinfo does not provide commands or configurations for typesetting |
| quotation marks according to the numerous traditions. Therefore, you |
| have to choose the commands appropriate for the language of your |
| manual. Sometimes aliases (@pxref{@code{@@alias}}) can simplify the |
| usage and make the source code more readable. For example, in German, |
| @code{@@quotedblbase} is used for the left double quote, and the right |
| double quote is the glyph produced by @code{@@quotedblleft}, which is |
| counterintuitive. Thus, in this case the following aliases would be |
| convenient: |
| |
| @example |
| @@alias lgqq = quotedblbase |
| @@alias rgqq = quotedblleft |
| @end example |
| |
| |
| @node Inserting Subscripts and Superscripts |
| @nodedescription Inserting sub/superscripts. |
| @section @code{@@sub} and @code{@@sup}: Inserting Subscripts and Superscripts |
| |
| @findex sub |
| @findex sup |
| @cindex Subscripts and superscripts, text |
| |
| You can insert subscripts and superscripts with the @code{@@sub} |
| and @code{@@sup} commands. For example: |
| |
| @example |
| here@@sub@{below@}@@sup@{above@} |
| @end example |
| |
| @noindent produces: |
| |
| @display |
| here@sub{below}@sup{above} |
| @end display |
| |
| In Info and plain text, @code{@@sub@{@var{text}@}} is currently output |
| as @samp{_@{@var{text}@}} and @code{@@sup@{@var{text}@}} as |
| @samp{^@{@var{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 (printed output, |
| HTML), the superscript is set above the subscript when both commands are |
| given consecutively. |
| |
| For subscripts and superscripts in mathematical expressions, it is |
| better to use @TeX{}'s @samp{_} and @samp{^} characters. See the |
| next section. |
| |
| |
| @node Glyphs for Text |
| @nodedescription Inserting dots, bullets, currencies, etc. |
| @section Glyphs for Text |
| |
| @anchor{Glyphs}@c old name |
| @anchor{TeX and copyright}@c another old node, now split into two |
| @cindex Glyphs for text |
| @cindex Textual glyphs |
| |
| Texinfo has support for a few additional glyphs that are commonly used |
| in printed text but not available in ASCII@. Of course, there are |
| many thousands more. It is possible to use Unicode characters as-is |
| as far as @code{texi2any} is concerned, but @TeX{} is not so lucky. |
| |
| |
| @node @code{@@TeX @@LaTeX} |
| @nodedescription The @TeX{} logos. |
| @subsection @code{@@TeX}@{@} (@TeX{}) and @code{@@LaTeX}@{@} (@LaTeX{}) |
| |
| @anchor{tex}@c old name |
| @findex TeX |
| @findex LaTeX |
| @cindex Logos, @TeX{} |
| @cindex @TeX{} logo |
| @cindex @LaTeX{} logo |
| |
| Use the @code{@@TeX@{@}} command to generate `@TeX{}'. In a printed |
| manual, this is a special logo that is different from three ordinary |
| letters. In other output formats, it just looks like @samp{TeX}. |
| |
| Similarly, use the @code{@@LaTeX@{@}} command to generate `@LaTeX{}', |
| which is even more special in printed manuals (and different from the |
| incorrect @code{La@@TeX@{@}}. In other output formats, the result is just |
| @samp{LaTeX}. |
| |
| The spelling of these commands is unusual for Texinfo, in that they |
| use both uppercase and lowercase letters. |
| |
| |
| @node @code{@@copyright} |
| @nodedescription The copyright symbol (c in a circle). |
| @subsection @code{@@copyright@{@}} (@copyright{}) |
| |
| @anchor{copyright symbol}@c old name |
| @findex copyright |
| @cindex Copyright symbol |
| |
| Use the @code{@@copyright@{@}} command to generate the copyright |
| symbol, `@copyright{}'. Where possible, this is a @samp{c} inside a |
| circle; otherwise this is @samp{(C)}. |
| |
| Legally, it's not necessary to use the copyright symbol; the English |
| word `Copyright' suffices, according to international treaty. |
| |
| |
| @node @code{@@registeredsymbol} |
| @nodedescription The registered symbol (R in a circle). |
| @subsection @code{@@registeredsymbol@{@}} (@registeredsymbol{}) |
| |
| @anchor{registered symbol}@c old name |
| @findex registeredsymbol |
| @cindex Registered symbol |
| |
| Use the @code{@@registeredsymbol@{@}} command to generate the |
| registered symbol, `@registeredsymbol{}'. Where possible, this is an |
| @samp{R} inside a circle; otherwise this is @samp{(R)}. |
| |
| |
| @node @code{@@dots} |
| @nodedescription How to insert ellipses: @dots{} and @enddots{} |
| @subsection @code{@@dots} (@dots{}) and @code{@@enddots} (@enddots{}) |
| |
| @anchor{dots}@c old name |
| @findex dots |
| @findex enddots |
| @cindex Inserting dots |
| @cindex Inserting ellipsis |
| @cindex Dots, inserting |
| @cindex Ellipsis, inserting |
| |
| @anchor{Dots Bullets}@c old name |
| |
| An @dfn{ellipsis} (a sequence of dots) would be spaced wrong when |
| typeset as a string of periods, so a special command is used in |
| Texinfo: use the @code{@@dots@{@}} command to generate a normal |
| ellipsis, which is three dots in a row, appropriately spaced @dots{} |
| like so. To emphasize: do not simply write three periods in the input |
| file; that could work in some output formats, but would produce the |
| wrong amount of space between the periods in printed manuals. |
| |
| The @code{@@enddots@{@}} command generates an end-of-sentence |
| ellipsis, which also has three dots, but with different spacing |
| afterwards, @enddots{} Look closely to see the difference. |
| |
| Here is an ellipsis: @dots{} |
| Here are three periods in a row: ... |
| |
| In printed (and usually HTML) output, the three periods in a row are |
| much closer together than the dots in the ellipsis. |
| |
| |
| @node @code{@@bullet} |
| @nodedescription How to insert a bullet: @bullet{} |
| @subsection @code{@@bullet} (@bullet{}) |
| |
| @anchor{bullet}@c old name |
| @findex bullet |
| |
| Use the @code{@@bullet@{@}} command to generate a large round dot, or |
| the closest possible thing to one. An asterisk can also be used. |
| Here is a bullet: @bullet{} |
| |
| |
| @node @code{@@euro} |
| @nodedescription How to insert the euro currency symbol. |
| @subsection @code{@@euro} (@euro{}): Euro Currency Symbol |
| |
| @anchor{euro}@c old name |
| @findex euro |
| @cindex Euro symbol, producing |
| |
| Use the @code{@@euro@{@}} command to generate `@euro{}'. Where |
| possible, this is the symbol for the Euro currency. Otherwise, the |
| word @samp{Euro} is used. |
| |
| @pindex feymr10 |
| @cindex Euro font |
| The Euro symbol does not exist in the standard @TeX{} fonts (which |
| were designed before the Euro was legislated into existence). |
| Therefore, @TeX{} uses an additional font, named @code{feymr10} (along |
| with other variables). It is freely available, of course; you can |
| download it from @url{http://ctan.org/pkg/eurosym}, among other |
| places. The distribution includes installation instructions. |
| |
| |
| @node @code{@@pounds} |
| @nodedescription How to insert the pounds currency symbol. |
| @subsection @code{@@pounds} (@pounds{}): Pounds Sterling |
| |
| @anchor{pounds}@c old name |
| @findex pounds |
| @cindex Pounds symbol |
| |
| Use the @code{@@pounds@{@}} command to generate `@pounds{}'. Where |
| possible, this is the symbol for the pounds sterling British currency. |
| @ignore |
| @c Unlikely to occur in user's output. |
| @c Occurs with "-c OUTPUT_ENCODING_NAME=ascii" or |
| @c "-c TEXINFO_OUTPUT_FORMAT=text". |
| @c See also @textdegree{}. |
| Otherwise, it is @samp{#}. |
| @end ignore |
| |
| |
| @node @code{@@textdegree} |
| @nodedescription How to insert the degrees symbol. |
| @subsection @code{@@textdegree} (@textdegree{}): Degrees Symbol |
| |
| @anchor{textdegree}@c old name |
| @findex textdegree |
| @cindex Degree symbol |
| |
| Use the @code{@@textdegree@{@}} command to generate `@textdegree{}'. |
| Where possible, this is the normal symbol for degrees. |
| @ignore @c see @pounds{} |
| Otherwise, it is an @samp{o}. |
| @end ignore |
| |
| |
| @node @code{@@minus} |
| @nodedescription How to insert a minus sign. |
| @subsection @code{@@minus} (@minus{}): Inserting a Minus Sign |
| |
| @anchor{minus}@c old name |
| @findex minus |
| @cindex Minus sign |
| |
| @cindex Em dash, compared to minus sign |
| @cindex Hyphen, compared to minus |
| Use the @code{@@minus@{@}} command to generate a minus sign. |
| Where the character encoding and font used in the output allow it, |
| the symbol is the customary length for a minus sign---a little longer |
| than a hyphen, shorter than an em-dash: |
| |
| @display |
| @samp{@minus{}} is a minus sign generated with @samp{@@minus@{@}}, |
| |
| `-' is a hyphen generated with the character @samp{-}, |
| |
| `---' is an em-dash for text. |
| @end display |
| |
| If you actually want to typeset some math that does a subtraction, it |
| is better to use @code{@@math}, as in @code{@@math@{a-b@}} (@pxref{Inserting |
| Math}). |
| |
| |
| @node @code{@@geq @@leq} |
| @nodedescription How to insert greater/less-than-or-equal signs. |
| @subsection @code{@@geq} (@geq{}) and @code{@@leq} (@leq{}): Inserting Relations |
| |
| @anchor{geq leq}@c old name |
| @findex geq |
| @findex leq |
| |
| Use the @code{@@geq@{@}} and @code{@@leq@{@}} commands to generate |
| greater-than-or-equal and less-than-equal-signs, `@geq{}' and |
| `@leq{}'. When those symbols are not available, the ASCII sequences |
| @samp{>=} and @samp{<=} are output. |
| |
| |
| @node Glyphs for Programming |
| @nodedescription Indicating results of evaluation, expansion of macros, errors, etc. |
| @section Glyphs for Programming |
| |
| @cindex Glyphs for programming |
| @cindex Examples, glyphs for |
| @cindex Programming, glyphs for |
| |
| In Texinfo, code is often illustrated in examples that are delimited |
| by @code{@@example} and @code{@@end example}. In such examples, |
| you can indicate the results of evaluation or an expansion using |
| @samp{@result{}} or @samp{@expansion{}}. Likewise, there are commands |
| to insert glyphs to indicate printed output, error messages, equivalence |
| of expressions, the location of point in an editor, and GUI operation |
| sequences. |
| |
| The glyph-insertion commands do not need to be used within an example, |
| but most often they are. All glyph-insertion commands are followed by |
| empty braces. |
| |
| |
| @node Glyphs Summary |
| @nodedescription List of the glyph commands. |
| @subsection Glyphs Summary |
| |
| Here is a summary of the glyph commands: |
| |
| @table @asis |
| @item @result{} |
| @code{@@result@{@}} indicates the result of an expression. |
| |
| @item @expansion{} |
| @code{@@expansion@{@}} indicates the results of a macro expansion. |
| |
| @item @print{} |
| @code{@@print@{@}} indicates printed output. |
| |
| @item @error{} |
| @code{@@error@{@}} indicates the following text is an error message. |
| |
| @item @equiv{} |
| @code{@@equiv@{@}} indicates the exact equivalence of two forms. |
| |
| @item @point{} |
| @code{@@point@{@}} shows the location of point. |
| |
| @item @clicksequence{A @click{} B} |
| @code{@@clicksequence@{A @@click@{@} B@}} indicates a GUI operation |
| sequence: first A, then clicking B, or choosing B from a menu, or |
| otherwise selecting it. |
| @end table |
| |
| |
| @node @code{@@result} |
| @nodedescription How to show the result of expression. |
| @subsection @code{@@result@{@}} (@result{}): Result of an Expression |
| |
| @anchor{result}@c old name |
| @findex result |
| @cindex Result of an expression |
| @cindex Indicating evaluation |
| @cindex Evaluation glyph |
| @cindex Value of an expression, indicating |
| |
| Use the @code{@@result@{@}} command to indicate the result of |
| evaluating an expression. |
| |
| The @code{@@result@{@}} command is displayed as @samp{@result{}}, |
| either a double stemmed arrow or (when that is not available) the |
| ASCII sequence @samp{=>}. |
| |
| Thus, the following, |
| |
| @example lisp |
| (cdr '(1 2 3)) |
| @result{} (2 3) |
| @end example |
| |
| @noindent |
| may be read as ``@code{(cdr '(1 2 3))} evaluates to @code{(2 3)}''. |
| |
| |
| @node @code{@@expansion} |
| @nodedescription How to indicate an expansion. |
| @subsection @code{@@expansion@{@}} (@expansion{}): Indicating an Expansion |
| |
| @anchor{expansion}@c old name |
| @cindex Expansion, indicating |
| @cindex Macro expansion, indicating |
| @findex expansion |
| |
| When an expression is a macro call, it expands into a new expression. |
| You can indicate the result of the expansion with the |
| @code{@@expansion@{@}} command. |
| |
| The @code{@@expansion@{@}} command is displayed as |
| @samp{@expansion{}}, either a long arrow with a flat base or (when |
| that is not available) the ASCII sequence @samp{==>}. |
| |
| @need 700 |
| For example, the following |
| |
| @example |
| @group |
| @@example lisp |
| (third '(a b c)) |
| @@expansion@{@} (car (cdr (cdr '(a b c)))) |
| @@result@{@} c |
| @@end example |
| @end group |
| @end example |
| |
| @noindent |
| produces |
| |
| @example lisp |
| @group |
| (third '(a b c)) |
| @expansion{} (car (cdr (cdr '(a b c)))) |
| @result{} c |
| @end group |
| @end example |
| |
| @noindent |
| which may be read as: |
| |
| @quotation |
| @code{(third '(a b c))} expands to @code{(car (cdr (cdr '(a b c))))}; |
| the result of evaluating the expression is @code{c}. |
| @end quotation |
| |
| @noindent |
| Often, as in this case, an example looks better if the |
| @code{@@expansion@{@}} and @code{@@result@{@}} commands are indented. |
| |
| |
| @node @code{@@print} |
| @nodedescription How to indicate generated output. |
| @subsection @code{@@print@{@}} (@print{}): Indicating Generated Output |
| |
| @anchor{Print Glyph}@c old name |
| @findex print |
| @cindex Printed output, indicating |
| |
| Sometimes an expression will generate output during its execution. |
| You can indicate such displayed output with the @code{@@print@{@}} |
| command. |
| |
| The @code{@@print@{@}} command is displayed as @samp{@print{}}, either |
| a horizontal dash butting against a vertical bar or (when that is not |
| available) the ASCII sequence @samp{-|}. |
| |
| In the following example, the printed text is indicated with |
| @samp{@print{}}, and the value of the expression follows on the |
| last line. |
| |
| @example lisp |
| @group |
| (progn (print 'foo) (print 'bar)) |
| @print{} foo |
| @print{} bar |
| @result{} bar |
| @end group |
| @end example |
| |
| @noindent |
| In a Texinfo source file, this example is written as follows: |
| |
| @example |
| @group |
| @@example lisp |
| (progn (print 'foo) (print 'bar)) |
| @@print@{@} foo |
| @@print@{@} bar |
| @@result@{@} bar |
| @@end example |
| @end group |
| @end example |
| |
| |
| @node @code{@@error} |
| @nodedescription How to indicate an error message. |
| @subsection @code{@@error@{@}} (@error{}): Indicating an Error Message |
| |
| @anchor{Error Glyph}@c old name |
| @cindex Error message, indicating |
| @findex error |
| |
| A piece of code may cause an error when you evaluate it. You can |
| designate the error message with the @code{@@error@{@}} command. |
| |
| The @code{@@error@{@}} command is displayed as @samp{@error{}}, either |
| the word `error' in a box in the printed output, the word error |
| followed by an arrow in other formats or (when no arrow is available) |
| @samp{error-->}. |
| |
| @need 700 |
| Thus, |
| |
| @example |
| @@example lisp |
| (+ 23 'x) |
| @@error@{@} Wrong type argument: integer-or-marker-p, x |
| @@end example |
| @end example |
| |
| @noindent |
| produces |
| |
| @example lisp |
| (+ 23 'x) |
| @error{} Wrong type argument: integer-or-marker-p, x |
| @end example |
| |
| @noindent |
| This indicates that the following error message is printed |
| when you evaluate the expression: |
| |
| @example lisp |
| Wrong type argument: integer-or-marker-p, x |
| @end example |
| |
| The word @samp{@error{}} itself is not part of the error message. |
| |
| |
| @node @code{@@equiv} |
| @nodedescription How to indicate equivalence. |
| @subsection @code{@@equiv@{@}} (@equiv{}): Indicating Equivalence |
| |
| @anchor{Equivalence}@c oldname |
| @cindex Equivalence, indicating |
| @findex equiv |
| |
| Sometimes two expressions produce identical results. You can indicate |
| the exact equivalence of two forms with the @code{@@equiv@{@}} |
| command. The @code{@@equiv@{@}} command is displayed as |
| @samp{@equiv{}}, either a standard mathematical equivalence sign |
| (three parallel horizontal lines) or (when that is not available) as |
| the ASCII sequence @samp{==}. |
| |
| Thus, |
| |
| @example |
| @@example lisp |
| (make-sparse-keymap) @@equiv@{@} (list 'keymap) |
| @@end example |
| @end example |
| |
| @noindent |
| produces |
| |
| @example lisp |
| (make-sparse-keymap) @equiv{} (list 'keymap) |
| @end example |
| |
| @noindent |
| This indicates that evaluating @code{(make-sparse-keymap)} produces |
| identical results to evaluating @code{(list 'keymap)}. |
| |
| |
| @node @code{@@point} |
| @nodedescription How to indicate the location of point. |
| @subsection @code{@@point@{@}} (@point{}): Indicating Point in a Buffer |
| |
| @anchor{Point Glyph}@c old name |
| @cindex Point, indicating in a buffer |
| @findex point |
| |
| Sometimes you need to show an example of text in an Emacs buffer. In |
| such examples, the convention is to include the entire contents of the |
| buffer in question between two lines of dashes containing the buffer |
| name. |
| |
| You can use the @samp{@@point@{@}} command to show the location of |
| point in the text in the buffer. (The symbol for point, of course, is |
| not part of the text in the buffer; it indicates the place |
| @emph{between} two characters where point is located.) |
| |
| The @code{@@point@{@}} command is displayed as @samp{@point{}}, either |
| a pointed star or (when that is not available) the ASCII sequence |
| @samp{-!-}. |
| |
| The following example shows the contents of buffer @file{foo} before |
| and after evaluating a Lisp command to insert the word @code{changed}. |
| |
| @example |
| @group |
| ---------- Buffer: foo ---------- |
| This is the @point{}contents of foo. |
| ---------- Buffer: foo ---------- |
| |
| @end group |
| @end example |
| |
| @example |
| @group |
| (insert "changed ") |
| @result{} nil |
| ---------- Buffer: foo ---------- |
| This is the changed @point{}contents of foo. |
| ---------- Buffer: foo ---------- |
| |
| @end group |
| @end example |
| |
| In a Texinfo source file, the example is written like this: |
| |
| @example |
| @@example |
| ---------- Buffer: foo ---------- |
| This is the @@point@{@}contents of foo. |
| ---------- Buffer: foo ---------- |
| |
| (insert "changed ") |
| @@result@{@} nil |
| ---------- Buffer: foo ---------- |
| This is the changed @@point@{@}contents of foo. |
| ---------- Buffer: foo ---------- |
| @@end example |
| @end example |
| |
| |
| @node Click Sequences |
| @nodedescription Inserting GUI usage sequences. |
| @subsection Click Sequences |
| |
| @cindex Click sequences |
| @cindex Sequence of clicks |
| @cindex GUI click sequence |
| |
| @findex clicksequence |
| When documenting graphical interfaces, it is necessary to describe |
| sequences such as `Click on @samp{File}, then choose @samp{Open}, then |
| @dots{}'. Texinfo offers commands @code{@@clicksequence} and |
| @code{click} to represent this, typically used like this: |
| |
| @example |
| @dots{} @@clicksequence@{File @@click@{@} Open@} @dots{} |
| @end example |
| |
| @noindent |
| which produces: |
| |
| @display |
| @dots{} @clicksequence{File @click{} Open} @dots{} |
| @end display |
| |
| @findex click |
| @findex arrow |
| The @code{@@click} command produces a right arrow; this glyph is also |
| available independently via the command @code{@@arrow@{@}}. |
| |
| |
| @node Inserting Unicode |
| @nodedescription Inserting a Unicode character by code point. |
| @section Inserting Unicode: @code{@@U} |
| |
| @cindex Unicode character, inserting |
| @cindex Code point of Unicode character, inserting by |
| @findex U |
| |
| The command @code{@@U@{@var{hex}@}} inserts a representation of the |
| Unicode character U+@var{hex}. For example, @code{@@U@{0132@}} |
| inserts the Dutch `IJ' ligature (`@U{0132}'). |
| |
| The @var{hex} value should be at least four hex digits; leading zeros |
| are @emph{not} added. In general, @var{hex} must specify a valid |
| normal Unicode character; e.g., U+10FFFF (the very last code point) is |
| invalid by definition, and thus cannot be inserted this way. |
| |
| @cindex ASCII, source document portability using |
| @code{@@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. |
| |
| @cindex Unicode and @TeX{} |
| This command has many limitations---the same limitations as inserting |
| Unicode characters 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 @file{texinfo.tex} to support whole additional scripts |
| (Japanese, Urdu, @dots{}). The @code{@@U} command does nothing to |
| change this. If the specified character is not supported in @TeX{}, |
| an error is given. @LaTeX{} output has more possibilities regarding |
| UTF-8, but could require extra code to load fonts and declare |
| how UTF-8 characters are output. (@xref{@code{@@documentencoding}}.) |
| |
| @cindex Entity reference in HTML et al. |
| @cindex @samp{&#x@var{hex};}, output from @code{@@U} |
| In HTML and DocBook, the output from @code{@@U} is always an |
| entity reference of the form @samp{&#x@var{hex};}, as in |
| @samp{IJ} for the example above. This should work even when an |
| HTML document uses some other encoding (say, Latin@tie{}1) and the |
| given character is not supported in that encoding. |
| |
| In Info and plain text, if the output encoding is not UTF-8, the output |
| is the ASCII sequence @samp{U+@var{hex}}, as in the six ASCII characters |
| @samp{U+0132} for the example above. |
| |
| |
| @node Inserting Math |
| @nodedescription Formatting mathematical expressions. |
| @chapter Formatting Mathematics |
| |
| @anchor{math}@c old name |
| @findex math |
| @cindex Mathematical expressions, inserting |
| @cindex Formulas, mathematical |
| You can write a mathematical expression, equation or formula using |
| the @code{@@math} command. Write the @TeX{} math notation between |
| braces, like this: |
| |
| @example |
| @@math@{\partial_\alpha \partial^\alpha A^\beta = \mu_0 J^\beta@} |
| @end example |
| |
| @code{@@math} is formatted inline when used inside a paragraph, |
| like @math{\partial_\alpha \partial^\alpha A^\beta = \mu_0 J^\beta} in |
| this example. |
| |
| By default, the @code{@@math} command has no special effect on the Info |
| output, merely outputting the contents verbatim. You can use the |
| experimental @code{INFO_MATH_IMAGES} variable to produce images; see |
| @ref{Info and Plaintext Customization Variables}. |
| |
| For printed output, @code{@@math} switches into @TeX{} ``math mode''. |
| In that context, @samp{\} must be used instead of @samp{@@} |
| for plain @TeX{} math control sequences for symbols, functions, |
| and so on. |
| |
| @cindex Math output for HTML |
| @cindex HTML output @subentry math |
| By default, the HTML output is only emphasized. |
| @command{texi2any} provides three options for displaying properly |
| formatted mathematics for HTML. You can select these with the |
| @code{HTML_MATH} variable (@pxref{HTML Customization for Math}). |
| With @code{HTML_MATH} set to @samp{l2h}, @command{texi2any} attempts |
| to use the @command{latex2html} program to produce image files for |
| mathematical material. With the @samp{t4h} setting, @command{texi2any} |
| attempts to use the @command{tex4ht} program. With the @samp{mathjax} |
| setting, @command{texi2any} inserts references in the output files |
| to MathJax scripts to format the material. The MathJax option |
| requires JavaScript to be enabled in the browser to work. See also |
| @ref{MathJax Customization Variables}, @ref{@command{latex2html} |
| Customization Variables} and @ref{@command{tex4ht} Customization |
| Variables}. |
| |
| @cindex Displayed equations |
| @cindex Equations, displayed |
| @findex displaymath |
| For displayed equations, you can use the @code{@@displaymath} |
| command. Example: |
| |
| @example |
| @@displaymath |
| f(x) = @{1\over\sigma\sqrt@{2\pi@}@} |
| e^@{-@{1\over2@}\left(@{x-\mu\over\sigma@}\right)^2@} |
| @@end displaymath |
| @end example |
| |
| @noindent which produces: |
| |
| @displaymath |
| f(x) = {1\over\sigma\sqrt{2\pi}} |
| e^{-{1\over2}\left({x-\mu\over\sigma}\right)^2} |
| @end displaymath |
| |
| In general, the contents of @code{@@math} or @code{@@displaymath} |
| should be plain @TeX{} only, with no interspersed Texinfo commands. |
| If you do use any Texinfo commands, then you should mark these with |
| @samp{@@} as usual, rather than @samp{\} (e.g.@: @samp{@@var} rather than |
| @samp{\var}), but we do not guarantee which Texinfo commands will work. |
| |
| Although @code{@@sub} and @code{@@sup} may work inside math mode in |
| some contexts, it is better to use @TeX{}'s @samp{_} and @samp{^} |
| characters to denote subscripts and superscripts within mathematical |
| expressions. |
| |
| @LaTeX{}-specific code will only work when the output format is @LaTeX{}, |
| and with the @code{HTML_MATH} options (although @command{tex4ht} needs |
| @code{T4H_MATH_CONVERSION} to be set to @samp{latex}; |
| @pxref{@command{tex4ht} Customization Variables}). |
| |
| @ignore |
| @findex @sortas{\} \ @r{(literal \ in @code{@@math})} |
| Since @samp{\} is an escape character inside @code{@@math}, you can |
| use @code{@@\} to get a literal backslash (@code{\\} will work in |
| @TeX{}, but you'd get the literal two characters @samp{\\} in Info). |
| @code{@@\} is not defined outside of @code{@@math}, since a @samp{\} |
| ordinarily produces a literal (typewriter) @samp{\}. You can also use |
| @code{@@backslashchar@{@}} in any mode to get a typewriter backslash. |
| @xref{Inserting a Backslash}. |
| @end ignore |
| |
| @findex \mathopsup |
| Due to the conflict with Texinfo's @code{@@sup} command, you can access |
| the plain @TeX{} command @code{\sup} as @code{\mathopsup} instead, |
| in the unlikely occurrence that you want to do this (but only when |
| processing with @TeX{}, not when outputting @LaTeX{} nor with any of the |
| @code{HTML_MATH} options). |
| |
| |
| @node Breaks |
| @nodedescription Forcing or preventing line and page breaks. |
| @chapter Forcing and Preventing Breaks |
| |
| @cindex Forcing line and page breaks |
| @cindex Making line and page breaks |
| @cindex Preventing line and page breaks |
| @cindex Line breaks @subentry awkward |
| @cindex Page breaks, awkward |
| |
| Line and page breaks can sometimes occur in the `wrong' place in one |
| or another form of output. It's up to you to ensure that text looks |
| right in all the output formats. |
| |
| For example, in a printed manual, page breaks may occur awkwardly in |
| the middle of an example; to prevent this, you can hold text together |
| using a grouping command that keeps the text from being split across |
| two pages. Conversely, you may want to force a page break where none |
| would normally occur. |
| |
| You can use the break, break prevention, or pagination commands to fix |
| problematic line and page breaks. |
| |
| |
| @node Break Commands |
| @nodedescription Summary of break-related commands. |
| @section Break Commands |
| |
| The break commands create or allow line and paragraph breaks: |
| |
| @table @code |
| @item @@* |
| Force a line break. |
| |
| @item @@sp @var{n} |
| Skip @var{n} blank lines. |
| |
| @item @@- |
| Insert a discretionary hyphen. |
| |
| @item @@hyphenation@{@var{hy-phen-a-ted words}@} |
| Define hyphen points in @var{hy-phen-a-ted words}. |
| @end table |
| |
| These commands hold text together on a single line: |
| |
| @table @code |
| @item @@w@{@var{text}@} |
| Prevent @var{text} from being split and hyphenated across two lines. |
| |
| @item @@tie@{@} |
| Insert a normal interword space at which a line break may not occur. |
| @end table |
| |
| The pagination commands apply only to printed output, since other |
| output formats do not have pages. |
| |
| @table @code |
| @item @@page |
| Start a new page. |
| |
| @item @@group |
| Hold text together that must appear on one page. |
| |
| @item @@need @var{mils} |
| Start a new page if not enough space on this one. |
| @end table |
| |
| |
| @node Line Breaks |
| @nodedescription Forcing line breaks. |
| @section @code{@@*} and @code{@@/}: Generate and Allow Line Breaks |
| |
| @findex * @r{(force line break)} |
| @findex / @r{(allow line break)} |
| @ifset commandlookup |
| @findex * |
| @findex / |
| @end ifset |
| |
| @cindex Line breaks @subentry controlling |
| @cindex Controlling line breaks |
| @cindex Breaks in a line |
| @cindex Force line break |
| @cindex Allow line break |
| |
| The @code{@@*} command forces a line break in all output formats. |
| The @code{@@/} command allows a line break (printed manual only). |
| |
| Here is an example with @code{@@*}: |
| |
| @example |
| This sentence is broken @@*into two lines. |
| @end example |
| |
| @noindent produces |
| |
| @example |
| @group |
| This sentence is broken |
| into two lines. |
| @end group |
| @end example |
| |
| The @code{@@/} command can be useful within long URLs or other |
| identifiers where @TeX{} can't find a good place to break. @TeX{} |
| will automatically break URLs at the natural places (@pxref{URL Line |
| Breaking}), so only use @code{@@/} if you need it. @code{@@/} has no |
| effect on the other output formats. |
| |
| |
| @node @code{@@- @@hyphenation} |
| @nodedescription Helping @TeX{} with hyphenation points. |
| @section @code{@@-} and @code{@@hyphenation}: Hyphenation in Printed Output |
| |
| @anchor{- and hyphenation}@c old name |
| @findex @sortas{-} - @r{(discretionary hyphen)} |
| @ifset commandlookup |
| @findex @sortas{-} - |
| @end ifset |
| @findex hyphenation |
| @cindex Hyphenation, helping @TeX{} do |
| @cindex Fine-tuning, and hyphenation |
| |
| Although @TeX{}'s hyphenation algorithm is generally pretty good, it |
| does miss useful hyphenation points from time to time. (Or, far more |
| rarely, insert an incorrect hyphenation.) So, for documents with an |
| unusual vocabulary or when fine-tuning for a printed edition, you may |
| wish to specify hyphenation points explicitly. Texinfo supports two |
| commands for this: |
| |
| @table @code |
| @item @@- |
| |
| Insert a discretionary hyphen, i.e., a place where a word can be |
| broken across lines with a hyphen. This is especially useful when you |
| notice that an overfull hbox is due to @TeX{} missing a hyphenation |
| (@pxref{Overfull hboxes}). @TeX{} will not insert any hyphenation |
| points itself into a word containing @code{@@-}. |
| |
| @item @@hyphenation@{@var{hy-phen-a-ted words}@} |
| Give hyphenation points for certain words. For example: |
| @example |
| @@hyphenation@{man-u-script man-u-scripts@} |
| @end example |
| |
| @noindent As shown, you put a @samp{-} at each hyphenation point. |
| @TeX{} only uses the specified hyphenation points when the words match |
| exactly, so give all necessary variants, such as plurals. |
| @end table |
| |
| Non-printed output is not hyphenated, so none of |
| these commands have any effect in other output formats. |
| |
| |
| @node @code{@@allowcodebreaks} |
| @nodedescription Controlling line breaks within @@code text. |
| @section @code{@@allowcodebreaks}: Control Line Breaks in @code{@@code} |
| |
| @anchor{allowcodebreaks}@c old name |
| @findex allowcodebreaks |
| @cindex Breaks, within @code{@@code} |
| @cindex @sortas{-} -, breakpoint within @code{@@code} |
| @cindex Hyphen, breakpoint within @code{@@code} |
| @cindex Dash, breakpoint within @code{@@code} |
| @cindex _, breakpoint within @code{@@code} |
| @cindex Underscore, breakpoint within @code{@@code} |
| |
| Ordinarily, @TeX{} considers breaking lines at @samp{-} and @samp{_} |
| characters within @code{@@code} and related commands |
| (@pxref{@code{@@code}}), more or less as if they were ``empty'' |
| hyphenation points. |
| |
| This is necessary since many manuals, especially for Lisp-family |
| languages, must document very long identifiers. On the other hand, |
| some manuals don't have this problem, and you may not wish to allow a |
| line break at the underscore in, for example, @code{SIZE_MAX}, or even |
| worse, after any of the four underscores in @code{__typeof__}. |
| |
| So Texinfo provides this command: |
| |
| @example |
| @@allowcodebreaks false |
| @end example |
| |
| @noindent to prevent from breaking at @samp{-} or @samp{_} within |
| @code{@@code}. You can go back to allowing such breaks with |
| @code{@@allowcodebreaks true}. Write these commands on lines by |
| themselves. |
| |
| These commands can be given anywhere in the document. For example, |
| you may have just one problematic paragraph where you need to turn off |
| the breaks, but want them in general, or vice versa. |
| |
| This command has no effect except in @TeX{} output. |
| |
| |
| @node @code{@@w} |
| @nodedescription Preventing unwanted line breaks in text. |
| @section @code{@@w}@{@var{text}@}: Prevent Line Breaks |
| |
| @anchor{w}@c old name |
| @findex w |
| @cindex Line breaks, preventing |
| |
| @code{@@w@{@var{text}@}} outputs @var{text}, while prohibiting line |
| breaks within @var{text}. |
| |
| @cindex Non-breakable space, fixed |
| @cindex Unbreakable space, fixed |
| Thus, you can use @code{@@w} to produce a non-breakable space, fixed at |
| the width of a normal interword space: |
| |
| @example |
| @@w@{ @} @@w@{ @} @@w@{ @} indentation. |
| @end example |
| |
| @noindent produces: |
| |
| @display |
| @w{ } @w{ } @w{ } indentation. |
| @end display |
| |
| The space from @code{@@w@{@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 @code{@@tie} command in the next section. |
| |
| @cindex Hyphenation, preventing |
| In printed output, you can also use the @code{@@w} command to prevent |
| a long name or phrase being automatically hyphenated, for example if |
| it happens to fall near the end of a line. |
| |
| @cindex Keyword expansion, preventing |
| @cindex Version control keywords, preventing expansion of |
| @cindex $Id expansion, preventing |
| You can also use @code{@@w} to avoid unwanted keyword expansion in |
| source control systems. For example, to literally write @t{@w{$}Id$} |
| in your document, use @code{@@w@{$@}Id$}. This trick isn't effective |
| for output files in some output formats, though. |
| |
| |
| @node @code{@@tie} |
| @nodedescription Inserting an unbreakable but varying space. |
| @section @code{@@tie@{@}}: Inserting an Unbreakable Space |
| |
| @anchor{tie}@c old name |
| @findex tie |
| @cindex Tied space |
| @cindex Non-breakable space, variable |
| @cindex Unbreakable space, variable |
| |
| The @code{@@tie@{@}} command produces a normal interword space at which |
| a line break may not occur. Always write it with following (empty) |
| braces, as usual for commands used within a paragraph. Here's an |
| example: |
| |
| @example |
| @@TeX@{@} was written by Donald E.@@tie@{@}Knuth. |
| @end example |
| |
| @noindent produces: |
| |
| @display |
| @TeX{} was written by Donald E.@tie{}Knuth. |
| @end display |
| |
| There are two important differences between @code{@@tie@{@}} and |
| @code{@@w@{@w{ }@}}: |
| |
| @itemize |
| @item |
| The space produced by @code{@@tie@{@}} will stretch and shrink slightly |
| along with the normal interword spaces in the paragraph; the space |
| produced by @code{@@w@{@w{ }@}} will not vary. |
| |
| @item |
| @code{@@tie@{@}} allows hyphenation of the surrounding words, while |
| @code{@@w@{@w{ }@}} inhibits hyphenation of those words (for @TeX{}nical |
| reasons, namely that it produces an @samp{\hbox}). |
| |
| @end itemize |
| |
| |
| @node @code{@@sp} |
| @nodedescription Inserting blank lines. |
| @section @code{@@sp @var{n}}: Insert Blank Lines |
| |
| @anchor{sp}@c old name |
| @findex sp |
| @cindex Space, inserting vertical |
| @cindex Blank lines |
| @cindex Line spacing |
| |
| A line beginning with and containing only @code{@@sp @var{n}} |
| generates @var{n} blank lines of space. @code{@@sp} also |
| forces a paragraph break. For example, |
| |
| @example |
| @@sp 2 |
| @end example |
| |
| @noindent |
| generates two blank lines. |
| |
| The @code{@@sp} command is most often used inside a @code{@@titlepage} |
| block. |
| |
| |
| @node @code{@@page} |
| @nodedescription Forcing the start of a new page. |
| @section @code{@@page}: Start a New Page |
| |
| @anchor{page}@c old name |
| @findex page |
| @cindex Page breaks, forcing |
| |
| A line containing only @code{@@page} starts a new page in a printed |
| manual. In other formats, without the concept of pages, it starts a |
| new paragraph. A @code{@@page} command is often used in a |
| @code{@@titlepage} section of a Texinfo file to start the copyright |
| page. |
| |
| |
| @node @code{@@group} |
| @nodedescription Preventing unwanted page breaks. |
| @section @code{@@group}: Prevent Page Breaks |
| |
| @anchor{group}@c old name |
| @findex group |
| @cindex Group (hold text together vertically) |
| @cindex Holding text together vertically |
| @cindex Vertically holding text together |
| |
| The @code{@@group} command is used to hold an example |
| together on one page. Use it inside an |
| @code{@@example} or similar construct to begin an unsplittable vertical |
| group, which will appear entirely on one page in the printed output. |
| Terminate the group by a line containing only @code{@@end group}. |
| This command has an effect in @TeX{} output only. |
| |
| @need 750 |
| The @code{@@group} and @code{@@end group} commands need to be inside the |
| @code{@@example} and @code{@@end example} commands, thus: |
| |
| @example |
| @group |
| @@example |
| @@group |
| @dots{} |
| @@end group |
| @@end example |
| @end group |
| @end example |
| |
| Although @code{@@group} would make sense conceptually in a wide |
| variety of contexts, its current implementation works only |
| within @code{@@example} and variants, and within @code{@@display}, |
| @code{@@format}, @code{@@flushleft} and @code{@@flushright}. |
| @xref{Quotations and Examples}. (What all these commands have in |
| common is that each line of input produces a line of output.) |
| |
| @c In other contexts, @code{@@group} can cause anomalous vertical |
| @c spacing. |
| |
| @c commented out below because all TeX errors are strange and unfathomable, |
| @c not just for @group |
| |
| @c If you forget to end a group, you may get strange and unfathomable |
| @c error messages when you run @TeX{}. This is because @TeX{} keeps |
| @c trying to put the rest of the Texinfo file onto the one page and does |
| @c not start to generate error messages until it has processed |
| @c considerable text. It is a good rule of thumb to look for a missing |
| @c @code{@@end group} if you get incomprehensible error messages in |
| @c @TeX{}. |
| |
| |
| @node @code{@@need} |
| @nodedescription Another way to prevent unwanted page breaks. |
| @section @code{@@need @var{mils}}: Prevent Page Breaks |
| |
| @anchor{need}@c old name |
| @findex need |
| @cindex Need space at page bottom |
| @cindex Mils, argument to @code{@@need} |
| |
| A line containing only @code{@@need @var{n}} starts a new page in a |
| printed manual if fewer than @var{n} mils (thousandths of an inch) |
| remain on the current page. Do not use braces around the argument |
| @var{n}. The @code{@@need} command has no effect on other output |
| formats since they are not paginated. |
| |
| @need 800 |
| This paragraph is preceded by a @code{@@need} command that starts a |
| new page in printed output if fewer than 800 mils (eight-tenths inch) |
| remain on the page. It looks like this: |
| |
| @example |
| @group |
| @@need 800 |
| This paragraph is preceded by @dots{} |
| @end group |
| @end example |
| |
| @cindex Orphans, preventing |
| The @code{@@need} command is useful for preventing orphans: single |
| lines at the bottoms of printed pages. |
| |
| |
| @node Definition Commands |
| @nodedescription Describing functions and the like uniformly. |
| @chapter Definition Commands |
| @cindex Definition commands |
| |
| The @code{@@deffn} command and the other @dfn{definition commands} |
| enable you to describe functions, variables, macros, commands, user |
| options, special forms and other entities in a uniform format. |
| |
| In the output, the name of the entity is shown with any arguments, along |
| with the entity category ---`Function', `Variable', or whatever. |
| Underneath, the body of the definition is indented. |
| The name of the entity is also entered into the appropriate index. |
| |
| All the definition commands follow a similar format. This chapter |
| starts by describing @code{@@deffn} before detailing all the other |
| definition commands. |
| |
| |
| @node Def Cmd Template |
| @nodedescription Writing descriptions using definition commands. |
| @section The Template for a Definition |
| @cindex Definition template |
| @cindex Template for a definition |
| |
| @example |
| @group |
| @@deffn @var{category} @var{name} @var{arguments}@dots{} |
| @var{body-of-definition} |
| @@end deffn |
| @end group |
| @end example |
| |
| @noindent |
| The @code{@@deffn} command is used for definitions of entities that |
| resemble functions---entities that may take arguments. |
| Write the @code{@@deffn} command at the beginning of a line |
| and follow it on the same line by the category of the entity, the name |
| of the entity itself, and its arguments (if any). Then write the body |
| of the definition on succeeding lines. |
| Finally, end the definition with an @code{@@end deffn} command |
| written on a line of its own. |
| |
| |
| @need 700 |
| @noindent |
| For example, |
| |
| @example |
| @group |
| @@deffn Command forward-word count |
| This command moves point forward @@var@{count@} words |
| (or backward if @@var@{count@} is negative). @dots{} |
| @@end deffn |
| @end group |
| @end example |
| |
| @noindent |
| produces |
| |
| @quotation |
| @deffn Command forward-word count |
| This command moves point forward @var{count} words |
| (or backward if @var{count} is negative). @dots{} |
| @end deffn |
| @end quotation |
| |
| Capitalize the category name like a title. If the name of the |
| category contains spaces, as in the phrase `Interactive Command', |
| enclose it in braces. For example: |
| |
| @example |
| @group |
| @@deffn @{Interactive Command@} isearch-forward |
| @dots{} |
| @@end deffn |
| @end group |
| @end example |
| |
| @noindent |
| 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 @emph{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, @samp{@{declaraci@@'on@}} if you are |
| writing in Spanish. |
| |
| The category is output in a different location for different output |
| formats. For example, in the Info file, the category appears at the |
| beginning of the first line of the definition. With @TeX{} output, |
| the category is printed next to the right margin. |
| |
| @code{@@deffn} enters names into the index of functions. |
| |
| Three predefined, specialized variations of @code{@@deffn} |
| (@code{@@defun}, @code{@@defmac}, and @code{@@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 @code{@@defvr} command is |
| accompanied by several specialized variations for describing |
| particular kinds of variables. |
| |
| |
| @node Def Cmd Continuation Lines |
| @nodedescription Continuing the heading over source lines. |
| @section Definition Command Continuation Lines |
| @cindex Continuation lines in definition commands |
| @cindex Definition command headings, continuing |
| @cindex @sortas{@@} @samp{@@} as continuation in definition commands |
| |
| The heading line of a definition command can get very long. |
| Therefore, Texinfo has a special syntax allowing them to be continued |
| over multiple lines of the source file: a lone @samp{@@} at the end of |
| each line to be continued. Here's an example: |
| |
| @example |
| @@defun fn-name @@ |
| arg1 arg2 arg3 |
| This is the basic continued defun. |
| @@end defun |
| @end example |
| |
| @noindent produces: |
| |
| @defun fn-name arg1 arg2 arg3 |
| This is the basic continued defun. |
| @end defun |
| |
| @noindent |
| 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 @code{@@} at the end of each line to be continued. |
| |
| @cindex Whitespace, collapsed around continuations |
| @cindex Collapsing whitespace around continuations |
| In general, any number of spaces or tabs before the @code{@@} |
| 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: |
| |
| @example |
| @@deffn @{Category @@ |
| Name@} @dots{} |
| @end example |
| |
| @noindent 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 @code{@@} outside braces. |
| |
| @code{@@} does not function as a continuation character in @emph{any} |
| other context. Ordinarily, @samp{@@} followed by a whitespace |
| character (space, tab, newline) produces a normal interword space |
| (@pxref{Multiple Spaces}). |
| |
| |
| @node Optional Arguments |
| @nodedescription Handling optional and repeated arguments. |
| @section Optional and Repeated Arguments |
| @cindex Optional and repeated arguments |
| @cindex Repeated and optional arguments |
| @cindex Arguments, repeated and optional |
| @cindex Syntax, optional & repeated arguments |
| @cindex Meta-syntactic chars for arguments |
| |
| @c This is consistent with the Emacs Lisp Reference Manual. |
| Some entities take optional or repeated arguments. One convention for |
| indicating these uses square brackets and ellipses: an argument enclosed |
| within square brackets is optional, and an argument followed by an |
| ellipsis is optional and may be repeated more than once. |
| |
| Thus, [@var{optional-arg}] means that @var{optional-arg} is optional |
| and @var{repeated-args}@code{@dots{}} stands for zero or more |
| arguments. Parentheses are used when several arguments are grouped |
| into additional levels of list structure in Lisp. |
| |
| Here is the definition line of an example of an imaginary |
| (complicated) special form: |
| |
| @quotation |
| @defspec foobar (var [from to [inc]]) body@dots{} |
| @end defspec |
| @end quotation |
| |
| @noindent |
| In this example, the arguments @var{from} and @var{to} are optional, |
| but must both be present or both absent. If they are present, |
| @var{inc} may optionally be specified as well. These arguments are |
| grouped with the argument @var{var} into a list, to distinguish them |
| from @var{body}, which includes all remaining elements of the |
| form. |
| |
| In a Texinfo source file, this @code{@@defspec} line is written like |
| this: |
| |
| @example |
| @@defspec foobar (var [from to [inc]]) body@@dots@{@} |
| @end example |
| |
| |
| @node No Space After Definition Name |
| @nodedescription How to omit space after name. |
| @section Omitting the Space After a Definition Name |
| |
| @vindex txidefnamenospace |
| As a matter of style or as demanded by the syntax of a programming language, |
| you may wish to omit any space after a name in a definition, occurring |
| before an opening bracket. To do this, set the @samp{txidefnamenospace} |
| flag (@pxref{@code{@@set @@value}}). For example, this input |
| |
| @example |
| @@set txidefnamenospace |
| @@deffn Builtin m4_index (string, substring) |
| @@dots@{@} |
| @@end deffn |
| @end example |
| |
| @noindent produces the following: |
| |
| @set txidefnamenospace |
| @deffn Builtin m4_index (string, substring) |
| @dots{} |
| @end deffn |
| @clear txidefnamenospace |
| |
| |
| @node @code{@@deffnx} |
| @nodedescription Group two or more `first' lines. |
| @section @code{@@deffnx}, et al.: Two or More `First' Lines |
| |
| @anchor{deffnx}@c old node |
| @findex deffnx |
| @cindex Two `First' Lines for @code{@@deffn} |
| @cindex Grouping two definitions together |
| @cindex Definitions grouped together |
| |
| To create two or more `first' or header lines for a definition, follow |
| the first @code{@@deffn} line by a line beginning with |
| @code{@@deffnx}. |
| |
| @need 1000 |
| For example, |
| |
| @example |
| @group |
| @@deffn @{Interactive Command@} isearch-forward |
| @@deffnx @{Interactive Command@} isearch-backward |
| These two search commands are similar except @dots{} |
| @@end deffn |
| @end group |
| @end example |
| |
| @noindent |
| produces |
| |
| @deffn {Interactive Command} isearch-forward |
| @deffnx {Interactive Command} isearch-backward |
| These two search commands are similar except @dots{} |
| @end deffn |
| |
| @findex defcvx |
| @findex defivarx |
| @findex defmacx |
| @findex defmethodx |
| @findex defoptx |
| @findex defopx |
| @findex defspecx |
| @findex deftpx |
| @findex deftypecvx |
| @findex deftypefnx |
| @findex deftypefunx |
| @findex deftypeivarx |
| @findex deftypemethodx |
| @findex deftypeopx |
| @findex deftypevarx |
| @findex deftypevrx |
| @findex defunx |
| @findex defvarx |
| @findex defvrx |
| Each definition command has an `x' form: @code{@@defunx}, |
| @code{@@defvrx}, @code{@@deftypefunx}, etc. |
| |
| The `x' forms work similarly to @code{@@itemx} |
| (@pxref{@code{@@itemx}}). |
| |
| |
| @node Def Cmds in Detail |
| @nodedescription Reference for all the definition commands. |
| @section The Definition Commands |
| |
| This section describes all the definition commands of Texinfo. |
| |
| |
| @node Functions Commands |
| @nodedescription Commands for functions and similar entities. |
| @subsection Functions and Similar Entities |
| |
| @cindex Function definitions |
| @cindex Command definitions |
| @cindex Macro definitions, programming-language |
| |
| This section describes the commands for describing functions and similar |
| entities with simple arguments: |
| |
| @table @code |
| @findex deffn |
| @item @@deffn @var{category} @var{name} @var{arguments}@dots{} |
| The @code{@@deffn} command is the general definition command for |
| functions, interactive commands, and similar entities that may take |
| simple arguments. You must choose a term to describe the category of entity |
| being defined; for example, ``Function'' could be used if the entity is |
| a function. The @code{@@deffn} command is written at the beginning of a |
| line and is followed on the same line by the category of entity being |
| described, the name of this particular entity, and its arguments, if |
| any. Terminate the definition with @code{@@end deffn} on a line of its |
| own. |
| |
| @need 750 |
| For example, here is a definition: |
| |
| @example |
| @group |
| @@deffn Command forward-char nchars |
| Move point forward @@var@{nchars@} characters. |
| @@end deffn |
| @end group |
| @end example |
| |
| @noindent |
| This shows a rather terse definition for a ``command'' named |
| @code{forward-char} with one argument, @var{nchars}. |
| |
| @ignore |
| @c do not be specific about font differences between @deffn/@deftypefn |
| @c as this might change in the future |
| Where the output format allows, @code{@@deffn} uses a typewriter font |
| for @var{name}, and a slanted font for the rest of the @var{arguments}, |
| as would be produced by @code{@@var}. |
| @end ignore |
| |
| Within the text of the description, write an argument name |
| explicitly with @code{@@var} to refer to the value of the argument. |
| In the example above, we used @samp{@@var@{nchars@}} in this way. |
| |
| In the extremely unusual case when an argument name contains |
| @samp{--}, or another character sequence which is treated specially |
| (@pxref{Conventions}), use @code{@@code} around the special |
| characters. This avoids the conversion to typographic en-dashes and |
| em-dashes. |
| @c @var also works; that's what we used to recommend. |
| |
| @findex defun |
| @item @@defun @var{name} @var{arguments}@dots{} |
| The @code{@@defun} command is the definition command for functions |
| with simple arguments. @code{@@defun} is equivalent to |
| @samp{@@deffn Function @dots{}}. Terminate the definition with |
| @code{@@end defun} on a line of its own. |
| |
| @findex defmac |
| @item @@defmac @var{name} @var{arguments}@dots{} |
| The @code{@@defmac} command is the definition command for macros. |
| @code{@@defmac} is equivalent to @samp{@@deffn Macro @dots{}} and |
| works like @code{@@defun}. |
| |
| @findex defspec |
| @item @@defspec @var{name} @var{arguments}@dots{} |
| The @code{@@defspec} command is the definition command for special |
| forms. (In Lisp, a special form is an entity much like a function; |
| @pxref{Special Forms,,, elisp, GNU Emacs Lisp Reference Manual}.) |
| @code{@@defspec} is equivalent to @samp{@@deffn @{Special Form@} |
| @dots{}} and works like @code{@@defun}. |
| @end table |
| |
| All these commands create entries in the index of functions. |
| |
| |
| @node Typed Functions |
| @nodedescription Commands for functions in typed languages. |
| @subsection Functions in Typed Languages |
| |
| @cindex Typed functions |
| @cindex Functions, in typed languages |
| |
| The @code{@@deftypefn} command and its variants are generic commands |
| for describing functions. They are particularly suitable for languages in |
| which you must declare types of variables and functions, such as C and C++. |
| |
| @table @code |
| @findex deftypefn |
| @item @@deftypefn @var{category} @var{data-type} @var{name} @var{arguments}@dots{} |
| The @code{@@deftypefn} command is the general definition command for |
| functions and similar entities that may take arguments and that could |
| be typed. The @code{@@deftypefn} command is written at the beginning of |
| a line and is followed on the same line by the category of entity |
| being described, information on the returned value, the name of this |
| particular entity, and its arguments, if any. |
| |
| @need 800 |
| @noindent |
| For example, |
| |
| @example |
| @group |
| @@deftypefn @{Library Function@} int foobar @@ |
| (int @@var@{foo@}, float @@var@{bar@}) |
| @dots{} |
| @@end deftypefn |
| @end group |
| @end example |
| |
| produces: |
| |
| @quotation |
| @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar}) |
| @dots{} |
| @end deftypefn |
| @end quotation |
| |
| This means that @code{foobar} is a ``library function'' that returns an |
| @code{int}, and its arguments are @var{foo} (an @code{int}) and |
| @var{bar} (a @code{float}). @samp{Library Function} has to be |
| enclosed in braces to make it a single argument. |
| |
| When using @code{@@deftypefn} command and variations, |
| you should mark parameter names with |
| @code{@@var} to distinguish these from data type names, keywords, and |
| other parts of the literal syntax of the programming language. |
| @ignore |
| @c do not be specific about font differences between @deffn/@deftypefn |
| @c as this might change in the future |
| Where the output format allows, |
| all output on the definition line is in a typewriter font by default. |
| @code{@@var} uses an appropriate font where it occurs. |
| @end ignore |
| |
| If you are describing a procedure in a language that has packages, |
| such as Ada, you might consider using @code{@@deftypefn} in the |
| following manner: |
| |
| @example |
| @group |
| @@deftypefn stacks private push @@ |
| (@@var@{s@}:in out stack; @@ |
| @@var@{n@}:in integer) |
| @dots{} |
| @@end deftypefn |
| @end group |
| @end example |
| |
| @noindent |
| (In these examples the @code{@@deftypefn} arguments are shown using |
| continuations (@pxref{Def Cmd Continuation Lines}), but could be on a |
| single line.) |
| |
| In this instance, the procedure is classified as belonging to the |
| package @code{stacks} rather than classified as a `procedure' and its |
| data type is described as @code{private}. (The name of the procedure |
| is @code{push}, and its arguments are @var{s} and @var{n}.) Output: |
| |
| @deftypefn stacks private push @ |
| (@var{s}:in out stack; @ |
| @var{n}:in integer) |
| @dots{} |
| @end deftypefn |
| |
| @code{@@deftypefn} and variants could be used when it is convenient to |
| interpret the arguments list as literal computer code, marking |
| argument names with @code{@@var}. |
| It is not necessary for any type names to appear, |
| and you can give an empty return type as @samp{@{@}}. |
| |
| @ignore |
| @c This example is flawed because @var uppercases in Info output, |
| @c which is inappropriate for named arguments |
| For example, for documenting the R language, you could use input like |
| |
| @example |
| @@deftypefn stats @{@} t.test (@@var@{x@}, @@var@{y@} = NULL,@@ |
| @@w@{@@var@{alternative@} = c("two.sided", "less", "greater")@},@@ |
| @@w@{@@var@{mu@} = 0@}, @@w@{@@var@{paired@} = FALSE@},@@ |
| @@w@{@@var@{var.equal@} = FALSE@},@@ |
| @@w@{@@var@{conf.level@} = 0.95@}, @@dots@{@}) |
| @dots{} |
| @@end deftypefn |
| @end example |
| |
| @noindent to get output like |
| |
| @deftypefn stats {} t.test (@var{x}, @var{y} = NULL,@ |
| @w{@var{alternative} = c("two.sided", "less", "greater")},@ |
| @w{@var{mu} = 0}, @w{@var{paired} = FALSE},@ |
| @w{@var{var.equal} = FALSE},@ |
| @w{@var{conf.level} = 0.95}, @dots{}) |
| @dots{} |
| @end deftypefn |
| |
| @noindent Here the @code{@@w} command is used to prevent some line breaks. |
| |
| @end ignore |
| |
| The information on return values may be used to name the return |
| variables. For example, in Perl, returned scalars may be given the |
| @var{$result} and @var{$status} name in the following manner: |
| |
| @example |
| @@deftypefn @{Sub@} @{(@@var@{$result@}, @@var@{$status@}) =@} @@ |
| process (@@var@{$input@}) |
| @dots{} Set @@var@{$status@} to 0 in case of failure @dots{} |
| @@end deftypefn |
| @end example |
| |
| to get output like |
| |
| @deftypefn {Sub} {(@var{$result}, @var{$status}) =} process (@var{$input}) |
| @dots{} Set @var{$status} to 0 in case of failure @dots{} |
| @end deftypefn |
| |
| @code{@@deftypefn} creates an entry in the index of functions for |
| @var{name}. |
| |
| @findex deftypefun |
| @item @@deftypefun @var{data-type} @var{name} @var{arguments}@dots{} |
| The @code{@@deftypefun} command is the specialized definition command |
| for functions. The command is equivalent to @samp{@@deftypefn Function |
| @dots{}}. |
| |
| @code{@@deftypefun} creates an entry in the index of functions for |
| @var{name}. |
| |
| @end table |
| |
| @cindex Return type, own line for |
| @findex deftypefnnewline |
| Ordinarily, the return type is printed on the same line as the |
| function name and arguments, as shown above. In source code, GNU |
| style for typed functions is to put the return type on a line by itself. |
| So Texinfo provides an option to do that: @code{@@deftypefnnewline on}. |
| |
| This affects the generic functions only---not untyped functions with |
| simple arguments such as @code{@@deffn}, not typed |
| variables, etc. Specifically, it affects the commands in this |
| section, and the analogous commands for object-oriented languages, |
| namely @code{@@deftypeop} and @code{@@deftypemethod} |
| (@pxref{Object-Oriented Methods}). |
| |
| Specifying @code{@@deftypefnnewline off} reverts to the default. |
| |
| |
| @node Variables Commands |
| @nodedescription Commands for variables and similar entities. |
| @subsection Variables and Similar Entities |
| |
| Here are the commands for defining variables and similar |
| entities: |
| |
| @table @code |
| @findex defvr |
| @item @@defvr @var{category} @var{name} |
| The @code{@@defvr} command is a general definition command for |
| something like a variable---an entity that records a value. You must |
| choose a term to describe the category of entity being defined; for |
| example, ``Variable'' could be used if the entity is a variable. |
| Write the @code{@@defvr} command at the beginning of a line and |
| follow it on the same line by the category of the entity and the |
| name of the entity. |
| |
| We recommend capitalizing the category name like a title. If the name |
| of the category contains spaces, as in the name ``User Option'', |
| enclose it in braces. Otherwise, the second word will be mistaken for |
| the name of the entity. For example, |
| |
| @example |
| @group |
| @@defvr @{User Option@} fill-column |
| This buffer-local variable specifies |
| the maximum width of filled lines. |
| @dots{} |
| @@end defvr |
| @end group |
| @end example |
| |
| Terminate the definition with @code{@@end defvr} on a line of its |
| own. |
| |
| @code{@@defvr} creates an entry in the index of variables for @var{name}. |
| |
| @findex defvar |
| @item @@defvar @var{name} |
| The @code{@@defvar} command is the definition command for variables. |
| @code{@@defvar} is equivalent to @samp{@@defvr Variable |
| @dots{}}. |
| |
| @need 750 |
| For example: |
| |
| @example |
| @group |
| @@defvar kill-ring |
| @dots{} |
| @@end defvar |
| @end group |
| @end example |
| |
| @code{@@defvar} creates an entry in the index of variables for |
| @var{name}. |
| |
| @findex defopt |
| @cindex User options, marking |
| @item @@defopt @var{name} |
| The @code{@@defopt} command is the definition command for @dfn{user |
| options}, i.e., variables intended for users to change according to |
| taste; Emacs has many such (@pxref{Variables,,, emacs, The GNU Emacs |
| Manual}). @code{@@defopt} is equivalent to @samp{@@defvr @{User |
| Option@} @dots{}}. |
| @end table |
| |
| |
| @node Typed Variables |
| @nodedescription Commands for variables in typed languages. |
| @subsection Variables in Typed Languages |
| |
| @cindex Typed variables |
| @cindex Variables, in typed languages |
| |
| Variables in typed languages are handled in a manner similar to |
| functions in typed languages. @xref{Typed Functions}. The general |
| definition command @code{@@deftypevr} corresponds to |
| @code{@@deftypefn} and the specialized definition command |
| @code{@@deftypevar} corresponds to @code{@@deftypefun}. |
| |
| @table @code |
| @findex deftypevr |
| @item @@deftypevr @var{category} @var{data-type} @var{name} |
| The @code{@@deftypevr} command is the general definition command for |
| something like a variable in a typed language---an entity that records |
| a value. You must choose a term to describe the category of the |
| entity being defined; for example, ``Variable'' could be used if the |
| entity is a variable. |
| |
| The @code{@@deftypevr} command is written at the beginning of a line |
| and is followed on the same line by the category of the entity |
| being described, the data type, and the name of this particular |
| entity. |
| |
| @need 800 |
| @noindent |
| For example: |
| |
| @example |
| @group |
| @@deftypevr @{Global Flag@} int enable |
| @dots{} |
| @@end deftypevr |
| @end group |
| @end example |
| |
| @noindent |
| produces the following: |
| |
| @quotation |
| @deftypevr {Global Flag} int enable |
| @dots{} |
| @end deftypevr |
| @end quotation |
| |
| @findex deftypevar |
| @item @@deftypevar @var{data-type} @var{name} |
| The @code{@@deftypevar} command is the specialized definition command |
| for variables in typed languages. @code{@@deftypevar} is equivalent |
| to @samp{@@deftypevr Variable @dots{}}. |
| @end table |
| |
| These commands create entries in the index of variables. |
| |
| |
| @node Data Types |
| @nodedescription The definition command for data types. |
| @subsection Data Types |
| |
| Here is the command for data types: |
| |
| @table @code |
| @findex deftp |
| @item @@deftp @var{category} @var{name} @var{attributes}@dots{} |
| The @code{@@deftp} command is the generic definition command for data |
| types. The command is written at the beginning of a line and is |
| followed on the same line by the category, by the name of the type |
| (which is a word like @code{int} or @code{float}), and then by names of |
| attributes of objects of that type. Thus, you could use this command |
| for describing @code{int} or @code{float}, in which case you could use |
| @code{data type} as the category. (A data type is a category of |
| certain objects for purposes of deciding which operations can be |
| performed on them.) |
| |
| In Lisp, for example, @dfn{pair} names a particular data |
| type, and an object of that type has two slots called the |
| @sc{car} and the @sc{cdr}. Here is how you would write the first line |
| of a definition of @code{pair}. |
| |
| @example |
| @group |
| @@deftp @{Data type@} pair car cdr |
| @dots{} |
| @@end deftp |
| @end group |
| @end example |
| |
| @code{@@deftp} creates an entry in the index of data types. |
| @end table |
| |
| |
| @node Abstract Objects |
| @nodedescription Commands for object-oriented programming. |
| @subsection Object-Oriented Programming |
| |
| @cindex Object-oriented programming |
| |
| Here are the commands for formatting descriptions about abstract |
| objects, such as are used in object-oriented programming. A class is |
| a defined type of abstract object. An instance of a class is a |
| particular object that has the type of the class. An instance |
| variable is a variable that belongs to the class but for which each |
| instance has its own value. |
| |
| @menu |
| * Variables: Object-Oriented Variables. |
| * Methods: Object-Oriented Methods. |
| @end menu |
| |
| |
| @node Object-Oriented Variables |
| @subsubsection Object-Oriented Variables |
| |
| @cindex Variables, object-oriented |
| |
| These commands allow you to define different sorts of variables in |
| object-oriented programming languages. |
| |
| @table @code |
| @findex defcv |
| @item @@defcv @var{category} @var{class} @var{name} |
| The @code{@@defcv} command is the general definition command for |
| variables associated with classes in object-oriented programming. The |
| @code{@@defcv} command is followed by three arguments: the category of |
| thing being defined, the class to which it belongs, and its |
| name. For instance: |
| |
| @example |
| @group |
| @@defcv @{Class Option@} Window border-pattern |
| @dots{} |
| @@end defcv |
| @end group |
| @end example |
| |
| @noindent produces: |
| @defcv {Class Option} Window border-pattern |
| @dots{} |
| @end defcv |
| |
| @code{@@defcv} creates an entry in the index of variables. |
| |
| @findex deftypecv |
| @item @@deftypecv @var{category} @var{class} @var{data-type} @var{name} |
| The @code{@@deftypecv} command is the definition command for typed |
| class variables in object-oriented programming. It is analogous to |
| @code{@@defcv} with the addition of the @var{data-type} parameter to |
| specify the type of the instance variable. |
| |
| @example |
| @group |
| @@deftypecv @{Class Option@} Window int border-pattern |
| @dots{} |
| @@end deftypecv |
| @end group |
| @end example |
| |
| @noindent produces: |
| |
| @deftypecv {Class Option} Window int border-pattern |
| @dots{} |
| @end deftypecv |
| |
| @code{@@deftypecv} creates an entry in the index of variables. |
| |
| @findex defivar |
| @item @@defivar @var{class} @var{name} |
| The @code{@@defivar} command is the definition command for instance |
| variables in object-oriented programming. @code{@@defivar} is |
| equivalent to @samp{@@defcv @{Instance Variable@} @dots{}}. For |
| instance: |
| |
| @example |
| @group |
| @@defivar Window border-pattern |
| @dots{} |
| @@end defivar |
| @end group |
| @end example |
| |
| @noindent produces: |
| |
| @defivar Window border-pattern |
| @dots{} |
| @end defivar |
| |
| @code{@@defivar} creates an entry in the index of variables. |
| |
| @findex deftypeivar |
| @item @@deftypeivar @var{class} @var{data-type} @var{name} |
| The @code{@@deftypeivar} command is the definition command for typed |
| instance variables in object-oriented programming. It is analogous to |
| @code{@@defivar} with the addition of the @var{data-type} parameter to |
| specify the type of the instance variable. |
| |
| @example |
| @group |
| @@deftypeivar Window int border-pattern |
| @dots{} |
| @@end deftypeivar |
| @end group |
| @end example |
| |
| @noindent produces: |
| |
| @deftypeivar Window @code{int} border-pattern |
| @dots{} |
| @end deftypeivar |
| |
| @code{@@deftypeivar} creates an entry in the index of variables. |
| |
| @end table |
| |
| |
| @node Object-Oriented Methods |
| @subsubsection Object-Oriented Methods |
| |
| @cindex Methods, object-oriented |
| |
| These commands allow you to define different sorts of function-like |
| entities resembling methods in object-oriented programming languages. |
| These entities take arguments, as functions do, but are associated with |
| particular classes of objects. |
| |
| @table @code |
| |
| @findex defop |
| @item @@defop @var{category} @var{class} @var{name} @var{arguments}@dots{} |
| The @code{@@defop} command is the definition command for these |
| method-like entities with simple arguments. |
| |
| For example, some systems have constructs called @dfn{wrappers} that |
| are associated with classes as methods are, but that act more like |
| macros than like functions. You could use @code{@@defop Wrapper} to |
| describe one of these. |
| |
| Sometimes it is useful to distinguish methods and @dfn{operations}. |
| You can think of an operation as the specification for a method. |
| Thus, a window system might specify that all window classes have a |
| method named @code{expose}; we would say that this window system |
| defines an @code{expose} operation on windows in general. Typically, |
| the operation has a name and also specifies the pattern of arguments; |
| all methods that implement the operation must accept the same |
| arguments, since applications that use the operation do so without |
| knowing which method will implement it. |
| |
| Often it makes more sense to document operations than methods. For |
| example, window application developers need to know about the |
| @code{expose} operation, but need not be concerned with whether a |
| given class of windows has its own method to implement this operation. |
| To describe this operation, you would write: |
| |
| @example |
| @@defop Operation windows expose |
| @end example |
| |
| The @code{@@defop} command is written at the beginning of a line and |
| is followed on the same line by the overall name of the category of |
| operation, the name of the class of the operation, the name of the |
| operation, and its arguments, if any. |
| |
| @code{@@defop} creates an entry, such as `@code{expose} on |
| @code{windows}', in the index of functions. |
| |
| @findex deftypeop |
| @item @@deftypeop @var{category} @var{class} @var{data-type} @var{name} @var{arguments}@dots{} |
| The @code{@@deftypeop} command is the generic definition command for |
| operations in object-oriented programming. It is particularly suitable |
| for typed object-oriented languages. It is similar to |
| @code{@@defop} with the addition of the @var{data-type} parameter to |
| specify information on the return value of the method, for example the |
| return type. |
| |
| @findex defmethod |
| @item @@defmethod @var{class} @var{name} @var{arguments}@dots{} |
| The @code{@@defmethod} command is the definition command for methods |
| in object-oriented programming. A method is a kind of function that |
| implements an operation for a particular class of objects and its |
| subclasses. |
| @ignore |
| @c ADR: Who cares?!? |
| @c KB: Oh, I don't know, I think this info is crucial! |
| In the Lisp Machine, methods actually were functions, but |
| they were usually defined with @code{defmethod}. |
| @end ignore |
| |
| @code{@@defmethod} is equivalent to @samp{@@defop Method @dots{}}. |
| The command is written at the beginning of a line and is followed by |
| the name of the class of the method, the name of the method, and its |
| arguments, if any. |
| |
| @noindent |
| For example: |
| @example |
| @group |
| @@defmethod @code{bar-class} bar-method argument |
| @dots{} |
| @@end defmethod |
| @end group |
| @end example |
| |
| @noindent |
| illustrates the definition for a method called @code{bar-method} of |
| the class @code{bar-class}. The method takes an argument. |
| |
| @code{@@defmethod} creates an entry in the index of functions. |
| |
| @findex deftypemethod |
| @item @@deftypemethod @var{class} @var{data-type} @var{name} @var{arguments}@dots{} |
| The @code{@@deftypemethod} command is the definition command for methods |
| in object-oriented languages, in particular for typed languages |
| such as C++ and Java. It is similar to the @code{@@defmethod} command |
| with the addition of the @var{data-type} parameter to specify information |
| on the return value of the method, for example the return type. |
| |
| @end table |
| |
| The commands with information on return values are affected by the |
| @code{@@deftypefnnewline} option (@pxref{Typed Functions,, Functions |
| in Typed Languages}). |
| |
| |
| @node Generic Definition Commands |
| @nodedescription Without automatic index entries. |
| @section Generic Definition Commands |
| |
| Texinfo provides commands for definitions that do not produce automatic |
| index entries. |
| |
| @findex defblock |
| @findex defline |
| @findex deftypeline |
| You create a generic definition environment with @samp{@@defblock} |
| paired with @samp{@@end defblock}. Within this environment, use a |
| @code{@@defline} or @code{@@deftypeline} line for each symbol you |
| document. For example: |
| |
| @example |
| @@defblock |
| @@defline Macro mac (arg1, arg2) |
| Description of mac. |
| @@deftypeline Builtin int foo (int @@var@{bar@}) |
| Description of foo. |
| @@end defblock |
| @end example |
| |
| @noindent This produces the output: |
| |
| @defblock |
| @defline Macro mac (arg1, arg2) |
| Description of mac. |
| @deftypeline Builtin int foo (int @var{bar}) |
| Description of foo. |
| @end defblock |
| |
| The syntax of @code{@@defline} is similar to that of @code{@@deffn}. |
| The first argument gives a category for the definition. Follow this |
| with the symbol name, followed by any parameters. You should surround |
| any arguments containing spaces with braces. |
| |
| You use @code{@@deftypeline} in a similar way to @code{@@deftypefn}, |
| following the category with a data type, and marking any parameters |
| with @code{@@var}. (@xref{Typed Functions}).) |
| |
| To share the same description for multiple symbols, you can put several |
| @code{@@defline} lines together. For example: |
| |
| @example |
| @@defblock |
| @@defline Function set-var (value) |
| @@defline @{Settable Variable@} var |
| Description of set-var and var. |
| @@end defblock |
| @end example |
| |
| @noindent This produces the output: |
| |
| @defblock |
| @defline Function set-var (value) |
| @defline {Settable Variable} var |
| Description of set-var and var. |
| @end defblock |
| |
| It may be useful to define line macros (@pxref{Line Macros}) in combination |
| with these commands. |
| |
| |
| |
| @node Def Cmd Conventions |
| @nodedescription Conventions for writing definitions. |
| @section Conventions for Writing Definitions |
| @cindex Definition conventions |
| @cindex Conventions for writing definitions |
| |
| A manual need not and should not contain more than one definition for |
| a given name. An appendix containing a summary should use |
| @code{@@table} rather than the definition commands. |
| |
| When you write a definition using @code{@@deffn}, @code{@@defun}, or |
| one of the other definition commands, please take care to use |
| arguments that indicate the meaning, as with the @var{count} argument |
| to the @code{forward-word} function. Also, if the name of an argument |
| contains the name of a type, such as @var{integer}, take care that the |
| argument actually is of that type. |
| |
| @emph{Fonts.} As Texinfo is a semantic language, you should nearly never need |
| to specify font styles with explicit font commands in definitions |
| (@pxref{Fonts}). |
| However, you may be need to work around problems for particular |
| output formats and/or constructs. |
| Here are some possibilities: |
| |
| @itemize @bullet |
| @item |
| Explicitly marking a Lisp keyword like @samp{&@var{keyword}} with |
| @code{@@r@{&keyword@}}, producing @r{&keyword}. |
| |
| Note such keywords in definition arguments are (at present) |
| rendered in roman in @TeX{}, but this formatting is not done in |
| any other output format. |
| |
| @item |
| @samp{@@r@{@@slanted@{argument@}@}}, |
| producing @r{@slanted{argument}}, similar to @code{@@var} |
| but avoiding upper-casing its argument in Info output. |
| |
| In this and the previous point, @code{@@r} resets the font from that |
| being used in the definition line context (slanted or typewriter) to |
| a roman, upright style. |
| |
| @item |
| You could use @code{@@t} (or even @samp{@@r@{@@t@{@dots{}}, using @code{@@r} |
| to reset font styles) to mark literal syntax |
| on a definition line where |
| text would otherwise be output in the slanted roman style. |
| @code{@@code} would be inappropriate here as it adds quotation |
| marks in Info output. |
| @end itemize |
| |
| Some degree of trial and error may be needed to get the result you |
| want. As ever, how nested font commands combine depends on |
| the output format, so should be avoided where possible. |
| |
| Hopefully, such usages are kept to a minimum. One possibility is to |
| wrap these in @code{@@macro} (@pxref{Defining New Texinfo Commands}), |
| allowing these usages to be easily changed in the future. |
| |
| @ignore |
| For example, if a metasyntactical symbol is needed and |
| is to be formatted as slanted code, and an strongly emphasized keyword is also |
| important for the language, the following could be used: |
| |
| @example |
| @group |
| @@macro metasymbol @{argument@} |
| @@r@{@@t@{@@slanted@{\argument\@}@}@} |
| @@end macro |
| |
| @@macro strongkeyword @{argument@} |
| @@r@{@@strong@{\argument\@}@} |
| @@end macro |
| |
| @@defun fset arg @@metasymbol@{[ +@} @@strongkeyword@{*keyword@} |
| @dots{} |
| @@end defun |
| @end group |
| @end example |
| |
| @noindent produces: |
| |
| @macro metasymbol {argument} |
| @r{@t{@slanted{\argument\}}} |
| @end macro |
| |
| @macro strongkeyword {argument} |
| @r{@strong{\argument\}} |
| @end macro |
| |
| @defun fset arg @metasymbol{[ +} @strongkeyword{*keyword} |
| @dots{} |
| @end defun |
| @end ignore |
| |
| |
| @node Sample Function Definition |
| @nodedescription An example. |
| @section A Sample Function Definition |
| @cindex Sample function definition |
| |
| Here is a definition from @ref{Calling Functions,,, elisp, The GNU Emacs |
| Lisp Reference Manual}, using the @code{@@defun} command. The name of the |
| function, @code{apply}, follows immediately after the @code{@@defun} |
| command and it is followed, on the same line, by the parameter list. |
| |
| @quotation |
| @defun apply function @r{&rest} arguments |
| @code{apply} calls @var{function} with @var{arguments}, just |
| like @code{funcall} but with one difference: the last of |
| @var{arguments} is a list of arguments to give to |
| @var{function}, rather than a single argument. We also say |
| that this list is @dfn{appended} to the other arguments. |
| |
| @code{apply} returns the result of calling @var{function}. |
| As with @code{funcall}, @var{function} must either be a Lisp |
| function or a primitive function; special forms and macros |
| do not make sense in @code{apply}. |
| |
| @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 |
| |
| (apply 'append '((a b c) nil (x y z) nil)) |
| @result{} (a b c x y z) |
| @end example |
| |
| An interesting example of using @code{apply} is found in the description |
| of @code{mapcar}. |
| @end defun |
| @end quotation |
| |
| In the Texinfo source file, this example should look like this: |
| |
| @example |
| @group |
| @@defun apply function @@r@{&rest@} arguments |
| @@code@{apply@} calls @@var@{function@} with |
| @@var@{arguments@}, just like @@code@{funcall@} but with one |
| difference: the last of @@var@{arguments@} is a list of |
| arguments to give to @@var@{function@}, rather than a single |
| argument. We also say that this list is @@dfn@{appended@} |
| to the other arguments. |
| @end group |
| |
| @group |
| @@code@{apply@} returns the result of calling |
| @@var@{function@}. As with @@code@{funcall@}, |
| @@var@{function@} must either be a Lisp function or a |
| primitive function; special forms and macros do not make |
| sense in @@code@{apply@}. |
| @end group |
| |
| @group |
| @@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 |
| |
| (apply 'append '((a b c) nil (x y z) nil)) |
| @@result@{@} (a b c x y z) |
| @@end example |
| @end group |
| |
| @group |
| An interesting example of using @@code@{apply@} is found |
| in the description of @@code@{mapcar@}. |
| @@end defun |
| @end group |
| @end example |
| |
| @noindent |
| In this manual, this function is listed in the Command Index under |
| @code{apply}. |
| |
| |
| @node Internationalization |
| @nodedescription Supporting languages other than English. |
| @chapter Internationalization |
| |
| @cindex Internationalization |
| Many Texinfo manuals are written in English because it is often used as |
| a common language in computer engineering in general, and in free software |
| projects in particular. Texinfo, however, aims to support writing in any |
| language. This area still needs work for @TeX{} to be able to support |
| any language. More generally translations for strings output in documents are |
| missing for many languages and conventions for installation of manuals and |
| cross-references in multilingual environments are still unclear. (If you are |
| the one helping to translate the fixed strings written to documents, |
| @pxref{Internationalization of Document Strings}.) |
| |
| @cindex Locale, declaring |
| The current document locale is mainly determined by the main language and |
| optional country code, set by @code{@@documentlanguage}. The document |
| @dfn{script} (also called alphabet) is set by @code{@@documentscript}. |
| For example the Serbian language is generally written in the Cyrillic alphabet, |
| but can also be written in the Latin alphabet. Lastly language variants that |
| cannot be specified with the country code are set with |
| @code{@@documentlanguagevariant}. These variants may correspond to dialects or |
| specific orthographies, among others. @code{@@documentlanguagevariant} should |
| rarely be useful for technical documentation, but is needed in Texinfo to make |
| sure that all the languages can be specified. |
| |
| For a list of the various accented and special characters that Texinfo |
| supports via @@-commands, see @ref{Inserting Accents}. |
| |
| |
| @node Setting the language |
| @nodedescription Declaring the current language. |
| @section Setting the language |
| @c old names |
| @anchor{documentlanguage} |
| @anchor{@code{@@documentlanguage}} |
| |
| @findex documentlanguage |
| @cindex Language, declaring |
| @cindex Document language, declaring |
| |
| The @code{@@documentlanguage} command declares the current document |
| main language. Write it on a line by itself, near the beginning of the file. |
| |
| @example |
| @@documentlanguage @var{ll}[_@var{CC}] |
| @end example |
| |
| Include a two-letter (or three-letter) ISO@tie{}639 language code |
| (@var{ll}) following |
| the command name, optionally followed by an underscore and two-letter |
| ISO@tie{}3166 country code (@var{CC}). If you have a |
| multilingual document, the intent is to be able to use this command |
| multiple times, to declare each language change. |
| |
| As with GNU Gettext (@pxref{Top,,, gettext, Gettext}), if the country |
| code is omitted, the main dialect is assumed where possible. For |
| example, @code{de} is equivalent to @code{de_DE} (German as spoken in |
| Germany). |
| |
| The @code{@@documentlanguagevariant} command declares additional language |
| variants on top of the main language (and optional country code). A list of |
| variants can be specified. Write it on a line by itself, after |
| @code{@@documentlanguage}. |
| |
| @findex documentlanguagevariant |
| @cindex Language variants, declaring |
| |
| @example |
| @@documentlanguagevariant [@var{variant1}][, @var{variant2}][, @dots{}] |
| @end example |
| |
| Include variants (@var{variant1}, optionally @var{variant2}, @dots{}) |
| registered in the IANA language subtags registry, separated by commas, |
| following the command name. An empty argument unsets the language variants. |
| Language variants should rarely be needed. Their support also requires |
| associated translations, therefore specifying variants will not often have |
| a practical effect. |
| |
| @findex documentscript |
| @cindex Language alphabet, declaring |
| @cindex Language script, declaring |
| @cindex Document language script, declaring |
| |
| The @code{@@documentscript} command sets an alternative script. Do not set the |
| script if the usual script for the language is used. Write it on a line by |
| itself, after @code{@@documentlanguage}. |
| |
| @example |
| @@documentscript [@var{script}] |
| @end example |
| |
| Include a script name, either a four letter ISO@tie{}15924 script code name, |
| such as @samp{Latn} or a well-known alias, such as @samp{latin} or |
| @samp{cyrillic} following the command name. An empty argument unsets the |
| script. |
| |
| Setting @code{@@documentlanguage} unsets both language variants |
| and script. |
| |
| @cindex Document strings, translation of |
| These commands change the translation of various @dfn{document strings} |
| such as ``see'' in cross-references (@pxref{Cross References}), |
| ``Function'' in defuns (@pxref{Definition Commands}), and so on. |
| Optionally, @code{@@documentlanguage} and @code{@@documentscript} may also |
| affect how @command{texi2any} sorts indices (@pxref{Global Customization |
| Variables}, under @code{DOCUMENTLANGUAGE_COLLATION}). If the document language |
| is not specified, the default English document strings are output as they are. |
| |
| Note that in Info output, some strings, such as ``Node:'', ``Next:'', |
| ``Menu:'', etc., are keywords and so are not translated. |
| |
| In DocBook and HTML, the language at the end of the preamble set by |
| these commands determines the language specified in output file headers. |
| In DocBook output these commands also set or reset the language for |
| following sections. |
| |
| For @LaTeX{}, these commands cause code to load the @samp{babel} package |
| to be output in the preamble, and @code{\selectlanguage} to be output. |
| |
| @cindex @file{txi-@var{locale}.tex} |
| For @TeX{}, these commands cause a file @file{txi-@var{locale}.tex} to |
| be read (if it exists). If @code{@@documentlanguage} argument |
| contains the optional @samp{_@var{CC}} suffix, this is tried first. |
| For example, with @code{@@documentlanguage de_DE}, @TeX{} first looks |
| for @file{txi-de_DE.tex}, then @file{txi-de.tex}. |
| |
| Such a @file{txi-*} file is intended to redefine the various English |
| words used in @TeX{} output, such as `Chapter', `See', and so on. We |
| are aware that individual words like these cannot always be translated |
| in isolation, and that a very different strategy would be required for |
| ideographic (among other) scripts. Help in improving Texinfo's |
| language support is welcome. |
| |
| @cindex Hyphenation patterns, language-dependent |
| @code{@@documentlanguage} and @code{@@documentscript} also change @TeX{}'s |
| current hyphenation patterns, if the @TeX{} program being run has the necessary |
| support included. This will generally not be the case for @command{tex} |
| itself, but will usually be the case for up-to-date distributions of |
| the extended @TeX{} programs @command{etex} (DVI output) and |
| @command{pdftex} (PDF output). @command{texi2dvi} will use the |
| extended @TeX{}s if they are available (@pxref{Format with |
| @command{texi2dvi}}). |
| |
| @cindex ISO 639 language codes |
| @cindex ISO 3166 country codes |
| @cindex Language codes |
| @cindex Country codes |
| @cindex IANA language subtag registry |
| @cindex Language variants |
| @cindex Language script codes |
| @cindex ISO 15924 script codes |
| We use the IANA language subtag registry |
| @url{https://www.iana.org/assignments/language-subtag-registry} to get |
| the up-to-date list of ISO@tie{}639 languages, ISO@tie{}3166 country codes, |
| ISO@tie{}15924 script code names and language variants names. |
| |
| |
| @node @code{@@documentencoding} |
| @nodedescription Declaring the input encoding. |
| @section @code{@@documentencoding @var{enc}}: Set Input Encoding |
| |
| @anchor{documentencoding}@c old name |
| @findex documentencoding |
| @cindex Encoding, declaring |
| @cindex Input encoding, declaring |
| @cindex Character set, declaring |
| @cindex Document input encoding |
| |
| By default, the input and output document encoding are assumed |
| to be UTF-8, the vast global character encoding, expressed in 8-bit bytes. |
| UTF-8 is compatible with 7-bit ASCII. It is recommended to use UTF-8 |
| encoding for Texinfo manuals. |
| |
| The @code{@@documentencoding} command declares the input document encoding, |
| and also affects the encoding of the output. Write it on a line by itself, |
| with a valid encoding specification following, near the beginning of the file |
| if your document encoding is not the default encoding. |
| |
| @example |
| @@documentencoding @var{enc} |
| @end example |
| |
| UTF-8 should always be the best choice for the encoding. |
| Texinfo still supports additional encodings, mainly for compatibility with |
| older manuals@footnote{@command{texi2any} supports more encodings for Texinfo |
| manuals, potentially all the encodings supported by both Perl and iconv |
| (@pxref{Generic Charset Conversion,,, libc, The GNU C Library}). |
| The support in output formats may be lacking, however, especially for @LaTeX{} |
| output.}: |
| |
| @table @code |
| @item US-ASCII |
| Character encoding based on the English alphabet. |
| |
| @cindex Euro symbol, and encodings |
| @item ISO-8859-1 |
| @itemx ISO-8859-15 |
| @itemx ISO-8859-2 |
| These specify the pre-UTF-8 standard encodings for Western European |
| (the first two) and Eastern European languages (the third), respectively. |
| ISO 8859-15 replaces some little-used characters from 8859-1 (e.g., |
| precomposed fractions) with more commonly needed ones, such as the |
| Euro symbol (@euro{}). |
| |
| A full description of the encodings is beyond our scope here; |
| one useful reference is @uref{http://czyborra.com/charsets/iso8859.html}. |
| |
| @item koi8-r |
| This was a commonly used encoding for the Russian language before UTF-8. |
| |
| @item koi8-u |
| This was a commonly used encoding for the Ukrainian language before UTF-8. |
| |
| @end table |
| |
| @cindex Local Variables section, for encoding |
| @cindex Info output, and encoding |
| In Info output, a so-called `Local Variables' section (@pxref{File |
| Variables,,, emacs, The GNU Emacs Manual}) is output including |
| the output encoding. This allows Info readers to set the encoding |
| appropriately. It looks like this: |
| |
| @example |
| Local Variables: |
| coding: UTF-8 |
| End: |
| @end example |
| |
| By default, for Info and plain text output, @command{texi2any} outputs |
| accent constructs and special characters (such as @code{@@'e}) |
| as the actual UTF-8 sequence or 8-bit character in the output |
| encoding where possible. If this is not possible, or if the option |
| @option{--disable-encoding} is given, an ASCII transliteration is |
| used instead. |
| |
| @cindex HTML output @subentry encodings |
| @cindex @code{http-equiv}, and charset specification |
| @cindex @code{<meta>} HTML tag, and charset specification |
| In HTML output, a @samp{<meta>} tag is output, in the @samp{<head>} |
| section of the HTML, that specifies the output encoding. Web servers and |
| browsers cooperate to use this information so the correct encoding is |
| used to display the page, if supported by the system. That looks like |
| this: |
| |
| @example |
| <meta http-equiv="Content-Type" content="text/html; |
| charset=utf-8"> |
| @end example |
| |
| In HTML and @LaTeX{} output, if @code{OUTPUT_CHARACTERS} is set |
| (@pxref{Customization Variables for Multiple Formats}), accent constructs and |
| special characters, such as @code{@@'e} or @code{``}, are output as the actual |
| UTF-8 sequence or 8-bit character in the output encoding where possible. |
| Otherwise, HTML entities are used for those characters in HTML, and @LaTeX{} |
| macros are used in @LaTeX{}. |
| |
| In DocBook output, if the encoding is different from UTF-8, |
| an @code{encoding} attribute is added to the XML declaration. If |
| @code{OUTPUT_CHARACTERS} is set (@pxref{Customization Variables for Multiple |
| Formats}), accent constructs such as @code{@@'e} are output as the actual 8-bit |
| or UTF-8 character in the output encoding where possible. Otherwise XML |
| entities are used for those constructs. |
| |
| @cindex Computer Modern fonts |
| 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 |
| @file{texinfo.tex}, and it's not feasible to duplicate or incorporate |
| all that effort. |
| |
| In @LaTeX{} output, code loading the @samp{inputenc} package is output |
| based on the encoding. This, by itself, does not ensures that all |
| the characters from the input document can be subsequently output. |
| The fonts used in the default case should cover the specific Texinfo |
| glyphs, but not all the possible encoded characters. You may need to |
| load different fonts in the preamble and use |
| @code{\DeclareUnicodeCharacter} with a UTF-8 encoding. For example: |
| @example |
| @@latex |
| \DeclareUnicodeCharacter@{017B@}@{\.Z@} |
| @@end latex |
| @end example |
| |
| Cross-references between Info files in different character encodings |
| with non-ASCII characters in node names fail. We strongly recommend |
| using UTF-8 only as the encoding for manuals with non-ASCII characters |
| in the destinations of cross-references. |
| |
| |
| @node Conditionals |
| @nodedescription Specifying text for only some output cases. |
| @chapter Conditionally Visible Text |
| @cindex Conditionally visible text |
| @cindex Text, conditionally visible |
| @cindex Visibility of conditional text |
| @cindex If text conditionally visible |
| |
| The @dfn{conditional commands} allow you to use different text for |
| different output formats, or for general conditions that you define. |
| For example, you can use them to specify different text for the |
| printed manual and the Info output. |
| |
| The conditional commands comprise the following categories. |
| |
| @itemize @bullet |
| @item |
| Commands specific to an output format (Info, @TeX{}, HTML, @dots{}). |
| |
| @item |
| Commands specific to any output format @emph{excluding} a given |
| one (e.g., not Info, not @TeX{}, @dots{}). |
| |
| @item |
| `Raw' formatter text for any output format, passed straight |
| through with minimal (but not zero) interpretation of @@-commands. |
| |
| @item |
| Format-independent variable substitutions, and testing if a variable |
| is set or clear. |
| |
| @end itemize |
| |
| |
| @node Conditional Commands |
| @nodedescription Text for a given format. |
| @section Conditional Commands |
| |
| Texinfo has an @code{@@if@var{format}} environment for each output |
| format, to allow conditional inclusion of text for a particular output |
| format. |
| |
| @findex ifinfo |
| @code{@@ifinfo} begins segments of text that should be ignored when |
| not producing Info output, in particular in printed output. The |
| segment of text appears only in the Info file and, for historical |
| compatibility, the plain text output. |
| |
| @findex ifdocbook |
| @findex ifepub |
| @findex ifhtml |
| @findex iflatex |
| @findex ifplaintext |
| @findex iftex |
| The environments for the other formats are analogous: |
| |
| @table @code |
| @item @@ifdocbook @dots{} @@end ifdocbook |
| Text to appear only in the DocBook output. |
| |
| @item @@ifepub @dots{} @@end ifepub |
| Text to appear only in the EPUB output. |
| |
| @item @@ifhtml @dots{} @@end ifhtml |
| Text to appear only in the HTML and EPUB output. |
| |
| @item @@iflatex @dots{} @@end iflatex |
| Text to appear only in the @LaTeX{} output. |
| |
| @item @@ifplaintext @dots{} @@end ifplaintext |
| Text to appear only in the plain text output. |
| |
| @item @@iftex @dots{} @@end iftex |
| Text to appear only in the printed manual. |
| @end table |
| |
| The @code{@@if@dots{}} and @code{@@end if@dots{}} commands must appear |
| on lines by themselves in your source file. The newlines following |
| the commands are (more or less) treated as whitespace, so that the |
| conditional text is flowed normally into a surrounding paragraph. |
| |
| The @code{@@if@dots{}} constructs are intended to conditionalize |
| normal Texinfo source; @pxref{Raw Formatter Commands}, for using |
| underlying format commands directly. |
| |
| Here is an example showing all these conditionals: |
| |
| @example |
| @@iftex |
| This text will appear only in the printed manual. |
| @@end iftex |
| @@ifinfo |
| However, this text will appear only in Info and plain text. |
| @@end ifinfo |
| @@ifhtml |
| And this text will only appear in HTML (and in EPUB). |
| @@end ifhtml |
| @@iflatex |
| Moreover, this text will only appear in @@LaTeX@{@}. |
| @@end iflatex |
| @@ifplaintext |
| Whereas this text will only appear in plain text. |
| @@end ifplaintext |
| @@ifdocbook |
| Nevertheless, this will only appear in DocBook. |
| @@end ifdocbook |
| @end example |
| |
| @noindent |
| The preceding example produces the following line: |
| |
| @iftex |
| This text will appear only in the printed manual. |
| @end iftex |
| @ifinfo |
| However, this text will appear only in Info and plain text. |
| @end ifinfo |
| @ifhtml |
| And this text will only appear in HTML (and in EPUB). |
| @end ifhtml |
| @iflatex |
| Moreover, this text will only appear in @LaTeX{}. |
| @end iflatex |
| @ifplaintext |
| Whereas this text will only appear in plain text. |
| @end ifplaintext |
| @ifdocbook |
| Nevertheless, this will only appear in DocBook. |
| @end ifdocbook |
| |
| @noindent |
| Notice that you only see one of the input lines, depending on which |
| version of the manual you are reading. |
| |
| @findex errormsg |
| In complex documents, you may want Texinfo to issue an error message |
| in some conditionals that should not ever be processed. The |
| @code{@@errormsg@{@var{text}@}} command will do this; it takes one |
| argument, the text of the error message. |
| |
| We mention @code{@@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. |
| @xref{External Macro Processors}, for a caveat regarding the line |
| numbers which @code{@@errormsg} emits in @TeX{}. |
| |
| @findex ifxml |
| Conditionals for removed formats are still recognized for a while before being |
| removed. The associated text is always ignored. For example, the |
| @code{@@ifxml} environment begins segments of text that are ignored in all the |
| output formats. This command will stop being recognized in a future release. |
| |
| |
| @node Conditional Not Commands |
| @nodedescription Text for any format other than a given one. |
| @section Conditional Not Commands |
| @findex ifnotdocbook |
| @findex ifnotepub |
| @findex ifnothtml |
| @findex ifnotinfo |
| @findex ifnotlatex |
| @findex ifnotplaintext |
| @findex ifnottex |
| |
| You can specify text to be included in any output format @emph{other} |
| than a given one with the @code{@@ifnot@dots{}} environments: |
| |
| @example |
| @@ifnotdocbook @dots{} @@end ifnotdocbook |
| @@ifnotepub @dots{} @@end ifnotepub |
| @@ifnothtml @dots{} @@end ifnothtml |
| @@ifnotinfo @dots{} @@end ifnotinfo |
| @@ifnotlatex @dots{} @@end ifnotlatex |
| @@ifnotplaintext @dots{} @@end ifnotplaintext |
| @@ifnottex @dots{} @@end ifnottex |
| @end example |
| |
| @noindent |
| The @code{@@ifnot@dots{}} command and the @code{@@end} command must |
| appear on lines by themselves in your actual source file. |
| |
| If the output file is being made in the given format, the |
| region is @emph{ignored}. Otherwise, it is included. |
| |
| There is one exception (for historical compatibility): |
| @code{@@ifnotinfo} text is omitted for both Info and plain text |
| output, not just Info. To specify text which appears only in Info and |
| not in plain text, use @code{@@ifnotplaintext}, like this: |
| |
| @example |
| @@ifinfo |
| @@ifnotplaintext |
| This will be in Info, but not plain text. |
| @@end ifnotplaintext |
| @@end ifinfo |
| @end example |
| |
| The regions delimited by these commands are ordinary Texinfo source as |
| with @code{@@iftex}, not raw formatter source as with @code{@@tex} |
| (@pxref{Raw Formatter Commands}). |
| |
| @findex ifnotxml |
| Conditionals for removed formats, such as @code{@@ifnotxml} are |
| never omitted and stop being recognized after a while. |
| |
| |
| @node Raw Formatter Commands |
| @nodedescription Using raw formatter commands. |
| @section Raw Formatter Commands |
| @cindex Raw formatter commands |
| |
| @cindex @TeX{} commands, using ordinary |
| @cindex Ordinary @TeX{} commands, using |
| @cindex Commands using raw @TeX{} |
| @cindex Plain @TeX{} |
| |
| The @code{@@if@dots{}} conditionals just described must be used only |
| with normal Texinfo source. For instance, most features of plain |
| @TeX{} will not work within @code{@@iftex}. The purpose of |
| @code{@@if@dots{}} is to provide conditional processing for Texinfo |
| source, not provide access to underlying formatting features. For |
| that, Texinfo provides so-called @dfn{raw formatter commands}. They |
| should only be used when truly required (most documents do not need |
| them). |
| |
| @findex tex |
| @cindex Category codes, of plain @TeX{} |
| The first raw formatter command is @code{@@tex}. You can enter plain |
| @TeX{} completely, and use @samp{\} in the @TeX{} commands, by |
| delineating a region with the @code{@@tex} and @code{@@end tex} |
| commands. All plain @TeX{} commands and category codes are restored |
| within a @code{@@tex} region. The sole exception is that the |
| @code{@@} character still introduces a command, so that @code{@@end |
| tex} can be recognized. Texinfo processors will not output material |
| in such a region unless @TeX{} output is being produced. |
| |
| @findex \gdef @r{within @code{@@tex}} |
| @findex \globaldefs @r{within @code{@@tex}} |
| In complex cases, you may wish to define new @TeX{} macros within |
| @code{@@tex}. You must use @code{\gdef} to do this, not @code{\def}, |
| because @code{@@tex} regions are processed in a @TeX{} group. If you |
| need to make several definitions, you may wish to set |
| @code{\globaldefs=1} (its value will be restored to zero as usual when |
| the group ends at @code{@@end tex}, so it won't cause problems with |
| the rest of the document). |
| |
| @cindex Equation, displayed, in plain @TeX{} |
| @cindex Displayed equation, in plain @TeX{} |
| As an example, here is a displayed equation written in plain @TeX{}: |
| |
| @example |
| @@tex |
| $$ \chi^2 = \sum_@{i=1@}^N |
| \left (y_i - (a + b x_i) |
| \over \sigma_i\right)^2 $$ |
| @@end tex |
| @end example |
| |
| @noindent |
| The output of this example will appear only in a printed manual. If |
| you are reading this in a format not generated by @TeX{}, you will not |
| see the equation that appears in the printed manual. |
| |
| @tex |
| $$ \chi^2 = \sum_{i=1}^N |
| \left(y_i - (a + b x_i) |
| \over \sigma_i\right)^2 $$ |
| @end tex |
| |
| @cindex HTML, including raw |
| @cindex EPUB, including raw |
| @findex html |
| @cindex DocBook, including raw |
| @findex docbook |
| @cindex @LaTeX{}, including raw |
| @findex latex |
| Analogously, you can use @code{@@html @dots{} @@end html} for a region of |
| raw HTML (or raw EPUB), @code{@@docbook @dots{} @@end docbook} for a |
| region of raw DocBook, @code{@@latex @dots{} @@end latex} for a |
| region of raw @LaTeX{}. |
| |
| The behavior of newlines in raw regions is unspecified. |
| |
| In all cases, in raw processing, @code{@@} 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 @code{@@kbdinputstyle} command inside a raw region is undefined. |
| The remedy is simple: don't do that. |
| |
| Most of the output generated for EPUB is actually HTML, therefore there is no |
| similar command for raw EPUB. In @code{@@documentinfo}, you can provide EPUB |
| metadata for the whole EPUB document. When outputting EPUB, @code{@@html} in |
| @code{@@documentinfo} is not output as HTML metadata in HTML files output as |
| part of conversion to EPUB, but as EPUB specific metadata. |
| |
| In the following example, the EPUB markup in the first @code{@@html} block is |
| output as EPUB specific metadata when outputting EPUB. In that situation, it |
| is not possible to add metadata to HTML output as part of the conversion to |
| EPUB. When outputting HTML, the second @code{@@html} block is added to the |
| HTML header instead: |
| |
| @example |
| @@documentinfo |
| @@ifepub |
| @@html |
| <dc:creator id="creator">Some Body</dc:creator> |
| <meta refines="#creator" property="role" scheme="marc:relators" |
| id="role">aut</meta> |
| @@end html |
| @@end ifepub |
| @@ifnotepub |
| @@html |
| <meta name="creator" content="Some Body" /> |
| @@end html |
| @@end ifnotepub |
| @@end documentinfo |
| @end example |
| |
| @findex xml |
| Removed formats raw regions commands such as @code{@@xml} are recognized |
| for a while. Removed formats raw regions are ignored. |
| |
| |
| @node Inline Conditionals |
| @nodedescription Brace-delimited conditional text. |
| @section Inline Conditionals: @code{@@inline}, @code{@@inlineifelse}, @code{@@inlineraw} |
| @findex inlinefmt |
| @findex inlinefmtifelse |
| @findex inlineraw |
| @cindex Inline conditionals |
| @cindex Conditional commands, inline |
| @cindex Brace-delimited conditional text |
| @cindex Newlines, avoiding in conditionals |
| @cindex Whitespace, controlling in conditionals |
| |
| Texinfo provides a set of conditional commands with arguments given |
| within braces: |
| |
| @table @code |
| @item @@inlinefmt@{@var{format}, @var{text}@} |
| Process the Texinfo @var{text} if @var{format} output is being |
| generated. |
| |
| @item @@inlinefmtifelse@{@var{format}, @var{then-text}, @var{else-text}@} |
| Process the Texinfo @var{then-text} if @var{format} output is being |
| generated; otherwise, process @var{else-text}. |
| |
| @item @@inlineraw@{@var{format}, @var{text}@} |
| Similar, but for raw @var{text} (@pxref{Raw Formatter Commands}). |
| @end table |
| |
| The supported @var{format} names are: |
| |
| @example |
| docbook epub html info latex plaintext tex |
| @end example |
| |
| For example, |
| |
| @example |
| @@inlinefmt@{html, @@emph@{HTML-only text@}@} |
| @end example |
| |
| @noindent is nearly equivalent to |
| |
| @example |
| @@ifhtml |
| @@emph@{HTML-only text@} |
| @@end ifhtml |
| @end example |
| |
| @noindent except that no whitespace is added, as happens in the latter |
| (environment) case. |
| |
| In these commands, whitespace is ignored after the comma separating |
| the arguments, as usual, but is @emph{not} ignored at the end of |
| @var{text}. |
| |
| To insert a literal at sign, left brace, or right brace in one of the |
| arguments, you must use the alphabetic commands @code{@@atchar@{@}} |
| (@pxref{Inserting an Atsign}), and @code{@@lbracechar@{@}} or |
| @code{@@rbracechar@{@}} (@pxref{Inserting Braces}), or the parsing |
| will become confused. |
| |
| With @code{@@inlinefmtifelse}, it is also necessary to use |
| @code{@@comma@{@}} to avoid mistaking a @samp{,} in the text for the |
| delimiter. With @code{@@inlinefmt} and @code{@@inlineraw}, |
| @code{@@comma@{@}} is not required (though it's fine to use it), since |
| these commands always have exactly two arguments. |
| |
| For @TeX{}, the processed @var{text} cannot contain newline-delimited |
| commands. Text to be ignored (i.e., for non-@TeX{}) can, though. |
| |
| Two other @code{@@inline...} conditionals complement the |
| @code{@@ifset} and @code{@@ifclear} commands; see the next section. |
| |
| |
| @node @code{@@set @@clear @@value} |
| @nodedescription Variable tests and substitutions. |
| @section Flags: @code{@@set}, @code{@@clear}, conditionals, and @code{@@value} |
| |
| @anchor{set clear value}@c old name |
| You can direct the Texinfo formatting commands to format or ignore parts |
| of a Texinfo file with the @code{@@set}, @code{@@clear}, @code{@@ifset}, |
| and @code{@@ifclear} commands. Here is a summary: |
| |
| @table @code |
| @item @@set @var{flag} [@var{value}] |
| Set the variable @var{flag}, to the optional @var{value} if specified. |
| |
| @item @@clear @var{flag} |
| Undefine the variable @var{flag}, whether or not it was previously defined. |
| |
| @item @@ifset @var{flag} |
| If @var{flag} is set, text through the next @code{@@end ifset} command |
| is formatted. If @var{flag} is clear, text through the following |
| @code{@@end ifset} command is ignored. |
| |
| @item @@inlineifset@{@var{flag}, @var{text}@} |
| Brace-delimited version of @code{@@ifset}. |
| |
| @item @@ifclear @var{flag} |
| If @var{flag} is set, text through the next @code{@@end ifclear} command |
| is ignored. If @var{flag} is clear, text through the following |
| @code{@@end ifclear} command is formatted. |
| |
| @item @@inlineifclear@{@var{flag}, @var{text}@} |
| Brace-delimited version of @code{@@ifclear}. |
| |
| @end table |
| |
| |
| @node @code{@@set @@value} |
| @nodedescription Expand a flag variable to a string. |
| @subsection @code{@@set} and @code{@@value} |
| |
| @anchor{set value}@c old name |
| @findex set |
| @findex value |
| @findex clear |
| |
| You use the @code{@@set} command to specify a value for a flag, which |
| is later expanded by the @code{@@value} command. |
| |
| A @dfn{flag} (aka @dfn{variable}) name is an identifier starting with |
| an alphanumeric, @samp{-}, or @samp{_}. Subsequent characters, if |
| any, may not be whitespace, @samp{@@}, braces, angle brackets, or any |
| of @samp{~`^+|}; other characters, such as @samp{%}, may work. |
| However, it is best to use only letters and numerals in a flag name, |
| not @samp{-} or @samp{_} or others---they will work in some contexts, |
| but not all, due to limitations in @TeX{}. |
| |
| The value is the remainder of the input line, and can contain anything. |
| |
| @ignore |
| However, unlike most other commands which take the rest of the line as |
| a value, @code{@@set} need not appear at the beginning of a line. |
| @end ignore |
| |
| Write the @code{@@set} command like this: |
| |
| @example |
| @@set foo This is a string. |
| @end example |
| |
| @noindent |
| This sets the value of the flag @code{foo} to ``This is a string.''. |
| |
| The Texinfo processors then replace a @code{@@value@{@var{flag}@}} |
| command with the string to which @var{flag} is set. Thus, when |
| @code{foo} is set as shown above, the Texinfo processors convert this: |
| |
| @example |
| @group |
| @@value@{foo@} |
| @exdent @r{to this:} |
| This is a string. |
| @end group |
| @end example |
| |
| You can write a @code{@@value} command within a paragraph; but you |
| must write a @code{@@set} command on a line of its own. |
| |
| If you write the @code{@@set} command like this: |
| |
| @example |
| @@set foo |
| @end example |
| |
| @noindent |
| without specifying a string, the value of @code{foo} is the empty string. |
| |
| If you clear a previously set flag with @code{@@clear @var{flag}}, a |
| subsequent @code{@@value@{flag@}} command will report an error. |
| |
| For example, if you set @code{foo} as follows: |
| |
| @example |
| @@set howmuch very, very, very |
| @end example |
| |
| @noindent |
| then the processors transform |
| |
| @example |
| @group |
| It is a @@value@{howmuch@} wet day. |
| @exdent @r{into} |
| It is a very, very, very wet day. |
| @end group |
| @end example |
| |
| If you write |
| |
| @example |
| @@clear howmuch |
| @end example |
| |
| @noindent |
| then the processors transform |
| |
| @example |
| @group |
| It is a @@value@{howmuch@} wet day. |
| @exdent @r{into} |
| It is a @{No value for "howmuch"@} wet day. |
| @end group |
| @end example |
| |
| @code{@@value} cannot be reliably used as the argument to an accent |
| command (@pxref{Inserting Accents}). For example, this fails: |
| |
| @c This does not seems to fail with texi2any, but fails with TeX. |
| @example |
| @@set myletter a |
| @@'@@value@{myletter@} @c fails! |
| @end example |
| |
| |
| @node @code{@@ifset @@ifclear} |
| @nodedescription Format a region if a flag is set. |
| @subsection @code{@@ifset} and @code{@@ifclear} |
| |
| @anchor{ifset ifclear}@c old name |
| @findex ifset |
| |
| When a @var{flag} is set, the Texinfo formatting commands format text |
| between subsequent pairs of @code{@@ifset @var{flag}} and @code{@@end |
| ifset} commands. When the @var{flag} is cleared, the Texinfo formatting |
| commands do @emph{not} format the text. @code{@@ifclear} operates |
| analogously. |
| |
| Write the conditionally formatted text between @code{@@ifset @var{flag}} |
| and @code{@@end ifset} commands, like this: |
| |
| @example |
| @group |
| @@ifset @var{flag} |
| @var{conditional-text} |
| @@end ifset |
| @end group |
| @end example |
| |
| For example, you can create one document that has two variants, such as |
| a manual for a `large' and `small' model: |
| |
| @cindex Shrubbery |
| @example |
| 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 |
| |
| Remember to replant promptly @dots{} |
| @end example |
| |
| @noindent |
| In the example, the formatting commands will format the text between |
| @code{@@ifset large} and @code{@@end ifset} because the @code{large} |
| flag is set. |
| |
| When @var{flag} is cleared, the Texinfo formatting commands do |
| @emph{not} format the text between @code{@@ifset @var{flag}} and |
| @code{@@end ifset}; that text is ignored and does not appear in the output. |
| |
| For example, if you clear the flag of the preceding example by writing |
| an @code{@@clear large} command after the @code{@@set large} command |
| (but before the conditional text), then the Texinfo formatting commands |
| ignore the text between the @code{@@ifset large} and @code{@@end ifset} |
| commands. In the formatted output, that text does not appear; you see |
| only the lines that say, ``You can use |
| this machine to dig up shrubs without hurting them. Remember to replant |
| promptly @dots{}''. |
| |
| @findex ifclear |
| If a flag is cleared with a @code{@@clear @var{flag}} command, then |
| the formatting commands format text between subsequent pairs of |
| @code{@@ifclear} and @code{@@end ifclear} commands. But if the flag |
| is set with @code{@@set @var{flag}}, then the formatting commands do |
| @emph{not} format text between an @code{@@ifclear} and an @code{@@end |
| ifclear} command; rather, they ignore that text. An @code{@@ifclear} |
| command looks like this: |
| |
| @example |
| @@ifclear @var{flag} |
| @end example |
| |
| |
| @node @code{@@inlineifset @@inlineifclear} |
| @nodedescription Brace-delimited flag conditionals. |
| @subsection @code{@@inlineifset} and @code{@@inlineifclear} |
| |
| @findex inlineifset |
| @findex inlineifclear |
| @cindex Flag conditionals, brace-delimited |
| @cindex Brace-delimited flag conditionals |
| |
| @code{@@inlineifset} and @code{@@inlineifclear} provide |
| brace-delimited alternatives to the @code{@@ifset} and |
| @code{@@ifclear} forms, similar to the other @code{@@inline...} |
| Commands (@pxref{Inline Conditionals}). The same caveats about |
| argument parsing given there apply here too. |
| |
| @table @code |
| @item @@inlineifset@{@var{var}, @var{text}@} |
| Process the Texinfo @var{text} if the flag @var{var} is defined. |
| |
| @item @@inlineifclear@{@var{var}, @var{text}@} |
| Process the Texinfo @var{text} if the flag @var{var} is not defined. |
| @end table |
| |
| Except for the syntax, their general behavior and purposes is the same |
| as with @code{@@ifset} and @code{@@ifclear}, described in the previous |
| section. |
| |
| |
| @node @code{@@value} Example |
| @nodedescription An easy way to update edition information. |
| @subsection @code{@@value} Example |
| |
| @anchor{value Example}@c old name |
| |
| You can use the @code{@@value} command to minimize the number of |
| places you need to change when you record an update to a manual. |
| @xref{GNU Sample Texts}, for the full text of an example of using this |
| to work with Automake distributions. |
| |
| This example is adapted from @ref{Top,,, make, The GNU Make Manual}. |
| |
| @enumerate |
| @item |
| Set the flags: |
| |
| @example |
| @group |
| @@set EDITION 0.35 Beta |
| @@set VERSION 3.63 Beta |
| @@set UPDATED 14 August 1992 |
| @@set UPDATE-MONTH August 1992 |
| @end group |
| @end example |
| |
| @item |
| Write text for the @code{@@copying} section (@pxref{@code{@@copying}}): |
| |
| @example |
| @group |
| @@copying |
| This is Edition @@value@{EDITION@}, |
| last updated @@value@{UPDATED@}, |
| of @@cite@{The GNU Make Manual@}, |
| for @@code@{make@}, version @@value@{VERSION@}. |
| |
| Copyright @dots{} |
| |
| Permission is granted @dots{} |
| @@end copying |
| @end group |
| @end example |
| |
| @item |
| Write text for the title page, for people reading the printed manual: |
| |
| @example |
| @group |
| @@documentinfo |
| @@title GNU Make |
| @@subtitle A Program for Directing Recompilation |
| @@subtitle Edition @@value@{EDITION@}, @dots{} |
| @@subtitle @@value@{UPDATE-MONTH@} |
| @@end documentinfo |
| @end group |
| @end example |
| |
| @noindent |
| (On a printed cover, a date listing the month and the year looks less |
| fussy than a date listing the day as well as the month and year.) |
| |
| @item |
| Write text for the Top node, for people reading the Info file: |
| |
| @example |
| @group |
| @@ifnottex |
| @@node Top |
| @@top Make |
| |
| This is Edition @@value@{EDITION@}, |
| last updated @@value@{UPDATED@}, |
| of @@cite@{The GNU Make Manual@}, |
| for @@code@{make@}, version @@value@{VERSION@}. |
| @@end ifnottex |
| @end group |
| @end example |
| |
| After you format the manual, the @code{@@value} constructs have been |
| expanded, so the output contains text like this: |
| |
| @example |
| @group |
| This is Edition 0.35 Beta, last updated 14 August 1992, |
| of `The GNU Make Manual', for `make', Version 3.63 Beta. |
| @end group |
| @end example |
| @end enumerate |
| |
| When you update the manual, you change only the values of the flags; you |
| do not need to edit the three sections. |
| |
| |
| @node Testing for Texinfo Commands |
| @nodedescription Testing if a Texinfo command is available. |
| @section Testing for Texinfo Commands: @code{@@ifcommanddefined}, @code{@@ifcommandnotdefined} |
| |
| @cindex Testing for Texinfo commands |
| @cindex Checking for Texinfo commands |
| @cindex Texinfo commands, testing for |
| @cindex Commands, testing for Texinfo |
| @cindex Versions of Texinfo, adapting to |
| @cindex Features of Texinfo, adapting to |
| @findex ifcommanddefined |
| @findex ifcommandnotdefined |
| |
| Occasionally, you may want to arrange for your manual to test if a |
| given Texinfo command is available and (presumably) do some sort of |
| fallback formatting if not. There are conditionals |
| @code{@@ifcommanddefined} and @code{@@ifcommandnotdefined} to do this. |
| For example: |
| |
| @example |
| @@ifcommanddefined node |
| Good, @@samp@{@@@@node@} is defined. |
| @@end ifcommanddefined |
| @end example |
| |
| @noindent will output the expected `Good, @samp{@@node} is defined.'. |
| |
| This conditional will also consider any new commands defined by |
| the document via @code{@@macro}, @code{@@alias}, |
| @code{@@definfoenclose}, and @code{@@def@r{(}code@r{)}index} |
| (@pxref{Defining New Texinfo Commands}) to be true. Caveat: the @TeX{} |
| implementation reports internal @TeX{} commands, in addition to all |
| the Texinfo commands, as being ``defined''; the @code{texi2any} |
| implementation is reliable in this regard, however. |
| |
| @pindex @file{NEWS} file for Texinfo |
| You can check the @file{NEWS} file in the Texinfo source distribution |
| and linked from the Texinfo home page |
| (@url{https://www.gnu.org/software/texinfo}) to see when a particular |
| command was added. |
| |
| @vindex txicommandconditionals |
| These command-checking conditionals themselves were added in |
| Texinfo@tie{}5.0, released in 2013---decades after Texinfo's |
| inception. In order to test if they themselves are available, |
| the predefined flag @code{txicommandconditionals} can be tested, like |
| this: |
| |
| @example |
| @@ifset txicommandconditionals |
| @@ifcommandnotdefined foobarnode |
| (Good, @@samp@{@@@@foobarnode@} is not defined.) |
| @@end ifcommandnotdefined |
| @@end ifset |
| @end example |
| |
| Since flags (see the previous section) were added early in the |
| existence of Texinfo, there is no problem with assuming they are |
| available. |
| |
| We recommend avoiding these tests whenever possible---which is usually |
| the case. For many software packages, it is reasonable for all |
| developers to have a given version of Texinfo (or newer) installed, |
| and thus no reason to worry about older versions. (It is |
| straightforward for anyone to download and install the Texinfo source; |
| it does not have any problematic dependencies.) |
| |
| The issue of Texinfo versions does not generally arise for end users. |
| With properly distributed packages, users need not process the Texinfo |
| manual simply to build and install the package; they can use |
| preformatted Info (or other) output files. This is desirable in |
| general, to avoid unnecessary dependencies between packages |
| (@pxref{Releases,,, standards, GNU Coding Standards}). |
| |
| |
| @node Conditional Nesting |
| @nodedescription Using conditionals inside conditionals. |
| @section Conditional Nesting |
| @cindex Conditionals, nested |
| @cindex Nesting conditionals |
| |
| Texinfo requires that for a failing conditional, the |
| ignored text must be properly nested with respect to that failing |
| conditional. Here's an example: |
| |
| @example |
| @@ifset somevar |
| @@ifset anothervar |
| Both somevar and anothervar are set. |
| @@end ifset |
| @@ifclear anothervar |
| Somevar is set, anothervar is not. |
| @@end ifclear |
| @@end ifset |
| @end example |
| |
| If @samp{somevar} is not set, the whole block is skipped. |
| |
| To allow the processors to reliably determine which commands to consider |
| for nesting purposes, all conditional commands must be on lines |
| by themselves, with no text (even spaces) before or after. |
| |
| |
| @ignore @c not sure what this is about |
| |
| Unfortunately, it's not always feasible to check that |
| @emph{all} conditionals are properly nested, because then the |
| processors could have to fully interpret the ignored text, which |
| defeats the purpose of the command. Here's an example illustrating |
| these rules: |
| |
| @example |
| @@ifset a |
| @@ifset b |
| @@ifclear ok - ok, ignored |
| @@end junky - ok, ignored |
| @@end ifset |
| @@c WRONG - missing @@end ifset. |
| @end example |
| |
| @end ignore |
| |
| |
| |
| @node Defining New Texinfo Commands |
| @nodedescription User-defined macros and aliases. |
| @chapter Defining New Texinfo Commands |
| |
| @cindex Macros |
| @cindex Defining new Texinfo commands |
| @cindex New Texinfo commands, defining |
| @cindex Texinfo commands, defining new |
| @cindex User-defined Texinfo commands |
| |
| Texinfo provides several ways to define new commands (in all cases, |
| it's not recommended to try redefining existing commands): |
| |
| @itemize @bullet |
| @item |
| A Texinfo @dfn{macro} allows you to define a new Texinfo command as any |
| sequence of text and/or existing commands (including other macros). The |
| macro can have any number of @dfn{parameters}---text you supply each |
| time you use the macro. |
| |
| Incidentally, these macros have nothing to do with the @code{@@defmac} |
| command, which is for documenting macros in the subject area of the |
| manual (@pxref{Def Cmd Template}). |
| |
| @item |
| @samp{@@linemacro} allows you to define a macro whose arguments |
| extend to the end of the line and are separated by spaces. |
| |
| @item |
| @samp{@@alias} defines a new name for an existing command. |
| |
| @item |
| @samp{@@definfoenclose} allows you to define new commands with |
| customized output for some non-printed output formats. This command |
| is deprecated. |
| |
| @end itemize |
| |
| Most generally of all (not just for defining new commands), it is |
| possible to invoke any external macro processor and have Texinfo |
| recognize so-called @code{#line} directives for error reporting. |
| |
| If you want to do simple text substitution, @code{@@set} and |
| @code{@@value} is the simplest approach (@pxref{@code{@@set @@clear |
| @@value}}). |
| |
| |
| @node Defining Macros |
| @nodedescription Defining and undefining new commands. |
| @section Defining Macros |
| @cindex Defining macros |
| @cindex Macro definitions, Texinfo |
| |
| @findex macro |
| You use the Texinfo @code{@@macro} command to define a macro, like this: |
| |
| @example |
| @@macro @var{macroname}@{@var{param1}, @var{param2}, @dots{}@} |
| @var{text} @dots{} \@var{param1}\ @dots{} |
| @@end macro |
| @end example |
| |
| The @dfn{parameters} @var{param1}, @var{param2}, @dots{} correspond to |
| arguments supplied when the macro is subsequently used in the document |
| (described in the next section). |
| |
| @cindex Macro names, valid characters in |
| @cindex Names of macros, valid characters of |
| In principle, @var{macroname} should consist of alphanumerics, |
| and (except as the first character) @samp{-}. The @samp{_} character |
| is excluded so that macros can be called inside @code{@@math} without |
| a following space (@pxref{Inserting Math}). However, for a macro to |
| work consistently with @TeX{}, @var{macroname} must consist entirely |
| of letters: no digits, hyphens, or other special characters. |
| So, we recommend using only letters. Texinfo commands should not |
| be redefined as macros. |
| |
| If a macro needs no parameters, you can define it either with an empty |
| list (@samp{@@macro foo @{@}}) or with no braces at all (@samp{@@macro |
| foo}). |
| |
| @cindex Body of a macro |
| The definition or @dfn{body} of the macro can contain most Texinfo |
| commands, including macro invocations. However, a macro definition |
| that defines another macro does not work in @TeX{} due to limitations |
| in the design of @code{@@macro}. |
| |
| @cindex Parameters to macros |
| In the macro body, instances of a parameter name surrounded by |
| backslashes, as in @samp{\@var{param1}\} in the example above, are |
| replaced by the corresponding argument from the macro invocation. You |
| can use parameter names any number of times in the body, including zero. |
| |
| @cindex Backslash in macros |
| To get a single @samp{\} in the macro expansion, use @samp{\\}. Any |
| other use of @samp{\} in the body yields a warning. |
| |
| @cindex Spaces in macros |
| @cindex Whitespace in macros |
| The newline characters after the @code{@@macro} line and before the |
| @code{@@end macro} line are ignored, that is, not included in the |
| macro body. All other whitespace is treated according to the usual |
| Texinfo rules. |
| |
| @cindex Recursive macro invocations |
| @findex rmacro |
| To allow a macro to be used recursively, that is, in an argument to a |
| call to itself, you must define it with @samp{@@rmacro}, like this: |
| |
| @example |
| @@rmacro rmac @{arg@} |
| a\arg\b |
| @@end rmacro |
| @dots{} |
| @@rmac@{1@@rmac@{text@}2@} |
| @end example |
| |
| This produces the output `a1atextb2b'. With @samp{@@macro} instead of |
| @samp{@@rmacro}, an error message is given. |
| |
| @findex unmacro |
| @cindex Macros, undefining |
| @cindex Undefining macros |
| You can undefine a macro @var{foo} with @code{@@unmacro @var{foo}}. |
| It is not an error to undefine a macro that is already undefined. |
| For example: |
| |
| @example |
| @@unmacro foo |
| @end example |
| |
| |
| @node Invoking Macros |
| @nodedescription Using a macro, once you've defined it. |
| @section Invoking Macros |
| |
| @cindex Invoking macros |
| @cindex Expanding macros |
| @cindex Running macros |
| @cindex Macro invocation |
| |
| After a macro is defined (see the previous section), you can |
| @dfn{invoke} (use) it in your document like this: |
| |
| @example |
| @@@var{macroname} @{@var{arg1}, @var{arg2}, @dots{}@} |
| @end example |
| |
| @noindent and the result will be more or less as if you typed the body of |
| @var{macroname} at that spot. For example: |
| |
| @example |
| @@macro foo @{p, q@} |
| Together: \p\ & \q\. |
| @@end macro |
| @@foo@{a, b@} |
| @end example |
| |
| @noindent produces: |
| |
| @display |
| Together: a & b. |
| @end display |
| |
| @cindex Backslash, and macros |
| Thus, the arguments and parameters are separated by commas and |
| delimited by braces; any whitespace after (but not before) a comma is |
| ignored. The braces are required in the invocation even when the |
| macro takes no arguments, consistent with other Texinfo commands. For |
| example: |
| |
| @example |
| @@macro argless @{@} |
| No arguments here. |
| @@end macro |
| @@argless@{@} |
| @end example |
| |
| @noindent produces: |
| |
| @display |
| No arguments here. |
| @end display |
| |
| @cindex Comma, in macro arguments |
| Passing macro arguments containing commas requires care, since |
| commas also separate the arguments. To include a comma character in |
| an argument, the most reliable method is to use the @code{@@comma@{@}} |
| command. Another method is to surround the argument with |
| @samp{@@asis@{@dots{}@}}. For @code{texi2any}, you can also prepend a |
| backslash character, as in @samp{\,}, but this does not work with @TeX{}. |
| |
| @cindex Automatic quoting of commas for some macros |
| @cindex Quoting, automatic for some macros |
| It's not always necessary to worry about commas. To facilitate use of |
| macros, two rules for @dfn{automatic quoting} are implemented: |
| |
| @enumerate 1 |
| @item If a macro takes only one argument, all commas in its invocation |
| are quoted by default. For example: |
| |
| @example |
| @group |
| @@macro TRYME@{text@} |
| @@strong@{TRYME: \text\@} |
| @@end macro |
| |
| @@TRYME@{A nice feature, though it can be dangerous.@} |
| @end group |
| @end example |
| |
| @noindent |
| will produce the following output |
| |
| @example |
| @strong{TRYME: A nice feature, though it can be dangerous.} |
| @end example |
| |
| And indeed, it can. Namely, there is no control on the |
| number of arguments passed to one-argument macros, so be careful when |
| you invoke them. |
| |
| @item If a macro invocation includes another command (including a |
| recursive invocation of itself), any commas in the nested command |
| invocation(s) are quoted by default. For example, in |
| |
| @example |
| @@say@{@@strong@{Yes, I do@}, person one@} |
| @end example |
| |
| the comma after @samp{Yes} is implicitly quoted. Here's another |
| example, with a recursive macro: |
| |
| @example |
| @group |
| @@rmacro cat@{a,b@} |
| \a\\b\ |
| @@end rmacro |
| |
| @@cat@{@@cat@{foo, bar@}, baz@} |
| @end group |
| @end example |
| |
| @noindent |
| will produce the string @samp{foobarbaz}. |
| |
| @item Otherwise, a comma should be explicitly quoted, as above, for it |
| to be treated as a part of an argument. |
| @end enumerate |
| |
| @cindex Backslash, in macro arguments |
| @cindex Braces, in macro arguments |
| The backslash itself can be quoted in macro arguments with another |
| backslash. For example: |
| |
| @example |
| @@@var{macname} @{\\bleh@} |
| @end example |
| |
| @noindent |
| will pass the argument @samp{\bleh} to @var{macname}. |
| |
| @command{texi2any} also recognizes @samp{\@{} and @samp{\@}} sequences |
| for curly braces, but these are not recognized by the implementation in |
| @TeX{}. There should, however, rarely be a need for these, as they are |
| only needed when a macro argument contains unbalanced braces. |
| |
| If a macro is defined to take exactly one argument, it can be |
| invoked without any braces, taking all of the line after the macro name |
| as the argument. For example: |
| |
| @example |
| @@macro bar @{p@} |
| Twice: \p\ & \p\. |
| @@end macro |
| @@bar aah |
| @end example |
| |
| @noindent produces: |
| |
| @display |
| Twice: aah & aah. |
| @end display |
| |
| @noindent |
| In these arguments, there is no escaping of special characters, so each |
| @samp{\} 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: |
| |
| @example |
| @@macro addtwo @{p, q@} |
| Both: \p\\q\. |
| @@end macro |
| @@addtwo@{a@} |
| @end example |
| |
| @noindent produces simply: |
| |
| @display |
| Both: a. |
| @end display |
| |
| |
| @node Macro Details |
| @nodedescription Limitations of Texinfo macros. |
| @section Macro Details and Caveats |
| @cindex Macro details |
| @cindex Details of macro usage |
| @cindex Caveats for macro usage |
| |
| @cindex Macro expansion, contexts for |
| @cindex Expansion of macros, contexts for |
| By design, macro expansion should not happen in the following contexts: |
| |
| @itemize @bullet |
| @item @code{@@macro} and @code{@@unmacro} lines; |
| |
| @item @code{@@if...} lines, including @code{@@ifset} and similar; |
| |
| @item @code{@@set}, @code{@@clear}, @code{@@value}; |
| |
| @item @code{@@end} lines when there is no macro expansion in the block |
| command. |
| @end itemize |
| |
| @noindent Unfortunately, @TeX{} may do some expansion in these situations, |
| possibly yielding errors. |
| |
| Also, quite a few macro-related constructs cause problems with @TeX{}; |
| some of the caveats are listed below. Thus, if you get macro-related |
| errors when producing the printed version of a manual, you might try |
| expanding the macros with @command{texi2any} by invoking |
| @command{texi2dvi} with the @samp{-E} option (@pxref{Format with |
| @command{texi2dvi}}). Or, more reliably, eschew Texinfo macros altogether |
| and use a language designed for macro processing, such as M4 |
| (@pxref{External Macro Processors}). |
| |
| @itemize @bullet |
| @item |
| As mentioned earlier, macro names must consist entirely of letters. |
| |
| @item |
| It is not advisable to redefine any @TeX{} primitive, plain, or |
| Texinfo command name as a macro. Unfortunately, this is a large and |
| open-ended set of names, and the possible resulting errors are |
| unpredictable. |
| |
| @item |
| Arguments to macros taking more than one argument cannot cross lines. |
| |
| @item |
| Macros containing a command which must be on a line by itself, such as |
| a conditional, cannot be invoked in the middle of a line. Similarly, |
| macros containing line-oriented commands or text, such as |
| @code{@@example} environments, may behave unpredictably in @TeX{}. |
| |
| @item |
| 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. |
| |
| @item |
| White space is ignored at the beginnings of lines. |
| |
| @item |
| Macros can't be reliably used in the argument to accent commands |
| (@pxref{Inserting Accents}). |
| |
| @item |
| Macros should not be used in node names. @xref{Node Names}. |
| |
| @item |
| The backslash escape for commas in macro arguments does not work; |
| @code{@@comma@{@}} must be used. |
| |
| @item |
| Ending a macro body with @samp{@@c} may cause text following the macro |
| invocation to be ignored as a comment in @command{texi2any}. 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 @samp{@@end |
| macro} is not included in the macro body anyway. |
| |
| @item |
| In general, you can't arbitrarily substitute a macro (or |
| @code{@@value}) call for Texinfo command 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: |
| |
| @example |
| @@macro offmacro |
| off |
| @@end macro |
| @@headings @@offmacro |
| @end example |
| |
| @noindent |
| This looks equivalent to @code{@@headings off}, but for @TeX{}nical |
| reasons, it fails with a mysterious error message (namely, |
| @samp{Paragraph ended before @@headings was complete}). |
| |
| @item |
| Expanding macros in a math context may lead to poor spacing in |
| @TeX{} output. For example: |
| |
| @example |
| @@iftex |
| @@macro atan |
| \\mathop@{\\rm atan@} |
| @@end macro |
| @@end iftex |
| |
| @@math@{@@atan@{@}(x)@} |
| @end example |
| |
| The braces following @samp{@@atan} are treated by @TeX{} as a subformula, |
| leading to extra space before the opening parenthesis. You can work |
| around this by defining a raw @TeX{} macro instead: |
| |
| @example |
| @@tex |
| \gdef\atan#1@{\mathop@{\rm atan@}@} |
| @@end tex |
| @end example |
| |
| The @samp{#1} in this definition absorbs the braces, so that the spacing |
| is as expected for the @code{\mathop} object. |
| |
| @item |
| If you have problems using conditionals within a macro, an alternative |
| is to use separate macro definitions inside conditional blocks. For |
| example, instead of |
| |
| @example |
| @group |
| @@macro Mac |
| @@iftex |
| text for TeX output |
| @@end iftex |
| @@ifnottex |
| text for not TeX output |
| @@end ifnottex |
| @@end macro |
| @end group |
| @end example |
| |
| @noindent you can do the following instead: |
| |
| @example |
| @group |
| @@iftex |
| @@macro Mac |
| text for TeX output |
| @@end macro |
| @@end iftex |
| |
| @@ifnottex |
| @@macro Mac |
| text for not TeX output |
| @@end macro |
| @@end ifnottex |
| @end group |
| @end example |
| |
| |
| |
| @item |
| Macros cannot define macros in the natural way. To do this, you must |
| use conditionals and raw @TeX{}. For example: |
| |
| @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 |
| @end example |
| @end itemize |
| |
| The following limitations are by design: |
| |
| @itemize |
| @item |
| If you want to pass an argument with the Texinfo command |
| @code{@@,} (to produce a cedilla, see @ref{Inserting Accents}), you have |
| to use @code{@@value} or another workaround. Otherwise, the comma |
| may be taken as separating the arguments. With @command{texi2any}, |
| the comma can be escaped by a backslash. With @TeX{} another workaround |
| need to be used, therefore we recommend using such a workaround. |
| |
| For example, |
| |
| @example |
| @@macro mactwo@{argfirst, argsecond@} |
| \argfirst\+\argsecond\. |
| @@end macro |
| @@set fc Fran@@,cois |
| @@mactwo@{@@value@{fc@},@} |
| @end example |
| |
| @noindent produces: |
| |
| @display |
| Fran@,cois+. |
| @end display |
| |
| @c currently @mactwo{Fran@,cois} works in TeX, but @mactwo{Franc@\,cois} |
| @c works in texi2any. better to avoid commas altogether using this trick. |
| @c an alternative to @, could be invented if needed. |
| |
| @item |
| @code{@@verbatim} and macros do not mix; for instance, you can't start |
| a verbatim block inside a macro and end it outside |
| (@pxref{@code{@@verbatim}}). Starting any environment inside a macro |
| and ending it outside may or may not work, for that matter. |
| |
| @item |
| Macros that completely define macros are ok, but it's not possible to |
| have incompletely nested macro definitions. That is, @code{@@macro} |
| and @code{@@end macro} (likewise for @code{@@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. |
| @end itemize |
| |
| @c Texinfo 5.0 released in 2013 |
| In the @command{makeinfo} implementation before Texinfo 5.0, ends of |
| lines from expansion of a @code{@@macro} definition did not end an |
| @@-command line-delimited argument (@code{@@chapter}, @code{@@center}, |
| etc.). This is no longer the case. For example: |
| |
| @example |
| @@macro twolines@{@} |
| aaa |
| bbb |
| @@end macro |
| @@center @@twolines@{@} |
| @end example |
| |
| In the current @code{texi2any}, this is equivalent to: |
| |
| @example |
| @@center aaa |
| bbb |
| @end example |
| |
| @noindent with just @samp{aaa} as the argument to @code{@@center}. In |
| the earlier implementation, it would have been parsed as this: |
| |
| @example |
| @@center aaa bbb |
| @end example |
| |
| |
| @node @code{@@alias} |
| @nodedescription Command aliases. |
| @section @samp{@@alias @var{new}=@var{existing}} |
| |
| @anchor{alias}@c old name |
| @cindex Aliases, command |
| @cindex Command aliases |
| @findex alias |
| |
| The @samp{@@alias} command defines a new command to be just like an |
| existing one. This is useful for defining additional markup names, |
| thus preserving additional semantic information in the input even |
| though the output result may be the same. |
| |
| Write the @samp{@@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: |
| |
| @example |
| @@alias @var{new} = @var{existing} |
| @end example |
| |
| For example, if your document contains citations for both books and |
| some other media (movies, for example), you might like to define a |
| macro @code{@@moviecite@{@}} that does the same thing as an ordinary |
| @code{@@cite@{@}} but conveys the extra semantic information as well. |
| You'd do this as follows: |
| |
| @example |
| @@alias moviecite = cite |
| @end example |
| |
| 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, @code{@@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. |
| |
| Alias identifiers should be the same as for macro names, that is |
| alphanumerics and (except as the first character) @samp{-}. However, |
| with @TeX{}, letters only should be used. So, we recommend using only |
| letters. |
| |
| |
| @node Line Macros |
| @nodedescription Macros using whole line for arguments. |
| @section Line Macros |
| |
| @findex linemacro |
| @cindex Line macros |
| @cindex Macros taking whole line as an argument |
| You can also define a macro using the @samp{@@linemacro} command. |
| The syntax for line macro definitions is similar to that for |
| @code{@@macro}. |
| |
| However, the syntax for using a macro defined this way is different. |
| The macro call uses the rest of the line, with arguments separated |
| by spaces. The line macro facility is mainly intended to allow you |
| to define commands that operate similarly to the builtin commands |
| for providing definitions (@pxref{Definition Commands}). |
| |
| For example: |
| |
| @example |
| @@linemacro defbuiltin @{name, args@} |
| @@defline @{Builtin@} \name\ \args\ |
| @@end linemacro |
| @end example |
| |
| The above macro may be used as |
| |
| @example |
| @@defblock |
| @@defbuiltin foo (bar) |
| Explanation |
| @@end defblock |
| @end example |
| |
| This produces the following result: |
| |
| @linemacro defbuiltin {name, args} |
| @defline {Builtin} \name\ \args\ |
| @end linemacro |
| |
| @defblock |
| @defbuiltin foo (bar) |
| Explanation |
| @end defblock |
| |
| Here the first argument is @samp{foo}, and is substituted where |
| @samp{\name\} appears in the macro body. Likewise, @samp{(bar)} |
| is substituted for @samp{\args\}. |
| |
| You can include spaces in a macro argument by surrounding the argument |
| by braces. Any pair of braces enclosing an argument is removed |
| before substitution. Any empty arguments (including the last one) |
| must be given as @samp{@{@}}. Additionally, non-initial spaces may |
| appear in the final argument in the argument list without surrounding |
| braces (as in the example below). |
| |
| If an argument line for a line macro ends in a @samp{@@} character, |
| then this character together with the following newline are included |
| in a macro argument, and the following line in the input file is also |
| used to get the arguments for the macro. Note that any substitution |
| of the @samp{@@@var{<newline>}} sequence must be in a valid context, |
| such as a definition line (@pxref{Def Cmd Continuation Lines}). |
| |
| Another example: |
| |
| @example |
| @@linemacro deffunc @{type, name, args@} |
| @@findex \name\ |
| @@deftypeline @{Func@} @{\type\@} \name\ \args\ |
| @@end linemacro |
| |
| @@defblock |
| @@deffunc @{long int@} F (int @@var@{one@}, int @@var@{two@}, @@ |
| int @@var@{three@}, int @@var@{four@}, int @@var@{five@}) |
| Explanation |
| @@end defblock |
| @end example |
| |
| @noindent Note how braces are needed around @samp{\type\} in the |
| macro body in case the @code{type} argument contains a space. |
| This example produces the output below and enters an index entry |
| for @code{F}. |
| |
| @linemacro deffunc {type, name, args} |
| @c @findex \name\ |
| @deftypeline {Func} {\type\} \name\ \args\ |
| @end linemacro |
| |
| @defblock |
| @deffunc {long int} F (int @var{one}, int @var{two}, @ |
| int @var{three}, int @var{four}, int @var{five}) |
| Explanation |
| @end defblock |
| |
| Line macros produce a whole number of lines of output in their expansion. |
| There may be better compatibility between the Texinfo processors |
| (@command{texi2any} and @TeX{} with @file{texinfo.tex}) for macros defined |
| with @code{@@linemacro} than for those defined with @code{@@macro}. |
| |
| |
| @node @code{@@definfoenclose} |
| @nodedescription Customized highlighting. |
| @section @code{@@definfoenclose}: Customized Highlighting |
| |
| @anchor{definfoenclose}@c old name |
| @cindex Highlighting, customized |
| @findex definfoenclose |
| |
| An @code{@@definfoenclose} command may be used to define a |
| highlighting command for online output formats. A command |
| defined using @code{@@definfoenclose} marks text by enclosing it in |
| strings that precede and follow the text. |
| |
| In practice, there is little use for this command, and we do not |
| recommend you use it. Support for @code{@@definfoenclose} may be |
| removed in future releases of Texinfo. |
| |
| Write a @code{@@definfoenclose} command at the beginning of a line |
| followed by three comma-separated arguments. The first argument to |
| @code{@@definfoenclose} is the @@-command name (without the |
| @code{@@}); the second argument is the start delimiter string; and the |
| third argument is the end delimiter string. The latter two arguments |
| enclose the highlighted text in the output. |
| |
| A delimiter string may contain spaces. Neither the start nor end |
| delimiter is required. If you do not want a start delimiter but do |
| want an end delimiter, you must follow the command name with two |
| commas in a row; otherwise, the end delimiter string you intended will |
| naturally be (mis)interpreted as the start delimiter string. |
| |
| An enclosure command defined this way takes one argument in braces, |
| since it is intended for new markup commands (@pxref{Marking Text}). |
| |
| @findex phoo |
| For example, you can write: |
| |
| @example |
| @@definfoenclose phoo,//,\\ |
| @end example |
| |
| @noindent |
| near the beginning of a Texinfo file to define @code{@@phoo} as an Info |
| and HTML command that inserts `//' before and `\\' after the |
| argument to @code{@@phoo}. You can then write @code{@@phoo@{bar@}} |
| wherever you want `//bar\\' highlighted in Info and HTML. |
| |
| For @TeX{} formatting, you could write |
| |
| @example |
| @@iftex |
| @@alias phoo = i |
| @@end iftex |
| @end example |
| |
| @noindent |
| to define @code{@@phoo} as a command that causes @TeX{} to typeset the |
| argument to @code{@@phoo} in italics. |
| |
| Each definition applies to its own formatter: one for @TeX{}, the |
| other for online formats. The @TeX{} definitions need to be in |
| @samp{@@iftex}. @code{@@definfoenclose} command need not be within |
| @samp{@@ifinfo} unless you want to use different definitions for |
| different online output formats. @code{@@definfoenclose} defined |
| commands have no effect in DocBook and @LaTeX{} output, their |
| argument is output as-is. An @code{@@alias} could also be used |
| for these formats. |
| |
| @code{@@definfoenclose} definitions must not be recursive, directly or |
| indirectly. |
| |
| |
| @node External Macro Processors |
| @nodedescription @code{#line} directives. |
| @section External Macro Processors: Line Directives |
| @cindex External macro processors |
| @cindex Macro processors, external |
| |
| Texinfo macros (and its other text substitution facilities) work fine |
| in straightforward cases. If your document needs unusually complex |
| processing, however, their fragility and limitations can be a problem. |
| In this case, you may want to use a different macro processor |
| altogether, such as M4 (@pxref{Top,,, m4, M4}) or CPP (@pxref{Top,,, |
| cpp, The C Preprocessor}). |
| |
| With one exception, Texinfo does not need to know whether its input is |
| ``original'' source or preprocessed from some other source file. |
| Therefore, you can arrange your build system to invoke whatever |
| programs you like to handle macro expansion or other preprocessing |
| needs. Texinfo does not offer built-in support for any particular |
| preprocessor, since no one program seemed likely to suffice for the |
| requirements of all documents. |
| |
| @cindex Line numbers, in error messages |
| @cindex Error messages, line numbers in |
| The one exception is line numbers in error messages. In that case, |
| the line number should refer to the original source file, whatever it |
| may be. There's a well-known mechanism for this: the so-called |
| @samp{#line} directive. Texinfo supports this. |
| |
| |
| @node @samp{#line} Directive |
| @subsection @samp{#line} Directive |
| |
| @cindex @samp{#line} directive |
| |
| An input line such as this: |
| |
| @example |
| @hashchar{}line 100 "foo.ptexi" |
| @end example |
| |
| @noindent indicates that the next line was line 100 of the file |
| @file{foo.ptexi}, and so that's what an error message should refer to. |
| Both M4 (@pxref{Preprocessor features,,, m4, GNU M4}) and CPP |
| (@pxref{Line Control,,, cpp, The C Preprocessor}, and |
| @ref{Preprocessor Output,,, cpp, The C Preprocessor}) can generate |
| such lines. |
| |
| The @command{texi2any} program recognizes these lines by default, |
| except within @code{@@verbatim} blocks (@pxref{@code{@@verbatim}}). |
| Their recognition can be turned off completely with |
| @code{CPP_LINE_DIRECTIVES} (@pxref{Global Customization Variables}), |
| though there is normally no reason to do so. |
| |
| For those few programs (M4, CPP, Texinfo) which need to document |
| @samp{#line} directives and therefore have examples which would |
| otherwise match the pattern, the command @code{@@hashchar@{@}} can be |
| used (@pxref{Inserting a Hashsign}). The example line above looks |
| like this in the source for this manual: |
| |
| @example |
| @@hashchar@{@}line 100 "foo.ptexi" |
| @end example |
| |
| The @code{@@hashchar} command was added to Texinfo in 2013. If you |
| don't want to rely on it, you can also use @code{@@set} and |
| @code{@@value} to insert the literal @samp{#}: |
| |
| @example |
| @@set hash # |
| @@value@{hash@}line 1 "example.c" |
| @end example |
| |
| Or, if suitable, a @code{@@verbatim} environment can be used instead |
| of @code{@@example}. As mentioned above, @code{#line}-recognition is |
| disabled inside verbatim blocks. |
| |
| |
| @node @samp{#line} and @TeX{} |
| @subsection @samp{#line} and @TeX{} |
| |
| @cindex @TeX{} and @samp{#line} directives |
| @cindex @samp{#line} directive @subentry not processing with @TeX{} |
| |
| As mentioned, @command{texi2any} recognizes the @samp{#line} |
| directives described in the previous section. However, |
| @file{texinfo.tex} does not and cannot. Therefore, such a line will |
| be incorrectly typeset verbatim if @TeX{} sees it. The solution is to |
| use @command{texi2any}'s macro expansion options before running |
| @TeX{}. There are three approaches: |
| |
| @itemize @bullet |
| @item |
| If you run @command{texi2dvi} or its variants (@pxref{Format with |
| @command{texi2dvi}}), you can pass @option{-E} and @command{texi2dvi} |
| will run @command{texi2any} first to expand macros and eliminate |
| @samp{#line}. |
| |
| @item |
| If you run @command{texi2any}, you can specify @option{--no-ifinfo |
| --iftex -E somefile.out}, and then give @file{somefile.out} to |
| @command{texi2dvi} in a separate command. |
| |
| @item |
| Or you can run @option{texi2any --dvi --Xopt -E}. (Or @option{--pdf} |
| instead of @option{--dvi}.) @command{texi2any} will then call |
| @command{texi2dvi -E}. |
| @end itemize |
| |
| @findex errormsg@r{, and line numbers in @TeX{}} |
| One last caveat regarding use with @TeX{}: since the @code{#line} |
| directives are not recognized, the line numbers emitted by the |
| @code{@@errormsg@{@}} command (@pxref{Conditional Commands}), or by |
| @TeX{} itself, are the (incorrect) line numbers from the derived file |
| which @TeX{} is reading, rather than the preprocessor-specified line |
| numbers. |
| |
| |
| @node @samp{#line} Syntax Details |
| @subsection @samp{#line} Syntax Details |
| |
| @cindex @samp{#line} directive @subentry syntax details |
| @cindex Syntax details, @samp{#line} |
| @cindex Regular expression, for @samp{#line} |
| |
| Syntax details for the @samp{#line} directive: the @samp{#} character |
| can be preceded or followed by whitespace, the word @samp{line} is |
| optional, and the file name can be followed by a whitespace-separated |
| list of integers (these are so-called ``flags'' output by CPP in some |
| cases). For those who like to know the gory details, the actual |
| (Perl) regular expression which is matched is this: |
| |
| @example |
| /^\s*#\s*(line)? (\d+)(( "([^"]+)")(\s+\d+)*)?\s*$/ |
| @end example |
| |
| As far as we've been able to tell, the trailing integer flags only |
| occur in conjunction with a file name, so that is reflected in the |
| regular expression. |
| |
| As an example, the following is a syntactically valid @samp{#line} |
| directive, meaning line 1 of @file{/usr/include/stdio.h}: |
| |
| @example |
| @hashchar{} 1 "/usr/include/stdio.h" 2 3 4 |
| @end example |
| |
| Unfortunately, the quoted file name (@samp{"..."}) has to be optional, |
| because M4 (especially) can often generate @samp{#line} directives |
| within a single file. Since the @samp{line} is also optional, the |
| result is that lines might match which you wouldn't expect, e.g., |
| |
| @example |
| @hashchar{} 1 |
| @end example |
| |
| The possible solutions are described above (@pxref{@samp{#line} Directive}). |
| |
| |
| @node Include Files |
| @nodedescription How to incorporate other Texinfo files. |
| @chapter Include Files |
| |
| @cindex Include files |
| |
| When a Texinfo processor sees an @code{@@include} command in a Texinfo |
| file, it processes the contents of the file named by the |
| @code{@@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. |
| |
| |
| @node Using Include Files |
| @nodedescription How to use the @code{@@include} command. |
| @section How to Use Include Files |
| |
| @findex include |
| |
| To include another file within a Texinfo file, write the |
| @code{@@include} command at the beginning of a line and follow it on |
| the same line by the name of a file to be included. For example: |
| |
| @example |
| @@include buffers.texi |
| @end example |
| |
| @code{@@value@{@var{var}@}} references are expanded on the @code{@@include} |
| line. Other than that, the only @@-commands allowed are @code{@@@@}, |
| @code{@@@{}, @code{@@@}} and associated @@-commands such as |
| @code{@@atchar@{@}}. |
| |
| An included file should simply be a segment of text that you expect to |
| be included as is into the overall or @dfn{outer} Texinfo file; it |
| should not contain the standard beginning and end parts of a Texinfo |
| file. In particular, you should not start an included file with a |
| line saying @samp{\input texinfo}; if you do, that text is inserted |
| into the output file literally. Likewise, you should not end an |
| included file with a @code{@@bye} command; nothing after @code{@@bye} |
| is formatted. |
| |
| In the long-ago past, you were required to write an |
| @code{@@setfilename} line at the beginning of an included file, but no |
| longer. Now, it does not matter whether you write such a line. If an |
| @code{@@setfilename} line exists in an included file, it is ignored. |
| |
| GNU Emacs Texinfo mode provides @code{texinfo-multiple-files-update} |
| to update node pointers and master menu with multiple include files. |
| @xref{Update Multiple Files}. |
| |
| |
| @node Sample Include File |
| @nodedescription A sample outer file with included files within it; and a sample included file. |
| @section Sample File with @code{@@include} |
| @cindex Sample @code{@@include} file |
| @cindex Include file sample |
| @cindex @code{@@include} file sample |
| |
| Here is an example of an outer Texinfo file with @code{@@include} files |
| within it: |
| |
| @example |
| @group |
| \input texinfo @@c -*-texinfo-*- |
| |
| @@settitle Include Example |
| |
| @end group |
| |
| @group |
| @@node Top |
| @@top Include Example |
| @end group |
| |
| @group |
| @@include foo.texi |
| @@include bar.texi |
| @@include concept-index.texi |
| @@bye |
| @end group |
| @end example |
| |
| An included file, such as @file{foo.texi}, might look like this: |
| |
| @example |
| @group |
| @@node First |
| @@chapter First Chapter |
| |
| Contents of first chapter @dots{} |
| @end group |
| @end example |
| |
| The full contents of @file{concept-index.texi} might be as simple as this: |
| |
| @example |
| @group |
| @@node Concept Index |
| @@unnumbered Concept Index |
| |
| @@printindex cp |
| @end group |
| @end example |
| |
| @c FIXME not sure that this is of general interest for Texinfo |
| The outer Texinfo source file for @cite{The GNU Emacs Lisp Reference |
| Manual} is named @file{elisp.texi}. This outer file |
| has already contained a master menu with 417 entries and a list of |
| 41 @code{@@include} files. |
| |
| |
| @node @code{@@verbatiminclude} |
| @nodedescription Including a file verbatim. |
| @section @code{@@verbatiminclude} @var{file}: Include a File Verbatim |
| |
| @anchor{verbatiminclude}@c old name |
| @findex verbatiminclude |
| @cindex Verbatim, include file |
| @cindex Including a file verbatim |
| |
| You can include the exact contents of a file in the document with the |
| @code{@@verbatiminclude} command: |
| |
| @example |
| @@verbatiminclude @var{filename} |
| @end example |
| |
| The contents of @var{filename} is printed in a verbatim environment |
| (@pxref{@code{@@verbatim}}). Generally, the file is printed exactly |
| as it is, with all special characters and white space retained. No |
| indentation is added; if you want indentation, enclose the |
| @code{@@verbatiminclude} within @code{@@example} |
| (@pxref{@code{@@example}}). |
| |
| @code{@@value@{@var{var}@}} references are expanded on the |
| @code{@@verbatiminclude} line. This makes it possible to |
| include files in other directories within a distribution, |
| for instance: |
| |
| @example |
| @@verbatiminclude @@value@{top_srcdir@}/NEWS |
| @end example |
| |
| @noindent (You still have to get @code{top_srcdir} defined in the |
| first place.) |
| |
| Other than that, the only @@-commands allowed are @code{@@@@}, |
| @code{@@@{}, @code{@@@}} and associated @@-commands such as |
| @code{@@atchar@{@}}. |
| |
| For a method on printing the file contents in a smaller font size, see |
| the end of the section on @code{@@verbatim}. |
| |
| |
| @ignore |
| |
| @node Include Files Evolution |
| @section Evolution of Include Files |
| |
| When Info was first created, it was customary to create many small |
| Info files on one subject. Each Info file was formatted from its own |
| Texinfo source file. This custom meant that Emacs did not need to |
| make a large buffer to hold the whole of a large Info file when |
| someone wanted information; instead, Emacs allocated just enough |
| memory for the small Info file that contained the particular |
| information sought. This way, Emacs could avoid wasting memory. |
| |
| References from one file to another were made by referring to the file |
| name as well as the node name. (@xref{Other Info Files, , Referring to |
| Other Info Files}. Also, see @ref{Four and Five Arguments, , |
| @code{@@xref} with Four and Five Arguments}.) |
| |
| 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 |
| @code{@@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 @cite{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 @code{@@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. |
| |
| @end ignore |
| |
| |
| @node Hardcopy with @TeX{} |
| @nodedescription Output for paper, with @TeX{}. |
| @chapter Formatting and Printing with @TeX{} |
| @anchor{Hardcopy} @c old name |
| @anchor{Printing} |
| @cindex Format and print hardcopy |
| @cindex Printing hardcopy |
| @cindex Hardcopy, printing it |
| @cindex Making a printed manual |
| @cindex Sorting indices |
| @cindex Indices, sorting |
| @cindex @TeX{} index sorting |
| |
| Running the @command{texi2dvi} or @command{texi2pdf} command is the |
| simplest way to create printable output. These commands are installed |
| as part of the Texinfo package. |
| |
| In more detail, typesetting and printing a Texinfo file is a multi-step |
| process in which you use the @TeX{} program to create a file for printing |
| (called a DVI or PDF file), and then print the file. Optionally, |
| you may also create indices using the @command{texindex} command |
| after first running @TeX{}; and then you must run @TeX{} again. |
| @command{texi2dvi} takes care of all of this, running @TeX{} and |
| @command{texindex} as needed (@pxref{Format with @command{texi2dvi}}). |
| |
| @anchor{Within Emacs} @c old node name |
| @anchor{Emacs Shell Printing} @c old node name |
| @cindex Print, format from Emacs shell |
| @cindex Format, print from Emacs shell |
| @cindex Shell, format, print from |
| @cindex Emacs shell, format, print from |
| @cindex GNU Emacs shell, format, print from |
| When you use the shell commands, you |
| can either work directly in the operating system shell or work within |
| a shell inside GNU Emacs (or some other computing environment). |
| You can give formatting and printing commands from a shell within GNU |
| Emacs, just like any other shell command. To create a shell within |
| Emacs, type @kbd{M-x shell} (@pxref{Shell,,, emacs, The GNU Emacs Manual}). |
| If you are using GNU Emacs, you can also use commands provided by Texinfo |
| mode instead of shell commands. @xref{Printing with Emacs}. |
| |
| For specifing details of the printed output such as paper size, see |
| @ref{Global Document Commands}. |
| |
| |
| @node Use @TeX{} |
| @nodedescription Use @TeX{} to format for hardcopy. |
| @section Use @TeX{} |
| |
| The typesetting program called @TeX{} is used to format a Texinfo |
| document for printable output. @TeX{} is a very powerful typesetting |
| program and, when used correctly, does an exceptionally good job. It is |
| not included in the Texinfo package, being a vast suite of software |
| in itself. |
| |
| @anchor{Obtaining @TeX{}} |
| @cindex Obtaining @TeX{} |
| @cindex @TeX{}, how to obtain |
| @TeX{} is a document formatter that is used by the FSF for its |
| documentation. It is the easiest way to get printed output (e.g., PDF |
| and PostScript) for Texinfo manuals. TeX is freely redistributable, |
| and you can get it over the Internet or on physical media. See |
| @url{http://tug.org/texlive}. |
| |
| @c please keep that text in sync with www.gnu.org/prep/FTP |
| |
| |
| @node Format with @command{texi2dvi} or @command{texi2pdf} |
| @nodedescription The simplest way to format. |
| @section Format with @command{texi2dvi} or @command{texi2pdf} |
| |
| @c previously in a separate node. To be used when referring |
| @c only to PDF output, as is the case in @direntry |
| @anchor{PDF Output} |
| @c To be used when referring to DVI output or to texi2dvi only, |
| @c as is the case in @direntry |
| @anchor{Format with @command{texi2dvi}} |
| |
| @pindex texi2dvi @r{(shell script)} |
| @pindex texi2pdf @r{(shell script)} |
| @cindex DVI, output in |
| @cindex PDF output |
| @cindex Output, in PDF |
| |
| The @command{texi2dvi} program takes care of all the steps for producing |
| a @TeX{} DVI file from a Texinfo document. Similarly, @command{texi2pdf} |
| produces a PDF file@footnote{@dfn{PDF} stands for `Portable Document Format'. |
| It was invented by Adobe Systems for document interchange, based on their PostScript language.}. |
| |
| To run @command{texi2dvi} or @command{texi2pdf} on an input file |
| @file{foo.texi}, do this (where @samp{prompt$ } is your shell prompt): |
| |
| @example |
| prompt$ @kbd{texi2dvi foo.texi} |
| prompt$ @kbd{texi2pdf foo.texi} |
| @end example |
| |
| As shown in this example, the file names given to @command{texi2dvi} and |
| @command{texi2pdf} must include any extension, such as @samp{.texi}. |
| |
| For a list of all the options, run @samp{texi2dvi --help}. Some of the |
| options are discussed below. |
| |
| @opindex --pdf@r{, for @command{texi2dvi}} |
| @pindex pdftexi2dvi |
| With the @option{--pdf} option, @command{texi2dvi} produces PDF output |
| instead of DVI, by running @command{pdftex} |
| instead of @command{tex}. Alternatively, the command |
| @command{texi2pdf} is an abbreviation for running @samp{texi2dvi |
| --pdf}. The command @command{pdftexi2dvi} is also provided as a |
| convenience for AUC-@TeX{} (@pxref{Top,,, auctex, AUC-@TeX{}}), as it |
| prefers to merely prepend @samp{pdf} to DVI producing tools to have |
| PDF producing tools. |
| |
| @opindex --dvipdf@r{, for @command{texi2dvi}} |
| @pindex dvipdfmx |
| With the @option{--dvipdf} option, @command{texi2dvi} produces PDF |
| output by running @TeX{} and then a DVI-to-PDF program: if the |
| @env{DVIPDF} environment variable is set, that value is used, else the |
| first program extant among @code{dvipdfmx}, @code{dvipdfm}, |
| @code{dvipdf}, @code{dvi2pdf}, @code{dvitopdf}. This method generally |
| supports CJK typesetting better than @command{pdftex}. |
| |
| @opindex --ps@r{, for @command{texi2dvi}} |
| @pindex dvips |
| With the @option{--ps} option, @command{texi2dvi} produces PostScript |
| instead of DVI, by running @command{tex} and then @command{dvips} |
| (@pxref{Top,,, dvips, Dvips}). (Or the value of the @env{DVIPS} |
| environment variable, if set.) |
| |
| @opindex --language@r{, for @command{texi2dvi}} |
| @cindex @LaTeX{}, processing with @command{texi2dvi} |
| @command{texi2dvi} can also be used to process @LaTeX{} files. |
| Normally @command{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 |
| @option{--language=@var{lang}} command line option, where @var{lang} |
| is either @samp{latex} or @samp{texinfo}. |
| |
| @opindex --command@r{, for @command{texi2dvi}} |
| One useful option to @command{texi2dvi} is @samp{--command=@var{cmd}}. |
| This inserts @var{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 @code{@@smallbook} (@pxref{@code{@@smallbook}}), |
| @code{@@afourpaper} (@pxref{A4 Paper}), or @code{@@pagesizes} |
| (@pxref{@code{@@pagesizes}}), without actually changing the document |
| source. (You can also do this on a site-wide basis with |
| @file{texinfo.cnf}; @pxref{Preparing for @TeX{}}). |
| |
| The option @option{-E} (equivalently, @option{-e} and |
| @option{--expand}) does Texinfo macro expansion using |
| @command{texi2any} instead of the @TeX{} implementation (@pxref{Macro |
| Details}). Each implementation has its own limitations and |
| advantages. |
| |
| @command{texi2dvi} takes the @option{--build=@var{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 |
| @env{TEXI2DVI_BUILD_MODE}. The valid values for @var{mode} are: |
| |
| @table @samp |
| @item local |
| Compile in the current directory, leaving all the auxiliary |
| files around. This is the traditional TeX use. |
| |
| @item tidy |
| Compile in a local @code{*.t2d} directory, where the auxiliary files |
| are left. Output files are copied back to the original file. |
| |
| Using the @samp{tidy} mode brings several advantages: |
| @itemize - |
| @item the current directory is not cluttered with plethora of temporary files. |
| @item clutter can be even further reduced using @option{--build-dir=dir}: all |
| the @code{*.t2d} directories are stored there. |
| @item clutter can be reduced to zero using, e.g., |
| @option{--build-dir=/tmp/\$USER.t2d} or @option{--build-dir=\$HOME/.t2d}. |
| @item the output file is updated after every successful @TeX{} run, for |
| sake of concurrent visualization of the output. In a @samp{local} build |
| the viewer stops during the whole @TeX{} run. |
| @item if the compilation fails, the previous state of the output file |
| is preserved. |
| @item @acronym{PDF} and @acronym{DVI} compilation are kept in separate |
| subdirectories |
| preventing any possibility of auxiliary file incompatibility. |
| @end itemize |
| |
| On the other hand, because @samp{tidy} compilation takes place in another |
| directory, occasionally @TeX{} won't be able to find some files (e.g., when |
| using @code{\graphicspath}): in that case, use @option{-I} to specify the |
| additional directories to consider. |
| |
| @item clean |
| Same as @samp{tidy}, but remove the auxiliary directory afterwards. |
| Every compilation therefore requires the full cycle. |
| @end table |
| |
| @pindex etex |
| @command{texi2dvi} will use @command{etex} if |
| it is available, because it runs faster in some cases, and |
| provides additional tracing information when debugging |
| @file{texinfo.tex}. Nevertheless, this extended version of @TeX{} is |
| not required, and the DVI output is identical. |
| |
| @cindex file recorder for @TeX{} |
| @cindex @samp{\openout} line in log file |
| @command{texi2dvi} attempts to detect auxiliary files output by @TeX{}, |
| either by using the @option{-recorder} option, or by scanning for |
| @samp{\openout} in the log file that a run of @TeX{} produces. You may |
| control how @command{texi2dvi} does this with the @env{TEXI2DVI_USE_RECORDER} |
| environment variable. Valid values are: |
| |
| @table @samp |
| @item yes |
| use the @option{-recorder} option, no checks. |
| |
| @item no |
| scan for @samp{\openout} in the log file, no checks. |
| |
| @item yesmaybe |
| check whether @option{-recorder} option is supported, and if yes |
| use it, otherwise check for tracing @samp{\openout} in the log file is |
| supported, and if yes use it, else it is an error. |
| |
| @item nomaybe |
| same as @samp{yesmaybe}, except that the @samp{\openout} trace in log |
| file is checked first. |
| @end table |
| |
| The default is @samp{nomaybe}. This environment variable is provided |
| for troubleshooting purposes, and may change or disappear in the future. |
| |
| |
| @node Format with @command{tex}/@command{texindex} |
| @nodedescription Formatting with explicit shell commands. |
| @section Format with @command{tex}/@command{texindex} |
| |
| @cindex Shell formatting with @command{tex} and @command{texindex} |
| @cindex Formatting with @command{tex} and @command{texindex} |
| @cindex DVI file |
| |
| You can do the basic formatting of a Texinfo file with the shell |
| command @command{tex} followed by the name of the Texinfo file. For |
| example: |
| |
| @example |
| tex foo.texi |
| @end example |
| |
| @noindent @TeX{} will produce a @dfn{DVI file} as well as several auxiliary |
| files containing information for indices, cross-references, etc. The |
| DVI file (for @dfn{DeVice Independent} file) can be printed on |
| virtually any device, perhaps after a further conversion (see the |
| previous section). |
| |
| @pindex texindex |
| The @command{tex} formatting command itself does not sort the indices; it |
| writes an output file of unsorted index data. To generate a printed |
| index after running the @command{tex} command, you first need a sorted |
| index to work from. The @command{texindex} command sorts indices. |
| (@command{texi2dvi}, described in the previous section, runs |
| @command{tex} and @command{texindex} as necessary.) |
| |
| @anchor{Names of index files} |
| @cindex Names of index files |
| @cindex Index file names |
| @command{tex} outputs unsorted index files under names following a |
| standard convention: the name of your main input file with any |
| @samp{.texi} or similar extension replaced by the two letter index |
| name. For example, the raw index output files for the input file |
| @file{foo.texi} would be, by default, @file{foo.cp}, @file{foo.vr}, |
| @file{foo.fn}, @file{foo.tp}, @file{foo.pg} and @file{foo.ky}. Those |
| are exactly the arguments to give to @command{texindex}. |
| |
| @need 1000 |
| @cindex Wildcards |
| @cindex Globbing |
| Instead of specifying all the unsorted index file names explicitly, |
| it's typical to use @samp{??} as shell wildcards and give the command |
| in this form: |
| |
| @example |
| texindex foo.?? |
| @end example |
| |
| @noindent |
| This command will run @command{texindex} on all the unsorted index files, |
| including any two letter indices that you have defined yourself using |
| @code{@@defindex} or @code{@@defcodeindex}. You can safely run |
| @samp{texindex foo.??} even if there are files with two letter |
| extensions that are not index files, such as @samp{foo.el}. The |
| @command{texindex} command reports but otherwise ignores such files. |
| |
| For each file specified, @command{texindex} generates a sorted index file |
| whose name is made by appending @samp{s} to the input file name; for |
| example, @file{foo.cps} is made from @file{foo.cp}. The |
| @code{@@printindex} command looks for a file with that name |
| (@pxref{Printing Indices & Menus}). @TeX{} does not read the raw |
| index output file, and @command{texindex} does not alter it. |
| |
| After you have sorted the indices, you need to rerun @command{tex} on the |
| Texinfo file. This regenerates the output file, this time with |
| up-to-date index entries. |
| |
| Finally, you may need to run @command{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 @command{texi2dvi}; see the previous section.) |
| |
| @enumerate |
| @item |
| Run @command{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). |
| |
| @item |
| Run @command{texindex} on the raw index files. This creates the |
| corresponding sorted index files (with three letter extensions). |
| |
| @item |
| Run @command{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. |
| |
| @item |
| Sort the indices again, with @command{texindex}. |
| |
| @item |
| Run @command{tex} one last time. This time the correct page numbers are |
| written for the cross-references. |
| @end enumerate |
| |
| @pindex pdftex |
| To generate PDF, you can run the @command{pdftex} |
| program instead of plain @command{tex}. That is, run @command{pdftex |
| foo.texi} instead of @samp{tex foo.texi} in the examples above. |
| |
| |
| @node Formatting Partial Documents |
| @subsection Formatting Partial Documents |
| |
| @cindex Formatting partial documents |
| @cindex Partial documents, formatting |
| @cindex Chapters, formatting one at a time |
| @cindex Auxiliary files, omitting |
| @cindex Pointer validation @subentry suppressing |
| @findex novalidate |
| |
| Sometimes you may wish to print a document while you know it is |
| incomplete, or to print just one chapter of a document. In such a |
| case, the usual auxiliary files that @TeX{} creates and warnings |
| @TeX{} gives about undefined cross-references are just nuisances. You |
| can avoid them with the @code{@@novalidate} command, which you must |
| give @emph{before} any sectioning or cross-reference commands. |
| |
| Thus, the beginning of your file would look approximately like this: |
| |
| @example |
| \input texinfo |
| @@novalidate |
| @dots{} |
| @end example |
| |
| @noindent @code{@@novalidate} also turns off validation in |
| @command{texi2any}, just like its @code{--no-validate} option |
| (@pxref{Invoking @command{texi2any}}). |
| |
| Furthermore, you need not run @command{texindex} each time after you run |
| @command{tex}. The @command{tex} formatting command simply uses whatever |
| sorted index files happen to exist from a previous use of |
| @command{texindex}. If those are out of date, that is usually ok while |
| you are creating or debugging a document. |
| |
| |
| @node Details of @command{texindex} |
| @subsection Details of @command{texindex} |
| |
| @cindex Braces, in index entries |
| In Texinfo version 6, released in 2015, the @command{texindex} program |
| was completely reimplemented. The principal functional difference is |
| that index entries beginning with a left brace or right brace |
| (@samp{@{} resp.@: @samp{@}}) can work properly. For example, these |
| simple index entries are processed correctly, including the ``index |
| initial'' shown in the index: |
| |
| @example |
| @@cindex @@@{ |
| @@cindex @@@} |
| ... |
| @@printindex cp |
| @end example |
| |
| |
| @node Preparing for @TeX{} |
| @nodedescription What to do before you use @TeX{}. |
| @section Preparing for @TeX{} |
| @cindex Preparing for @TeX{} |
| @cindex @TeX{} input initialization |
| @cindex @sortas{profile init} @file{.profile} initialization file |
| @cindex @sortas{cshrc init} @file{.cshrc} initialization file |
| @cindex Initialization file for @TeX{} input |
| |
| @TeX{} needs to find the @file{texinfo.tex} file that the |
| @samp{\input texinfo} command on the first line reads. The |
| @file{texinfo.tex} file tells @TeX{} how to handle @@-commands; it is |
| included in all standard GNU distributions. The latest version |
| released for general use is available |
| from the usual GNU servers and mirrors: |
| |
| @display |
| @uref{https://ftp.gnu.org/gnu/texinfo/texinfo.tex} |
| @uref{https://ftpmirror.gnu.org/texinfo/texinfo.tex} |
| @end display |
| |
| The latest development version is available from the Texinfo source |
| repository: |
| |
| @display |
| @uref{https://git.savannah.gnu.org/cgit/texinfo.git/plain/doc/texinfo.tex} |
| @end display |
| |
| @pindex texinfo.tex@r{, installing} |
| @file{texinfo.tex} is essentially a standalone file, |
| so, if you need or want to try a newer version |
| than came with your system, it nearly always suffices to download it |
| and put it anywhere that @TeX{} will find it. You can replace |
| any existing @file{texinfo.tex} with a newer version (of course saving |
| the original in case of disaster). |
| |
| @pindex epsf.tex@r{, installing} |
| Also, you should install @file{epsf.tex}, if it is not already installed |
| from another distribution. More details are at the end of the description |
| of the @code{@@image} command (@pxref{Images}). |
| |
| @cindex European Computer Modern fonts @subentry installing |
| @cindex EC fonts, installing |
| @cindex CM-Super fonts @subentry installing |
| To use quotation marks other than those used in English, you'll need |
| to have the European Computer Modern fonts (e.g., @file{ecrm1000}) and |
| (for PDF output) CM-Super fonts (@pxref{Inserting Quotation Marks}). |
| |
| @cindex @code{feymr10} @subentry installing |
| @cindex Euro font, installing |
| To use the @code{@@euro} command, you'll need the @samp{feym*} fonts |
| (e.g., @file{feymr10}). @xref{@code{@@euro}}. |
| |
| All of the above files should be installed by default in a reasonable |
| @TeX{} installation. |
| |
| @pindex texinfo.cnf @r{installation} |
| @cindex Customizing of @TeX{} for Texinfo |
| @cindex Site-wide Texinfo configuration file |
| Optionally, you may create a file @file{texinfo.cnf} for site configuration. |
| When processing a Texinfo file, @TeX{} looks for this file |
| in its search path, which includes the current directory and standard |
| installation directories. |
| You can use this file for local conventions. For example, if |
| @file{texinfo.cnf} contains the line |
| @samp{@@afourpaper} (@pxref{A4 Paper}), then all Texinfo documents |
| will be processed with that page size in effect. If you have nothing |
| to put in @file{texinfo.cnf}, you do not need to create it. |
| |
| @cindex Environment variable @code{TEXINPUTS} |
| @vindex TEXINPUTS |
| You can set the @code{TEXINPUTS} environment variable |
| to allow @TeX{} to find @file{texinfo.cnf}. |
| (This also works for @file{texinfo.tex} and any other file @TeX{} |
| might read). For example, if you are using a Bourne shell-compatible shell |
| (@code{sh}, @code{bash}, @code{ksh}, @dots{}), your @file{.profile} file |
| could contain the lines: |
| |
| @example |
| TEXINPUTS=.:/home/me/mylib: |
| export TEXINPUTS |
| @end example |
| |
| @noindent |
| These settings would cause @TeX{} first to look for an @file{\input} file |
| in the current directory, indicated by the @samp{.}, then in a |
| hypothetical user @samp{me}'s @file{mylib} directory, and finally in |
| the system directories. (A leading, trailing, or doubled @samp{:} |
| indicates searching the system directories at that point.) |
| |
| |
| @node Overfull hboxes |
| @nodedescription What are and what to do with overfull hboxes. |
| @section Overfull ``hboxes'' |
| @cindex Overfull @samp{hboxes} |
| @cindex @samp{hbox}, overfull |
| @cindex Final output |
| |
| @TeX{} is sometimes unable to typeset a line within the normal |
| margins. This most often occurs when @TeX{} comes upon what it |
| interprets as a long word that it cannot hyphenate, such as an |
| electronic mail network address or a very long identifier. When this |
| happens, @TeX{} prints an error message like this: |
| |
| @example |
| Overfull @@hbox (20.76302pt too wide) |
| @end example |
| |
| @findex hbox |
| @noindent |
| (In @TeX{}, lines are in ``horizontal boxes'', hence the term, ``hbox''. |
| @samp{@@hbox} is a @TeX{} primitive not used in the Texinfo language.) |
| |
| @TeX{} also provides the line number in the Texinfo source file and |
| the text of the offending line, which is marked at all the places that |
| @TeX{} considered hyphenation. @xref{Debugging with @TeX{}}, for more |
| information about typesetting errors. |
| |
| If the Texinfo file has an overfull hbox, you can rewrite the sentence |
| so the overfull hbox does not occur, or you can decide to leave it. A |
| small excursion into the right margin often does not matter and may not |
| even be noticeable. |
| |
| 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: |
| |
| @findex \emergencystretch |
| @example |
| @@tex |
| \global\emergencystretch = .9\hsize |
| @@end tex |
| @end example |
| |
| @noindent |
| (You should adjust the fraction as needed.) This huge value for |
| @code{\emergencystretch} cannot be the default, since then the typeset |
| output would generally be of noticeably lower quality; its default |
| value is @samp{.15\hsize}. @code{\hsize} is the @TeX{} dimension |
| containing the current line width. |
| |
| @cindex Black rectangle in hardcopy |
| @cindex Rectangle, black in hardcopy |
| @cindex Box, ugly black in hardcopy |
| @cindex Ugly black rectangles in hardcopy |
| 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. |
| |
| @findex finalout |
| 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 @code{@@maketitle} or @code{@@titlepage} command: |
| |
| @example |
| @@finalout |
| @end example |
| |
| @node Printing Japanese and Chinese |
| @nodedescription XeTeX or LuaTeX required. |
| @section Printing Japanese and Chinese |
| |
| @cindex Chinese language |
| @cindex Japanese language |
| Texinfo comes with support files for processing input in the |
| Japanese and Chinese languages. |
| |
| @cindex Japanese with Xe@TeX{} |
| @cindex Japanese with LuaTeX |
| For Japanese, you use the @file{texinfo-ja.tex} file. Your main input |
| file should begin with a @samp{\input texinfo-ja} line, rather than |
| the standard |
| @w{@samp{\input texinfo}}. Use the UTF-8 character encoding as usual. |
| You must process the files with either Xe@TeX{} or LuaTeX. |
| |
| @cindex Chinese with Xe@TeX{} |
| For Chinese, you use the @file{texinfo-zh.tex} file. Your main input |
| file should begin with a @samp{\input texinfo-zh} line, rather than |
| the standard |
| @w{@samp{\input texinfo}}. Use the UTF-8 character encoding as usual. |
| You must process the files with Xe@TeX{}. |
| |
| For example, you would run |
| @samp{PDFTEX=xetex texi2pdf @var{my-input-file.texi}} |
| to use Xe@TeX{} to produce PDF output. You may have to install Xe@TeX{} |
| (or LuaTeX), the @samp{zhspacing} package, and/or font packages. |
| |
| Neither Japanese nor Chinese is supported with the standard @TeX{} (or |
| pdf@TeX{}) program, as it cannot support the fonts and thousands of |
| glyphs needed for these languages. |
| |
| The Texinfo distribution comes with a couple of sample files that you |
| can use to test support for these languages: |
| @samp{short-sample-ja.texi} for Japanese, and @samp{short-sample-zh.texi} |
| for Chinese. |
| |
| @cindex Xe@TeX{} |
| @cindex LuaTeX |
| For more information on these extensions to @TeX{}, see |
| @uref{https://tug.org/xetex/, the Xe@TeX{} home page} and |
| @uref{https://www.luatex.org/, the LuaTeX website}. |
| |
| |
| @node Generic Translator @command{texi2any} |
| @nodedescription @command{texi2any}, an all-purpose converter. |
| @chapter @command{texi2any}: The Translator for Texinfo |
| |
| @command{texi2any} is the generic translator for Texinfo that can |
| produce different output formats and is highly customizable. It |
| supports these formats: |
| |
| @display |
| Info (by default, or with @option{--info}), |
| HTML (with @option{--html}), |
| EPUB 3 (with @option{--epub3}), |
| plain text (with @option{--plaintext}), |
| @LaTeX{} (with @option{--latex}), |
| DocBook (with @option{--docbook}). |
| @end display |
| |
| @command{makeinfo} is an alias for @command{texi2any}. By default, |
| both @command{texi2any} and @command{makeinfo} generate Info output; |
| indeed, there are no differences in behavior based on the name. |
| |
| Beside these default formats, command line options to |
| @command{texi2any} can change many aspects of the output. Beyond |
| that, initialization files provide even more control over the final |
| output---nearly anything not specified in the Texinfo input file. |
| Initialization files are written in Perl, and |
| anything which can be specified on the command line can also be |
| specified within a initialization file. |
| |
| Two functionally equivalent implementations of @command{texi2any} can be built |
| in GNU Texinfo, one in Perl and another in compiled native code (in C). |
| The native code implementation is still experimental. |
| The Perl program can use Perl extension modules in compiled native code, |
| while the native code program embeds a Perl interpreter for the parts that |
| require Perl. |
| @c , mainly index sorting, most converter backends and HTML |
| @c customization. The Perl program, when using native code backends is about as |
| @c fast as the main program in C using Perl when there is no native code |
| @c equivalent. |
| |
| In the default case, the Perl implementation is installed. You can select |
| the experimental C implementation instead at build time by passing |
| the @option{--enable-using-c-texi2any} option to @command{configure}. |
| |
| |
| @node Invoking @command{texi2any} |
| @nodedescription Running the translator from a shell. |
| @section Invoking @command{texi2any} from a Shell |
| |
| @anchor{Invoking makeinfo} |
| @pindex makeinfo |
| @pindex texi2any |
| |
| To process a Texinfo file, invoke @command{texi2any} followed by the name |
| of the Texinfo file. Also select the format you want to output with the |
| appropriate command line option (default is Info). Thus, to create |
| the Info file for Bison, type the following to the shell: |
| |
| @example |
| texi2any --info bison.texi |
| @end example |
| |
| You can specify more than one input file name; each is processed in |
| turn. If an input file name is @samp{-}, standard input is read. |
| |
| @anchor{@command{makeinfo} Options} |
| @c anchor{makeinfo options}@c prev name, but case-insensitive clash |
| @cindex @command{makeinfo} options |
| @cindex Options for @command{makeinfo} |
| @anchor{@command{texi2any} Options} |
| @cindex @command{texi2any} options |
| @cindex Options for @command{texi2any} |
| |
| The @command{texi2any} program accepts many options. Perhaps the |
| most basic are those that change the output format. By default, |
| @command{texi2any} outputs Info. |
| |
| Each command line option is either a long name preceded by @samp{--} |
| or a single letter preceded by @samp{-}. You can use abbreviations |
| for the long option names as long as they are unique. |
| |
| For example, you could use the following shell command to create an |
| Info file for @file{bison.texi} in which lines are filled to only |
| 68 columns: |
| |
| @example |
| texi2any --fill-column=68 bison.texi |
| @end example |
| |
| You can write two or more options in sequence, like this: |
| |
| @example |
| texi2any --no-split --fill-column=70 @dots{} |
| @end example |
| |
| @noindent |
| (This would keep the Info file together as one possibly very long |
| file and would also set the fill column to 70.) |
| |
| The options are (approximately in alphabetical order): |
| |
| @table @code |
| @item --commands-in-node-names |
| @opindex --commands-in-node-names |
| This option now does nothing, but remains for compatibility. (It used |
| to ensure that @@-commands in node names were expanded throughout the |
| document, especially @code{@@value}. This is now done by default.) |
| |
| @item --conf-dir=@var{dir} |
| @opindex --conf-dir=@var{dir} |
| Prepend @var{dir} to the directory search list for finding |
| customization files that may be loaded with @option{--init-file} (see |
| below). The @var{dir} value can be a single directory, or a list of |
| several directories separated by the usual path separator character |
| (@samp{:} on Unix-like systems, @samp{;} on Windows). @c @xref{Loading |
| @c Init Files}. |
| |
| @item --css-include=@var{file} |
| @opindex --css-include |
| When producing HTML, literally include the contents of @var{file}, |
| which should contain Cascading Style Sheets specifications, in the |
| @samp{<style>} block of the HTML output. If @var{file} is @samp{-}, |
| read standard input. @xref{HTML CSS}. |
| |
| @item --css-ref=@var{url} |
| @opindex --css-ref |
| When producing HTML, add a @samp{<link>} tag to the output which |
| references a cascading style sheet at @var{url}. This allows using |
| standalone style sheets. |
| |
| @item -D @var{var} |
| @itemx -D '@var{var} @var{value}' |
| @opindex -D @var{var} |
| Cause the Texinfo variable @var{var} to be defined. This is |
| equivalent to @code{@@set @var{var}} in the Texinfo file |
| (@pxref{@code{@@set @@clear @@value}}). |
| |
| 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, @code{-D 'myvar |
| someval'} is equivalent to @code{@@set myvar someval}. |
| |
| @item --docbook |
| @opindex --docbook |
| Generate DocBook output (rather than Info). |
| |
| @item --document-language=@var{lang} |
| @opindex --document-language |
| Use @var{lang} as main language to translate Texinfo keywords which |
| end up in the output document. The default is the language specified by the |
| @code{@@documentlanguage} command if there is one, otherwise English |
| strings are output (@pxref{Setting the language}). |
| |
| @item --dvi |
| @opindex --dvi |
| Generate a TeX DVI file using @command{texi2dvi}, rather than Info |
| (@pxref{@command{texi2any} Printed Output}). |
| |
| @item --dvipdf |
| @opindex --dvipdf |
| Generate a PDF file using @command{texi2dvi --dvipdf}, rather than |
| Info (@pxref{@command{texi2any} Printed Output}). |
| |
| @item --enable-encoding |
| @itemx --disable-encoding |
| @opindex --enable-encoding |
| @opindex --disable-encoding |
| @c @vindex ENABLE_ENCODING |
| By default, or with @option{--enable-encoding}, output accented and |
| special characters in Info and plain text output based on |
| the document encoding. With @option{--disable-encoding}, 7-bit |
| ASCII transliterations are output. Also obeyed in other output |
| formats for index keys sorting and for some plain text output. |
| |
| @item --epub3 |
| @opindex --epub3 |
| Generate EPUB 3 output. |
| |
| @item --error-limit=@var{limit} |
| @itemx -e @var{limit} |
| @opindex --error-limit=@var{limit} |
| @opindex -e @var{limit} |
| @c @vindex ERROR_LIMIT |
| Report @var{limit} errors before aborting (on the assumption that |
| continuing would be useless); default 100. |
| |
| @item --fill-column=@var{width} |
| @itemx -f @var{width} |
| @opindex --fill-column=@var{width} |
| @opindex -f @var{width} |
| @c @vindex FILLCOLUM |
| 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. |
| |
| @item --footnote-style=@var{style} |
| @itemx -s @var{style} |
| @opindex --footnote-style=@var{style} |
| @opindex -s @var{style} |
| @vindex footnotestyle |
| Set the footnote style to @var{style}: either @samp{end} for the end |
| node style (the default) or @samp{separate} for the separate node |
| style. The value set by this option overrides the value set in a |
| Texinfo file by a @code{@@footnotestyle} command (@pxref{Footnote |
| Styles}). |
| |
| In Info, when the footnote style is @samp{separate}, @command{texi2any} makes a |
| new node containing the footnotes found in the current node. When the |
| footnote style is @samp{end}, @command{texi2any} places the footnote |
| references at the end of the current node. |
| |
| In HTML, when the footnote style is @samp{end}, or if the output is |
| not split, footnotes are put at the end of the output. If set to |
| @samp{separate}, and the output is split, they are placed in a |
| separate file. |
| |
| @item --force |
| @itemx -F |
| @opindex --force |
| @opindex -F |
| @c @vindex FORCE |
| Ordinarily, if the input file has errors, the output files are not |
| created. With this option, they are preserved. |
| |
| @item --help |
| @itemx -h |
| @opindex --help@r{, for @command{texi2any}} |
| @opindex -h |
| Print a message with available options and basic usage, then exit |
| successfully. |
| |
| @item --html |
| @opindex --html |
| Generate HTML output (rather than Info). By default, the HTML output |
| is split into one output file per node, and the split output is written |
| into a subdirectory based on the name of the input file. |
| @xref{Generating HTML}. |
| |
| @item -I @var{dir} |
| @opindex -I @var{dir} |
| Append @var{dir} to the directory search list for finding files that |
| are included using the @code{@@include} command. By default, |
| @command{texi2any} searches the current directory and the input file |
| path leading directory if there is one (and it is not the current directory). |
| The @var{dir} value can be a single directory or a list of several |
| directories separated by the usual path separator character (@samp{:} on |
| Unix-like systems, @samp{;} on Windows). |
| |
| @item --ifdocbook |
| @opindex --ifdocbook |
| @item --ifepub |
| @opindex --ifepub |
| @itemx --ifhtml |
| @opindex --ifhtml |
| @itemx --ifinfo |
| @opindex --ifinfo |
| @itemx --iflatex |
| @opindex --iflatex |
| @itemx --ifplaintext |
| @opindex --ifplaintext |
| @itemx --iftex |
| @opindex --iftex |
| For the given format, process @samp{@@if@var{format}} and |
| @samp{@@@var{format}} commands, and do not process |
| @samp{@@ifnot@var{format}}, regardless of the format being output. |
| For instance, if @option{--iftex} is given, then @samp{@@iftex} and |
| @samp{@@tex} blocks will be read, and @samp{@@ifnottex} blocks will be |
| ignored. |
| |
| @item --no-ifdocbook |
| @opindex --no-ifdocbook |
| @item --no-ifepub |
| @opindex --no-ifepub |
| @itemx --no-ifhtml |
| @opindex --no-ifhtml |
| @itemx --no-ifinfo |
| @opindex --no-ifinfo |
| @itemx --no-iflatex |
| @opindex --no-iflatex |
| @itemx --no-ifplaintext |
| @opindex --no-ifplaintext |
| @itemx --no-iftex |
| @opindex --no-iftex |
| For the given format, do not process @samp{@@if@var{format}} and |
| @samp{@@@var{format}} commands, and do process |
| @samp{@@ifnot@var{format}}, regardless of the format being output. |
| For instance, if @option{--no-ifhtml} is given, then @samp{@@ifhtml} |
| and @samp{@@html} blocks will not be read, and @samp{@@ifnothtml} |
| blocks will be. |
| |
| |
| @item --info |
| @opindex --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 the input file name, or by @code{@@setfilename}, if present |
| (@pxref{Setting the Output File Name}). @xref{Tag and Split Files}. |
| |
| @item --init-file=@var{file} |
| @opindex --init-file=@var{file} |
| Load @var{file} as code to modify the behavior and output of the |
| generated manual. It is customary to use the @code{.pm} or the |
| @code{.init} extensions for these customization files, but that is not |
| enforced; the @var{file} name can be anything. The |
| @option{--conf-dir} option (see above) can be used to add to the list |
| of directories in which these customization files are searched for. |
| @c @xref{Loading Init Files}. |
| |
| @item --internal-links=@var{file} |
| @opindex --internal-links=@var{file} |
| @cindex Internal links, of HTML |
| @c @vindex INTERNAL_LINKS |
| In HTML mode, output a tab-separated file containing three columns: |
| the internal link to an item, the type of the item and the name of the item |
| or the term corresponding to the item which was indexed or entered. |
| |
| The items output are: |
| @table @asis |
| @item output units |
| Output units are the main unit of output documents. Output units contain the |
| content associated with a node or a sectioning command. The item name is |
| the associated node or a sectioning command name. |
| @item sectioning commands |
| The command name without @code{@@}, adjusted for raise/lowersections is |
| prepended to the item name. |
| @item nodes, anchors and floats |
| The type of the element is the command name without @code{@@}. |
| @item index entries |
| The type of the element is the name of the index. |
| @end table |
| |
| The items are in the natural |
| sorting order for the given element. This dump can be useful for |
| post-processors. |
| |
| @item --latex |
| @opindex --latex |
| Generate @LaTeX{} output. |
| |
| @item --macro-expand=@var{file} |
| @itemx -E @var{file} |
| @opindex --macro-expand=@var{file} |
| @opindex -E @var{file} |
| @c @vindex MACRO_EXPAND |
| Output the Texinfo source, with all Texinfo macros expanded, to |
| @var{file}. Normally, the result of macro expansion is used |
| internally by @command{texi2any} and then discarded. |
| |
| @item --no-headers |
| @opindex --no-headers |
| @cindex Node separators, omitting with @option{--no-headers} |
| @cindex Generating plain text files with @option{--no-headers} |
| @cindex Menus, omitting with @option{--no-headers} |
| @c @vindex HEADERS |
| Do not include menus or node separator lines in the output. |
| |
| When generating Info, this is the same as using @option{--plaintext}, |
| resulting in a simple plain text file. Furthermore, output is |
| to standard output unless overridden with @option{-o}. (This |
| behavior is for backward compatibility.) |
| |
| @cindex Navigation links, omitting |
| 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. |
| @xref{Generating HTML}. |
| |
| @item --node-files |
| @itemx --no-node-files |
| @opindex --node-files |
| @opindex --no-node-files |
| @c @vindex NODE_FILES |
| @anchor{@option{--node-files}} |
| With @option{--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 (@pxref{HTML Xref Node Name Expansion}). |
| This makes it possible for section- and chapter-level cross-manual |
| references to succeed (@pxref{HTML Xref Configuration}). |
| |
| If the output is split, this is enabled by default. If the output is |
| not split, @option{--node-files} enables the creation of the |
| redirection files, in addition to the monolithic main output file. |
| @option{--no-node-files} suppresses the creation of redirection files |
| in any case. This option has no effect with any output format other |
| than HTML@. @xref{Generating HTML}. |
| |
| @item --no-validate |
| @itemx --no-pointer-validate |
| @opindex --no-validate |
| @opindex --no-pointer-validate |
| @cindex Pointer validation |
| @anchor{Pointer Validation}@c |
| Suppress the pointer-validation phase of @command{texi2any}---a dangerous |
| thing to do. This can also be done with the @code{@@novalidate} |
| command (@pxref{Formatting Partial Documents}). |
| |
| If you do not suppress pointer validation, @command{texi2any} will check |
| the validity of cross-references and menu entries in the Texinfo file, as |
| well as node pointers if they are given explicitly. |
| |
| @ignore @c TODO this may not be accurate |
| If node pointers are implicitly determined, @command{texi2any} checks |
| that the tree constructed from the document's menus matches the |
| tree constructed from the sectioning commands. For example, if a |
| chapter-level menu mentions nodes @var{n1} and @var{n2}, in that order, |
| nodes @var{n1} and @var{n2} must be associated with @code{@@section} |
| commands in the chapter. |
| |
| If node pointers are explicitly determined, here is the list of what |
| is checked: |
| |
| @enumerate |
| @item |
| If a `Next', `Previous', or `Up' node reference is a reference to a |
| node in the current file and is not an external reference such as to |
| @file{(dir)}, then the referenced node must exist. |
| |
| @item |
| Every node except the `Top' node must have an `Up' pointer. |
| |
| @item |
| The node referenced by an `Up' pointer must itself reference the |
| current node through a menu item, unless the node referenced by `Up' |
| has the form @samp{(@var{file})}. |
| @end enumerate |
| @end ignore |
| |
| @item --no-warn |
| @opindex --no-warn |
| @c @vindex NO_WARN |
| Suppress warning messages (but not error messages). |
| |
| @item --number-footnotes |
| @itemx --no-number-footnotes |
| @opindex --no-number-footnotes |
| @c @vindex NUMBER_FOOTNOTES |
| With @option{--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. |
| |
| @item --number-sections |
| @itemx --no-number-sections |
| @opindex --number-sections |
| @opindex --no-number-sections |
| @c @vindex NUMBER_SECTIONS |
| With @option{--number-sections} (the default), output chapter, |
| section, and appendix numbers as in printed manuals. This works only |
| with hierarchically structured manuals. You should specify |
| @code{--no-number-sections} if your manual is not normally structured. |
| |
| |
| @item --output=@var{file} |
| @itemx -o @var{file} |
| @opindex --output=@var{file} |
| @opindex -o @var{file} |
| @c @vindex OUTFILE |
| @c @vindex SUBDIR |
| Specify that the output should be directed to @var{file}. This |
| overrides any file name specified in a @code{@@setfilename} command |
| found in the Texinfo source. If neither @code{@@setfilename} nor this |
| option are specified, the input file name is used to determine the |
| output name. @xref{Setting the Output File Name}. |
| |
| If @var{file} is @samp{-}, output goes to standard output and |
| @samp{--no-split} is implied. |
| |
| If @var{file} is a directory or ends with a @samp{/} the usual rules |
| are used to determine the output file name (namely, use |
| @code{@@setfilename} or the input file name) but the files are written |
| to the @var{file} directory. For example, @samp{texi2any -o bar/ |
| foo.texi}, with or without @option{--no-split}, will write |
| @file{bar/foo.info}, and possibly other files, under @file{bar/}. |
| |
| When generating HTML and output is split, @var{file} is used as the |
| name for the directory into which all files are written. For example, |
| @samp{texi2any -o bar --html foo.texi} will write |
| @file{bar/index.html}, among other files. |
| |
| When generating EPUB a container directory for the files and directories needed |
| for the EPUB format is created, as well as the EPUB output file. If @var{file} |
| corresponds to a directory, the container directory is placed within @var{file}. |
| The EPUB output file is never put in this directory. If @var{file} corresponds |
| to a file, it is used for the EPUB output file name. |
| |
| @item --output-indent=@var{val} |
| @opindex --outputindent |
| This option now does nothing, but remains for compatibility. (It used |
| to alter indentation in XML-based formats such as DocBook output.) |
| |
| @item -P @var{path} |
| @opindex -P @var{path} |
| Prepend @var{path} to the directory search list for @code{@@include}. |
| See @samp{-I} above. |
| |
| @item --paragraph-indent=@var{indent} |
| @itemx -p @var{indent} |
| @opindex --paragraph-indent=@var{indent} |
| @opindex -p @var{indent} |
| Set the paragraph indentation style to @var{indent}. The value set by |
| this option overrides the value set in a Texinfo file by an |
| @code{@@paragraphindent} command (@pxref{@code{@@paragraphindent}}). |
| The value of @var{indent} is interpreted as follows: |
| |
| @table @asis |
| @item @samp{asis} |
| Preserve any existing indentation (or lack thereof) at the beginnings |
| of paragraphs. |
| |
| @item @samp{0} or @samp{none} |
| Delete any existing indentation. |
| |
| @item @var{num} |
| Indent each paragraph by @var{num} spaces. |
| @end table |
| |
| The default is to indent by two spaces, except for paragraphs |
| following a section heading, which are not indented. |
| |
| @item --pdf |
| @opindex --pdf |
| Generate a PDF file using @command{texi2dvi --pdf}, rather than Info |
| (@pxref{@command{texi2any} Printed Output}). |
| |
| @item --plaintext |
| @opindex --plaintext |
| @cindex Plain text output with @option{--plaintext} |
| @cindex ASCII text output with @option{--plaintext} |
| @cindex Generating plain text files with @option{--plaintext} |
| @cindex Node separators, omitting with @option{--plaintext} |
| @cindex Menus, omitting with @option{--plaintext} |
| @cindex @file{INSTALL} file, generating |
| 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 |
| @file{INSTALL} file). |
| |
| With this option the output goes to standard output by default, instead |
| of to a file with a name based on the input file name or @code{@@setfilename}; |
| this can be overridden with @option{-o}. |
| |
| @item --ps |
| @opindex --ps |
| Generate a PostScript file using @command{texi2dvi --ps}, rather than |
| Info (@pxref{@command{texi2any} Printed Output}). |
| |
| @item --set-customization-variable @var{var}=@var{value} |
| @itemx -c @var{var}=@var{value} |
| @opindex --set-customization-variable @var{var}=@var{value} |
| @opindex -c @var{var}=@var{value} |
| Set the customization variable @var{var} to @var{value}. The @code{=} |
| is optional, but both @var{var} and @var{value} must be quoted to the |
| shell as necessary so the result is a single word. Many aspects of |
| @command{texi2any} behavior and output may be controlled by |
| customization variables, beyond what can be set in the document by |
| @@-commands and with other command line switches. @xref{Customization |
| Variables}. |
| |
| @item --split=@var{how} |
| @itemx --no-split |
| @opindex --split=@var{how} |
| @opindex --no-split |
| @cindex Splitting of output files |
| @cindex Output file splitting |
| @anchor{Splitting Output} |
| @c |
| 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 (@pxref{Generating |
| HTML}). @option{--no-split} suppresses this splitting of the output. |
| |
| @c @vindex SPLIT |
| Alternatively, @option{--split=@var{how}} may be used to specify at |
| which level the HTML output should be split. The possible values for |
| @var{how} are: |
| |
| @table @samp |
| @item chapter |
| The output is split at @code{@@chapter} and other sectioning |
| @@-commands at this level (@code{@@appendix}, etc.). |
| |
| @item section |
| The output is split at @code{@@section} and similar. |
| |
| @item node |
| The output is split at every node. This is the default. |
| @end table |
| |
| 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. |
| |
| @item --split-size=@var{num} |
| @opindex --split-size=@var{num} |
| @c @vindex SPLIT_SIZE |
| Keep Info files to at most @var{num} characters if possible; default |
| is 300,000. (However, a single node will never be split across Info |
| files.) |
| |
| @item --trace-includes |
| @opindex --trace-includes |
| @c @vindex TRACE_INCLUDES |
| Print the name of each included file to standard output, including any |
| indirectly included files. An include file is printed only if it was |
| actually found. When this option is given, @command{texi2any} does not |
| output in any output format. (The purpose of this option is to make it |
| easier to collect the sources of a Texinfo manual.) |
| |
| @item --transliterate-file-names |
| @opindex --transliterate-file-names |
| @c @vindex TRANSLITERATE_FILE_NAMES |
| Enable transliteration of non-ASCII characters in node and sectioning commands |
| names for the purpose of file name and sectioning commands identifiers |
| creation. The file names and identifiers obtained that way are platform and |
| processor dependent. @xref{HTML Xref 8-bit Character Expansion}. |
| |
| Redirection files for anchors and nodes are not affected, therefore if |
| @option{--node-files} is enabled, files with non-transliterated names are |
| created too. It is recommended to have non-translitered file names |
| created for nodes such that cross-references to the generated manual |
| succeed. @xref{@option{--node-files}}. @xref{HTML Xref Configuration}. |
| |
| @item -U @var{var} |
| Cause @var{var} to be undefined. This is equivalent to @code{@@clear |
| @var{var}} in the Texinfo file (@pxref{@code{@@set @@clear @@value}}). |
| |
| @item --verbose |
| @opindex --verbose |
| @c @vindex VERBOSE |
| Cause @command{texi2any} to display messages saying what it is doing. |
| Normally, @command{texi2any} only outputs messages if there are errors or |
| warnings. |
| |
| @item --version |
| @itemx -V |
| @opindex --version@r{, for @command{texi2any}} |
| @opindex -V |
| Print the version number, then exit successfully. |
| |
| @item --Xopt @var{str} |
| @opindex --Xopt @var{str} |
| Pass @var{str} (a single shell word) to @command{texi2dvi}; may be |
| repeated (@pxref{@command{texi2any} Printed Output}). |
| |
| @end table |
| |
| |
| @node @command{texi2any} Environment Variables |
| @nodedescription Control over output format and XS use. |
| @section Environment Variables Recognized by @command{texi2any} |
| |
| @cindex Environment variable @code{TEXINFO_OUTPUT_FORMAT} |
| @command{texi2any} also reads the environment variable |
| @env{TEXINFO_OUTPUT_FORMAT} to determine the output format, if not |
| overridden by a command line option. The value should be one of: |
| |
| @example |
| docbook dvi dvipdf epub3 html info latex pdf plaintext ps |
| @end example |
| |
| If not set or otherwise specified, Info output is the default. |
| |
| @code{TEXINFO_OUTPUT_FORMAT} may take some other special values, which do |
| not correspond to any command-line settable output format |
| (@pxref{Output Format Selection}). |
| |
| The customization variable of the same name is also read; if set, that |
| overrides an environment variable setting, but not a command-line |
| option. @xref{Output Format Selection}. |
| |
| @vindex TEXINFO_XS |
| @cindex Perl extension modules (XS) |
| You can control the Perl @command{texi2any} implementation's use of Perl |
| extension modules by setting the @env{TEXINFO_XS} environment variable. |
| These modules are compiled native code that the interpreted Perl code can use. |
| Ideally, these extension modules should just work, and the only noticeable |
| difference they should make is that @command{texi2any} finishes running |
| sooner. However, you can use this environment variable for the purposes |
| of troubleshooting: for example, if you have problems with the output of |
| @command{texi2any} varying depending on whether the extension modules are |
| in use. |
| |
| The following values of @env{TEXINFO_XS} are recognized by |
| @command{texi2any}: |
| |
| @table @samp |
| @item default |
| The default behavior. Try to load extension modules enabled at |
| build time. Abort if an extension module fails to load. |
| |
| @item debug |
| Same as default, printing many messages while loading extension |
| modules. |
| |
| @item omit |
| Do not use extension modules. |
| @end table |
| |
| The C @command{texi2any} implementation always try to load Perl extension |
| modules when calling interpreted Perl code and aborts if an extension |
| cannot be loaded. Setting @env{TEXINFO_XS} to @code{omit} with the C |
| @command{texi2any} implementation is an error and is ignored. |
| |
| @c this environment variable is likely to be removed, so do not document |
| @c it here. |
| @ignore |
| @vindex TEXINFO_C_EMBED_PERL |
| @cindex Embedded Perl in C @command{texi2any} |
| You can control the C @command{texi2any} implementation's use of embedded |
| Perl, by setting the @env{TEXINFO_C_EMBED_PERL} environment variable to |
| @samp{0} to disable the use of embedded Perl. Set with care, as HTML |
| customization initialization files, conversion to most output formats and |
| optimal index sorting require Perl. |
| @end ignore |
| |
| |
| @node @command{texi2any} Printed Output |
| @nodedescription Calling @command{texi2dvi}. |
| @section @command{texi2any} Printed Output |
| |
| @cindex Printed output, through @command{texi2any} |
| @cindex Output, printed through @command{texi2any} |
| |
| To justify the name Texinfo-to-@emph{any}, @command{texi2any} has |
| basic support for creating printed output in the various formats: |
| @TeX{} DVI, PDF, and PostScript. This is done via the simple method |
| of executing the @command{texi2dvi} program when those output formats |
| are requested, after checking the validity of the input to give users |
| the benefit of @command{texi2any}'s error checking. If you don't want |
| such error checking, perhaps because your manual plays advanced @TeX{} |
| tricks together with @file{texinfo.tex}, just invoke |
| @command{texi2dvi} directly. |
| |
| The output format options for this are @option{--dvi}, |
| @option{--dvipdf}, @option{--pdf}, and @option{--ps}. @xref{Format |
| with @command{texi2dvi}}, for more details on these options and general |
| @command{texi2dvi} operation. In addition, the @option{--verbose}, |
| @option{--silent}, and @option{--quiet} options are passed on if |
| specified; the @option{-I} and @option{-o} options are likewise passed |
| on with their arguments, and @option{--debug} without its argument. |
| |
| The only option remaining that is related to the @command{texi2dvi} |
| invocation is @option{--Xopt}. Here, just the argument is passed on |
| and multiple @option{--Xopt} options accumulate. This provides a way |
| to construct an arbitrary command line for @command{texi2dvi}. For |
| example, running |
| |
| @example |
| texi2any --Xopt -t --Xopt @@afourpaper --pdf foo.texi |
| @end example |
| |
| @noindent is equivalent to running |
| |
| @example |
| texi2dvi -t @@afourpaper --pdf foo.texi |
| @end example |
| |
| @noindent except for the validity check. |
| |
| Although one might wish that other options to @command{texi2any} would |
| take effect, they don't. For example, running @samp{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 |
| @code{TEXI2DVI} customization variable (@pxref{Customization Variables for |
| Multiple Formats}). As you might guess, the default is @samp{texi2dvi}. |
| |
| @command{texi2any} itself does not generate any normal output when it |
| invokes @command{texi2dvi}, only diagnostic messages. |
| |
| |
| @node Customization Variables |
| @nodedescription Configuring @command{texi2any}. |
| @section Customization Variables |
| |
| @quotation Warning |
| These customization variable names and meanings may change in any |
| Texinfo release. We always try to avoid incompatible changes, but we |
| cannot absolutely promise, since needs change over time. |
| @end quotation |
| |
| Many aspects of the behavior and output of @command{texi2any} may be |
| modified by modifying so-called @dfn{customization variables}. These |
| fall into a few general categories: |
| |
| @itemize @bullet |
| @item |
| Those associated with @@-commands; for example, |
| @code{@@documentlanguage}. |
| |
| @item |
| Those associated with command-line options; for example, the |
| customization variable @code{SPLIT} is associated with the |
| @option{--split} command-line option. @code{TEXINFO_OUTPUT_FORMAT} |
| is set based on output format command line options and |
| allows specifying the output format. |
| |
| @item |
| Those affecting the global behavior of @command{texi2any}, in particular |
| Texinfo code parsing. |
| |
| @item |
| Those associated with particular output formats. |
| (Variables only relevant for HTML output are documented in @ref{HTML |
| Output Customization}.) |
| |
| @item |
| Those relevant for multiple output formats. |
| @end itemize |
| |
| You may set customization variables on the command line using |
| @code{--set-customization-variable '@var{var} @var{value}'} (quoting |
| the variable/value pair to the shell) or |
| @code{--set-customization-variable @var{var}=@var{value}} (using |
| @code{=}). A special @var{value} is @samp{undef}, which sets the |
| variable to this special ``undefined'' Perl value. |
| |
| The sections below give the details for each of these. |
| |
| @menu |
| * Commands: Customization Variables for @@-Commands. |
| * Options: Customization Variables and Options. |
| * Format: Output Format Selection. |
| * Global: Global Customization Variables. |
| * Info: Info and Plaintext Customization Variables. |
| * LaTeX: @LaTeX{} Customization Variables. |
| * Other: Other Formats Customization Variables. |
| * Formats: Customization Variables for Multiple Formats. |
| @end menu |
| |
| |
| @node Customization Variables for @@-Commands |
| @subsection Customization Variables for @@-Commands |
| |
| @cindex Customization variables for @@-commands |
| @cindex @sortas{at} @@-commands @subentry customization variables for |
| |
| Each of the following @@-commands has an associated customization |
| variable with the same name (minus the leading @code{@@}): |
| |
| @example |
| @@afivepaper @@afourpaper @@afourlatex |
| @@afourwide @@allowcodebreaks @@bsixpaper |
| @@contents @@codequotebacktick |
| @@codequoteundirected @@deftypefnnewline @@documentdescription |
| @@documentencoding @@documentlanguage @@documentscript |
| @@evenfooting @@evenfootingmarks @@evenheading |
| @@evenheadingmarks @@everyfooting @@everyfootingmarks |
| @@everyheading @@everyheadingmarks |
| @@exampleindent @@firstparagraphindent |
| @@fonttextsize @@footnotestyle @@frenchspacing |
| @@headings @@kbdinputstyle @@microtype |
| @@novalidate @@oddfooting @@oddfootingmarks |
| @@oddheading @@oddheadingmarks @@pagesizes |
| @@paragraphindent @@setfilename @@setchapternewpage |
| @@shortcontents @@smallbook @@summarycontents |
| @@urefbreakstyle @@xrefautomaticsectiontitle |
| @end example |
| |
| Setting such a customization variable to a value @samp{foo} is similar |
| to executing @code{@@@var{cmd} foo}. It is not exactly the same, |
| though, since any side effects of parsing the Texinfo source are not |
| redone. Also, some variables do not take Texinfo code when generating |
| particular formats, but an argument that is already formatted. This |
| is the case, for example, for HTML for @code{documentdescription}. |
| |
| Note that if @command{texi2any} is invoked to process the file with |
| @TeX{} (e.g., with the @option{--pdf} option), then these customization |
| variables may not be passed on to @TeX{}. |
| |
| |
| @node Customization Variables and Options |
| @subsection Customization Variables and Options |
| |
| @cindex Customization variables for options |
| @cindex Options, customization variables for |
| |
| The following table gives the customization variables associated with |
| some command line options. @xref{Invoking @command{texi2any}}, for the |
| meaning of the options. |
| |
| @multitable @columnfractions 0.5 0.5 |
| @headitem Option @tab Variable |
| @item |
| @vindex ENABLE_ENCODING |
| @option{--enable-encoding} @tab @code{ENABLE_ENCODING} |
| @item |
| @option{--document-language} @tab @code{documentlanguage} |
| @item |
| @vindex ERROR_LIMIT |
| @option{--error-limit} @tab @code{ERROR_LIMIT} |
| @item |
| @vindex FILLCOLUMN |
| @option{--fill-column} @tab @code{FILLCOLUMN} |
| @item |
| @option{--footnote-style} @tab @code{footnotestyle} |
| @item |
| @vindex FORCE |
| @option{--force} @tab @code{FORCE} |
| @item |
| @vindex HEADERS |
| @option{--headers} @tab @code{HEADERS}, @code{FORMAT_MENU} |
| @item |
| @vindex INTERNAL_LINKS |
| @option{--internal-links} @tab @code{INTERNAL_LINKS} |
| @item |
| @vindex MACRO_EXPAND |
| @option{--macro-expand} @tab @code{MACRO_EXPAND} |
| @item |
| @vindex novalidate |
| @option{--no-validate} @tab @code{novalidate} |
| @item |
| @vindex NO_WARN |
| @option{--no-warn} @tab @code{NO_WARN} |
| @item |
| @vindex NODE_FILES |
| @option{--node-files} @tab @code{NODE_FILES} |
| @item |
| @vindex NUMBER_FOOTNOTES |
| @option{--number-footnotes} @tab @code{NUMBER_FOOTNOTES} |
| @item |
| @vindex NUMBER_SECTIONS |
| @option{--number-sections} @tab @code{NUMBER_SECTIONS} |
| @item |
| @vindex OUTFILE |
| @vindex SUBDIR |
| @option{--output} @tab @code{OUTFILE}, @code{SUBDIR} |
| @item |
| @vindex paragraphindent |
| @option{--paragraph-indent} @tab @code{paragraphindent} |
| @item |
| @vindex SPLIT |
| @option{--split} @tab @code{SPLIT} |
| @item |
| @vindex SPLIT_SIZE |
| @option{--split-size} @tab @code{SPLIT_SIZE} |
| @item |
| @vindex TRACE_INCLUDES |
| @option{--trace-includes} @tab @code{TRACE_INCLUDES} |
| @item |
| @vindex TRANSLITERATE_FILE_NAMES |
| @option{--transliterate-file-names} @tab @code{TRANSLITERATE_FILE_NAMES} |
| @item |
| @vindex VERBOSE |
| @option{--verbose} @tab @code{VERBOSE} |
| @end multitable |
| |
| Setting such a customization variable to a value @samp{foo} is |
| essentially the same as specifying the @code{--@var{opt}=foo} if the |
| option takes an argument, or @code{--@var{opt}} if not. |
| |
| |
| @node Output Format Selection |
| @subsection Output Format Selection |
| |
| @c @vindex TEXINFO_OUTPUT_FORMAT |
| The customization variable @code{TEXINFO_OUTPUT_FORMAT} takes the |
| value of the format output by @command{texi2any}. This can be one of |
| the usual output formats that can be specified with options, or various |
| other special output formats: |
| |
| @table @samp |
| @item docbook |
| @itemx dvi |
| @itemx dvipdf |
| @itemx epub3 |
| @itemx html |
| @itemx info |
| @itemx pdf |
| @itemx plaintext |
| @itemx ps |
| These correspond to the command-line options (and |
| @code{TEXINFO_OUTPUT_FORMAT} environment variable values) of the same |
| name. The @code{TEXINFO_OUTPUT_FORMAT} customization variable value |
| is set when command-line options (or @code{TEXINFO_OUTPUT_FORMAT} |
| environment variable values) set the output format. |
| @xref{Invoking @command{texi2any}}. |
| |
| @cindex tree representation, for debugging |
| @cindex debugging document, with tree representation |
| @item debugtree |
| Instead of generating a regular output format, output a text representation |
| of the tree obtained by parsing the input texinfo document. |
| |
| @item parse |
| Do only Texinfo source parsing; there is no output. |
| |
| @item plaintexinfo |
| Output the Texinfo source with all the macros, @code{@@include} and |
| @code{@@value@{@}} expanded. This is similar to setting |
| @option{--macro-expand}, but instead of being output in addition to |
| the normal conversion, output of Texinfo is the main output. |
| |
| @cindex raw text output |
| @item 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. |
| |
| @item structure |
| Do only Texinfo source parsing and determination of the document |
| structure; there is no output. |
| |
| @cindex SXML output |
| @cindex S-expressions, output format |
| @item texinfosxml |
| Output the document in TexinfoSXML representation, a syntax for |
| writing XML data using Lisp S-expressions. This output format |
| is deprecated and will be removed in a future release. |
| |
| @cindex XML Texinfo output |
| @item texinfoxml |
| Output the document in Texinfo XML representation. This output format |
| is deprecated and will be removed in a future release. |
| |
| @cindex spell checking |
| @cindex word counting |
| @pindex detexinfo |
| @cindex stripping Texinfo commands |
| @item textcontent |
| Output the text content only, stripped of commands; this is useful for |
| spell checking or word counting, for example. The trivial |
| @code{detexinfo} script setting this is in the @file{util} directory |
| of the Texinfo source as an example. It's one line: |
| |
| @example |
| exec texi2any -c TEXINFO_OUTPUT_FORMAT=textcontent "$@@" |
| @end example |
| @end table |
| |
| |
| @node Global Customization Variables |
| @subsection Global Customization Variables |
| |
| This table gives the customization variables which affect the global behavior |
| of @command{texi2any}. |
| |
| @vtable @code |
| @item CHECK_MISSING_MENU_ENTRY |
| When a @code{@@menu} block occurs in a node, check if there is a menu |
| entry for all subordinate nodes in the document sectioning structure. On |
| by default. |
| |
| @item CHECK_NORMAL_MENU_STRUCTURE |
| Warn if the node pointers (either explicitly or automatically set) |
| are not consistent with the order of node menu entries. This is a more |
| thorough structure check than that provided by |
| @code{CHECK_MISSING_MENU_ENTRY}. On by default. |
| |
| @item COLLATION_LANGUAGE |
| By default, @command{texi2any} sorts document indices according to the |
| @dfn{Unicode Collation Algorithm} (defined in |
| @uref{http://www.unicode.org/reports/tr10/, Unicode Technical Standard #10}), |
| without language-specific collation tailoring. If set, use the language |
| for linguistic tailoring of index sorting. |
| |
| Currently, @command{texi2any} gives no warning if there is no support |
| for linguistic tailoring due to either missing software or missing |
| support for the specified language. |
| |
| In Perl, the @code{Unicode::Collate::Locale} module is used for linguistic |
| tailoring; therefore if this module is not installed, the variable will be |
| silently ignored. |
| |
| If @code{USE_UNICODE_COLLATION} is set to @samp{0}, there is no Unicode |
| collation and so no linguistic tailoring either. |
| |
| See also the @code{DOCUMENTLANGUAGE_COLLATION} variable, described below. |
| |
| @item COMMAND_LINE_ENCODING |
| Encoding used to decode and encode command-line arguments. Default is based on |
| the locale encoding. This may affect file names inserted into output files or |
| error messages printed by the program. |
| |
| Note that some file and directory names from the command line may |
| not be decoded immediately, and may not be decoded at all. |
| |
| It is also used to encode command-line argument passed to commands called from |
| @command{texi2any}. For example, @command{latex2html} will be called from |
| @command{texi2any} if @code{HTML_MATH} is set to @samp{l2h}. |
| |
| @item CPP_LINE_DIRECTIVES |
| Recognize @code{#line} directives in a ``preprocessing'' pass |
| (@pxref{External Macro Processors}); on by default. |
| |
| @item DEBUG |
| If set, debugging output is generated; default is off (zero). |
| @c The integer value specifies what kinds of debugging output are |
| @c generated. It is a bitmask. Setting it to 255 ensures having all |
| @c available debugging output. |
| |
| @item DOC_ENCODING_FOR_INPUT_FILE_NAME |
| If set, use the input Texinfo document encoding information for |
| the encoding of input file names, such as file names specified as |
| @code{@@include} or @code{@@verbatiminclude} arguments. If unset, use |
| the locale encoding instead. Default is set, except on MS-Windows where |
| the locale encoding is used by default. |
| |
| Note that this is for file names only; the default encoding or |
| @code{@@documentencoding} is always used for the encoding of file |
| content (@pxref{@code{@@documentencoding}}). |
| |
| The @code{INPUT_FILE_NAME_ENCODING} variable overrides this variable. |
| |
| @item DOC_ENCODING_FOR_OUTPUT_FILE_NAME |
| If set, use the input Texinfo document encoding information for the |
| encoding of output file names, such as files specified with @option{--output}. |
| If unset, use the locale encoding instead. Default is unset, so files |
| names are encoded using the current locale. |
| |
| Note that this is for file names only; @code{OUTPUT_ENCODING_NAME} |
| is used for the encoding of file content. |
| |
| The @code{OUTPUT_FILE_NAME_ENCODING} variable overrides this variable. |
| |
| @item DOCUMENTLANGUAGE_COLLATION |
| If set, try to use the language specified in a @code{@@documentlanguage} |
| (and @code{@@documentscript}) directive for language-specific tailoring of |
| index sorting. See also the @code{COLLATION_LANGUAGE} variable, described |
| above. (@xref{Setting the language}.) |
| |
| @item DUMP_STRUCTURE |
| For debugging. If set, the tree constructed upon parsing a Texinfo |
| document and determining the document structure is output to the file; |
| if set to @samp{-} output to standard error. Default false. |
| |
| @item DUMP_TEXI |
| For debugging. If set, no conversion is done, only parsing and macro |
| expansion. If the option @option{--macro-expand} is set, the Texinfo |
| source is also expanded to the corresponding file. Default false. |
| |
| @item DUMP_TREE |
| For debugging. If set, the tree constructed upon parsing a Texinfo |
| document is output to the file; if set to @samp{-} output to standard error. |
| Default false. |
| |
| @item FORMAT_MENU |
| If set to @samp{menu}, output Texinfo menus. This is the default for |
| Info. @samp{sectiontoc} is the default setting for HTML, where instead |
| of the contents of @code{@@menu} blocks being output, a list of subordinate |
| sections is output in each node. Set to @samp{menu_no_detailmenu} instead |
| of @samp{menu} in HTML if you want menus but no automatically generated |
| @code{@@detailmenu} in the Top node master menu. If set to |
| @samp{nomenu}, do not output menus. |
| |
| This variable is set to @samp{nomenu} when generating DocBook, or when |
| @option{--no-headers} is specified. |
| |
| @c document? |
| @ignore |
| @item HANDLER_FATAL_ERROR_LEVEL |
| This variable sets the error level above which errors returned by |
| user defined functions registered to be called at different stages |
| are considered to be fatal errors. You should not need to change this |
| value. Default 100. |
| @end ignore |
| |
| @item IGNORE_SPACE_AFTER_BRACED_COMMAND_NAME |
| If set, spaces are ignored after an @@-command that takes braces. |
| Default true, matching the @TeX{} behavior. |
| |
| @cindex Encoding @subentry input file names |
| @item INPUT_FILE_NAME_ENCODING |
| Encoding used for input file names. This variable overrides |
| any encoding from the document or current locale. Normally, you do |
| not need to set this variable, but it can be used if file names are |
| in a certain character encoding on a filesystem. An alternative is to |
| set @code{DOC_ENCODING_FOR_INPUT_FILE_NAME} to @samp{0} to use the locale |
| encoding. See also @code{OUTPUT_FILE_NAME_ENCODING}. |
| |
| @item LOCALE_ENCODING |
| Locale encoding obtained from the system. You should not need to |
| explicitly set this variable. |
| |
| @item MAX_MACRO_CALL_NESTING |
| The maximal number of recursive calls of @@-commands defined through |
| @code{@@rmacro}; default 100000. The purpose of this variable is to |
| avoid infinite recursions. |
| |
| @item MESSAGE_ENCODING |
| Encoding used to encode messages output by @command{texi2any}. Default is |
| based on the locale encoding. |
| |
| @item NO_INDEX |
| If set, index entries are not recorded and @@-commands related to |
| indices, such as @code{@@printindex}, @code{@@synindex} or @code{@@defindex} |
| have no effect. Default false. |
| |
| @item NO_USER_COMMANDS |
| If set, definitions of user-defined @@-command are ignored. @code{@@alias}, |
| @code{@@definfoenclose}, @code{@@defindex}, @code{@@macro} and similar |
| @@-commands have no effect. Default false. |
| |
| @item 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 |
| @code{@@documentencoding}), this information is used to set the output |
| encoding name, otherwise the output encoding is based on the |
| default encoding. @xref{@code{@@documentencoding}}. |
| |
| @cindex Encoding @subentry output file names |
| @item OUTPUT_FILE_NAME_ENCODING |
| Encoding used for output file names. This variable overrides |
| any encoding from the document or current locale. |
| |
| Normally, you do not need to set this variable, but it can be used if file |
| names should be created in a certain character encoding on a filesystem. |
| See also @code{INPUT_FILE_NAME_ENCODING}. |
| |
| @item PACKAGE |
| @itemx PACKAGE_VERSION |
| @itemx PACKAGE_AND_VERSION |
| @itemx PACKAGE_URL |
| @itemx PACKAGE_NAME |
| The implementation's short package name, package version, package name |
| and version concatenated, package URL@:, and full package name, |
| respectively. By default, these variables are all set through |
| Autoconf, Automake, and @code{configure}. |
| |
| @item PREFIX |
| The output file prefix, which is prepended to some output file names. |
| By default it is set by @code{@@setfilename} or from the input file |
| (@pxref{Setting the Output File Name}). How this value is used depends on the |
| value of other customization variables or command line options, such |
| as whether the output is split. The default is unset. |
| |
| @item PROGRAM |
| Name of the program used. By default, it is set to the name of the |
| program launched, with a trailing @samp{.pl} removed. |
| |
| @pindex texi-elements-by-size |
| @cindex Longest nodes, finding |
| @cindex Sorting nodes by size |
| @item SORT_ELEMENT_COUNT |
| If set, the name of a file to which a list of elements (nodes or |
| sections, depending 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 program @code{texi-elements-by-size} in |
| the @file{util/} directory of the Texinfo source distribution |
| (@pxref{texi-elements-by-size}). |
| |
| @item SORT_ELEMENT_COUNT_WORDS |
| When dumping the elements-by-size file (see preceding item), use word |
| counts instead of line counts; default false. |
| |
| @item TEST |
| If set to a positive integer, some variables which are normally dynamically |
| generated anew for each run (date, program name, version) are set to |
| fixed and given values. Some file names may also have the directory part |
| removed. Also code that gives more reproducible output may be selected. |
| This is useful to compare the output to a reference file, as is done for the |
| tests. Features not selected in the default case but interesting for tests are |
| also enabled. For example, code related to memory release and checks on |
| released memory. If the value is higher, more checks are enabled, which may |
| require additional Perl modules installation. The default is undef. |
| |
| @item TEXINFO_OUTPUT_FORMAT |
| The generated output format. Set from command line with options such as |
| @option{--html}, as the @env{TEXINFO_OUTPUT_FORMAT} environment variable |
| value (@pxref{@command{texi2any} Environment Variables}) or as a customization |
| option. @xref{Output Format Selection} |
| |
| @item 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. |
| |
| By default, the tree transformations @samp{move_index_entries_after_items} |
| and @samp{relate_index_entries_to_table_entries} are executed |
| for HTML and DocBook output. |
| Here's an example of updating the master menu in a document: |
| |
| @example |
| texi2any \ |
| -c TREE_TRANSFORMATIONS=regenerate_master_menu \ |
| -c TEXINFO_OUTPUT_FORMAT=plaintexinfo \ |
| mydoc.texi \ |
| -o /tmp/out |
| @end example |
| |
| @noindent (Caveat: Since @samp{plaintexinfo} output expands |
| Texinfo macros and conditionals, it's necessary to remove any such |
| differences before installing the updates in the original document. |
| This may be remedied in a future release.) |
| |
| The following transformations are currently supported (many are used |
| in the @code{pod2texi} utility distributed with Texinfo; |
| @pxref{Invoking @command{pod2texi}}): |
| |
| @ftable @samp |
| @item complete_tree_nodes_menus |
| Add menu entries or whole menus for nodes associated with sections of |
| any level, based on the sectioning tree. |
| |
| @item complete_tree_nodes_missing_menu |
| Add whole menus for nodes associated with sections without menu. The |
| menus are based on the sectioning tree. |
| |
| @item fill_gaps_in_sectioning |
| Adds empty @code{@@unnumbered...} sections in a tree to fill gaps in |
| sectioning. For example, an @code{@@unnumberedsec} will be inserted |
| if a @code{@@chapter} is followed by a @code{@@subsection}. |
| |
| @item insert_nodes_for_sectioning_commands |
| Insert nodes for sectioning commands lacking a corresponding node. |
| |
| @item move_index_entries_after_items |
| In @code{@@enumerate} and @code{@@itemize}, move index entries |
| appearing just before an @code{@@item} to just after the |
| @code{@@item}. Comment lines between index entries are moved too. As |
| mentioned, this is always done for HTML and DocBook output. |
| |
| @item regenerate_master_menu |
| Update the Top node master menu, either replacing the (first) |
| @code{@@detailmenu} in the Top node menu, or creating it at the end of |
| the Top node menu. |
| |
| @item relate_index_entries_to_table_entries |
| In @code{@@table}, @code{@@vtable} and @code{@@ftable}, |
| reassociate the index entry information from an index @@-command |
| appearing right after an @code{@@item} line with the first element of |
| the @code{@@item}. Remove the index @@-command from the tree. |
| |
| @end ftable |
| |
| @item USE_SETFILENAME_EXTENSION |
| Default is on for Info, off for other output. If set, use exactly |
| what @code{@@setfilename} gives for the output file name, including |
| the extension. You should not need to explicitly set this variable. |
| |
| @item USE_UNICODE_COLLATION |
| By default, @command{texi2any} sorts document indices according to |
| the @dfn{Unicode Collation Algorithm} (defined in |
| @uref{http://www.unicode.org/reports/tr10/, Unicode Technical Standard #10}), |
| which performs a @dfn{multi-level} ordering of strings. |
| |
| Set this variable to @samp{0} to use a simpler, faster sorting algorithm. |
| |
| You may find this useful for speeding up @command{texi2any} if you don't care |
| about having the indices sorted correctly, especially when working on |
| the draft of a manual. |
| |
| @end vtable |
| |
| |
| @node Info and Plaintext Customization Variables |
| @subsection Info and Plaintext Customization Variables |
| |
| This table gives the customization variables which apply to Info |
| and Plaintext formats only. |
| |
| @vtable @code |
| @item ASCII_DASHES_AND_QUOTES |
| For Info output, when set, use plain ASCII characters to represent |
| quotation marks, hyphens and dashes when these are given in the Texinfo |
| source as @samp{-}, @samp{--}, @samp{---}, @samp{`}, @samp{``}, |
| @samp{'}, and @samp{''}, rather than UTF-8 directional quotation marks, |
| en dashes, vel sim. On by default. |
| |
| @item ASCII_GLYPH |
| For Info output, use ASCII output for glyph commands such as the copyright |
| sign (@command{@@copyright@{@}}, becoming @samp{(C)}), |
| and the bullet symbol (@command{@@bullet@{@}}, becoming @samp{*}), rather |
| than other Unicode sequences. Off by default. |
| |
| @item ASCII_PUNCTUATION |
| Avoid any unnecessary or gratuitous non-ASCII, UTF-8 sequences in the |
| output. Implies both @code{ASCII_DASHES_AND_QUOTES} and @code{ASCII_GLYPH} |
| and additionally affects the output of commands such as @code{@@samp} which |
| output quotation marks. |
| |
| @item AUTO_MENU_DESCRIPTION_ALIGN_COLUMN |
| For Info output, column at which to start a menu entry description |
| provided by @code{@@nodedescription} or @code{@@nodedescriptionblock}. |
| Undefined by default, in which case 45% of the fill column value is used |
| (@pxref{Invoking @command{texi2any}}). |
| |
| @item AUTO_MENU_MAX_WIDTH |
| Maximum number of columns in a menu entry line in Info when adding a |
| description from @code{@@nodedescription} or @code{@@nodedescriptionblock}. |
| Undefined by default, in which case 10% more than the fill column value |
| is used (@pxref{Invoking @command{texi2any}}). |
| |
| @item CLOSE_DOUBLE_QUOTE_SYMBOL |
| When a closing double quote is needed, for @samp{@@dfn} in Info, use this |
| character. The default for Info is set the same as for |
| @code{OPEN_DOUBLE_QUOTE_SYMBOL}, except that the Unicode code is a closing |
| double quote (see below). |
| |
| @item INDEX_SPECIAL_CHARS_WARNING |
| If set, warn about @samp{:} in index entry, as not all Info readers may |
| be able to process these. For Info and plaintext only. Default false, |
| because parsing problems there don't prevent navigation; readers can still |
| relatively easily find their way to the node in question. |
| |
| @item INFO_MATH_IMAGES |
| (Experimental.) |
| If set, convert the contents of @code{@@math} and @code{@@displaymath} |
| into images, and reference these in the produced Info file. This variable |
| requires a working @TeX{} installation, the @samp{preview} package |
| of @LaTeX{}, as well as the @command{dvipng} program. It may be suitable |
| for math-heavy documents that are unlikely to be viewed in a text terminal. |
| |
| This feature is marked as experimental as it would require extra support |
| in Info-viewing programs (currently, only the Info mode of Emacs) to |
| view the images correctly. The images should be visible with existing |
| versions of Emacs, but they may be the wrong size or appear misaligned |
| with surrounding text. It is possible that we will change the output |
| for this option given further feedback. @xref{Info Format Image} for |
| more details about how images are currently output with this option. |
| |
| @item 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 |
| @ref{Info Format Specification}. Default is set for Info and unset |
| for plaintext. @xref{Node Line Requirements}. |
| |
| @item INFO_SPECIAL_CHARS_WARNING |
| If set, warn about problematic constructs for Info output (such as the |
| string @samp{::}) in node names, menu items, and cross-references. |
| If not defined, set unless @code{INFO_SPECIAL_CHARS_QUOTE} is set. |
| Default is set for Info and not defined for plaintext. Similar warnings in |
| index entries are covered by @code{INDEX_SPECIAL_CHARS_WARNING}. |
| |
| @item OPEN_DOUBLE_QUOTE_SYMBOL |
| When an opening double quote is needed, for @samp{@@dfn} output in Info, use |
| the specified character. If @option{--disable-encoding} is set or the document |
| encoding is not UTF-8, @samp{"} is used. Otherwise, the Info output uses a |
| Unicode left double quote. |
| |
| @end vtable |
| |
| |
| @node @LaTeX{} Customization Variables |
| @subsection @LaTeX{} Customization Variables |
| |
| @cartouche |
| @quotation warning |
| @LaTeX{} output customization is experimental. Nothing is decided, |
| everything can change, and we would welcome any feedback. |
| @end quotation |
| @end cartouche |
| |
| This table gives the customization variables which apply to @LaTeX{} output |
| only. |
| |
| @vtable @code |
| @item CLASS_BEGIN_USEPACKAGE |
| If set, the corresponding text will replace the @LaTeX{} @code{\documentclass}, |
| package imports that are always output and are output right after |
| @code{\documentclass}, and package imports that depend on the document encoding |
| setting the input and font encoding (@code{inputenc} and @code{fontenc}). |
| |
| The text replaced is along: |
| @example LaTeX |
| \documentclass@{book@} |
| \usepackage@{amsfonts@} |
| \usepackage@{amsmath@} |
| \usepackage[gen]@{eurosym@} |
| \usepackage@{textcomp@} |
| \usepackage@{graphicx@} |
| \usepackage@{etoolbox@} |
| \usepackage@{titleps@} |
| \usepackage[utf8]@{inputenc@} |
| \usepackage[T1]@{fontenc@} |
| @end example |
| |
| @item END_USEPACKAGE |
| If set, the corresponding text will replace the package imports that depend |
| on the Texinfo commands used, and the last packages imports that are always |
| output and output after all the other packages imports. The last package |
| imports corresponds to @samp{\usepackage[hidelinks]@{hyperref@}}. |
| |
| Here is an example of the corresponding text for a document with indices, |
| @code{@@need}, @code{@@multitable}, definition commands, @code{@@cartouche}, |
| lists, and @code{@@float}: |
| @example LaTeX |
| \usepackage@{imakeidx@} |
| \usepackage@{needspace@} |
| \usepackage@{array@} |
| \usepackage@{embrac@} |
| \usepackage@{expl3@} |
| \usepackage@{tabularx@} |
| \usepackage[framemethod=tikz]@{mdframed@} |
| \usepackage@{enumitem@} |
| \usepackage@{float@} |
| \usepackage[hidelinks]@{hyperref@} |
| @end example |
| |
| @item LATEX_FLOATS_FILE_EXTENSION |
| Set new floats definition file extension for @LaTeX{} output. |
| Default @samp{tfl}. |
| |
| @end vtable |
| |
| |
| @node Other Formats Customization Variables |
| @subsection Other Formats Customization Variables |
| |
| This table gives the customization which apply to specific formats only, |
| for formats without separate customization variables description section. |
| |
| @vtable @code |
| @item TEXI2DVI |
| Name of the command used to produce PostScript, PDF, and DVI; default |
| @samp{texi2dvi}. @xref{@command{texi2any} Printed Output}. |
| |
| @item TEXTCONTENT_COMMENT |
| For stripped text content output (i.e., when |
| @code{TEXINFO_OUTPUT_FORMAT} is set to @code{textcontent}). If set, |
| also output comments. Default false. |
| |
| @end vtable |
| |
| |
| @node Customization Variables for Multiple Formats |
| @subsection Customization Variables for Multiple Formats |
| |
| @anchor{Other Customization Variables} @c old name |
| |
| This table gives the customization which apply to multiple formats. |
| |
| @vtable @code |
| @item CLOSE_QUOTE_SYMBOL |
| When a closing quote is needed, e.g.@: for @code{@@samp} output, use |
| this character; default @code{’} in DocBook. |
| Undefined in the default case in HTML and set to @code{’} |
| if @code{USE_NUMERIC_ENTITY} is not set, to @code{’} if set, and |
| to a quote character if @code{OUTPUT_CHARACTERS} is set and the output |
| encoding includes that character. |
| |
| The default for Info is set the same as for @code{OPEN_QUOTE_SYMBOL}, |
| except that the Unicode code is a closing quote (see below). |
| |
| @vindex SystemLiteral |
| @item DOCTYPE |
| For DocBook, HTML@. Specifies the @code{SystemLiteral}, the |
| entity's system identifier. This is a URI which may be used to |
| retrieve the entity, and identifies the canonical DTD for the |
| document. The default value is different for each of HTML and DocBook. |
| |
| @item EXTENSION |
| The extension added to the output file name. The default is different |
| for each output format. |
| |
| @item NO_TOP_NODE_OUTPUT |
| @anchor{@code{NO_TOP_NODE_OUTPUT}} |
| If set do not output the Top node content. The Top node is still |
| parsed, but the content is discarded. Not set in the default case |
| for HTML@. Set in the default case for EPUB@. If @code{SHOW_TITLE} |
| is @samp{undef}, setting @code{NO_TOP_NODE_OUTPUT} also sets |
| @code{SHOW_TITLE} for HTML. |
| |
| Setting @code{NO_TOP_NODE_OUTPUT}, which removes the Top node and adds |
| a title page corresponds more to the formatting of a book. Setting |
| @code{NO_TOP_NODE_OUTPUT} to false, with @code{SHOW_TITLE} remaining |
| @samp{undef}, and false, corresponds more to a document setup for browsing, |
| with a direct access to the information at the Top node. |
| |
| For DocBook, @code{NO_TOP_NODE_OUTPUT} is set to true. Setting |
| @code{NO_TOP_NODE_OUTPUT} to false causes the Top node content to be |
| output. It is not recommended to output the Top node in DocBook as |
| the title and copying texts are always output. This option |
| is kept for DocBook for compatibility, as before 2022 the Top node was output |
| in DocBook. It could be removed in the future. |
| |
| @item OPEN_QUOTE_SYMBOL |
| When an opening quote is needed, e.g., for @samp{@@samp} output, use |
| the specified character; default @code{‘} for DocBook. |
| Undefined in the default case in HTML and set to @code{‘} |
| if @code{USE_NUMERIC_ENTITY} is not set, to @code{‘} if set, and |
| to a quote character if @code{OUTPUT_CHARACTERS} is set and the output |
| encoding includes that character. |
| |
| For Info, the default depends on the enabled document encoding. If |
| @option{--disable-encoding} is set or the document encoding is not UTF-8, |
| @samp{'} is used. This character usually appears |
| as an undirected single quote on modern systems. Otherwise, the Info |
| output uses a Unicode left quote. |
| |
| @item OUTPUT_CHARACTERS |
| If not set, the default, output accented and special characters in HTML |
| and DocBook using XML entities, and in @LaTeX{} using macros. If set, output |
| accented characters in HTML, DocBook and @LaTeX{} output and special |
| characters in HTML and @LaTeX{} output based on the document encoding. |
| @xref{@code{@@documentencoding}}, and @ref{Inserting Accents}. |
| |
| @anchor{TOP_NODE_UP} |
| @item TOP_NODE_UP |
| Up node for the Top node; default @samp{(dir)}. This node name is |
| supposed to be already formatted for the output format. In HTML |
| can be used in attribute, so should not contain any element. Used for |
| HTML output only if @code{TOP_NODE_UP_URL} is set to override the URL@:, |
| see @code{TOP_NODE_UP_URL} in @ref{HTML Customization Variables List}. |
| @xref{File Names and Links Customization for HTML}. |
| |
| @item USE_NODES |
| The main unit of output documents is an @dfn{output unit}. Usually a node is |
| associated with a following sectioning command, while a sectioning command is |
| associated with a previous node; they both together make up the output unit. |
| |
| For Plaintext and HTML@. Preferentially use nodes to decide where output units |
| are separated if @code{USE_NODES} is set. If set to false, preferentially use |
| sectioning to decide where output units are separated. The default is true. |
| |
| @item USE_NUMERIC_ENTITY |
| For HTML and DocBook@. If set, use numeric entities instead of named |
| entities. By default, set to true for DocBook output. |
| |
| @end vtable |
| |
| |
| @node Internationalization of Document Strings |
| @nodedescription Translating program-inserted text. |
| @section Internationalization of Document Strings |
| |
| @cindex I18n, of document strings |
| @cindex Internationalization of document strings |
| @cindex Document strings, internationalization of |
| @cindex Output document strings, internationalization of |
| @cindex Translating strings in output documents |
| |
| @vindex documentlanguage @r{customization variable} |
| @vindex documentscript @r{customization variable} |
| @command{texi2any} writes fixed strings into the output document at |
| various places: cross-references, page footers, the help page, |
| alternate text for images, and so on. The string chosen depends on |
| the value of the @code{documentlanguage}, @code{documentscript} |
| and @code{@@documentlanguagevariant} |
| at the time of the string |
| being output (@pxref{Setting the language}, for the Texinfo |
| command interface). |
| |
| @vindex texinfo_document @r{Gettext domain} |
| @cindex Perl format strings for translation |
| The Gettext framework with the @samp{texinfo_document} domain |
| is used for those strings (@pxref{Top,,, gettext, Gettext}). |
| Translated strings are written as Texinfo, and may include |
| @@-commands. In translated strings, the varying parts of the string |
| are denoted by @samp{@{arg_name@}}, but not by @code{%s} and the like. |
| (This convention is common for @code{gettext} in Perl and is fully |
| supported in GNU Gettext; @pxref{perl-format,, Perl Format Strings, |
| gettext, GNU Gettext}.) For example, in the following, @samp{@{section@}} |
| will be replaced by the section name: |
| |
| @example |
| see @{section@} |
| @end example |
| |
| @c Ignore, there is no need to justify this choice |
| @ignore |
| These Perl-style brace format strings are used because the order of arguments |
| is unpredictable, since @@-command expansion may lead to different |
| orders depending on the output format. |
| @end ignore |
| |
| The expansion of a translation string is done like this: |
| |
| @enumerate |
| @item First, the string is translated. The locale is based on the |
| @var{documentlanguage}, with a @samp{@@modifier} appended based on |
| @var{documentscript} or @var{documentlanguagevariant}, if set. |
| |
| If the locale has the form @samp{ll_CC}, @samp{ll@@modifier} or |
| @samp{ll_CC@@modifier}, that is tried first, and then just @samp{ll}. |
| |
| @item Next, in most cases, the string is expanded as Texinfo, and converted. |
| The arguments are substituted; for example, @samp{@{arg_name@}} is replaced by |
| the corresponding actual argument. |
| |
| It is also possible for the string and the argument to be already converted. |
| In that case, the arguments are simply substituted. Similarly, |
| @samp{@{arg_name@}} is replaced by the corresponding actual argument. |
| |
| @end enumerate |
| |
| In the following example, @samp{@{date@}}, @samp{@{program_homepage@}} |
| and @samp{@{program@}} are the arguments of the string. Since they |
| are used in @code{@@uref}, their order is not predictable. |
| @samp{@{date@}}, @samp{@{program_homepage@}} and @samp{@{program@}} are |
| substituted after the expansion: |
| |
| @example |
| Generated on @@emph@{@{date@}@} using |
| @@uref@{@{program_homepage@}, @@emph@{@{program@}@}@}. |
| @end example |
| |
| This approach is admittedly a bit complicated. Its usefulness is that it |
| supports specifying the formatting of the translated string independently |
| of the output format. |
| |
| For example, the @samp{@@pxref} translation string can be like this: |
| |
| @example |
| see @{node_file_href@} section `@{section@}' in @@cite@{@{book@}@} |
| @end example |
| |
| @noindent |
| which allows for specifying a string independently of the output |
| format, while nevertheless with rich formatting it may be translated |
| appropriately in many languages. |
| |
| @c TODO Seems like an implementation detail. Remove? |
| @pindex libintl-perl @r{Gettext implementation} |
| If Perl is used for strings translation in @command{texi2any}, the |
| @code{libintl-perl} package is used as the @code{gettext} implementation; more |
| specifically, the pure Perl implementation is used, so Texinfo can support |
| consistent behavior across all platforms and installations, which would not |
| otherwise be possible. @code{libintl-perl} is included in the Texinfo |
| distribution and always installed, to ensure that it is available if needed. |
| It is also possible to use the system @code{libintl-perl} (the choice can be |
| made at build-time). |
| |
| |
| @node Invoking @command{pod2texi} |
| @nodedescription Translating Perl Pod to Texinfo. |
| @section Invoking @command{pod2texi}: Convert Pod to Texinfo |
| |
| @pindex pod2texi |
| @cindex Invoking @command{pod2texi} |
| @cindex Pod, converting to Texinfo |
| @cindex Perl Pod, converting to Texinfo |
| |
| The @command{pod2texi} program converts Perl Pod documentation file(s) |
| to Texinfo. There are two basic modes of operation: generating a |
| standalone Texinfo document from each input Pod, or (if @code{--base-level=1} |
| or higher is given) generating Texinfo subfiles suitable for use with |
| @code{@@include}. |
| |
| @c Although ordinarily this documentation in the Texinfo manual would be |
| @c the best place to look, in this case we have documented all the |
| @c options and examples in the @command{pod2texi} program itself, since it |
| @c may be useful outside of the rest of Texinfo. Thus, please see the |
| @c output of @code{pod2texi --help}, the version on the web at |
| @c @url{https://www.gnu.org/software/texinfo/manual/pod2texi.html}, etc. |
| |
| The @command{pod2texi} program may be useful outside of the rest of Texinfo; |
| thus, the invocation of @command{pod2texi} is documented in the Pod language |
| using the man page format to follow the convention used in Perl standalone |
| programs, with a version on the web |
| @url{https://www.gnu.org/software/texinfo/manual/pod2texi.html} and a version |
| included below. The version included in the manual is also an example of |
| @command{pod2texi} use, as it is converted from Pod using @command{pod2texi}. |
| |
| @c there are issue with the perldoc-all generated files, as the perl documentation |
| @c does not follows the Pod specification, there are anchors added |
| @c using the first word in addition to the regular anchors. |
| @c For an example of using @command{pod2texi} to make Texinfo out of the |
| @c Perl documentation itself, see @file{contrib/perldoc-all}} in the Texinfo |
| @c source distribution. |
| |
| |
| @node pod2texi manual page |
| @nodedescription @command{pod2texi} invocation in a manual page format. |
| @include pod2texi.texi |
| |
| |
| @node @command{texi2html} |
| @nodedescription An ancestor of @command{texi2any}. |
| @section @command{texi2html}: Ancestor of @command{texi2any} |
| |
| @pindex texi2html |
| |
| @cindex Cons, Lionel |
| Conceptually, the @command{texi2html} program is the parent of today's |
| @command{texi2any} program. @command{texi2html} was developed |
| independently, originally by Lionel Cons in 1998; at the time, |
| @command{makeinfo} could not generate HTML@. Many other people |
| contributed to @command{texi2html} over the years. |
| |
| The present @command{texi2any} uses little of the actual code of |
| @command{texi2html}, and has quite a different basic approach to the |
| implementation (namely, parsing the Texinfo document into a tree), but |
| still, there is a family resemblance. |
| |
| By design, @command{texi2any} supports nearly all the features of |
| @command{texi2html} in some way. However, we did not attempt to |
| maintain strict compatibility, so no @command{texi2html} executable is |
| installed by the Texinfo package. An approximation can be run with an |
| invocation like this: |
| |
| @example |
| texi2any --set-customization-variable TEXI2HTML=1 ... |
| @end example |
| |
| @noindent but, to emphasize, this is @emph{not} a drop-in replacement |
| for the previous @command{texi2html}. Here are the biggest differences: |
| |
| @itemize @bullet |
| @item Most blatantly, the command line options of @command{texi2html} |
| are now customization variables, for the most part. A table of |
| approximate equivalents is given below. |
| |
| @item The program-level customization API is very different in |
| @command{texi2any}. |
| |
| @item Indices cannot be split. |
| |
| @end itemize |
| |
| We do not intend to reimplement these |
| differences. Therefore, the route forward for authors is alter |
| manuals and build processes as necessary to use the new features and |
| methods of @command{texi2any}. The @command{texi2html} maintainers |
| (one of whom is the principal author of @command{texi2any}) do not |
| intend to make further releases. |
| |
| @cindex Options of @command{texi2html} |
| @cindex Command-line options of @command{texi2html} |
| Here is the table showing @command{texi2html} options and |
| corresponding @command{texi2any} customization variables. |
| @c (@pxref{texi2any Output Customization,, @command{texi2any} Output |
| @c Customization}). |
| |
| @multitable {@option{--frameset-doctype}} {@code{HTML_MATH} set to @samp{l2h}} |
| |
| @item @option{--toc-links} @tab @code{TOC_LINKS} |
| @item @option{--short-ext} @tab @code{EXTENSION} set to @samp{htm} |
| @item @option{--prefix} @tab @code{PREFIX} |
| @item @option{--def-table} @tab @code{DEF_TABLE} |
| @item @option{--html-xref-prefix} @tab @code{EXTERNAL_DIR} |
| @item @option{--l2h} @tab @code{HTML_MATH} set to @samp{l2h} |
| @item @option{--l2h-l2h} @tab @code{L2H_L2H} |
| @item @option{--l2h-skip} @tab @code{L2H_SKIP} |
| @item @option{--l2h-tmp} @tab @code{L2H_TMP} |
| @item @option{--l2h-file} @tab @code{L2H_FILE} |
| @item @option{--l2h-clean} @tab @code{L2H_CLEAN} |
| @item @option{--use-nodes} @tab @code{USE_NODES} |
| @item @option{--monolithic} @tab @code{MONOLITHIC} |
| @item @option{--top-file} @tab @code{TOP_FILE} |
| @item @option{--frames} @tab no equivalent |
| @item @option{--menu} @tab @code{FORMAT_MENU} |
| @item @option{--debug} @tab @code{DEBUG} |
| @item @option{--doctype} @tab @code{DOCTYPE} |
| @item @option{--frameset-doctype} @tab no equivalent |
| @item @option{--test} @tab @code{TEST} |
| @end multitable |
| |
| @cindex @file{texi2oldapi.texi}, for @command{texi2html} |
| Finally, any @command{texi2html} users seeking more detailed information can |
| check the first part of the archived file @file{doc/texi2oldapi.texi} in the |
| Texinfo source repository. |
| |
| |
| @node Creating and Installing Info Files |
| @nodedescription Details on Info output. |
| @chapter Creating and Installing Info Files |
| |
| @anchor{Creating an Info File}@c removed, merged to this node and Emacs Info mode |
| |
| This chapter gives some information on the Info output and describes how to |
| install Info files. For the creation of Info files with @command{texi2any}, see |
| @ref{Generic Translator @command{texi2any}}, and with Emacs, @ref{Info |
| Formatting}. @xref{Info Files}, for general information about the file format. |
| @xref{Info Format Specification}, for a detailed technical specification of the |
| Info format. |
| |
| |
| @node Installing an Info File |
| @section Installing an Info File |
| @cindex Installing an Info file |
| @cindex Info files @subentry installation |
| @cindex @file{dir} directory for Info installation |
| |
| Info files are usually kept in the @file{info} directory. You can |
| read Info files using the standalone Info program or the Info reader |
| built into Emacs. (@xref{Top,,, info, Info}, for an introduction to |
| Info.) |
| |
| |
| @node Directory File |
| @nodedescription The top-level menu for all Info files. |
| @subsection The Directory File @file{dir} |
| |
| For Info to work, the @file{info} directory must contain a file that |
| serves as a top-level directory for the Info system. By convention, |
| this file is called @file{dir}. (You can find the location of this file |
| within Emacs by typing @kbd{C-h i} to enter Info and then typing |
| @kbd{C-x C-f} to see the location of the @file{info} directory.) |
| |
| The @file{dir} file is itself an Info file. It contains the top-level |
| menu for all the Info files in the system. The menu looks like |
| this: |
| |
| @example |
| @group |
| * 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. |
| @dots{} |
| @end group |
| @end example |
| |
| 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. @xref{Other Info Files, , Nodes in Other Info |
| Files}.) |
| |
| Thus, the @samp{Info} entry points to the `Top' node of the |
| @file{info} file and the @samp{Emacs} entry points to the `Top' node |
| of the @file{emacs} file. |
| |
| In each of the Info files, the `Up' pointer of the `Top' node refers |
| back to the @code{dir} file. For example, the line for the `Top' |
| node of the Emacs manual looks like this in Info: |
| |
| @example |
| File: emacs Node: Top, Up: (DIR), Next: Distrib |
| @end example |
| |
| @noindent |
| In this case, the @file{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 @file{dir}. |
| |
| See the @file{util/dir-example} file in the Texinfo distribution for |
| a large sample @code{dir} file. |
| |
| |
| @node New Info File |
| @nodedescription Listing a new Info file. |
| @subsection Listing a New Info File |
| @cindex Adding a new Info file |
| @cindex Listing a new Info file |
| @cindex New Info file, listing it in @file{dir} file |
| @cindex Info files @subentry listing a new |
| @cindex @file{dir} file listing |
| |
| To add a new Info file to your system, you must write a menu entry to |
| add to the menu in the @file{dir} file in the @file{info} directory. |
| For example, if you were adding documentation for GDB, you would write |
| the following new entry: |
| |
| @example |
| * GDB: (gdb). The source-level C debugger. |
| @end example |
| |
| @noindent |
| The first part of the menu entry is the menu entry name, followed by a |
| colon. The second part is the name of the Info file, in parentheses, |
| followed by a period. The third part is the description. |
| |
| The name of an Info file often has a @file{.info} extension. Thus, the |
| Info file for GDB might be called either @file{gdb} or @file{gdb.info}. |
| The Info reader programs automatically try the file name both with and |
| without @file{.info}@footnote{On MS-DOS/MS-Windows systems, Info will |
| try the @file{.inf} extension as well.}; so it is better to avoid |
| clutter and not to write @samp{.info} explicitly in the menu entry. For |
| example, the GDB menu entry should use just @samp{gdb} for the file |
| name, not @samp{gdb.info}. |
| |
| |
| @node Other Info Directories |
| @nodedescription How to specify Info files that are located in other directories. |
| @subsection Info Files in Other Directories |
| @cindex Installing Info in another directory |
| @cindex Info installed in another directory |
| @cindex Another Info directory |
| @cindex @file{dir} files and Info directories |
| |
| If an Info file is not in the @file{info} directory, there are three |
| ways to specify its location: |
| |
| @enumerate |
| @item |
| Write the file name in the @file{dir} file as the second part of the menu. |
| |
| @item |
| Specify the Info directory name in the @code{INFOPATH} environment |
| variable in your @file{.profile} or @file{.cshrc} initialization file. |
| (Only you and others who set this environment variable will be able to |
| find Info files whose location is specified this way.) |
| |
| @item |
| If you are using Emacs, list the name of the file in a second @file{dir} |
| file, in its directory; and then add the name of that directory to the |
| @code{Info-directory-list} variable in your personal or site |
| initialization file. |
| |
| This variable tells Emacs where to look for @file{dir} files (the files |
| must be named @file{dir}). Emacs merges the files named @file{dir} from |
| each of the listed directories. (In Emacs version 18, you can set the |
| @code{Info-directory} variable to the name of only one |
| directory.) |
| @end enumerate |
| |
| For example, to reach a test file in the @file{/home/bob/info} |
| directory, you could add an entry like this to the menu in the |
| standard @file{dir} file: |
| |
| @example |
| * Test: (/home/bob/info/info-test). Bob's own test file. |
| @end example |
| |
| @noindent |
| In this case, the absolute file name of the @file{info-test} file is |
| written as the second part of the menu entry. |
| |
| @vindex INFOPATH |
| @cindex Environment variable @code{INFOPATH} |
| If you don't want to edit the system @file{dir} file, you can tell |
| Info where to look by setting the @code{INFOPATH} environment variable |
| in your shell startup file. This works with both the Emacs and |
| standalone Info readers. |
| |
| Emacs uses the @code{INFOPATH} environment variable to initialize the value of |
| Emacs's own @code{Info-directory-list} variable. The standalone Info reader |
| merges any files named @file{dir} in any directory listed in the |
| @env{INFOPATH} variable into a single menu presented to you in the node |
| called @samp{(dir)Top}. |
| |
| @cindex Colon, last in @env{INFOPATH} |
| However you set @env{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 @code{sh} syntax): |
| |
| @example |
| INFOPATH=/home/bob/info: |
| export INFOPATH |
| @end example |
| |
| @noindent |
| will search @file{/home/bob/info} first, then the standard directories. |
| Leading or doubled colons are not treated specially. |
| |
| @cindex @file{dir} file, creating your own |
| When you create your own @file{dir} file for use with |
| @code{Info-directory-list} or @env{INFOPATH}, it's easiest to start by |
| copying an existing @file{dir} file and replace all the text after the |
| @samp{* Menu:} with your desired entries. That way, the punctuation |
| and special @kbd{CTRL-_} characters that Info needs will be present. |
| |
| As one final alternative, which works only with Emacs Info, you can |
| change the @code{Info-directory-list} variable. For example: |
| |
| @example |
| (add-hook 'Info-mode-hook '(lambda () |
| (add-to-list 'Info-directory-list |
| (expand-file-name "~/info")))) |
| @end example |
| |
| |
| @node Installing Dir Entries |
| @nodedescription How to specify what menu entry to add to the Info directory. |
| @subsection Installing Info Directory Files |
| |
| When you install an Info file onto your system, you can use the program |
| @code{install-info} to update the Info directory file @file{dir}. |
| Normally the makefile for the package runs @code{install-info}, just |
| after copying the Info file into its proper installed location. |
| |
| @findex direntry |
| In order for the Info file to work with @code{install-info}, you include |
| the commands @code{@@dircategory} and |
| @code{@@direntry}@dots{}@code{@@end direntry} in the Texinfo source |
| file. |
| |
| @cindex Invoking nodes, including in dir file |
| Use @code{@@dircategory} to specify a category |
| for the manual, which determines which part of the Info directory to |
| put it in. (@xref{Directory Category}.) |
| Use @code{@@direntry} to specify the menu entry, or entries, to add |
| to the Info directory file. Some manuals (such as the manual you are |
| reading now, or that of GNU Coreutils; @pxref{Top,,, coreutils, GNU Coreutils}) |
| will have several entries. |
| It is typical to have one dir entry for each program that a package |
| installs, usually to the program's `Invoking' node. This lets users |
| easily find the documentation for the different programs they can run. |
| @c as with the traditional @command{man} system. |
| Likewise, a manual for a C library may install a dir entry for each |
| function it provides. |
| |
| |
| @c NB this is referenced from node "Directory Category" |
| Here is how these commands are used in this manual: |
| |
| @example |
| @@dircategory Texinfo documentation system |
| @@direntry |
| * Texinfo: (texinfo). The GNU documentation format. |
| * install-info: (texinfo)Invoking install-info. @dots{} |
| @dots{} |
| @@end direntry |
| @end example |
| |
| Here's what this produces in the Info file: |
| |
| @example |
| INFO-DIR-SECTION Texinfo documentation system |
| START-INFO-DIR-ENTRY |
| * Texinfo: (texinfo). The GNU documentation format. |
| * install-info: (texinfo)Invoking install-info. @dots{} |
| @dots{} |
| END-INFO-DIR-ENTRY |
| @end example |
| |
| @noindent |
| The @code{install-info} program sees these lines in the Info file, and |
| that is how it knows what to do. |
| |
| Always use the @code{@@direntry} and @code{@@dircategory} commands near |
| the beginning of the Texinfo input, before the first @code{@@node} |
| command. If you use them later on in the input, @code{install-info} |
| will not notice them. |
| |
| @code{install-info} will automatically reformat the description of the |
| menu entries it is adding. As a matter of convention, the description |
| of the main entry (above, @samp{The GNU documentation format}) should |
| start at column 32, starting at zero (as in |
| @code{what-cursor-position} in Emacs). This will make it align with |
| most others. Description for individual utilities best start in |
| column 48, where possible. For more information about formatting see |
| the @samp{--calign}, @samp{--align}, and @samp{--max-width} options in |
| @ref{Invoking @command{install-info}}. |
| |
| If you use @code{@@dircategory} more than once in the Texinfo source, |
| each usage specifies the `current' category; any subsequent |
| @code{@@direntry} commands will add to that category. |
| |
| |
| @node Invoking @command{install-info} |
| @nodedescription @code{install-info} options. |
| @subsection Invoking @command{install-info} |
| |
| @pindex install-info |
| |
| @code{install-info} inserts menu entries from an Info file into the |
| top-level @file{dir} file in the Info system (see the previous sections |
| for an explanation of how the @file{dir} file works). @code{install-info} |
| also removes menu entries from the @file{dir} file. It's most often |
| run as part of software installation, or when constructing a @file{dir} file |
| for all manuals on a system. Synopsis: |
| |
| @example |
| install-info [@var{option}@dots{}] [@var{info-file} [@var{dir-file}]] |
| @end example |
| |
| If @var{info-file} or @var{dir-file} are not specified, the options |
| (described below) that define them must be. There are no compile-time |
| defaults, and standard input is never used. @code{install-info} can |
| read only one Info file and write only one @file{dir} file per invocation. |
| |
| @cindex @file{dir}, created by @code{install-info} |
| If @var{dir-file} (however specified) does not exist, |
| @code{install-info} creates it if possible (with no entries). |
| |
| @cindex Compressed dir files, reading |
| @cindex XZ-compressed dir files, reading |
| @cindex Bzipped dir files, reading |
| @cindex Lzip-compressed dir files, reading |
| @cindex LZMA-compressed dir files, reading |
| @cindex Dir files, compressed |
| If any input file is compressed with @code{gzip} (@pxref{Top,,, gzip, |
| Gzip}), @code{install-info} automatically uncompresses it for reading. |
| And if @var{dir-file} is compressed, @code{install-info} also |
| automatically leaves it compressed after writing any changes. If |
| @var{dir-file} itself does not exist, @code{install-info} tries to |
| open @file{@var{dir-file}.gz}, @file{@var{dir-file}.xz}, |
| @file{@var{dir-file}.bz2}, @file{@var{dir-file}.lz}, and |
| @file{@var{dir-file}.lzma}, in that order. |
| |
| Options: |
| |
| @table @code |
| @item --add-once |
| @opindex --add-once@r{, for @command{install-info}} |
| Specifies that the entry or entries will only be put into a single section. |
| |
| @item --align=@var{column} |
| @opindex --align=@var{column}@r{, for @command{install-info}} |
| Specifies the column that the second and subsequent lines of menu entry's |
| description will be formatted to begin at. The default for this option is |
| @samp{35}. It is used in conjunction with the @samp{--max-width} option. |
| @var{column} starts counting at 1. |
| |
| @item --append-new-sections |
| @opindex --append-new-sections@r{, for @command{install-info}} |
| Instead of alphabetizing new sections, place them at the end of the DIR file. |
| |
| @item --calign=@var{column} |
| @opindex --calign=@var{column}@r{, for @command{install-info}} |
| Specifies the column that the first line of menu entry's description will |
| be formatted to begin at. The default for this option is @samp{33}. It is |
| used in conjunction with the @samp{--max-width} option. |
| When the name of the menu entry exceeds this column, entry's description |
| will start on the following line. |
| @var{column} starts counting at 1. |
| |
| @item --debug |
| @opindex --debug@r{, for @command{install-info}} |
| Report what is being done. |
| |
| @item --delete |
| @opindex --delete@r{, for @command{install-info}} |
| Delete the entries in @var{info-file} from @var{dir-file}. The file |
| name in the entry in @var{dir-file} must be @var{info-file} (except for |
| an optional @samp{.info} in either one). Don't insert any new entries. |
| Any empty sections that result from the removal are also removed. |
| |
| @item --description=@var{text} |
| @opindex --description=@var{text}@r{, for @command{install-info}} |
| Specify the explanatory portion of the menu entry. If you don't specify |
| a description (either via @samp{--entry}, @samp{--item} or this option), |
| the description is taken from the Info file itself. |
| |
| @item --dir-file=@var{name} |
| @opindex --dir-file=@var{name}@r{, for @command{install-info}} |
| Specify file name of the Info directory file. This is equivalent to |
| using the @var{dir-file} argument. |
| |
| @item --dry-run |
| @opindex --dry-run@r{, for @command{install-info}} |
| Same as @samp{--test}. |
| |
| @item --entry=@var{text} |
| @opindex --entry=@var{text}@r{, for @command{install-info}} |
| Insert @var{text} as an Info directory entry; @var{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. |
| |
| @item --help |
| @opindex --help@r{, for @command{texindex}} |
| Display a usage message with basic usage and all available options, |
| then exit successfully. |
| |
| @item --info-file=@var{file} |
| @opindex --info-file=@var{file}@r{, for @command{install-info}} |
| Specify Info file to install in the directory. This is |
| equivalent to using the @var{info-file} argument. |
| |
| @item --info-dir=@var{dir} |
| @opindex --info-dir=@var{dir}@r{, for @command{install-info}} |
| Specify the directory where the directory file @file{dir} resides. |
| Equivalent to @samp{--dir-file=@var{dir}/dir}. |
| |
| @item --infodir=@var{dir} |
| @opindex --infodir=@var{dir}@r{, for @command{install-info}} |
| Same as @samp{--info-dir}. |
| |
| @item --item=@var{text} |
| @opindex --item=@var{text}@r{, for @command{install-info}} |
| Same as @samp{--entry=@var{text}}. An Info directory entry is actually |
| a menu item. |
| |
| @item --keep-old |
| @opindex --keep-old@r{, for @command{install-info}} |
| Do not replace pre-existing menu entries. When @samp{--remove} is specified, |
| this option means that empty sections are not removed. |
| |
| @item --max-width=@var{column} |
| @opindex --max-width=@var{column}@r{, for @command{install-info}} |
| Specifies the column that the menu entry's description will be word-wrapped |
| at. @var{column} starts counting at 1. |
| |
| @item --maxwidth=@var{column} |
| @opindex --maxwidth=@var{column}@r{, for @command{install-info}} |
| Same as @samp{--max-width}. |
| |
| @item --menuentry=@var{text} |
| @opindex --menuentry=@var{text}@r{, for @command{install-info}} |
| Same as @samp{--name}. |
| |
| @item --name=@var{text} |
| @opindex --name=@var{text}@r{, for @command{install-info}} |
| Specify the name portion of the menu entry. If the @var{text} does |
| not start with an asterisk @samp{*}, it is presumed to be the text |
| after the @samp{*} and before the parentheses that specify the Info |
| file. Otherwise @var{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 |
| @samp{--entry}, @samp{--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. |
| |
| @item --no-indent |
| @opindex --no-indent@r{, for @command{install-info}} |
| Suppress formatting of new entries into the @file{dir} file. |
| |
| @item --quiet |
| @itemx --silent |
| @opindex --quiet@r{, for @command{install-info}} |
| @opindex --silent@r{, for @command{install-info}} |
| Suppress warnings, etc., for silent operation. |
| |
| @item --remove |
| @opindex --remove@r{, for @command{install-info}} |
| Same as @samp{--delete}. |
| |
| @item --remove-exactly |
| @opindex --remove-exactly@r{, for @command{install-info}} |
| Also like @samp{--delete}, but only entries if the Info file name |
| matches exactly; @code{.info} and/or @code{.gz} suffixes are |
| @emph{not} ignored. |
| |
| @item --section=@var{sec} |
| @opindex --section=@var{sec}@r{, for @command{install-info}} |
| Put this file's entries in section @var{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. |
| |
| @item --section @var{regex} @var{sec} |
| @opindex --section @var{regex} @var{sec}@r{, for @command{install-info}} |
| Same as @samp{--regex=@var{regex} --section=@var{sec} --add-once}. |
| |
| @code{install-info} tries to detect when this alternate syntax is used, |
| but does not always guess correctly. Here is the heuristic that |
| @code{install-info} uses: |
| @enumerate |
| @item |
| If the second argument to @code{--section} starts with a hyphen, the |
| original syntax is presumed. |
| |
| @item |
| If the second argument to @code{--section} is a file that can be |
| opened, the original syntax is presumed. |
| |
| @item |
| Otherwise the alternate syntax is used. |
| @end enumerate |
| |
| When the heuristic fails because your section title starts with a |
| hyphen, or it happens to be a file that can be opened, the syntax |
| should be changed to @samp{--regex=@var{regex} --section=@var{sec} |
| --add-once}. |
| |
| @item --regex=@var{regex} |
| @opindex --regex=@var{regex}@r{, for @command{install-info}} |
| Put this file's entries into any section that matches @var{regex}. If |
| more than one section matches, all of the entries are added in each of the |
| sections. Specify @var{regex} using basic regular expression syntax, more |
| or less as used with @command{grep}, for example. |
| |
| @item --test |
| @opindex --test@r{, for @command{install-info}} |
| Suppress updating of the directory file. |
| |
| @item --version |
| @opindex --version@r{, for @command{install-info}} |
| @cindex Version number, for install-info |
| Display version information and exit successfully. |
| |
| @end table |
| |
| |
| @node Tag and Split Files |
| @section Tag Files and Split Files |
| |
| @cindex Tag table |
| @cindex nonsplit Info file |
| @cindex split Info file |
| Info files always contain a @dfn{tag table}, to be able to jump to |
| nodes quickly. Info files can be @dfn{nonsplit} (also called |
| @dfn{unsplit}) or @dfn{split}. |
| |
| @cindex Indirect subfiles |
| If the Info file contains less than about 300,000 characters the |
| file should be nonsplit. In that case, the tag table should |
| appear at the end of the Info file. If the Texinfo file contains |
| more than about 300,000 characters, Texinfo processors split the |
| large Info file into shorter @dfn{indirect} subfiles of about |
| 300,000 characters each. With @command{texi2any}, splitting |
| may be prevented by @option{--no-split}, and the default size |
| of 300,000 characters may be modified with @option{--split-size} |
| (@pxref{Invoking @command{texi2any}}). |
| |
| 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 |
| @dfn{indirect} files. |
| |
| The split-off files have names that are created by appending @w{@samp{-1}}, |
| @w{@samp{-2}}, @w{@samp{-3}} and so on to the output file name, specified |
| by the @code{@@setfilename} command or the input file name. The shortened |
| version of the original file continues to have the name specified by |
| @code{@@setfilename} or the input file name. |
| |
| At one stage in writing this document, for example, the Info file was saved |
| as the file @file{test-texinfo} and that file looked like this: |
| |
| @example |
| @group |
| Info file: test-texinfo, -*-Text-*- |
| produced by texinfo-format-buffer |
| from file: new-texinfo-manual.texinfo |
| |
| ^_ |
| Indirect: |
| test-texinfo-1: 102 |
| test-texinfo-2: 50422 |
| @end group |
| @group |
| test-texinfo-3: 101300 |
| ^_^L |
| Tag table: |
| (Indirect) |
| Node: overview^?104 |
| Node: info file^?1271 |
| @end group |
| @group |
| Node: printed manual^?4853 |
| Node: conventions^?6855 |
| @dots{} |
| @end group |
| @end example |
| |
| @noindent |
| (But @file{test-texinfo} had far more nodes than are shown here.) Each of |
| the split-off, indirect files, @file{test-texinfo-1}, |
| @file{test-texinfo-2}, and @file{test-texinfo-3}, is listed in this file |
| after the line that says @samp{Indirect:}. The tag table is listed after |
| the line that says @samp{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 @code{texinfo-format-buffer} to create Info files, |
| you may want to run the @code{Info-validate} command. (The |
| @command{texi2any} command does such a good job on its own, you do not |
| need @code{Info-validate}.) However, you cannot run the @kbd{M-x |
| Info-validate} node-checking command on indirect files. For |
| information on how to prevent files from being split with |
| @code{texinfo-format-buffer} and how to validate the structure of the nodes, |
| see @ref{Using @code{Info-validate}}. |
| |
| |
| @node Info Format FAQ |
| @section Info Format FAQ |
| |
| Here are some questions that have been frequently asked on |
| the project mailing lists and elsewhere. |
| |
| @table @asis |
| @item Why when I run @samp{info @var{foo}} do I get the same output as @samp{man @var{foo}}? |
| |
| Check that the Info manuals are installed. Not all GNU/Linux |
| distributions install all the Info manuals by default. This is |
| regrettable, as often the Info manual provides more information than |
| the provided man page. |
| |
| @item Why not use HTML instead of Info? |
| |
| Manuals are rarely written in the Info format itself, but are |
| generated from Texinfo source by the @command{texi2any} program. |
| @command{texi2any} can generate HTML as well as Info from Texinfo |
| source. You can also access and download HTML manuals from the GNU |
| website (@uref{https://www.gnu.org/manual/manual.html}). Additionally, |
| some GNU/Linux distributions provide packages for the installation |
| of HTML manuals. |
| |
| Info still has some advantages over HTML for locally installed |
| documentation. The Info browsers support index lookup and support |
| for links between locally installed manuals in multiple locations. |
| It's important to have documentation installed locally on your machine |
| rather than relying on the Internet; this makes accessing documentation |
| more reliable, and ensures it matches installed versions of packages. |
| It's hoped that support for browsing locally installed Texinfo |
| documentation in some form of HTML can be improved in the future. |
| |
| |
| @item Why provide the command-line @command{info} program when the Emacs Info reader is better? |
| |
| The Emacs Info reader can display images, and fully supports using |
| a mouse. There are not many differences among the Info readers |
| besides that. Command-line @command{info} can be configured |
| to change the default key bindings, as well as change the color |
| of cross-references and search results, and to enable mouse |
| scrolling support. You should not need to be experienced with |
| the Emacs editor to use @command{info}. (Some recommend another |
| program called @command{pinfo}, but this lacks in important |
| features like index lookup.) |
| |
| Some prefer to be able to scroll through the entire manual at once (as |
| happens with man pages), rather than being limited to a single `node' |
| of content at once. Of course, there is no accounting for taste, |
| but a single, unstructured block of text becomes more awkward as a |
| manual becomes longer and more complicated. (However, if you really |
| want to, you can view an info manual all at once in the @command{less} |
| pager with @samp{info @var{foo} | less}.) |
| |
| @item Why do I have `see' appearing in front of all of my links? |
| |
| By default, Emacs Info mode either changes the marker @samp{*note} for |
| cross-references to `see', or hides it completely. Command-line |
| @command{info} does the same if @code{hide-note-references} is set. |
| Unfortunately, there is no way to do this reliably, as both the @code{@@pxref} |
| and @code{@@ref} commands in Texinfo output this marker in the Info |
| output, and the `see' text is only appropriate for @code{@@pxref}. |
| |
| @item Yes, but how do I get a plain link, with no extra markup? |
| |
| You can't. Info is a plain text format that is displayed mostly as-is |
| in the viewers, and without the @samp{*note} text there would be nothing |
| to mark text as a link. |
| |
| For output formats such as HTML, you can use the @code{@@link} command |
| to produce a plain link. @xref{@code{@@link}}. This does not produce |
| a working cross-reference in Info output or in a printed copy of the |
| manual, though. |
| |
| |
| @item Why do lines containing links appear mysteriously short? |
| |
| This due to Emacs (or @command{info} with @code{hide-note-references} |
| set to @samp{On}) hiding @samp{*note} strings, as mentioned above. |
| |
| @item Can the Info format be extended to support fonts, colors or reflowable text? |
| |
| Any extension would be incompatible with existing Info-viewing programs. |
| Extra markup added to Info files would be displayed to the user, making |
| files ugly and unreadable. |
| |
| When Texinfo files are processed into Info files, information about |
| which Texinfo commands were used to markup text is lost. Moreover, |
| it is not possible to reliably detect whether text can be reflowed |
| (e.g.@: a paragraph of prose), or whether line breaks should be kept |
| (e.g.@: a code sample, or poem). |
| |
| Info's core purpose is to display documentation on text terminals. |
| If you want more, you are recommended to use the HTML output from |
| @command{texi2any} instead. |
| |
| @end table |
| |
| |
| @node Generating HTML |
| @nodedescription Details on HTML output. |
| @chapter Generating HTML |
| |
| @cindex Generating HTML |
| @cindex Outputting HTML |
| |
| @command{texi2any} generates Info output by default, but given the |
| @option{--html} option, it will generate HTML, for web browsers and |
| other programs. This chapter gives some details on such HTML output. |
| |
| @command{texi2any} has many user-definable customization variables |
| with which you can influence the HTML output. @xref{HTML Output |
| Customization}. In particular, there is support for syntax |
| highlighting in @code{@@example} (@pxref{Syntax Highlighting}). You can also |
| write so-called @dfn{initialization files}, or @dfn{init files} for short, to |
| modify almost every aspect of HTML output. Initialization files |
| contain code and are loaded by @option{--init-file} (@pxref{Invoking |
| @command{texi2any}}). |
| |
| Some initialization files are maintained with Texinfo and installed |
| in the default case. For example, @file{chm.pm} produces the intermediate |
| compressed HTML Help format files that can be subsequently converted to |
| the CHM format. |
| |
| The documentation of @command{texi2any} HTML output adaptation using |
| customization files is in a separate manual. @xref{,,, texi2any_api, GNU |
| Texinfo @command{texi2any} Output Customization}. |
| |
| |
| @node HTML Translation |
| @nodedescription Details of the HTML output. |
| @section HTML Translation |
| |
| @cindex HTML translation |
| |
| The HTML generated by @command{texi2any} generates standard HTML |
| output. The output is intentionally quite plain for maximum portability |
| and accessibility. |
| |
| You can customize the output via CSS (@pxref{HTML CSS}) or other |
| means (@pxref{HTML Output Customization}). If you cannot accomplish |
| a reasonable customization, feel free to report that. |
| |
| @cindex Navigation bar, in HTML output |
| @strong{Navigation bar:} By default, a navigation bar is inserted at the |
| start of each node, analogous to Info output. If the |
| @samp{--no-headers} option is used, the navigation bar is only |
| inserted at the beginning of split files. Header @code{<link>} elements |
| in split output support Info-like navigation with browsers which implement |
| this feature. |
| |
| @cindex Escaping to HTML |
| @cindex Raw HTML |
| @strong{Raw HTML}: @command{texi2any} will include segments of Texinfo |
| source between @code{@@ifhtml} and @code{@@end ifhtml} in the HTML |
| output (but not any of the other conditionals, by default). Source |
| between @code{@@html} and @code{@@end html} is passed without change |
| to the output (i.e., suppressing the normal escaping of input |
| @samp{<}, @samp{>} and @samp{&} characters which have special |
| significance in HTML)@. @xref{Conditional Commands}. |
| |
| @cindex HTML output @subentry browser compatibility |
| @strong{Standards}: |
| It is intentionally not our goal, and not even always possible, to pass |
| through every conceivable validation test without any diagnostics. |
| Different validation tests have different goals, often about pedantic |
| enforcement of some standard or another. Our overriding goal is to |
| help users, not blindly comply with standards. |
| |
| Please report output from an |
| error-free run of @command{texi2any} which has @emph{practical} browser |
| or EPUB reader portability problems as a bug (@pxref{Reporting Bugs}). |
| |
| In practice, the HTML produced by @command{texi2any} is slowly adjusted |
| over time towards the latest HTML standard, while also trying to keep |
| compatibility with earlier produced HTML. We use transitional markup |
| and try to be slow enough to give time for the diverse HTML readers |
| to adjust (and for standards to reincorporate useful features that were |
| dropped@dots{}). |
| |
| |
| @node HTML Splitting |
| @nodedescription How HTML output is split. |
| @section HTML Splitting |
| @cindex Split HTML output |
| @cindex HTML output @subentry split |
| |
| When splitting output at nodes (which is the default), |
| @command{texi2any} writes HTML output into (basically) one output file |
| per Texinfo source @code{@@node}. |
| |
| Each output file name is the node name with spaces replaced by |
| @samp{-}'s and special characters changed to @samp{_} followed by |
| their code point in hex (@pxref{HTML Xref}). This is to make it |
| portable and easy to use as a file name. In the unusual case of two |
| different nodes having the same name after this treatment, they are |
| written consecutively to the same file, with HTML anchors so each can |
| be referred to independently. |
| |
| If @command{texi2any} is run on a system which does not distinguish |
| case in file names, nodes which are the same except for case (e.g., |
| @samp{index} and @samp{Index}) will also be folded into the same |
| output file with anchors. You can also pretend to be on a case |
| insensitive filesystem by setting the customization variable |
| @code{CASE_INSENSITIVE_FILENAMES}. |
| |
| It is also possible to split at chapters or sections with |
| @option{--split} (@pxref{Splitting Output}). In that case, |
| the file names are constructed after the name of the node associated |
| with the relevant sectioning command. Also, unless |
| @option{--no-node-files} is specified, a redirection file is output |
| for every node in order to more reliably support cross-references to |
| that manual (@pxref{HTML Xref}). |
| |
| When splitting, the HTML output files are written into a subdirectory. The |
| subdirectory name is derived from the base name (that |
| is, any extension is removed), with @code{_html} appended. For example, HTML |
| output for @file{gcc.texi} would be written into a subdirectory |
| named @samp{gcc_html/}. The subdirectory name is based on @code{@@setfilename} |
| or on the input file name (@pxref{Setting the Output File Name}). |
| |
| @noindent In any case, the top-level output file within the directory |
| is always named @samp{index.html}. |
| |
| Monolithic output (@code{--no-split}) is named according to |
| @code{@@setfilename}, if present (with any @samp{.info} extension replaced |
| with @samp{.html}), @code{--output} (the argument is used literally), or |
| based on the input file name as a last resort |
| (@pxref{Setting the Output File Name}). |
| |
| |
| @node HTML CSS |
| @nodedescription Influencing HTML output with Cascading Style Sheets. |
| @section HTML CSS |
| @cindex HTML, and CSS |
| @cindex CSS, and HTML output |
| @cindex Cascading Style Sheets, and HTML output |
| |
| Cascading Style Sheets (CSS) is an Internet standard for |
| influencing the display of HTML documents: see |
| @uref{http://www.w3.org/Style/CSS/}. |
| |
| By default, some CSS code is included to better implement the |
| appearance of some Texinfo environments. For example: |
| |
| @example |
| pre.display @{ font-family:inherit @} |
| @end example |
| |
| The above tells the web browser to use the same font as the main |
| document inside @samp{<pre>} elements used for @code{@@display} environments. |
| By default, the HTML @samp{<pre>} command uses a monospaced font. |
| |
| Please see the reference above for a full explanation of CSS. |
| |
| You can influence the CSS in the HTML output with two |
| @command{texi2any} options: @option{--css-include=@var{file}} and |
| @option{--css-ref=@var{url}}. |
| |
| The option @option{--css-ref=@var{url}} adds to each output HTML file |
| a @samp{<link>} tag referencing a CSS at the given @var{url}. This |
| allows using external style sheets. |
| |
| The option @option{--css-include=@var{file}} includes the contents |
| @var{file} in the HTML output, as you might expect. However, the |
| details are somewhat tricky, as described in the following, to provide |
| maximum flexibility. |
| |
| @cindex @samp{@@charset} specification, in CSS files |
| The CSS file first line may be a @samp{@@charset} directive. If present, |
| this directive is used to determine the encoding of the CSS file. The |
| line is not copied into the output. |
| |
| @cindex @samp{@@import} specifications, in CSS files |
| The CSS file may begin with so-called @samp{@@import} directives, |
| which link to external CSS specifications for browsers to use when |
| interpreting the document. Again, a full description is beyond our |
| scope here, but we'll describe how they work syntactically, so we can |
| explain how they are handled. |
| |
| @cindex Comments, in CSS files |
| There can be more than one @samp{@@import}, but they have to come |
| first in the file, with only whitespace and comments interspersed, no normal |
| definitions. Comments in CSS files are delimited by @samp{/* ... */}, as in |
| C@. An @samp{@@import} directive must be in one of these two forms: |
| |
| @example |
| @@import url(http://example.org/foo.css); |
| @@import "http://example.net/bar.css"; |
| @end example |
| |
| The crucial characters are the @samp{@@} at the beginning and |
| the semicolon terminating the directive. When reading the CSS |
| file, any such @samp{@@}-directive is simply copied into the |
| output, as follows: |
| |
| @itemize |
| @item If @var{file} contains only normal CSS declarations, it is |
| included after the default CSS, thus overriding it. |
| |
| @item If @var{file} begins with @samp{@@import} specifications (see |
| below), then the @samp{import}'s are included first (they have to come |
| first, according to the standard), and then the default CSS is |
| included. If you need to override the default CSS from an |
| @samp{@@import}, you can do so with the @samp{!@: important} CSS |
| construct, as in: |
| @example |
| pre.example @{ font-size: inherit ! important @} |
| @end example |
| |
| @item If @var{file} contains both @samp{@@import} and inline CSS |
| specifications, the @samp{@@import}'s are included first, then |
| default CSS, and lastly the inline CSS from @var{file}. |
| |
| @item Any @@-directive other than @samp{@@import} and @samp{@@charset} |
| is treated as a CSS declaration, meaning the default CSS is included |
| and then the rest of the file is prepended. |
| @end itemize |
| |
| If the CSS file is malformed or erroneous, the output |
| is unspecified. The meaning of the CSS file is not interpreted in |
| any way; the special @samp{@@} and @samp{;} characters are looked for |
| the text is blindly copied into the output. Comments in the CSS |
| file may or may not be included in the output. |
| |
| @vindex NO_CSS |
| @vindex INLINE_CSS_STYLE |
| By default, classes are added to the HTML elements and CSS rules |
| for these classes are output at the beginning of each HTML file. Set |
| the @code{NO_CSS} customization variable to prevent classes being added and CSS |
| being used. Set @code{INLINE_CSS_STYLE} to have CSS code put in HTML |
| elements in the @code{style} attribute rather than at the beginning of |
| the output. |
| |
| @vindex SHOW_BUILTIN_CSS_RULES |
| Since @command{texi2any} only inserts CSS code needed by the HTML |
| actually output, the full list of CSS code potentially inserted is |
| not visible in the output document. To get the full list of CSS rules, call |
| @command{texi2any} with the @code{SHOW_BUILTIN_CSS_RULES} customization |
| variable set to output the built-in default CSS rules on the standard output |
| and exit, like: |
| @example |
| texi2any -c SHOW_BUILTIN_CSS_RULES=1 |
| @end example |
| |
| |
| @node @code{@@documentdescription} |
| @nodedescription Document summary for the HTML output. |
| @section @code{@@documentdescription}: Summary Text |
| @anchor{documentdescription}@c old name |
| |
| @cindex Document description |
| @cindex Description of document |
| @cindex Summary of document |
| @cindex Abstract of document |
| @cindex @code{<meta>} HTML tag, and document description |
| @findex documentdescription |
| |
| When producing HTML output for a document, a @samp{<meta>} element |
| is written in the @samp{<head>} to give some idea of the |
| content of the document. By default, this @dfn{description} is the |
| title of the document, taken from the @code{@@settitle} command |
| (@pxref{@code{@@settitle}}). To change this, use the |
| @code{@@documentdescription} environment, as in: |
| |
| @example |
| @@documentdescription |
| descriptive text. |
| @@end documentdescription |
| @end example |
| |
| @noindent |
| This will produce the following output in the @samp{<head>} of the HTML: |
| |
| @example |
| <meta name=description content="descriptive text."> |
| @end example |
| |
| |
| @node Generating EPUB |
| @nodedescription Details on the EPUB output. |
| @section Generating EPUB |
| |
| @cindex EPUB, generating |
| @cindex Generating EPUB |
| @cindex Outputting EPUB |
| |
| EPUB is a format designed for reading electronic books on portable |
| devices. @command{texi2any} generated EPUB 3.3 in 2024. An EPUB |
| file is a ZIP archive container, holding informative files as |
| well as the manual rendered in HTML. |
| |
| @cindex @code{Archive::Zip}, for EPUB file output |
| @vindex EPUB_CREATE_CONTAINER_FILE @subentry @r{avoiding} @code{Archive::Zip} @r{dependency} |
| The generation of the EPUB file depends on the @code{Archive::Zip} |
| Perl module being installed. This dependency is checked at runtime. |
| By default, trying to output EPUB without this dependency raises an |
| error. However, if the EPUB output file is not generated, with the |
| customization variable @code{EPUB_CREATE_CONTAINER_FILE} set to 0, it is |
| not an error if @code{Archive::Zip} is not installed. |
| |
| The @command{texi2any} tests related to EPUB generation do not require the |
| installation of @code{Archive::Zip}, as they set |
| @code{EPUB_CREATE_CONTAINER_FILE} to 0 and keep the directory containing |
| the files and directories needed for the EPUB file by setting the |
| @code{EPUB_KEEP_CONTAINER_FOLDER} customization variable to 1. |
| |
| |
| @node EPUB Output File and Directory |
| @subsection Container Directory and Output Files |
| |
| @cindex Container directory for EPUB |
| @cindex EPUB Container directory |
| A directory containing the files and directories needed for the |
| EPUB format is created when outputting EPUB@. The name of this |
| container directory is derived from the base name of the input file (that |
| is, any extension is removed), with @code{_epub_package} postpended. |
| If an output directory is specified, with @option{--output}, |
| or with the @code{SUBDIR} customization variable, |
| the container directory is created in that directory instead of |
| the current directory. At the beginning of a new run, the container |
| directory and all its contents are removed. The container directory |
| is also removed after the final EPUB file has been generated in the |
| default case. |
| |
| The HTML files produced from the Texinfo manual are output in subdirectories |
| of the container directory. Image files referred to from the Texinfo manual, |
| if found, are copied to subdirectories of the container directory. |
| |
| @cindex EPUB output file |
| The EPUB output file is a ZIP archive of the container directory. |
| The file name is derived from the base name, with the @code{.epub} |
| extension postpended. If an output file is specified, with |
| @option{--output}, or with the @code{OUTFILE} customization function, |
| this file name is used instead. The output EPUB file is never placed |
| in the directory specified by @option{--output} or @code{SUBDIR}; |
| only the container directory is placed there, as explained just above. |
| |
| @vindex EPUB_CREATE_CONTAINER_FILE |
| @vindex EPUB_KEEP_CONTAINER_FOLDER |
| The EPUB output file is not generated if the customization variable |
| @code{EPUB_CREATE_CONTAINER_FILE} is set to 0. The container directory |
| is left after the final EPUB file has been generated if |
| @code{EPUB_KEEP_CONTAINER_FOLDER} is set. |
| |
| @xref{Invoking @command{texi2any}}. |
| |
| |
| @node EPUB Cross-References |
| @nodedescription No cross-references in EPUB output. |
| @subsection EPUB Cross-References |
| |
| The EPUB format does not support references from an EPUB file to |
| another EPUB file. Therefore any references to ``external'' Texinfo |
| manuals should resolve to an external URL@:. @command{texi2any} |
| produces these links with HTML cross-reference configuration |
| (@pxref{HTML Xref Configuration}). Since the links in the |
| resulting EPUB are incorrect if no information is found for the |
| cross-references, @command{texi2any} issues a warning by default for |
| missing cross-references information. If these warnings are unwanted, |
| set @code{CHECK_HTMLXREF} to 0. |
| |
| |
| @node EPUB Conformance |
| @subsection Achieving strict EPUB conformance |
| |
| By default, @command{texi2any} produces EPUB expected by conformance |
| checkers as far as possible. You may still need to adjust your Texinfo |
| manual to achieve full conformance to: |
| @itemize |
| @item Make sure that references to external manuals resolve to URLs |
| (@pxref{EPUB Cross-References}). |
| @item Avoid Texinfo code more forgiving than XHTML. In general |
| valid Texinfo is converted to valid XHTML, but there are exceptions. |
| For example, you should avoid nested references and nested sectioning |
| commands and references, content before @code{@@table} |
| first @code{@@item} and omitting the second column of @code{@@table} |
| @code{@@item}. |
| @item Remove spaces in Texinfo input file names. |
| @item Remove form feeds that end up in output. |
| @end itemize |
| |
| |
| @node EPUB HTML |
| @nodedescription Variables set internally. |
| @subsection HTML Generated for EPUB |
| |
| The HTML generated for EPUB is XHTML conformant, UTF-8 encoded, and |
| formatted without the usual HTML navigation headers and footers. |
| |
| @command{texi2any} achieves this internally by setting customization |
| variables, such as @code{USE_XML_SYNTAX}, @code{HEADERS} or |
| @code{OUTPUT_ENCODING_NAME}. Some features of printed output are used |
| in EPUB@. In particular, the Top node does not appear in the EPUB |
| output, while a title page is generated. This is obtained by setting |
| @code{NO_TOP_NODE_OUTPUT}. @xref{HTML Output Customization}. |
| |
| The @code{OUTFILE} and @code{SUBDIR} customization variables values |
| correspond initially to the EPUB directory container and/or the |
| EPUB output file (@pxref{EPUB Output File and Directory}). These |
| customization variables values are undefined or reset to the |
| locations in the container directory where the XHTML files are output |
| for the HTML generation. |
| |
| This use of customization variables by @command{texi2any} is mentioned here |
| because resetting such variables is unusual; however, the variables reset |
| are used internally for the conversion, and should not interact with any |
| customization set by the user. |
| |
| |
| @node Syntax Highlighting |
| @c @nodedescription Using external programs. |
| @nodedescription Use syntax highlighting in code excerpts. |
| @section Code Examples Syntax Highlighting in HTML |
| @cindex @command{source-highlight} |
| |
| @ignore |
| @cartouche |
| @quotation Warning |
| Source highlighting is experimental; feedback is welcomed. The syntax |
| of @code{HIGHLIGHT_SYNTAX} is very likely to change in future release. |
| @end quotation |
| @end cartouche |
| @end ignore |
| |
| @vindex HIGHLIGHT_SYNTAX |
| @vindex HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE |
| You can use the @code{HIGHLIGHT_SYNTAX} variable for |
| syntax highlighting of source code in @code{@@example} blocks |
| for the HTML output, with the help |
| of external software. You can set @code{HIGHLIGHT_SYNTAX} to |
| one of several special values: |
| |
| @table @code |
| @item highlight |
| Use @command{highlight} from |
| @url{http://www.andre-simon.de/doku/highlight/en/highlight.php}. |
| @item pygments |
| Use @command{pygmentize} from @url{https://pygments.org/}. |
| @item source-highlight |
| Use @command{source-highlight} (@pxref{,,,source-highlight, GNU Source-highlight}). |
| @end table |
| |
| The first argument on an @code{@@example} line (@pxref{@code{@@example}}) |
| gives the name of the language used for syntax highlighting. |
| @code{@@example} blocks without such an argument are only highlighted if |
| @code{HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE} if set, which variable gives the |
| language to use for highlighting such blocks. |
| |
| If you use a value for @code{HIGHLIGHT_SYNTAX} that is not listed above, |
| it is a template for a command line that is executed to highlight code. |
| This gives you more control over the exact command-line options |
| used for the highlighting program, and allows you use other programs |
| than those listed above. In this template, the name of the highlighted |
| language is substituted for occurrences of @samp{%l}, and @samp{%} |
| is substituted for @samp{%%}. @command{texi2any} passes the content of |
| each @code{@@example} block (converted to simple text) on standard input, |
| and the highlighted HTML is read from the standard output. |
| |
| For example, if you set @code{HIGHLIGHT_SYNTAX} to @samp{colorcode -l=%l} and |
| there is an @samp{@@example C++} block in the document, the @command{colorcode |
| -l=C++} command line is executed with the @samp{@@example} block passed |
| to the standard input of the executed command, and the result is read from the |
| standard output of the executed command. |
| |
| |
| @node HTML Xref |
| @nodedescription Standard algorithm for interoperability. |
| @c @nodedescription Cross-references in HTML output. |
| @section HTML Cross-references |
| @cindex HTML cross-references |
| @cindex Cross-references, in HTML output |
| |
| Cross-references between Texinfo manuals in HTML format become standard |
| HTML @code{<a>} links. This section describes the algorithm used, |
| so that Texinfo can cooperate with other programs, such as |
| @command{texi2html}, by writing mutually compatible HTML files. |
| |
| This algorithm may or may not be used for links @emph{within} HTML |
| output for a Texinfo file. Since no issues of compatibility arise in |
| such cases, we do not need to specify this. |
| |
| We try to support references to such ``external'' manuals in both |
| monolithic and split forms. A @dfn{monolithic} (mono) manual is |
| entirely contained in one file, and a @dfn{split} manual has a file |
| for each node. (@xref{HTML Splitting}.) |
| |
| @cindex Dumas, Patrice |
| The algorithm was primarily devised by Patrice Dumas in 2003--04. |
| |
| @menu |
| * Link Basics: HTML Xref Link Basics. |
| * Node Expansion: HTML Xref Node Name Expansion. |
| * Command Expansion: HTML Xref Command Expansion. |
| * 8-bit Expansion: HTML Xref 8-bit Character Expansion. |
| * Configuration: HTML Xref Configuration. |
| @end menu |
| |
| |
| @node HTML Xref Link Basics |
| @subsection HTML Cross-reference Link Basics |
| @cindex HTML cross-references @subentry link basics |
| |
| For our purposes, an HTML link consists of four components: a host |
| name, a directory part, a file part, and a target part. We |
| always assume the @code{http} protocol. For example: |
| |
| @example |
| http://@var{host}/@var{dir}/@var{file}.html#@var{target} |
| @end example |
| |
| The information to construct a link comes from the node name and |
| manual name in the cross-reference command in the Texinfo source |
| (@pxref{Cross References}), and from @dfn{external information} |
| (@pxref{HTML Xref Configuration}). |
| |
| In the usual case of HTML manuals published on the World Wide Web, in |
| order to have working cross-references, external information is required |
| to define the values of @var{host} and @var{dir}. This is detailed later on |
| (@pxref{HTML Xref Configuration}). |
| |
| If no external information is available for a manual, then defaults are |
| used for @var{host} and @var{dir} which correspond to cross-reference |
| links among a collection of manuals located side-by-side on a single host. |
| In this case, @var{host} is hardwired to be the local host. This could |
| either be the literal string @samp{localhost}, or be omitted entirely along |
| with @samp{http://}, according to the rules for HTML links. |
| |
| The @var{dir} and @var{file} parts depend both on the relative split/mono |
| nature of the manual being processed, and on the manual to which |
| the cross-reference refers: |
| |
| @itemize @bullet |
| @item |
| If the present manual is split, and the referent manual is also split, |
| the directory is @samp{../@var{referent}_html/} and the file is the |
| expanded node name (described later). |
| |
| @item |
| If the present manual is split, and the referent manual is mono, the |
| directory is @samp{../} and the file is @file{@var{referent}.html}. |
| |
| @item |
| If the present manual is mono, and the referent manual is split, the |
| directory is @file{@var{referent}_html/} and the file is the expanded node |
| name. |
| |
| @item |
| If the present manual is mono, and the referent manual is also mono, |
| the directory is @file{./} (or just the empty string), and the file is |
| @file{@var{referent}.html}. |
| |
| @end itemize |
| |
| The underlying idea is that there is one directory for Texinfo |
| manuals in HTML, and a given @var{manual} is either available as a |
| monolithic file @file{@var{manual}.html}, or as a split subdirectory |
| @file{@var{manual}_html/*.html}. |
| |
| Another rule, which only holds for file names, is that base file names |
| are truncated to 245 characters to allow for an extension to be |
| appended and still comply with the 255-character limit which is common |
| to many filesystems. |
| @c Although technically this can be changed with the |
| @c @code{BASEFILENAME_LENGTH} customization variable (@pxref{File Names and Links |
| @c Customization for HTML}), doing so would make cross-manual references to such |
| @c nodes invalid. |
| |
| Any directory part in the file name argument of the source cross |
| reference command is ignored. Thus, @code{@@xref@{,,,../foo@}} and |
| @code{@@xref@{,,,foo@}} both use @samp{foo} as the manual name. This |
| is because any such attempted hardwiring of the directory is very |
| unlikely to be useful for all the output formats that use the manual |
| name. |
| |
| Finally, the @var{target} part is always the expanded node name. |
| |
| Whether the present manual is output as split or mono is determined by |
| how you run @command{texi2any}; the default is to split, with the |
| @option{--no-split} option overriding this. |
| |
| By default, @command{texi2any} generates links to a referent manual using |
| the same form as the present manual: if the present manual is generated |
| as split, then links to other manuals are to their split forms by default; |
| likewise for mono output. |
| |
| However, the form of the referent manual (mono or split) should usually |
| be specified in a configuration file (@pxref{HTML Xref Configuration}). |
| This ensures that there is no mismatch between the format of the referent |
| manual that the generating software assumes, and the format it's actually |
| present in. |
| |
| |
| @node HTML Xref Node Name Expansion |
| @subsection HTML Cross-reference Node Name Expansion |
| @cindex HTML cross-references @subentry node name expansion |
| @cindex node name expansion, in HTML cross-references |
| @cindex expansion, of node names in HTML cross-references |
| |
| As mentioned in the previous section, the key part of the HTML cross |
| reference algorithm is the conversion of node names in the Texinfo |
| source into strings suitable for XHTML identifiers and file names. The |
| restrictions are similar for each: plain ASCII letters, numbers, and |
| the @samp{-} and @samp{_} characters are all that can be used. |
| (Although HTML anchors can contain most characters, XHTML is more |
| restrictive.) |
| |
| Cross-references in Texinfo can refer either to nodes, anchors |
| (@pxref{@code{@@anchor}}) or float labels (@pxref{@code{@@float}}). |
| However, anchors and float labels are treated identically |
| to nodes in this context, so we'll continue to say ``node'' names for |
| simplicity. |
| |
| A special exception: the Top node (@pxref{The Top Node}) is always |
| mapped to the file @file{index.html}, to match web server software. |
| However, the HTML @emph{target} is @samp{Top}. Thus (in the split case): |
| |
| @example |
| @@xref@{Top,,, emacs, The GNU Emacs Manual@}. |
| @result{} <a href="../emacs_html/index.html#Top"> |
| @end example |
| |
| @enumerate |
| @item |
| The standard ASCII letters (a-z and A-Z) are not modified. All other |
| characters may be changed as specified below. |
| |
| @item |
| 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. |
| |
| @item |
| Multiple consecutive space, tab and newline characters are transformed |
| into just one space. |
| |
| @item |
| Leading and trailing spaces are removed. |
| |
| @item |
| After the above has been applied, each remaining space character is |
| converted into a @samp{-} character. |
| |
| @item |
| Other ASCII 7-bit characters are transformed into @samp{_00@var{xx}}, |
| where @var{xx} is the ASCII character code in (lowercase) hexadecimal. |
| This includes @samp{_}, which is mapped to @samp{_005f}. |
| |
| @item |
| If the node name does not begin with a letter, the literal string |
| @samp{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. |
| |
| @end enumerate |
| |
| For example: |
| |
| @example |
| @@node A node --- with _'% |
| @result{} A-node-_002d_002d_002d-with-_005f_0027_0025 |
| @end example |
| |
| Example translations of common characters: |
| |
| @itemize @bullet |
| @item @samp{_} @result{} @samp{_005f} |
| @item @samp{-} @result{} @samp{_002d} |
| @item @samp{A node} @result{} @samp{A-node} |
| @end itemize |
| |
| 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 @file{index.html}. Thus, on a case-folding |
| system, Top and a node named `Index' will both be written to |
| @file{index.html}. Fortunately, the targets serve to distinguish |
| these cases, since HTML target names are always case-sensitive, |
| independent of operating system. |
| |
| |
| @node HTML Xref Command Expansion |
| @subsection HTML Cross-reference Command Expansion |
| @cindex HTML cross-references @subentry command expansion |
| |
| Node names may contain @@-commands (@pxref{Node Line Requirements}). |
| This section describes how they are handled. |
| |
| First, comments are removed. |
| |
| Next, any @code{@@value} commands (@pxref{@code{@@set @@value}}) and |
| macro invocations (@pxref{Invoking Macros}) are fully expanded. |
| |
| Then, for the following commands, the command name and braces are removed, |
| and the text of the argument is recursively transformed: |
| |
| @example |
| @@asis @@b @@cite @@code @@command @@dfn @@dmn @@dotless |
| @@emph @@env @@file @@i @@indicateurl @@kbd @@key |
| @@samp @@sansserif @@sc @@slanted @@strong @@sub @@sup |
| @@t @@U @@var @@verb @@w |
| @end example |
| |
| In addition, the following commands are replaced by constant text, as |
| shown below. If any of these commands have non-empty arguments, as in |
| @code{@@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+@var{hhhh}' means Unicode code |
| point @var{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 |
| @samp{-}, etc., according to the other rules. |
| |
| @multitable @columnfractions .3 .5 |
| @item @code{@@(newline)} @tab (space) |
| @item @code{@@(space)} @tab (space) |
| @item @code{@@(tab)} @tab (space) |
| @item @code{@@!} @tab @samp{!} |
| @item @code{@@*} @tab (space) |
| @item @code{@@-} @tab (nothing) |
| @item @code{@@.} @tab @samp{.} |
| @item @code{@@:} @tab (nothing) |
| @item @code{@@?} @tab @samp{?} |
| @item @code{@@@@} @tab @samp{@@} |
| @item @code{@@@{} @tab @samp{@{} |
| @item @code{@@@}} @tab @samp{@}} |
| @item @code{@@LaTeX} @tab @samp{LaTeX} |
| @item @code{@@TeX} @tab @samp{TeX} |
| @item @code{@@arrow} @tab U+2192 |
| @item @code{@@bullet} @tab U+2022 |
| @item @code{@@comma} @tab @samp{,} |
| @item @code{@@copyright} @tab U+00A9 |
| @item @code{@@dots} @tab U+2026 |
| @item @code{@@enddots} @tab @samp{...} |
| @item @code{@@equiv} @tab U+2261 |
| @item @code{@@error} @tab @samp{error-->} |
| @item @code{@@euro} @tab U+20AC |
| @item @code{@@exclamdown} @tab U+00A1 |
| @item @code{@@expansion} @tab U+21A6 |
| @item @code{@@geq} @tab U+2265 |
| @item @code{@@leq} @tab U+2264 |
| @item @code{@@minus} @tab U+2212 |
| @item @code{@@ordf} @tab U+00AA |
| @item @code{@@ordm} @tab U+00BA |
| @item @code{@@point} @tab U+22C6 |
| @item @code{@@pounds} @tab U+00A3 |
| @item @code{@@print} @tab U+22A3 |
| @item @code{@@questiondown} @tab U+00BF |
| @item @code{@@registeredsymbol} @tab U+00AE |
| @item @code{@@result} @tab U+21D2 |
| @item @code{@@textdegree} @tab U+00B0 |
| @item @code{@@tie} @tab (space) |
| @end multitable |
| |
| Quotation mark @@-commands (@code{@@quotedblright@{@}} and the like), |
| are likewise replaced by their Unicode values. Normal quotation |
| @emph{characters} (e.g., ASCII ` and ') are not altered. |
| @xref{Inserting Quotation Marks}. |
| |
| Any @code{@@acronym}, @code{@@abbr}, @code{@@email}, and |
| @code{@@image} commands are replaced by their first argument. (For |
| these commands, all subsequent arguments are optional, and ignored |
| here.) @xref{@code{@@acronym}}, and @ref{@code{@@email}}, and @ref{Images}. |
| |
| Accents are handled according to the next section. |
| |
| Any other command is an error, and the result is unspecified. |
| |
| |
| @node HTML Xref 8-bit Character Expansion |
| @subsection HTML Cross-reference 8-bit Character Expansion |
| @cindex HTML cross-references @subentry 8-bit character expansion |
| @cindex 8-bit characters, in HTML cross-references |
| @cindex Expansion of 8-bit characters in HTML cross-references |
| @cindex Transliteration of 8-bit characters in HTML cross-references |
| |
| Usually, characters other than plain 7-bit ASCII are transformed into |
| the corresponding Unicode code point(s) in Normalization Form@tie{}C, |
| which uses precomposed characters where available. (This is the |
| normalization form recommended by the W3C and other bodies.) This |
| holds when that code point is @code{0xffff} or less, as it almost |
| always is. |
| |
| These will then be further transformed by the rules above into the |
| string @samp{_@var{hhhh}}, where @var{hhhh} is the code point in hex. |
| |
| For example, combining this rule and the previous section: |
| |
| @example |
| @@node @@b@{A@} @@TeX@{@} @@u@{B@} @@point@{@}@@enddots@{@} |
| @result{} A-TeX-B_0306-_22C6_002e_002e_002e |
| @end example |
| |
| Notice: 1)@tie{}@code{@@enddots} expands to three periods which in |
| turn expands to three @samp{_002e}'s; 2)@tie{}@code{@@u@{B@}} is a `B' |
| with a breve accent, which does not exist as a pre-accented Unicode |
| character, therefore expands to @samp{B_0306} (B with combining |
| breve). |
| |
| When the Unicode code point is above @code{0xffff}, the transformation |
| is @samp{__@var{xxxxxx}}, that is, two leading underscores followed by |
| six hex digits. Since Unicode has declared that their highest code |
| point is @code{0x10ffff}, this is sufficient. (We felt it was better |
| to define this extra escape than to always use six hex digits, since |
| the first two would nearly always be zeros.) |
| |
| This method works fine if the node name consists mostly of ASCII |
| characters and contains only few 8-bit ones. But if the document is |
| written in a language whose script is not based on the Latin alphabet |
| (for example, Ukrainian), it will create file names consisting almost |
| entirely of @samp{_@var{xxxx}} notations, which is inconvenient and |
| all but unreadable. To handle such cases, @command{texi2any} offers |
| the @option{--transliterate-file-names} command line option. This |
| option enables @dfn{transliteration} of node names into ASCII |
| characters for the purposes of file name creation. |
| The transliteration is based on phonetic principles, which makes the |
| generated file names more easily understandable. |
| |
| @cindex Normalization Form C, Unicode |
| For the definition of Unicode Normalization Form@tie{}C, see Unicode |
| report UAX#15, @uref{http://www.unicode.org/reports/tr15/}. Many |
| related documents and implementations are available elsewhere on the |
| web. |
| |
| |
| @node HTML Xref Configuration |
| @nodedescription @file{htmlxref.cnf} and @file{htmlxref.d/*.cnf}. |
| @subsection HTML Cross-reference Configuration |
| |
| @c the "HTML Xref Mismatch" was removed. Placing the anchor here as |
| @c it is the most relevant node for that subject. |
| @anchor{HTML Xref Mismatch} |
| |
| @pindex htmlxref.cnf |
| @pindex htmlxref.d/*.cnf |
| @cindex HTML cross-references @subentry configuration |
| @cindex Cross-reference configuration, for HTML |
| @cindex Configuration, for HTML cross-manual references |
| |
| For other manuals published on the World Wide Web to be able to have |
| correct cross-references to your manual, the @var{host} and |
| @var{dir} parts of the cross-reference need to be known by Texinfo |
| converters when they produce HTML for those other manuals. |
| Similarly, for your manual in HTML format to have correct |
| cross-references to other manuals, @command{texi2any} needs to know |
| how to construct the URLs for other manuals. |
| |
| @command{texi2any} reads a file named @file{htmlxref.cnf} and all the |
| files ending with the @file{.cnf} extension in the @file{htmlxref.d} |
| directory to gather information for cross-references to other manuals in HTML |
| output. @file{htmlxref.cnf} and @file{htmlxref.d} are looked for in the |
| following directories, based on the |
| @url{https://specifications.freedesktop.org/basedir-spec/latest/, XDG Base |
| Directory Specification} with defaults based on installation directories: |
| |
| @table @file |
| @item ./ |
| (the current directory) |
| |
| @item leading input file path directory |
| If there is a leading directory and it is not the current directory. |
| For example, if the input file is @file{some/dir/mymanual.texi}, |
| @file{htmlxref.cnf} is searched for in @file{some/dir} and files matching |
| @file{some/dir/htmlxref.d/*.cnf} are read too. |
| |
| @item ./.texinfo/ |
| (under the current directory) |
| |
| @item @env{XDG_CONFIG_HOME}/texinfo |
| (with @env{XDG_CONFIG_HOME} an environment variable) |
| |
| @item ~/.config/texinfo/ |
| (where @code{~} is the current user's home directory, only if |
| @env{XDG_CONFIG_HOME} is not set) |
| |
| @item @var{sysconfdir}/xdg/texinfo/ |
| (where @var{sysconfdir} is the system configuration directory |
| specified at compile-time, e.g., @file{/usr/local/etc}) |
| |
| @item @env{XDG_CONFIG_DIRS}/texinfo |
| (for each directory in the @code{:} delimited @env{XDG_CONFIG_DIRS} |
| environment variable) |
| |
| @c @item /etc/xdg/texinfo/ |
| @c (with @file{/etc/xdg} the default directory for @env{XDG_CONFIG_DIRS} |
| @c in the XDG Base Directory Specification) |
| |
| @item @var{datadir}/texinfo/ |
| (specified at compile time, e.g., @file{/usr/local/share}) |
| |
| @c @item @env{XDG_DATA_DIRS}/texinfo |
| @c (for each directory in the @code{:} delimited @env{XDG_DATA_DIRS} environment |
| @c variable) |
| |
| @c @item /usr/local/share/texinfo/ |
| @c (with @file{/usr/local/share} the first default directory for |
| @c @env{XDG_DATA_DIRS} in the XDG Base Directory Specification) |
| |
| @c @item /usr/share/texinfo/ |
| @c (with @file{/usr/share/} the second default directory for @env{XDG_DATA_DIRS} |
| @c in the XDG Base Directory Specification) |
| @end table |
| |
| All files found are used, with earlier entries overriding later ones. |
| The Texinfo distribution includes files that are installed in |
| @file{@var{datadir}/texinfo/htmlxref.d}, in one of the last of the |
| above directories: |
| |
| @table @file |
| @item Texinfo_GNU.cnf |
| Handles many GNU manuals. |
| @item Texinfo_nonGNU.cnf |
| Free manuals of non GNU projects. |
| @end table |
| |
| You can use a local @file{htmlxref.cnf} to complete or correct the |
| default files from the Texinfo distribution. This could be useful to |
| correct outdated data, or even to generate cross-references to local |
| files for some manuals. Other software packages managing lists of manuals |
| following the HTML cross-references specification could install @file{.cnf} |
| files in @file{@var{datadir}/texinfo/htmlxref.d}. |
| |
| The @code{HTMLXREF_MODE} customization variable can be set to modify how the |
| files are found. For instance, if set to @samp{none}, no external information |
| is used. @code{HTMLXREF_FILE} sets the file name to something else than |
| @file{htmlxref.cnf}. @xref{HTML Xref Configuration Customization}. |
| |
| The file is line-oriented. Lines consisting only of whitespace are |
| ignored. Comments are indicated with a @samp{#} at the beginning of a |
| line, optionally preceded by whitespace. Since @samp{#} 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 @dfn{variable |
| assignment} or @dfn{manual information}. |
| |
| A variable assignment line looks like this: |
| |
| @example |
| @var{varname} = @var{varvalue} |
| @end example |
| |
| Whitespace around the @samp{=} is optional and ignored. The |
| @var{varname} should consist of letters; case is significant. The |
| @var{varvalue} is an arbitrary string, continuing to the end of the |
| line. Variables are then referenced with @samp{$@{@var{varname}@}}; |
| variable references can occur in the @var{varvalue}. |
| |
| A manual information line looks like this: |
| |
| @example |
| @var{manual} @var{keyword} @var{urlprefix} |
| @end example |
| |
| @noindent |
| with @var{manual} the short identifier for a manual, @var{keyword} |
| being one of: @code{mono}, @code{node}, @code{section}, |
| @code{chapter}, and @var{urlprefix} described below. Variable |
| references can occur only in the @var{urlprefix}. For example (used |
| in the canonical file): |
| |
| @example |
| G = https://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/ |
| @end example |
| |
| @cindex monolithic manuals, for HTML cross-references |
| If the keyword is @code{mono}, @var{urlprefix} gives the host, |
| directory, and file name for @var{manual} as one monolithic file. |
| |
| @cindex split manuals, for HTML cross-references |
| If the keyword is @code{node}, @code{section}, or @code{chapter}, |
| @var{urlprefix} gives the host and directory for @var{manual} split |
| into nodes, sections, or chapters, respectively. |
| |
| If @var{urlprefix} is omitted, the elements of the cross-references |
| correspond to cross-reference links among a collection of manuals located |
| side-by-side on a single host (@pxref{HTML Xref Link Basics}). This |
| could be useful if you generate and publish a collection of manuals and |
| prefer linking to the generated manuals rather than to the versions found in |
| cross-references configurations shipped with Texinfo. |
| |
| When @command{texi2any} is generating a link to another Texinfo manual, |
| it will prefer to use a line for the manual with the same |
| splitting option as the current output. That is, when generating |
| monolithic output (@option{--no-split}), a @code{mono} URL will be |
| preferred; when generating output that is split by node, a @code{node} |
| URL will be preferred, etc. |
| |
| If no information line with the preferred splitting option is present |
| for a given manual, then other lines for that manual can be used if |
| present. Here is the full search order for each splitting option: |
| |
| @example |
| node @result{} node, section, chapter, mono |
| section @result{} section, chapter, node, mono |
| chapter @result{} chapter, section, node, mono |
| mono @result{} mono, chapter, section, node |
| @end example |
| |
| @opindex --node-files@r{, and HTML cross-references} |
| These section- and chapter-level cross-manual references can succeed |
| only when the target manual was created using @option{--node-files}; |
| this is the default for split output. |
| |
| At present, the @file{Texinfo_GNU.cnf} and @file{Texinfo_nonGNU.cnf} files |
| distributed with GNU Texinfo serve as the main resource to locate Texinfo HTML |
| manuals in the World Wide Web. Since they are installed in a location used by |
| @command{texi2any}, information on HTML manuals found in these files will be |
| used for cross-references by default. |
| |
| If you have additions or corrections to the files distributed with Texinfo, |
| please email @email{bug-texinfo@@gnu.org} as usual. If you publish a Texinfo |
| HTML manual on the World Wide Web, having an up-to-date location listed in |
| @file{Texinfo_GNU.cnf} or @file{Texinfo_nonGNU.cnf} should ensure that all HTML |
| manuals generated by @command{texi2any} use this location for cross-references |
| automatically. You can get the latest versions from |
| @url{https://ftpmirror.gnu.org/@/texinfo/@/htmlxref.d/@/Texinfo_GNU.cnf} and |
| @url{https://ftpmirror.gnu.org/@/texinfo/@/htmlxref.d/@/Texinfo_nonGNU.cnf}. |
| If you want to maintain a separate file distributed with Texinfo, please |
| email @email{bug-texinfo@@gnu.org} as well. |
| |
| |
| @node HTML Output Customization |
| @nodedescription Using customization variables. |
| @section HTML Output Customization |
| |
| You can use many user-definable customization variables to influence |
| the HTML output. @xref{HTML Customization Variables List} for the full list. |
| The possibilities offered by the customization variables, ranging from |
| overall document structure and HTML language variant to formatting of |
| specific constructs, should cover most needs not already satisfied |
| by CSS customization (@pxref{HTML CSS}). |
| |
| If you ever need more control, you may be able to achieve this through |
| the use of initialization files, which are described in a separate |
| manual (@pxref{,,, texi2any_api, GNU Texinfo @command{texi2any} Output |
| Customization}). |
| |
| @vindex TEXI2HTML |
| If the @code{TEXI2HTML} customization variable is set, the generated HTML is as |
| compatible as possible with @command{texi2html} (@pxref{@command{texi2html}}). |
| The effect of this variable is quite unusual, as it does not directly modify |
| the output, but sets a lot of other customization variables, including some |
| that may only be set in initialization files and are described in the |
| separate manual on @command{texi2any} Output Customization. Unset in |
| the default case. |
| |
| |
| @node HTML Output Structure Customization |
| @subsection HTML Output Structure Customization |
| |
| You can use customization variables to control the output of document |
| titles and tables of contents or other similar parts of documents. |
| Other variables have an effect on how @command{texi2any} views the |
| structure of a document and how output is split into output files. |
| |
| @vindex SHOW_TITLE |
| @vindex USE_TITLEPAGE_FOR_TITLE |
| If @code{SHOW_TITLE} is @samp{undef}, the default, no title is |
| output at the start of the output. If you set this variable, |
| by default the contents of @code{@@titlepage} (or output from |
| @code{@@maketitle}) is used for the title; unset |
| @code{USE_TITLEPAGE_FOR_TITLE} to get a simple title string. |
| |
| @vindex NO_TOP_NODE_OUTPUT @subentry @r{for HTML} |
| By default, the HTML output is tailored for online viewing, with |
| the Top node being output as a top-level starting point for the reader. |
| You can set @code{NO_TOP_NODE_OUTPUT} to remove the Top node, which |
| results in output that may be more similar to the format of a printed |
| book. By default, setting @code{NO_TOP_NODE_OUTPUT} also |
| outputs a title at the beginning of the document, although you |
| can override this by setting @code{SHOW_TITLE} to 0. |
| |
| @vindex FORMAT_MENU @subentry @r{for HTML} |
| In each node, by default a list is output of subordinate sections |
| for navigation. This corresponds to the @code{FORMAT_MENU} variable |
| being set to @samp{sectiontoc}. To use menus instead to navigate in the |
| document (as in Info format; @pxref{Menus}), set @code{FORMAT_MENU} to |
| @samp{menu}. Set @code{FORMAT_MENU} to @samp{menu_no_detailmenu} if you |
| want menus but no automatically generated @code{@@detailmenu} for |
| the Top master menu. If you do not want either menus or subordinate sections |
| list for navigation to be output, set @code{FORMAT_MENU} to @samp{nomenu}. |
| |
| @vindex CONTENTS_OUTPUT_LOCATION |
| By default, the table of contents for the entire document is output |
| at the end of the @code{@@top} section, to have the main location for |
| navigation in the whole document early on. This corresponds to the |
| @code{CONTENTS_OUTPUT_LOCATION} variable set to @samp{after_top}. |
| |
| You can have the table of contents output after the title (if |
| @code{SHOW_TITLE} is set) by setting @code{CONTENTS_OUTPUT_LOCATION} |
| to @samp{after_title}. |
| To output the table of contents at the end of the document or to a separate |
| file, if output is split, set @code{CONTENTS_OUTPUT_LOCATION} |
| to @samp{separate_element}. You can also set |
| @code{CONTENTS_OUTPUT_LOCATION} to @samp{inline}: in this case, |
| the tables of contents are output where |
| the corresponding @@-command, for example @code{@@contents}, is used. |
| |
| You may find it useful to set @code{CONTENTS_OUTPUT_LOCATION} when |
| @code{FORMAT_MENU} is set to @samp{menu} in order to use menus for |
| navigation. In this case, there should already be a master menu in the |
| @code{@@top} section (@pxref{Master Menu Parts}), and so the reader of |
| your manual may not need a table of contents at the same location. |
| |
| @vindex USE_NODES @subentry @r{for HTML} |
| Elementary units called @dfn{output units} are used for output, with each |
| output file containing the content for one or more output units, depending |
| on the value of @code{SPLIT} (described below). Output units contain |
| the content associated with a node or a sectioning command. In typical |
| Texinfo document sources, a node command is almost always associated |
| with an immediately following sectioning command. |
| |
| The customization variable @code{USE_NODES} determines whether the |
| node or the sectioning command is considered to be the main command. |
| By default, nodes are used as the main component for the separation of |
| output units. You can set @code{USE_NODES} to false to preferentially |
| use sectioning to decide where output units are separated. |
| When sections are the main components of output units, ``isolated'' nodes |
| not directly associated with a sectioning command are associated with |
| the following sectioning command, while sectioning commands without |
| nodes constitute output units. Conversely, when nodes are the main |
| components of output units, isolated sections not associated with nodes |
| are associated with the previous node, and isolated nodes are |
| output units. |
| |
| @vindex USE_NODE_DIRECTIONS |
| By default, the @code{USE_NODES} setting also affects whether next, |
| up and prev links in node headers link to nodes or sections, with nodes |
| used if true, and sections used if false. You can override this using |
| the @code{USE_NODE_DIRECTIONS} variable (default value is undefined). |
| Note that this setting does not determine the link string, only where the |
| links points to; see @ref{Three Arguments, , xrefautomaticsectiontitle} |
| for the link string customization. If nodes and sections are |
| systematically associated, this customization has no practical effect. |
| |
| @vindex SPLIT @subentry @r{for HTML} |
| By default, each output unit is output in a separate file. You can change this |
| with the @option{--split} command-line option, which is equivalent to |
| setting the @code{SPLIT} variable. @code{SPLIT} can take the values |
| @samp{chapter}, @samp{section}, or @samp{node}, or be set to an empty |
| string to indicate non-split output. @xref{Splitting Output}. |
| |
| @vindex DO_ABOUT |
| @vindex PROGRAM_NAME_IN_ABOUT |
| You can add a special @dfn{About} element explaining how to navigate by |
| setting @code{DO_ABOUT}, set to 0 in the default case (no About element). |
| If @code{PROGRAM_NAME_IN_ABOUT} is also set, output the program name and |
| miscellaneous related information in the About special element; default |
| false. |
| |
| @vindex MONOLITHIC |
| In the case of non-split output, by default only one file is output |
| which contains any About elements (with @code{DO_ABOUT}) and tables of |
| contents elements (with @code{CONTENTS_OUTPUT_LOCATION} set to |
| @samp{separate_element}). If you prefer such special elements to be |
| separate, set @code{MONOLITHIC} to 0 to output special elements to |
| separate files. |
| |
| |
| @node File Names and Links Customization for HTML |
| @subsection File Names and Links Customization for HTML |
| |
| There are customization variables to control output file names, and |
| to customize hyperlinks output within output files. |
| |
| @c file names |
| |
| @vindex PREFIX @subentry @r{for HTML} |
| @vindex SUBDIR @subentry @r{for HTML} |
| @vindex EXTENSION @subentry @r{for HTML} |
| @vindex CASE_INSENSITIVE_FILENAMES |
| You can specify the output file names with more control than |
| merely the command line option @option{--output} (@pxref{Invoking |
| @command{texi2any}}). The @code{PREFIX} customization |
| variable overrides the base name of the file given by @code{@@setfilename} or |
| the file name and should not contain any directory components. To alter |
| intermediate directories, use the @code{SUBDIR} customization variable. |
| Finally, you may also override the extension with the customization variable |
| @code{EXTENSION}. This variable should be @code{undef} if no extension is to |
| be added. If you set @code{CASE_INSENSITIVE_FILENAMES}, file names are |
| constructed as if the filesystem were case insensitive. In that case, |
| one file name is used for all files differing only by case. |
| |
| @vindex TOP_FILE |
| Furthermore, the customization variable @code{TOP_FILE} overrides |
| the output file name for the top element. This is, in general, |
| only taken into account when output is split. |
| |
| @vindex USE_ACCESSKEY |
| If @code{USE_ACCESSKEY} is set, the @code{accesskey} attribute |
| is used to provide keyboard shortcuts on some navigation hyperlinks. |
| @kbd{n} is used for links to the next node or section, @kbd{p} for links to |
| the previous node or section, and @kbd{u} for up direction links. In the |
| default case, this customization variable value is @code{undef}, and set |
| automatically based on output document split, to avoid setting @code{accesskey} |
| to multiple values in the same HTML page (@pxref{HTML Splitting}). |
| |
| |
| @c internal links |
| |
| There are customization variables that are specific to particular |
| types of link: |
| |
| @table @emph |
| @item Cross-reference command links |
| @vindex XREF_USE_NODE_NAME_ARG |
| If the second argument of a cross-reference command is set, it is displayed |
| as hyperlink text (@pxref{Two Arguments}). Otherwise the |
| @code{XREF_USE_NODE_NAME_ARG} customization variable is used to determine the |
| hyperlink text. If set to@tie{}1, use the node name (first) argument in |
| cross-reference @@-commands for the text displayed as the hyperlink. If set |
| to@tie{}0, use the node name if @code{USE_NODES} is set, otherwise the section |
| name. If set to @samp{undef}, use the first argument in preformatted |
| environments, otherwise use the node name or section name depending on |
| @code{USE_NODES}. The default is @samp{undef}. |
| |
| @item Links to floats |
| @vindex XREF_USE_FLOAT_LABEL |
| If you set @code{XREF_USE_FLOAT_LABEL} (default is off), the float label |
| is used instead of the type followed by the float number |
| (@pxref{@code{@@float}}). |
| |
| @item Links to nodes or sections for index entries |
| @vindex NODE_NAME_IN_INDEX |
| In @code{@@printindex} formatting, two links are output: a link to the index |
| entry, and a link to the root @@-command containing the index entry. The |
| @code{NODE_NAME_IN_INDEX} customization variable specifies whether the node or |
| section should be used for the link to the root @@-command. If true, use node |
| names in index entries, otherwise use section names. If undefined, use |
| the @code{USE_NODES} value to determine which root @@-command to prefer. |
| Default is undefined. |
| |
| @item Menu links |
| @vindex NODE_NAME_IN_MENU |
| Node names are used in menu entries links by default. Set |
| @code{NODE_NAME_IN_MENU} to false to use section names instead. |
| |
| @item Table of contents links |
| @vindex SHORT_TOC_LINK_TO_TOC |
| If a main Table of contents and a Short table of contents are both present, the |
| cross-references in the Short table of contents link to the corresponding |
| Table of Contents entries in the default case. Set |
| @code{SHORT_TOC_LINK_TO_TOC} to 0 to link to the sectioning commands instead. |
| |
| @vindex TOC_LINKS |
| If you set @code{TOC_LINKS}, links from headings to toc entries are created; |
| default false. |
| |
| @item Top node Up direction link |
| @vindex IGNORE_REF_TO_TOP_NODE_UP |
| By default no Up reference is generated for the Top node. You can set |
| @code{IGNORE_REF_TO_TOP_NODE_UP} so that any references to the Top Up node |
| (by default, @samp{(dir)}) appearing in other cross-references are also |
| ignored. @code{IGNORE_REF_TO_TOP_NODE_UP} is not set in the default case. |
| (@xref{TOP_NODE_UP}.) |
| |
| @vindex TOP_NODE_UP_URL |
| @vindex TOP_NODE_UP @subentry @r{for HTML} |
| If the manual is referred to in a web page together with other manuals, |
| it may be relevant to link to that page. Set |
| @code{TOP_NODE_UP_URL} to the URL used for Top node up references. |
| If @code{TOP_NODE_UP_URL} is set, the value of @code{TOP_NODE_UP} |
| is used for the hyperlink text, with @samp{(dir)} as default. |
| @code{TOP_NODE_UP} can be used in attribute, so should not contain any element. |
| |
| For example, in the GNU project @url{https://www.gnu.org/manual/} collects |
| links to most GNU manuals; therefore @code{TOP_NODE_UP_URL} is best |
| specified as @code{/manual/} if the manual will be installed on |
| @code{www.gnu.org}. |
| |
| @xref{First Node} for more about the Top node pointers. |
| |
| @item images links |
| @vindex IMAGE_LINK_PREFIX |
| If @code{IMAGE_LINK_PREFIX} is set, the associated value is prepended to |
| the image file links; default unset. This could be useful if image files are |
| in a specific subdirectory. |
| @end table |
| |
| @c Cross references |
| |
| @anchor{HTML Xref Configuration Customization} |
| Cross-references between HTML manuals are specified precisely |
| (@pxref{HTML Xref}). Customization of manual locations is provided |
| through the @file{htmlxref.cnf} and @file{htmlxref.d/*.cnf} files |
| (@pxref{HTML Xref Configuration}). |
| |
| @vindex CHECK_HTMLXREF |
| Default directories and file names are used for cross-reference target |
| manuals not found through HTML Xref Configuration (@pxref{HTML Xref Link |
| Basics}). By default, a warning is given for each external manual not in |
| the HTML Xref configuration files. If you do not want warnings about such |
| manuals, you should set @code{CHECK_HTMLXREF} to @samp{0}. This could |
| be relevant, for example, if you know that manuals are installed locally. |
| |
| @vindex HTMLXREF_MODE |
| @vindex HTMLXREF_FILE |
| @vindex EXTERNAL_CROSSREF_SPLIT |
| @cindex HTML cross-references @subentry configuration customization |
| You can use customization variables to specify the HTML Xref |
| Configuration more precisely. |
| By default, the file name used for HTML Xref configuration |
| and the @file{htmlxref.d} directory are searched for in directories, |
| files in @file{htmlxref.d} with the @file{.cnf} extension and all the files |
| used for HTML Xref configuration found are used. |
| You can set the @code{HTMLXREF_MODE} customization variable to modify how |
| cross-references to other manuals information is determined. |
| If @code{HTMLXREF_MODE} is set to @samp{file}, the file name is directly used |
| as the source of information. If @code{HTMLXREF_MODE} is set to @samp{none} |
| no information is used. The default case is obtained with @code{HTMLXREF_MODE} |
| not defined or set to any other value. The @code{HTMLXREF_FILE} customization |
| variable sets the file used for HTML Xref configuration to another value than |
| the default, @file{htmlxref.cnf}. If @code{HTMLXREF_FILE} contains directories, |
| it is loaded if found, but is not searched for in directories. By default, the |
| distant manual is considered to be split or monolithic based on the splitting |
| of the manual being output. You can set it explicitly, instead, by setting |
| @code{EXTERNAL_CROSSREF_SPLIT}. |
| |
| @cindex Cross-references customization, in HTML |
| There are also customization variables that modify various other |
| aspects of cross-references: |
| |
| @itemize @bullet |
| @vindex TOP_NODE_FILE_TARGET |
| @item You can set the file name used for the Top node in cross-references by |
| setting the @code{TOP_NODE_FILE_TARGET} customization variable value; |
| default is @file{index.html}. |
| |
| @vindex EXTERNAL_DIR |
| @item You specify a base directory for external |
| manuals with @code{EXTERNAL_DIR}; in the default case, there is none. |
| |
| @vindex EXTERNAL_CROSSREF_EXTENSION |
| @item Similarly, you set the file extension for cross-references to other |
| manuals with @code{EXTERNAL_CROSSREF_EXTENSION}. @c , which, if unset, is based on |
| @c @code{EXTENSION}. |
| |
| @end itemize |
| |
| @noindent However, in general use of these will make cross-manual |
| references ``invalid'' in the sense that the generated URL will not link |
| to the external manual, unless this manual was itself also produced |
| using the corresponding customization. It is therefore, in general, |
| better to use HTML Xref Configuration only. |
| |
| @vindex BASEFILENAME_LENGTH |
| You can change the maximum length of a base file name |
| for internal cross-references by setting @code{BASEFILENAME_LENGTH}; by |
| default, the base file names are truncated to 245 characters. |
| @c (@pxref{HTML Xref Link Basics}). |
| |
| |
| |
| @node Customization of Navigation and Headers |
| @subsection Customization of Navigation and Headers |
| |
| @vindex HEADERS @subentry @r{for HTML} |
| Headers and footers with a navigation panel are output in the default |
| case. If you use @option{--no-headers}, or if the customization variable |
| @code{HEADERS} is unset, the navigation panel is only inserted at the |
| beginning of split files. |
| |
| @vindex USE_LINKS |
| By default, @code{<link>} elements are generated in the |
| HTML @code{<head>} to specify relationships between the HTML page |
| and other resources, for example the Top node, the next node or |
| the table of contents. Unset @code{USE_LINKS} to avoid those elements. |
| |
| @vindex SECTION_NAME_IN_TITLE |
| The @code{<title>} and the document description in @code{<head>} |
| are based on @code{@@settitle} (@pxref{@code{@@settitle}}). |
| If the manual is split, the node name is also added to this HTML title. |
| Set @code{SECTION_NAME_IN_TITLE} to use the argument of the associated |
| chapter structuring command instead of the node name. |
| |
| @vindex OUTPUT_ENCODING_NAME @subentry @r{for HTML} |
| By default, if an input encoding is set (typically through |
| @code{@@documentencoding}), this information is used to set the output |
| encoding name, otherwise the output encoding is based on the default encoding. |
| A @samp{<meta>} tag is output, in the @samp{<head>} section of the HTML, to |
| specify the output encoding. @xref{@code{@@documentencoding}}. To set |
| the output encoding explicitly, set @code{OUTPUT_ENCODING_NAME}. The |
| specified encoding should be a normalized charset name usable in HTML, |
| typically one of the preferred IANA encoding names. |
| |
| @vindex WORDS_IN_PAGE |
| When output is split at nodes (@pxref{HTML Splitting}), the |
| @code{WORDS_IN_PAGE} customization variable value specifies the approximate |
| minimum page length at which a navigation panel is placed at the bottom of a |
| page. It is not possible for you to calibrate this value very precisely |
| for exact results: this is because the count of words used for the check |
| is based on the HTML output for the node so far (including any navigation |
| bar at the top of the page), which yields a value somewhat greater |
| than the number of words that would be visible to the user in their |
| web browser. |
| |
| The appearance of the navigation panel is affected by the following |
| customization variables, all false in the default case: |
| |
| @vtable @code |
| @item DATE_IN_HEADER |
| Put the document generation date in the header. |
| |
| @item HEADER_IN_TABLE |
| Use tables for header formatting rather than a simple @samp{<div>}. |
| |
| @item ICONS |
| Use icons for the navigation panel. |
| |
| @item PROGRAM_NAME_IN_FOOTER |
| If set, output the program name and miscellaneous related information in the |
| page footers. |
| |
| @item VERTICAL_HEAD_NAVIGATION |
| If set, a vertical navigation panel is used. |
| @end vtable |
| |
| @cindex Initialization file, HTML icon direction buttons |
| Setting @code{ICONS} is necessary but not sufficient to get icons |
| for direction buttons, since no button image is specified in the |
| default case. In addition, you need to set the @code{ACTIVE_ICONS} |
| and @code{PASSIVE_ICONS} customization variables. You can only do this |
| using an initialization file (@pxref{Invoking @command{texi2any}}). |
| @xref{,,, texi2any_api, GNU Texinfo @command{texi2any} Output Customization}. |
| |
| |
| @node HTML Features Customization |
| @subsection HTML Features Customization |
| |
| @vindex USE_XML_SYNTAX |
| @cindex DOCTYPE customization |
| @vindex DOCTYPE @subentry @r{for HTML} |
| By default HTML is generated, but you can set @code{USE_XML_SYNTAX} |
| in order to generate XML compatible code. The main difference is |
| that @samp{/>} instead of @samp{>} ends tags such as @code{<img>} or |
| @code{<link>} that do not have a closing tag (such tags create so-called |
| @dfn{void elements}). |
| |
| To set the @dfn{DOCTYPE}, set the @code{DOCTYPE} customization variable. |
| The default is the simple DTD-less DOCTYPE used for HTML5. |
| |
| You can set an XML compatible file beginning instead: |
| @example |
| @command{texi2any} --html my_manual.texi -c USE_XML_SYNTAX \ |
| -c DOCTYPE='<?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE html>' |
| @end example |
| |
| You could also set the DOCTYPE to HTML 4.01 Transitional: |
| @example |
| @command{texi2any} --html my_manual.texi -c DOCTYPE=\ |
| '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
| "http://www.w3.org/TR/html4/loose.dtd">' |
| @end example |
| |
| @vindex USE_ISO |
| @vindex USE_NUMERIC_ENTITY @subentry @r{for HTML} |
| @vindex OUTPUT_CHARACTERS @subentry @r{for HTML} |
| By default, entities are used for doubled single-quote characters |
| (@pxref{Inserting Quotation Marks}), and @samp{---} and @samp{--} |
| (@pxref{Conventions}). Set @code{USE_ISO} to @samp{0} in the unlikely case |
| that you want a simpler output. |
| By default textual entities are used when possible. Set |
| @code{USE_NUMERIC_ENTITY} to use numeric entities only. |
| Set @code{OUTPUT_CHARACTERS} to output accented characters based on |
| the output encoding instead of entities. |
| |
| @vindex NO_CUSTOM_HTML_ATTRIBUTE |
| By default a custom attribute, as allowed by the standard, is |
| used to provide the target manual name in cross-references. |
| If it is not desirable, for example to generate strict XHTML, you can |
| set @code{NO_CUSTOM_HTML_ATTRIBUTE} to prevent custom attributes being |
| output. |
| |
| @vindex COPIABLE_LINKS |
| Copiable links are output for link targets for the definition commands |
| (@pxref{Definition Commands}), table commands (@pxref{Two-column |
| Tables}) where an index entry is defined and headings. A link appears |
| as a `@U{00B6}' |
| @c pilcrow sign |
| sign that appears when you hover the mouse pointer over the heading text. |
| Unset @code{COPIABLE_LINKS} to prevent copiable links output. |
| |
| |
| @node Customization of Inserted HTML Code |
| @subsection Customization of Inserted HTML Code |
| |
| There are variables to set the HTML code inserted at various points |
| in the output. |
| |
| @vindex CLOSE_QUOTE_SYMBOL @subentry @r{for HTML} |
| @vindex OPEN_QUOTE_SYMBOL @subentry @r{for HTML} |
| Opening quote and closing quotes needed, e.g.@: for @code{@@samp} output, |
| are set to: |
| |
| @table @asis |
| @item @code{‘} and @code{’} |
| By default, with @code{OPEN_QUOTE_SYMBOL} and @code{CLOSE_QUOTE_SYMBOL} |
| undefined. |
| |
| @item @code{‘} and @code{’} |
| If you set @code{USE_NUMERIC_ENTITY}. |
| |
| @item An opening and closing quote character |
| If you set @code{OUTPUT_CHARACTERS} and the output |
| encoding includes that character. |
| |
| @item @code{OPEN_QUOTE_SYMBOL} and @code{CLOSE_QUOTE_SYMBOL} |
| If you set those customization variables. |
| @end table |
| |
| @vindex DEFAULT_RULE |
| @vindex BIG_RULE |
| To change the HTML code for breaks (horizontal rule) inserted in various |
| contexts, set @code{DEFAULT_RULE}, which is |
| used for most horizontal separators output in the resulting HTML, |
| and set @code{BIG_RULE} for the wider separator sometimes used. |
| |
| @c Arguments are HTML content to be inserted at certain points in the output. |
| @vindex HTML_ROOT_ELEMENT_ATTRIBUTES |
| @vindex EXTRA_HEAD |
| @c @vindex AFTER_BODY_OPEN |
| @cindex @code{<head>} block, adding to |
| @vindex BODY_ELEMENT_ATTRIBUTES |
| You can set @code{HTML_ROOT_ELEMENT_ATTRIBUTES} to add attributes to |
| the @code{<html>} element. |
| You can define the variable @code{EXTRA_HEAD} to add text within the |
| @code{<head>} HTML element. Similarly, the value of |
| @code{AFTER_BODY_OPEN} is added just after @code{<body>} is output. |
| These variables are empty by default. |
| |
| @cindex @code{<body>} tag, attributes of |
| You can set the attributes of the @code{<body>} element by defining the |
| customization variable @code{BODY_ELEMENT_ATTRIBUTES}. |
| By default, the @samp{lang} attribute is set to the document language |
| (@pxref{Setting the language}). |
| |
| @vindex PRE_BODY_CLOSE |
| You can define the variable @code{PRE_BODY_CLOSE} to add text just |
| before the HTML @code{</body>} element. Nothing is added by default. |
| |
| Similarly, the following variables allow for some useful control of the |
| formatting of the table of contents and the short table of contents: |
| |
| @vtable @code |
| @item BEFORE_TOC_LINES |
| Inserted before the table of contents text. |
| |
| @item AFTER_TOC_LINES |
| Inserted after the table of contents text. |
| |
| @item BEFORE_SHORT_TOC_LINES |
| Inserted before the short table of contents text. |
| |
| @item AFTER_SHORT_TOC_LINES |
| Inserted after the short table of contents text. |
| |
| @end vtable |
| At the time of writing, the default values of these variables are set to |
| opening and closing tags for a @code{<div>} element enclosing the |
| tables of contents. |
| |
| @ignore |
| Could be an example, but would need either to specify as command-line |
| arguments, which would be cumbersome, or requires knowing about init |
| files |
| @c output valid XHTML XML 1.0 Document |
| @example |
| texinfo_set_from_init_file('HTML_ROOT_ELEMENT_ATTRIBUTES', |
| 'xmlns="http://www.w3.org/1999/xhtml"'); |
| texinfo_set_from_init_file('NO_CUSTOM_HTML_ATTRIBUTE', 1); |
| texinfo_set_from_init_file('USE_XML_SYNTAX', 1); |
| texinfo_set_from_init_file('DOCTYPE', '<?xml version="1.0" encoding="UTF-8"?>'."\n" |
| .'<!DOCTYPE html>'); |
| texinfo_set_from_init_file('USE_NUMERIC_ENTITY', 1); |
| texinfo_set_from_init_file('OUTPUT_ENCODING_NAME', 'utf-8'); |
| @end example |
| |
| @end ignore |
| |
| @node HTML Customization of Specific Output |
| @subsection HTML Customization of Specific Output |
| |
| The output of specific constructs is customizable. |
| |
| @c Header levels |
| |
| In HTML, heading levels translate to @samp{<h@var{n}>} elements |
| where @var{n} is the heading level. The following header levels are |
| customizable: |
| |
| @vtable @code |
| @item CHAPTER_HEADER_LEVEL |
| Header formatting level used for chapter level sectioning |
| commands; default @samp{2}. |
| |
| @item FOOTNOTE_END_HEADER_LEVEL |
| @itemx FOOTNOTE_SEPARATE_HEADER_LEVEL |
| Header formatting level used for the footnotes header with |
| the `end' footnotestyle or for the `separate' footnotestyle; default @samp{4}. |
| @xref{Footnote Styles}. |
| |
| @item MAX_HEADER_LEVEL |
| Maximum header formatting level used (higher header |
| formatting level numbers correspond to lower sectioning levels); |
| default @samp{4}. |
| |
| @end vtable |
| |
| |
| @c Menu Options for the output of @@menu, as well as indices. |
| @c Output of other constructs |
| |
| You may modify the appearance of various constructs by setting: |
| |
| @vtable @code |
| @item DEF_TABLE |
| If set, a @code{<table>} construction for @code{@@deffn} |
| and similar @@-commands is used (looking more like the @TeX{} output), |
| instead of definition lists; default false. |
| |
| @item INDENTED_BLOCK_COMMANDS_IN_TABLE |
| If set, use tables for indentation of indented block commands; default |
| false. |
| |
| @item INDEX_ENTRY_COLON |
| Symbol used between the index entry and the associated node or section; |
| default is an empty string. |
| |
| @item MENU_ENTRY_COLON |
| Symbol used between the menu entry and the description; default |
| @samp{:}. |
| |
| @item MENU_SYMBOL |
| Symbol used in front of menu entries when node names are used |
| for menu entries formatting; default is undefined and set to |
| @code{•} if @code{USE_NUMERIC_ENTITY} is not set, and to |
| @code{’} if set. |
| |
| @item NUMBER_FOOTNOTES |
| @itemx NO_NUMBER_FOOTNOTE_SYMBOL |
| By default footnotes are numbered. With @option{--no-number-footnotes} or if |
| @code{NUMBER_FOOTNOTES} is set to 0, a @samp{*} is used instead, or the |
| @code{NO_NUMBER_FOOTNOTE_SYMBOL} customization variable value, if set. |
| @end vtable |
| |
| |
| @node HTML Customization for Math |
| @subsection HTML Customization for Math |
| |
| @vindex HTML_MATH |
| @cindex HTML output @subentry math @subentry customization |
| You can select various methods to render math in HTML (@pxref{Inserting Math}). |
| This is controlled by the @code{HTML_MATH} customization variable. |
| By default, the customization variable is unset and the HTML output |
| is only emphasized. You may select other options in order to display |
| properly formatted mathematics. For some of these options, if you |
| set @option{--iftex}, @code{@@tex} sections are converted to HTML, and if you |
| set @option{--iflatex} @code{@@latex} sections are converted to HTML. |
| |
| @table @code |
| @item l2h |
| Use the @command{latex2html} program to produce |
| image files for mathematical material. |
| |
| @command{latex2html} will process @LaTeX{} math in math commands, |
| including @TeX{} math compatible with @LaTeX{}. |
| @command{latex2html} is used to translate @code{@@tex} |
| and @code{@@latex} sections to HTML if the corresponding sections |
| are not ignored. Note that @command{latex2html} can only process @LaTeX{}, |
| including when processing @code{@@tex} sections. |
| |
| Processing with @command{latex2html} should leave files in the |
| output directory, with @samp{-l2h} in their name, in particular |
| a cache file to avoid redoing translation to HTML if already done. |
| |
| @xref{@command{latex2html} Customization Variables}. |
| |
| @item mathjax |
| @anchor{MathJax scripts} |
| Inserts references in the output files to MathJax scripts to format |
| mathematics. The MathJax option requires JavaScript to be enabled in the |
| browser to work. |
| |
| MathJax handles @LaTeX{} math, including commonly used @TeX{} |
| math compatible with @LaTeX{}. Some specific constructs |
| (for example some uses of @code{\text}) are not supported, but this should |
| not be a practical issue. |
| |
| If math commands are actually processed, a JavaScript license web label is |
| generated for MathJax scripts (@pxref{JavaScript license web labels}). |
| |
| @xref{MathJax Customization Variables}. |
| |
| @item t4h |
| Use the @command{tex4ht} program to produce HTML for mathematical material. |
| |
| @command{tex4ht} will process @LaTeX{} math in math commands, |
| including @TeX{} math compatible with @LaTeX{}. |
| @command{tex4ht} is used to translate @code{@@tex} and @code{@@latex} |
| sections to HTML if the sections are not ignored. The @code{@@tex} sections |
| are processed in @TeX{} mode, while the @code{@@latex} sections are |
| processed as @LaTeX{}. |
| |
| Processing with @command{tex4ht} should leave files in the |
| output directory, with @samp{_tex4ht} in their name. |
| |
| @xref{@command{tex4ht} Customization Variables}. |
| |
| @end table |
| |
| @vindex CONVERT_TO_LATEX_IN_MATH |
| By default, with @code{CONVERT_TO_LATEX_IN_MATH} undefined, |
| setting @code{HTML_MATH} also sets @code{CONVERT_TO_LATEX_IN_MATH}. |
| In that case Texinfo @@-commands inside @code{@@math} and @code{@@displaymath} |
| are converted to @LaTeX{}, before converting the @code{@@math} or |
| @code{@@displaymath} to HTML. |
| |
| |
| @node MathJax Customization Variables |
| @subsubsection MathJax Customization Variables |
| |
| This table lists the customization variables which can be used when |
| MathJax is being used, which will be the case when @code{HTML_MATH} |
| is set to @samp{mathjax}. |
| |
| @vtable @code |
| @item MATHJAX_CONFIGURATION |
| Data to add to the global @samp{MathJax} configuration object. |
| Specify as a comma-separated list of |
| @code{@var{component}: @{ @var{name}: @var{value}, @dots{} @}} |
| pairs. |
| |
| For example, you could set @code{MATHJAX_CONFIGURATION} to |
| |
| @example |
| options: @{ enableMenu: false @}, |
| loader: @{ |
| load: [\'[tex]/physics\'], |
| versionWarnings: false |
| @}, |
| tex: @{ |
| packages: @{\'[+]\': [\'physics\']@} |
| @} |
| @end example |
| |
| @noindent to disable the MathJax right-click menu, and to load the |
| MathJax @code{physics} extension. |
| (See @uref{https://docs.mathjax.org/en/latest/options/index.html, |
| Configuring MathJax} in the MathJax documentation.) |
| |
| If you override any of the defaults for this configuration output by |
| @command{texi2any} you should make sure that your new settings align |
| with the HTML output produced by @command{texi2any}. |
| |
| @item MATHJAX_SCRIPT |
| URL of the MathJax component file (e.g.@: @file{tex-svg.js}) you are using. |
| @command{texi2any} provides a default value for this variable, but you |
| are encouraged to host this file yourself on your website so that you are |
| not dependent on others' hosting. |
| |
| @item MATHJAX_SOURCE |
| A URL of the full source code in its preferred form for modification, |
| or instructions for obtaining such source code, for the component file |
| named by @code{MATHJAX_SCRIPT}. `Preferred form for modification' |
| means that this should not be in a `minified' form. Used in the |
| license labels page (@pxref{JavaScript license web labels}). |
| |
| Again, @command{texi2any} provides a default value for this variable, |
| but you are encouraged to host the source code for MathJax and its |
| dependencies yourself. This is in order to make the source code |
| available reliably, and to reduce you and your users' dependence on |
| others' distribution systems. |
| @end vtable |
| |
| |
| @node @command{latex2html} Customization Variables |
| @subsubsection @command{latex2html} Customization Variables |
| |
| This table lists the customization variables which can be used when |
| @command{latex2html} is being used to convert @code{@@math}, |
| @code{@@displaymath}, @code{@@latex} and @code{@@tex} sections for HTML@. |
| These customization variables are relevant only if @code{HTML_MATH} is set to |
| @samp{l2h}. |
| |
| To actually convert @code{@@tex} sections, @option{--iftex} should be used, |
| and to actually convert @code{@@latex} sections, @option{--iflatex} should be |
| used. |
| |
| @vtable @code |
| @item L2H_CLEAN |
| If set, the intermediate files generated in relation with @command{latex2html} |
| are removed; default true. |
| |
| @item L2H_FILE |
| If set, the given file is used as @command{latex2html}'s init file; default |
| unset. |
| |
| @item L2H_HTML_VERSION |
| The HTML version used in the @command{latex2html} call; default unset. |
| |
| @item L2H_L2H |
| The program invoked as @command{latex2html}; default is @code{latex2html}. |
| |
| @item L2H_SKIP |
| If set to a true value, the actual call to @command{latex2html} is skipped; |
| previously generated content is reused instead. If set to 0, the cache is not |
| used at all. If set to @samp{undef}, the cache is used for as many @TeX{} |
| fragments as possible and for any remaining the command is run. The default is |
| @samp{undef}. |
| |
| @item L2H_TMP |
| Set the directory used for temporary files. None of the file name components |
| in this directory name may start with @samp{.}; otherwise, @command{latex2html} |
| will fail (because of @command{dvips}). The default is the empty string, which |
| means the current directory. |
| @end vtable |
| |
| |
| @node @command{tex4ht} Customization Variables |
| @subsubsection @command{tex4ht} Customization Variables |
| |
| This table lists the customization variables which can be used when |
| @command{tex4ht} is being used to convert @code{@@math}, @code{@@displaymath}, |
| @code{@@tex} and @code{@@latex} sections for HTML@. These customization |
| variables are relevant only if @code{HTML_MATH} is set to @samp{t4h}. |
| |
| To actually convert @code{@@tex} sections, @option{--iftex} should be used, |
| and to actually convert @code{@@latex} sections, @option{--iflatex} should be |
| used. |
| |
| @vtable @code |
| @item T4H_LATEX_CONVERSION |
| If set, the conversion type used for @code{@@latex} sections. Possibilities |
| are @samp{latex}, @samp{tex} and @samp{texi}. Set to @samp{latex} if not |
| defined. |
| |
| @item T4H_MATH_CONVERSION |
| If set, the conversion type used for @code{@@math} and @code{@@displymath}. |
| Possibilities are @samp{latex}, @samp{tex} and @samp{texi}. Set to @samp{tex} |
| if not defined. |
| |
| @item T4H_TEX_CONVERSION |
| If set, the conversion type used for @code{@@tex} sections. Possibilities |
| are @samp{latex}, @samp{tex} and @samp{texi}. Set to @samp{tex} if not |
| defined. |
| @end vtable |
| |
| |
| @node JavaScript Interface and Licenses |
| @subsection JavaScript Interface and Licenses |
| |
| @vindex INFO_JS_DIR |
| @cindex JavaScript browsing interface for HTML |
| |
| You can add an experimental JavaScript browsing interface to the HTML |
| output by setting @code{INFO_JS_DIR} value to the name of a directory in |
| which to place the code for this interface. For example, |
| @samp{texi2any --html -c INFO_JS_DIR=js @var{manual}.texi} places files in |
| a @samp{js} directory under the output. This interface provides some of |
| the functionality of the Info browsers in a web browser, such as keyboard |
| navigation and index lookup. This only works with non-split HTML output. |
| |
| @anchor{JavaScript license web labels} |
| @cindex JavaScript license web labels page |
| @vindex JS_WEBLABELS |
| @vindex JS_WEBLABELS_FILE |
| By default, a @dfn{JavaScript license web labels page} is set up |
| to give licensing information and source code for any JavaScript used by |
| the HTML output |
| (see @uref{https://www.gnu.org/licenses/javascript-labels.html}). To avoid |
| generating a JavaScript license web labels page, set @code{JS_WEBLABELS} |
| to @samp{omit}. With @code{JS_WEBLABELS} set to @samp{generate}, the default, |
| generate a labels page at @code{JS_WEBLABELS_FILE}, @file{js_licenses.html} |
| in the default case, and link to it in the HTML output files. With |
| @code{JS_WEBLABELS} set to @samp{reference}, link to the labels file given by |
| @code{JS_WEBLABELS_FILE} in the output, and do not generate a labels file. |
| This last setting is useful if you separately maintain a single labels |
| file for a larger website that includes your manual. |
| |
| Labels files can be generated if @code{INFO_JS_DIR} is set, or if |
| @code{HTML_MATH} is set to @samp{mathjax} (@pxref{MathJax scripts}). |
| |
| |
| @node HTML Customization Variables List |
| @subsection HTML Customization Variables List |
| |
| @c old name |
| @anchor{HTML Customization Variables} |
| |
| This table lists the customization variables which apply to HTML output. |
| |
| @table @code |
| @item AFTER_BODY_OPEN |
| Text added at the beginning of each HTML file; default unset. |
| |
| @item AFTER_SHORT_TOC_LINES |
| @itemx AFTER_TOC_LINES |
| Text output after the short table of contents for |
| @code{AFTER_SHORT_TOC_LINES} and after the table of |
| contents for @code{AFTER_TOC_LINES} if set; otherwise, a default string is |
| used. At the time of writing, a @code{</div>} element is closed. |
| |
| In general, you should set @code{BEFORE_SHORT_TOC_LINES} if |
| @code{AFTER_SHORT_TOC_LINES} is set, and you should set |
| @code{BEFORE_TOC_LINES} if @code{AFTER_TOC_LINES} is set. |
| |
| @item BASEFILENAME_LENGTH |
| The maximum length of a base file name for internal cross-references; |
| default 245. |
| @c Changing this would make cross-manual references to such long node |
| @c names invalid (@pxref{HTML Xref Link Basics}). |
| |
| @item BEFORE_SHORT_TOC_LINES |
| @itemx BEFORE_TOC_LINES |
| If set, text output before the short table of contents for |
| @code{BEFORE_SHORT_TOC_LINES} and before the table of contents for |
| @code{BEFORE_TOC_LINES}, otherwise a default string is used. At the time of |
| writing, a @code{<div ...>} element is opened. |
| |
| In general you should set @code{AFTER_SHORT_TOC_LINES} if |
| @code{BEFORE_SHORT_TOC_LINES} is set, and you should set |
| @code{AFTER_TOC_LINES} if @code{BEFORE_TOC_LINES} is set. |
| |
| |
| @item BIG_RULE |
| Rule used after and before the top element and before |
| special elements, but not for footers and headers; default |
| @code{<hr>}. |
| |
| @cindex @code{<body>} text, customizing |
| @opindex lang@r{, HTML attribute} |
| @item BODY_ELEMENT_ATTRIBUTES |
| The @code{<body>} attributes text. By default, sets the |
| HTML @code{lang} attribute to the document language |
| (@pxref{Setting the language}). |
| |
| @item CASE_INSENSITIVE_FILENAMES |
| Construct output file names as if the filesystem were case |
| insensitive (@pxref{HTML Splitting}); default false. |
| |
| @item CHAPTER_HEADER_LEVEL |
| Header formatting level used for chapter level sectioning |
| commands; default @samp{2}. |
| |
| @item CHECK_HTMLXREF |
| Check that manuals which are the target of external |
| cross-references (@pxref{Four and Five Arguments}) are present in |
| @file{htmlxref.cnf} or @file{htmlxref.d/*.cnf} (@pxref{HTML Xref |
| Configuration}); default true. |
| |
| @item CONTENTS_OUTPUT_LOCATION |
| If set to @samp{after_top}, output the contents at the end of the @code{@@top} |
| section. If set to @samp{inline}, output the contents where the |
| @code{@@contents} and similar @@-commands are located. If set to |
| @samp{separate_element} output the contents in separate elements, either at the |
| end of the document if not split, or in a separate file. If set to |
| @samp{after_title} the tables of contents are output after the title; default |
| @samp{after_top}. |
| |
| @item CONVERT_TO_LATEX_IN_MATH |
| If set, try to convert any Texinfo @@-commands inside @code{@@math} and |
| @code{@@displaymath} to @LaTeX{}, before converting the @code{@@math} or |
| @code{@@displaymath} to HTML. Default @code{undef}. If undefined, |
| set if @code{HTML_MATH} is set. |
| |
| @item COPIABLE_LINKS |
| If set, output copiable links for the definition commands |
| (@pxref{Definition Commands}), table commands (@pxref{Two-column |
| Tables}) where an index entry is defined and headings. A link appears |
| as a `@U{00B6}' |
| @c pilcrow sign |
| sign that appears when you hover the mouse pointer over the heading text. |
| |
| @item DATE_IN_HEADER |
| Put the document generation date in the header; off by default. |
| |
| @item DEF_TABLE |
| If set, a @code{<table>} construction for @code{@@deffn} |
| and similar @@-commands is used (looking more like the @TeX{} output), |
| instead of definition lists; default false. |
| |
| @item DEFAULT_RULE |
| Rule used between element, except before and after the |
| top element, and before special elements, and for footers and headers; |
| default @code{<hr>}. |
| |
| @item DO_ABOUT |
| If set to 0 never do an About special element; |
| if set to 1 always do an About special element; |
| default 0. |
| @c @xref{Output Elements Defined}. |
| |
| @item EPUB_CREATE_CONTAINER_FILE |
| If set to 0, do not generate the EPUB output file. Default is set |
| to 1. |
| |
| @item EPUB_KEEP_CONTAINER_FOLDER |
| If set, keep the directory containing the directories and files |
| needed for EPUB@. The EPUB output file is a ZIP archive of this |
| directory. Default is not defined. Set if not defined and @code{TEST} or |
| @code{DEBUG} is set. @xref{EPUB Output File and Directory}. |
| |
| @item EXTERNAL_CROSSREF_SPLIT |
| For cross-references to other manuals, this determines if the other |
| manual is considered to be split or monolithic. By default, it is set |
| based on the value of @code{SPLIT}. @xref{HTML Xref}, and @pxref{HTML |
| Xref Configuration}. |
| |
| @item EXTERNAL_DIR |
| Base directory for external manuals; default none. It is |
| better to use the general external cross-reference mechanism |
| (@pxref{HTML Xref Configuration}) than this variable. |
| |
| @item EXTERNAL_CROSSREF_EXTENSION |
| File extension for cross-references to other manuals.@c If unset, |
| @c based on @code{EXTENSION}. |
| |
| @item EXTRA_HEAD |
| Additional text appearing within @code{<head>}; default unset. |
| |
| @item FOOTNOTE_END_HEADER_LEVEL |
| Header formatting level used for the footnotes header with |
| the `end' footnotestyle; default @samp{4}. @xref{Footnote Styles}. |
| |
| @item FOOTNOTE_SEPARATE_HEADER_LEVEL |
| Header formatting level used for the footnotes header with |
| the `separate' footnotestyle; default @samp{4}. @xref{Footnote |
| Styles}. |
| |
| @item HEADER_IN_TABLE |
| Use tables for header formatting rather than a simple |
| @code{<div>} element; default false. |
| |
| @item HIGHLIGHT_SYNTAX |
| If set, @code{@@example} blocks with language information as first |
| argument are highlighted in the HTML output. It is also possible to specify a |
| default for the language with @code{HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE}. Syntax |
| highlighting requires an external program to generate the highlighted HTML. |
| The @code{HIGHLIGHT_SYNTAX} value allows to select a specific program. The |
| possibilities are @code{source-highlight}, @code{highlight}, @code{pygments}, |
| with any other value being concatenated to the language to generate the |
| command-line for the external program (@pxref{Syntax Highlighting}). |
| |
| @item HIGHLIGHT_SYNTAX_DEFAULT_LANGUAGE |
| The default language used for syntax highlighting when there is no |
| language information. |
| |
| @item HTML_MATH |
| Method to use to render @code{@@math} (@pxref{HTML Customization for Math}). |
| This can be unset, set to |
| @samp{mathjax} (@pxref{MathJax Customization Variables}), |
| set to @samp{l2h}, which uses @command{latex2html} |
| (@pxref{@command{latex2html} Customization Variables}), or set to |
| @samp{t4h}, which uses @command{tex4ht} |
| (@pxref{@command{tex4ht} Customization Variables}). By default, |
| setting @code{HTML_MATH} also sets @code{CONVERT_TO_LATEX_IN_MATH}. |
| |
| @item HTML_ROOT_ELEMENT_ATTRIBUTES |
| Use that string for the @code{<html>} HTML document root element. |
| Default undefined. |
| |
| @item HTMLXREF_FILE |
| Set the file name used for cross-references to other manuals. If |
| not defined, @file{htmlxref.cnf} is used (@pxref{HTML Xref Configuration}). |
| Not defined in the default case. If @code{TEST} is set, @code{HTMLXREF_MODE} |
| is set to the default and @code{HTMLXREF_FILE} is not defined, information on |
| cross-references to other manuals is not used. |
| |
| If @code{HTMLXREF_MODE} is set to @samp{file} the file name is directly used as |
| the source of information. Otherwise the file name is searched for in |
| directories, and all the files found are used (@pxref{HTML Xref |
| Configuration}). @file{htmlxref.d/*.cnf} files are also used in that case. |
| |
| |
| @item HTMLXREF_MODE |
| How cross-references to other manuals information is determined. |
| If set to @samp{none}, no information is used. If set to @samp{file}, |
| the information is determined from a file path, @file{htmlxref.cnf} in the |
| default case, or the value of @code{HTMLXREF_FILE}. If not defined (the |
| default) or set to any other value, search for the @code{HTMLXREF_FILE} file |
| name and the @file{htmlxref.d} directory in directories and use all the |
| @code{HTMLXREF_FILE} files and files in the @file{htmlxref.d} directory with |
| the @file{.cnf} extension (@pxref{HTML Xref Configuration}). |
| |
| @item ICONS |
| Use icons for the navigation panel; default false. |
| |
| @item IMAGE_LINK_PREFIX |
| If set, the associated value is prepended to the image file |
| links; default unset. |
| |
| @item INDENTED_BLOCK_COMMANDS_IN_TABLE |
| If set, use tables for indentation of indented block commands; default |
| false. |
| |
| @item INDEX_ENTRY_COLON |
| Symbol used between the index entry and the associated node or section; |
| default is an empty string. |
| |
| @item INFO_JS_DIR |
| (Experimental.) Add a JavaScript browsing interface to the manual. |
| The value of the variable is the directory to place the code for this |
| interface, so you would run the program as e.g.@: @samp{texi2any --html |
| -c INFO_JS_DIR=js @var{manual}.texi} to place files in a @samp{js} |
| directory under the output. This provides some of the functionality |
| of the Info browsers in a web browser, such as keyboard navigation |
| and index lookup. This only works with non-split HTML output. |
| |
| The interface should provide an acceptable fallback in functionality |
| if JavaScript or web browser features are not available. However, |
| please be cautious when using this option, in case you do make your |
| documentation harder to access for some of your users. |
| |
| @item IGNORE_REF_TO_TOP_NODE_UP |
| Ignore references to @code{TOP_NODE_UP}, the up node for the Top node. |
| |
| @item INLINE_CSS_STYLE |
| Put CSS directly in HTML elements rather than at the |
| beginning of the output; default false. |
| |
| @item JS_WEBLABELS |
| @itemx JS_WEBLABELS_FILE |
| Specify how to use a @dfn{JavaScript license web labels} page to |
| give licensing information and source code for any JavaScript used |
| in the HTML files for the manual. |
| (See @uref{https://www.gnu.org/licenses/javascript-labels.html}). |
| |
| With the value @samp{generate} (the default), generate a labels page |
| at @code{JS_WEBLABELS_FILE}, and link to it in the HTML output files. |
| Only do this if actually referencing JavaScript files (either with |
| @code{HTML_MATH} set to @samp{mathjax}, or when using the experimental |
| JS browsing interface when @code{INFO_JS_DIR} is set). With this |
| setting, @code{JS_WEBLABELS_FILE} must be a relative file name. |
| |
| With the value @samp{reference}, link to the labels |
| file given by @code{JS_WEBLABELS_FILE} in the output, and do not |
| generate a labels file. This setting is useful if you separately |
| maintain a single labels file for a larger website that includes |
| your manual. |
| |
| With @samp{omit}, neither generate nor link to a labels file. |
| |
| @item MAX_HEADER_LEVEL |
| Maximum header formatting level used (higher header |
| formatting level numbers correspond to lower sectioning levels); |
| default @samp{4}. |
| |
| @item MENU_ENTRY_COLON |
| Symbol used between the menu entry and the description; default |
| @samp{:}. |
| |
| @item MENU_SYMBOL |
| Symbol used in front of menu entries when node names are used |
| for menu entries formatting; default is undefined and set to |
| @code{•} if @code{USE_NUMERIC_ENTITY} is not set, and to |
| @code{’} if set. |
| |
| @item MONOLITHIC |
| Output only one file including the table of contents. Set |
| by default, but only relevant when the output is not split. |
| |
| @item NO_CSS |
| Do not use CSS; default false. @xref{HTML CSS}. |
| |
| @item NO_CUSTOM_HTML_ATTRIBUTE |
| Do not output HTML with custom attributes in elements; default false. |
| |
| @item NO_NUMBER_FOOTNOTE_SYMBOL |
| Symbol used for footnotes if @code{NUMBER_FOOTNOTES} is false. |
| Default is @code{*}. |
| |
| @item NODE_NAME_IN_INDEX |
| If true, use node names in index entries, otherwise prefer section names. |
| If undefined, use @code{USE_NODES} value in HTML. Default is undefined. |
| |
| @item NODE_NAME_IN_MENU |
| If set, use node names in menu entries, otherwise prefer section names; |
| default true. |
| |
| @item PRE_BODY_CLOSE |
| If set, the given text will appear at the footer of each |
| HTML file; default unset. |
| |
| @item PROGRAM_NAME_IN_ABOUT |
| Used when an About element is output. If set, output the program |
| name and miscellaneous related information in About special element; |
| default false. |
| |
| @item PROGRAM_NAME_IN_FOOTER |
| If set, output the program name and miscellaneous related |
| information in the page footers; default false. |
| |
| @item SECTION_NAME_IN_TITLE |
| If set, when output is split, use the argument of the chapter |
| structuring command (e.g., @code{@@chapter} or @code{@@section}) |
| in the @code{<title>} instead of the argument to @code{@@node}. |
| |
| @item SHORT_TOC_LINK_TO_TOC |
| If set, the cross-references in the Short table of contents links to the |
| corresponding Table of Contents entries, if a Table of Contents is output; |
| default true. |
| |
| @item SHOW_BUILTIN_CSS_RULES |
| Output the built-in default CSS rules on the standard output and exit. |
| |
| @item SHOW_TITLE |
| If set, output the title at the beginning of the document; |
| default @samp{undef}. If set to @samp{undef}, setting |
| @code{NO_TOP_NODE_OUTPUT} also sets @code{SHOW_TITLE} for HTML. |
| |
| @cindex compatibility, with @command{texi2html} |
| @item TEXI2HTML |
| Generate HTML and try to be as compatible as possible with |
| @command{texi2html}; default false. |
| |
| @item TOC_LINKS |
| If set, links from headings to toc entries are created; |
| default false. |
| |
| @item TOP_FILE |
| This file name may be used for the top-level file. The extension is |
| set appropriately, if necessary. This is used to override the default, |
| and is, in general, only taken into account when output is split, and |
| for HTML@. |
| |
| @item TOP_NODE_FILE_TARGET |
| File name used for the Top node in cross-references; |
| default is @code{index.html}. |
| |
| @item TOP_NODE_UP_URL |
| A URL used for Top node up references; the default is |
| @code{undef}, in that case no Top node Up reference is generated. |
| For overriding the Up pointer name in case @code{TOP_NODE_UP_URL} is set and |
| for other formats, see @code{TOP_NODE_UP} in @ref{Customization Variables for |
| Multiple Formats}. @xref{File Names and Links Customization for HTML}. For |
| more about the Top node pointers, @pxref{First Node}. |
| |
| @cindex @code{accesskey} @subentry customization variable for |
| @item USE_ACCESSKEY |
| Use @code{accesskey} in cross-references; default @code{undef}. If |
| @code{undef}, set if the output is split. |
| |
| @item USE_ISO |
| Use entities for doubled single-quote characters |
| (@pxref{Inserting Quotation Marks}), and @samp{---} and @samp{--} |
| (@pxref{Conventions}); default true. |
| |
| @cindex @code{<link>} HTML tag, in @code{<head>} |
| @cindex @code{<head>} HTML tag, and @code{<link>} |
| @item USE_LINKS |
| Generate @code{<link>} elements in the HTML @code{<head>} |
| output; default true. |
| |
| @item USE_NODE_DIRECTIONS |
| If true, use nodes to determine where next, up and prev |
| link to in node headers. If false, use sections. If undefined, use |
| @code{USE_NODES} value. Default is undefined. Note that this setting does not |
| determine the link string, only where the links points to; see @ref{Three |
| Arguments, , xrefautomaticsectiontitle} for the link string customization. If |
| nodes and sections are systematically associated, this customization has no |
| practical effect. |
| |
| @item USE_TITLEPAGE_FOR_TITLE |
| Use the full @code{@@titlepage} (or output from @code{@@maketitle}) as |
| the title, not a simple title string; default true. Only relevant if |
| @code{SHOW_TITLE} is set. |
| |
| @item USE_XML_SYNTAX |
| Use XML/XHTML compatible syntax. |
| |
| @item VERTICAL_HEAD_NAVIGATION |
| If set, a vertical navigation panel is used; default false. |
| |
| @cindex Navigation panel, bottom of page |
| @cindex Navigation footer |
| @item WORDS_IN_PAGE |
| When output is split by nodes, specifies the approximate |
| minimum page length at which a navigation panel is placed at the |
| bottom of a page. To avoid ever having the navigation buttons at the |
| bottom of a page, set this to a sufficiently large number. The |
| default is 200. |
| |
| @item XREF_USE_FLOAT_LABEL |
| If set, for the float name in cross-references, use the |
| float label instead of the type followed by the float number |
| (@pxref{@code{@@float}}). The default is off. |
| |
| @item XREF_USE_NODE_NAME_ARG |
| Only relevant for cross-reference commands with no cross |
| reference name (second argument). If set to@tie{}1, use the node name |
| (first) argument in cross-reference @@-commands for the text displayed |
| as the hyperlink. If set to@tie{}0, use the node name if |
| @code{USE_NODES} is set, otherwise the section name. If set to |
| @samp{undef}, use the first argument in preformatted environments, |
| otherwise use the node name or section name depending on |
| @code{USE_NODES}. The default is @samp{undef}. |
| |
| @end table |
| |
| |
| @node @@-Command Details |
| @nodedescription Details of the Texinfo @@-commands. |
| @appendix @@-Command Details |
| |
| Here are the details of @@-commands: information about their syntax, a |
| list of commands, and information about where commands can appear. |
| |
| |
| @node Command Syntax |
| @section @@-Command Syntax |
| @cindex @sortas{at} @@-commands @subentry syntax |
| @cindex Syntax, of @@-commands |
| @cindex Command syntax |
| |
| Texinfo has the following types of @@-command: |
| |
| @table @asis |
| @item 1. Brace commands |
| These commands start with @@ followed by a letter or a word, followed by an |
| argument within braces. For example, the command @code{@@dfn} indicates |
| the introductory or defining use of a term; it is used as follows: @samp{In |
| Texinfo, @@@@-commands are @@dfn@{mark-up@} commands.} |
| |
| @item 2. Line commands |
| These commands occupy an entire line. The line starts with @@, |
| followed by the name of the command (a word); for example, @code{@@center} |
| or @code{@@cindex}. If no argument is needed, the word is followed by |
| the end of the line. If there is an argument, it is separated from |
| the command name by a space. Braces are not used. |
| |
| @findex end |
| @item 3. Block commands |
| These commands are written at the start of a line, with general text on |
| following lines, terminated by a matching @code{@@end} command on a |
| line of its own. For example, @code{@@example}, then the lines of a |
| coding example, then @code{@@end example}. Some of these block commands |
| take arguments as line commands do; for example, @code{@@enumerate A} |
| opening an environment terminated by @code{@@end enumerate}. Here |
| @samp{A} is the argument. |
| |
| @item 4. Symbol insertion commands with no arguments |
| These commands start with @@ followed by a word followed by a |
| left and right- brace. These commands insert special symbols in |
| the document; they do not take arguments. Some examples: |
| @code{@@dots@{@}} @result{} @samp{@dots{}}, @code{@@equiv@{@}} |
| @result{} @samp{@equiv{}}, @code{@@TeX@{@}} @result{} `@TeX{}', and |
| @code{@@bullet@{@}} @result{} @samp{@bullet{}}. |
| |
| @item 5. Non-alphabetic commands |
| The names of commands in all of the above categories consist of |
| alphabetic characters, almost entirely in lowercase. Unlike those, the |
| non-alphabetic commands consist of an @@ followed by a |
| punctuation mark or other character that is not part of the Latin |
| alphabet. Non-alphabetic commands are almost always part of text |
| within a paragraph. The non-alphabetic commands include @code{@@@@}, |
| @code{@@@{}, @code{@@@}}, @code{@@.}, @code{@@@kbd{SPACE}}, and most of |
| the accent commands. |
| |
| @item 6. Miscellaneous commands |
| There are a handful of commands that don't fit into any of the above |
| categories; for example, the obsolete command @code{@@refill}, which is |
| always used at the end of a paragraph immediately following the final |
| period or other punctuation character. @code{@@refill} takes no |
| argument and does not require braces. Likewise, @code{@@tab} used in a |
| @code{@@multitable} block does not take arguments, and is not followed |
| by braces. |
| @end table |
| |
| @cindex Braces and argument syntax |
| 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 @code{@@:}, 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. |
| |
| |
| @node Command List |
| @section @@-Command List |
| @cindex Alphabetical @@-command list |
| @cindex List of @@-commands |
| @cindex @sortas{at} @@-commands @subentry list of |
| @cindex Reference to @@-commands |
| |
| Here is an alphabetical list of the @@-commands in Texinfo. Square |
| brackets, @t{[}@w{ }@t{]}, indicate optional arguments; an ellipsis, |
| @samp{@dots{}}, indicates repeated text. |
| |
| @table @code |
| @item @@@var{whitespace} |
| An @code{@@} followed by a space, tab, or newline produces a normal, |
| stretchable, interword space. @xref{Multiple Spaces}. |
| |
| @item @@! |
| Produce an exclamation point that ends a sentence (usually after an |
| end-of-sentence capital letter). @xref{Ending a Sentence}. |
| |
| @item @@" |
| @itemx @@' |
| Generate an umlaut or acute accent, respectively, over the next |
| character, as in @"o and @'o. @xref{Inserting Accents}. |
| |
| @item @@& |
| @itemx @@ampchar@{@} |
| Generate an ampersand. @xref{Inserting an Ampersand}. |
| |
| @item @@* |
| Force a line break. @xref{Line Breaks}. |
| |
| @item @@,@{@var{c}@} |
| Generate a cedilla accent under @var{c}, as in @,{c}. @xref{Inserting |
| Accents}. |
| |
| @item @@- |
| Insert a discretionary hyphenation point. @xref{@code{@@- @@hyphenation}}. |
| |
| @item @@. |
| Produce a period that ends a sentence (usually after an |
| end-of-sentence capital letter). @xref{Ending a Sentence}. |
| |
| @item @@/ |
| Produces no output, but allows a line break. @xref{Line Breaks}. |
| |
| @item @@: |
| Tell printed output processors to refrain from inserting extra |
| whitespace after an immediately preceding period, question mark, |
| exclamation mark, or colon. @xref{Not Ending a Sentence}. |
| |
| @item @@= |
| Generate a macron (bar) accent over the next character, as in @=o. |
| @xref{Inserting Accents}. |
| |
| @item @@? |
| Produce a question mark that ends a sentence (usually after an |
| end-of-sentence capital letter). @xref{Ending a Sentence}. |
| |
| @item @@@@ |
| @itemx @@atchar@{@} |
| Insert an at sign, @samp{@@}. @xref{Inserting an Atsign}. |
| |
| @item @@\ |
| @itemx @@backslashchar@{@} |
| Insert a backslash, @samp{\}; @code{@@backslashchar@{@}} works |
| anywhere, while @code{@@\} works only inside @code{@@math}. |
| @xref{Inserting a Backslash}, and @ref{Inserting Math}. |
| |
| @item @@^ |
| @itemx @@` |
| Generate a circumflex (hat) or grave accent, respectively, over the next |
| character, as in @^o and @`e. |
| @xref{Inserting Accents}. |
| |
| @item @@@{ |
| @itemx @@lbracechar@{@} |
| Insert a left brace, @samp{@{}. @xref{Inserting Braces}. |
| |
| @item @@@} |
| @itemx @@rbracechar@{@} |
| Insert a right brace, @samp{@}}. @xref{Inserting Braces}. |
| |
| @item @@~ |
| Generate a tilde accent over the next character, as in @~N. |
| @xref{Inserting Accents}. |
| |
| @item @@AA@{@} |
| @itemx @@aa@{@} |
| Generate the uppercase and lowercase Scandinavian A-ring letters, |
| respectively: @AA{}, @aa{}. @xref{Inserting Accents}. |
| |
| @item @@abbr@{@var{abbreviation}@} |
| Indicate a general abbreviation, such as `Comput.'. |
| @xref{@code{@@abbr}}. |
| |
| @item @@acronym@{@var{acronym}@} |
| Indicate an acronym in all capital letters, such as `NASA'. |
| @xref{@code{@@acronym}}. |
| |
| @item @@AE@{@} |
| @itemx @@ae@{@} |
| Generate the uppercase and lowercase AE ligatures, respectively: |
| @AE{}, @ae{}. @xref{Inserting Accents}. |
| |
| @item @@afivepaper |
| Change page dimensions for the A5 paper size. @xref{A4 Paper}. |
| |
| @item @@afourlatex |
| @itemx @@afourpaper |
| @itemx @@afourwide |
| Change page dimensions for the A4 paper size. @xref{A4 Paper}. |
| |
| @item @@alias @var{new}=@var{existing} |
| Make the command @samp{@@@var{new}} a synonym for the existing command |
| @samp{@@@var{existing}}. @xref{@code{@@alias}}. |
| |
| @item @@allowcodebreaks @var{true-false} |
| Control breaking at @samp{-} and @samp{_} in printed output. |
| @xref{@code{@@allowcodebreaks}}. |
| |
| @item @@anchor@{@var{name}@} |
| Define @var{name} as the current location for use as a cross-reference |
| target. @xref{@code{@@anchor}}. |
| |
| @item @@appendix @var{title} |
| Begin an appendix. The title appears in the table of contents. |
| @xref{@code{@@unnumbered @@appendix}}. |
| |
| @item @@appendixsec @var{title} |
| @itemx @@appendixsection @var{title} |
| Begin an appendix section within an appendix. The section title |
| appears in the table of contents. @code{@@appendixsection} is |
| a longer spelling of the @code{@@appendixsec} command. |
| @xref{@code{@@unnumberedsec @@appendixsec @@heading}}. |
| |
| @item @@appendixsubsec @var{title} |
| Begin an appendix subsection. The title appears in the table of |
| contents. @xref{@code{@@unnumberedsubsec @@appendixsubsec @@subheading}}. |
| |
| @item @@appendixsubsubsec @var{title} |
| Begin an appendix subsubsection. The title appears in the table of |
| contents. @xref{@code{@@subsubsection}}. |
| |
| @item @@arrow@{@} |
| Generate a right arrow glyph: @samp{@arrow{}}. Used by default |
| for @code{@@click}. @xref{Click Sequences}. |
| |
| @item @@asis |
| Keep the argument as is. |
| Used following @code{@@table}, @code{@@ftable}, and @code{@@vtable} to |
| print the table's first column without highlighting (``as is''). |
| @xref{@code{@@asis}}. |
| |
| @item @@author @var{author} |
| Set a manual author in the title page. @xref{@code{@@title @@subtitle @@author}}. |
| Set a quotation author in @code{@@quotation}. @xref{@code{@@quotation}}. |
| |
| @item @@b@{@var{text}@} |
| Set @var{text} in a @b{bold} font, if possible. @xref{Fonts}. |
| |
| @item @@bullet@{@} |
| Generate a large round dot, @bullet{}, or the closest possible thing to one. |
| Often used with @code{@@itemize}. @xref{@code{@@bullet}}. |
| |
| @item @@bsixpaper |
| Change page dimensions for the B6 paper size. @xref{A4 Paper}. |
| |
| @item @@bye |
| Stop processing a file. The processors do not see anything in the |
| input file following @code{@@bye}. @xref{Ending a File}. |
| |
| @item @@c @var{comment} |
| Begin a comment in Texinfo. The rest of the line does not appear in |
| any output. A synonym for @code{@@comment}. @kbd{DEL} also |
| starts a comment. @xref{Comments}. |
| |
| @item @@caption |
| Define the full caption for a @code{@@float}. @xref{@code{@@caption |
| @@shortcaption}}. |
| |
| @item @@cartouche |
| Highlight an example or quotation by drawing a box with rounded |
| corners around it, if possible. Pair with @code{@@end cartouche}. |
| @xref{@code{@@cartouche}}. |
| |
| @item @@center @var{line-of-text} |
| Center the line of text following the command. |
| @xref{@code{@@titlefont @@center @@sp}}. |
| |
| @item @@centerchap @var{line-of-text} |
| Like @code{@@chapter}, but centers the chapter title. @xref{@code{@@chapter}}. |
| |
| @item @@chapheading @var{title} |
| Print an unnumbered chapter-like heading, but omit from the table of |
| contents. @xref{@code{@@majorheading @@chapheading}}. |
| |
| @item @@chapter @var{title} |
| Begin a numbered chapter. The chapter title appears in the table of |
| contents. @xref{@code{@@chapter}}. |
| |
| @item @@cindex @var{entry} |
| Add @var{entry} to the index of concepts. @xref{Index Entries, , |
| Defining the Entries of an Index}. |
| |
| @item @@cite@{@var{reference}@} |
| Highlight the name of a book or other reference that has no companion |
| Info file. @xref{@code{@@cite}}. |
| |
| @item @@clear @var{flag} |
| Unset @var{flag}, preventing the Texinfo formatting commands from |
| formatting text between subsequent pairs of @code{@@ifset @var{flag}} |
| and @code{@@end ifset} commands, and preventing |
| @code{@@value@{@var{flag}@}} from expanding to the value to which |
| @var{flag} is set. @xref{@code{@@set @@clear @@value}}. |
| |
| @item @@click@{@} |
| Represent a single ``click'' in a GUI@. Used within |
| @code{@@clicksequence}. @xref{Click Sequences}. |
| |
| @item @@clicksequence@{@var{action} @@click@{@} @var{action}@} |
| Represent a sequence of clicks in a GUI@. @xref{Click Sequences}. |
| |
| @item @@code@{@var{sample-code}@} |
| Indicate an expression, a syntactically complete token of a program, |
| or a program name. @xref{@code{@@code}}. |
| |
| @item @@codequotebacktick @var{on-off} |
| @itemx @@codequoteundirected @var{on-off} |
| Control output of @code{`} and @code{'} in code examples. |
| @xref{Inserting Quote Characters}. |
| |
| @item @@comma@{@} |
| Insert a comma `,' character; only needed when a literal comma would |
| be taken as an argument separator. @xref{Inserting a Comma}. |
| |
| @item @@command@{@var{command-name}@} |
| Indicate a command name, such as @command{ls}. @xref{@code{@@command}}. |
| |
| @item @@comment @var{comment} |
| Begin a comment in Texinfo. The rest of the line does not appear in |
| any output. A synonym for @code{@@c}. |
| @xref{Comments}. |
| |
| @item @@contents |
| Print a complete table of contents or specify that a table of content |
| should be output, for formats that may output a table of contents. |
| @xref{Contents, , Generating a Table of Contents}. |
| |
| @item @@copying |
| Specify copyright holders and copying conditions for the document. Pair |
| with @code{@@end copying}. @xref{@code{@@copying}}. |
| |
| @item @@copyright@{@} |
| Generate the copyright symbol @copyright{}. |
| @xref{@code{@@copyright}}. |
| |
| @item @@defblock |
| Start a block containing definitions. Pair with @samp{@@end defblock}. |
| @xref{Generic Definition Commands}. |
| |
| @item @@defcodeindex @var{index-name} |
| Define a new index and its indexing command. Print entries in an |
| @code{@@code} font. @xref{New Indices, , Defining New Indices}. |
| |
| @item @@defcv @var{category} @var{class} @var{name} |
| @itemx @@defcvx @var{category} @var{class} @var{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. |
| @xref{Definition Commands}. |
| |
| @item @@deffn @var{category} @var{name} @var{arguments}@dots{} |
| @itemx @@deffnx @var{category} @var{name} @var{arguments}@dots{} |
| Format a description for a function, interactive command, or similar |
| entity that may take arguments. @code{@@deffn} takes as arguments the |
| category of entity being described, the name of this particular |
| entity, and its arguments, if any. @xref{Definition Commands}. |
| |
| @item @@defindex @var{index-name} |
| Define a new index and its indexing command. Print entries in a roman |
| font. @xref{New Indices, , Defining New Indices}. |
| |
| @item @@definfoenclose @var{newcmd}, @var{before}, @var{after} |
| Create a new command @code{@@@var{newcmd}} for online formats |
| that marks text by enclosing it in strings that precede and |
| follow the text. |
| @xref{@code{@@definfoenclose}}. |
| |
| @item @@defivar @var{class} @var{instance-variable-name} |
| @itemx @@defivarx @var{class} @var{instance-variable-name} |
| Format a description for an instance variable in object-oriented |
| programming. The command is equivalent to @samp{@@defcv @{Instance |
| Variable@} @dots{}}. @xref{Definition Commands}. |
| |
| @item @@defline @var{category} @var{name} @var{arguments}@dots{} |
| Use within a @code{@@defblock} environment to give the heading prototype |
| line for a symbol being defined. This command does not |
| create any index entries. @xref{Generic Definition Commands}. |
| |
| @item @@defmac @var{macroname} @var{arguments}@dots{} |
| @itemx @@defmacx @var{macroname} @var{arguments}@dots{} |
| Format a description for a macro; equivalent to @samp{@@deffn Macro |
| @dots{}}. @xref{Definition Commands}. |
| |
| @item @@defmethod @var{class} @var{method-name} @var{arguments}@dots{} |
| @itemx @@defmethodx @var{class} @var{method-name} @var{arguments}@dots{} |
| Format a description for a method in object-oriented programming; |
| equivalent to @samp{@@defop Method @dots{}}. @xref{Definition |
| Commands}. |
| |
| @item @@defop @var{category} @var{class} @var{name} @var{arguments}@dots{} |
| @itemx @@defopx @var{category} @var{class} @var{name} @var{arguments}@dots{} |
| Format a description for an operation in object-oriented programming. |
| @code{@@defop} takes as arguments the name of the category of |
| operation, the name of the operation's class, the name of the |
| operation, and its arguments, if any. @xref{Definition Commands}, and |
| @ref{Abstract Objects}. |
| |
| @item @@defopt @var{option-name} |
| @itemx @@defoptx @var{option-name} |
| Format a description for a user option; equivalent to @samp{@@defvr |
| @{User Option@} @dots{}}. @xref{Definition Commands}. |
| |
| @item @@defspec @var{special-form-name} @var{arguments}@dots{} |
| @itemx @@defspecx @var{special-form-name} @var{arguments}@dots{} |
| Format a description for a special form; equivalent to @samp{@@deffn |
| @{Special Form@} @dots{}}. @xref{Definition Commands}. |
| |
| @item @@deftp @var{category} @var{name-of-type} @var{attributes}@dots{} |
| @itemx @@deftpx @var{category} @var{name-of-type} @var{attributes}@dots{} |
| Format a description for a data type; its arguments are the category, |
| the name of the type (e.g., @samp{int}) , and then the names of |
| attributes of objects of that type. @xref{Definition Commands}, and |
| @ref{Data Types}. |
| |
| @item @@deftypecv @var{category} @var{class} @var{data-type} @var{name} |
| @itemx @@deftypecvx @var{category} @var{class} @var{data-type} @var{name} |
| Format a description for a typed class variable in object-oriented programming. |
| @xref{Definition Commands}, and @ref{Abstract Objects}. |
| |
| @item @@deftypefn @var{category} @var{data-type} @var{name} @var{arguments}@dots{} |
| @itemx @@deftypefnx @var{category} @var{data-type} @var{name} @var{arguments}@dots{} |
| Format a description for a function or similar entity that may take |
| arguments and that is typed. @code{@@deftypefn} takes as arguments the |
| category of entity being described, the type, the name of the |
| entity, and its arguments, if any. @xref{Definition Commands}. |
| |
| @item @@deftypefnnewline @var{on-off} |
| Specifies whether return types for @code{@@deftypefn} and similar are |
| printed on lines by themselves; default is off. @xref{Typed |
| Functions,, Functions in Typed Languages}. |
| |
| @item @@deftypefun @var{data-type} @var{function-name} @var{arguments}@dots{} |
| @itemx @@deftypefunx @var{data-type} @var{function-name} @var{arguments}@dots{} |
| Format a description for a function in a typed language. |
| The command is equivalent to @samp{@@deftypefn Function @dots{}}. |
| @xref{Definition Commands}. |
| |
| @item @@deftypeivar @var{class} @var{data-type} @var{variable-name} |
| @itemx @@deftypeivarx @var{class} @var{data-type} @var{variable-name} |
| Format a description for a typed instance variable in object-oriented |
| programming. @xref{Definition Commands}, and @ref{Abstract Objects}. |
| |
| @item @@deftypeline @var{category} @var{data-type} @var{name} @var{arguments}@dots{} |
| Use within a @code{@@defblock} environment to give the heading prototype |
| line for a symbol being defined, with data types. This command does not |
| create any index entries. @xref{Generic Definition Commands}. |
| |
| @item @@deftypemethod @var{class} @var{data-type} @var{method-name} @var{arguments}@dots{} |
| @itemx @@deftypemethodx @var{class} @var{data-type} @var{method-name} @var{arguments}@dots{} |
| Format a description for a typed method in object-oriented programming. |
| @xref{Definition Commands}. |
| |
| @item @@deftypeop @var{category} @var{class} @var{data-type} @var{name} @var{arguments}@dots{} |
| @itemx @@deftypeopx @var{category} @var{class} @var{data-type} @var{name} @var{arguments}@dots{} |
| Format a description for a typed operation in object-oriented programming. |
| @xref{Definition Commands}, and @ref{Abstract Objects}. |
| |
| @item @@deftypevar @var{data-type} @var{variable-name} |
| @itemx @@deftypevarx @var{data-type} @var{variable-name} |
| Format a description for a variable in a typed language. The command is |
| equivalent to @samp{@@deftypevr Variable @dots{}}. @xref{Definition |
| Commands}. |
| |
| @item @@deftypevr @var{category} @var{data-type} @var{name} |
| @itemx @@deftypevrx @var{category} @var{data-type} @var{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. @xref{Definition Commands}. |
| |
| @item @@defun @var{function-name} @var{arguments}@dots{} |
| @itemx @@defunx @var{function-name} @var{arguments}@dots{} |
| Format a description for a function; equivalent to |
| @samp{@@deffn Function @dots{}}. @xref{Definition Commands}. |
| |
| @item @@defvar @var{variable-name} |
| @itemx @@defvarx @var{variable-name} |
| Format a description for a variable; equivalent to @samp{@@defvr |
| Variable @dots{}}. @xref{Definition Commands}. |
| |
| @item @@defvr @var{category} @var{name} |
| @itemx @@defvrx @var{category} @var{name} |
| Format a description for any kind of variable. @code{@@defvr} takes |
| as arguments the category of the entity and the name of the entity. |
| @xref{Definition Commands}. |
| |
| @item @@detailmenu |
| Mark the (optional) detailed node listing in a master menu. |
| @xref{Master Menu Parts}. |
| |
| @item @@dfn@{@var{term}@} |
| Indicate the introductory or defining use of a term. @xref{@code{@@dfn}}. |
| |
| @item @@DH@{@} |
| @itemx @@dh@{@} |
| Generate the uppercase and lowercase Icelandic letter eth, respectively: |
| @DH{}, @dh{}. @xref{Inserting Accents}. |
| |
| @item @@dircategory @var{dirpart} |
| Specify a category for the manual. @xref{Directory Category}. |
| |
| @item @@direntry |
| Begin the Info directory menu entry for this file. Pair with |
| @code{@@end direntry}. @xref{Installing Dir Entries}. |
| |
| @item @@display |
| Begin a kind of example. Like @code{@@example} (indent text, do not |
| fill), but do not select a new font. Pair with @code{@@end display}. |
| @xref{@code{@@display}}. |
| |
| @item @@displaymath |
| Format a block of math in ``display'' format. @xref{Inserting Math}. |
| |
| @item @@dmn@{@var{dimension}@} |
| Format a unit of measure, as in 12@dmn{pt}. @xref{@code{@@dmn}}. |
| |
| @item @@docbook |
| Enter DocBook completely. Pair with @code{@@end docbook}. @xref{Raw |
| Formatter Commands}. |
| |
| @item @@documentdescription |
| Set the document description text, included in the HTML output. Pair |
| with @code{@@end documentdescription}. @xref{@code{@@documentdescription}}. |
| |
| @item @@documentencoding @var{enc} |
| Declare the input encoding to be @var{enc}. |
| @xref{@code{@@documentencoding}}. |
| |
| @item @@documentinfo |
| Start the document metadata block. Pair with @samp{@@end documentinfo}. |
| @xref{Document Metadata}. |
| |
| @item @@documentlanguage @var{ll[_CC]} |
| Declare the document language as the two-character ISO-639 abbreviation |
| @var{ll} with optional country code @var{CC}. @xref{Setting the language}. |
| |
| @item @@documentlanguagevariant [@var{variant1}][, @var{variant2}][, @dots{}] |
| Declare a list of language variants on top of the main language. An empty |
| argument unsets the language variants. @xref{Setting the language}. |
| |
| @item @@documentscript [@var{script}] |
| Declare the document script as the four letter @var{script} ISO@tie{}15924 script |
| code name or well-known alias. An empty argument unsets the script. |
| @xref{Setting the language}. |
| |
| @item @@dotaccent@{@var{c}@} |
| Generate a dot accent over the character @var{c}, as in @dotaccent{o}. |
| @xref{Inserting Accents}. |
| |
| @item @@dotless@{@var{i-or-j}@} |
| Generate dotless i (`@dotless{i}') and dotless j (`@dotless{j}'). |
| @xref{Inserting Accents}. |
| |
| @item @@dots@{@} |
| Generate an ellipsis, @samp{@dots{}}. |
| @xref{@code{@@dots}}. |
| |
| @item @@email@{@var{address}[, @var{displayed-text}]@} |
| Indicate an electronic mail address. @xref{@code{@@email}}. |
| |
| @item @@emph@{@var{text}@} |
| Emphasize @var{text}. @xref{Emphasis, , Emphasizing Text}. |
| |
| @item @@end @var{environment} |
| Ends @var{environment}, as in @samp{@@end example}. @xref{Formatting |
| Commands,,@@-commands}. |
| |
| @item @@enddots@{@} |
| Generate an end-of-sentence ellipsis, like this: @enddots{} |
| @xref{@code{@@dots}}. |
| |
| @item @@enumerate [@var{number-or-letter}] |
| Begin a numbered list, using @code{@@item} for each entry. |
| Optionally, start list with @var{number-or-letter}. Pair with |
| @code{@@end enumerate}. @xref{@code{@@enumerate}}. |
| |
| @item @@env@{@var{environment-variable}@} |
| Indicate an environment variable name, such as @env{PATH}. |
| @xref{@code{@@env}}. |
| |
| @item @@equiv@{@} |
| Indicate to the reader the exact equivalence of two forms with a |
| glyph: @samp{@equiv{}}. @xref{@code{@@equiv}}. |
| |
| @item @@error@{@} |
| Indicate to the reader with a glyph that the following text is |
| an error message: @samp{@error{}}. @xref{@code{@@error}}. |
| |
| @item @@errormsg@{@var{msg}@} |
| Report @var{msg} as an error to standard error, and exit unsuccessfully. |
| Texinfo commands within @var{msg} are expanded to plain text. |
| @xref{Conditionals}, and @ref{External Macro Processors}. |
| |
| @item @@euro@{@} |
| Generate the Euro currency sign. @xref{@code{@@euro}}. |
| |
| @item @@evenfooting [@var{left}] @@| [@var{center}] @@| [@var{right}] |
| @itemx @@evenheading [@var{left}] @@| [@var{center}] @@| [@var{right}] |
| Specify page footings resp.@: headings for even-numbered (left-hand) |
| pages. @xref{Custom Headings, , |
| How to Make Your Own Headings}. |
| |
| @item @@everyfooting [@var{left}] @@| [@var{center}] @@| [@var{right}] |
| @itemx @@everyheading [@var{left}] @@| [@var{center}] @@| [@var{right}] |
| Specify page footings resp.@: headings for every page. Not relevant to |
| Info. @xref{Custom Headings, , How to Make Your Own Headings}. |
| |
| @item @@example |
| Begin an example. Indent text, do not fill, and select fixed-width |
| font. Pair with @code{@@end example}. @code{@@example} accepts optional |
| arguments, separated by commas. It is recommended to set the first argument to |
| the language of the example code. @xref{@code{@@example}}. |
| |
| @item @@exampleindent @var{indent} |
| Indent example-like environments by @var{indent} number of spaces |
| (perhaps 0). @xref{@code{@@exampleindent}}. |
| |
| @item @@exclamdown@{@} |
| Generate an upside-down exclamation point. @xref{Inserting Accents}. |
| |
| @item @@exdent @var{line-of-text} |
| Remove any indentation a line might have. @xref{@code{@@exdent}}. |
| |
| @item @@expansion@{@} |
| Indicate the result of a macro expansion to the reader with a special |
| glyph: @samp{@expansion{}}. @xref{@code{@@expansion}}. |
| |
| @item @@file@{@var{filename}@} |
| Highlight the name of a file, buffer, node, directory, etc. |
| @xref{@code{@@file}}. |
| |
| @item @@finalout |
| Prevent @TeX{} from printing large black warning rectangles beside |
| over-wide lines. @xref{Overfull hboxes}. |
| |
| @item @@findex @var{entry} |
| Add @var{entry} to the index of functions. @xref{Index Entries, , |
| Defining the Entries of an Index}. |
| |
| @item @@firstparagraphindent @var{word} |
| Control indentation of the first paragraph after section headers |
| according to @var{word}, one of `none' or `insert'. |
| @xref{@code{@@firstparagraphindent}}. |
| |
| @item @@float |
| Environment to define floating material. Pair with @code{@@end float}. |
| @xref{Floats}. |
| |
| @item @@flushleft |
| @itemx @@flushright |
| Do not fill text; left (right) justify every line while leaving the |
| right (left) end ragged. Leave font as is. Pair with @code{@@end |
| flushleft} (@code{@@end flushright}). @xref{@code{@@flushleft |
| @@flushright}}. |
| |
| @item @@fonttextsize @var{10-11} |
| Change the size of the main body font in the printed output. |
| @xref{Fonts}. |
| |
| @item @@footnote@{@var{text-of-footnote}@} |
| Enter a footnote, for a reference that documents or elucidates the |
| primary text. Footnote text is printed at the bottom of the page |
| in printed output. In other formats, footnote text can be output |
| in the same node, in a separate node, or simply be marked as |
| being footnote text. @xref{Footnotes}. |
| |
| @item @@footnotestyle @var{style} |
| Specify a footnote style, either @samp{end} for the end |
| node style or @samp{separate} for the separate style. In the |
| separate style, footnotes are put in a separate node or file. |
| @xref{Footnote Styles}. |
| |
| @item @@format |
| Begin a kind of example. Like @code{@@display}, but do not indent. |
| Pair with @code{@@end format}. @xref{@code{@@example}}. |
| |
| @item @@frenchspacing @var{on-off} |
| Control spacing after punctuation. @xref{@code{@@frenchspacing}}. |
| |
| @item @@ftable @var{formatting-command} |
| Begin a two-column table, using @code{@@item} for each entry. |
| Automatically enter each of the items in the first column into the |
| index of functions. Pair with @code{@@end ftable}. The same as |
| @code{@@table}, except for indexing. @xref{@code{@@ftable @@vtable}}. |
| |
| @item @@geq@{@} |
| Generate a greater-than-or-equal sign, `@geq{}'. @xref{@code{@@geq @@leq}}. |
| |
| @item @@group |
| Disallow page breaks within following text. Pair with @code{@@end |
| group}. Ignored in Info. @xref{@code{@@group}}. |
| |
| @item @@guillemetleft@{@} |
| @itemx @@guillemetright@{@} |
| @item @@guillemotleft@{@} |
| @itemx @@guillemotright@{@} |
| @itemx @@guilsinglleft@{@} |
| @itemx @@guilsinglright@{@} |
| Double and single angle quotation marks: @guillemetleft{} |
| @guillemetright{} @guilsinglleft{} @guilsinglright{}. |
| @code{@@guillemotleft} and @code{@@guillemotright} are synonyms for |
| @code{@@guillemetleft} and @code{@@guillemetright}. @xref{Inserting |
| Quotation Marks}. |
| |
| @item @@H@{@var{c}@} |
| Generate the long Hungarian umlaut accent over @var{c}, as in @H{o}. |
| |
| @item @@hashchar@{@} |
| Insert a hash `#' character; only needed when a literal hash would |
| introduce @code{#line} directive. @xref{Inserting a Hashsign}, and |
| @ref{External Macro Processors}. |
| |
| @item @@heading @var{title} |
| Print an unnumbered section-like heading, but omit from the table of |
| contents. @xref{@code{@@unnumberedsec @@appendixsec @@heading}}. |
| |
| @item @@headings @var{on-off-single-double} |
| Turn page headings on or off, and/or specify single-sided or double-sided |
| page headings for printing. @xref{@code{@@headings}}. |
| |
| @item @@headitem |
| Begin a heading row in a multitable. @xref{Multitable Rows}. |
| |
| @item @@headitemfont@{@var{text}@} |
| Set @var{text} in the font used for multitable heading rows; mostly |
| useful in multitable templates. @xref{Multitable Rows}. |
| |
| @item @@html |
| Enter HTML completely. Pair with @code{@@end html}. @xref{Raw |
| Formatter Commands}. |
| |
| @item @@hyphenation@{@var{hy-phen-a-ted words}@} |
| Explicitly define hyphenation points. @xref{@code{@@- @@hyphenation}}. |
| |
| @item @@i@{@var{text}@} |
| Set @var{text} in an @i{italic} font, when possible. @xref{Fonts}. |
| |
| @item @@ifclear @var{txivar} |
| If the Texinfo variable @var{txivar} is not set, format the following |
| text. Pair with @code{@@end ifclear}. @xref{@code{@@set @@clear |
| @@value}}. |
| |
| @item @@ifcommanddefined @var{txicmd} |
| @itemx @@ifcommandnotdefined @var{txicmd} |
| If the Texinfo code @samp{@@@var{txicmd}} is (not) defined, format the |
| follow text. Pair with the corresponding @code{@@end ifcommand...}. |
| @xref{Testing for Texinfo Commands}. |
| |
| @item @@ifdocbook |
| @itemx @@ifepub |
| @itemx @@ifhtml |
| @itemx @@ifinfo |
| @itemx @@iflatex |
| @itemx @@ifplaintext |
| @itemx @@ifxml |
| Begin text that will appear only in the given output format. |
| @code{@@ifinfo} output appears in both Info and (for historical |
| compatibility) plain text output. Pair with @code{@@end ifdocbook} |
| resp.@: @code{@@end ifhtml}@enddots{} |
| @xref{Conditionals}. |
| |
| @code{@@ifxml} is deprecated and will be removed in a future release. |
| |
| @item @@ifnotdocbook |
| @itemx @@ifnotepub |
| @itemx @@ifnothtml |
| @itemx @@ifnotlatex |
| @itemx @@ifnotplaintext |
| @itemx @@ifnottex |
| @itemx @@ifnotxml |
| Begin text to be ignored in one output format but not the others. |
| @code{@@ifnothtml} text is omitted from HTML output, etc. Pair with |
| the corresponding @code{@@end ifnot@var{format}}. |
| @xref{Conditionals}. |
| |
| @code{@@ifnotxml} is deprecated and will be removed in a future release. |
| |
| @item @@ifnotinfo |
| Begin text to appear in output other than Info and (for historical |
| compatibility) plain text. Pair with @code{@@end ifnotinfo}. |
| @xref{Conditionals}. |
| |
| @item @@ifset @var{txivar} |
| If the Texinfo variable @var{txivar} is set, format the following |
| text. Pair with @code{@@end ifset}. @xref{@code{@@set @@clear |
| @@value}}. |
| |
| @item @@iftex |
| Begin text to appear only in the @TeX{} output. Pair with @code{@@end |
| iftex}. @xref{Conditionals}. |
| |
| @item @@ignore |
| Begin text that will not appear in any output. Pair with @code{@@end |
| ignore}. @xref{Comments, , Comments and Ignored Text}. |
| |
| @item @@image@{@var{filename}, [@var{width}], [@var{height}], [@var{alt}], [@var{ext}]@} |
| Include graphics image in external @var{filename} scaled to the given |
| @var{width} and/or @var{height}, using @var{alt} text and looking for |
| @samp{@var{filename}.@var{ext}} in HTML@. @xref{Images}. |
| |
| @item @@include @var{filename} |
| Read the contents of Texinfo source file @var{filename}. @xref{Include Files}. |
| |
| @item @@indent |
| Insert paragraph indentation. @xref{@code{@@indent}}. |
| |
| @item @@indentedblock |
| Indent a block of arbitrary text on the left. Pair with @code{@@end |
| indentedblock}. @xref{@code{@@indentedblock}}. |
| |
| @item @@indicateurl@{@var{indicateurl}@} |
| Indicate text that is a uniform resource locator for the World Wide |
| Web. @xref{@code{@@indicateurl}}. |
| |
| @item @@inforef@{@var{node-name}, [@var{entry-name}], @var{info-file-name}@} |
| Make a cross-reference to an Info file for which there is no printed |
| manual. @xref{@code{@@inforef}}. |
| |
| @item @@inlinefmt@{@var{fmt}, @var{text}@} |
| Insert @var{text} only if the output format is @var{fmt}. |
| @xref{Inline Conditionals}. |
| |
| @item @@inlinefmtifelse@{@var{fmt}, @var{text}, @var{else-text}@} |
| Insert @var{text} if the output format is @var{fmt}, else @var{else-text}. |
| |
| @item @@inlineifclear@{@var{var}, @var{text}@} |
| @itemx @@inlineifset@{@var{var}, @var{text}@} |
| Insert @var{text} only if the Texinfo variable @var{var} is (not) set. |
| |
| @item @@inlineraw@{@var{fmt}, @var{raw-text}@} |
| Insert @var{text} as in a raw conditional, only if the output format |
| is @var{fmt}. |
| |
| @item \input @var{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 |
| @file{texinfo} macro definitions file. The @code{\} in @code{\input} |
| is used instead of an @code{@@} because @TeX{} does not recognize |
| @code{@@} until after it has read the definitions file. @xref{Texinfo |
| File Header}. |
| |
| @item @@insertcopying |
| Insert the text previously defined with the @code{@@copying} |
| environment. @xref{@code{@@insertcopying}}. |
| |
| @item @@item |
| Indicate the beginning of a marked paragraph for @code{@@itemize} and |
| @code{@@enumerate}; indicate the beginning of the text of a first column |
| entry for @code{@@table}, @code{@@ftable}, and @code{@@vtable}. |
| @xref{Lists and Tables}. |
| |
| @item @@itemize @var{mark-generating-character-or-command} |
| Begin an unordered list: indented paragraphs with a mark, such as |
| @code{@@bullet}, inside the left margin at the beginning of each item. |
| Pair with @code{@@end itemize}. @xref{@code{@@itemize}}. |
| |
| @item @@itemx |
| Like @code{@@item} in @code{@@table}, @code{@@ftable}, and @code{@@vtable}, |
| but do not generate extra vertical space above the |
| item text. Thus, when several items have the same description, use |
| @code{@@item} for the first and @code{@@itemx} for the others. |
| @xref{@code{@@itemx}}. |
| |
| @item @@kbd@{@var{keyboard-characters}@} |
| Indicate characters of input to be typed by users. @xref{@code{@@kbd}}. |
| |
| @item @@kbdinputstyle @var{style} |
| Specify when @code{@@kbd} should use a font distinct from |
| @code{@@code} according to @var{style}: @code{code}, @code{distinct}, |
| @code{example}. @xref{@code{@@kbd}}. |
| |
| @item @@key@{@var{key-name}@} |
| Indicate the name of a key on a keyboard. @xref{@code{@@key}}. |
| |
| @item @@kindex @var{entry} |
| Add @var{entry} to the index of keys. |
| @xref{Index Entries, , Defining the Entries of an Index}. |
| |
| @item @@L@{@} |
| @itemx @@l@{@} |
| Generate the uppercase and lowercase Polish suppressed-L letters, |
| respectively: @L{}, @l{}. |
| |
| @item @@LaTeX@{@} |
| Generate the @LaTeX{} logo. @xref{@code{@@TeX @@LaTeX}}. |
| |
| @item @@latex |
| Enter @LaTeX{} completely. Pair with @code{@@end latex}. @xref{Raw |
| Formatter Commands}. |
| |
| @item @@leq@{@} |
| Generate a less-than-or-equal sign, `@leq{}'. @xref{@code{@@geq @@leq}}. |
| |
| @item @@linemacro @var{macroname} @{@var{params}@} |
| Define a new macro which takes rest of the line as an argument, and |
| expands to a whole number of complete lines. @xref{Line Macros}. |
| |
| @item @@link@{@var{nodename}, @var{label}, @var{manual-name}@} |
| Create a plain link with no visible markup or page reference. |
| @xref{@code{@@link}}. |
| |
| @item @@lisp |
| Begin an example of Lisp code. Indent text, do not fill, and select |
| fixed-width font. Pair with @code{@@end lisp}. @xref{@code{@@lisp}}. |
| |
| @item @@listoffloats |
| Produce a table-of-contents-like listing of @code{@@float}s. |
| @xref{@code{@@listoffloats}}. |
| |
| @item @@lowersections |
| Change subsequent chapters to sections, sections to subsections, and so |
| on. @xref{Raise/lower sections, , @code{@@raisesections} and |
| @code{@@lowersections}}. |
| |
| @item @@macro @var{macroname} @{@var{params}@} |
| Define a new Texinfo command @code{@@@var{macroname}@{@var{params}@}}. |
| Pair with @code{@@end macro}. @xref{Defining Macros}. |
| |
| @item @@maketitle |
| Generate a title page and possibly also the following page. @xref{Document |
| Metadata}. |
| |
| @item @@majorheading @var{title} |
| Print an unnumbered chapter-like heading, but omit from the table of |
| contents. This generates more vertical whitespace before the heading |
| than the @code{@@chapheading} command. @xref{@code{@@majorheading |
| @@chapheading}}. |
| |
| @item @@math@{@var{mathematical-expression}@} |
| Format a mathematical expression. @xref{Inserting Math}. |
| |
| @item @@menu |
| Mark the beginning of a menu of nodes. No effect in a printed manual. |
| Pair with @code{@@end menu}. @xref{Menus}. |
| |
| @item @@microtype @var{on-off} |
| Turn microtype on or off. @xref{Microtypography}. |
| |
| @item @@minus@{@} |
| Generate a minus sign, `@minus{}'. @xref{@code{@@minus}}. |
| |
| @item @@multitable @var{column-width-spec} |
| Begin a multi-column table. Begin each row with @code{@@item} or |
| @code{@@headitem}, and separate columns with @code{@@tab}. Pair with |
| @code{@@end multitable}. @xref{Multitable Column Widths}. |
| |
| @item @@namedanchor@{@var{anchor-name}, @var{xref-name}@} |
| Define a target for a cross-reference. @xref{@code{@@anchor}}. |
| |
| @item @@need @var{n} |
| Start a new page in a printed manual if fewer than @var{n} mils |
| (thousandths of an inch) remain on the current page. |
| @xref{@code{@@need}}. |
| |
| @item @@node @var{name}, [@var{next}], [@var{previous}], [@var{up}] |
| Begin a new node. Only the first argument is mandatory. |
| @xref{Writing a Node}. |
| |
| @item @@nodedescription @var{node-description} |
| Provide a short elaboration of the purpose of a node. |
| @xref{Node Descriptions}. |
| |
| @item @@nodedescriptionblock |
| Pair with @samp{@@end nodedescriptionblock}. Used to start a longer |
| node description. @xref{Node Descriptions}. |
| |
| @item @@noindent |
| Prevent text from being indented as if it were a new paragraph. |
| @xref{@code{@@noindent}}. |
| |
| @item @@novalidate |
| Suppress validation of node references and omit creation of auxiliary |
| files with @TeX{}. Use before any sectioning or cross-reference |
| commands. @xref{Pointer Validation}. |
| |
| @item @@O@{@} |
| @itemx @@o@{@} |
| Generate the uppercase and lowercase O-with-slash letters, respectively: |
| @O{}, @o{}. |
| |
| @item @@oddfooting [@var{left}] @@| [@var{center}] @@| [@var{right}] |
| @itemx @@oddheading [@var{left}] @@| [@var{center}] @@| [@var{right}] |
| Specify page footings resp.@: headings for odd-numbered (right-hand) |
| pages. @xref{Custom Headings, , |
| How to Make Your Own Headings}. |
| |
| @item @@OE@{@} |
| @itemx @@oe@{@} |
| Generate the uppercase and lowercase OE ligatures, respectively: |
| @OE{}, @oe{}. @xref{Inserting Accents}. |
| |
| @item @@ogonek@{@var{c}@} |
| Generate an ogonek diacritic under the next character, as in |
| @ogonek{a}. @xref{Inserting Accents}. |
| |
| @item @@option@{@var{option-name}@} |
| Indicate a command-line option, such as @option{-l} or |
| @option{--help}. @xref{@code{@@option}}. |
| |
| @item @@ordf@{@} |
| @itemx @@ordm@{@} |
| Generate the feminine and masculine Spanish ordinals, respectively: |
| @ordf{}, @ordm{}. @xref{Inserting Accents}. |
| |
| @item @@page |
| Start a new page in a printed manual. @xref{@code{@@page}}. |
| |
| @item @@pagesizes [@var{width}][, @var{height}] |
| Change page dimensions. @xref{pagesizes}. |
| |
| @item @@paragraphindent @var{indent} |
| Indent paragraphs by @var{indent} number of spaces (perhaps 0); preserve |
| source file indentation if @var{indent} is @code{asis}. |
| @xref{@code{@@paragraphindent}}. |
| |
| @item @@part @var{title} |
| Begin a group of chapters or appendixes; included in the tables of |
| contents. |
| @xref{@code{@@part}}. |
| |
| @item @@pindex @var{entry} |
| Add @var{entry} to the index of programs. @xref{Index Entries, , Defining |
| the Entries of an Index}. |
| |
| @item @@publication |
| Start information about the publication of the document. Pair with |
| @samp{@@end publication}. @xref{Document Metadata}. |
| |
| @item @@point@{@} |
| Indicate the position of point in a buffer to the reader with a glyph: |
| @samp{@point{}}. @xref{@code{@@point}}. |
| |
| @item @@pounds@{@} |
| Generate the pounds sterling currency sign, @samp{@pounds{}}. |
| @xref{@code{@@pounds}}. |
| |
| @item @@print@{@} |
| Indicate printed output to the reader with a glyph: @samp{@print{}}. |
| @xref{@code{@@print}}. |
| |
| @item @@printindex @var{index-name} |
| Generate the index for @var{index-name}. @xref{Printing Indices & Menus}. |
| |
| @item @@pxref@{@var{node}, [@var{entry}], [@var{node-title}], [@var{info-file}], [@var{printed-manual}]@} |
| Make a reference to be used within parentheses. Starts with a lowercase |
| `see' in a printed manual. The first argument is mandatory, except for |
| references to whole manuals. To refer to another manual as a whole, |
| the @var{printed-manual} and/or the @var{info-file} are the only |
| required arguments. @xref{@code{@@pxref}}. |
| |
| @item @@questiondown@{@} |
| Generate an upside-down question mark. @xref{Inserting Accents}. |
| |
| @item @@quotation |
| Narrow the margins to indicate text that is quoted from another work. |
| Takes optional argument specifying prefix text. Pair with @code{@@end |
| quotation}. @xref{@code{@@quotation}}. |
| |
| @item @@quotedblleft@{@} |
| @itemx @@quotedblright@{@} |
| @itemx @@quoteleft@{@} |
| @itemx @@quoteright@{@} |
| @itemx @@quotedblbase@{@} |
| @itemx @@quotesinglbase@{@} |
| Produce various quotation marks: @quotedblleft{} @quotedblright{} |
| @quoteleft{} @quoteright{} @quotedblbase{} @quotesinglbase{}. |
| @xref{Inserting Quotation Marks}. |
| |
| @item @@r@{@var{text}@} |
| Set @var{text} in the regular @r{roman} font, if possible. |
| @xref{Fonts}. |
| |
| @item @@raggedright |
| Fill text; left justify every line while leaving the right end ragged. |
| Leave font as is. Pair with @code{@@end raggedright}. |
| @xref{@code{@@raggedright}}. |
| |
| @item @@raisesections |
| Change subsequent sections to chapters, subsections to sections, and so |
| on. @xref{Raise/lower sections}. |
| |
| @item @@ref@{@var{node}, [@var{entry}], [@var{node-title}], [@var{info-file}], [@var{printed-manual}]@} |
| Make a plain reference that does not start with any special text. |
| Follow command with a punctuation mark. The first argument is mandatory, except for |
| references to whole manuals. To refer to another manual as a whole, |
| the @var{printed-manual} and/or the @var{info-file} are the only |
| required arguments. @xref{@code{@@ref}}. |
| |
| @item @@registeredsymbol@{@} |
| Generate the legal symbol @registeredsymbol{}. |
| @xref{@code{@@registeredsymbol}}. |
| |
| @item @@result@{@} |
| Indicate the result of an expression to the reader with a special |
| glyph: @samp{@result{}}. @xref{@code{@@result}}. |
| |
| @item @@ringaccent@{@var{c}@} |
| Generate a ring accent over the next character, as in @ringaccent{o}. |
| @xref{Inserting Accents}. |
| |
| @item @@samp@{@var{text}@} |
| Indicate a literal example of a sequence of characters, in general. |
| @xref{@code{@@samp}}. |
| |
| @item @@sansserif@{@var{text}@} |
| Set @var{text} in a @sansserif{sans serif} font if possible. |
| @xref{Fonts}. |
| |
| @item @@sc@{@var{text}@} |
| Set @var{text} in a small caps font if possible, and uppercase |
| in Info. @xref{Smallcaps}. |
| |
| @item @@section @var{title} |
| Begin a section within a chapter. The section title appears in the |
| table of contents. Within @code{@@chapter} and @code{@@appendix}, the section |
| title is numbered; within @code{@@unnumbered}, the section is unnumbered. |
| @xref{@code{@@section}}. |
| |
| @item @@seealso@{@var{index-text}@} |
| Use in an index entry to refer the reader to another relevant index entry. |
| @xref{Advanced Indexing}. |
| |
| @item @@seeentry@{@var{index-text}@} |
| Use in an index entry to redirect the reader to another index entry. |
| @xref{Advanced Indexing}. |
| |
| @item @@set @var{txivar} [@var{string}] |
| Define the Texinfo variable @var{txivar}, optionally to the value |
| @var{string}. @xref{@code{@@set @@clear @@value}}. |
| |
| @item @@setchapternewpage @var{on-off-odd} |
| Specify whether chapters start on new pages, and if so, whether on |
| odd-numbered (right-hand) new pages. @xref{@code{@@setchapternewpage}}. |
| |
| @item @@setfilename @var{info-file-name} |
| Provide a name to be used for the output files. This command is ignored |
| for @TeX{} formatting. @xref{@code{@@setfilename}}. |
| |
| @item @@settitle @var{title} |
| Specify the title for page headers in a printed manual, and the |
| default document title for HTML. |
| @xref{@code{@@settitle}}. |
| |
| @item @@shortcaption |
| Define the short caption for a @code{@@float}. @xref{@code{@@caption |
| @@shortcaption}}. |
| |
| @item @@shortcontents |
| Print a short table of contents, with chapter-level entries only, |
| or specify that a short table of contents should be output. |
| For formats that may output a short table of contents. |
| @xref{Contents, , Generating a Table of Contents}. |
| |
| @item @@shorttitlepage @var{title} |
| Generate a minimal title page. @xref{Titlepage & Copyright Page}. |
| |
| @item @@slanted@{@var{text}@} |
| Set @var{text} in a @slanted{slanted} font if possible. @xref{Fonts}. |
| |
| @item @@smallbook |
| In printed output, use a 7 by 9.25 inch format rather than the |
| regular 8.5 by 11 inch format. @xref{@code{@@smallbook}}. |
| |
| @item @@smalldisplay |
| Begin a kind of example. Like @code{@@display}, but use a smaller |
| font size where possible. Pair with @code{@@end smalldisplay}. |
| @xref{small}. |
| |
| @item @@smallexample |
| Begin an example. Like @code{@@example}, but use a smaller font size |
| where possible. Pair with @code{@@end smallexample}. |
| @xref{small}. |
| |
| @item @@smallformat |
| Begin a kind of example. Like @code{@@format}, but use a smaller font |
| size where possible. Pair with @code{@@end smallformat}. |
| @xref{small}. |
| |
| @item @@smallindentedblock |
| Like @code{@@indentedblock}, but use a smaller font size where |
| possible. Pair with @code{@@end smallindentedblock}. |
| @xref{small}. |
| |
| @item @@smalllisp |
| Begin an example of Lisp code. Same as @code{@@smallexample}. Pair |
| with @code{@@end smalllisp}. @xref{small}. |
| |
| @item @@smallquotation |
| Like @code{@@quotation}, but use a smaller font size where possible. |
| Pair with @code{@@end smallquotation}. @xref{small}. |
| |
| @item @@sortas @{@var{key}@} |
| Used in the arguments to index commands to give a string by which the |
| index entry should be sorted. @xref{Indexing Commands}. |
| |
| @item @@sp @var{n} |
| Skip @var{n} blank lines. @xref{@code{@@sp}}. |
| |
| @item @@ss@{@} |
| Generate the German sharp-S es-zet letter, @ss{}. @xref{Inserting Accents}. |
| |
| @item @@strong @{@var{text}@} |
| Emphasize @var{text} more strongly than @code{@@emph}. |
| @xref{emph & strong, , Emphasizing Text}. |
| |
| @item @@sub @{@var{text}@} |
| Set @var{text} as a subscript. @xref{Inserting Subscripts and Superscripts}. |
| |
| @item @@subentry |
| Use in an index entry to separate parts of a multi-level entry. |
| @xref{Advanced Indexing}. |
| |
| @item @@subheading @var{title} |
| Print an unnumbered subsection-like heading, but omit from the table |
| of contents of a printed manual. |
| @xref{@code{@@unnumberedsubsec @@appendixsubsec @@subheading}}. |
| |
| @item @@subsection @var{title} |
| Begin a subsection within a section. The subsection title appears in |
| the table of contents. |
| Same context-dependent numbering as @code{@@section}. |
| @xref{@code{@@subsection}}. |
| |
| @item @@subsubheading @var{title} |
| Print an unnumbered subsubsection-like heading, but omit from the |
| table of contents of a printed manual. @xref{@code{@@subsubsection}}. |
| |
| @item @@subsubsection @var{title} |
| Begin a subsubsection within a subsection. The subsubsection title |
| appears in the table of contents. Same context-dependent numbering as |
| @code{@@section}. @xref{@code{@@subsubsection}}. |
| |
| @item @@subtitle @var{title} |
| Set a subtitle for the title page. @xref{@code{@@title @@subtitle @@author}}. |
| |
| @item @@summarycontents |
| Print or specify a short table of contents. Synonym for @code{@@shortcontents}. |
| @xref{Contents, , Generating a Table of Contents}. |
| |
| @item @@sup @{@var{text}@} |
| Set @var{text} as a superscript. @xref{Inserting Subscripts and Superscripts}. |
| |
| @item @@syncodeindex @var{from-index} @var{to-index} |
| Merge the index named in the first argument into the index named in |
| the second argument, formatting the entries from the first index with |
| @code{@@code}. @xref{Combining Indices}. |
| |
| @item @@synindex @var{from-index} @var{to-index} |
| Merge the index named in the first argument into the index named in |
| the second argument. Do not change the font of @var{from-index} |
| entries. @xref{Combining Indices}. |
| |
| @item @@t@{@var{text}@} |
| Set @var{text} in a @t{fixed-width}, typewriter-like font, if possible. |
| @xref{Fonts}. |
| |
| @item @@tab |
| Separate columns in a row of a multitable. @xref{Multitable Rows}. |
| |
| @item @@table @var{formatting-command} |
| Begin a two-column table (description list), using @code{@@item} for |
| each entry. Write each first column entry on the same line as |
| @code{@@item}. First column entries are printed in the font resulting |
| from @var{formatting-command}. Pair with @code{@@end table}. |
| @xref{Two-column Tables, , Making a Two-column Table}. Also see |
| @ref{@code{@@ftable @@vtable}}, and @ref{@code{@@itemx}}. |
| |
| @item @@TeX@{@} |
| Generate the @TeX{} logo. @xref{@code{@@TeX @@LaTeX}}. |
| |
| @item @@tex |
| Enter @TeX{} completely. Pair with @code{@@end tex}. @xref{Raw |
| Formatter Commands}. |
| |
| @item @@textdegree@{@} |
| Generate the degree symbol. @xref{@code{@@textdegree}}. |
| |
| @item @@thischapter |
| @itemx @@thischaptername |
| @itemx @@thischapternum |
| @itemx @@thissection |
| @itemx @@thissectionname |
| @itemx @@thissectionnum |
| @itemx @@thispart |
| @itemx @@thisfile |
| @itemx @@thispage |
| @itemx @@thistitle |
| Only allowed in a heading or footing. Stands for, respectively, the |
| number and name of the current chapter (in the format `Chapter 1: |
| Title'), the current chapter name only, the current chapter number |
| only, the number and name of the current section, the current section |
| name only, the current section number only, the current part name, the |
| file name, the current page number, and the title of the document. |
| @xref{Custom Headings,, How to Make Your Own Headings}. |
| |
| @item @@TH@{@} |
| @itemx @@th@{@} |
| Generate the uppercase and lowercase Icelandic letter thorn, respectively: |
| @TH{}, @th{}. @xref{Inserting Accents}. |
| |
| @item @@tie@{@} |
| Generate a normal interword space at which a line break is not |
| allowed. @xref{@code{@@tie}}. |
| |
| @item @@tieaccent@{@var{cc}@} |
| Generate a tie-after accent over the next two characters @var{cc}, as in |
| `@tieaccent{oo}'. @xref{Inserting Accents}. |
| |
| @item @@tindex @var{entry} |
| Add @var{entry} to the index of data types. @xref{Index Entries, , |
| Defining the Entries of an Index}. |
| |
| @item @@title @var{title} |
| Set the title for the title page. @xref{@code{@@title @@subtitle @@author}}. |
| |
| @item @@titlefont@{@var{text}@} |
| Print @var{text} in a larger than normal font, if possible. |
| @xref{@code{@@titlefont @@center @@sp}}. |
| |
| @item @@titlepage |
| Begin the title page. Write the command on a line of its own, paired |
| with @code{@@end titlepage}. The title page is not output, in the |
| default case, in online formats. @xref{@code{@@titlepage}}. |
| |
| @item @@today@{@} |
| Insert the current date, in `1 Jan 1900' style. @xref{Custom |
| Headings, , How to Make Your Own Headings}. |
| |
| @item @@top @var{title} |
| Mark the topmost @code{@@node} in the file, which must be defined on |
| the line immediately preceding the @code{@@top} command. The title is |
| formatted as a chapter-level heading. In @TeX{} the @code{@@top} |
| command is merely a synonym for @code{@@unnumbered}. |
| |
| @item @@U@{@var{hex}@} |
| Output a representation of Unicode character U+@var{hex}. |
| @xref{Inserting Unicode}. |
| |
| @item @@u@{@var{c}@} |
| @itemx @@ubaraccent@{@var{c}@} |
| @itemx @@udotaccent@{@var{c}@} |
| Generate a breve, underbar, or underdot accent, respectively, over or |
| under the character @var{c}, as in @u{o}, @ubaraccent{o}, |
| @udotaccent{o}. @xref{Inserting Accents}. |
| |
| @item @@unmacro @var{macroname} |
| Undefine the macro @code{@@@var{macroname}} if it has been defined. |
| @xref{Defining Macros}. |
| |
| @item @@unnumbered @var{title} |
| Begin a chapter that appears without chapter numbers of any kind. The |
| title appears in the table of contents. @xref{@code{@@unnumbered @@appendix}}. |
| |
| @item @@unnumberedsec @var{title} |
| Begin a section that appears without section numbers of any kind. The |
| title appears in the table of contents. @xref{@code{@@unnumberedsec |
| @@appendixsec @@heading}}. |
| |
| @item @@unnumberedsubsec @var{title} |
| Begin an unnumbered subsection. The title appears in the table of |
| contents. @xref{@code{@@unnumberedsubsec @@appendixsubsec @@subheading}}. |
| |
| @item @@unnumberedsubsubsec @var{title} |
| Begin an unnumbered subsubsection. The title appears in the table of |
| contents. @xref{@code{@@subsubsection}}. |
| |
| @item @@uref@{@var{url}[, @var{displayed-text}][, @var{replacement}@} |
| @itemx @@url@{@var{url}[, @var{displayed-text}][, @var{replacement}@} |
| Define a cross-reference to an external uniform resource locator, |
| e.g., for the World Wide Web. @xref{@code{@@url}}. |
| |
| @item @@urefbreakstyle @var{style} |
| Specify how @code{@@uref}/@code{@@url} should break at special |
| characters: @code{after}, @code{before}, @code{none}. |
| @xref{@code{@@url}}. |
| |
| @item @@v@{@var{c}@} |
| Generate check accent over the character @var{c}, as in @v{o}. |
| @xref{Inserting Accents}. |
| |
| @item @@value@{@var{txivar}@} |
| Insert the value, if any, of the Texinfo variable @var{txivar}, |
| previously defined by @code{@@set}. @xref{@code{@@set @@clear |
| @@value}}. |
| |
| @item @@var@{@var{metasyntactic-variable}@} |
| Highlight a metasyntactic variable, which is something that stands for |
| another piece of text. @xref{@code{@@var}}. |
| |
| @item @@verb@{@var{delim} @var{literal} @var{delim}@} |
| Output @var{literal}, delimited by the single character @var{delim}, |
| exactly as is (in the fixed-width font), including any whitespace or |
| Texinfo special characters. @xref{@code{@@verb}}. |
| |
| @item @@verbatim |
| Output the text of the environment exactly as is (in the fixed-width |
| font). Pair with @code{@@end verbatim}. @xref{@code{@@verbatim}}. |
| |
| @item @@verbatiminclude @var{filename} |
| Output the contents of @var{filename} exactly as is (in the |
| fixed-width font). @xref{@code{@@verbatiminclude}}. |
| |
| @item @@vindex @var{entry} |
| Add @var{entry} to the index of variables. @xref{Index Entries, , |
| Defining the Entries of an Index}. |
| |
| @item @@vskip @var{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 page with the argument @samp{0pt plus |
| 1filll}. (Note spelling of @samp{filll}.) @xref{Copyright}. |
| |
| @item @@vtable @var{formatting-command} |
| Begin a two-column table, using @code{@@item} for each entry. |
| Automatically enter each of the items in the first column into the |
| index of variables. Pair with @code{@@end vtable}. The same as |
| @code{@@table}, except for indexing. @xref{@code{@@ftable @@vtable}}. |
| |
| @item @@w@{@var{text}@} |
| Disallow line breaks within @var{text}. @xref{@code{@@w}}. |
| |
| @item @@xml |
| Deprecated, will be removed in a future release. Text will not |
| appear in any output. Pair with @code{@@end xml}. @xref{Raw |
| Formatter Commands}. |
| |
| @item @@xref@{@var{node}, [@var{entry}], [@var{node-title}], [@var{info-file}], [@var{printed-manual}]@} |
| Make a reference that starts with `See' in a printed manual. Follow |
| command with a punctuation mark. The first argument is mandatory, except for |
| references to whole manuals. To refer to another manual as a whole, |
| the @var{printed-manual} and/or the @var{info-file} are the only |
| required arguments. @xref{@code{@@xref}}. |
| |
| @item @@xrefautomaticsectiontitle @var{on-off} |
| By default, use the section title instead of the node name in cross |
| references, including in node headers in HTML. @xref{Three Arguments}. |
| |
| @item @@xrefname @var{xref-name} |
| Use immediately after a @code{@@node} line to provide text for linking |
| to that node when @code{xrefautomaticsectiontitle} is on, without |
| printing a heading. @xref{Unstructured Nodes}. |
| |
| @end table |
| |
| |
| @node Command Contexts |
| @section @@-Command Contexts |
| |
| @cindex Contexts, of @@-commands |
| |
| Here we describe approximately which @@-commands can be used in which |
| contexts. It is not exhaustive or meant to be a complete reference. |
| Discrepancies between the information here and the Texinfo processors |
| implementations are most likely to be resolved in favor of the |
| implementations. |
| |
| By @dfn{general text} below, we mean anything except sectioning and |
| other such outer-level document commands, such as @code{@@section}, |
| @code{@@node}, and @code{@@setfilename}. |
| |
| @code{@@c}, @code{@@comment} and @code{@@if ... @@end if} conditional |
| commands may appear anywhere (except the conditionals must still be on lines by |
| themselves). @code{@@caption} and @code{@@shortcaption} may only appear in |
| @code{@@float} but may contain general text. @code{@@footnote} content |
| likewise. |
| |
| @@-commands with braces marking text (such as @code{@@strong}, |
| @code{@@sc}, @code{@@asis}) may contain raw formatter commands such as |
| @code{@@html} but no other block commands (other commands terminated |
| by @code{@@end}) and may not be split across paragraphs, but may |
| otherwise contain general text. |
| |
| In addition to the block command restriction, on @code{@@center}, |
| @code{@@exdent} and @code{@@item} in @code{@@table} lines, @@-commands |
| that makes only sense in a paragraph are not accepted, such as |
| @code{@@indent}. |
| |
| In addition to the above, sectioning commands cannot contain |
| @code{@@anchor}, @code{@@footnote} or @code{@@verb}. |
| |
| In addition to the above, remaining commands (@code{@@node}, |
| @code{@@anchor}, @code{@@printindex}, @code{@@ref}, @code{@@math}, |
| @code{@@cindex}, @code{@@url}, @code{@@image}, and so on) cannot |
| contain cross-reference commands (@code{@@ref}, @code{@@xref}, |
| @code{@@pxref} and @code{@@inforef}). |
| |
| For precise and complete information, we suggest looking into the |
| test suite in the sources, which exhaustively tries combinations. |
| |
| |
| @node Obsolete @@-Commands |
| @section Obsolete @@-Commands |
| |
| Here are Texinfo @@-commands which are obsolete or have been removed |
| completely. This section is for historical purposes. |
| |
| @ftable @code |
| @item @@refill |
| This command used to refill and indent the paragraph after all the |
| other processing has been done. It is no longer needed, since all |
| formatters now automatically refill as needed, but you may still see |
| it in the source to some manuals, as it does no harm. |
| |
| @cindex Contents, after title page |
| @cindex Table of contents, after title page |
| @item @@setcontentsaftertitlepage |
| In the past, the contents commands were sometimes placed at the end of |
| the file, after any indices and just before the @code{@@bye}, but we |
| no longer recommend this. |
| This command could be used by a user printing a manual, to force the |
| contents to be printed after the title page |
| (after the @samp{@@end titlepage} line) |
| even if the @code{@@contents} command was at the end of the manual. |
| |
| @item @@setshortcontentsaftertitlepage |
| This placed the short table of contents after the @samp{@@end titlepage} |
| command even if the @code{@@shortcontents} command was at the end. |
| |
| @item @@clickstyle @@@var{cmd} |
| This could be used to give a command to be used for @code{@@click}. |
| For example, @code{@@clickstyle @@result} had the same effect as |
| @code{@@alias click=result}. The command was not very useful and |
| does not appear to ever have been used by anyone. |
| |
| @end ftable |
| |
| |
| @node Tips |
| @nodedescription Hints on how to write a Texinfo document. |
| @appendix Tips and Hints |
| |
| Writers of GNU manuals should consult @ref{GNU Manuals,,, standards, |
| GNU Coding Standards}. Here are some other tips for writing Texinfo |
| documentation: |
| |
| @cindex Tips |
| @cindex Usage tips |
| @cindex Hints |
| @itemize @bullet |
| @item |
| Write in the present tense, not in the past or the future. |
| |
| @item |
| Write actively! For example, write ``We recommend that @dots{}'' rather |
| than ``It is recommended that @dots{}''. |
| |
| @item |
| Design your manual so that it can be read sequentially, as far as |
| possible. People tire of flipping back and forth to find information |
| that should be presented to them as they need it. |
| |
| @item |
| Use 70 or 72 as your fill column. Longer lines are hard to read. |
| |
| @item |
| Include a copyright notice and copying permissions. |
| |
| @end itemize |
| |
| |
| @subsubheading Index, Index, Index! |
| |
| @itemize @bullet |
| @item |
| Write many index entries, in different ways. You can write index entries |
| as you write the body of the text, or write them afterwards. |
| |
| @item |
| Write index entries only where a topic is discussed significantly. For |
| example, it is not useful to index ``debugging information'' in a |
| chapter on reporting bugs. Someone who wants to know about debugging |
| information will certainly not find it in that chapter. |
| |
| @item |
| Write the indexing commands that refer to a whole section immediately |
| after the section command. Write the indexing commands that refer to |
| a paragraph before that paragraph; this way, an index entry points to |
| the first page of a paragraph that is split across pages. |
| |
| In the example that follows, a blank line comes after the index |
| entry for ``Leaping'': |
| |
| @example |
| @group |
| @@section The Dog and the Fox |
| @@cindex Jumping, in general |
| @@cindex Leaping |
| |
| @@cindex Dog, lazy, jumped over |
| @@cindex Lazy dog jumped over |
| @@cindex Fox, jumps over dog |
| @@cindex Quick fox jumps over dog |
| The quick brown fox jumps over the lazy dog. |
| @end group |
| @end example |
| |
| @noindent |
| (Note that the example shows entries for the same concept that are |
| written in different ways---@samp{Lazy dog}, and @samp{Dog, lazy}---so |
| readers can look up the concept in different ways.) |
| |
| @item |
| Consistently capitalize the first word of every concept index entry, |
| or else consistently use lowercase. Terse entries often call for |
| lowercase; longer entries for capitalization. Whichever case |
| convention you use, please use one or the other consistently! Mixing |
| the two styles looks bad. |
| |
| @item |
| Always capitalize or use uppercase for those words in an index for |
| which this is proper, such as names of countries or acronyms. Always |
| use the appropriate case for case-sensitive names, such as those in C or |
| Lisp. |
| |
| @end itemize |
| |
| |
| @subsubheading Complete Phrases |
| |
| Complete phrases are easier to read than @dots{} |
| |
| @itemize @bullet |
| @item |
| Write entries in an itemized list as complete sentences; or at least, as |
| complete phrases. Incomplete expressions @dots{} awkward @dots{} like |
| this. |
| |
| @item |
| 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. |
| @end itemize |
| |
| |
| @subsubheading Introducing New Terms |
| |
| @itemize @bullet |
| @item |
| Introduce new terms so that a reader who does not know them can |
| understand them from context; or write a definition for the term. |
| |
| For example, in the following, the terms ``check in'', ``register'' and |
| ``delta'' are all appearing for the first time; the example sentence should be |
| rewritten so they are understandable. |
| |
| @quotation |
| The major function assists you in checking in a file to your |
| version control system and registering successive sets of changes to |
| it as deltas. |
| @end quotation |
| |
| @item |
| Use the @code{@@dfn} command around a word being introduced, to indicate |
| that the reader should not expect to know the meaning already, and |
| should expect to learn the meaning from this passage. |
| @end itemize |
| |
| |
| @subsubheading Bad Examples |
| |
| Here are a few examples of bad writing to avoid: |
| |
| @quotation |
| When you are done editing the file, you must perform a |
| @t{@@dfn}@{check in@}. |
| @end quotation |
| |
| @noindent |
| In this example, say, `` @dots{} you must @t{@@dfn}@{check |
| in@} the new version.'' That flows better. |
| |
| @quotation |
| 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). |
| @end quotation |
| |
| @noindent |
| In this example, say, ``@dots{} makes a unified interface such as VC |
| mode possible.'' |
| |
| |
| @subsubheading Periods Outside of Quotes |
| |
| Place periods and other punctuation marks @emph{outside} of quotations, |
| unless the punctuation is part of the quotation. This practice goes |
| against some publishing conventions in the United States, but enables the |
| reader to distinguish between the contents of the quotation and the |
| whole passage. |
| |
| For example, you should write the following sentence with the period |
| outside the end quotation marks: |
| |
| @example |
| Evidently, @samp{au} is an abbreviation for ``author''. |
| @end example |
| |
| @noindent |
| since @samp{au} does @emph{not} serve as an abbreviation for |
| @samp{author.} (with a period following the word). |
| |
| |
| @subsubheading Blank Lines |
| |
| @itemize @bullet |
| @item |
| 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. |
| |
| @item |
| Always insert a blank line before a @code{@@table} command and after an |
| @code{@@end table} command; but never insert a blank line after an |
| @code{@@table} command. |
| |
| @need 1000 |
| For example, |
| |
| @example |
| @group |
| Types of fox: |
| |
| @@table @@samp |
| @@item Quick |
| Jump over lazy dogs. |
| @end group |
| |
| @group |
| @@item Brown |
| Also jump over lazy dogs. |
| @@end table |
| |
| @end group |
| @group |
| @@noindent |
| On the other hand, @dots{} |
| @end group |
| @end example |
| |
| Insert blank lines before and after @code{@@itemize} @dots{} @code{@@end |
| itemize} and @code{@@enumerate} @dots{} @code{@@end enumerate} in the |
| same way. |
| @end itemize |
| |
| |
| @subsubheading Spaces |
| |
| Do not use spaces to format a Texinfo file, except inside of |
| @code{@@example} @dots{} @code{@@end example} and other literal |
| environments and commands. |
| |
| @need 700 |
| For example, @TeX{} fills the following: |
| |
| @example |
| @group |
| @@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. |
| @end group |
| @end example |
| |
| @need 950 |
| @noindent |
| so it looks like this: |
| |
| @iftex |
| @quotation |
| @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. |
| @end quotation |
| @end iftex |
| @ifnottex |
| @quotation |
| `C-x v' `M-x vc-next-action' Perform the next logical operation on the |
| version-controlled file corresponding to the current buffer. |
| @end quotation |
| @end ifnottex |
| |
| @noindent |
| In this case, the text should be formatted with |
| @code{@@table}, @code{@@item}, and @code{@@itemx}, to create a table. |
| |
| |
| @subsubheading @@code, @@samp, @@var, and @samp{---} |
| |
| @itemize @bullet |
| @item |
| Use @code{@@code} around Lisp symbols, including command names. |
| For example, |
| |
| @example |
| The main function is @@code@{vc-next-action@}, @dots{} |
| @end example |
| |
| @item |
| Avoid putting letters such as @samp{s} immediately after a |
| @samp{@@code} command. Such letters look bad. |
| |
| @item |
| Use @code{@@var} around meta-variables. Do not write angle brackets |
| around them. |
| |
| @item |
| Use three hyphens in a row, @samp{---}, to indicate a long dash. |
| The Info formatter reduces three hyphens to two; a long dash is |
| typeset in other output formats. |
| @end itemize |
| |
| |
| @subsubheading Program Invocation Nodes |
| |
| You can invoke programs such as Emacs, GCC, and @code{gawk} from a |
| shell. The documentation for each program should contain a section that |
| describes this. Unfortunately, if the node names and titles for these |
| sections are all different, they are difficult for users to find. |
| |
| So, there is a convention to name such sections with a phrase beginning |
| with the word `Invoking', as in `Invoking Emacs'; this way, users can |
| find the section easily. |
| |
| |
| @subsubheading C functions |
| |
| When you use @code{@@example} to describe a C function's calling |
| conventions, use the ANSI C syntax, like this: |
| |
| @example |
| void dld_init (char *@@var@{path@}); |
| @end example |
| |
| @noindent |
| And in the subsequent discussion, refer to the argument values by |
| writing the same argument names, again highlighted with |
| @code{@@var}. |
| |
| Also, it is best to avoid writing @code{#include} above the |
| declaration just to indicate that the function is declared in a |
| header file. The practice may give the misimpression that the |
| @code{#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. |
| |
| @anchor{texi-elements-by-size} |
| @subsubheading 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 @command{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 |
| @file{util/} subdirectory of the Texinfo sources. |
| |
| |
| @subsubheading Capitalization |
| |
| @itemize @bullet |
| @item |
| Capitalize ``Texinfo''; it is a name. Do not write the @samp{x} or |
| @samp{i} in uppercase. |
| |
| @item |
| Capitalize ``Info''; it is a name. |
| |
| @item |
| Write @TeX{} using the @code{@@TeX@{@}} command. Note the uppercase |
| @samp{T} and @samp{X}. This command causes the formatters to |
| typeset the name according to the wishes of Donald Knuth, who wrote |
| @TeX{}. (Likewise @code{@@LaTeX@{@}} for @LaTeX{}.) |
| @end itemize |
| |
| |
| @subsubheading And Finally @dots{} |
| |
| @itemize @bullet |
| @item |
| Write notes for yourself at the very end of a Texinfo file after the |
| @code{@@bye}. None of the processors process text after the |
| @code{@@bye}; it is as if the text were within @code{@@ignore} @dots{} |
| @code{@@end ignore}. |
| @end itemize |
| |
| |
| @node Sample Texinfo Files |
| @nodedescription Complete examples, including full texts. |
| @appendix Sample Texinfo Files |
| @cindex Sample Texinfo files |
| |
| This appendix includes texts to be used in GNU manuals. |
| |
| |
| @node GNU Sample Texts |
| @section GNU Sample Texts |
| |
| @cindex GNU sample texts |
| @cindex Sample texts, GNU |
| @cindex Full texts, GNU |
| |
| Following is a sample Texinfo document with the full texts that should |
| be used (adapted as necessary) in GNU manuals. |
| |
| As well as the legal texts, it also serves as a practical example of how |
| many elements in a GNU system can affect the manual. If you're not |
| familiar with all these different elements, don't worry. They're not |
| required and a perfectly good manual can be written without them. |
| They're included here nonetheless because many manuals do (or could) |
| benefit from them. |
| |
| @xref{Short Sample}, for a minimal example of a Texinfo file. |
| |
| Here are some notes on the example: |
| |
| @itemize @bullet |
| @item |
| @pindex automake@r{, and version info} |
| @vindex UPDATED @r{Automake variable} |
| @vindex UPDATED-MONTH @r{Automake variable} |
| @vindex VERSION @r{Automake variable} |
| @pindex time-stamp.el |
| The @file{version.texi} in the @code{@@include} command is maintained |
| automatically by Automake (@pxref{Texinfo,,, automake, GNU Automake}). |
| It sets the @samp{VERSION}, @samp{UPDATED} and @samp{UPDATED-MONTH} |
| values used elsewhere. If your distribution doesn't use Automake, but |
| you do use Emacs, you may find the @code{time-stamp.el} package helpful |
| (@pxref{Time Stamps,,, emacs, The GNU Emacs Manual}). |
| |
| @item |
| The @code{@@syncodeindex} command reflects the recommendation to use |
| only one index where possible, to make it easier for readers to look up |
| index entries. |
| |
| @item |
| The @code{@@dircategory} specify a category for the manual. It is |
| used for constructing the Info directory. @xref{Directory Category}, |
| which includes a variety of recommended category names. |
| @xref{Installing Dir Entries}. |
| |
| @item |
| The `Invoking' node is a GNU standard to help users find the basic |
| information about command-line usage of a given program. @xref{Manual |
| Structure Details,,, standards, GNU Coding Standards}. |
| |
| @item |
| @cindex GNU Free Documentation License, including entire |
| @cindex Free Documentation License, including entire |
| This sample shows how to includes the FDL in a manual using the |
| @command{@@include} command. The @file{fdl.texi} file |
| is available in the Texinfo and other GNU source distributions. It is |
| also available on the GNU website (at |
| @uref{https://www.gnu.org/licenses/fdl-1.3.html}) along with guidance |
| for using it. |
| |
| @item |
| If the FSF is not the copyright holder, then use the appropriate name. |
| |
| @item |
| 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@. @xref{Verbatim Copying |
| License}. |
| |
| @end itemize |
| |
| Here is the sample document: |
| |
| @verbatim |
| \input texinfo @c -*-texinfo-*- |
| @include version.texi |
| @settitle GNU Sample @value{VERSION} |
| @syncodeindex pg cp |
| @copying |
| This manual is for GNU Sample (version @value{VERSION}, @value{UPDATED}), |
| which is an example in the Texinfo documentation. |
| |
| Copyright @copyright{} 2026 Free Software Foundation, Inc. |
| |
| @quotation |
| 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 no Front-Cover Texts, and with no Back-Cover |
| Texts. A copy of the license is included in the section entitled |
| ``GNU Free Documentation License''. |
| @end quotation |
| @end copying |
| |
| @dircategory Texinfo documentation system |
| @direntry |
| * sample: (sample)Invoking sample. |
| @end direntry |
| |
| @documentinfo |
| @title GNU Sample |
| @subtitle for version @value{VERSION}, @value{UPDATED} |
| @author A.U. Thor (@email{bug-sample@@gnu.org}) |
| @end documentinfo |
| @maketitle |
| |
| @contents |
| |
| @node Top |
| @top GNU Sample |
| |
| This manual is for GNU Sample (version @value{VERSION}, @value{UPDATED}). |
| |
| @node Invoking sample |
| @chapter Invoking sample |
| |
| @pindex sample |
| @cindex invoking @command{sample} |
| |
| This is a sample manual. There is no sample program to |
| invoke, but if there were, you could see its basic usage |
| and command line options here. |
| |
| @node GNU Free Documentation License |
| @appendix GNU Free Documentation License |
| |
| @include fdl.texi |
| |
| @node Index |
| @unnumbered Index |
| |
| @printindex cp |
| |
| @bye |
| @end verbatim |
| |
| |
| @node Verbatim Copying License |
| @section Verbatim Copying License |
| |
| @cindex Verbatim copying license |
| @cindex License for verbatim copying |
| |
| For software manuals and other documentation, it is critical to use a |
| license permitting free redistribution and updating, so that when a free |
| program is changed, the documentation can be updated as well. |
| |
| On the other hand, for documents that express your personal views, |
| feelings or experiences, it is more appropriate to use a license |
| permitting only verbatim copying. |
| |
| Here is a sample text for such a license permitting verbatim copying only. |
| This is just the license text itself. For a complete sample document, |
| see the previous sections. |
| |
| @verbatim |
| @copying |
| This document is a sample for allowing verbatim copying only. |
| |
| Copyright @copyright{} 2026 Free Software Foundation, Inc. |
| |
| @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 |
| @end verbatim |
| |
| |
| @node All-permissive Copying License |
| @section All-permissive Copying License |
| |
| @cindex All-permissive copying license |
| @cindex License for all-permissive copying |
| |
| For software manuals and other documentation, it is important to use a |
| license permitting free redistribution and updating, so that when a free |
| program is changed, the documentation can be updated as well. |
| |
| On the other hand, for small supporting files, short manuals (under 300 |
| lines long) and rough documentation (README files, INSTALL files, etc.), |
| the full FDL would be overkill. They can use a simple all-permissive |
| license. |
| |
| Here is a sample text for such an all-permissive license. This is just |
| the license text itself. For a complete sample document, see the |
| previous sections. |
| |
| @example |
| Copyright @@copyright@{@} 2026 Free Software Foundation, Inc. |
| |
| Copying and distribution of this file, with or without modification, |
| are permitted in any medium without royalty provided the copyright |
| notice and this notice are preserved. |
| @end example |
| |
| |
| @node Texinfo Mode |
| @nodedescription Using the GNU Emacs Texinfo mode. |
| @appendix Using Texinfo Mode |
| @cindex Texinfo mode |
| @cindex Mode, using Texinfo |
| @cindex GNU Emacs |
| @cindex Emacs |
| |
| You may edit a Texinfo file with any text editor you choose. A Texinfo |
| file is no different from any other ASCII file. However, GNU Emacs |
| comes with a special mode, called Texinfo mode, that provides Emacs |
| commands and tools to help ease your work. |
| |
| |
| @node Texinfo Mode Overview |
| @nodedescription How Texinfo mode can help you. |
| @section Texinfo Mode Overview |
| |
| Texinfo mode provides special features for working with Texinfo files. |
| You can: |
| |
| @itemize @bullet |
| @item |
| Insert frequently used @@-commands. |
| |
| @item |
| Automatically create @code{@@node} lines. |
| |
| @item |
| Show the structure of a Texinfo source file. |
| |
| @item |
| Automatically create or update the `Next', |
| `Previous', and `Up' pointers of a node. |
| |
| @item |
| Automatically create or update menus. |
| |
| @item |
| Automatically create a master menu. |
| |
| @item |
| Format a part or all of a file for Info. |
| |
| @item |
| Typeset and print part or all of a file. |
| @end itemize |
| |
| Perhaps the two most helpful features are those for inserting frequently |
| used @@-commands and for creating node pointers and menus. |
| |
| |
| @node Emacs Editing |
| @nodedescription Texinfo mode adds to GNU Emacs' general purpose editing features. |
| @section The Usual GNU Emacs Editing Commands |
| |
| In most cases, the usual Text mode commands work the same in Texinfo |
| mode as they do in Text mode. Texinfo mode adds new editing commands |
| and tools to GNU Emacs' general purpose editing features. The major |
| difference concerns filling. In Texinfo mode, the paragraph |
| separation variable and syntax table are redefined so that Texinfo |
| commands that should be on lines of their own are not inadvertently |
| included in paragraphs. Thus, the @kbd{M-q} (@code{fill-paragraph}) |
| command will refill a paragraph but not mix an indexing command on a |
| line adjacent to it into the paragraph. |
| |
| In addition, Texinfo mode sets the @code{page-delimiter} variable to |
| the value of @code{texinfo-chapter-level-regexp}; by default, this is |
| a regular expression matching the commands for chapters and their |
| equivalents, such as appendices. With this value for the page |
| delimiter, you can jump from chapter title to chapter title with the |
| @kbd{C-x ]} (@code{forward-page}) and @kbd{C-x [} |
| (@code{backward-page}) commands and narrow to a chapter with the |
| @kbd{C-x n p} (@code{narrow-to-page}) command. (@xref{Pages, , ,emacs, |
| The GNU Emacs Manual}, for details about the page commands.) |
| |
| GNU Emacs automatically enters Texinfo mode when you visit a |
| file with a @file{.texinfo}, @file{.texi} or @file{.txi} |
| extension. Also, Emacs switches to Texinfo mode |
| when you visit a |
| file that has @samp{-*-texinfo-*-} in its first line. If ever you are |
| in another mode and wish to switch to Texinfo mode, type @code{M-x |
| texinfo-mode}. |
| |
| Like all other Emacs features, you can customize or enhance Texinfo |
| mode as you wish. In particular, the keybindings are very easy to |
| change. The keybindings described here are the default or standard |
| ones. |
| |
| |
| @node Inserting |
| @nodedescription How to insert frequently used @@-commands. |
| @section Inserting Frequently Used Commands |
| @cindex Inserting frequently used commands |
| @cindex Frequently used commands, inserting |
| @cindex Commands, inserting them |
| |
| Texinfo mode provides commands to insert various frequently used |
| @@-commands into the buffer. You can use these commands to save |
| keystrokes. |
| |
| The insert commands are invoked by typing @kbd{C-c} twice and then the |
| first letter of the @@-command: |
| |
| @table @kbd |
| @findex texinfo-insert-@@code |
| @item C-c C-c c |
| @itemx M-x texinfo-insert-@@code |
| Insert @code{@@code@{@}} and put the |
| cursor between the braces. |
| |
| @findex texinfo-insert-@@dfn |
| @item C-c C-c d |
| @itemx M-x texinfo-insert-@@dfn |
| Insert @code{@@dfn@{@}} and put the |
| cursor between the braces. |
| |
| @findex texinfo-insert-@@end |
| @item C-c C-c e |
| @itemx M-x texinfo-insert-@@end |
| Insert @code{@@end} and attempt to insert the correct following word, |
| such as @samp{example} or @samp{table}. (This command does not handle |
| nested lists correctly, but inserts the word appropriate to the |
| immediately preceding list.) |
| |
| @findex texinfo-insert-@@item |
| @item C-c C-c i |
| @itemx M-x texinfo-insert-@@item |
| Insert @code{@@item} and put the |
| cursor at the beginning of the next line. |
| |
| @findex texinfo-insert-@@kbd |
| @item C-c C-c k |
| @itemx M-x texinfo-insert-@@kbd |
| Insert @code{@@kbd@{@}} and put the |
| cursor between the braces. |
| |
| @findex texinfo-insert-@@node |
| @item C-c C-c n |
| @itemx M-x texinfo-insert-@@node |
| Insert @code{@@node} and a comment line |
| listing the sequence for the `Next', |
| `Previous', and `Up' nodes. |
| Leave point after the @code{@@node}. |
| |
| @findex texinfo-insert-@@noindent |
| @item C-c C-c o |
| @itemx M-x texinfo-insert-@@noindent |
| Insert @code{@@noindent} and put the |
| cursor at the beginning of the next line. |
| |
| @findex texinfo-insert-dwim-@@ref |
| @item C-c C-c r |
| @itemx M-x texinfo-insert-dwim-@@ref |
| This function and binding were added in Emacs 27.1. |
| Inserts one of @code{@@pxref@{@}}, @code{@@xref@{@}}, or |
| @code{@@ref@{@}} based on the text around point; calling it near an |
| unclosed preceding open parenthesis results in @code{@@pxref@{@}}, at |
| the beginning of a sentence or at @code{(point-min)} yields |
| @code{@@xref@{@}}, any other location (including inside a word), will |
| result in @code{@@ref@{@}}. A numeric argument says how many words |
| the braces should surround. Puts the cursor between the braces. |
| |
| @findex texinfo-insert-@@samp |
| @item C-c C-c s |
| @itemx M-x texinfo-insert-@@samp |
| Insert @code{@@samp@{@}} and put the |
| cursor between the braces. |
| |
| @findex texinfo-insert-@@table |
| @item C-c C-c t |
| @itemx M-x texinfo-insert-@@table |
| Insert @code{@@table} followed by a @key{SPC} |
| and leave the cursor after the @key{SPC}. |
| |
| @findex texinfo-insert-@@var |
| @item C-c C-c v |
| @itemx M-x texinfo-insert-@@var |
| Insert @code{@@var@{@}} and put the |
| cursor between the braces. |
| |
| @findex texinfo-insert-@@example |
| @item C-c C-c x |
| @itemx M-x texinfo-insert-@@example |
| Insert @code{@@example} and put the |
| cursor at the beginning of the next line. |
| |
| @c M-@{ was the binding for texinfo-insert-braces; |
| @c in Emacs 19, backward-paragraph will take this binding. |
| @findex texinfo-insert-braces |
| @item C-c C-c @{ |
| @itemx M-x texinfo-insert-braces |
| Insert @code{@{@}} and put the cursor between the braces. |
| |
| @findex up-list |
| @item C-c @} |
| @itemx C-c ] |
| @itemx M-x up-list |
| Move from between a pair of braces forward past the closing brace. |
| Typing @kbd{C-c ]} is easier than typing @kbd{C-c @}}, which |
| is, however, more mnemonic; hence the two keybindings. (Also, you can |
| move out from between braces by typing @kbd{C-f}.) |
| @end table |
| |
| To put a command such as @w{@code{@@code@{@dots{}@}}} around an |
| @emph{existing} word, position the cursor in front of the word and type |
| @kbd{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---@samp{1} for one word, @samp{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 @code{@@kbd} and @code{@@var}. |
| |
| This set of insert commands was created after analyzing the frequency |
| with which different @@-commands are used in the @cite{GNU Emacs |
| Manual} and the @cite{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 @file{texinfo.el}. |
| |
| @findex texinfo-start-menu-description |
| @cindex Menu description, start |
| @cindex Description for menu, start |
| @kbd{C-c C-c C-d} (@code{texinfo-start-menu-description}) is an insert |
| command that works differently from the other insert commands. It |
| inserts a node's section or chapter title in the space for the |
| description in a menu entry line. (A menu entry has three parts, the |
| entry name, the node name, and the description. Only the node name is |
| required, but a description helps explain what the node is about. |
| @xref{Menu Parts, , The Parts of a Menu}.) |
| |
| To use @code{texinfo-start-menu-description}, position point in a menu |
| entry line and type @kbd{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 the 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. |
| |
| |
| @node Showing the Structure |
| @nodedescription How to show the structure of a file. |
| @section Showing the Sectioning Structure of a File |
| @cindex Showing the sectioning structure of a file |
| @cindex Sectioning structure of a file, showing |
| @cindex Structure of a file, showing |
| @cindex Outline of file structure, showing |
| @cindex Contents-like outline of file structure |
| @cindex File sectioning structure, showing |
| @cindex Texinfo file sectioning structure, showing |
| |
| You can show the sectioning structure of a Texinfo file by using the |
| @kbd{C-c C-s} command (@code{texinfo-show-structure}). This command |
| lists the lines that begin with the @@-commands for @code{@@chapter}, |
| @code{@@section}, and the like. It constructs what amounts to a table |
| of contents. These lines are displayed in another buffer called the |
| @samp{*Occur*} buffer. In that buffer, you can position the cursor |
| over one of the lines and use the @kbd{C-c C-c} command |
| (@code{occur-mode-goto-occurrence}), to jump to the corresponding spot |
| in the Texinfo file. |
| |
| @table @kbd |
| @findex texinfo-show-structure |
| @item C-c C-s |
| @itemx M-x texinfo-show-structure |
| Show the @code{@@chapter}, @code{@@section}, and such lines of a |
| Texinfo file. |
| |
| @findex occur-mode-goto-occurrence |
| @item C-c C-c |
| @itemx M-x occur-mode-goto-occurrence |
| Go to the line in the Texinfo file corresponding to the line under the |
| cursor in the @file{*Occur*} buffer. |
| @end table |
| |
| If you call @code{texinfo-show-structure} with a prefix argument by |
| typing @w{@kbd{C-u C-c C-s}}, it will list not only those lines with the |
| @@-commands for @code{@@chapter}, @code{@@section}, and the like, but |
| also the @code{@@node} lines. You can use @code{texinfo-show-structure} |
| with a prefix argument to check whether the `Next', `Previous', and `Up' |
| pointers of an @code{@@node} line are correct. |
| |
| Often, when you are working on a manual, you will be interested only |
| in the structure of the current chapter. In this case, you can mark |
| off the region of the buffer that you are interested in by using the |
| @kbd{C-x n n} (@code{narrow-to-region}) command and |
| @code{texinfo-show-structure} will work on only that region. To see |
| the whole buffer again, use @w{@kbd{C-x n w}} (@code{widen}). |
| (@xref{Narrowing, , , emacs, The GNU Emacs Manual}, for more |
| information about the narrowing commands.) |
| |
| @vindex page-delimiter |
| @cindex Page delimiter in Texinfo mode |
| In addition to providing the @code{texinfo-show-structure} command, |
| Texinfo mode sets the value of the page delimiter variable to match |
| the chapter-level @@-commands. This enables you to use the @kbd{C-x |
| ]} (@code{forward-page}) and @kbd{C-x [} (@code{backward-page}) |
| commands to move forward and backward by chapter, and to use the |
| @kbd{C-x n p} (@code{narrow-to-page}) command to narrow to a chapter. |
| @xref{Pages, , , emacs, The GNU Emacs Manual}, for more information |
| about the page commands. |
| |
| |
| @node Using @code{texinfo-show-structure} |
| @nodedescription How to use @code{texinfo-show-structure}. |
| @subsection Using @code{texinfo-show-structure} |
| |
| @cindex Showing the structure of a file |
| |
| It is not always easy to keep track of the nodes, chapters, sections, and |
| subsections of a Texinfo file. This is especially true if you are revising |
| or adding to a Texinfo file that someone else has written. |
| |
| In GNU Emacs, in Texinfo mode, the @code{texinfo-show-structure} |
| command lists all the lines that begin with the @@-commands that |
| specify the structure: @code{@@chapter}, @code{@@section}, |
| @code{@@appendix}, and so on. With an argument (@w{@kbd{C-u}} |
| as prefix argument, if interactive), |
| the command also shows the @code{@@node} lines. The |
| @code{texinfo-show-structure} command is bound to @kbd{C-c C-s} in |
| Texinfo mode, by default. |
| |
| The lines are displayed in a buffer called the @samp{*Occur*} buffer, |
| indented by hierarchical level. For example, here is a part of what was |
| produced by running @code{texinfo-show-structure} on this manual: |
| |
| @example |
| @group |
| Lines matching "^@@\\(chapter \\|sect\\|subs\\|subh\\| |
| unnum\\|major\\|chapheading \\|heading \\|appendix\\)" |
| in buffer texinfo.texi. |
| @dots{} |
| 4177:@@chapter Nodes |
| 4198: @@heading Two Paths |
| 4231: @@section Node and Menu Illustration |
| 4337: @@section The @@code@{@@@@node@} Command |
| 4393: @@subheading Choosing Node and Pointer Names |
| 4417: @@subsection How to Write a @@code@{@@@@node@} Line |
| 4469: @@subsection @@code@{@@@@node@} Line Tips |
| @dots{} |
| @end group |
| @end example |
| |
| This says that lines 4337, 4393, and 4417 of @file{texinfo.texi} begin |
| with the @code{@@section}, @code{@@subheading}, and @code{@@subsection} |
| commands respectively. If you move your cursor into the @samp{*Occur*} |
| window, you can position the cursor over one of the lines and use the |
| @kbd{C-c C-c} command (@code{occur-mode-goto-occurrence}), to jump to |
| the corresponding spot in the Texinfo file. @xref{Other Repeating |
| Search, , Using Occur, emacs, The GNU Emacs Manual}, for more |
| information about @code{occur-mode-goto-occurrence}. |
| |
| The first line in the @samp{*Occur*} window describes the @dfn{regular |
| expression} specified by @var{texinfo-heading-pattern}. This regular |
| expression is the pattern that @code{texinfo-show-structure} looks for. |
| @xref{Regexps, , Using Regular Expressions, emacs, The GNU Emacs Manual}, |
| for more information. |
| |
| When you invoke the @code{texinfo-show-structure} command, Emacs will |
| display the structure 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 @kbd{C-x n n} (@code{narrow-to-region}) command to mark the |
| region. (@xref{Narrowing, , , emacs, The GNU Emacs Manual}.) This is |
| how the example used above was generated. (To see the whole buffer |
| again, use @kbd{C-x n w} (@code{widen}).) |
| |
| If you call @code{texinfo-show-structure} with a prefix argument by |
| typing @w{@kbd{C-u C-c C-s}}, it will list lines beginning with |
| @code{@@node} as well as the lines beginning with the @@-sign commands |
| for @code{@@chapter}, @code{@@section}, and the like. |
| |
| You can remind yourself of the structure of a Texinfo file by looking at |
| the list in the @samp{*Occur*} window; and if you have mis-named a node |
| or left out a section, you can correct the mistake. |
| |
| |
| @node Using @code{occur} |
| @nodedescription How to list all lines containing a pattern. |
| @subsection Using @code{occur} |
| |
| @cindex Occurrences, listing with @code{@@occur} |
| @findex occur |
| |
| Sometimes the @code{texinfo-show-structure} command produces too much |
| information. Perhaps you want to remind yourself of the overall structure |
| of a Texinfo file, and are overwhelmed by the detailed list produced by |
| @code{texinfo-show-structure}. In this case, you can use the @code{occur} |
| command directly. To do this, type: |
| |
| @example |
| @kbd{M-x occur} |
| @end example |
| |
| @noindent |
| and then, when prompted, type a @dfn{regexp}, a regular expression for |
| the pattern you want to match. (@xref{Regexps, , Regular Expressions, |
| emacs, The GNU Emacs Manual}.) The @code{occur} command works from |
| the current location of the cursor in the buffer to the end of the |
| buffer. If you want to run @code{occur} on the whole buffer, place |
| the cursor at the beginning of the buffer. |
| |
| For example, to see all the lines that contain the word |
| @samp{@@chapter} in them, just type @samp{@@chapter}. This will |
| produce a list of the chapters. It will also list all the sentences |
| with @samp{@@chapter} in the middle of the line. |
| |
| If you want to see only those lines that start with the word |
| @samp{@@chapter}, type @samp{^@@chapter} when prompted by |
| @code{occur}. If you want to see all the lines that end with a word |
| or phrase, end the last word with a @samp{$}; for example, |
| @samp{catching mistakes$}. This can be helpful when you want to see |
| all the nodes that are part of the same chapter or section and |
| therefore have the same `Up' pointer. |
| |
| @xref{Other Repeating Search, , Using Occur, emacs , The GNU Emacs Manual}, |
| for more information. |
| |
| |
| @node Updating Nodes and Menus |
| @nodedescription How to update or create new nodes and menus. |
| @section Updating Nodes and Menus |
| |
| @cindex Updating nodes and menus |
| @cindex Create nodes, menus automatically |
| @cindex Insert nodes, menus automatically |
| @cindex Automatically insert nodes, menus |
| |
| The @command{texi2any} command will create an Info file for a hierarchically |
| organized Texinfo file that lacks `Next', `Previous' and `Up' pointers |
| (@pxref{Writing a Node}). Thus, in general, there is no need for explicit |
| `Next', `Previous', and `Up' pointers. In this setting, menus will be added |
| automatically for nodes without an explicit menu. (@xref{Generic Translator |
| @command{texi2any}}, for more information about @command{texi2any}.) |
| |
| If you still want explicit pointers, Texinfo mode provides commands for |
| automatically creating or updating menus and node pointers. The commands are |
| called ``update'' commands because their most frequent use is for updating a |
| Texinfo file after you have worked on it; but you can use them to insert the |
| `Next', `Previous', and `Up' pointers into an @code{@@node} line that has none |
| and to create menus in a file that has none. |
| |
| |
| @node Updating Commands |
| @nodedescription Five major updating commands. |
| @subsection The Updating Commands |
| |
| You can use the updating commands to: |
| |
| @itemize @bullet |
| @item |
| insert or update the `Next', `Previous', and `Up' pointers of a node, |
| |
| @item |
| insert or update the menu for a section, and |
| |
| @item |
| create a master menu for a Texinfo source file. |
| @end itemize |
| |
| You can also use the commands to update all the nodes and menus in a |
| region or in a whole Texinfo file. |
| |
| The updating commands work only with conventional Texinfo files, which |
| are structured hierarchically like books. In such files, a line with a |
| structuring command must follow closely after each @code{@@node} line, |
| except for the `Top' @code{@@node} line. |
| |
| You can write the structuring command on the line that follows |
| immediately after an @code{@@node} line or else on the line that |
| follows after a single @code{@@comment} line or a single |
| @code{@@ifinfo} line. You cannot interpose more than one line between |
| the @code{@@node} line and the structuring command line; and you may |
| interpose only a @code{@@comment} line or an @code{@@ifinfo} line. |
| |
| Commands which work on a whole buffer require that the `Top' node be |
| followed by a node with a @code{@@chapter} or equivalent-level command. |
| The menu updating commands will not create a main or master menu for a |
| Texinfo file that has only @code{@@chapter}-level nodes! The menu |
| updating commands only create menus @emph{within} nodes for lower level |
| nodes. To create a menu of chapters, you must provide a `Top' |
| node. |
| |
| The menu updating commands remove menu entries that refer to other Info |
| files since they do not refer to nodes within the current buffer. This |
| is a deficiency. Rather than use menu entries, you can use cross |
| references to refer to other Info files. None of the updating commands |
| affect cross-references. |
| |
| Texinfo mode has five updating commands that are used most often: two |
| are for updating the node pointers or menu of a single node (or a |
| region); two are for updating every node pointer and menu in a file; |
| and one, the @code{texinfo-master-menu} command, is for creating a |
| master menu for a complete file, and optionally, for updating every |
| node and menu in the whole Texinfo file. |
| |
| The @code{texinfo-master-menu} command is the primary command: |
| |
| @table @kbd |
| @findex texinfo-master-menu |
| @item C-c C-u m |
| @itemx M-x texinfo-master-menu |
| Create or update a master menu that includes all the other menus |
| (incorporating the descriptions from pre-existing menus, if |
| any). |
| |
| With an argument (prefix argument, @kbd{C-u,} if interactive), first create or |
| update all the nodes and all the regular menus in the buffer before |
| constructing the master menu. (@xref{The Top Node, , The Top Node and |
| Master Menu}, for more about a master menu.) |
| |
| For @code{texinfo-master-menu} to work, the Texinfo file must have a |
| `Top' node and at least one subsequent node. |
| |
| After extensively editing a Texinfo file, you can type the following: |
| |
| @example |
| C-u M-x texinfo-master-menu |
| @exdent or |
| C-u C-c C-u m |
| @end example |
| |
| @noindent |
| This updates all the nodes and menus completely and all at once. |
| @end table |
| |
| 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. |
| |
| @need 1000 |
| The commands are: |
| |
| @table @kbd |
| @findex texinfo-update-node |
| @item C-c C-u C-n |
| @itemx M-x texinfo-update-node |
| Insert the `Next', `Previous', and `Up' pointers for the node that point is |
| within (i.e., for the @code{@@node} line preceding point). If the |
| @code{@@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, @kbd{C-u}, if interactive), this command |
| updates all @code{@@node} lines in the region (which is the text |
| between point and mark). |
| |
| @findex texinfo-make-menu |
| @item C-c C-u C-m |
| @itemx M-x texinfo-make-menu |
| Create or update the menu in the node that point is within. |
| With an argument (@kbd{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 @code{texinfo-make-menu} updates an existing menu, the |
| descriptions from that menu are incorporated into the new menu. This |
| is done by copying descriptions from the existing menu to the entries |
| in the new menu that have the same node names. If the node names are |
| different, the descriptions are not copied to the new menu. |
| |
| @findex texinfo-every-node-update |
| @item C-c C-u C-e |
| @itemx M-x texinfo-every-node-update |
| Insert or update the `Next', `Previous', and `Up' pointers for every |
| node in the buffer. |
| |
| @findex texinfo-all-menus-update |
| @item C-c C-u C-a |
| @itemx M-x texinfo-all-menus-update |
| Create or update all the menus in the buffer. With an argument |
| (@kbd{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 @code{texinfo-all-menus-update} command |
| updates it; but the command does not create a new master menu if none |
| already exists. (Use the @code{texinfo-master-menu} command for |
| that.) |
| |
| When working on a document that does not merit a master menu, you can |
| type the following: |
| |
| @example |
| C-u C-c C-u C-a |
| @exdent or |
| C-u M-x texinfo-all-menus-update |
| @end example |
| |
| @noindent |
| This updates all the nodes and menus. |
| @end table |
| |
| The @code{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 (@pxref{Customization,,, |
| emacs, The GNU Emacs Manual}) or with the @kbd{M-x set-variable} |
| command (@pxref{Examining, , Examining and Setting Variables, emacs, |
| The GNU Emacs Manual}). |
| |
| Also, the @code{texinfo-indent-menu-description} command may be used to |
| indent existing menu descriptions to a specified column. Finally, if |
| you wish, you can use the @code{texinfo-insert-node-lines} command to |
| insert missing @code{@@node} lines into a file. In particular, you can |
| ignore @code{@@node} lines altogether in your first draft and then |
| use the @code{texinfo-insert-node-lines} command to create @code{@@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. |
| (@xref{Other Updating Commands}, for more information.) |
| |
| |
| @node Updating Requirements |
| @nodedescriptionblock |
| How to structure a Texinfo file for using the updating command. |
| @end nodedescriptionblock |
| @subsection Updating Requirements |
| @cindex Updating requirements |
| @cindex Requirements for updating commands |
| |
| To use the updating commands, you must organize the Texinfo file |
| hierarchically with chapters, sections, subsections, and the like. |
| When you construct the hierarchy of the manual, do not `jump down' |
| more than one level at a time: you can follow the `Top' node with a |
| chapter, but not with a section; you can follow a chapter with a |
| section, but not with a subsection. However, you may `jump up' any |
| number of levels at one time---for example, from a subsection to a |
| chapter. |
| |
| Each @code{@@node} line, with the exception of the line for the `Top' |
| node, must be followed by a line with a structuring command such as |
| @code{@@chapter}, @code{@@section}, or |
| @code{@@unnumberedsubsec}. |
| |
| Each @code{@@node} line/structuring-command line combination |
| must look either like this: |
| |
| @example |
| @group |
| @@node Comments, Minimum, Conventions, Overview |
| @@comment node-name, next, previous, up |
| @@section Comments |
| @end group |
| @end example |
| |
| or like this (without the @code{@@comment} line): |
| |
| @example |
| @group |
| @@node Comments, Minimum, Conventions, Overview |
| @@section Comments |
| @end group |
| @end example |
| |
| or like this (without the explicit node pointers): |
| |
| @example |
| @group |
| @@node Comments |
| @@section Comments |
| @end group |
| @end example |
| |
| @noindent |
| In this example, `Comments' is the name of both the node and the |
| section. The next node is called `Minimum' and the previous node is |
| called `Conventions'. The `Comments' section is within the `Overview' |
| node, which is specified by the `Up' pointer. |
| |
| If a file has a `Top' node, it must be called @samp{top} or @samp{Top} |
| and be the first node in the file. |
| |
| The menu updating commands create a menu of sections within a chapter, |
| a menu of subsections within a section, and so on. This means that |
| you must have a `Top' node if you want a menu of chapters. |
| |
| |
| @node Update Multiple Files |
| @nodedescriptionblock |
| How to create and update nodes and menus when using included files. |
| @end nodedescriptionblock |
| @subsection Update Outer File and Include Files |
| |
| @anchor{@code{texinfo-multiple-files-update}}@c old node name |
| |
| @findex texinfo-multiple-files-update |
| |
| GNU Emacs Texinfo mode provides the |
| @code{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 @code{@@node} line of the included files or all of them. |
| |
| With @kbd{C-u} as a prefix argument, create and insert a master menu in |
| the outer file. With a numeric prefix argument, such as @kbd{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. |
| |
| In more details: |
| |
| @table @kbd |
| @item M-x texinfo-multiple-files-update |
| Called without any arguments: |
| |
| @itemize @minus |
| @item |
| Create or update the `Next', `Previous', and `Up' pointers of the |
| first @code{@@node} line in each file included in an outer or overall |
| Texinfo file. |
| |
| @item |
| Create or update the `Top' level node pointers of the outer or |
| overall file. |
| |
| @item |
| Create or update a main menu in the outer file. |
| @end itemize |
| |
| @item C-u M-x texinfo-multiple-files-update |
| Called with @kbd{C-u} as a prefix argument: |
| |
| @itemize @minus{} |
| @item |
| Create or update pointers in the first @code{@@node} line in each |
| included file. |
| |
| @item |
| Create or update the `Top' level node pointers of the outer file. |
| |
| @item |
| Create and insert a master menu in the outer file. The master menu |
| is made from all the menus in all the included files. |
| @end itemize |
| |
| @item C-u 8 M-x texinfo-multiple-files-update |
| Called with a numeric prefix argument, such as @kbd{C-u 8}: |
| |
| @itemize @minus |
| @item |
| Create or update @emph{all} the `Next', `Previous', and `Up' pointers |
| of all the included files. |
| |
| @item |
| Create or update @emph{all} the menus of all the included |
| files. |
| |
| @item |
| Create or update the `Top' level node pointers of the outer or |
| overall file. |
| |
| @item |
| And then create a master menu in the outer file. This is similar to |
| invoking @code{texinfo-master-menu} with an argument when you are |
| working with just one file. |
| @end itemize |
| @end table |
| |
| Note the use of the prefix argument in interactive use: with a regular |
| prefix argument, just @w{@kbd{C-u}}, the |
| @code{texinfo-multiple-files-update} command inserts a master menu; |
| with a numeric prefix argument, such as @kbd{C-u 8}, the command |
| updates @emph{every} pointer and menu in @emph{all} the files and |
| then inserts a master menu. |
| |
| |
| @node Include Files Requirements |
| @nodedescriptionblock |
| How to structure outer file and include files for the updating command. |
| @end nodedescriptionblock |
| @subsection Include Files Requirements |
| @cindex Include files requirements |
| @cindex Requirements for include files |
| |
| If you plan to use the @code{texinfo-multiple-files-update} command, |
| the outer Texinfo file that lists included files within it should |
| contain nothing but the beginning and end parts of a Texinfo file, and |
| a number of @code{@@include} commands listing the included files. It |
| should not even include indices, which should be listed in an included |
| file of their own. |
| |
| Moreover, each of the included files must contain exactly one highest |
| level node (conventionally, @code{@@chapter} or equivalent), |
| and this node must be the first node in the included file. |
| Furthermore, each of these highest level nodes in each included file |
| must be at the same hierarchical level in the file structure. |
| Usually, each is a @code{@@chapter}, an @code{@@appendix}, or an |
| @code{@@unnumbered} node. Thus, normally, each included file contains |
| one, and only one, chapter or equivalent-level node. |
| |
| The outer file should contain only @emph{one} node, the `Top' node. It |
| should @emph{not} contain any nodes besides the single `Top' node. The |
| @code{texinfo-multiple-files-update} command will not process |
| them. |
| |
| |
| @node Other Updating Commands |
| @nodedescriptionblock |
| How to indent descriptions, insert missing nodes lines, and update |
| nodes in sequence. |
| @end nodedescriptionblock |
| @subsection Other Updating Commands |
| |
| In addition to the major updating commands, Texinfo mode possesses several |
| less frequently used updating commands: |
| |
| @table @kbd |
| @findex texinfo-insert-node-lines |
| @item M-x texinfo-insert-node-lines |
| Insert @code{@@node} lines before the @code{@@chapter}, |
| @code{@@section}, and other sectioning commands wherever they are |
| missing throughout a region in a Texinfo file. |
| |
| With an argument (@kbd{C-u} as prefix argument, if interactive), the |
| command @code{texinfo-insert-node-lines} not only inserts |
| @code{@@node} lines but also inserts the chapter or section titles as |
| the names of the corresponding nodes. In addition, it inserts the |
| titles as node names in pre-existing @code{@@node} lines that lack |
| names. Since node names should be more concise than section or |
| chapter titles, you must manually edit node names so inserted. |
| |
| For example, the following marks a whole buffer as a region and inserts |
| @code{@@node} lines and titles throughout: |
| |
| @example |
| C-x h C-u M-x texinfo-insert-node-lines |
| @end example |
| |
| This command inserts titles as node names in @code{@@node} lines; the |
| @code{texinfo-start-menu-description} command (@pxref{Inserting, |
| Inserting Frequently Used Commands}) inserts titles as descriptions in |
| menu entries, a different action. However, in both cases, you need to |
| edit the inserted text. |
| |
| @findex texinfo-indent-menu-description |
| @item 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 (@kbd{C-u} as prefix argument, if |
| interactive), the @code{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. |
| |
| @findex texinfo-sequential-node-update |
| @item M-x texinfo-sequential-node-update |
| Insert the names of the nodes immediately following and preceding the |
| current node as the `Next' or `Previous' pointers regardless of those |
| nodes' hierarchical level. This means that the `Next' node of a |
| subsection may well be the next chapter. Sequentially ordered nodes are |
| useful for novels and other documents that you read through |
| sequentially. (However, in Info, the @kbd{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 @code{texinfo-sequential-node-update} command |
| sequentially updates all the nodes in the region. |
| @end table |
| |
| |
| @node Info Formatting |
| @nodedescription How to format for Info. |
| @section Formatting for Info |
| @cindex Formatting for Info |
| @cindex Running an Info formatter |
| @cindex Info formatting |
| |
| Texinfo mode provides several commands for formatting part or all of a |
| Texinfo file for Info. |
| |
| |
| @node @command{texi2any} in Emacs |
| @nodedescription How to run @command{texi2any} from Emacs. |
| @subsection Running @command{texi2any}/@command{makeinfo} Within Emacs |
| |
| @c anchor{makeinfo in Emacs}@c prev name |
| @anchor{@code{makeinfo} in Emacs}@c prev name |
| @anchor{@command{makeinfo} Advantages}@c node merged in this one |
| @cindex Running @command{makeinfo} in Emacs |
| @cindex Running @command{texi2any} in Emacs |
| @cindex @command{makeinfo} inside Emacs |
| @cindex @command{texi2any} inside Emacs |
| @cindex Shell, running @command{makeinfo} in |
| @cindex Shell, running @command{texi2any} in |
| |
| The @command{texi2any} program provides better error messages |
| than either of the Emacs formatting commands. We recommend it. |
| The @command{texi2any} program is independent of Emacs. |
| |
| You can run @command{texi2any} (or @command{makeinfo}) in GNU Emacs |
| Texinfo mode by using either the @code{makeinfo-region} or the |
| @code{makeinfo-buffer} commands. In Texinfo mode, the commands |
| are bound to @kbd{C-c C-m C-r} and @kbd{C-c C-m C-b} by default. |
| |
| @table @kbd |
| @item C-c C-m C-r |
| @itemx M-x makeinfo-region |
| Format the current region for Info. |
| @findex makeinfo-region |
| |
| @item C-c C-m C-b |
| @itemx M-x makeinfo-buffer |
| Format the current buffer for Info. |
| @findex makeinfo-buffer |
| @end table |
| |
| When you invoke @code{makeinfo-region} the output goes to a temporary |
| @c FIXME or to the file based on input file name? |
| buffer. When you invoke @code{makeinfo-buffer} output goes to the |
| file set with @code{@@setfilename} (@pxref{@code{@@setfilename}}). |
| |
| The Emacs @code{makeinfo-region} and @code{makeinfo-buffer} commands |
| run the @command{texi2any} program in a temporary shell buffer. If |
| @command{texi2any} finds any errors, Emacs displays the error messages in |
| the temporary buffer. |
| |
| @cindex Errors, parsing |
| @cindex Parsing errors |
| @findex next-error |
| You can parse the error messages by typing @kbd{C-x `} |
| (@code{next-error}). This causes Emacs to go to and position the |
| cursor on the line in the Texinfo source that @command{texi2any} thinks |
| caused the error. @xref{Compilation, , Running @code{make} or |
| Compilers Generally, emacs, The GNU Emacs Manual}, for more |
| information about using the @code{next-error} command. |
| |
| In addition, you can kill the shell in which the @command{texi2any} |
| command is running or make the shell buffer display its most recent |
| output. |
| |
| @table @kbd |
| @findex makeinfo-kill-job |
| @item C-c C-m C-k |
| @itemx M-x makeinfo-kill-job |
| Kill the current running @command{texi2any} (or @command{makeinfo}) job |
| (from @code{makeinfo-region} or @code{makeinfo-buffer}). |
| |
| @findex makeinfo-recenter-output-buffer |
| @item C-c C-m C-l |
| @itemx M-x makeinfo-recenter-output-buffer |
| Redisplay the @command{texi2any} shell buffer to display its most recent |
| output. |
| @end table |
| |
| @noindent |
| (Note that the parallel commands for killing and recentering a @TeX{} |
| job are @kbd{C-c C-t C-k} and @kbd{C-c C-t C-l}. @xref{Texinfo Mode |
| Printing}.) |
| |
| You can specify options for @command{texi2any} by setting the |
| @code{makeinfo-options} variable with either the @kbd{M-x |
| customize} or the @kbd{M-x set-variable} command, or by setting the |
| variable in your @file{.emacs} initialization file. |
| |
| For example, you could write the following in your @file{.emacs} file: |
| |
| @example |
| @group |
| (setq makeinfo-options |
| "--paragraph-indent=0 --no-split |
| --fill-column=70 --verbose") |
| @end group |
| @end example |
| |
| @noindent |
| @c Writing these three cross-references using xref results in |
| @c three references to the same named manual, which looks strange. |
| @iftex |
| For more information, see @ref{@command{texi2any} Options}, as well as |
| ``Easy Customization Interface,'' ``Examining and Setting Variables,'' |
| and ``Init File'' in @cite{The GNU Emacs Manual}. |
| @end iftex |
| @ifnottex |
| For more information, see@* |
| @ref{Easy Customization, , Easy Customization Interface, emacs, The GNU Emacs Manual},@* |
| @ref{Examining, , Examining and Setting Variables, emacs, The GNU Emacs Manual},@* |
| @ref{Init File, , , emacs, The GNU Emacs Manual}, and@* |
| @ref{@command{texi2any} Options}. |
| @end ifnottex |
| |
| |
| @node @code{texinfo-format} commands |
| @nodedescriptionblock |
| Two Info formatting commands written in Emacs Lisp are an alternative |
| to @command{texi2any}. |
| @end nodedescriptionblock |
| @subsection The @code{texinfo-format@dots{}} Commands |
| |
| @c anchor{texinfo-format commands}@c prev name |
| |
| In GNU Emacs in Texinfo mode, you can format part or all of a Texinfo |
| file with the @code{texinfo-format-region} command. This formats the |
| current region and displays the formatted text in a temporary buffer |
| called @samp{*Info Region*}. |
| |
| Similarly, you can format a buffer with the |
| @code{texinfo-format-buffer} command. This command creates a new |
| buffer and generates the Info file in it. Typing @kbd{C-x C-s} will |
| save the Info file under the name specified by the |
| @code{@@setfilename} line which must be near the beginning of the |
| Texinfo file. |
| |
| @table @kbd |
| @findex texinfo-format-region |
| @item C-c C-e C-r |
| @itemx @code{texinfo-format-region} |
| Format the current region for Info. |
| |
| @findex texinfo-format-buffer |
| @item C-c C-e C-b |
| @itemx @code{texinfo-format-buffer} |
| Format the current buffer for Info. |
| @end table |
| |
| The @code{texinfo-format-region} and @code{texinfo-format-buffer} |
| commands provide you with some error checking, and other functions can |
| provide you with further help in finding formatting errors. These |
| procedures are described in an appendix; see @ref{Catching Mistakes}. |
| However, the @command{texi2any} program provides better error checking |
| (@pxref{@command{texi2any} in Emacs}). |
| |
| A peculiarity of the @code{texinfo-format-buffer} and |
| @code{texinfo-format-region} commands is that they do not indent (nor |
| fill) paragraphs that contain @code{@@w} or @code{@@*} commands. |
| |
| |
| @node Printing with Emacs |
| @nodedescription How to format with @TeX{} and print with Emacs. |
| @section Formatting and Printing with Emacs |
| |
| GNU Emacs can be used for formatting and printing with @TeX{}, |
| from an Emacs Shell. Texinfo mode also provides predefined |
| key commands for formatting and printing. |
| |
| |
| @node Texinfo Mode Printing |
| @nodedescription How to format and print part or all of a file. |
| @subsection Formatting and Printing in Texinfo Mode |
| @cindex Region printing in Texinfo mode |
| @cindex Format and print in Texinfo mode |
| @cindex Print and format in Texinfo mode |
| |
| Texinfo mode provides several predefined key commands for @TeX{} |
| formatting and printing. These include commands for sorting indices, |
| looking at the printer queue, killing the formatting job, and |
| recentering the display of the buffer in which the operations |
| occur. |
| |
| @cindex Printing a region or buffer |
| @cindex Region formatting and printing |
| @cindex Buffer formatting and printing |
| @cindex Part of file formatting and printing |
| 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 |
| @code{texinfo-tex-region} and related commands for this purpose. Use |
| the @code{texinfo-tex-buffer} command to format all of a |
| buffer. |
| |
| For @code{texinfo-tex-region} or @code{texinfo-tex-buffer} to work, the |
| file @emph{must} start with a @samp{\input texinfo} line and must |
| include a @code{@@settitle} line. The file must end with @code{@@bye} |
| on a line by itself. (When you use @code{texinfo-tex-region}, you must |
| surround the @code{@@settitle} line with start-of-header and |
| end-of-header lines.) |
| |
| @table @kbd |
| @findex texinfo-tex-buffer |
| @item C-c C-t C-b |
| @itemx M-x texinfo-tex-buffer |
| Run @command{texi2dvi} on the buffer. In addition to running @TeX{} on the |
| buffer, this command automatically creates or updates indices as |
| needed. |
| |
| @item C-c C-t C-r |
| @itemx M-x texinfo-tex-region |
| Run @TeX{} on the current region. |
| |
| If @@-commands related to printed output are between the |
| start-of-header and end-of-header lines, then |
| @code{texinfo-tex-region} will format the |
| region accordingly. For example, if you write the @code{@@smallbook} command |
| between the start-of-header and end-of-header lines, @code{texinfo-tex-region}, |
| will format the region in ``small'' book size. |
| |
| @item C-c C-t C-i |
| @itemx M-x texinfo-texindex |
| Run @command{texindex} to sort the indices of a Texinfo file formatted with |
| @code{texinfo-tex-region}. The @code{texinfo-tex-region} command does |
| not run @command{texindex} automatically; it only runs the @command{tex} |
| typesetting command. You must run the @code{texinfo-tex-region} command |
| a second time after sorting the raw index files with the @command{texindex} |
| command. (Usually, you do not format an index when you format a region, |
| only when you format a buffer. Now that the @command{texi2dvi} command |
| exists, there is little or no need for this command.) |
| |
| @item C-c C-t C-p |
| @itemx M-x texinfo-tex-print |
| Print a DVI file that was made with @code{texinfo-tex-region} or |
| @code{texinfo-tex-buffer}. |
| |
| @item C-c C-t C-q |
| @itemx M-x tex-show-print-queue |
| Show the print queue. |
| |
| @item C-c C-t C-d |
| @itemx M-x texinfo-delete-from-print-queue |
| Delete a job from the print queue; you will be prompted for the job |
| number shown by a preceding @kbd{C-c C-t C-q} command |
| (@code{texinfo-show-tex-print-queue}). |
| |
| @item C-c C-t C-k |
| @itemx M-x tex-kill-job |
| Kill the currently running @TeX{} job started by either |
| @code{texinfo-tex-region} or @code{texinfo-tex-buffer}, or any other |
| process running in the Texinfo shell buffer. |
| |
| @item C-c C-t C-x |
| @itemx M-x texinfo-quit-job |
| Quit a @TeX{} formatting job that has stopped because of an error by |
| sending an @key{x} to it. When you do this, @TeX{} preserves a record |
| of what it did in a @file{.log} file. |
| |
| @item C-c C-t C-l |
| @itemx M-x tex-recenter-output-buffer |
| Redisplay the shell buffer in which the @TeX{} printing and formatting |
| commands are run to show its most recent output. |
| @end table |
| |
| @need 1000 |
| Thus, the usual sequence of commands for formatting a buffer is as |
| follows (with comments to the right): |
| |
| @example |
| @group |
| C-c C-t C-b @r{Run @command{texi2dvi} on the buffer.} |
| C-c C-t C-p @r{Print the DVI file.} |
| C-c C-t C-q @r{Display the printer queue.} |
| @end group |
| @end example |
| |
| The Texinfo mode @TeX{} formatting commands start a subshell in Emacs |
| called the @file{*tex-shell*}. The @code{texinfo-tex-command}, |
| @code{texinfo-texindex-command}, and @code{tex-dvi-print-command} |
| commands are all run in this shell. |
| |
| You can watch the commands operate in the @samp{*tex-shell*} buffer, |
| and you can switch to and from and use the @samp{*tex-shell*} buffer |
| as you would any other shell buffer. |
| |
| @need 1500 |
| The formatting and print commands depend on the values of several variables. |
| The default values are: |
| |
| @example |
| @group |
| @r{Variable} @r{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" |
| @end group |
| @end example |
| |
| You can change the values of these variables with the @kbd{M-x |
| set-variable} command (@pxref{Examining, , Examining and Setting |
| Variables, emacs, The GNU Emacs Manual}), or with your @file{.emacs} |
| initialization file (@pxref{Init File, , , emacs, The GNU Emacs |
| Manual}). |
| |
| @cindex Customize Emacs package (@t{Development/Docs/Texinfo}) |
| Beginning with version 20, GNU Emacs offers a user-friendly interface, |
| called @dfn{Customize}, for changing values of user-definable variables. |
| @xref{Easy Customization, , Easy Customization Interface, emacs, The GNU |
| Emacs Manual}, for more details about this. The Texinfo variables can |
| be found in the @samp{Development/Docs/Texinfo} group, once you invoke |
| the @kbd{M-x customize} command. |
| |
| |
| @node Compile-Command |
| @nodedescription How to print using Emacs's compile command. |
| @subsection Using the Local Variables List |
| @cindex Local variables |
| @cindex Compile command for formatting |
| @cindex Format with the compile command |
| |
| Yet another way to apply the @TeX{} formatting command to a Texinfo file |
| is to put that command in a @dfn{local variables list} at the end of the |
| Texinfo file. You can then specify the @command{tex} or @command{texi2dvi} |
| commands as a @code{compile-command} and have Emacs run it by typing |
| @kbd{M-x compile}. This creates a special shell called the |
| @file{*compilation*} buffer in which Emacs runs the compile command. |
| For example, at the end of the @file{gdb.texi} file, after the |
| @code{@@bye}, you could put the following: |
| |
| @example |
| @group |
| Local Variables: |
| compile-command: "texi2dvi gdb.texi" |
| End: |
| @end group |
| @end example |
| |
| @noindent |
| This technique is most often used by programmers who also compile programs |
| this way; see @ref{Compilation, , , emacs, The GNU Emacs Manual}. |
| |
| |
| |
| |
| @node Texinfo Mode Summary |
| @nodedescription Summary of all the Texinfo mode commands. |
| @section Texinfo Mode Summary |
| |
| In Texinfo mode, each set of commands has default keybindings that |
| begin with the same keys. All the commands that are custom-created |
| for Texinfo mode begin with @kbd{C-c}. The keys are somewhat |
| mnemonic. |
| |
| @subheading Insert Commands |
| |
| The insert commands are invoked by typing @kbd{C-c} twice and then the |
| first letter of the @@-command to be inserted. (It might make more |
| sense mnemonically to use @kbd{C-c C-i}, for `custom insert', but |
| @kbd{C-c C-c} is quick to type.) |
| |
| @example |
| C-c C-c c @r{Insert} @samp{@@code}. |
| C-c C-c d @r{Insert} @samp{@@dfn}. |
| C-c C-c e @r{Insert} @samp{@@end}. |
| C-c C-c i @r{Insert} @samp{@@item}. |
| C-c C-c n @r{Insert} @samp{@@node}. |
| C-c C-c s @r{Insert} @samp{@@samp}. |
| C-c C-c v @r{Insert} @samp{@@var}. |
| C-c @{ @r{Insert braces.} |
| C-c ] |
| C-c @} @r{Move out of enclosing braces.} |
| |
| @group |
| C-c C-c C-d @r{Insert a node's section title} |
| @r{in the space for the description} |
| @r{in a menu entry line.} |
| @end group |
| @end example |
| |
| @subheading Show Structure |
| |
| The @code{texinfo-show-structure} command is often used within a |
| narrowed region. |
| |
| @example |
| C-c C-s @r{List all the headings.} |
| @end example |
| |
| @subheading The Master Update Command |
| |
| The @code{texinfo-master-menu} command creates a master menu; and can |
| be used to update every node and menu in a file as well. |
| |
| @c Probably should use @tables in this section. |
| @example |
| @group |
| C-c C-u m |
| M-x texinfo-master-menu |
| @r{Create or update a master menu.} |
| @end group |
| |
| @group |
| C-u C-c C-u m @r{With @kbd{C-u} as a prefix argument, first} |
| @r{create or update all nodes and regular} |
| @r{menus, and then create a master menu.} |
| @end group |
| @end example |
| |
| @subheading Update Pointers |
| |
| The update pointer commands are invoked by typing @kbd{C-c C-u} and |
| then either @kbd{C-n} for @code{texinfo-update-node} or @kbd{C-e} for |
| @code{texinfo-every-node-update}. |
| |
| @example |
| C-c C-u C-n @r{Update a node.} |
| C-c C-u C-e @r{Update every node in the buffer.} |
| @end example |
| |
| @subheading Update Menus |
| |
| Invoke the update menu commands by typing @kbd{C-c C-u} |
| and then either @kbd{C-m} for @code{texinfo-make-menu} or |
| @kbd{C-a} for @code{texinfo-all-menus-update}. To update |
| both nodes and menus at the same time, precede @kbd{C-c C-u |
| C-a} with @kbd{C-u}. |
| |
| @example |
| C-c C-u C-m @r{Make or update a menu.} |
| |
| @group |
| C-c C-u C-a @r{Make or update all} |
| @r{menus in a buffer.} |
| @end group |
| |
| @group |
| C-u C-c C-u C-a @r{With @kbd{C-u} as a prefix argument,} |
| @r{first create or update all nodes and} |
| @r{then create or update all menus.} |
| @end group |
| @end example |
| |
| @subheading Format for Info |
| |
| The Info formatting commands that are written in Emacs Lisp are |
| invoked by typing @kbd{C-c C-e} and then either @kbd{C-r} for a region |
| or @kbd{C-b} for the whole buffer. |
| |
| The Info formatting commands that are based on the |
| @command{texi2any}/@command{makeinfo} program are invoked by typing |
| @kbd{C-c C-m} and then either @kbd{C-r} for a region or @kbd{C-b} for |
| the whole buffer. |
| |
| @need 800 |
| @noindent |
| Use the @code{texinfo-format@dots{}} commands: |
| |
| @example |
| @group |
| C-c C-e C-r @r{Format the region.} |
| C-c C-e C-b @r{Format the buffer.} |
| @end group |
| @end example |
| |
| @need 750 |
| @noindent |
| Use @command{texi2any}/@command{makeinfo}: |
| |
| @example |
| C-c C-m C-r @r{Format the region.} |
| C-c C-m C-b @r{Format the buffer.} |
| C-c C-m C-l @r{Recenter the @command{texi2any} output buffer.} |
| C-c C-m C-k @r{Kill the @command{texi2any} formatting job.} |
| @end example |
| |
| @subheading Typeset and Print |
| |
| The @TeX{} typesetting and printing commands are invoked by typing |
| @kbd{C-c C-t} and then another control command: @kbd{C-r} for |
| @code{texinfo-tex-region}, @kbd{C-b} for @code{texinfo-tex-buffer}, |
| and so on. |
| |
| @example |
| C-c C-t C-r @r{Run @TeX{} on the region.} |
| C-c C-t C-b @r{Run} @command{texi2dvi} @r{on the buffer.} |
| C-c C-t C-i @r{Run} @command{texindex}. |
| C-c C-t C-p @r{Print the DVI file.} |
| C-c C-t C-q @r{Show the print queue.} |
| C-c C-t C-d @r{Delete a job from the print queue.} |
| C-c C-t C-k @r{Kill the current @TeX{} formatting job.} |
| C-c C-t C-x @r{Quit a currently stopped @TeX{} formatting job.} |
| C-c C-t C-l @r{Recenter the output buffer.} |
| @end example |
| |
| @subheading Other Updating Commands |
| |
| The remaining updating commands do not have standard keybindings because |
| they are rarely used. |
| |
| @example |
| @group |
| M-x texinfo-insert-node-lines |
| @r{Insert missing @code{@@node} lines in region.} |
| @r{With @kbd{C-u} as a prefix argument,} |
| @r{use section titles as node names.} |
| @end group |
| |
| @group |
| M-x texinfo-multiple-files-update |
| @r{Update a multi-file document.} |
| @r{With @kbd{C-u 2} as a prefix argument,} |
| @r{create or update all nodes and menus} |
| @r{in all included files first.} |
| @end group |
| |
| @group |
| M-x texinfo-indent-menu-description |
| @r{Indent descriptions.} |
| @end group |
| |
| @group |
| M-x texinfo-sequential-node-update |
| @r{Insert node pointers in strict sequence.} |
| @end group |
| @end example |
| |
| |
| @node Formatting Info files |
| @nodedescription Processing directly Info files. |
| @section Direct Formatting of Info files |
| |
| @cindex Direct formatting of Info files |
| In general, there is no need to edit or process Info files. Most of the |
| content of Info file is plain text, but the tag tables require computing |
| offsets for nodes and indirect files (@pxref{Tag and Split Files}), which is |
| impractical. The Texinfo processors output well-formatted Info from Texinfo |
| input. Also, lot of information from the Texinfo source is lost in the Info |
| file. The Texinfo source is therefore more suitable to analyse a manual, be it |
| for error reporting, for statistics, or to set up translations. |
| |
| Still, especially with manually written Info files, there are some situations |
| where it may be interesting to process Info files directly, in particular |
| to compute Info files node offsets and to compute split Info files file |
| offsets. Two Emacs commands do that. @code{Info-tagify} adds a tag table |
| for a nonsplit file lacking one. This function is also useful for Info |
| file validation (@pxref{Running @code{Info-validate}}). It is |
| also possible to split a nonsplit Info file with @code{Info-split}. |
| |
| |
| @node Tagifying |
| @nodedescription How to tagify a file. |
| @subsection Tagifying a File |
| @cindex Making a tag table manually |
| @cindex Tag table, making manually |
| @cindex Info files @subentry making a tag table |
| |
| Texinfo processors create tag tables automatically. The only exception |
| arise when @code{texinfo-format-buffer} is called with a prefix, as |
| @kbd{C-u M-x texinfo-format-buffer}, to create an non split Info |
| file without a tag table (which can be useful in some cases for Info file |
| validation, @pxref{Unsplit and Tagify}). Adding a tag table is therefore |
| more generally useful for manually written Info files. |
| |
| To create a tag table for an nonsplit file, visit the Info file you |
| wish to tagify and type: |
| |
| @example |
| M-x Info-tagify |
| @end example |
| |
| @noindent |
| (Note the uppercase @samp{I} in @code{Info-tagify}.) This creates an |
| Info file with a tag table. A tag table is part of a well formed Info |
| file (@pxref{Tag and Split Files}). A tag table is also needed to validate |
| or split the Info file. |
| |
| |
| @node Splitting |
| @nodedescription How to split a file manually. |
| @subsection Splitting a File Manually |
| @cindex Splitting an Info file manually |
| @cindex Info files @subentry splitting manually |
| |
| You should split a large file or else let the |
| @code{texinfo-format-buffer} or @code{makeinfo-buffer} command do it |
| for you automatically. (Generally you will let one of the formatting |
| commands do this job for you. @xref{Info Formatting}.) |
| |
| The split-off files are called the indirect subfiles. |
| |
| Tag tables are created automatically by the formatting command; |
| you only need to create a tag table yourself if you are doing |
| the job manually. @xref{Tagifying}, for information about |
| creating a tag table. |
| |
| Visit the Info file you wish to tagify and split manually and type the |
| two commands: |
| |
| @example |
| M-x Info-tagify |
| M-x Info-split |
| @end example |
| |
| @noindent |
| (Note that the @samp{I} in @samp{Info} is uppercase.) |
| |
| When you use the @code{Info-split} command, the buffer is modified into a |
| (small) Info file which lists the indirect subfiles. This file should be |
| saved in place of the original visited file. The indirect subfiles are |
| written in the same directory the original file is in, with names generated |
| by appending @samp{-} and a number to the original file name. |
| |
| The primary file still functions as an Info file, but it contains just |
| the tag table and a directory of subfiles. @xref{Tag and Split Files}. |
| |
| |
| @node Catching Mistakes |
| @nodedescription How to find mistakes in formatting. |
| @section Catching Mistakes |
| @cindex Structure, catching mistakes in |
| @cindex Nodes, catching mistakes |
| @cindex Catching mistakes |
| @cindex Correcting mistakes |
| @cindex Mistakes, catching |
| @cindex Problems, catching |
| @cindex Debugging the Texinfo structure |
| |
| 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. |
| |
| For finding problems with @@-commands, you can run @TeX{} or a region |
| formatting command 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 |
| @kbd{C-c C-s} (@code{texinfo-show-structure}) and the related @code{occur} |
| command and you can use the @kbd{M-x Info-validate} command. |
| |
| |
| @node @command{texi2any} Preferred |
| @nodedescription @command{texi2any} finds errors. |
| @subsection @command{texi2any} Preferred |
| |
| @c anchor{makeinfo Preferred}@c prev name |
| @anchor{@code{makeinfo} Preferred}@c prev name |
| |
| The @command{texi2any} program does an excellent job of catching errors |
| and reporting them---far better than @code{texinfo-format-region} or |
| @code{texinfo-format-buffer}. In addition, the various functions for |
| automatically creating and updating node pointers and menus remove |
| many opportunities for human error. |
| |
| Use @command{texi2any} (or its Texinfo mode manifestations, |
| @code{makeinfo-region} and @code{makeinfo-buffer}) to format your |
| file and check for other errors. This is the best way to work with |
| Texinfo. But if you cannot use @command{texi2any}, or your problem |
| is very puzzling, then you may want to use the tools described |
| in this section. |
| |
| |
| @node Debugging with Info |
| @nodedescription How to catch errors with Info formatting. |
| @subsection Catching Errors with Info Formatting |
| @cindex Catching errors with Info formatting |
| @cindex Debugging with Info formatting |
| |
| After you have written part of a Texinfo file, you can use the |
| @code{texinfo-format-region} or the @code{makeinfo-region} command to |
| see whether the region formats properly. |
| |
| Most likely, however, you are reading this section because for some |
| reason you cannot use the @code{makeinfo-region} command; therefore, the |
| rest of this section presumes that you are using |
| @code{texinfo-format-region}. |
| |
| If you have made a mistake with an @@-command, |
| @code{texinfo-format-region} will stop processing at or after the |
| error and display an error message. To see where in the buffer the |
| error occurred, switch to the @samp{*Info Region*} buffer; the cursor |
| will be in a position that is after the location of the error. Also, |
| the text will not be formatted after the place where the error |
| occurred (or more precisely, where it was detected). |
| |
| For example, if you accidentally end a menu with the command @code{@@end |
| menus} with an `s' on the end, instead of with @code{@@end menu}, you |
| will see an error message that says: |
| |
| @example |
| @@end menus is not handled by texinfo |
| @end example |
| |
| @noindent |
| The cursor will stop at the point in the buffer where the error |
| occurs, or not long after it. The buffer will look like this: |
| |
| @example |
| @group |
| ---------- Buffer: *Info Region* ---------- |
| * Menu: |
| |
| * Using texinfo-show-structure:: How to use |
| `texinfo-show-structure' |
| to catch mistakes. |
| * Running Info-validate:: How to check for |
| unreferenced nodes. |
| @@end menus |
| @point{} |
| ---------- Buffer: *Info Region* ---------- |
| @end group |
| @end example |
| |
| The @code{texinfo-format-region} command sometimes provides slightly |
| odd error messages. For example, the following cross-reference fails |
| to format: |
| |
| @example |
| (@@xref@{Catching Mistakes, for more info.) |
| @end example |
| |
| @noindent |
| In this case, @code{texinfo-format-region} detects the missing closing |
| brace but displays a message that says @samp{Unbalanced parentheses} |
| rather than @samp{Unbalanced braces}. This is because the formatting |
| command looks for mismatches between braces as if they were |
| parentheses. |
| |
| Sometimes @code{texinfo-format-region} fails to detect mistakes. For |
| example, in the following, the closing brace is swapped with the |
| closing parenthesis: |
| |
| @example |
| (@@xref@{Catching Mistakes), for more info.@} |
| @end example |
| |
| @noindent |
| Formatting produces: |
| @example |
| (*Note for more info.: Catching Mistakes) |
| @end example |
| |
| The only way for you to detect this error is to realize that the |
| reference should have looked like this: |
| |
| @example |
| (*Note Catching Mistakes::, for more info.) |
| @end example |
| |
| Incidentally, if you are reading this node in Info and type @kbd{f |
| @key{RET}} (@code{Info-follow-reference}), you will generate an error |
| message that says: |
| |
| @example |
| No such node: "Catching Mistakes) The only way @dots{} |
| @end example |
| |
| @noindent |
| This is because Info perceives the example of the error as the first |
| cross-reference in this node and if you type a @key{RET} immediately |
| after typing the Info @kbd{f} command, Info will attempt to go to the |
| referenced node. If you type @kbd{f catch @key{TAB} @key{RET}}, Info |
| will complete the node name of the correctly written example and take |
| you to the `Catching Mistakes' node. (If you try this, you can return |
| from the `Catching Mistakes' node by typing @kbd{l} |
| (@code{Info-last}).) |
| |
| |
| @node Debugging with @TeX{} |
| @nodedescription How to catch errors with @TeX{} formatting. |
| @subsection Debugging with @TeX{} |
| @cindex Catching errors with @TeX{} formatting |
| @cindex Debugging with @TeX{} formatting |
| |
| You can also catch mistakes when you format a file with @TeX{}. |
| |
| Usually, you will want to do this after you have run |
| @code{texinfo-format-buffer} (or, better, @code{makeinfo-buffer}) on |
| the same file, because @code{texinfo-format-buffer} sometimes displays |
| error messages that make more sense than @TeX{}. (@xref{Debugging |
| with Info}, for more information.) |
| |
| For example, @TeX{} was run on a Texinfo file, part of which is shown |
| here: |
| |
| @example |
| ---------- Buffer: texinfo.texi ---------- |
| name of the Texinfo file as an extension. The |
| @@samp@{??@} are `wildcards' that cause the shell to |
| substitute all the raw index files. (@@xref@{sorting |
| indices, for more information about sorting |
| indices.) |
| ---------- Buffer: texinfo.texi ---------- |
| @end example |
| |
| @noindent |
| (The cross-reference lacks a closing brace.) |
| @TeX{} produced the following output, after which it stopped: |
| |
| @example |
| ---------- Buffer: *tex-shell* ---------- |
| Runaway argument? |
| @{sorting indices, for more information about sorting |
| indices.) @@ETC. |
| ! Paragraph ended before @@xref was complete. |
| <to be read again> |
| @@par |
| l.27 |
| |
| ? |
| ---------- Buffer: *tex-shell* ---------- |
| @end example |
| |
| In this case, @TeX{} produced an accurate and |
| understandable error message: |
| |
| @example |
| Paragraph ended before @@xref was complete. |
| @end example |
| |
| @noindent |
| @samp{@@par} is an internal @TeX{} command of no relevance to Texinfo. |
| @samp{l.27} means that @TeX{} detected the problem on line 27 of the |
| Texinfo file. The @samp{?} 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. |
| |
| @enumerate |
| @item |
| You can tell @TeX{} to continue running and ignore just this error by |
| typing @key{RET} at the @samp{?} prompt. |
| |
| @item |
| You can tell @TeX{} to continue running and to ignore all errors as best |
| it can by typing @kbd{r @key{RET}} at the @samp{?} 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 @kbd{C-c} (or |
| @kbd{C-c C-c}, if you are running a shell inside Emacs). |
| |
| @item |
| You can tell @TeX{} to stop this run by typing @kbd{x @key{RET}} |
| at the @samp{?} prompt. |
| @end enumerate |
| |
| If you are running @TeX{} inside Emacs, you need to switch to the shell |
| buffer and line at which @TeX{} offers the @samp{?} 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 @code{@@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: |
| |
| @example |
| (@@end occurred inside a group at level 1) |
| @end example |
| |
| @noindent |
| 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 @code{@@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 |
| @code{@@end group} command. If you ever are stumped by |
| incomprehensible errors, look for a missing @code{@@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 @samp{*} indicates that @TeX{} is waiting for input. |
| |
| @example |
| This is TeX, Version 3.14159 (Web2c 7.0) |
| (test.texinfo [1]) |
| * |
| @end example |
| |
| @noindent |
| In this case, simply type @kbd{\end @key{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, @samp{\}. @TeX{} uses @samp{\} |
| instead of @samp{@@}; and in this circumstance, you are working |
| directly with @TeX{}, not with Texinfo.) |
| |
| |
| @node Running @code{Info-validate} |
| @nodedescription How to find badly referenced nodes. |
| @subsection Finding Badly Referenced Nodes |
| |
| @anchor{Running Info-Validate}@c old name |
| @findex Info-validate |
| @cindex Nodes, checking for badly referenced |
| @cindex Checking for badly referenced nodes |
| @cindex Looking for badly referenced nodes |
| @cindex Finding badly referenced nodes |
| @cindex Badly referenced nodes |
| |
| You can use the @code{Info-validate} command to check whether any of |
| the `Next', `Previous', `Up' or other node pointers fail to point to a |
| node. This command checks that every node pointer points to an |
| existing node. The @code{Info-validate} command works only on Info |
| files, not on Texinfo files. |
| |
| The @command{texi2any} program validates pointers automatically, so you |
| do not need to use the @code{Info-validate} command if you are using |
| @command{texi2any}. With the customization variable |
| @code{CHECK_NORMAL_MENU_STRUCTURE} set, @command{texi2any} will also |
| warn if the nodes pointers (either explicitly or automatically set) |
| are not consistent with the order of node menu entries. |
| @command{texi2any} does not check that every `Next' pointer is matched |
| by a `Previous' (in the node where the `Next' points) which points back, |
| since it may be correct for a non standard document structure. |
| |
| You only may need to use @code{Info-validate} if you |
| are unable to run @command{texi2any} and instead must create an Info file |
| using @code{texinfo-format-region} or @code{texinfo-format-buffer}, or |
| if you write an Info file from scratch. |
| |
| |
| @node Using @code{Info-validate} |
| @nodedescription How to run @code{Info-validate}. |
| @subsubsection Using @code{Info-validate} |
| |
| @cindex Using @code{Info-validate} |
| @cindex Info validating a large file |
| @cindex Validating a large file |
| |
| To use @code{Info-validate}, visit the Info file you wish to check and |
| type: |
| |
| @example |
| M-x Info-validate |
| @end example |
| |
| @noindent |
| Note that the @code{Info-validate} command requires an uppercase |
| `I'@. You may also need to create a tag table before running |
| @code{Info-validate}. @xref{Tagifying}. |
| |
| If your file is valid, you will receive a message that says ``File appears |
| valid''. However, if you have a pointer that does not point to a node, |
| error messages will be displayed in a buffer called @samp{*problems in |
| info file*}. |
| |
| For example, @code{Info-validate} was run on a test file that contained |
| only the first node of this manual. One of the messages said: |
| |
| @example |
| In node "Overview", invalid Next: Texinfo Mode |
| @end example |
| |
| @noindent |
| This meant that the node called @samp{Overview} had a `Next' pointer that |
| did not point to anything (which was true in this case, since the test file |
| had only one node in it). |
| |
| Now suppose we add a node named @samp{Texinfo Mode} to our test case |
| but we do not specify a `Previous' for this node. Then we will get |
| the following error message: |
| |
| @example |
| In node "Texinfo Mode", should have Previous: Overview |
| @end example |
| |
| @noindent |
| This is because, with a standard document structure, every `Next' pointer |
| should be matched by a `Previous' (in the node where the `Next' points) |
| which points back. |
| |
| @code{Info-validate} also checks that all menu entries and cross-references |
| point to actual nodes. |
| |
| @code{Info-validate} requires a tag table and does not work with files |
| that have been split. (The @code{texinfo-format-buffer} command |
| automatically splits large files.) In order to use @code{Info-validate} |
| on a large file, you must run @code{texinfo-format-buffer} with an |
| argument so that it does not split the Info file; and you must create a |
| tag table for the unsplit file. |
| |
| |
| @node Unsplit and Tagify |
| @nodedescriptionblock |
| How to create an unsplit file and add a tag table for validation. |
| @end nodedescriptionblock |
| @subsubsection Creating an Unsplit File and Adding a Tag Table |
| @anchor{Unsplit} @c old name |
| |
| @cindex Creating an unsplit file |
| @cindex Unsplit file creation |
| |
| You can run @code{Info-validate} only on a single Info file that has a |
| tag table. The command will not work on the indirect subfiles that |
| are generated when a master file is split. If you have a large file |
| (longer than 300,000 bytes or so), you need to run the |
| @code{texinfo-format-buffer} or @code{makeinfo-buffer} command in such |
| @c FIXME probably always a tag table with makeinfo-buffer? |
| a way that it does not create indirect subfiles. You will also need |
| to create a tag table for the Info file. After you have done this, |
| you can run @code{Info-validate} and look for badly referenced |
| nodes. |
| |
| The first step is to create an unsplit Info file. To prevent |
| @code{texinfo-format-buffer} from splitting a Texinfo file into |
| smaller Info files, give a prefix to the @kbd{M-x |
| texinfo-format-buffer} command: |
| |
| @example |
| C-u M-x texinfo-format-buffer |
| @end example |
| |
| @noindent |
| or else |
| |
| @example |
| C-u C-c C-e C-b |
| @end example |
| |
| @noindent |
| When you do this, @code{texinfo-format-buffer} will not split the file and will |
| not create a tag table for it. |
| |
| After creating an unsplit Info file, you must create a tag table for |
| it (@pxref{Tagifying}). Visit the unsplit Info file created by |
| @code{texinfo-format-buffer} and type: |
| |
| @example |
| M-x Info-tagify |
| @end example |
| |
| The third step is to validate the Info file: |
| |
| @example |
| M-x Info-validate |
| @end example |
| |
| @noindent |
| (Note the uppercase @samp{I} in @code{Info-validate}.) |
| In brief, the steps are: |
| |
| @example |
| @group |
| C-u M-x texinfo-format-buffer |
| M-x Info-tagify |
| M-x Info-validate |
| @end group |
| @end example |
| |
| After you have validated the node structure, you can rerun |
| @code{texinfo-format-buffer} in the normal way so it will construct a |
| tag table and split the file automatically, or you can make the tag |
| table and split the file manually (@pxref{Splitting}). |
| |
| |
| @node Batch Formatting |
| @nodedescription How to format for Info in Emacs batch mode. |
| @section Batch Formatting |
| @cindex Batch formatting for Info |
| @cindex Info batch formatting |
| |
| You can format Texinfo files for Info using @code{batch-texinfo-format} |
| and Emacs batch mode. You can run Emacs in batch mode from any shell, |
| including a shell inside of Emacs. (@xref{Initial Options,,, |
| emacs, The GNU Emacs Manual}.) |
| |
| Here is a shell command to format all the files that end in |
| @file{.texinfo} in the current directory: |
| |
| @example |
| emacs -batch -funcall batch-texinfo-format *.texinfo |
| @end example |
| |
| @noindent |
| Emacs processes all the files listed on the command line, even if an |
| error occurs while attempting to format some of them. |
| |
| Run @code{batch-texinfo-format} only with Emacs in batch mode as shown; |
| it is not interactive. It kills the batch mode Emacs on completion. |
| |
| @code{batch-texinfo-format} is convenient if you lack @command{texi2any} |
| and want to format several Texinfo files at once. When you use Batch |
| mode, you create a new Emacs process. This frees your current Emacs, so |
| you can continue working in it. (When you run |
| @code{texinfo-format-region} or @code{texinfo-format-buffer}, you cannot |
| use that Emacs for anything else until the command finishes.) |
| |
| |
| @node Global Document Commands |
| @nodedescription Affecting formatting throughout. |
| @appendix Global Document Commands |
| @cindex Global Document Commands |
| |
| Here are additional commands which affect the document as a whole. Most |
| of these commands are for customizing the appearance of the printed output. |
| They are generally all given before the Top node, if they are given at all. |
| |
| |
| @node @code{@@setchapternewpage} |
| @nodedescription Start chapters on right-hand pages. |
| @section @code{@@setchapternewpage}: Blank Pages Before Chapters |
| |
| @anchor{setchapternewpage}@c old name |
| @findex setchapternewpage |
| @cindex Starting chapters |
| @cindex Pages, starting odd |
| |
| In an officially bound book, text is usually printed on both sides of |
| the paper, chapters start on right-hand pages, and right-hand pages have |
| odd numbers. But in short reports, text often is printed only on one |
| side of the paper. Also in short reports, chapters sometimes do not |
| start on new pages, but are printed on the same page as the end of the |
| preceding chapter, after a small amount of vertical whitespace. |
| |
| You can use the @code{@@setchapternewpage} command with various |
| arguments to specify how chapters should be started in printed output |
| and whether headers should be formatted for printing on one or both sides of |
| the paper (single-sided or double-sided printing). |
| |
| Write the @code{@@setchapternewpage} command at the beginning of a |
| line followed by its argument. For example, you would write the |
| following to cause each chapter to start on a fresh odd-numbered page: |
| |
| @example |
| @@setchapternewpage odd |
| @end example |
| |
| You can specify one of three alternatives with the |
| @code{@@setchapternewpage} command: |
| |
| @table @asis |
| |
| @item @code{@@setchapternewpage off} |
| Typeset a new chapter on the same page as the last chapter, after |
| skipping some vertical whitespace. Also, format page headers for |
| single-sided printing. |
| |
| @item @code{@@setchapternewpage on} |
| Start new chapters on new pages and format page headers for |
| single-sided printing. This is the form most often used for short |
| reports or personal printing. This is the default. |
| |
| @item @code{@@setchapternewpage odd} |
| Start new chapters on new, odd-numbered pages (right-handed pages) |
| and typeset for double-sided printing. This is the form most often |
| used for books and manuals. |
| @end table |
| |
| Texinfo does not have a @code{@@setchapternewpage even} command, |
| because there is no printing tradition of starting chapters or books on |
| an even-numbered page. |
| |
| If you don't like the default headers that @code{@@setchapternewpage} |
| sets, you can explicit control them with the @code{@@headings} command. |
| @xref{@code{@@headings}}. |
| |
| 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 front matter pages are numbered with |
| roman numerals and not in sequence with the rest of the document. |
| |
| The @code{@@setchapternewpage} has no effect in output formats that do |
| not have pages, such as Info and HTML. |
| |
| We recommend not including any @code{@@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 @option{--texinfo} option to @command{texi2dvi} to |
| specify the output you want. |
| |
| |
| @node Headings |
| @section Page Headings |
| @nodedescription Page headings. |
| @anchor{Headings Introduced}@c old name |
| @cindex Headings |
| @cindex Footings |
| @cindex Page numbering |
| @cindex Page headings |
| @cindex Formatting headings and footings |
| |
| Most printed manuals contain headings along the top of every page |
| except the title and copyright pages. Some manuals also contain |
| footings. @c HTML output also supports something like these, but in a |
| @c completely different way: @pxref{Customizing HTML Page Layout}. |
| Headings and footings have no meaning in Info or the other output |
| formats. |
| |
| Texinfo provides two standard heading formats, one for manuals printed |
| on one side of each sheet of paper, and the other for manuals printed |
| on both sides of the paper. |
| By default, nothing is specified for the footing of a Texinfo file, |
| so the footing remains blank. |
| |
| Texinfo also has several heading and footing commands that you |
| can use to generate your own heading and footing formats. |
| |
| In Texinfo, headings and footings are single lines at the tops and |
| bottoms of pages; you cannot create multiline headings or footings. |
| Each header or footer line is divided into three parts: a left part, a |
| middle part, and a right part. Any part, or a whole line, may be left |
| blank. Text for the left part of a header or footer line is set |
| flushleft; text for the middle part is centered; and text for the |
| right part is set flushright. |
| |
| |
| @node @code{@@headings} |
| @nodedescriptionblock |
| An option for turning headings on and off and double or single sided printing. |
| @end nodedescriptionblock |
| @subsection The @code{@@headings} Command |
| |
| @anchor{headings on off}@c old name |
| @findex headings |
| |
| The @code{@@headings} command is rarely used. It specifies what kinds of |
| page headings and footings to print on each page. Usually, this is |
| controlled by the @code{@@setchapternewpage} command. You need the |
| @code{@@headings} command only if the @code{@@setchapternewpage} command |
| does not do what you want. |
| |
| You can use @code{@@headings} as follows: |
| |
| @table @code |
| @item @@headings off |
| Turn off printing of page headings. |
| |
| @item @@headings single |
| Turn on page headings appropriate for single-sided printing. |
| |
| @item @@headings double |
| Turn on page headings appropriate for double-sided printing. |
| |
| @item @@headings singleafter |
| @itemx @@headings doubleafter |
| Turn on @code{single} or @code{double} headings, respectively, after the |
| current page is output. |
| |
| @item @@headings on |
| Turn on page headings: @code{single} if @samp{@@setchapternewpage |
| on}, @code{double} otherwise. |
| @end table |
| |
| For example, suppose you write @code{@@setchapternewpage off} before the |
| @code{@@titlepage} command to start a new chapter on the |
| same page as the end of the last chapter. This command also causes |
| page headers to be typeset for single-sided printing. To cause |
| page headers to be typeset for double-sided printing, write @code{@@headings |
| double}. |
| |
| You can stop any page headings at all from being generated by writing |
| @code{@@headings off} on a line of its own, like this: |
| |
| @example |
| @@headings off |
| @end example |
| |
| |
| @node Heading Format |
| @nodedescription Standard page heading formats. |
| @subsection Standard Heading Formats |
| |
| Texinfo provides two standard heading formats, one for manuals printed |
| on one side of each sheet of paper, and the other for manuals printed |
| on both sides of the paper. |
| |
| The standard format for single-sided printing consists of a header |
| line in which the left-hand part contains the name of the chapter, the |
| central part is blank, and the right-hand part contains the page |
| number. A single-sided page looks like this: |
| |
| @example |
| @group |
| _______________________ |
| | | |
| | chapter page number | |
| | | |
| | Start of text ... | |
| | ... | |
| | | |
| @end group |
| @end example |
| |
| 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 |
| @code{@@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. |
| An even-numbered page and an odd-numbered page, side by side as in an |
| open book, look like this: |
| |
| @example |
| @group |
| _______________________ _______________________ |
| | | | | |
| | page number title | | chapter page number | |
| | | | | |
| | Start of text ... | | More text ... | |
| | ... | | ... | |
| | | | | |
| @end group |
| @end example |
| |
| @noindent |
| 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. |
| |
| Note that on pages where a new chapter starts, some text may be omitted |
| from the heading line. |
| |
| @ignore |
| @c not germane to headings? we don't document \bindingoffset or \normaloffset |
| @c anywhere. |
| In double sided printing, @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.) |
| @end ignore |
| |
| By default, nothing is specified for the footing of a Texinfo file, |
| so the footing remains blank. |
| |
| |
| |
| @node Custom Headings |
| @nodedescription How to create your own headings and footings. |
| @subsection How to Make Your Own Headings |
| |
| You can use the standard headings provided with Texinfo or specify |
| your own. By default, Texinfo has no footers, so if you specify them, |
| the available page size for the main text will be slightly reduced. |
| |
| Texinfo provides six commands for specifying headings and |
| footings: |
| @itemize @bullet |
| @item |
| @code{@@everyheading} and @code{@@everyfooting} generate page headers and |
| footers that are the same for both even- and odd-numbered pages. |
| @item |
| @code{@@evenheading} and @code{@@evenfooting} commands generate headers |
| and footers for even-numbered (left-hand) pages. |
| @item |
| @code{@@oddheading} and @code{@@oddfooting} generate headers and footers |
| for odd-numbered (right-hand) pages. |
| @end itemize |
| |
| You must cancel the predefined heading commands with the |
| @code{@@headings off} command before defining your own specifications. |
| |
| @need 1000 |
| Here is how to place the chapter name at the left, the page number in |
| the center, and the date at the right of every header for both even- |
| and odd-numbered pages: |
| |
| @example |
| @group |
| @@headings off |
| @@everyheading @@thischapter @@| @@thispage @@| @@today@{@} |
| @end group |
| @end example |
| |
| @noindent |
| You need to divide the left part from the central part and the central |
| part from the right part by inserting @samp{@@|} between parts. |
| Otherwise, the specification command will not be able to tell where |
| the text for one part ends and the next part begins. |
| |
| Each part can contain text or @@-commands. The text is printed as if |
| the part were within an ordinary paragraph in the body of the page. |
| The @@-commands replace themselves with the page number, date, chapter |
| name, or whatever. |
| |
| @need 950 |
| Here are the six heading and footing commands: |
| |
| @table @code |
| @findex everyheading |
| @findex everyfooting |
| @item @@everyheading @var{left} @@| @var{center} @@| @var{right} |
| @itemx @@everyfooting @var{left} @@| @var{center} @@| @var{right} |
| The `every' commands specify the format for both even- and odd-numbered |
| pages. These commands are for documents that are printed on one side |
| of each sheet of paper, or for documents in which you want symmetrical |
| headers or footers. |
| |
| @findex evenheading |
| @findex evenfooting |
| @findex oddheading |
| @findex oddfooting |
| @item @@evenheading @var{left} @@| @var{center} @@| @var{right} |
| @itemx @@oddheading @var{left} @@| @var{center} @@| @var{right} |
| @itemx @@evenfooting @var{left} @@| @var{center} @@| @var{right} |
| @itemx @@oddfooting @var{left} @@| @var{center} @@| @var{right} |
| The `even' and `odd' commands specify the format for even-numbered |
| pages and odd-numbered pages. These commands are for books and |
| manuals that are printed on both sides of each sheet of paper. |
| @end table |
| |
| Use the @samp{@@this@dots{}} series of @@-commands to |
| provide the names of chapters |
| and sections and the page number. You can use the |
| @samp{@@this@dots{}} commands in the left, center, or right portions |
| of headers and footers. |
| |
| @need 1000 |
| Here are the @samp{@@this@dots{}} commands: |
| |
| @table @code |
| @findex thispage |
| @item @@thispage |
| Expands to the current page number. |
| |
| @findex thissection |
| @item @@thissection |
| Expands to the number and name of the current section, in the format |
| `Section 1.1: Title'. |
| |
| @findex thissectionname |
| @item @@thissectionname |
| Expands to the name of the current section. |
| |
| @findex thissectionnum |
| @item @@thissectionnum |
| Expands to the number of the current section, in the format `1.1'. |
| |
| @findex thischapter |
| @item @@thischapter |
| Expands to the number and name of the current |
| chapter, in the format `Chapter 1: Title'. |
| |
| @findex thischaptername |
| @item @@thischaptername |
| Expands to the name of the current chapter. |
| |
| @findex thischapternum |
| @item @@thischapternum |
| Expands to the number of the current chapter, or letter of the current |
| appendix. |
| |
| @findex thispart |
| @item @@thispart |
| Expands to the name of the current part, as specified by the last |
| @code{@@part} command. |
| |
| @findex thistitle |
| @item @@thistitle |
| Expands to the name of the document, as specified by the |
| @code{@@settitle} command. |
| |
| @findex thisfile |
| @item @@thisfile |
| For @code{@@include} files only: expands to the name of the current |
| @code{@@include} file. If the current Texinfo source file is not an |
| @code{@@include} file, this command has no effect. This command does |
| @emph{not} provide the name of the current Texinfo source file unless |
| it is an @code{@@include} file. (@xref{Include Files}, for more |
| information about @code{@@include} files.) |
| @end table |
| |
| @noindent |
| You can also use the @code{@@today@{@}} command, which expands to the |
| current date, in `1 Jan 1900' format. |
| @findex today |
| |
| Other @@-commands and text are printed in a header or footer just as |
| if they were in the body of a page. It is useful to incorporate text, |
| particularly when you are writing drafts: |
| |
| @example |
| @group |
| @@headings off |
| @@everyheading @@emph@{Draft!@} @@| @@thispage @@| @@thischapter |
| @@everyfooting @@| @@| Version: 0.27: @@today@{@} |
| @end group |
| @end example |
| |
| Beware of overlong titles: they may overlap another part of the |
| header or footer and blot it out. |
| |
| If you have very short chapters and/or sections, several of them can |
| appear on a single page. You can specify which chapters and sections |
| you want @code{@@thischapter}, @code{@@thissection} and other such |
| macros to refer to on such pages as follows: |
| |
| @table @code |
| @findex everyheadingmarks |
| @findex everyfootingmarks |
| @item @@everyheadingmarks @var{ref} |
| @itemx @@everyfootingmarks @var{ref} |
| The @var{ref} argument can be either @code{top} (the @code{@@this...} |
| commands will refer to the chapter/section at the top of a page) or |
| @code{bottom} (the commands will reflect the situation at the bottom |
| of a page). These @samp{@@every...} commands specify what to do on |
| both even- and odd-numbered pages. |
| |
| @findex evenheadingmarks |
| @findex oddheadingmarks |
| @findex evenfootingmarks |
| @findex oddfootingmarks |
| @item @@evenheadingmarks @var{ref} |
| @itemx @@oddheadingmarks @var{ref} |
| @itemx @@evenfootingmarks @var{ref} |
| @itemx @@oddfootingmarks @var{ref} |
| These @samp{@@even...} and @samp{@@odd...} commands specify what to do |
| on only even- or odd-numbered pages, respectively. The @var{ref} |
| argument is the same as with the @samp{@@every...} commands. |
| @end table |
| |
| Write these commands immediately after the @code{@@...contents} |
| commands, or after the @code{@@end titlepage} command if you don't |
| have a table of contents or if it is printed at the end of your |
| manual. These commands have no effect in @LaTeX{}. |
| |
| By default, for @TeX{}, the @code{@@this...} commands reflect the situation at |
| the bottom of a page both in headings and in footings. |
| |
| |
| @node @code{@@paragraphindent} |
| @nodedescription Specify paragraph indentation. |
| @section @code{@@paragraphindent}: Controlling Paragraph Indentation |
| |
| @anchor{paragraphindent}@c old name |
| @findex paragraphindent |
| @cindex Indenting paragraphs, control of |
| @cindex Paragraph indentation control |
| |
| The Texinfo processors may insert whitespace at the beginning of the |
| first line of each paragraph, thereby indenting that paragraph. You can |
| use the @code{@@paragraphindent} command to specify this indentation. |
| Write a @code{@@paragraphindent} command at the beginning of a line |
| followed by either @samp{asis} or a number: |
| |
| @example |
| @@paragraphindent @var{indent} |
| @end example |
| |
| The indentation is according to the value of @var{indent}: |
| |
| @table @asis |
| @item @code{asis} |
| Do not change the existing indentation (not implemented in printed |
| output). |
| |
| @item @code{none} |
| @itemx 0 |
| Omit all indentation. |
| |
| @item @var{n} |
| Indent by @var{n} space characters in Info output, by @var{n} ems in |
| printed output. |
| |
| @end table |
| |
| The default value of @var{indent} is 3. @code{@@paragraphindent} is |
| ignored for HTML output. |
| |
| It is best to write the @code{@@paragraphindent} command before the |
| end-of-header line at the beginning of a Texinfo file, so the region |
| formatting commands indent paragraphs as specified. @xref{Start of |
| Header}. |
| |
| |
| @node @code{@@firstparagraphindent} |
| @nodedescription Suppressing first paragraph indentation. |
| @section @code{@@firstparagraphindent}: Indenting After Headings |
| |
| @anchor{firstparagraphindent}@c old name |
| @findex firstparagraphindent |
| @cindex First paragraph, suppressing indentation of |
| @cindex Suppressing first paragraph indentation |
| @cindex Preventing first paragraph indentation |
| @cindex Indenting, suppressing of first paragraph |
| @cindex Headings, indentation after |
| |
| As you can see in the present manual, the first paragraph in any |
| section is not indented by default. Typographically, indentation is a |
| paragraph separator, which means that it is unnecessary when a new |
| section begins. This indentation is controlled with the |
| @code{@@firstparagraphindent} command: |
| |
| @example |
| @@firstparagraphindent @var{word} |
| @end example |
| |
| The first paragraph after a heading is indented according to the value |
| of @var{word}: |
| |
| @table @asis |
| @item @code{none} |
| Prevents the first paragraph from being indented (default). |
| This option is ignored by @command{makeinfo} if |
| @code{@@paragraphindent asis} is in effect. |
| |
| @item @code{insert} |
| Include normal paragraph indentation. This respects the paragraph |
| indentation set by a @code{@@paragraphindent} command |
| (@pxref{@code{@@paragraphindent}}). |
| @end table |
| |
| @code{@@firstparagraphindent} is ignored for HTML and DocBook output. |
| |
| It is best to write the @code{@@firstparagraphindent} command before the |
| end-of-header line at the beginning of a Texinfo file, so the region |
| formatting commands indent paragraphs as specified. @xref{Start of |
| Header}. |
| |
| |
| @node @code{@@exampleindent} |
| @nodedescription Specify environment indentation. |
| @section @code{@@exampleindent}: Environment Indenting |
| |
| @anchor{exampleindent}@c old name |
| @findex exampleindent |
| @cindex Indenting environments |
| @cindex Environment indentation |
| @cindex Example indentation |
| |
| The Texinfo processors indent each line of @code{@@example} and similar |
| environments. You can use the @code{@@exampleindent} command to specify |
| this indentation. Write an @code{@@exampleindent} command at the |
| beginning of a line followed by either @samp{asis} or a number: |
| |
| @example |
| @@exampleindent @var{indent} |
| @end example |
| |
| The indentation is according to the value of @var{indent}: |
| |
| @table @asis |
| @item @code{asis} |
| Do not change the existing indentation (not implemented in printed |
| output). |
| |
| @item 0 |
| Omit all indentation. |
| |
| @item @var{n} |
| Indent environments by @var{n} space characters in Info output, by |
| @var{n} ems in printed output. |
| |
| @end table |
| |
| The default value of @var{indent} is 5 spaces in Info, and 0.4@dmn{in} |
| in printed output, which is somewhat less. (The reduction is to help |
| fit more characters onto physical lines in printed manuals.) |
| |
| It is best to write the @code{@@exampleindent} command before the |
| end-of-header line at the beginning of a Texinfo file, so the region |
| formatting commands indent paragraphs as specified. @xref{Start of |
| Header}. |
| |
| |
| @node @code{@@smallbook} |
| @nodedescription How to print small format books and manuals. |
| @section @code{@@smallbook}: Printing ``Small'' Books |
| |
| @anchor{smallbook}@c old name |
| @findex smallbook |
| @cindex Small book size |
| @cindex Book, printing small |
| @cindex Page sizes for books |
| @cindex Size of printed book |
| |
| By default, @TeX{} typesets pages for printing in an 8.5 by 11 inch |
| format, which is the ``letter'' size commonly used in the United States. |
| However, you can direct @TeX{} or @LaTeX{} to typeset a document in a |
| 7 by 9.25 inch format that is suitable for bound books by inserting the |
| following command on a line by itself at the beginning of the Texinfo file, |
| before the title page: |
| |
| @example |
| @@smallbook |
| @end example |
| |
| @noindent |
| (Since many books are about 7 by 9.25 inches, this command might better |
| have been called the @code{@@regularbooksize} command, but it came to be |
| called the @code{@@smallbook} command by comparison to the 8.5 by 11 |
| inch format.) |
| |
| @xref{Format with @command{texi2dvi} or @command{texi2pdf}}, |
| and @ref{Preparing for @TeX{}}, for other ways to format with |
| @code{@@smallbook} with @TeX{} that do not require changing the source file. |
| |
| |
| @node A4 Paper |
| @nodedescription How to print on A4, A5 or B6 paper. |
| @section Printing on A4 Paper |
| @cindex A4 paper, printing on |
| @cindex Paper size, A4 |
| @cindex European A4 paper |
| @findex afourpaper |
| You can format a document for printing on ISO 216 A4 paper size with |
| the @code{@@afourpaper} command. Write the command on a line by |
| itself near the beginning of the Texinfo file, before the title page. |
| |
| @cindex A5 paper, printing on |
| @findex afourlatex |
| @findex afourwide |
| @findex afivepaper |
| @findex bsixpaper |
| You may or may not prefer the formatting that results from the command |
| @code{@@afourlatex}. There's also @code{@@afourwide} for A4 paper in |
| wide format, @code{@@afivepaper} for A5 paper, and @code{@@bsixpaper} for |
| B6 paper. |
| |
| @xref{Format with @command{texi2dvi} or @command{texi2pdf}} |
| and @ref{Preparing for @TeX{}}, for other ways to format for different |
| paper sizes that do not require changing the source file. |
| |
| |
| @node @code{@@pagesizes} |
| @nodedescription How to print with customized page sizes. |
| @section @code{@@pagesizes} [@var{width}][, @var{height}]: Custom Page Sizes |
| @anchor{pagesizes}@c old node name |
| |
| @findex pagesizes |
| @cindex Custom page sizes |
| @cindex Page sizes, customized |
| @cindex Text width and height |
| @cindex Width of text area |
| @cindex Height of text area |
| @cindex Depth of text area |
| |
| You can explicitly specify the height and (optionally) width of the main |
| text area on the page with the @code{@@pagesizes} command. Write this |
| on a line by itself near the beginning of the Texinfo file, before the |
| title page. The height comes first, then the width if desired, |
| separated by a comma. Examples: |
| |
| @example |
| @@pagesizes 200mm,150mm @c for b5 paper |
| @end example |
| @noindent and |
| @example |
| @@pagesizes 11.5in @c for legal paper |
| @end example |
| |
| @cindex B5 paper, printing on |
| @cindex Legal paper, printing on |
| This would be reasonable for printing on B5-size paper. To emphasize, |
| this command specifies the size of the @emph{text area}, not the size of |
| the paper (which is 250@dmn{mm} by 177@dmn{mm} for B5, 14@dmn{in} by |
| 8.5@dmn{in} for legal). |
| |
| @cindex Margins on page, not controllable |
| To make more elaborate changes, such as changing any of the page |
| margins, you must define a new command in @file{texinfo.tex} or |
| @file{texinfo.cnf}. |
| |
| @xref{Format with @command{texi2dvi} or @command{texi2pdf}}, |
| and @ref{Preparing for @TeX{}}, for other ways to specify |
| @code{@@pagesizes} that do not require changing the source file. |
| |
| |
| @node Microtypography |
| @nodedescription Improving the appearance of paragraphs. |
| @section Microtypography |
| |
| Some versions of @TeX{}, namely pdf@TeX{} and Lua@TeX{}, have |
| @dfn{microtypography} features. These involve stretching font glyphs |
| slightly, and allowing text to produce very slightly into the margins. |
| Use of these gives @TeX{} more flexibility in breaking a paragraph |
| into lines, and can improve paragraph appearance by reducing hyphenation |
| and producing a more consistent typographic color. |
| |
| @findex microtype |
| @file{texinfo.tex} uses these features (`microtype' for short) when |
| available. You can turn microtype off by specifying @samp{@@microtype off} |
| in your input file; likewise, @samp{@@microtype on} turns microtype back on. |
| |
| @cindex CM-Super fonts @subentry for @LaTeX{} |
| The fonts used in @LaTeX{} output may not be scalable. If fonts are not |
| scalable, using microtypography could trigger an error when converting the |
| @LaTeX{} output. Therefore microtypography is not turned on in the default |
| case in @LaTeX{} output. It is possible to turn it on with @samp{@@microtype |
| on}. A way to get scalable fonts for the font used in the default @LaTeX{} |
| output is to install the CM-Super font package |
| (@url{http://ctan.org/pkg/cm-super}). |
| |
| The @code{@@microtype} command does nothing for other output formats. |
| |
| |
| @node Magnification |
| @nodedescription How to print scaled up output. |
| @section Magnification |
| @anchor{Cropmarks and Magnification} @c old name |
| |
| @findex \mag @r{(raw @TeX{} magnification)} |
| @cindex Magnified printing |
| @cindex Larger or smaller pages |
| You can attempt to direct @TeX{} to typeset pages larger or smaller |
| than usual with the @code{\mag} @TeX{} command. Everything that is |
| typeset is scaled proportionally larger or smaller. (@code{\mag} |
| stands for ``magnification''.) This is @emph{not} a Texinfo |
| @@-command, but is a raw @TeX{} command that is prefixed with a |
| backslash. You have to write this command between @code{@@tex} and |
| @code{@@end tex} (@pxref{Raw Formatter Commands}). |
| |
| Follow the @code{\mag} command with an @samp{=} and then a number that |
| is 1000 times the magnification 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: |
| |
| @example |
| @group |
| @@tex |
| \global\mag=1200 |
| @@end tex |
| @end group |
| @end example |
| |
| 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. |
| |
| Depending on your system, DVI files prepared with a |
| nonstandard-@code{\mag} may not print or may print only with certain |
| magnifications. Be prepared to experiment. |
| |
| |
| @node Info Format Specification |
| @nodedescription Technical details of the Info file format. |
| @appendix Info Format Specification |
| |
| @cindex Info format specification |
| @cindex Specification of Info format |
| @cindex Definition of Info format |
| |
| Here we describe the technical details of the Info format. |
| |
| In this formal description, the characters @code{<>*()|=#} are used |
| for the language of the description itself. Other characters are |
| literal. The formal constructs used are typical: @code{<...>} |
| indicates a metavariable name, @samp{=} means definition, @samp{*} |
| repetition, @samp{?} optional, @samp{()} grouping, @samp{|} |
| alternation, and @samp{#} comment. |
| @c Exception: @samp{*} at the beginning of a line is literal. |
| @c (Is it really worth stating this?) |
| |
| In general, programs that read Info files should try to be |
| case-insensitive to keywords that occur in the file (for example, |
| @samp{Tag Table} and @samp{Tag table} should be equivalent) in order to |
| support Info-generating programs that use different capitalization. |
| |
| We specify literal parentheses (those that are part of the Info |
| format) with @t{<lparen>} and @t{<rparen>}, meaning the single |
| characters @samp{(} and @samp{)} respectively. Finally, |
| the two-character sequence @samp{^@var{x}} means the single |
| character @samp{CTRL-@var{x}}, for any @var{x}. |
| |
| This format definition was written some 25 years after the Info format |
| was first devised. So in the event of conflicts between this |
| definition and actual practice, practice wins. It also assumes some |
| general knowledge of Texinfo; it is meant to be a guide for |
| implementors rather than a rigid technical standard. We may refer |
| back to other parts of this manual for examples and definitions, |
| rather than redundantly spelling out every detail. |
| |
| @menu |
| * Whole: Info Format Whole Manual. |
| * Preamble: Info Format Preamble. |
| * Indirect: Info Format Indirect Table. |
| * Tag table: Info Format Tag Table. |
| * Local variables: Info Format Local Variables. |
| * Regular nodes: Info Format Regular Nodes. |
| * Menu: Info Format Menu. |
| * Image: Info Format Image. |
| * Printindex: Info Format Printindex. |
| * Cross-Reference: Info Format Cross Reference. |
| @end menu |
| |
| |
| @node Info Format Whole Manual |
| @nodedescription Split vs.@: nonsplit manuals. |
| @section Info Format: A Whole Manual |
| |
| @cindex Nonsplit manuals, Info format of |
| @cindex Split manuals, Info format of |
| @cindex Whole manual, in Info format |
| |
| To begin, an Info manual is either @dfn{nonsplit} (contained wholly |
| within a single file) or @dfn{split} (across several files). |
| |
| The syntax for a nonsplit manual is: |
| |
| @example |
| <nonsplit info file> = |
| <preamble> |
| <node>* |
| <tag table>? |
| <local variables>? |
| @end example |
| |
| When split, there is a @dfn{main file}, which contains only pointers |
| to the nodes given in other @dfn{subfiles}. The main file looks |
| like this: |
| |
| @example |
| <split info main file> = |
| <preamble> |
| <indirect table> |
| <tag table> |
| <local variables>? |
| @end example |
| |
| The subfiles in a split manual have the following syntax: |
| |
| @example |
| <split info subfile> = |
| <preamble> |
| <node>* |
| @end example |
| |
| Note that the tag table is not optional for split files, as it is used |
| with the indirect table to deduce which subfile a particular node is in. |
| |
| Several of the sections in an Info file (such as nodes or tag tables) begin |
| with a sequence: |
| |
| @example |
| <separator> = (^L)?^_(^L)?^J |
| @end example |
| |
| @noindent |
| That is, a @samp{CTRL-_} character followed by a newline, with optional |
| formfeed characters. |
| |
| |
| |
| @node Info Format Preamble |
| @section Info Format: Preamble |
| |
| @cindex Preamble, in Info format |
| |
| The @t{<preamble>} is text at the beginning of all output files. |
| It is not intended to be visible by default in an Info viewer, but |
| may be displayed upon user request. |
| |
| @example |
| <preamble> = |
| <identification> # "This is FILENAME, produced by ..." |
| <copying text> # Expansion of @@copying text. |
| <dir entries> # Derived from @@dircategory and @@direntry. |
| @end example |
| |
| @noindent |
| These pieces are: |
| |
| @table @t |
| @item <identification line> |
| An arbitrary string beginning the output file, followed by a blank |
| line. |
| |
| @item <copying text> |
| The expansion of a @code{@@copying} environment, if the manual has |
| one (@pxref{@code{@@copying}}). |
| |
| @item <dir entries> |
| The result of any @code{@@dircategory} and @code{@@direntry} |
| commands present in the manual (@pxref{Installing Dir Entries}). |
| |
| @end table |
| |
| |
| @node Info Format Indirect Table |
| @section Info Format: Indirect Table |
| |
| @cindex Indirect table, in Info format |
| |
| @example |
| <indirect table> = |
| <separator> |
| Indirect: |
| (<filename>: <bytepos>)* |
| @end example |
| |
| The indirect table is written to the main file in the case of split |
| output only. It specifies, as a decimal integer, the starting byte |
| position (zero-based) that the first node of each subfile would have if |
| the subfiles were concatenated together in order, not including the |
| top-level file. The first node of actual content is pointed to by the |
| first entry. |
| |
| As an example, suppose split output is generated for the GDB manual. |
| The top-level file @file{gdb.info} will contain something like this: |
| |
| @example |
| <separator> |
| Indirect: |
| gdb.info-1: 1878 |
| gdb.info-2: 295733 |
| ... |
| @end example |
| |
| This tells Info viewers that the first node of the manual occurs at |
| byte 1878 of the file @file{gdb.info-1} (which would be after that file's |
| preamble.) The first node in the @file{gdb.info-2} subfile would start at |
| byte 295733 if @file{gdb.info-2} were appended to @file{gdb.info-1}, |
| including any preamble sections in both files. |
| |
| Unfortunately, Info-creating programs such as @command{makeinfo} have not |
| always implemented these rules perfectly, due to various bugs and |
| oversights. Therefore, robust Info viewers should fall back to |
| searching ``nearby'' the given position for a node, instead of |
| giving up immediately if the position is not exactly at a node beginning. |
| |
| |
| @node Info Format Tag Table |
| @section Info Format: Tag Table |
| |
| @cindex Tag table, in Info format |
| |
| @example |
| <tag table> = |
| <separator> |
| Tag Table: |
| (<lparen>Indirect<rparen>)? |
| (Node|Ref): <nodeid>^?<bytepos> |
| <separator> |
| End Tag Table |
| @end example |
| |
| The @samp{(Indirect)} line appears in the case of split output only. |
| |
| The tag table specifies the starting byte position of each node and anchor |
| in the file. In the case of split output, it is only written in the main |
| output file. |
| |
| Each line defines an identifier as either an anchor or a node, as |
| specified. For example, @samp{Node: Top^?1647} says that the node named |
| @samp{Top} starts at byte 1647 while @samp{Ref: Overview-Footnote-1^?30045} |
| says that the anchor named @samp{Overview-Footnote-1} starts at byte 30045. |
| It is an error to define the same identifier both ways. |
| |
| In the case of nonsplit output, the byte positions simply refer to the |
| location in the output file. In the case of split output, the byte |
| positions refer to an imaginary file created by concatenating all the |
| split files (but not the top-level file). See the previous section. |
| |
| Here is an example: |
| |
| @example |
| ^_ |
| Tag Table: |
| Node: Top^?89 |
| Node: Ch1^?292 |
| ^_ |
| End Tag Table |
| @end example |
| |
| @noindent |
| This specifies a manual with two nodes, `Top' and `Ch1', at byte |
| positions 89 and 292 respectively. Because the @samp{(Indirect)} line |
| is not present, the manual is not split. |
| |
| Preamble sections or other non-node sections of files do not have a tag |
| table entry. |
| |
| |
| @node Info Format Local Variables |
| @section Info Format: Local Variables |
| |
| @cindex Local variable section, in Info format |
| |
| The local variables section is optional. It is currently used to give |
| the encoding information and/or the document language code. |
| |
| @example |
| <local variables> = |
| <separator> |
| Local Variables: |
| (coding: <encoding>)? |
| (Info-documentlanguage: <language>)? |
| (Info-documentscript: <script>)? |
| (Info-documentlanguagevariant: <variant>(-<variant>)*)? |
| End: |
| @end example |
| |
| @xref{@code{@@documentencoding}} for information about the document encoding. |
| |
| @samp{<language>} should be of the form @var{ll} or @var{ll}_@var{cc}; see |
| @ref{@code{@@documentlanguage}}. @samp{<script>} document script |
| correspond to @code{@@documentscript} in Texinfo. The language variants |
| are separated by @samp{-}. @xref{Setting the language}. |
| Only one language, script and variants list can be specified |
| in the local variables section even if the corresponding commands such as |
| @code{@@documentlanguage} occurs several times in a Texinfo document. |
| |
| |
| @node Info Format Regular Nodes |
| @section Info Format: Regular Nodes |
| |
| @cindex Info nodes, in Info format |
| |
| Regular nodes look like this: |
| |
| @example |
| <node> = |
| <separator> |
| File: <fn>, Node: <id1>, (Next: <id2>, )? (Prev: <id3>, )? Up: <id4> |
| |
| <general text, until the next ^_ or end-of-file> |
| @end example |
| |
| @noindent |
| At least one space or tab must be present after each colon and comma, |
| but any number of spaces are ignored. The @t{<id>} node identifiers have |
| following format: |
| |
| @example |
| <id> = (<lparen><infofile><rparen>)?<node-spec>? |
| <node-spec> = <nodename> | <del><nodename><del> |
| <del> = ^? |
| @end example |
| |
| This @t{<node>} defines @t{<id1>} in file @t{<fn>}, which is typically |
| either @samp{manualname} or @samp{manualname.info}. No parenthesized |
| @t{<infofile>} component may appear within @t{<id1>}. |
| |
| Each of the identifiers after @code{Next}, @code{Prev} and @code{Up} |
| refer to nodes or anchors within a file. These pointers normally |
| refer within the same file, but @samp{(dir)} is often used to point to |
| the top-level dir file. If an @t{<infofile>} component is used then |
| the node name may be omitted, in which case the node identifier refers |
| to the @samp{Top} node within the referenced file. |
| |
| The @code{Next} and @code{Prev} pointers are optional. The @code{Up} |
| pointer is technically also optional, although most likely this |
| indicates a mistake in the node structuring. Conventionally, the |
| nodes are arranged to form a tree, but this is not a requirement of |
| the format. |
| |
| Node names containing periods, commas, colons or parentheses can confuse Info |
| readers. If it is necessary to refer to a node whose name contains any of |
| these, the @t{<nodename>} should be surrounded by a pair of @code{DEL} |
| characters (@samp{CTRL-?}, character number 127). @command{makeinfo} adds |
| these characters when needed in the default case. Note that not all Info |
| readers recognize this syntax. @xref{Info Node Names Constraints}. |
| |
| The @t{<general text>} of the node can include the special constructs |
| described next. |
| |
| |
| @node Info Format Menu |
| @section Info Format: Menu |
| |
| @cindex Menus, in Info format |
| |
| Conventionally menus appear at the end of nodes, but the Info format |
| places no restrictions on their location. |
| |
| @example |
| <menu> = |
| * Menu: |
| (<menu entry> | <menu comment>)* |
| @end example |
| |
| The parts of a @t{<menu entry>} are also described in @ref{Menu |
| Parts}. They have the same syntax as cross-references, with a leading @samp{*} |
| instead of @samp{* (N|n)ote} (@pxref{Info Format Cross Reference}). Indices |
| extend the menu format to specify the destination line; @pxref{Info Format |
| Printindex}. |
| |
| A @t{<menu comment>} is any line not beginning with @samp{*} that |
| appears either at the beginning of the menu or is separated from a |
| menu entry by one or more blank lines. These comments are intended to |
| be displayed as part of the menu, as-is (@pxref{Writing a Menu}). |
| |
| |
| @node Info Format Image |
| @section Info Format: Image |
| |
| @cindex Images @subentry in Info format |
| |
| The @code{@@image} command results in the following special directive |
| within the Info file (@pxref{Images}): |
| |
| @example |
| <image> = |
| ^@@^H[image src="<image file>" |
| (dpi=<dpi>)? |
| (depth=<depth>)? |
| (text="<txt file contents>")? |
| (alt="<alt text>")? |
| ^@@^H] |
| @end example |
| |
| The line breaks and indentation in this description are editorial; the |
| whitespace between the different parts of the directive in Info files |
| is arbitrary. |
| |
| In the strings @t{<image file>}, @t{<txt file contents>} and @t{<alt |
| text>}, @samp{"} is quoted as @samp{\"} and @samp{\} is quoted as |
| @samp{\\}. The txt and alt specifications are optional. |
| |
| The @t{alt} value serves the same purpose as in HTML: A prose |
| description of the image. In text-only displays or speech systems, |
| for example, the @t{alt} value may be used instead of displaying the |
| (typically graphical) @t{<image file>}. |
| |
| The @t{<txt file contents>}, if present, should be taken as an ASCII |
| representation of the image, for possible use on a text-only display. |
| |
| The format does not prescribe the choice between displaying the |
| @t{<image file>}, the @t{<alt text>} or the @t{<txt file contents>}. |
| |
| The @t{dpi} and @t{depth} options are only output for the |
| experimental @samp{INFO_MATH_IMAGES} variable of @command{texi2any} |
| (@pxref{Info and Plaintext Customization Variables}). |
| |
| @t{dpi} gives the dots-per-inch (@dfn{DPI}) of the image. Info-viewing |
| programs could use this to scale the image so it is an appropriate size |
| for surrounding text. Here is a possible formula for the height of |
| an image in pixels: |
| |
| @displaymath |
| h_{@r{display}} = (h_{@r{file}} / dpi) * (72.27/10) * f |
| @end displaymath |
| |
| @noindent Here, @math{h_{@r{display}}} is the height in pixels to display |
| the image at, @math{h_{@r{file}}} is the height in pixels of the unscaled |
| image, @math{dpi} is the DPI from the Info file, and @math{f} is |
| the font size in pizels of the currently used font. |
| |
| The 72.27 in this formula is the number of points in an inch (as used |
| by @TeX{}). The 10 is the default 10 @dmn{point} font size of @TeX{}, |
| in other words, the size of 1 em. The quotient (72.27/10) gives the |
| number of ems per inch and converts from the height of the image in |
| inches to the height of the image in ems. |
| |
| @t{depth} gives the below-baseline depth of the image, in image pixels |
| (before scaling). Viewing programs should use it for shifting |
| the image downwards to align it properly with surrounding text. |
| |
| |
| @node Info Format Printindex |
| @section Info Format: Printindex |
| |
| @cindex Indices, in Info format |
| |
| An index in Info format is a kind of menu, with an additional directive |
| at the beginning to mark it as an index menu. |
| |
| @example |
| <printindex> = |
| ^@@^H[index^@@^H] |
| * Menu: |
| |
| <index entry>* |
| @end example |
| |
| The @t{<index entry>} items are similar to normal menu entries, but |
| the free-format description is replaced by the line number of where |
| the entries occurs in the text: |
| |
| @example |
| <index entry> = |
| * <entry text>: <node-spec>. <line-spec> |
| |
| <line-spec> = |
| <lparen>line <lineno><rparen> |
| @end example |
| |
| @noindent |
| |
| The initial part, @samp{<entry text>: <entry node>.}, should be on a |
| single line. The @t{<entry text>} is the index term. |
| |
| Even though @t{<entry text>} is followed by a colon, it may itself |
| contain colons, so Info readers should try to include as much of the |
| line as possible in the @t{<entry text>}. (However, @t{<entry text>} |
| may not contain the @code{DEL} characters that may occur in @t{<node-spec>}.) |
| |
| @t{<lineno>} is an unsigned integer, given relative to the start |
| of the @t{<entry node>}. An optional line break may occur before |
| @samp{<line-spec>}. |
| |
| Here is an example: |
| |
| @example |
| ^@@^H[index^@@^H] |
| * Menu: |
| |
| * thunder: Weather Phenomena. (line 5) |
| @end example |
| |
| This means that an index entry for `thunder' appears at line 5 of the |
| node `Weather Phenomena'. |
| |
| |
| @node Info Format Cross Reference |
| @section Info Format: Cross-reference |
| |
| @cindex Cross-references, in Info format |
| |
| A general cross-reference in Info format has one of the following two forms: |
| |
| @example |
| <cross-reference> = |
| * (N|n)ote <id>:: |
| @c| * (N|n)ote <label>:<id>(.|,)? |
| | * (N|n)ote <label>:<id>(.|,) |
| |
| <id> = (<lparen><infofile><rparen>)?<node-spec>? |
| <label> = <label text> | <del><label text><del> |
| @end example |
| |
| No space should occur between the @samp{*} character and the following |
| @samp{N} or @samp{n}. @samp{*Note} should be used at the start of a |
| sentence, otherwise @samp{*note} should be used. (Some Info readers, |
| such as the one in Emacs, can display @samp{*Note} and @samp{*note} as |
| @samp{See} and @samp{see} respectively.) In both cases, @t{<label |
| text>} is descriptive text. |
| |
| In both forms the @t{<id>} refers to a node or anchor, in the same way |
| as a reference in the node information line does (@pxref{Info Format |
| Regular Nodes}). The optional parenthesized @samp{<infofile>} is the |
| name of the manual being referenced, and @t{<node-spec>} gives 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 @t{<id>}. |
| |
| If @t{<label>} contains a colon character (@t{:}), it should be |
| surrounded with a pair of @t{<del>} characters. |
| Likewise, quoting characters may be used for the node |
| name if it contains problematic characters; |
| then a terminating comma or period is not needed. |
| As stated earlier, this quoting mechanism is not supported in all |
| Info-reading programs. |
| |
| The format does not prescribe how to find other manuals to resolve |
| such references. |
| |
| Here are some examples: |
| |
| @example |
| *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^?. |
| @end example |
| |
| The first shows a reference to a node in the current manual using the |
| short form. |
| |
| The second also refers to a node in the current manual, namely `Info |
| Format Tag Table'; the `Tag table' before the @samp{:} is only a label |
| on this particular reference, and the @samp{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 |
| @samp{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. |
| |
| @xref{Cross References}. |
| |
| |
| @node GNU Free Documentation License |
| @nodedescription Copying this manual. |
| @appendix GNU Free Documentation License |
| |
| @include fdl.texi |
| |
| |
| @node Command Index |
| @unnumbered Command Index |
| |
| This is an alphabetical list of all the @@-commands and assorted Emacs Lisp |
| functions. To make the list easier to use, the commands are listed without |
| their preceding @samp{@@}. |
| |
| @printindex fn |
| |
| |
| @node Variables Index |
| @unnumbered Variables Index |
| |
| This is an alphabetical list of all variables, mainly customization variables. |
| |
| @printindex vr |
| |
| |
| @node General Index |
| @nodedescription A menu covering many topics. |
| @unnumbered General Index |
| |
| @printindex cp |
| |
| |
| @bye |