19014 lines
630 KiB
Plaintext
19014 lines
630 KiB
Plaintext
\input texinfo.tex @c -*-texinfo-*-
|
|
@c $Id: texinfo.txi,v 1.29 2003/02/04 15:17:21 karl Exp $
|
|
@c Ordinarily Texinfo files have the extension .texi. But texinfo.texi
|
|
@c clashes with texinfo.tex on 8.3 filesystems, so we use texinfo.txi.
|
|
|
|
@c Everything between the start/end of header lines will be passed by
|
|
@c Emacs's {texinfo,makeinfo}-format region commands. See the `start of
|
|
@c header' node for more info.
|
|
@c %**start of header
|
|
|
|
@c makeinfo and texinfo.tex ignore all text before @setfilename.
|
|
@c
|
|
@c Ordinarily the setfilename argument ends with .info. But
|
|
@c texinfo.info-13 is too long for 14-character filesystems.
|
|
@setfilename texinfo
|
|
|
|
@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 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 vr cp
|
|
@syncodeindex pg cp
|
|
|
|
@footnotestyle separate
|
|
@paragraphindent 2
|
|
@c finalout
|
|
|
|
@comment %**end of header
|
|
|
|
@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.
|
|
|
|
Copyright (C) 1988, 1990, 1991, 1992, 1993, 1995, 1996, 1997, 1998,
|
|
1999, 2000, 2001, 2002, 2003 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.1 or
|
|
any later version published by the Free Software Foundation; with no
|
|
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
|
and with the Back-Cover Texts as in (a) below. A copy of the license is
|
|
included in the section entitled ``GNU Free Documentation License.''
|
|
|
|
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
|
|
this GNU Manual, like GNU software. Copies published by the Free
|
|
Software Foundation raise funds for GNU development.''
|
|
@end quotation
|
|
@end copying
|
|
|
|
@dircategory Texinfo documentation system
|
|
@direntry
|
|
* Texinfo: (texinfo). The GNU documentation format.
|
|
* install-info: (texinfo)Invoking install-info. Update info/dir entries.
|
|
* texi2dvi: (texinfo)Format with texi2dvi. Print Texinfo documents.
|
|
* texindex: (texinfo)Format with tex/texindex. Sort Texinfo index files.
|
|
* makeinfo: (texinfo)Invoking makeinfo. Translate Texinfo source.
|
|
@end direntry
|
|
|
|
@c Before release, run C-u C-c C-u C-a (texinfo-all-menus-update with a
|
|
@c prefix arg). This updates the node pointers, which texinfmt.el needs.
|
|
|
|
@c Set smallbook if printing in smallbook format so the example of the
|
|
@c smallbook font is actually written using smallbook; in bigbook, a kludge
|
|
@c is used for TeX output. Do this through the -t option to texi2dvi,
|
|
@c so this same source can be used for other paper sizes as well.
|
|
@c smallbook
|
|
@c set smallbook
|
|
@c @@clear smallbook
|
|
|
|
@c If you like blank pages, add through texi2dvi -t.
|
|
@c setchapternewpage odd
|
|
|
|
@c Currently undocumented command, 5 December 1993:
|
|
@c nwnode (Same as node, but no warnings; for `makeinfo'.)
|
|
|
|
|
|
@shorttitlepage Texinfo
|
|
|
|
@titlepage
|
|
@title Texinfo
|
|
@subtitle The GNU Documentation Format
|
|
@subtitle for Texinfo version @value{VERSION}, @value{UPDATED}
|
|
|
|
@author Robert J. Chassell
|
|
@author Richard M. Stallman
|
|
|
|
@c Include the Distribution inside the titlepage so
|
|
@c that headings are turned off.
|
|
|
|
@page
|
|
@vskip 0pt plus 1filll
|
|
@insertcopying
|
|
|
|
@sp 1
|
|
Published by the Free Software Foundation @*
|
|
59 Temple Place Suite 330 @*
|
|
Boston, MA 02111-1307 @*
|
|
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.
|
|
|
|
@sp 1
|
|
Cover art by Etienne Suvasa.
|
|
@end titlepage
|
|
|
|
|
|
@summarycontents
|
|
@contents
|
|
|
|
|
|
@ifnottex
|
|
@node Top
|
|
@top Texinfo
|
|
|
|
@insertcopying
|
|
|
|
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 ifnottex
|
|
|
|
@menu
|
|
* Copying Conditions:: Your rights.
|
|
* Overview:: Texinfo in brief.
|
|
* Texinfo Mode:: How to use Texinfo mode.
|
|
* Beginning a File:: What is at the beginning of a Texinfo file?
|
|
* Ending a File:: What is at the end of a Texinfo file?
|
|
* Structuring:: How to create chapters, sections, subsections,
|
|
appendices, and other parts.
|
|
* Nodes:: How to write nodes.
|
|
* Menus:: How to write menus.
|
|
* Cross References:: How to write cross references.
|
|
* Marking Text:: How to mark words and phrases as code,
|
|
keyboard input, meta-syntactic
|
|
variables, and the like.
|
|
* Quotations and Examples:: How to write quotations, examples, etc.
|
|
* Lists and Tables:: How to write lists and tables.
|
|
* Indices:: How to create indices.
|
|
* Insertions:: How to insert @@-signs, braces, etc.
|
|
* Breaks:: How to force and prevent line and page breaks.
|
|
* Definition Commands:: How to describe functions and the like
|
|
in a uniform manner.
|
|
* Conditionals:: How to specify text for either @TeX{} or Info.
|
|
* Internationalization::
|
|
* Defining New Texinfo Commands::
|
|
* Hardcopy:: How to convert a Texinfo file to a file
|
|
for printing and how to print that file.
|
|
* Creating and Installing Info Files::
|
|
* Command List:: All the Texinfo @@-commands.
|
|
* Tips:: Hints on how to write a Texinfo document.
|
|
* Sample Texinfo Files:: Complete examples, including full texts.
|
|
* Include Files:: How to incorporate other Texinfo files.
|
|
* Headings:: How to write page headings and footings.
|
|
* Catching Mistakes:: How to find formatting mistakes.
|
|
* Refilling Paragraphs:: All about paragraph refilling.
|
|
* Command Syntax:: A description of @@-Command syntax.
|
|
* Obtaining TeX:: How to Obtain @TeX{}.
|
|
* Copying This Manual:: The GNU Free Documentation License.
|
|
* Command and Variable Index:: A menu containing commands and variables.
|
|
* Concept Index:: A menu covering many topics.
|
|
|
|
@detailmenu
|
|
--- The Detailed Node Listing ---
|
|
|
|
Overview of Texinfo
|
|
|
|
* Reporting Bugs:: Submitting effective bug reports.
|
|
* Using Texinfo:: Create printed or online output.
|
|
* Output Formats:: Overview of the supported output formats.
|
|
* Info Files:: What is an Info file?
|
|
* Printed Books:: Characteristics of a printed book or manual.
|
|
* Formatting Commands:: @@-commands are used for formatting.
|
|
* Conventions:: General rules for writing a Texinfo file.
|
|
* Comments:: Writing comments and ignored text in general.
|
|
* Minimum:: What a Texinfo file must have.
|
|
* Six Parts:: Usually, a Texinfo file has six parts.
|
|
* Short Sample:: A short sample Texinfo file.
|
|
* History:: Acknowledgements, contributors and genesis.
|
|
|
|
Using Texinfo Mode
|
|
|
|
* Texinfo Mode Overview:: How Texinfo mode can help you.
|
|
* Emacs Editing:: Texinfo mode adds to GNU Emacs' general
|
|
purpose editing features.
|
|
* Inserting:: How to insert frequently used @@-commands.
|
|
* Showing the Structure:: How to show the structure of a file.
|
|
* Updating Nodes and Menus:: How to update or create new nodes and menus.
|
|
* Info Formatting:: How to format for Info.
|
|
* Printing:: How to format and print part or all of a file.
|
|
* Texinfo Mode Summary:: Summary of all the Texinfo mode commands.
|
|
|
|
Updating Nodes and Menus
|
|
|
|
* Updating Commands:: Five major updating commands.
|
|
* Updating Requirements:: How to structure a Texinfo file for
|
|
using the updating command.
|
|
* Other Updating Commands:: How to indent descriptions, insert
|
|
missing nodes lines, and update
|
|
nodes in sequence.
|
|
|
|
Beginning a Texinfo File
|
|
|
|
* Sample Beginning:: A sample beginning for a Texinfo file.
|
|
* Texinfo File Header:: The first lines.
|
|
* Document Permissions:: Ensuring your manual is free.
|
|
* Titlepage & Copyright Page:: Creating the title and copyright pages.
|
|
* The Top Node:: Creating the `Top' node and master menu.
|
|
* Global Document Commands:: Affecting formatting throughout.
|
|
* Software Copying Permissions:: Ensure that you and others continue to
|
|
have the right to use and share software.
|
|
|
|
Texinfo File Header
|
|
|
|
* First Line:: The first line of a Texinfo file.
|
|
* Start of Header:: Formatting a region requires this.
|
|
* setfilename:: Tell Info the name of the Info file.
|
|
* settitle:: Create a title for the printed work.
|
|
* End of Header:: Formatting a region requires this.
|
|
|
|
Document Permissions
|
|
|
|
* copying:: Declare the document's copying permissions.
|
|
* insertcopying:: Where to insert the permissions.
|
|
|
|
Title and Copyright Pages
|
|
|
|
* titlepage:: Create a title for the printed document.
|
|
* titlefont center sp:: The @code{@@titlefont}, @code{@@center},
|
|
and @code{@@sp} commands.
|
|
* title subtitle author:: The @code{@@title}, @code{@@subtitle},
|
|
and @code{@@author} commands.
|
|
* Copyright:: How to write the copyright notice and
|
|
include copying permissions.
|
|
* end titlepage:: Turn on page headings after the title and
|
|
copyright pages.
|
|
* headings on off:: An option for turning headings on and off
|
|
and double or single sided printing.
|
|
|
|
The `Top' Node and Master Menu
|
|
|
|
* Top Node Example::
|
|
* Master Menu Parts::
|
|
|
|
Global Document Commands
|
|
|
|
* documentdescription:: Document summary for the HTML output.
|
|
* setchapternewpage:: Start chapters on right-hand pages.
|
|
* paragraphindent:: Specify paragraph indentation.
|
|
* exampleindent:: Specify environment indentation.
|
|
|
|
Ending a Texinfo File
|
|
|
|
* Printing Indices & Menus:: How to print an index in hardcopy and
|
|
generate index menus in Info.
|
|
* Contents:: How to create a table of contents.
|
|
* File End:: How to mark the end of a file.
|
|
|
|
Chapter Structuring
|
|
|
|
* Tree Structuring:: A manual is like an upside down tree @dots{}
|
|
* Structuring Command Types:: How to divide a manual into parts.
|
|
* makeinfo top:: The @code{@@top} command, part of the `Top' node.
|
|
* chapter::
|
|
* unnumbered & appendix::
|
|
* majorheading & chapheading::
|
|
* section::
|
|
* unnumberedsec appendixsec heading::
|
|
* subsection::
|
|
* unnumberedsubsec appendixsubsec subheading::
|
|
* subsubsection:: Commands for the lowest level sections.
|
|
* Raise/lower sections:: How to change commands' hierarchical level.
|
|
|
|
Nodes
|
|
|
|
* Two Paths:: Different commands to structure
|
|
Info output and printed output.
|
|
* Node Menu Illustration:: A diagram, and sample nodes and menus.
|
|
* node:: Creating nodes, in detail.
|
|
* makeinfo Pointer Creation:: Letting makeinfo determine node pointers.
|
|
* anchor:: Defining arbitrary cross-reference targets.
|
|
|
|
The @code{@@node} Command
|
|
|
|
* Node Names:: How to choose node and pointer names.
|
|
* Writing a Node:: How to write an @code{@@node} line.
|
|
* Node Line Tips:: Keep names short.
|
|
* Node Line Requirements:: Keep names unique, without @@-commands.
|
|
* First Node:: How to write a `Top' node.
|
|
* makeinfo top command:: How to use the @code{@@top} command.
|
|
|
|
Menus
|
|
|
|
* Menu Location:: Put a menu in a short node.
|
|
* Writing a Menu:: What is a menu?
|
|
* Menu Parts:: A menu entry has three parts.
|
|
* Less Cluttered Menu Entry:: Two part menu entry.
|
|
* Menu Example:: Two and three part menu entries.
|
|
* Other Info Files:: How to refer to a different Info file.
|
|
|
|
Cross References
|
|
|
|
* References:: What cross references are for.
|
|
* Cross Reference Commands:: A summary of the different commands.
|
|
* Cross Reference Parts:: A cross reference has several parts.
|
|
* xref:: Begin a reference with `See' @dots{}
|
|
* Top Node Naming:: How to refer to the beginning of another file.
|
|
* ref:: A reference for the last part of a sentence.
|
|
* pxref:: How to write a parenthetical cross reference.
|
|
* inforef:: How to refer to an Info-only file.
|
|
* uref:: How to refer to a uniform resource locator.
|
|
|
|
@code{@@xref}
|
|
|
|
* Reference Syntax:: What a reference looks like and requires.
|
|
* One Argument:: @code{@@xref} with one argument.
|
|
* Two Arguments:: @code{@@xref} with two arguments.
|
|
* Three Arguments:: @code{@@xref} with three arguments.
|
|
* Four and Five Arguments:: @code{@@xref} with four and five arguments.
|
|
|
|
Marking Words and Phrases
|
|
|
|
* Indicating:: How to indicate definitions, files, etc.
|
|
* Emphasis:: How to emphasize text.
|
|
|
|
Indicating Definitions, Commands, etc.
|
|
|
|
* Useful Highlighting:: Highlighting provides useful information.
|
|
* code:: Indicating program code.
|
|
* kbd:: Showing keyboard input.
|
|
* key:: Specifying keys.
|
|
* samp:: A literal sequence of characters.
|
|
* verb:: A verbatim sequence of characters.
|
|
* var:: Indicating metasyntactic variables.
|
|
* env:: Indicating environment variables.
|
|
* file:: Indicating file names.
|
|
* command:: Indicating command names.
|
|
* option:: Indicating option names.
|
|
* dfn:: Specifying definitions.
|
|
* cite:: Referring to books not in the Info system.
|
|
* acronym:: Indicating acronyms.
|
|
* url:: Indicating a World Wide Web reference.
|
|
* email:: Indicating an electronic mail address.
|
|
|
|
Emphasizing Text
|
|
|
|
* emph & strong:: How to emphasize text in Texinfo.
|
|
* Smallcaps:: How to use the small caps font.
|
|
* Fonts:: Various font commands for printed output.
|
|
|
|
Quotations and Examples
|
|
|
|
* Block Enclosing Commands:: Different constructs for different purposes.
|
|
* quotation:: Writing a quotation.
|
|
* example:: Writing an example in a fixed-width font.
|
|
* verbatim:: Writing a verbatim example.
|
|
* verbatiminclude:: Including a file verbatim.
|
|
* lisp:: Illustrating Lisp code.
|
|
* small:: Examples in a smaller font.
|
|
* display:: Writing an example in the current font.
|
|
* format:: Writing an example without narrowed margins.
|
|
* exdent:: Undo indentation on a line.
|
|
* flushleft & flushright:: Pushing text flush left or flush right.
|
|
* noindent:: Preventing paragraph indentation.
|
|
* cartouche:: Drawing rounded rectangles around examples.
|
|
|
|
Lists and Tables
|
|
|
|
* Introducing Lists:: Texinfo formats lists for you.
|
|
* itemize:: How to construct a simple list.
|
|
* enumerate:: How to construct a numbered list.
|
|
* Two-column Tables:: How to construct a two-column table.
|
|
* Multi-column Tables:: How to construct generalized tables.
|
|
|
|
Making a Two-column Table
|
|
|
|
* table:: How to construct a two-column table.
|
|
* ftable vtable:: Automatic indexing for two-column tables.
|
|
* itemx:: How to put more entries in the first column.
|
|
|
|
Multi-column Tables
|
|
|
|
* Multitable Column Widths:: Defining multitable column widths.
|
|
* Multitable Rows:: Defining multitable rows, with examples.
|
|
|
|
Indices
|
|
|
|
* Index Entries:: Choose different words for index entries.
|
|
* Predefined Indices:: Use different indices for different kinds
|
|
of entry.
|
|
* Indexing Commands:: How to make an index entry.
|
|
* Combining Indices:: How to combine indices.
|
|
* New Indices:: How to define your own indices.
|
|
|
|
Combining Indices
|
|
|
|
* syncodeindex:: How to merge two indices, using @code{@@code}
|
|
font for the merged-from index.
|
|
* synindex:: How to merge two indices, using the
|
|
default font of the merged-to index.
|
|
|
|
Special Insertions
|
|
|
|
* Braces Atsigns:: How to insert braces, @samp{@@}.
|
|
* Inserting Space:: How to insert the right amount of space
|
|
within a sentence.
|
|
* Inserting Accents:: How to insert accents and special characters.
|
|
* Dots Bullets:: How to insert dots and bullets.
|
|
* TeX and copyright:: How to insert the @TeX{} logo
|
|
and the copyright symbol.
|
|
* pounds:: How to insert the pounds currency symbol.
|
|
* minus:: How to insert a minus sign.
|
|
* math:: How to format a mathematical expression.
|
|
* Glyphs:: How to indicate results of evaluation,
|
|
expansion of macros, errors, etc.
|
|
* Footnotes:: How to include footnotes.
|
|
* Images:: How to include graphics.
|
|
|
|
Inserting @@ and Braces
|
|
|
|
* Inserting An Atsign:: How to insert @samp{@@}.
|
|
* Inserting Braces:: How to insert @samp{@{} and @samp{@}}.
|
|
|
|
Inserting Space
|
|
|
|
* Not Ending a Sentence:: Sometimes a . doesn't end a sentence.
|
|
* Ending a Sentence:: Sometimes it does.
|
|
* Multiple Spaces:: Inserting multiple spaces.
|
|
* dmn:: How to format a dimension.
|
|
|
|
Inserting Ellipsis and Bullets
|
|
|
|
* dots:: How to insert dots @dots{}
|
|
* bullet:: How to insert a bullet.
|
|
|
|
Inserting @TeX{} and the Copyright Symbol
|
|
|
|
* tex:: How to insert the @TeX{} logo.
|
|
* copyright symbol:: How to use @code{@@copyright@{@}}.
|
|
|
|
Glyphs for Examples
|
|
|
|
* Glyphs Summary::
|
|
* result:: How to show the result of expression.
|
|
* expansion:: How to indicate an expansion.
|
|
* Print Glyph:: How to indicate printed output.
|
|
* Error Glyph:: How to indicate an error message.
|
|
* Equivalence:: How to indicate equivalence.
|
|
* Point Glyph:: How to indicate the location of point.
|
|
|
|
Glyphs Summary
|
|
|
|
* result::
|
|
* expansion::
|
|
* Print Glyph::
|
|
* Error Glyph::
|
|
* Equivalence::
|
|
* Point Glyph::
|
|
|
|
Footnotes
|
|
|
|
* Footnote Commands:: How to write a footnote in Texinfo.
|
|
* Footnote Styles:: Controlling how footnotes appear in Info.
|
|
|
|
Making and Preventing Breaks
|
|
|
|
* Break Commands:: Summary of break-related commands.
|
|
* Line Breaks:: Forcing line breaks.
|
|
* - and hyphenation:: Helping @TeX{} with hyphenation points.
|
|
* w:: Preventing unwanted line breaks in text.
|
|
* tie:: Inserting an unbreakable but varying space.
|
|
* sp:: Inserting blank lines.
|
|
* page:: Forcing the start of a new page.
|
|
* group:: Preventing unwanted page breaks.
|
|
* need:: Another way to prevent unwanted page breaks.
|
|
|
|
Definition Commands
|
|
|
|
* Def Cmd Template:: How to structure a description using a
|
|
definition command.
|
|
* Optional Arguments:: How to handle optional and repeated arguments.
|
|
* deffnx:: How to group two or more `first' lines.
|
|
* Def Cmds in Detail:: All the definition commands.
|
|
* Def Cmd Conventions:: Conventions for writing definitions.
|
|
* Sample Function Definition::
|
|
|
|
The Definition Commands
|
|
|
|
* Functions Commands:: Commands for functions and similar entities.
|
|
* Variables Commands:: Commands for variables and similar entities.
|
|
* Typed Functions:: Commands for functions in typed languages.
|
|
* Typed Variables:: Commands for variables in typed languages.
|
|
* Abstract Objects:: Commands for object-oriented programming.
|
|
* Data Types:: The definition command for data types.
|
|
|
|
Conditionally Visible Text
|
|
|
|
* Conditional Commands:: Specifying text for HTML, Info, or @TeX{}.
|
|
* Conditional Not Commands:: Specifying text for not HTML, Info, or @TeX{}.
|
|
* Raw Formatter Commands:: Using raw @TeX{} or HTML commands.
|
|
* set clear value:: Designating which text to format (for
|
|
all output formats); and how to set a
|
|
flag to a string that you can insert.
|
|
|
|
@code{@@set}, @code{@@clear}, and @code{@@value}
|
|
|
|
* set value:: Expand a flag variable to a string.
|
|
* ifset ifclear:: Format a region if a flag is set.
|
|
* value Example:: An easy way to update edition information.
|
|
|
|
Internationalization
|
|
|
|
* documentlanguage:: Declaring the current language.
|
|
* documentencoding:: Declaring the input encoding.
|
|
|
|
Defining New Texinfo Commands
|
|
|
|
* Defining Macros:: Defining and undefining new commands.
|
|
* Invoking Macros:: Using a macro, once you've defined it.
|
|
* Macro Details:: Beyond basic macro usage.
|
|
* alias:: Command aliases.
|
|
* definfoenclose:: Customized highlighting.
|
|
|
|
Formatting and Printing Hardcopy
|
|
|
|
* Use TeX:: Use @TeX{} to format for hardcopy.
|
|
* Format with tex/texindex:: How to format with explicit shell commands.
|
|
* Format with texi2dvi:: A simpler way to format.
|
|
* Print with lpr:: How to print.
|
|
* Within Emacs:: How to format and print from an Emacs shell.
|
|
* Texinfo Mode Printing:: How to format and print in Texinfo mode.
|
|
* Compile-Command:: How to print using Emacs's compile command.
|
|
* Requirements Summary:: @TeX{} formatting requirements summary.
|
|
* Preparing for TeX:: What to do before you use @TeX{}.
|
|
* Overfull hboxes:: What are and what to do with overfull hboxes.
|
|
* smallbook:: How to print small format books and manuals.
|
|
* A4 Paper:: How to print on A4 or A5 paper.
|
|
* pagesizes:: How to print with customized page sizes.
|
|
* Cropmarks and Magnification:: How to print marks to indicate the size
|
|
of pages and how to print scaled up output.
|
|
* PDF Output:: Portable Document Format output.
|
|
|
|
Creating and Installing Info Files
|
|
|
|
* Creating an Info File::
|
|
* Installing an Info File::
|
|
|
|
Creating an Info File
|
|
|
|
* makeinfo advantages:: @code{makeinfo} provides better error checking.
|
|
* Invoking makeinfo:: How to run @code{makeinfo} from a shell.
|
|
* makeinfo options:: Specify fill-column and other options.
|
|
* Pointer Validation:: How to check that pointers point somewhere.
|
|
* makeinfo in Emacs:: How to run @code{makeinfo} from Emacs.
|
|
* texinfo-format commands:: Two Info formatting commands written
|
|
in Emacs Lisp are an alternative
|
|
to @code{makeinfo}.
|
|
* Batch Formatting:: How to format for Info in Emacs Batch mode.
|
|
* Tag and Split Files:: How tagged and split files help Info
|
|
to run better.
|
|
* Generating HTML:: Generating HTML output with makeinfo.
|
|
|
|
Installing an Info File
|
|
|
|
* Directory File:: The top level menu for all Info files.
|
|
* New Info File:: Listing a new Info file.
|
|
* Other Info Directories:: How to specify Info files that are
|
|
located in other directories.
|
|
* Installing Dir Entries:: How to specify what menu entry to add
|
|
to the Info directory.
|
|
* Invoking install-info:: @code{install-info} options.
|
|
|
|
Sample Texinfo Files
|
|
|
|
* Short Sample Texinfo File::
|
|
* GNU Sample Texts::
|
|
* Verbatim Copying License::
|
|
* All-permissive Copying License::
|
|
|
|
Include Files
|
|
|
|
* Using Include Files:: How to use the @code{@@include} command.
|
|
* texinfo-multiple-files-update:: How to create and update nodes and
|
|
menus when using included files.
|
|
* Include Files Requirements:: What @code{texinfo-multiple-files-update} expects.
|
|
* Sample Include File:: A sample outer file with included files
|
|
within it; and a sample included file.
|
|
* Include Files Evolution:: How use of the @code{@@include} command
|
|
has changed over time.
|
|
|
|
Page Headings
|
|
|
|
* Headings Introduced:: Conventions for using page headings.
|
|
* Heading Format:: Standard page heading formats.
|
|
* Heading Choice:: How to specify the type of page heading.
|
|
* Custom Headings:: How to create your own headings and footings.
|
|
|
|
Formatting Mistakes
|
|
|
|
* makeinfo Preferred:: @code{makeinfo} finds errors.
|
|
* Debugging with Info:: How to catch errors with Info formatting.
|
|
* Debugging with TeX:: How to catch errors with @TeX{} formatting.
|
|
* Using texinfo-show-structure:: How to use @code{texinfo-show-structure}.
|
|
* Using occur:: How to list all lines containing a pattern.
|
|
* Running Info-Validate:: How to find badly referenced nodes.
|
|
|
|
Finding Badly Referenced Nodes
|
|
|
|
* Using Info-validate:: How to run @code{Info-validate}.
|
|
* Unsplit:: How to create an unsplit file.
|
|
* Tagifying:: How to tagify a file.
|
|
* Splitting:: How to split a file manually.
|
|
|
|
Copying This Manual
|
|
|
|
* GNU Free Documentation License:: License for copying this manual.
|
|
|
|
@end detailmenu
|
|
@end menu
|
|
|
|
@c Reward readers for getting to the end of the menu :).
|
|
@c Contributed by Arnold Robbins.
|
|
@quotation
|
|
Documentation is like sex: when it is good, it is very, very good; and
|
|
when it is bad, it is better than nothing.
|
|
---Dick Brandon
|
|
@end quotation
|
|
|
|
|
|
@node Copying Conditions
|
|
@unnumbered Texinfo Copying Conditions
|
|
@cindex Copying conditions
|
|
@cindex Conditions for copying Texinfo
|
|
|
|
The programs currently being distributed that relate to Texinfo include
|
|
@code{makeinfo}, @code{info}, @code{texindex}, and @file{texinfo.tex}.
|
|
These programs are @dfn{free}; this means that everyone is free to use
|
|
them and free to redistribute them on a free basis. The Texinfo-related
|
|
programs are not in the public domain; they are copyrighted and there
|
|
are restrictions on their distribution, but these restrictions are
|
|
designed to permit everything that a good cooperating citizen would want
|
|
to do. What is not allowed is to try to prevent others from further
|
|
sharing any version of these programs that they might get from you.
|
|
|
|
Specifically, we want to make sure that you have the right to give away
|
|
copies of the programs that relate to Texinfo, that you receive source
|
|
code or else can get it if you want it, that you can change these
|
|
programs or use pieces of them in new free programs, and that you know
|
|
you can do these things.
|
|
|
|
To make sure that everyone has such rights, we have to forbid you to
|
|
deprive anyone else of these rights. For example, if you distribute
|
|
copies of the Texinfo related programs, you must give the recipients all
|
|
the rights that you have. You must make sure that they, too, receive or
|
|
can get the source code. And you must tell them their rights.
|
|
|
|
Also, for our own protection, we must make certain that everyone finds
|
|
out that there is no warranty for the programs that relate to Texinfo.
|
|
If these programs are modified by someone else and passed on, we want
|
|
their recipients to know that what they have is not what we distributed,
|
|
so that any problems introduced by others will not reflect on our
|
|
reputation.
|
|
|
|
The precise conditions of the licenses for the programs currently being
|
|
distributed that relate to Texinfo are found in the General Public
|
|
Licenses that accompany them. This manual specifically is covered by
|
|
the GNU Free Documentation License (@pxref{GNU Free Documentation
|
|
License}).
|
|
|
|
|
|
@node Overview
|
|
@chapter Overview of Texinfo
|
|
@cindex Overview of Texinfo
|
|
@cindex Texinfo overview
|
|
|
|
@dfn{Texinfo}@footnote{The first syllable of ``Texinfo'' is pronounced
|
|
like ``speck'', not ``hex''. This odd pronunciation is derived from,
|
|
but is not the same as, the pronunciation of @TeX{}. In the word
|
|
@TeX{}, the @samp{X} is actually the Greek letter ``chi'' rather than
|
|
the English letter ``ex''. Pronounce @TeX{} as if the @samp{X} were the
|
|
last sound in the name `Bach'; but pronounce Texinfo as if the @samp{x}
|
|
were a `k'. Spell ``Texinfo'' with a capital ``T'' and the other
|
|
letters in lower case.} is a documentation system that uses a single
|
|
source file to produce both online information and printed output. This
|
|
means that instead of writing two different documents, one for the
|
|
online information and the other for a printed work, you need write only
|
|
one document. Therefore, when the work is revised, you need revise only
|
|
that one document.
|
|
|
|
@menu
|
|
* Reporting Bugs:: Submitting effective bug reports.
|
|
* Using Texinfo:: Create printed or online output.
|
|
* Output Formats:: Overview of the supported output formats.
|
|
* Info Files:: What is an Info file?
|
|
* Printed Books:: Characteristics of a printed book or manual.
|
|
* Formatting Commands:: @@-commands are used for formatting.
|
|
* Conventions:: General rules for writing a Texinfo file.
|
|
* Comments:: Writing comments and ignored text in general.
|
|
* Minimum:: What a Texinfo file must have.
|
|
* Six Parts:: Usually, a Texinfo file has six parts.
|
|
* Short Sample:: A short sample Texinfo file.
|
|
* History:: Acknowledgements, contributors and genesis.
|
|
@end menu
|
|
|
|
|
|
@node Reporting Bugs
|
|
@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, anything. Please email them to
|
|
@email{bug-texinfo@@gnu.org}. You can get the latest version of Texinfo
|
|
from @uref{ftp://ftp.gnu.org/gnu/texinfo/} and its mirrors worldwide.
|
|
|
|
@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 hardware and operating system names and versions.
|
|
@item the contents of any input files necessary to reproduce the bug.
|
|
@item a description of the problem and samples of any erroneous output.
|
|
@item any unusual options you gave to @command{configure}.
|
|
@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.
|
|
|
|
@cindex Patches, contributing
|
|
Patches are most welcome; if possible, please make them with
|
|
@samp{@w{diff -c}} (@pxref{Top,, Overview, diffutils, Comparing and
|
|
Merging Files}) and include @file{ChangeLog} entries (@pxref{Change
|
|
Log,,, emacs, The GNU Emacs Manual}).
|
|
|
|
When sending patches, if possible please do not encode or split them in
|
|
any way; it's much easier to deal with one plain text message, however
|
|
large, than many small ones. @uref{ftp://ftp.gnu.org/gnu/sharutils/,
|
|
GNU shar} is a convenient way of packaging multiple and/or binary files
|
|
for email.
|
|
|
|
|
|
@node Using Texinfo
|
|
@section Using Texinfo
|
|
|
|
@cindex Using Texinfo in general
|
|
@cindex Texinfo, introduction to
|
|
@cindex Introduction to Texinfo
|
|
|
|
Using Texinfo, you can create a printed document with the normal
|
|
features of a book, including chapters, sections, cross references, and
|
|
indices. From the same Texinfo source file, you can create a
|
|
menu-driven, online Info file with nodes, menus, cross references, and
|
|
indices. You can also create from that same source file an HTML output
|
|
file suitable for use with a web browser, or an XML file. @cite{The GNU
|
|
Emacs Manual} is a good example of a Texinfo file, as is this manual.
|
|
|
|
To make a printed document, you process a Texinfo source file with the
|
|
@TeX{} typesetting program (but the Texinfo language is very different
|
|
from and much stricter than @TeX{}'s usual languages, plain @TeX{} and
|
|
La@TeX{}). This creates a DVI file that you can typeset and print as
|
|
a book or report (@pxref{Hardcopy}).
|
|
|
|
@pindex makeinfo
|
|
To output an Info file, process your Texinfo source with the
|
|
@code{makeinfo} utility. You can install the result in your Info tree
|
|
(@pxref{Installing an Info File}).
|
|
|
|
To output an HTML file, run @code{makeinfo --html} on your Texinfo
|
|
source. You can (for example) install the result on a web site.
|
|
|
|
@cindex Docbook, converting to Texinfo
|
|
@cindex Conversion, from Docbook to Texinfo
|
|
To output an XML file, run @code{makeinfo --xml} on your Texinfo source.
|
|
To output DocBook (a particular form of XML), run @code{makeinfo
|
|
--docbook}. If you want to convert from Docbook @emph{to} Texinfo,
|
|
please see @uref{http://docbook2X.sourceforge.net/}.
|
|
|
|
@TeX{} works with virtually all printers; Info works with virtually all
|
|
computer terminals; the HTML output works with virtually all web
|
|
browsers. Thus Texinfo can be used by almost any computer user.
|
|
|
|
@cindex Source file format
|
|
A Texinfo source file is a plain @sc{ascii} file containing text
|
|
interspersed with @dfn{@@-commands} (words preceded by an @samp{@@})
|
|
that tell the typesetting and formatting programs what to do. You may
|
|
edit a Texinfo file with any text editor; but it is especially
|
|
convenient to use GNU Emacs since that editor has a special mode,
|
|
called Texinfo mode, that provides various Texinfo-related features.
|
|
(@xref{Texinfo Mode}.)
|
|
|
|
Before writing a Texinfo source file, you should learn about nodes,
|
|
menus, cross references, and the rest, for example by reading this
|
|
manual.
|
|
|
|
You can use Texinfo to create both online help and printed manuals;
|
|
moreover, Texinfo is freely redistributable. For these reasons, Texinfo
|
|
is the official documentation format of the GNU project. More
|
|
information is available at the @uref{http://www.gnu.org/doc/, GNU
|
|
documentation web page}.
|
|
|
|
|
|
@node Output Formats
|
|
@section Output Formats
|
|
@cindex Output formats
|
|
@cindex Back-end output formats
|
|
|
|
Here is a brief overview of the output formats currently supported by
|
|
Texinfo.
|
|
|
|
@table @asis
|
|
@item Info
|
|
@cindex Info output
|
|
(Generated via @command{makeinfo}.) This format is a plain text
|
|
transliteration of the Texinfo source. It uses control characters to
|
|
separate nodes and provide other navigational information. See the
|
|
next section (@pxref{Info Files}) for more details on this format.
|
|
The Emacs Info subsystem (@pxref{Top,,Getting Started,info, Info}),
|
|
and the standalone @command{info} program (@pxref{info
|
|
standalone,,,info-stnd, GNU Info}), among others, can read these
|
|
files. @xref{Creating and Installing Info Files}.
|
|
|
|
@item Plain text
|
|
@cindex Plain text output
|
|
(Generated via @command{makeinfo --no-headers}.) This is almost the
|
|
same as Info output, except the navigational control characters are
|
|
omitted.
|
|
|
|
@item HTML
|
|
@cindex HTML output
|
|
@cindex W3 consortium
|
|
@cindex Mozilla
|
|
@cindex Lynx
|
|
@cindex Emacs-W3
|
|
(Generated via @command{makeinfo --html}.) This is the Hyper Text
|
|
Markup Language that has become the most commonly used language for
|
|
writing documents on the World Wide Web. Web browsers, such as
|
|
Mozilla, Lynx, and Emacs-W3, can render this language online. There
|
|
are many versions of HTML; @command{makeinfo} tries to use a subset
|
|
of the language that can be interpreted by any common browser. For
|
|
details of the HTML language and much related information, see
|
|
@uref{http://www.w3.org/MarkUp/}. @xref{Generating HTML}.
|
|
|
|
@item DVI
|
|
@cindex DVI output
|
|
@pindex Dvips
|
|
@pindex Xdvi
|
|
(Generated via @command{texi2dvi}.) This DeVice Independent binary
|
|
format is output by the @TeX{} typesetting program
|
|
(@uref{http://tug.org}). It is then read by a DVI `driver', which
|
|
writes the actual device-specific commands that can be viewed or
|
|
printed, notably Dvips for translation to PostScript (@pxref{dvips
|
|
invocation,,, dvips, Dvips}) and Xdvi for viewing on an X display
|
|
(@uref{http://sourceforge.net/projects/xdvi/}). @xref{Hardcopy}.
|
|
|
|
@item PDF
|
|
@cindex PDF output
|
|
@cindex Beebe, Nelson
|
|
@pindex pdftex
|
|
(Generated via @command{texi2dvi --pdf}.) This format, based on
|
|
PostScript, was developed by Adobe Systems for document interchange.
|
|
It is intended to be platform-independent and easily viewable, among
|
|
other design goals; for a discussion, see
|
|
@uref{http://tug.org/tugboat/Articles/tb22-3/tb72beebeI.pdf}. Texinfo
|
|
uses the @command{pdftex} program, a variant of @TeX{}, to output pdf;
|
|
see @uref{http://tug.org/applications/pdftex}. @xref{PDF Output}.
|
|
|
|
@item XML
|
|
@cindex XML output
|
|
@cindex DTD, for Texinfo XML
|
|
(Generated via @command{makeinfo --xml}.) XML is a generic syntax
|
|
specification usable for any sort of content (see, for example,
|
|
@uref{http://www.w3.org/XML/}). The @command{makeinfo} xml output,
|
|
unlike all the formats above, interprets very little of the Texinfo
|
|
source. Rather, it merely translates the Texinfo markup commands into
|
|
XML syntax, for processing by further XML tools. The particular
|
|
syntax output is defined in the file @file{texinfo.dtd} included in
|
|
the Texinfo source distribution.
|
|
|
|
@item DocBook
|
|
@cindex DocBook output
|
|
(Generated via @command{makeinfo --docbook}.) This is an XML format
|
|
of long standing used primarily for technical documentation. See
|
|
@uref{http://www.docbook.org/}.
|
|
|
|
@end table
|
|
|
|
@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 very
|
|
strict conventional format, generating a good man page requires a
|
|
completely different source than 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 just write the man page
|
|
directly.
|
|
|
|
@pindex help2man
|
|
@cindex O'Dea, Brendan
|
|
Man pages still have their place, and if you wish to support them, 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, this is currently used to generate man pages for the programs in
|
|
the Texinfo distribution. It is GNU software written by Brendan
|
|
O'Dea, available from @uref{ftp://ftp.gnu.org/gnu/help2man/}.
|
|
|
|
@cindex Output formats, supporting more
|
|
@cindex SGML-tools output format
|
|
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. But please do not write a separate translator texi2foo for
|
|
your favorite format foo! That is the hard way to do the job, and makes
|
|
extra work in subsequent maintenance, since the Texinfo language is
|
|
continually being enhanced and updated. Instead, the best approach is
|
|
modify @code{makeinfo} to generate the new format.
|
|
|
|
|
|
@node Info Files
|
|
@section Info Files
|
|
@cindex Info files
|
|
|
|
An Info file is a Texinfo file formatted so that the Info documentation
|
|
reading program can operate on it. (@code{makeinfo}
|
|
and @code{texinfo-format-buffer} are two commands that convert a Texinfo file
|
|
into an Info file.)
|
|
|
|
Info files are divided into pieces called @dfn{nodes}, each of which
|
|
contains the discussion of one topic. Each node has a name, and
|
|
contains both text for the user to read and pointers to other nodes,
|
|
which are identified by their names. The Info program displays one node
|
|
at a time, and provides commands with which the user can move to other
|
|
related nodes.
|
|
|
|
@ifinfo
|
|
@inforef{Top, info, info}, for more information about using Info.
|
|
@end ifinfo
|
|
|
|
Each node of an Info file may have any number of child nodes that
|
|
describe subtopics of the node's topic. The names of child
|
|
nodes are listed in a @dfn{menu} within the parent node; this
|
|
allows you to use certain Info commands to move to one of the child
|
|
nodes. Generally, an Info file is organized like a book. If a node
|
|
is at the logical level of a chapter, its child nodes are at the level
|
|
of sections; likewise, the child nodes of sections are at the level
|
|
of subsections.
|
|
|
|
All the children of any one parent are linked together in a
|
|
bidirectional chain of `Next' and `Previous' pointers. The `Next'
|
|
pointer provides a link to the next section, and the `Previous' pointer
|
|
provides a link to the previous section. This means that all the nodes
|
|
that are at the level of sections within a chapter are linked together.
|
|
Normally the order in this chain is the same as the order of the
|
|
children in the parent's menu. Each child node records the parent node
|
|
name as its `Up' pointer. The last child has no `Next' pointer, and the
|
|
first child has the parent both as its `Previous' and as its `Up'
|
|
pointer.@footnote{In some documents, the first child has no `Previous'
|
|
pointer. Occasionally, the last child has the node name of the next
|
|
following higher level node as its `Next' pointer.}
|
|
|
|
The book-like structuring of an Info file into nodes that correspond
|
|
to chapters, sections, and the like is a matter of convention, not a
|
|
requirement. The `Up', `Previous', and `Next' pointers of a node can
|
|
point to any other nodes, and a menu can contain any other nodes.
|
|
Thus, the node structure can be any directed graph. But it is usually
|
|
more comprehensible to follow a structure that corresponds to the
|
|
structure of chapters and sections in a printed book or report.@refill
|
|
|
|
In addition to menus and to `Next', `Previous', and `Up' pointers, Info
|
|
provides pointers of another kind, called references, that can be
|
|
sprinkled throughout the text. This is usually the best way to
|
|
represent links that do not fit a hierarchical structure.@refill
|
|
|
|
Usually, you will design a document so that its nodes match the
|
|
structure of chapters and sections in the printed output. But
|
|
occasionally there are times when this is not right for the material
|
|
being discussed. Therefore, Texinfo uses separate commands to specify
|
|
the node structure for the Info file and the section structure for the
|
|
printed output.@refill
|
|
|
|
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 *}. (@inforef{Expert,
|
|
Advanced Info commands, info}.)@refill
|
|
|
|
@c !!! dir file may be located in one of many places:
|
|
@c /usr/local/emacs/info mentioned in info.c DEFAULT_INFOPATH
|
|
@c /usr/local/lib/emacs/info mentioned in info.c DEFAULT_INFOPATH
|
|
@c /usr/gnu/info mentioned in info.c DEFAULT_INFOPATH
|
|
@c /usr/local/info
|
|
@c /usr/local/lib/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.@refill
|
|
|
|
@cindex URI syntax for Info
|
|
If you wish to refer to an Info file in a URI, you can use the
|
|
(unofficial) syntax exemplified in the following. This works with
|
|
Emacs/W3, for example:
|
|
@example
|
|
info:///usr/info/emacs#Dissociated%20Press
|
|
info:emacs#Dissociated%20Press
|
|
info://localhost/usr/info/emacs#Dissociated%20Press
|
|
@end example
|
|
|
|
The @command{info} program itself does not follow URI's of any kind.
|
|
|
|
|
|
@node Printed Books
|
|
@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 powerful, sophisticated typesetting
|
|
program written by Donald Knuth.@footnote{You can also use the
|
|
@pindex texi2roff@r{, unsupported software}
|
|
@uref{ftp://tug.org/texi2roff.tar.gz, @code{texi2roff}} program if you
|
|
do not have @TeX{}; since Texinfo is designed for use with @TeX{},
|
|
@code{texi2roff} is not described here. @code{texi2roff} is not part of
|
|
the standard GNU distribution and is not maintained or up-to-date with
|
|
all the Texinfo features described in this manual.}
|
|
|
|
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.@refill
|
|
|
|
You can use Texinfo to write a book without ever having the intention
|
|
of converting it into online information. You can use Texinfo for
|
|
writing a printed novel, and even to write a printed memo, although
|
|
this latter application is not recommended since electronic mail is so
|
|
much easier.@refill
|
|
|
|
@TeX{} is a general purpose typesetting program. Texinfo provides a
|
|
file @file{texinfo.tex} that contains information (definitions or
|
|
@dfn{macros}) that @TeX{} uses when it typesets a Texinfo file.
|
|
(@file{texinfo.tex} tells @TeX{} how to convert the Texinfo @@-commands
|
|
to @TeX{} commands, which @TeX{} can then process to create the typeset
|
|
document.) @file{texinfo.tex} contains the specifications for printing
|
|
a document. You can get the latest version of @file{texinfo.tex} from
|
|
@uref{ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex}.
|
|
|
|
In the United States, documents are most often printed on 8.5 inch by 11
|
|
inch pages (216@dmn{mm} by 280@dmn{mm}); this is the default size. But
|
|
you can also print for 7 inch by 9.25 inch pages (178@dmn{mm} by
|
|
235@dmn{mm}, the @code{@@smallbook} size; or on A4 or A5 size paper
|
|
(@code{@@afourpaper}, @code{@@afivepaper}). (@xref{smallbook, ,
|
|
Printing ``Small'' Books}. Also, see @ref{A4 Paper, ,Printing on A4
|
|
Paper}.)
|
|
|
|
By changing the parameters in @file{texinfo.tex}, you can change the
|
|
size of the printed document. In addition, you can change the style in
|
|
which the printed document is formatted; for example, you can change the
|
|
sizes and fonts used, the amount of indentation for each paragraph, the
|
|
degree to which words are hyphenated, and the like. By changing the
|
|
specifications, you can make a book look dignified, old and serious, or
|
|
light-hearted, young and cheery.
|
|
|
|
@TeX{} is freely distributable. It is written in a superset of Pascal
|
|
called WEB and can be compiled either in Pascal or (by using a
|
|
conversion program that comes with the @TeX{} distribution) in C.
|
|
(@xref{TeX Mode, ,@TeX{} Mode, emacs, The GNU Emacs Manual}, for information
|
|
about @TeX{}.)@refill
|
|
|
|
@TeX{} is very powerful and has a great many features. Because a
|
|
Texinfo file must be able to present information both on a
|
|
character-only terminal in Info form and in a typeset book, the
|
|
formatting commands that Texinfo supports are necessarily limited.
|
|
|
|
To get a copy of @TeX{}, see
|
|
@ref{Obtaining TeX, , How to Obtain @TeX{}}.
|
|
|
|
|
|
@node Formatting Commands
|
|
@section @@-commands
|
|
@cindex @@-commands
|
|
@cindex Formatting commands
|
|
|
|
In a Texinfo file, the commands that tell @TeX{} how to typeset the
|
|
printed manual and tell @code{makeinfo} and
|
|
@code{texinfo-format-buffer} how to create an Info file are preceded
|
|
by @samp{@@}; they are called @dfn{@@-commands}. For example,
|
|
@code{@@node} is the command to indicate a node and @code{@@chapter}
|
|
is the command to indicate the start of a chapter.@refill
|
|
|
|
@quotation
|
|
@strong{Please note:} All the @@-commands, with the exception of the
|
|
@code{@@TeX@{@}} command, must be written entirely in lower case.
|
|
@end quotation
|
|
|
|
The Texinfo @@-commands are a strictly limited set of constructs. The
|
|
strict limits make it possible for Texinfo files to be understood both
|
|
by @TeX{} and by the code that converts them into Info files. You can
|
|
display Info files on any terminal that displays alphabetic and
|
|
numeric characters. Similarly, you can print the output generated by
|
|
@TeX{} on a wide variety of printers.@refill
|
|
|
|
Depending on what they do or what arguments@footnote{The word
|
|
@dfn{argument} comes from the way it is used in mathematics and does not
|
|
refer to a dispute between two people; it refers to the information
|
|
presented to the command. According to the @cite{Oxford English
|
|
Dictionary}, the word derives from the Latin for @dfn{to make clear,
|
|
prove}; thus it came to mean `the evidence offered as proof', which is
|
|
to say, `the information offered', which led to its mathematical
|
|
meaning. In its other thread of derivation, the word came to mean `to
|
|
assert in a manner against which others may make counter assertions',
|
|
which led to the meaning of `argument' as a dispute.} they take, you
|
|
need to write @@-commands on lines of their own or as part of
|
|
sentences:
|
|
|
|
@itemize @bullet
|
|
@item
|
|
Write a command such as @code{@@quotation} at the beginning of a line as
|
|
the only text on the line. (@code{@@quotation} begins an indented
|
|
environment.)
|
|
|
|
@item
|
|
Write a command such as @code{@@chapter} at the beginning of a line
|
|
followed by the command's arguments, in this case the chapter title, on
|
|
the rest of the line. (@code{@@chapter} creates chapter titles.)@refill
|
|
|
|
@item
|
|
Write a command such as @code{@@dots@{@}} wherever you wish but usually
|
|
within a sentence. (@code{@@dots@{@}} creates dots @dots{})@refill
|
|
|
|
@item
|
|
Write a command such as @code{@@code@{@var{sample-code}@}} wherever you
|
|
wish (but usually within a sentence) with its argument,
|
|
@var{sample-code} in this example, between the braces. (@code{@@code}
|
|
marks text as being code.)@refill
|
|
|
|
@item
|
|
Write a command such as @code{@@example} on a line of its own; write the
|
|
body-text on following lines; and write the matching @code{@@end}
|
|
command, @code{@@end example} in this case, on a line of its own
|
|
after the body-text. (@code{@@example} @dots{} @code{@@end example}
|
|
indents and typesets body-text as an example.) It's usually ok to
|
|
indent environment commands like this, but in complicated and
|
|
hard-to-define circumstances the extra spaces cause extra space to
|
|
appear in the output, so beware.
|
|
@end itemize
|
|
|
|
@noindent
|
|
@cindex Braces, when to use
|
|
As a general rule, a command requires braces if it mingles among other
|
|
text; but it does not need braces if it starts a line of its own. The
|
|
non-alphabetic commands, such as @code{@@:}, are exceptions to the rule;
|
|
they do not need braces.@refill
|
|
|
|
As you gain experience with Texinfo, you will rapidly learn how to
|
|
write the different commands: the different ways to write commands
|
|
make it easier to write and read Texinfo files than if all commands
|
|
followed exactly the same syntax. (For details about @@-command
|
|
syntax, see @ref{Command Syntax, , @@-Command Syntax}.)@refill
|
|
|
|
|
|
@node Conventions
|
|
@section General Syntactic Conventions
|
|
@cindex General syntactic conventions
|
|
@cindex Syntactic conventions
|
|
@cindex Conventions, syntactic
|
|
|
|
This section describes the general conventions used in all Texinfo documents.
|
|
|
|
@itemize @bullet
|
|
@item
|
|
@cindex Source files, characters used
|
|
All printable @sc{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
|
|
xan @samp{@@} character in front of it, like this: @samp{@@@@},
|
|
@samp{@@@{}, and @samp{@@@}}.
|
|
|
|
@item
|
|
@cindex Paragraph separator
|
|
@cindex Blank lines, as paragraph separator
|
|
@cindex Newlines, as blank lines
|
|
Separate paragraphs with one or more blank lines. Currently Texinfo
|
|
only recognizes newline characters as end of line, not the CRLF
|
|
sequence used on some systems; so a @dfn{blank line} means exactly two
|
|
consecutive newlines. Sometimes blank lines are useful or convenient
|
|
in other cases as well; you can use the @code{@@noindent} to inhibit
|
|
paragraph indentation if required (@pxref{noindent,,@code{@@noindent}}).
|
|
|
|
@item
|
|
@cindex Quotation characters (`'), in source
|
|
Use doubled single-quote characters to begin and end quotations:
|
|
@w{@t{`@w{}`@dots{}'@w{}'}}. (Texinfo takes this convention from
|
|
@TeX{}.) @TeX{} converts two single quotes to left- and right-hand
|
|
doubled quotation marks,
|
|
@c this comes out as "like this" in Info, which is just confusing.
|
|
@iftex
|
|
``like this'',
|
|
@end iftex
|
|
and Info converts doubled single-quote characters to @sc{ascii}
|
|
double-quotes: @w{@t{`@w{}`@dots{}'@w{}'}} becomes @w{@t{"@dots{}"}}.
|
|
|
|
@item
|
|
@cindex Dashes, in source
|
|
Use three hyphens in a row, @samp{---}, for a dash---like this. In
|
|
@TeX{}, a single or double hyphen produces a printed dash that is
|
|
shorter than the usual typeset dash. Info reduces three hyphens to two
|
|
for display on the screen.
|
|
|
|
@item
|
|
If you mark off a region of the Texinfo file with the @code{@@iftex}
|
|
and @w{@code{@@end iftex}} commands, that region will appear only in
|
|
the printed copy; in that region, you can use certain commands
|
|
borrowed from plain @TeX{} that you cannot use in Info. Conversely,
|
|
text surrounded by @code{@@ifnottex} and @code{@@end ifnottex} will
|
|
appear in all output formats @emph{except} @TeX{}.
|
|
|
|
Each of the other output formats (@code{html}, @code{info},
|
|
@code{plaintext}, @code{xml}) have an analogous pair of commands.
|
|
@xref{Conditionals}.
|
|
|
|
@item
|
|
@cindex Tabs; don't use!
|
|
@quotation
|
|
@strong{Caution:} Do not use tab characters in a Texinfo file (except in
|
|
verbatim modes)! @TeX{} uses variable-width fonts, which means that it
|
|
is impractical at best to define a tab to work in all circumstances.
|
|
Consequently, @TeX{} treats tabs like single spaces, and that is not
|
|
what they look like. Furthermore, @code{makeinfo} does nothing special
|
|
with tabs, and thus a tab character in your input file may appear
|
|
differently in the output, for example, in indented text.
|
|
|
|
@noindent
|
|
To avoid this problem, Texinfo mode causes GNU Emacs to insert multiple
|
|
spaces when you press the @key{TAB} key.
|
|
|
|
@noindent
|
|
Also, you can run @code{untabify} in Emacs to convert tabs in a region
|
|
to multiple spaces.
|
|
@end quotation
|
|
@end itemize
|
|
|
|
|
|
@node Comments
|
|
@section Comments
|
|
|
|
@cindex Comments
|
|
@findex comment
|
|
@findex c @r{(comment)}
|
|
|
|
You can write comments in a Texinfo file that will not appear in
|
|
either the Info file or the printed manual by using the
|
|
@code{@@comment} command (which may be abbreviated to @code{@@c}).
|
|
Such comments are for the person who revises the Texinfo 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 either the Info file
|
|
or the printed manual.
|
|
|
|
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} and @code{@@setfilename}, work on a whole line. You
|
|
cannot use @code{@@comment} or @code{@@c} in a line beginning with such
|
|
a command.
|
|
|
|
@cindex Ignored text
|
|
@cindex Unprocessed text
|
|
@findex ignore
|
|
You can write long stretches of text that will not appear in either
|
|
the Info file or the printed manual by using 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.
|
|
|
|
Text enclosed by @code{@@ignore} or by failing @code{@@ifset} or
|
|
@code{@@ifclear} conditions is ignored in the sense that it will not
|
|
contribute to the formatted output. However, @TeX{} and makeinfo must
|
|
still parse the ignored text, in order to understand when to @emph{stop}
|
|
ignoring text from the source file; that means that you may still get
|
|
error messages if you have invalid Texinfo commands within ignored text.
|
|
|
|
|
|
@node Minimum
|
|
@section What a Texinfo File Must Have
|
|
@cindex Minimal Texinfo file (requirements)
|
|
@cindex Must have in Texinfo file
|
|
@cindex Required in Texinfo file
|
|
@cindex Texinfo file minimum
|
|
|
|
By convention, the namea of a Texinfo file ends with (in order of
|
|
preference) one of the extensions @file{.texinfo}, @file{.texi},
|
|
@file{.txi}, or @file{.tex}. The longer extensions are preferred since
|
|
they describe more clearly to a human reader the nature of the file.
|
|
The shorter extensions are for operating systems that cannot handle long
|
|
file names.
|
|
|
|
In order to be made into a printed manual and an Info file, a Texinfo
|
|
file @strong{must} begin with lines like this:
|
|
|
|
@example
|
|
@group
|
|
\input texinfo
|
|
@@setfilename @var{info-file-name}
|
|
@@settitle @var{name-of-manual}
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
The contents of the file follow this beginning, and then you
|
|
@strong{must} end a Texinfo file with a line like this:
|
|
|
|
@example
|
|
@@bye
|
|
@end example
|
|
|
|
@findex \input @r{(raw @TeX{} startup)}
|
|
@noindent
|
|
Here's an explanation:
|
|
|
|
@itemize @bullet
|
|
@item
|
|
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{}.)
|
|
|
|
@item
|
|
The @code{@@setfilename} line provides a name for the Info file and
|
|
tells @TeX{} to open auxiliary files. @strong{All text before
|
|
@code{@@setfilename} is ignored!}
|
|
|
|
@item
|
|
The @code{@@settitle} line specifies a title for the page headers (or
|
|
footers) of the printed manual, and the default document description for
|
|
the @samp{<head>} in HTML format. Strictly speaking, @code{@@settitle}
|
|
is optional---if you don't mind your document being titled `Untitled'.
|
|
|
|
@item
|
|
The @code{@@bye} line at the end of the file on a line of its own tells
|
|
the formatters that the file is ended and to stop formatting.
|
|
|
|
@end itemize
|
|
|
|
Typically, you will not use quite such a spare format, but will include
|
|
mode setting and start-of-header and end-of-header lines at the
|
|
beginning of a Texinfo file, like this:
|
|
|
|
@example
|
|
@group
|
|
\input texinfo @@c -*-texinfo-*-
|
|
@@c %**start of header
|
|
@@setfilename @var{info-file-name}
|
|
@@settitle @var{name-of-manual}
|
|
@@c %**end of header
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
In the first line, @samp{-*-texinfo-*-} causes Emacs to switch into
|
|
Texinfo mode when you edit the file.
|
|
|
|
The @code{@@c} lines which surround the @code{@@setfilename} and
|
|
@code{@@settitle} lines are optional, but you need them in order to
|
|
run @TeX{} or Info on just part of the file. (@xref{Start of Header}.)
|
|
|
|
Furthermore, you will usually provide a Texinfo file with 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 three
|
|
lines at the beginning and the one line at the end.
|
|
|
|
|
|
@node Six Parts
|
|
@section Six Parts of a Texinfo File
|
|
|
|
Generally, a Texinfo file contains more than the minimal beginning and
|
|
end described in the previous section---it usually contains the six
|
|
parts listed below. These are described fully in the following sections.
|
|
|
|
@table @r
|
|
@item 1. Header
|
|
The @dfn{Header} names the file, tells @TeX{} which definitions file to
|
|
use, and other such housekeeping tasks.
|
|
|
|
@item 2. Summary and Copyright
|
|
The @dfn{Summary and Copyright} segment describes the document and
|
|
contains the copyright notice and copying permissions. This is done
|
|
with the @code{@@copying} command.
|
|
|
|
@item 3. Title and Copyright
|
|
The @dfn{Title and Copyright} segment contains the title and copyright
|
|
pages for the printed manual. The segment must be enclosed between
|
|
@code{@@titlepage} and @code{@@end titlepage} commands. The title and
|
|
copyright page appear only in the printed manual.
|
|
|
|
@item 4. `Top' Node and Master Menu
|
|
The `Top' node starts off the online output; it does not appear in the
|
|
printed manual. We recommend including the copying permissions here as
|
|
well as the segments above. And it contains at least a top-level menu
|
|
listing the chapters, and possibly a @dfn{Master Menu} listing all the
|
|
nodes in the entire document.
|
|
|
|
@item 5. Body
|
|
The @dfn{Body} of the document is typically structured like a
|
|
traditional book or encyclopedia, but it may be free form.
|
|
|
|
@item 6. End
|
|
The @dfn{End} segment contains commands for printing indices and
|
|
generating the table of contents, and the @code{@@bye} command on a line
|
|
of its own.
|
|
@end table
|
|
|
|
|
|
@node Short Sample
|
|
@section A Short Sample Texinfo File
|
|
@cindex Sample Texinfo file, with comments
|
|
|
|
Here is a very short but complete Texinfo file, in the six conventional
|
|
parts enumerated in the previous section, so you can see how Texinfo
|
|
source appears in practice. The first three parts of the file, from
|
|
@samp{\input texinfo} through to @samp{@@end titlepage}, look more
|
|
intimidating than they are: most of the material is standard
|
|
boilerplate; when writing a manual, you simply change the names as
|
|
appropriate.
|
|
|
|
@xref{Beginning a File}, for full documentation on the commands listed
|
|
here. @xref{GNU Sample Texts}, for the full texts to be used in GNU
|
|
manuals.
|
|
|
|
In the following, the sample text is @emph{indented}; comments on it are
|
|
not. The complete file, without interspersed comments, is shown in
|
|
@ref{Short Sample Texinfo File}.
|
|
|
|
@subheading Part 1: Header
|
|
|
|
@noindent
|
|
The header does not appear in either the Info file or the
|
|
printed output. It sets various parameters, including the
|
|
name of the Info file and the title used in the header.
|
|
|
|
@example
|
|
@group
|
|
\input texinfo @@c -*-texinfo-*-
|
|
@@c %**start of header
|
|
@@setfilename sample.info
|
|
@@settitle Sample Manual 1.0
|
|
@@c %**end of header
|
|
@end group
|
|
@end example
|
|
|
|
@subheading Part 2: Summary Description and Copyright
|
|
|
|
@noindent
|
|
A real manual includes more text here, according to the license under
|
|
which it is distributed. @xref{GNU Sample Texts}.
|
|
|
|
@example
|
|
@group
|
|
@@copying
|
|
This is a short example of a complete Texinfo file, version 1.0.
|
|
|
|
Copyright @@copyright@{@} 2003 Free Software Foundation, Inc.
|
|
@@end copying
|
|
@end group
|
|
@end example
|
|
|
|
@subheading Part 3: Titlepage, Contents, Copyright
|
|
|
|
@noindent
|
|
The titlepage segment does not appear in the online output, only in the
|
|
printed manual. We use the @code{@@insertcopying} command to
|
|
include the permission text from the previous section, instead of
|
|
writing it out again; it is output on the back of the title page. The
|
|
@code{@@contents} command generates a table of contents.
|
|
|
|
@example
|
|
@group
|
|
@@titlepage
|
|
@@title Sample Title
|
|
@end group
|
|
|
|
@group
|
|
@@c The following two commands start the copyright page.
|
|
@@page
|
|
@@vskip 0pt plus 1filll
|
|
@@insertcopying
|
|
@@end titlepage
|
|
@end group
|
|
|
|
@@c Output the table of contents at the beginning.
|
|
@@contents
|
|
@end example
|
|
|
|
@subheading Part 4: `Top' Node and Master Menu
|
|
|
|
@noindent
|
|
The `Top' node contains the master menu for the Info file. Since the
|
|
printed manual uses a table of contents rather than a menu, it
|
|
excludes the `Top' node. We also include the copying text again for
|
|
the benefit of online readers. Since the copying text begins with
|
|
a brief description of the manual, no other text is needed in this
|
|
case. The @samp{@@top} command itself helps @command{makeinfo}
|
|
determine the relationships between nodes.
|
|
|
|
@example
|
|
@@ifnottex
|
|
@@node Top
|
|
@@top Short Sample
|
|
|
|
@@insertcopying
|
|
@@end ifnottex
|
|
|
|
@group
|
|
@@menu
|
|
* First Chapter:: The first chapter is the
|
|
only chapter in this sample.
|
|
* Index:: Complete index.
|
|
@@end menu
|
|
@end group
|
|
@end example
|
|
|
|
|
|
@subheading Part 5: The Body of the Document
|
|
|
|
@noindent
|
|
The body segment contains all the text of the document, but not the
|
|
indices or table of contents. This example illustrates a node and a
|
|
chapter containing an enumerated list.
|
|
|
|
@example
|
|
@group
|
|
@@node First Chapter
|
|
@@chapter First Chapter
|
|
|
|
@@cindex chapter, first
|
|
@end group
|
|
|
|
@group
|
|
This is the first chapter.
|
|
@@cindex index entry, another
|
|
@end group
|
|
|
|
@group
|
|
Here is a numbered list.
|
|
|
|
@@enumerate
|
|
@@item
|
|
This is the first item.
|
|
|
|
@@item
|
|
This is the second item.
|
|
@@end enumerate
|
|
@end group
|
|
@end example
|
|
|
|
|
|
@subheading Part 6: The End of the Document
|
|
|
|
@noindent
|
|
The end segment contains commands for generating an index in a node and
|
|
unnumbered chapter of its own, and the @code{@@bye} command that marks
|
|
the end of the document.
|
|
|
|
@example
|
|
@group
|
|
@@node Index
|
|
@@unnumbered Index
|
|
@end group
|
|
|
|
@group
|
|
@@printindex cp
|
|
|
|
@@bye
|
|
@end group
|
|
@end example
|
|
|
|
|
|
@subheading Some Results
|
|
|
|
Here is what the contents of the first chapter of the sample look like:
|
|
|
|
@sp 1
|
|
@need 700
|
|
@quotation
|
|
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
|
|
@end quotation
|
|
|
|
|
|
@node History
|
|
@section History
|
|
|
|
@cindex Stallman, Richard M.
|
|
@cindex Chassell, Robert J.
|
|
@cindex Fox, Brian
|
|
@cindex Berry, Karl
|
|
Richard M.@: Stallman invented the Texinfo format, wrote the initial
|
|
processors, and created Edition 1.0 of this manual. @w{Robert J.@:}
|
|
Chassell greatly revised and extended the manual, starting with Edition
|
|
1.1. Brian Fox was responsible for the standalone Texinfo distribution
|
|
until version 3.8, and wrote the standalone @command{makeinfo} and
|
|
@command{info} programs. Karl Berry has continued maintenance since
|
|
Texinfo 3.8 (manual edition 2.22).
|
|
|
|
@cindex Pinard, Fran@,{c}ois
|
|
@cindex Zuhn, David D.
|
|
@cindex Weisshaus, Melissa
|
|
@cindex Zaretskii, Eli
|
|
@cindex Schwab, Andreas
|
|
@cindex Weinberg, Zack
|
|
Our thanks go out to all who helped improve this work, particularly the
|
|
indefatigable Eli Zaretskii and Andreas Schwab, who have provided
|
|
patches beyond counting. Fran@,{c}ois Pinard and @w{David D.@: Zuhn},
|
|
tirelessly recorded and reported mistakes and obscurities. Zack
|
|
Weinberg did the impossible by implementing the macro syntax in
|
|
@file{texinfo.tex}. Special thanks go to Melissa Weisshaus for her
|
|
frequent reviews of nearly similar editions. Dozens of others have
|
|
contributed patches and suggestions, they are gratefully acknowledged in
|
|
the @file{ChangeLog} file. Our mistakes are our own.
|
|
|
|
@cindex Scribe
|
|
@cindex Reid, Brian
|
|
@cindex History of Texinfo
|
|
@cindex Texinfo history
|
|
A bit of history: 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 strived to describe document contents rather than
|
|
formatting, an idea wholeheartedly adopted by Texinfo.
|
|
|
|
@cindex Bolio
|
|
@cindex Bo@TeX{}
|
|
Meanwhile, people at MIT developed another, not too dissimilar format
|
|
called Bolio. This then was converted to using @TeX{} as its typesetting
|
|
language: 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. Richard Stallman (RMS) worked on
|
|
both Bolio and Bo@TeX{}. He also developed a nifty on-line help format
|
|
called Info, and then 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.
|
|
|
|
|
|
@node Texinfo Mode
|
|
@chapter 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 @sc{ascii} file. However, GNU Emacs
|
|
comes with a special mode, called Texinfo mode, that provides Emacs
|
|
commands and tools to help ease your work.
|
|
|
|
This chapter describes features of GNU Emacs' Texinfo mode but not any
|
|
features of the Texinfo formatting language. So if you are reading this
|
|
manual straight through from the beginning, you may want to skim through
|
|
this chapter briefly and come back to it after reading succeeding
|
|
chapters which describe the Texinfo formatting language in detail.
|
|
|
|
@menu
|
|
* Texinfo Mode Overview:: How Texinfo mode can help you.
|
|
* Emacs Editing:: Texinfo mode adds to GNU Emacs' general
|
|
purpose editing features.
|
|
* Inserting:: How to insert frequently used @@-commands.
|
|
* Showing the Structure:: How to show the structure of a file.
|
|
* Updating Nodes and Menus:: How to update or create new nodes and menus.
|
|
* Info Formatting:: How to format for Info.
|
|
* Printing:: How to format and print part or all of a file.
|
|
* Texinfo Mode Summary:: Summary of all the Texinfo mode commands.
|
|
@end menu
|
|
|
|
@node Texinfo Mode Overview, Emacs Editing, Texinfo Mode, Texinfo Mode
|
|
@ifinfo
|
|
@heading Texinfo Mode Overview
|
|
@end ifinfo
|
|
|
|
Texinfo mode provides special features for working with Texinfo
|
|
files.
|
|
You can:@refill
|
|
|
|
@itemize @bullet
|
|
@item
|
|
Insert frequently used @@-commands. @refill
|
|
|
|
@item
|
|
Automatically create @code{@@node} lines.
|
|
|
|
@item
|
|
Show the structure of a Texinfo source file.@refill
|
|
|
|
@item
|
|
Automatically create or update the `Next',
|
|
`Previous', and `Up' pointers of a node.
|
|
|
|
@item
|
|
Automatically create or update menus.@refill
|
|
|
|
@item
|
|
Automatically create a master menu.@refill
|
|
|
|
@item
|
|
Format a part or all of a file for Info.@refill
|
|
|
|
@item
|
|
Typeset and print part or all of a file.@refill
|
|
@end itemize
|
|
|
|
Perhaps the two most helpful features are those for inserting frequently
|
|
used @@-commands and for creating node pointers and menus.@refill
|
|
|
|
@node Emacs Editing, Inserting, Texinfo Mode Overview, Texinfo Mode
|
|
@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.@refill
|
|
|
|
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 p} (@code{narrow-to-page}) command. (@xref{Pages, , ,emacs,
|
|
The GNU Emacs Manual}, for details about the page commands.)@refill
|
|
|
|
You may name a Texinfo file however you wish, but the convention is to
|
|
end a Texinfo file name with one of the extensions
|
|
@file{.texinfo}, @file{.texi}, @file{.txi}, or @file{.tex}. A longer
|
|
extension is preferred, since it is explicit, but a shorter extension
|
|
may be necessary for operating systems that limit the length of file
|
|
names. GNU Emacs automatically enters Texinfo mode when you visit a
|
|
file with a @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}.@refill
|
|
|
|
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.@refill
|
|
|
|
@node Inserting, Showing the Structure, Emacs Editing, Texinfo Mode
|
|
@comment node-name, next, previous, up
|
|
@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.@refill
|
|
|
|
The insert commands are invoked by typing @kbd{C-c} twice and then the
|
|
first letter of the @@-command:@refill
|
|
|
|
@table @kbd
|
|
@item C-c C-c c
|
|
@itemx M-x texinfo-insert-@@code
|
|
@findex texinfo-insert-@@code
|
|
Insert @code{@@code@{@}} and put the
|
|
cursor between the braces.@refill
|
|
|
|
@item C-c C-c d
|
|
@itemx M-x texinfo-insert-@@dfn
|
|
@findex texinfo-insert-@@dfn
|
|
Insert @code{@@dfn@{@}} and put the
|
|
cursor between the braces.@refill
|
|
|
|
@item C-c C-c e
|
|
@itemx M-x texinfo-insert-@@end
|
|
@findex 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.)@refill
|
|
|
|
@item C-c C-c i
|
|
@itemx M-x texinfo-insert-@@item
|
|
@findex texinfo-insert-@@item
|
|
Insert @code{@@item} and put the
|
|
cursor at the beginning of the next line.@refill
|
|
|
|
@item C-c C-c k
|
|
@itemx M-x texinfo-insert-@@kbd
|
|
@findex texinfo-insert-@@kbd
|
|
Insert @code{@@kbd@{@}} and put the
|
|
cursor between the braces.@refill
|
|
|
|
@item C-c C-c n
|
|
@itemx M-x texinfo-insert-@@node
|
|
@findex 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}.@refill
|
|
|
|
@item C-c C-c o
|
|
@itemx M-x texinfo-insert-@@noindent
|
|
@findex texinfo-insert-@@noindent
|
|
Insert @code{@@noindent} and put the
|
|
cursor at the beginning of the next line.@refill
|
|
|
|
@item C-c C-c s
|
|
@itemx M-x texinfo-insert-@@samp
|
|
@findex texinfo-insert-@@samp
|
|
Insert @code{@@samp@{@}} and put the
|
|
cursor between the braces.@refill
|
|
|
|
@item C-c C-c t
|
|
@itemx M-x texinfo-insert-@@table
|
|
@findex texinfo-insert-@@table
|
|
Insert @code{@@table} followed by a @key{SPC}
|
|
and leave the cursor after the @key{SPC}.@refill
|
|
|
|
@item C-c C-c v
|
|
@itemx M-x texinfo-insert-@@var
|
|
@findex texinfo-insert-@@var
|
|
Insert @code{@@var@{@}} and put the
|
|
cursor between the braces.@refill
|
|
|
|
@item C-c C-c x
|
|
@itemx M-x texinfo-insert-@@example
|
|
@findex texinfo-insert-@@example
|
|
Insert @code{@@example} and put the
|
|
cursor at the beginning of the next line.@refill
|
|
|
|
@c M-@{ was the binding for texinfo-insert-braces;
|
|
@c in Emacs 19, backward-paragraph will take this binding.
|
|
@item C-c C-c @{
|
|
@itemx M-x texinfo-insert-braces
|
|
@findex texinfo-insert-braces
|
|
Insert @code{@{@}} and put the cursor between the braces.@refill
|
|
|
|
@item C-c C-c @}
|
|
@itemx C-c C-c ]
|
|
@itemx M-x up-list
|
|
@findex up-list
|
|
Move from between a pair of braces forward past the closing brace.
|
|
Typing @kbd{C-c C-c ]} is easier than typing @kbd{C-c C-c @}}, which
|
|
is, however, more mnemonic; hence the two keybindings. (Also, you can
|
|
move out from between braces by typing @kbd{C-f}.)@refill
|
|
@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}.@refill
|
|
|
|
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}.@refill
|
|
|
|
@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}.)@refill
|
|
|
|
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 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.@refill
|
|
|
|
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.@refill
|
|
|
|
@node Showing the Structure, Updating Nodes and Menus, Inserting, Texinfo Mode
|
|
@comment node-name, next, previous, up
|
|
@section Showing the Section Structure of a File
|
|
@cindex Showing the section structure of a file
|
|
@cindex Section structure of a file, showing it
|
|
@cindex Structure of a file, showing it
|
|
@cindex Outline of file structure, showing it
|
|
@cindex Contents-like outline of file structure
|
|
@cindex File section structure, showing it
|
|
@cindex Texinfo file section structure, showing it
|
|
|
|
You can show the section structure of a Texinfo file by using the
|
|
@kbd{C-c C-s} command (@code{texinfo-show-structure}). This command
|
|
shows the section structure of a Texinfo file by listing 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.@refill
|
|
|
|
@table @kbd
|
|
@item C-c C-s
|
|
@itemx M-x texinfo-show-structure
|
|
@findex texinfo-show-structure
|
|
Show the @code{@@chapter}, @code{@@section}, and such lines of a
|
|
Texinfo file.@refill
|
|
|
|
@item C-c C-c
|
|
@itemx M-x occur-mode-goto-occurrence
|
|
@findex occur-mode-goto-occurrence
|
|
Go to the line in the Texinfo file corresponding to the line under the
|
|
cursor in the @file{*Occur*} buffer.@refill
|
|
@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.)@refill
|
|
|
|
@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 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.@refill
|
|
|
|
@node Updating Nodes and Menus, Info Formatting, Showing the Structure, Texinfo Mode
|
|
@comment node-name, next, previous, up
|
|
@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
|
|
|
|
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.
|
|
|
|
If you do not use the updating commands, you need to write menus and
|
|
node pointers by hand, which is a tedious task.@refill
|
|
|
|
@menu
|
|
* Updating Commands:: Five major updating commands.
|
|
* Updating Requirements:: How to structure a Texinfo file for
|
|
using the updating command.
|
|
* Other Updating Commands:: How to indent descriptions, insert
|
|
missing nodes lines, and update
|
|
nodes in sequence.
|
|
@end menu
|
|
|
|
@node Updating Commands, Updating Requirements, Updating Nodes and Menus, Updating Nodes and Menus
|
|
@ifinfo
|
|
@subheading The Updating Commands
|
|
@end ifinfo
|
|
|
|
You can use the updating commands to:@refill
|
|
|
|
@itemize @bullet
|
|
@item
|
|
insert or update the `Next', `Previous', and `Up' pointers of a
|
|
node,@refill
|
|
|
|
@item
|
|
insert or update the menu for a section, and@refill
|
|
|
|
@item
|
|
create a master menu for a Texinfo source file.@refill
|
|
@end itemize
|
|
|
|
You can also use the commands to update all the nodes and menus in a
|
|
region or in a whole Texinfo file.@refill
|
|
|
|
The updating commands work only with conventional Texinfo files, which
|
|
are structured hierarchically like books. In such files, a structuring
|
|
command line must follow closely after each @code{@@node} line, except
|
|
for the `Top' @code{@@node} line. (A @dfn{structuring command line} is
|
|
a line beginning with @code{@@chapter}, @code{@@section}, or other
|
|
similar command.)
|
|
|
|
You can write the structuring command line 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 an @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 an @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.@refill
|
|
|
|
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.@refill
|
|
|
|
The @code{texinfo-master-menu} command is the primary command:@refill
|
|
|
|
@table @kbd
|
|
@item C-c C-u m
|
|
@itemx M-x texinfo-master-menu
|
|
@findex texinfo-master-menu
|
|
Create or update a master menu that includes all the other menus
|
|
(incorporating the descriptions from pre-existing menus, if
|
|
any).@refill
|
|
|
|
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.)@refill
|
|
|
|
For @code{texinfo-master-menu} to work, the Texinfo file must have a
|
|
`Top' node and at least one subsequent node.@refill
|
|
|
|
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.@refill
|
|
@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.@refill
|
|
|
|
@need 1000
|
|
The commands are:@refill
|
|
|
|
@table @kbd
|
|
@item C-c C-u C-n
|
|
@itemx M-x texinfo-update-node
|
|
@findex 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).@refill
|
|
|
|
@item C-c C-u C-m
|
|
@itemx M-x texinfo-make-menu
|
|
@findex 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.@refill
|
|
|
|
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.@refill
|
|
|
|
@item C-c C-u C-e
|
|
@itemx M-x texinfo-every-node-update
|
|
@findex texinfo-every-node-update
|
|
Insert or update the `Next', `Previous', and `Up' pointers for every
|
|
node in the buffer.@refill
|
|
|
|
@item C-c C-u C-a
|
|
@itemx M-x texinfo-all-menus-update
|
|
@findex 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.@refill
|
|
|
|
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.)@refill
|
|
|
|
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.@refill
|
|
@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 is often useful to reduce it to as low as 24. You
|
|
can set the variable with the @kbd{M-x edit-options} command
|
|
(@pxref{Edit Options, , Editing Variable Values, 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}).@refill
|
|
|
|
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. (@xref{Other Updating
|
|
Commands}, for more information.)@refill
|
|
|
|
@node Updating Requirements
|
|
@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.@refill
|
|
|
|
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}.@refill
|
|
|
|
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. (Instead of an
|
|
@code{@@comment} line, you may also write an @code{@@ifinfo} line.)
|
|
|
|
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.@refill
|
|
|
|
Incidentally, the @code{makeinfo} command will create an Info file for a
|
|
hierarchically organized Texinfo file that lacks `Next', `Previous' and
|
|
`Up' pointers. Thus, if you can be sure that your Texinfo file will be
|
|
formatted with @code{makeinfo}, you have no need for the update node
|
|
commands. (@xref{Creating an Info File}, for more information about
|
|
@code{makeinfo}.) However, both @code{makeinfo} and the
|
|
@code{texinfo-format-@dots{}} commands require that you insert menus in
|
|
the file.
|
|
|
|
|
|
@node Other Updating Commands
|
|
@subsection Other Updating Commands
|
|
|
|
In addition to the five major updating commands, Texinfo mode
|
|
possesses several less frequently used updating commands:@refill
|
|
|
|
@table @kbd
|
|
@item M-x texinfo-insert-node-lines
|
|
@findex 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.@refill
|
|
|
|
With an argument (@kbd{C-u} as prefix argument, if interactive), the
|
|
@code{texinfo-insert-node-lines} command 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.@refill
|
|
|
|
For example, the following marks a whole buffer as a region and inserts
|
|
@code{@@node} lines and titles throughout:@refill
|
|
|
|
@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.
|
|
|
|
@item M-x texinfo-multiple-files-update
|
|
@findex texinfo-multiple-files-update @r{(in brief)}
|
|
Update nodes and menus in a document built from several separate files.
|
|
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. The @code{texinfo-multiple-files-update} command is
|
|
described in the appendix on @code{@@include} files.
|
|
@ifinfo
|
|
@xref{texinfo-multiple-files-update}.@refill
|
|
@end ifinfo
|
|
@iftex
|
|
@xref{texinfo-multiple-files-update, ,
|
|
@code{texinfo-multiple-files-update}}.@refill
|
|
@end iftex
|
|
|
|
@item M-x texinfo-indent-menu-description
|
|
@findex 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.@refill
|
|
|
|
@item M-x texinfo-sequential-node-update
|
|
@findex 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.@refill
|
|
@end table
|
|
|
|
@node Info Formatting, Printing, Updating Nodes and Menus, Texinfo Mode
|
|
@comment node-name, next, previous, up
|
|
@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. Often, when you are writing a document, you
|
|
want to format only part of a file---that is, a region.@refill
|
|
|
|
You can use either the @code{texinfo-format-region} or the
|
|
@code{makeinfo-region} command to format a region:@refill
|
|
|
|
@table @kbd
|
|
@findex texinfo-format-region
|
|
@item C-c C-e C-r
|
|
@itemx M-x texinfo-format-region
|
|
@itemx C-c C-m C-r
|
|
@itemx M-x makeinfo-region
|
|
Format the current region for Info.@refill
|
|
@end table
|
|
|
|
You can use either the @code{texinfo-format-buffer} or the
|
|
@code{makeinfo-buffer} command to format a whole buffer:@refill
|
|
|
|
@table @kbd
|
|
@findex texinfo-format-buffer
|
|
@item C-c C-e C-b
|
|
@itemx M-x texinfo-format-buffer
|
|
@itemx C-c C-m C-b
|
|
@itemx M-x makeinfo-buffer
|
|
Format the current buffer for Info.@refill
|
|
@end table
|
|
|
|
@need 1000
|
|
For example, after writing a Texinfo file, you can type the following:
|
|
|
|
@example
|
|
C-u C-c C-u m
|
|
@exdent or
|
|
C-u M-x texinfo-master-menu
|
|
@end example
|
|
|
|
@noindent
|
|
This updates all the nodes and menus. Then type the following to create
|
|
an Info file:
|
|
|
|
@example
|
|
C-c C-m C-b
|
|
@exdent or
|
|
M-x makeinfo-buffer
|
|
@end example
|
|
|
|
For @TeX{} or the Info formatting commands to work, the file @emph{must}
|
|
include a line that has @code{@@setfilename} in its header.
|
|
|
|
@xref{Creating an Info File}, for details about Info formatting.@refill
|
|
|
|
@node Printing, Texinfo Mode Summary, Info Formatting, Texinfo Mode
|
|
@comment node-name, next, previous, up
|
|
@section Formatting and Printing
|
|
@cindex Formatting for printing
|
|
@cindex Printing a region or buffer
|
|
@cindex Region formatting and printing
|
|
@cindex Buffer formatting and printing
|
|
@cindex Part of file formatting and printing
|
|
|
|
Typesetting and printing a Texinfo file is a multi-step process in which
|
|
you first create a file for printing (called a DVI file), and then
|
|
print the file. Optionally, you may also create indices. To do this,
|
|
you must run the @code{texindex} command after first running the
|
|
@code{tex} typesetting command; and then you must run the @code{tex}
|
|
command again. Or else run the @code{texi2dvi} command which
|
|
automatically creates indices as needed (@pxref{Format with texi2dvi}).
|
|
|
|
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.@refill
|
|
|
|
@table @kbd
|
|
@item C-c C-t C-b
|
|
@itemx M-x texinfo-tex-buffer
|
|
@findex texinfo-tex-buffer
|
|
Run @code{texi2dvi} on the buffer. In addition to running @TeX{} on the
|
|
buffer, this command automatically creates or updates indices as
|
|
needed.@refill
|
|
|
|
@item C-c C-t C-r
|
|
@itemx M-x texinfo-tex-region
|
|
@findex texinfo-tex-region
|
|
Run @TeX{} on the region.@refill
|
|
|
|
@item C-c C-t C-i
|
|
@itemx M-x texinfo-texindex
|
|
Run @code{texindex} to sort the indices of a Texinfo file formatted with
|
|
@code{texinfo-tex-region}. The @code{texinfo-tex-region} command does
|
|
not run @code{texindex} automatically; it only runs the @code{tex}
|
|
typesetting command. You must run the @code{texinfo-tex-region} command
|
|
a second time after sorting the raw index files with the @code{texindex}
|
|
command. (Usually, you do not format an index when you format a region,
|
|
only when you format a buffer. Now that the @code{texi2dvi} command
|
|
exists, there is little or no need for this command.)@refill
|
|
|
|
@item C-c C-t C-p
|
|
@itemx M-x texinfo-tex-print
|
|
@findex texinfo-tex-print
|
|
Print the file (or the part of the file) previously formatted with
|
|
@code{texinfo-tex-buffer} or @code{texinfo-tex-region}.@refill
|
|
@end table
|
|
|
|
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 an @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.)@refill
|
|
|
|
@xref{Hardcopy}, for a description of the other @TeX{} related
|
|
commands, such as @code{tex-show-print-queue}.@refill
|
|
|
|
@node Texinfo Mode Summary, , Printing, Texinfo Mode
|
|
@comment node-name, next, previous, up
|
|
@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.@refill
|
|
|
|
@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.)@refill
|
|
|
|
@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 C-c @{ @r{Insert braces.}
|
|
C-c C-c ]
|
|
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.@refill
|
|
|
|
@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.@refill
|
|
|
|
@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}.@refill
|
|
|
|
@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}.@refill
|
|
|
|
@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.@refill
|
|
|
|
The Info formatting commands that are written in C and based on the
|
|
@code{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.@refill
|
|
|
|
@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 @code{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 @code{makeinfo} output buffer.}
|
|
C-c C-m C-k @r{Kill the @code{makeinfo} 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.@refill
|
|
|
|
@example
|
|
C-c C-t C-r @r{Run @TeX{} on the region.}
|
|
C-c C-t C-b @r{Run} @code{texi2dvi} @r{on the buffer.}
|
|
C-c C-t C-i @r{Run} @code{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 Beginning a File
|
|
@chapter Beginning a Texinfo File
|
|
@cindex Beginning a Texinfo file
|
|
@cindex Texinfo file beginning
|
|
@cindex File beginning
|
|
|
|
Certain pieces of information must be provided at the beginning of a
|
|
Texinfo file, such as the name for the output file(s), the title of the
|
|
document, and the Top node.
|
|
|
|
This chapter expands on the minimal complete Texinfo source file
|
|
previously given (@pxref{Six Parts}).
|
|
|
|
@menu
|
|
* Sample Beginning:: A sample beginning for a Texinfo file.
|
|
* Texinfo File Header:: The first lines.
|
|
* Document Permissions:: Ensuring your manual is free.
|
|
* Titlepage & Copyright Page:: Creating the title and copyright pages.
|
|
* The Top Node:: Creating the `Top' node and master menu.
|
|
* Global Document Commands:: Affecting formatting throughout.
|
|
* Software Copying Permissions:: Ensure that you and others continue to
|
|
have the right to use and share software.
|
|
@end menu
|
|
|
|
|
|
@node Sample Beginning
|
|
@section Sample Texinfo File Beginning
|
|
|
|
@cindex Example beginning of Texinfo file
|
|
|
|
The following sample shows what is needed. The elements given here are
|
|
explained in more detail in the following sections. Other commands are
|
|
often included at the beginning of Texinfo files, but the ones here are
|
|
the most critical.
|
|
|
|
@xref{GNU Sample Texts}, for the full texts to be used in GNU manuals.
|
|
|
|
@example
|
|
\input texinfo @@c -*-texinfo-*-
|
|
@@c %**start of header
|
|
@@setfilename @var{infoname}.info
|
|
@@settitle @var{name-of-manual} @var{version}
|
|
@@c %**end of header
|
|
|
|
@@copying
|
|
This manual is for @var{program}, version @var{version}.
|
|
|
|
Copyright @@copyright@{@} @var{years} @var{copyright-owner}.
|
|
|
|
@group
|
|
@@quotation
|
|
Permission is granted to @dots{}
|
|
@@end quotation
|
|
@@end copying
|
|
@end group
|
|
|
|
@group
|
|
@@titlepage
|
|
@@title @var{name-of-manual-when-printed}
|
|
@@subtitle @var{subtitle-if-any}
|
|
@@subtitle @var{second-subtitle}
|
|
@@author @var{author}
|
|
@end group
|
|
|
|
@group
|
|
@@c The following two commands
|
|
@@c start the copyright page.
|
|
@@page
|
|
@@vskip 0pt plus 1filll
|
|
@@insertcopying
|
|
@end group
|
|
|
|
Published by @dots{}
|
|
@@end titlepage
|
|
|
|
@@c So the toc is printed in the right place.
|
|
@@contents
|
|
|
|
@@ifnottex
|
|
@@node Top
|
|
@@top @var{title}
|
|
|
|
@@insertcopying
|
|
@@end ifnottex
|
|
|
|
@group
|
|
@@menu
|
|
* First Chapter:: Getting started @dots{}
|
|
* Second Chapter:: @dots{}
|
|
@dots{}
|
|
* Copying:: Your rights and freedoms.
|
|
@@end menu
|
|
@end group
|
|
|
|
@group
|
|
@@node First Chapter
|
|
@@chapter First Chapter
|
|
|
|
@@cindex first chapter
|
|
@@cindex chapter, first
|
|
@dots{}
|
|
@end group
|
|
@end example
|
|
|
|
|
|
@node Texinfo File Header
|
|
@section Texinfo File Header
|
|
@cindex Header for Texinfo files
|
|
@cindex Texinfo file header
|
|
|
|
Texinfo files start with at least three lines that provide Info and
|
|
@TeX{} with necessary information. These are the @code{\input texinfo}
|
|
line, the @code{@@settitle} line, and the @code{@@setfilename} line.
|
|
|
|
Also, if you want to format just part of the Texinfo file, you must
|
|
write the @code{@@settitle} and @code{@@setfilename} lines between
|
|
start-of-header and end-of-header lines. The start- and end-of-header
|
|
lines are optional, but they do no harm, so you might as well always
|
|
include them.
|
|
|
|
Any command that affects document formatting as a whole makes sense to
|
|
include in the header. @code{@@synindex} (@pxref{synindex}), for
|
|
instance, is another command often included in the header. @xref{GNU
|
|
Sample Texts}, for complete sample texts.
|
|
|
|
Thus, the beginning of a Texinfo file generally looks like this:
|
|
|
|
@example
|
|
@group
|
|
\input texinfo @@c -*-texinfo-*-
|
|
@@c %**start of header
|
|
@@setfilename sample.info
|
|
@@settitle Sample Manual 1.0
|
|
@@c %**end of header
|
|
@end group
|
|
@end example
|
|
|
|
@menu
|
|
* First Line:: The first line of a Texinfo file.
|
|
* Start of Header:: Formatting a region requires this.
|
|
* setfilename:: Tell Info the name of the Info file.
|
|
* settitle:: Create a title for the printed work.
|
|
* End of Header:: Formatting a region requires this.
|
|
@end menu
|
|
|
|
|
|
@node First Line
|
|
@subsection 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 @@c -*-texinfo-*-
|
|
@end example
|
|
|
|
@noindent
|
|
This line serves two functions:
|
|
|
|
@enumerate
|
|
@item
|
|
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.
|
|
|
|
@item
|
|
When the file is edited in GNU Emacs, the @samp{-*-texinfo-*-} mode
|
|
specification tells Emacs to use Texinfo mode.
|
|
@end enumerate
|
|
|
|
|
|
@node Start of Header
|
|
@subsection Start of Header
|
|
@cindex Start of header line
|
|
|
|
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 line with @code{@@setfilename} and
|
|
@code{@@settitle} lines and, optionally, with other commands that
|
|
globally affect the document formatting, such as @code{@@synindex} or
|
|
@code{@@footnotestyle}; and then by an end-of-header line (@pxref{End of
|
|
Header}).
|
|
|
|
The start- and end-of-header lines allow you to format only part of a
|
|
Texinfo file for Info or printing. @xref{texinfo-format commands}.
|
|
|
|
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}.
|
|
|
|
|
|
@node setfilename
|
|
@subsection @code{@@setfilename}: Set the output file name
|
|
@findex setfilename
|
|
@cindex Texinfo requires @code{@@setfilename}
|
|
|
|
In order to serve as the primary input file for either @code{makeinfo}
|
|
or @TeX{}, a Texinfo file must contain a line that looks like this:
|
|
|
|
@example
|
|
@@setfilename @var{info-file-name}
|
|
@end example
|
|
|
|
Write the @code{@@setfilename} command at the beginning of a line and
|
|
follow it on the same line by the Info file name. Do not write anything
|
|
else on the line; anything on the line after the command is considered
|
|
part of the file name, including what would otherwise be a
|
|
comment.
|
|
|
|
@cindex Ignored before @code{@@setfilename}
|
|
@cindex @samp{\input} source line ignored
|
|
The Info formatting commands ignore everything written before the
|
|
@code{@@setfilename} line, which is why the very first line of
|
|
the file (the @code{\input} line) does not show up in the output.
|
|
|
|
The @code{@@setfilename} line specifies the name of the output file to
|
|
be generated. This 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, preferably, replace it with the @samp{.info} extension.
|
|
|
|
@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
|
|
is @file{texinfo} rather than @file{texinfo.info}. When @code{makeinfo}
|
|
is running on operating systems such as MS-DOS which impose severe
|
|
limits on file names, it may remove some characters from the original
|
|
file name to leave enough space for the subfile suffix, thus producing
|
|
files named @file{texin-10}, @file{gcc.i12}, etc.
|
|
|
|
When producing HTML output, @code{makeinfo} will replace any extension
|
|
with @samp{html}, or add @samp{.html} if the given name has no
|
|
extension.
|
|
|
|
@pindex texinfo.cnf
|
|
The @code{@@setfilename} line produces no output when you typeset a
|
|
manual with @TeX{}, but it is nevertheless essential: it opens the
|
|
index, cross-reference, and other auxiliary files used by Texinfo, and
|
|
also reads @file{texinfo.cnf} if that file is present on your system
|
|
(@pxref{Preparing for TeX,, Preparing for @TeX{}}).
|
|
|
|
|
|
@node settitle
|
|
@subsection @code{@@settitle}: Set the document title
|
|
@findex settitle
|
|
|
|
In order to be made into a printed manual, a Texinfo file must 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. This tells @TeX{} the title to
|
|
use in a header or footer. Do not write anything else on the line;
|
|
anything on the line after the command is considered part of the title,
|
|
including what would otherwise be a comment.
|
|
|
|
The @code{@@settitle} command should precede everything that generates
|
|
actual output in @TeX{}.
|
|
|
|
@cindex <title> HTML tag
|
|
In the HTML file produced by @command{makeinfo}, @var{title} also serves
|
|
as the document @samp{<title>} and the default document description in
|
|
the @samp{<head>} part; see @ref{documentdescription}, for how to change
|
|
that.
|
|
|
|
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 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}.)
|
|
|
|
Conventionally, when @TeX{} formats a Texinfo file for double-sided
|
|
output, the title is printed in the left-hand (even-numbered) page
|
|
headings and the current chapter title is printed in the right-hand
|
|
(odd-numbered) page headings. (@TeX{} learns the title of each chapter
|
|
from each @code{@@chapter} command.) By default, no page footer is
|
|
printed.
|
|
|
|
Even if you are printing in a single-sided style, @TeX{} looks for an
|
|
@code{@@settitle} command line, in case you include the manual title
|
|
in the heading.
|
|
|
|
@TeX{} prints page headings only for that text that comes after the
|
|
@code{@@end titlepage} command in the Texinfo file, or that comes
|
|
after an @code{@@headings} command that turns on headings.
|
|
(@xref{headings on off, , The @code{@@headings} Command}, for more
|
|
information.)
|
|
|
|
You may, if you wish, create your own, customized headings and footings.
|
|
@xref{Headings}, for a detailed discussion of this.
|
|
|
|
|
|
@node End of Header
|
|
@subsection End of Header
|
|
@cindex End of header line
|
|
|
|
Follow the header lines with an @w{end-of-header} line, which is a
|
|
Texinfo comment that looks like this:
|
|
|
|
@example
|
|
@@c %**end of header
|
|
@end example
|
|
|
|
@xref{Start of Header}.
|
|
|
|
|
|
@node Document Permissions
|
|
@section Document Permissions
|
|
@cindex Document Permissions
|
|
@cindex Copying Permissions
|
|
|
|
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.
|
|
|
|
@menu
|
|
* copying:: Declare the document's copying permissions.
|
|
* insertcopying:: Where to insert the permissions.
|
|
@end menu
|
|
|
|
|
|
@node copying
|
|
@subsection @code{@@copying}: Declare Copying Permissions
|
|
@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.
|
|
|
|
@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. You need to include
|
|
the license as an appendix to your document.
|
|
|
|
The text of @code{@@copying} is output as a comment at the beginning of
|
|
Info, HTML, and XML output files. It is @emph{not} output implicitly in
|
|
plain text or @TeX{}; it's up to you to use @code{@@insertcopying} to
|
|
emit the copying information. See the next section for details.
|
|
|
|
@findex copyright
|
|
The @code{@@copyright@{@}} command generates a @samp{c} inside a circle
|
|
in output formats that support this (print and HTML). In the other
|
|
formats (Info and plain text), it generates @samp{(C)}. The copyright
|
|
notice itself has the following legally defined sequence:
|
|
|
|
@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). Ranges are
|
|
not allowed; each year must 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.
|
|
|
|
@xref{Copyright Notices,,,maintain,GNU Maintenance Instructions}, for
|
|
additional information.
|
|
|
|
|
|
@node insertcopying
|
|
@subsection @code{@@insertcopying}: Include Permissions Text
|
|
@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}).
|
|
|
|
We also strongly recommend using @code{@@insertcopying} in the Top node
|
|
of your manual (@pxref{The Top Node}), although it is not required
|
|
legally. Here's why:
|
|
|
|
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 *}). Therefore, an explicit @code{@@insertcopying}
|
|
in the Top node makes it apparent to readers that the manual is free.
|
|
|
|
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 (unless the reader views the HTML source). And
|
|
therefore again, the @code{@@insertcopying} in the Top node is valuable
|
|
because it makes the copying permissions visible and thus promotes
|
|
freedom.
|
|
|
|
The permissions text defined by @code{@@copying} also appears
|
|
automatically at the beginning of the XML output file.
|
|
|
|
|
|
@node Titlepage & Copyright Page
|
|
@section Title and Copyright Pages
|
|
|
|
In hard copy output, the manual's name and author are usually printed on
|
|
a title page. Copyright information is usually printed on the back of
|
|
the title page.
|
|
|
|
The title and copyright pages appear in the printed manual, but not in
|
|
the Info file. Because of this, it is possible to use several slightly
|
|
obscure @TeX{} typesetting commands that cannot be used in an Info file.
|
|
In addition, this part of the beginning of a Texinfo file contains the
|
|
text of the copying permissions that appears in the printed manual.
|
|
|
|
@cindex Title page, for plain text
|
|
@cindex Copyright page, for plain text
|
|
You may wish to include titlepage-like information for plain text
|
|
output. Simply place any such leading material between
|
|
@code{@@ifplaintext} and @code{@@end ifplaintext}; @command{makeinfo}
|
|
includes this when writing plain text (@samp{--no-headers}), along with
|
|
an @code{@@insertcopying}.
|
|
|
|
@menu
|
|
* titlepage:: Create a title for the printed document.
|
|
* titlefont center sp:: The @code{@@titlefont}, @code{@@center},
|
|
and @code{@@sp} commands.
|
|
* title subtitle author:: The @code{@@title}, @code{@@subtitle},
|
|
and @code{@@author} commands.
|
|
* Copyright:: How to write the copyright notice and
|
|
include copying permissions.
|
|
* end titlepage:: Turn on page headings after the title and
|
|
copyright pages.
|
|
* headings on off:: An option for turning headings on and off
|
|
and double or single sided printing.
|
|
@end menu
|
|
|
|
|
|
@node titlepage
|
|
@subsection @code{@@titlepage}
|
|
@cindex Title page
|
|
@findex titlepage
|
|
|
|
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 @code{@@end titlepage} command starts a new page and turns on page
|
|
numbering. (@xref{Headings, , Page Headings}, for details about how to
|
|
generate page headings.) All the material that you want to appear on
|
|
unnumbered pages should be put between the @code{@@titlepage} and
|
|
@code{@@end titlepage} commands. You can force the table of contents to
|
|
appear there with the @code{@@setcontentsaftertitlepage} command
|
|
(@pxref{Contents}).
|
|
|
|
@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!)
|
|
|
|
When you write a manual about a computer program, you should write the
|
|
version of the program to which the manual applies on the title page.
|
|
If the manual changes more frequently than the program or is independent
|
|
of it, you should also include an edition number@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}.)
|
|
|
|
Texinfo provides two main methods for creating a title page. One 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.
|
|
|
|
The second method uses the @code{@@title}, @code{@@subtitle}, and
|
|
@code{@@author} commands to create a title page with black rules under
|
|
the title and author lines and the subtitle text set flush to the
|
|
right hand side of the page. With this method, you do not specify any
|
|
of the actual formatting of the title page. You specify the text
|
|
you want, and Texinfo does the formatting.
|
|
|
|
You may use either method, or you may combine them; see the examples in
|
|
the sections below.
|
|
|
|
@findex shorttitlepage
|
|
@cindex Bastard title page
|
|
@cindex Title page, bastard
|
|
For extremely simple applications, 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.
|
|
|
|
|
|
@node titlefont center sp
|
|
@subsection @code{@@titlefont}, @code{@@center}, and @code{@@sp}
|
|
@findex titlefont
|
|
@findex center
|
|
@findex sp @r{(titlepage line spacing)}
|
|
|
|
You can use the @code{@@titlefont}, @code{@@sp}, and @code{@@center}
|
|
commands to create a title page for a printed document. (This is the
|
|
first of the two methods for creating a title page in Texinfo.)
|
|
|
|
Use the @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.
|
|
|
|
@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{sp, ,
|
|
@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 subtitle author
|
|
@subsection @code{@@title}, @code{@@subtitle}, and @code{@@author}
|
|
@findex title
|
|
@findex subtitle
|
|
@findex author
|
|
|
|
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. This contrasts with the method
|
|
described in the previous section, in which the @code{@@sp} command is
|
|
needed to adjust vertical spacing.
|
|
|
|
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{@@title} command produces a line in which the title is set
|
|
flush to the left-hand side of the page in a larger than normal font.
|
|
The title is underlined with a black rule. Only a single line is
|
|
allowed; the @code{@@*} command may not be used to break the title into
|
|
two lines. To handle very long titles, you may find it profitable to
|
|
use both @code{@@title} and @code{@@titlefont}; see the final example in
|
|
this section.
|
|
|
|
The @code{@@subtitle} command sets subtitles in a normal-sized font
|
|
flush to the right-hand side of the page.
|
|
|
|
The @code{@@author} command sets the names of the author or authors in
|
|
a middle-sized font flush to the left-hand side of the page on a line
|
|
near the bottom of the title page. The names are underlined with a
|
|
black rule that is thinner than the rule that underlines the title.
|
|
(The black rule only occurs if the @code{@@author} command line is
|
|
followed by an @code{@@page} command line.)
|
|
|
|
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 two (or more)
|
|
@code{@@author} commands:
|
|
|
|
@example
|
|
@group
|
|
@@author Jane Smith
|
|
@@author John Doe
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
(Only the bottom name is underlined with a black rule.)
|
|
|
|
@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
|
|
|
|
You may also combine the @code{@@titlefont} method described in the
|
|
previous section and @code{@@title} method described in this one. This
|
|
may be useful if you have a very long title. Here is a real-life example:
|
|
|
|
@example
|
|
@group
|
|
@@titlepage
|
|
@@titlefont@{GNU Software@}
|
|
@@sp 1
|
|
@@title for MS-Windows and MS-DOS
|
|
@@subtitle Edition @@value@{e@} for Release @@value@{cde@}
|
|
@@author by Daniel Hagerty, Melissa Weisshaus
|
|
@@author and Eli Zaretskii
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
(The use of @code{@@value} here is explained in @ref{value Example}.
|
|
|
|
|
|
@node Copyright
|
|
@subsection Copyright Page
|
|
@cindex Copyright page
|
|
@cindex Printed permissions
|
|
@cindex Permissions, printed
|
|
|
|
By international treaty, the copyright notice for a book must be either
|
|
on the title page or on the back of the title page. When the copyright
|
|
notice is on the back of the title page, that page is customarily not
|
|
numbered. Therefore, in Texinfo, the information on the copyright page
|
|
should be within @code{@@titlepage} and @code{@@end titlepage}
|
|
commands.
|
|
|
|
@findex vskip @r{@TeX{} vertical skip}
|
|
@findex filll @r{@TeX{} dimension}
|
|
Use the @code{@@page} command to cause a page break. To push the
|
|
copyright notice and the other text on the copyright page towards the
|
|
bottom of the page, use the following incantantion after @code{@@page}:
|
|
|
|
@example
|
|
@@vskip 0pt plus 1filll
|
|
@end example
|
|
|
|
@noindent
|
|
This is a @TeX{} command that is not supported by the Info formatting
|
|
commands. The @code{@@vskip} command inserts whitespace. 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
|
|
|
|
Follow the copying text by the publisher, ISBN numbers, cover art
|
|
credits, and other such information.
|
|
|
|
Here is an example putting all this together:
|
|
|
|
@example
|
|
@@titlepage
|
|
@dots{}
|
|
@@page
|
|
@@vskip 0pt plus 1filll
|
|
@@insertcopying
|
|
|
|
Published by @dots{}
|
|
|
|
Cover art by @dots{}
|
|
@@end titlepage
|
|
@end example
|
|
|
|
|
|
@node end titlepage
|
|
@subsection Heading Generation
|
|
@findex end titlepage
|
|
@cindex Headings, page, begin to appear
|
|
@cindex Titlepage end starts headings
|
|
@cindex End titlepage starts headings
|
|
|
|
The @code{@@end titlepage} command must be written on a line by itself.
|
|
It not only marks the end of the title and copyright pages, but also
|
|
causes @TeX{} to start generating page headings and page numbers.
|
|
|
|
To repeat what is said elsewhere, Texinfo has two standard page heading
|
|
formats, one for documents which are printed on one side of each sheet of paper
|
|
(single-sided printing), and the other for documents which are printed on both
|
|
sides of each sheet (double-sided printing).
|
|
You can specify these formats in different ways:
|
|
|
|
@itemize @bullet
|
|
@item
|
|
The conventional way is to write an @code{@@setchapternewpage} command
|
|
before the title page commands, and then have the @code{@@end
|
|
titlepage} command start generating page headings in the manner desired.
|
|
(@xref{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. (Write an @code{@@headings} command immediately
|
|
after the @code{@@end titlepage} command. @xref{headings on off, , The
|
|
@code{@@headings} Command}, for more information.)@refill
|
|
|
|
@item
|
|
Or, you may specify your own page heading and footing format.
|
|
@xref{Headings, , Page Headings}, for detailed
|
|
information about page headings and footings.
|
|
@end itemize
|
|
|
|
Most documents are formatted with the standard single-sided or
|
|
double-sided format, using @code{@@setchapternewpage odd} for
|
|
double-sided printing and no @code{@@setchapternewpage} command for
|
|
single-sided printing.
|
|
|
|
|
|
@node headings on off
|
|
@subsection The @code{@@headings} Command
|
|
@findex headings
|
|
|
|
The @code{@@headings} command is rarely used. It specifies what kind of
|
|
page headings and footings to print on each page. Usually, this is
|
|
controlled by the @code{@@setchapternewpage} command. You need the
|
|
@code{@@headings} command only if the @code{@@setchapternewpage} command
|
|
does not do what you want, or if you want to turn off pre-defined page
|
|
headings prior to defining your own. Write an @code{@@headings} command
|
|
immediately after the @code{@@end titlepage} command.@refill
|
|
|
|
You can use @code{@@headings} as follows:@refill
|
|
|
|
@table @code
|
|
@item @@headings off
|
|
Turn off printing of page headings.@refill
|
|
|
|
@item @@headings single
|
|
Turn on page headings appropriate for single-sided printing.
|
|
@refill
|
|
|
|
@item @@headings double
|
|
@itemx @@headings on
|
|
Turn on page headings appropriate for double-sided printing. The two
|
|
commands, @code{@@headings on} and @code{@@headings double}, are
|
|
synonymous.@refill
|
|
|
|
@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 tell @TeX{} to start a new chapter on the
|
|
same page as the end of the last chapter. This command also causes
|
|
@TeX{} to typeset page headers for single-sided printing. To cause
|
|
@TeX{} to typeset for double sided printing, write @code{@@headings
|
|
double} after the @code{@@end titlepage} command.
|
|
|
|
You can stop @TeX{} from generating any page headings at all by
|
|
writing @code{@@headings off} on a line of its own immediately after the
|
|
line containing the @code{@@end titlepage} command, like this:@refill
|
|
|
|
@example
|
|
@@end titlepage
|
|
@@headings off
|
|
@end example
|
|
|
|
@noindent
|
|
The @code{@@headings off} command overrides the @code{@@end titlepage}
|
|
command, which would otherwise cause @TeX{} to print page
|
|
headings.@refill
|
|
|
|
You can also specify your own style of page heading and footing.
|
|
@xref{Headings, , Page Headings}, for more information.@refill
|
|
|
|
|
|
@node The Top Node
|
|
@section The `Top' Node and Master Menu
|
|
@cindex Top node
|
|
@cindex Node, `Top'
|
|
|
|
The `Top' node is the node in which a reader enters an Info manual. As
|
|
such, it should begin with the @code{@@insertcopying} command
|
|
(@pxref{Document Permissions}) to provide a brief description of the
|
|
manual (including the version number) and copying permissions, and end
|
|
with a master menu for the whole manual. Of course you should include
|
|
any other general information you feel a reader would find helpful.
|
|
|
|
@findex top
|
|
It is also conventional to write an @code{@@top} sectioning command line
|
|
containing the title of the document immediately after the @code{@@node
|
|
Top} line (@pxref{makeinfo top command, , The @code{@@top} Sectioning
|
|
Command}).
|
|
|
|
The contents of the `Top' node should appear only in the online output;
|
|
none of it should appear in printed output, so enclose it between
|
|
@code{@@ifnottex} and @code{@@end ifnottex} commands. (@TeX{} does not
|
|
print either an @code{@@node} line or a menu; they appear only in Info;
|
|
strictly speaking, you are not required to enclose these parts between
|
|
@code{@@ifnottex} and @code{@@end ifnottext}, but it is simplest to do
|
|
so. @xref{Conditionals, , Conditionally Visible Text}.)
|
|
|
|
@menu
|
|
* Top Node Example::
|
|
* Master Menu Parts::
|
|
@end menu
|
|
|
|
|
|
@node Top Node Example
|
|
@subsection Top Node Example
|
|
|
|
@cindex Top node example
|
|
|
|
Here is an example of a Top node.
|
|
|
|
@example
|
|
@group
|
|
@@ifnottex
|
|
@@node Top
|
|
@@top Sample Title
|
|
|
|
@@insertcopying
|
|
@end group
|
|
|
|
Additional general information.
|
|
|
|
@group
|
|
@@menu
|
|
* First Chapter::
|
|
* Second Chapter::
|
|
@dots{}
|
|
* Index::
|
|
@end group
|
|
@@end menu
|
|
@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 a detailed main menu listing all the nodes in a
|
|
file.
|
|
|
|
A master menu is enclosed in @code{@@menu} and @code{@@end menu}
|
|
commands and does not appear in the printed document.
|
|
|
|
Generally, a master menu is divided into parts.
|
|
|
|
@itemize @bullet
|
|
@item
|
|
The first part contains the major nodes in the Texinfo file: the nodes
|
|
for the chapters, chapter-like sections, and the appendices.
|
|
|
|
@item
|
|
The second part contains nodes for the indices.
|
|
|
|
@item
|
|
The third and subsequent parts contain a listing of the other, lower
|
|
level nodes, often ordered by chapter. This way, rather than go
|
|
through an intermediary menu, an inquirer can go directly to a
|
|
particular node when searching for specific information. These menu
|
|
items are not required; add them if you think they are a
|
|
convenience. If you do use them, put @code{@@detailmenu} before the
|
|
first one, and @code{@@end detailmenu} after the last; otherwise,
|
|
@code{makeinfo} will get confused.
|
|
@end itemize
|
|
|
|
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
|
|
* Command and Variable Index::
|
|
* Concept 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 Global Document Commands
|
|
@section Global Document Commands
|
|
@cindex Global Document Commands
|
|
|
|
Besides the basic commands mentioned in the previous sections, here are
|
|
additional commands which affect the document as a whole. They are
|
|
generally all given before the Top node, if they are given at all.
|
|
|
|
@menu
|
|
* documentdescription:: Document summary for the HTML output.
|
|
* setchapternewpage:: Start chapters on right-hand pages.
|
|
* paragraphindent:: Specify paragraph indentation.
|
|
* exampleindent:: Specify environment indentation.
|
|
@end menu
|
|
|
|
|
|
@node documentdescription
|
|
@subsection @code{@@documentdescription}: Summary Text
|
|
@cindex Document description
|
|
@cindex Description of document
|
|
@cindex Summary of document
|
|
@cindex Abstract of document
|
|
@cindex <meta> HTML tag, and document description
|
|
@findex documentdescription
|
|
|
|
When producing HTML output for a document, @command{makeinfo} writes a
|
|
@samp{<meta>} element 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{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
|
|
|
|
@code{@@documentdescription} must be specified before the first node of
|
|
the document.
|
|
|
|
|
|
@node setchapternewpage
|
|
@subsection @code{@@setchapternewpage}:
|
|
@cindex Starting chapters
|
|
@cindex Pages, starting odd
|
|
@findex setchapternewpage
|
|
|
|
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 @TeX{} should start chapters and whether it
|
|
should format headers 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}
|
|
Cause @TeX{} to typeset a new chapter on the same page as the last
|
|
chapter, after skipping some vertical whitespace. Also, cause @TeX{} to
|
|
format page headers for single-sided printing.
|
|
|
|
@item @code{@@setchapternewpage on}
|
|
Cause @TeX{} to start new chapters on new pages and to 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}
|
|
Cause @TeX{} to start new chapters on new, odd-numbered pages
|
|
(right-handed pages) and to typeset for double-sided printing. This is
|
|
the form most often used for books and manuals.
|
|
@end table
|
|
|
|
Texinfo does not have an @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{headings on off, , The @code{@@headings} Command}.
|
|
|
|
At the beginning of a manual or book, pages are not numbered---for
|
|
example, the title and copyright pages of a book are not numbered. By
|
|
convention, table of contents and frontmatter pages are numbered with
|
|
roman numerals and not in sequence with the rest of the document.
|
|
|
|
Since an Info file does not have pages, the @code{@@setchapternewpage}
|
|
command has no effect on it.
|
|
|
|
We recommend not including any @code{@@setchapternewpage} command in
|
|
your manual sources at all, since the desired output is not intrinsic to
|
|
the document. For a particular hard copy run, if you don't want the
|
|
default option (no blank pages, same headers on all pages) use the
|
|
@option{--texinfo} option to @command{texi2dvi} to specify the output
|
|
you want.
|
|
|
|
|
|
@node paragraphindent
|
|
@subsection Paragraph Indenting
|
|
@cindex Indenting paragraphs, control of
|
|
@cindex Paragraph indentation control
|
|
@findex paragraphindent
|
|
|
|
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 an @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 @TeX{}).
|
|
|
|
@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
|
|
@TeX{}.
|
|
|
|
@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}.
|
|
|
|
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.
|
|
@xref{Refilling Paragraphs}, for further information.
|
|
|
|
|
|
@node exampleindent
|
|
@subsection @code{@@exampleindent}: Environment Indenting
|
|
@cindex Indenting environments
|
|
@cindex Environment indentation
|
|
@cindex Example indentation
|
|
@findex exampleindent
|
|
|
|
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 @TeX{}).
|
|
|
|
@item 0
|
|
Omit all indentation.
|
|
|
|
@item @var{n}
|
|
Indent environments by @var{n} space characters in Info output, by
|
|
@var{n} ems in @TeX{}.
|
|
|
|
@end table
|
|
|
|
The default value of @var{indent} is 5. @code{@@exampleindent} is
|
|
ignored for HTML output.
|
|
|
|
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 Software Copying Permissions
|
|
@section Software Copying Permissions
|
|
@cindex Software copying permissions
|
|
@cindex Copying software
|
|
@cindex Distribution
|
|
@cindex License agreement
|
|
|
|
If the Texinfo file has a section containing the ``General Public
|
|
License'' and the distribution information and a warranty disclaimer for
|
|
the software that is documented, we recommend placing this right after
|
|
the `Top' node. The General Public License is very important to Project
|
|
GNU software. It ensures that you and others will continue to have a
|
|
right to use and share the software.
|
|
|
|
The copying and distribution information and the disclaimer are followed
|
|
by an introduction or else by the first chapter of the manual.
|
|
|
|
@cindex Introduction, as part of file
|
|
Although an introduction is not a required part of a Texinfo file, it
|
|
is very helpful. Ideally, it should state clearly and concisely what
|
|
the file is about and who would be interested in reading it. In
|
|
general, an introduction would follow the licensing and distribution
|
|
information, although sometimes people put it earlier in the document.
|
|
|
|
|
|
@node Ending a File
|
|
@chapter Ending a Texinfo File
|
|
@cindex Ending a Texinfo file
|
|
@cindex Texinfo file ending
|
|
@cindex File ending
|
|
@findex bye
|
|
|
|
The end of a Texinfo file should include commands to create indices and
|
|
(perhaps) to generate both the full and summary tables of contents.
|
|
Finally, it must include the @code{@@bye} command that marks the last
|
|
line to be processed.
|
|
|
|
@need 700
|
|
For example:
|
|
|
|
@example
|
|
@@node Index
|
|
@@unnumbered Index
|
|
|
|
@@printindex cp
|
|
|
|
@@shortcontents
|
|
@@contents
|
|
|
|
@@bye
|
|
@end example
|
|
|
|
@menu
|
|
* Printing Indices & Menus:: How to print an index in hardcopy and
|
|
generate index menus in Info.
|
|
* Contents:: How to create a table of contents.
|
|
* File End:: How to mark the end of a file.
|
|
@end menu
|
|
|
|
|
|
@node Printing Indices & Menus
|
|
@section Printing Indices and Menus
|
|
@findex printindex
|
|
@cindex Printing an index
|
|
@cindex Indices, printing and menus
|
|
@cindex Generating menus with indices
|
|
@cindex Menus generated with indices
|
|
|
|
To print an index means to include it as part of a manual or Info file.
|
|
This does not happen automatically just because you use @code{@@cindex}
|
|
or other index-entry generating commands in the Texinfo file; those just
|
|
cause the raw data for the index to be accumulated. To generate an
|
|
index, you must include the @code{@@printindex} command at the place in
|
|
the document where you want the index to appear. Also, as part of the
|
|
process of creating a printed manual, you must run a program called
|
|
@code{texindex} (@pxref{Hardcopy}) to sort the raw data to produce a
|
|
sorted index file. The sorted index file is what is actually used to
|
|
print the index.
|
|
|
|
Texinfo offers six separate types of predefined index, each with a
|
|
two-letter abbreviation, as illustrated in the following table.
|
|
However, you may merge indices (@pxref{Combining Indices}) or define
|
|
your own indices (@pxref{New Indices}).
|
|
|
|
Here are the predefined indices, their abbreviations, and the
|
|
corresponding index entry commands:
|
|
|
|
@table @samp
|
|
@item cp
|
|
concept index (@code{@@cindex})
|
|
@item fn
|
|
function index (@code{@@findex})
|
|
@item vr
|
|
variable index (@code{@@index})
|
|
@item ky
|
|
key index (@code{@@kindex})
|
|
@item pg
|
|
program index (@code{@@pindex})
|
|
@item tp
|
|
data type index (@code{@@tindex})
|
|
@end table
|
|
|
|
The @code{@@printindex} command takes a two-letter index abbreviation,
|
|
reads the corresponding sorted index file and formats it appropriately
|
|
into an index.
|
|
|
|
The @code{@@printindex} command does not generate a chapter heading for
|
|
the index. Consequently, 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
|
|
@code{@@unnumbered} command with an @code{@@node} line.
|
|
|
|
For example:
|
|
|
|
@smallexample
|
|
@group
|
|
@@node Variable Index
|
|
@@unnumbered Variable Index
|
|
|
|
@@printindex vr
|
|
@end group
|
|
|
|
@group
|
|
@@node Concept Index
|
|
@@unnumbered Concept Index
|
|
|
|
@@printindex cp
|
|
@end group
|
|
@end smallexample
|
|
|
|
@noindent
|
|
|
|
We recommend placing the concept index last, since that makes it easiest
|
|
to find. We also recommend having a single index whenever possible,
|
|
since then readers have only one place to look (@pxref{Combining Indices}).
|
|
|
|
|
|
@node 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
|
|
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
|
|
Generate a table of contents in a printed manual, including all
|
|
chapters, sections, subsections, etc., as well as appendices and
|
|
unnumbered chapters. Headings generated by the @code{@@heading}
|
|
series of commands do not appear in the table of contents.
|
|
|
|
@item @@shortcontents
|
|
@itemx @@summarycontents
|
|
(@code{@@summarycontents} is a synonym for @code{@@shortcontents}.)
|
|
|
|
Generate 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.
|
|
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 (generated by @code{makeinfo
|
|
--no-headers}), unless @code{makeinfo} is writing its output to standard
|
|
output.
|
|
|
|
When @code{makeinfo} writes a short table of contents while producing
|
|
html output, the links in the short table of contents point to
|
|
corresponding entries in the full table of contents rather than the text
|
|
of the document. The links in the full table of contents point to the
|
|
main text of the document.
|
|
|
|
The contents commands can be placed either at the very end of the file,
|
|
after any indices (see the previous section) and just before the
|
|
@code{@@bye} (see the next section), or near the beginning of the file,
|
|
after the @code{@@end titlepage} (@pxref{titlepage}). The advantage to
|
|
the former is that then the contents output is always up to date,
|
|
because it reflects the processing just done. The advantage to the
|
|
latter is that the contents are printed in the proper place, thus you do
|
|
not need to rearrange the DVI file with @command{dviselect} or shuffle
|
|
paper.
|
|
|
|
@findex setcontentsaftertitlepage
|
|
@findex setshortcontentsaftertitlepage
|
|
@cindex Contents, after title page
|
|
@cindex Table of contents, after title page
|
|
As an author, you can put the contents commands wherever you prefer.
|
|
But if you are a user simply printing a manual, you may wish to print
|
|
the contents after the title page even if the author put the contents
|
|
commands at the end of the document (as is the case in most existing
|
|
Texinfo documents, at this writing). You can do this by specifying
|
|
@code{@@setcontentsaftertitlepage} and/or
|
|
@code{@@setshortcontentsaftertitlepage}. The first prints only the main
|
|
contents after the @code{@@end titlepage}; the second prints both the
|
|
short contents and the main contents. In either case, any subsequent
|
|
@code{@@contents} or @code{@@shortcontents} is ignored (unless no
|
|
@code{@@end titlepage} is ever encountered).
|
|
|
|
You need to include the @code{@@set@dots{}contentsaftertitlepage}
|
|
commands early in the document (just after @code{@@setfilename}, for
|
|
example). We recommend using @command{texi2dvi} (@pxref{Format with
|
|
texi2dvi}) to specify this without altering the source file at all. For
|
|
example:
|
|
@example
|
|
texi2dvi --texinfo=@@setcontentsaftertitlepage foo.texi
|
|
@end example
|
|
|
|
|
|
@node File End
|
|
@section @code{@@bye} File Ending
|
|
@findex bye
|
|
|
|
An @code{@@bye} command terminates Texinfo processing. None of the
|
|
formatters read anything following @code{@@bye}. The @code{@@bye}
|
|
command should be on a line by itself.
|
|
|
|
If you wish, you may follow the @code{@@bye} line with notes. These
|
|
notes will not be formatted and will not appear in either Info or a
|
|
printed manual; it is as if text after @code{@@bye} were within
|
|
@code{@@ignore} @dots{} @code{@@end ignore}. Also, you may follow the
|
|
@code{@@bye} line with a local variables list for Emacs.
|
|
@xref{Compile-Command, , Using Local Variables and the Compile Command},
|
|
for more information.
|
|
|
|
|
|
@node Structuring
|
|
@chapter Chapter Structuring
|
|
@cindex Chapter structuring
|
|
@cindex Structuring of chapters
|
|
|
|
The @dfn{chapter structuring} commands divide a document into a hierarchy of
|
|
chapters, sections, subsections, and subsubsections. These commands
|
|
generate large headings; they also provide information for the table
|
|
of contents of a printed manual (@pxref{Contents, , Generating a Table
|
|
of Contents}).@refill
|
|
|
|
The chapter structuring commands do not create an Info node structure,
|
|
so normally you should put an @code{@@node} command immediately before
|
|
each chapter structuring command (@pxref{Nodes}). The only time you
|
|
are likely to use the chapter structuring commands without using the
|
|
node structuring commands is if you are writing a document that
|
|
contains no cross references and will never be transformed into Info
|
|
format.@refill
|
|
|
|
It is unlikely that you will ever write a Texinfo file that is
|
|
intended only as an Info file and not as a printable document. If you
|
|
do, you might still use chapter structuring commands to create a
|
|
heading at the top of each node---but you don't need to.@refill
|
|
|
|
@menu
|
|
* Tree Structuring:: A manual is like an upside down tree @dots{}
|
|
* Structuring Command Types:: How to divide a manual into parts.
|
|
* makeinfo top:: The @code{@@top} command, part of the `Top' node.
|
|
* chapter::
|
|
* unnumbered & appendix::
|
|
* majorheading & chapheading::
|
|
* section::
|
|
* unnumberedsec appendixsec heading::
|
|
* subsection::
|
|
* unnumberedsubsec appendixsubsec subheading::
|
|
* subsubsection:: Commands for the lowest level sections.
|
|
* Raise/lower sections:: How to change commands' hierarchical level.
|
|
@end menu
|
|
|
|
|
|
@node Tree Structuring
|
|
@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.@refill
|
|
|
|
Here is a diagram that shows a Texinfo file with three chapters,
|
|
each of which has two sections.@refill
|
|
|
|
@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
|
|
looks like this:@refill
|
|
|
|
@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} and @code{@@menu} commands are described in
|
|
following chapters. (@xref{Nodes}, and see @ref{Menus}.)@refill
|
|
|
|
|
|
@node Structuring Command Types
|
|
@section Structuring Command Types
|
|
|
|
The chapter structuring commands fall into four groups or series, each
|
|
of which contains structuring commands corresponding to the
|
|
hierarchical levels of chapters, sections, subsections, and
|
|
subsubsections.@refill
|
|
|
|
The four groups are the @code{@@chapter} series, the
|
|
@code{@@unnumbered} series, the @code{@@appendix} series, and the
|
|
@code{@@heading} series.@refill
|
|
|
|
Each command produces titles that have a different appearance on the
|
|
printed page or Info file; only some of the commands produce
|
|
titles that are listed in the table of contents of a printed book or
|
|
manual.@refill
|
|
|
|
@itemize @bullet
|
|
@item
|
|
The @code{@@chapter} and @code{@@appendix} series of commands produce
|
|
numbered or lettered entries both in the body of a printed work and in
|
|
its table of contents.@refill
|
|
|
|
@item
|
|
The @code{@@unnumbered} series of commands produce unnumbered entries
|
|
both in the body of a printed work and in its table of contents. The
|
|
@code{@@top} command, which has a special use, is a member of this
|
|
series (@pxref{makeinfo top, , @code{@@top}}).@refill
|
|
|
|
@item
|
|
The @code{@@heading} series of commands produce unnumbered headings
|
|
that do not appear in a table of contents. The heading commands never
|
|
start a new page.@refill
|
|
|
|
@item
|
|
The @code{@@majorheading} command produces results similar to using
|
|
the @code{@@chapheading} command but generates a larger vertical
|
|
whitespace before the heading.@refill
|
|
|
|
@item
|
|
When an @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.@refill
|
|
@end itemize
|
|
|
|
Here are the four groups of chapter structuring commands:
|
|
|
|
@tex
|
|
{\globaldefs = 1 \smallfonts}
|
|
@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 Omitted from@*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}
|
|
@end tex
|
|
|
|
|
|
@node makeinfo top
|
|
@section @code{@@top}
|
|
|
|
The @code{@@top} command is a special sectioning command that you use
|
|
only after an @samp{@@node Top} line at the beginning of a Texinfo file.
|
|
The @code{@@top} command tells the @code{makeinfo} formatter which node
|
|
is the `Top' node, so it can use it as the root of the node tree if your
|
|
manual uses implicit pointers. It has the same typesetting effect as
|
|
@code{@@unnumbered} (@pxref{unnumbered & appendix, , @code{@@unnumbered}
|
|
and @code{@@appendix}}). For detailed information, see @ref{makeinfo
|
|
top command, , The @code{@@top} Command}.
|
|
|
|
The @code{@@top} node and its menu (if any) is conventionally wrapped in
|
|
an @code{@@ifnottex} conditional so that it will appear only in Info and
|
|
HTML output, not @TeX{}.
|
|
|
|
|
|
@node chapter, unnumbered & appendix, makeinfo top, Structuring
|
|
@comment node-name, next, previous, up
|
|
@section @code{@@chapter}
|
|
@findex chapter
|
|
|
|
@code{@@chapter} identifies a chapter in the document. Write the
|
|
command at the beginning of a line and follow it on the same line by
|
|
the title of the chapter.@refill
|
|
|
|
For example, this chapter in this manual is entitled ``Chapter
|
|
Structuring''; the @code{@@chapter} line looks like this:@refill
|
|
|
|
@example
|
|
@@chapter Chapter Structuring
|
|
@end example
|
|
|
|
In @TeX{}, the @code{@@chapter} command creates a chapter in the
|
|
document, specifying the chapter title. The chapter is numbered
|
|
automatically.@refill
|
|
|
|
In Info, the @code{@@chapter} command causes the title to appear on a
|
|
line by itself, with a line of asterisks inserted underneath. Thus,
|
|
in Info, the above example produces the following output:@refill
|
|
|
|
@example
|
|
Chapter Structuring
|
|
*******************
|
|
@end example
|
|
|
|
@findex centerchap
|
|
Texinfo also provides a command @code{@@centerchap}, which is analogous
|
|
to @code{@@unnumbered}, but centers its argument in the printed output.
|
|
This kind of stylistic choice is not usually offered by Texinfo.
|
|
@c but the Hacker's Dictionary wanted it ...
|
|
|
|
|
|
@node unnumbered & appendix
|
|
@section @code{@@unnumbered} and @code{@@appendix}
|
|
@findex unnumbered
|
|
@findex appendix
|
|
|
|
Use the @code{@@unnumbered} command to create a chapter that appears
|
|
in a printed manual without chapter numbers of any kind. Use the
|
|
@code{@@appendix} command to create an appendix in a printed manual
|
|
that is labelled by letter instead of by number.@refill
|
|
|
|
For Info file output, the @code{@@unnumbered} and @code{@@appendix}
|
|
commands are equivalent to @code{@@chapter}: the title is printed on a
|
|
line by itself with a line of asterisks underneath. (@xref{chapter, ,
|
|
@code{@@chapter}}.)@refill
|
|
|
|
To create an appendix or an unnumbered chapter, write an
|
|
@code{@@appendix} or @code{@@unnumbered} command at the beginning of a
|
|
line and follow it on the same line by the title, as you would if you
|
|
were creating a chapter.@refill
|
|
|
|
|
|
@node majorheading & chapheading, section, unnumbered & appendix, Structuring
|
|
@section @code{@@majorheading}, @code{@@chapheading}
|
|
@findex majorheading
|
|
@findex chapheading
|
|
|
|
The @code{@@majorheading} and @code{@@chapheading} commands put
|
|
chapter-like headings in the body of a document.@refill
|
|
|
|
However, neither command causes @TeX{} to produce a numbered heading
|
|
or an entry in the table of contents; and neither command causes
|
|
@TeX{} to start a new page in a printed manual.@refill
|
|
|
|
In @TeX{}, an @code{@@majorheading} command generates a larger vertical
|
|
whitespace before the heading than an @code{@@chapheading} command but
|
|
is otherwise the same.@refill
|
|
|
|
In Info,
|
|
the @code{@@majorheading} and
|
|
@code{@@chapheading} commands are equivalent to
|
|
@code{@@chapter}: the title is printed on a line by itself with a line
|
|
of asterisks underneath. (@xref{chapter, , @code{@@chapter}}.)@refill
|
|
|
|
@node section, unnumberedsec appendixsec heading, majorheading & chapheading, Structuring
|
|
@comment node-name, next, previous, up
|
|
@section @code{@@section}
|
|
@findex section
|
|
|
|
In a printed manual, an @code{@@section} command identifies a
|
|
numbered section within a chapter. The section title appears in the
|
|
table of contents. In Info, an @code{@@section} command provides a
|
|
title for a segment of text, underlined with @samp{=}.@refill
|
|
|
|
This section is headed with an @code{@@section} command and looks like
|
|
this in the Texinfo file:@refill
|
|
|
|
@example
|
|
@@section @@code@{@@@@section@}
|
|
@end example
|
|
|
|
To create a section, write the @code{@@section} command at the
|
|
beginning of a line and follow it on the same line by the section
|
|
title.@refill
|
|
|
|
Thus,
|
|
|
|
@example
|
|
@@section This is a section
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@example
|
|
@group
|
|
This is a section
|
|
=================
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
in Info.
|
|
|
|
@node unnumberedsec appendixsec heading, subsection, section, Structuring
|
|
@comment node-name, next, previous, up
|
|
@section @code{@@unnumberedsec}, @code{@@appendixsec}, @code{@@heading}
|
|
@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.
|
|
(@xref{section, , @code{@@section}}.)@refill
|
|
|
|
@table @code
|
|
@item @@unnumberedsec
|
|
The @code{@@unnumberedsec} command may be used within an
|
|
unnumbered chapter or within a regular chapter or appendix to
|
|
provide an unnumbered section.@refill
|
|
|
|
@item @@appendixsec
|
|
@itemx @@appendixsection
|
|
@code{@@appendixsection} is a longer spelling of the
|
|
@code{@@appendixsec} command; the two are synonymous.@refill
|
|
@findex appendixsection
|
|
|
|
Conventionally, the @code{@@appendixsec} or @code{@@appendixsection}
|
|
command is used only within appendices.@refill
|
|
|
|
@item @@heading
|
|
You may use the @code{@@heading} command anywhere you wish for a
|
|
section-style heading that will not appear in the table of contents.@refill
|
|
@end table
|
|
|
|
@node subsection, unnumberedsubsec appendixsubsec subheading, unnumberedsec appendixsec heading, Structuring
|
|
@comment node-name, next, previous, up
|
|
@section The @code{@@subsection} Command
|
|
@findex subsection
|
|
|
|
Subsections are to sections as sections are to chapters.
|
|
(@xref{section, , @code{@@section}}.) In Info, subsection titles are
|
|
underlined with @samp{-}. For example,@refill
|
|
|
|
@example
|
|
@@subsection This is a subsection
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@example
|
|
@group
|
|
This is a subsection
|
|
--------------------
|
|
@end group
|
|
@end example
|
|
|
|
In a printed manual, subsections are listed in the table of contents
|
|
and are numbered three levels deep.@refill
|
|
|
|
@node unnumberedsubsec appendixsubsec subheading, subsubsection, subsection, Structuring
|
|
@comment node-name, next, previous, up
|
|
@section The @code{@@subsection}-like Commands
|
|
@cindex Subsection-like commands
|
|
@findex unnumberedsubsec
|
|
@findex appendixsubsec
|
|
@findex subheading
|
|
|
|
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{subsection, , @code{@@subsection}}.)@refill
|
|
|
|
In Info, the @code{@@subsection}-like commands generate a title
|
|
underlined with hyphens. In a printed manual, 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 labelled with a letter and numbers; both of
|
|
these commands produce headings that appear in the table of
|
|
contents.@refill
|
|
|
|
@node subsubsection, Raise/lower sections, unnumberedsubsec appendixsubsec subheading, Structuring
|
|
@comment node-name, next, previous, up
|
|
@section The `subsub' Commands
|
|
@cindex Subsub commands
|
|
@findex subsubsection
|
|
@findex unnumberedsubsubsec
|
|
@findex appendixsubsubsec
|
|
@findex subsubheading
|
|
|
|
The fourth and lowest level sectioning commands in Texinfo are the
|
|
`subsub' commands. They are:@refill
|
|
|
|
@table @code
|
|
@item @@subsubsection
|
|
Subsubsections are to subsections as subsections are to sections.
|
|
(@xref{subsection, , @code{@@subsection}}.) In a printed manual,
|
|
subsubsection titles appear in the table of contents and are numbered
|
|
four levels deep.@refill
|
|
|
|
@item @@unnumberedsubsubsec
|
|
Unnumbered subsubsection titles appear in the table of contents of a
|
|
printed manual, but lack numbers. Otherwise, unnumbered
|
|
subsubsections are the same as subsubsections. In Info, unnumbered
|
|
subsubsections look exactly like ordinary subsubsections.@refill
|
|
|
|
@item @@appendixsubsubsec
|
|
Conventionally, appendix commands are used only for appendices and are
|
|
lettered and numbered appropriately in a printed manual. They also
|
|
appear in the table of contents. In Info, appendix subsubsections look
|
|
exactly like ordinary subsubsections.@refill
|
|
|
|
@item @@subsubheading
|
|
The @code{@@subsubheading} command may be used anywhere that you need
|
|
a small heading that will not appear in the table of contents. In
|
|
Info, subsubheadings look exactly like ordinary subsubsection
|
|
headings.@refill
|
|
@end table
|
|
|
|
In Info, `subsub' titles are underlined with periods.
|
|
For example,@refill
|
|
|
|
@example
|
|
@@subsubsection This is a subsubsection
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@example
|
|
@group
|
|
This is a subsubsection
|
|
.......................
|
|
@end group
|
|
@end example
|
|
|
|
@node Raise/lower sections, , subsubsection, Structuring
|
|
@comment node-name, next, previous, up
|
|
@section @code{@@raisesections} and @code{@@lowersections}
|
|
@findex raisesections
|
|
@findex lowersections
|
|
@cindex Raising and lowering sections
|
|
@cindex Sections, raising and lowering
|
|
|
|
The @code{@@raisesections} and @code{@@lowersections} commands raise and
|
|
lower the hierarchical level of chapters, sections, subsections and the
|
|
like. The @code{@@raisesections} command changes sections to chapters,
|
|
subsections to sections, and so on. The @code{@@lowersections} command
|
|
changes chapters to sections, sections to subsections, and so on.
|
|
|
|
@cindex Include files, and section levels
|
|
An @code{@@lowersections} command is useful if you wish to include text
|
|
that is written as an outer or standalone Texinfo file in another
|
|
Texinfo file as an inner, included file. If you write the command at
|
|
the beginning of the file, all your @code{@@chapter} commands are
|
|
formatted as if they were @code{@@section} commands, all your
|
|
@code{@@section} command are formatted as if they were
|
|
@code{@@subsection} commands, and so on.
|
|
|
|
@need 1000
|
|
@code{@@raisesections} raises a command one level in the chapter
|
|
structuring hierarchy:@refill
|
|
|
|
@example
|
|
@group
|
|
@r{Change} @r{To}
|
|
|
|
@@subsection @@section,
|
|
@@section @@chapter,
|
|
@@heading @@chapheading,
|
|
@r{etc.}
|
|
@end group
|
|
@end example
|
|
|
|
@need 1000
|
|
@code{@@lowersections} lowers a command one level in the chapter
|
|
structuring hierarchy:@refill
|
|
|
|
@example
|
|
@group
|
|
@r{Change} @r{To}
|
|
|
|
@@chapter @@section,
|
|
@@subsection @@subsubsection,
|
|
@@heading @@subheading,
|
|
@r{etc.}
|
|
@end group
|
|
@end example
|
|
|
|
An @code{@@raisesections} or @code{@@lowersections} command changes only
|
|
those structuring commands that follow the command in the Texinfo file.
|
|
Write an @code{@@raisesections} or @code{@@lowersections} command on a
|
|
line of its own.
|
|
|
|
An @code{@@lowersections} command cancels an @code{@@raisesections}
|
|
command, and vice versa. Typically, the commands are used like this:
|
|
|
|
@example
|
|
@@lowersections
|
|
@@include somefile.texi
|
|
@@raisesections
|
|
@end example
|
|
|
|
Without the @code{@@raisesections}, all the subsequent sections in your
|
|
document will be lowered.
|
|
|
|
Repeated use of the commands continue to raise or lower the hierarchical
|
|
level a step at a time.
|
|
|
|
An attempt to raise above `chapters' reproduces chapter commands; an
|
|
attempt to lower below `subsubsections' reproduces subsubsection
|
|
commands.
|
|
|
|
@node Nodes
|
|
@chapter Nodes
|
|
|
|
@dfn{Nodes} are the primary segments of a Texinfo file. They do not
|
|
themselves impose a hierarchical or any other kind of structure on a file.
|
|
Nodes contain @dfn{node pointers} that name other nodes, and can contain
|
|
@dfn{menus} which are lists of nodes. In Info, the movement commands
|
|
can carry you to a pointed-to node or to a node listed in a menu. Node
|
|
pointers and menus provide structure for Info files just as chapters,
|
|
sections, subsections, and the like, provide structure for printed
|
|
books.@refill
|
|
|
|
@menu
|
|
* Two Paths:: Different commands to structure
|
|
Info output and printed output.
|
|
* Node Menu Illustration:: A diagram, and sample nodes and menus.
|
|
* node:: Creating nodes, in detail.
|
|
* makeinfo Pointer Creation:: Letting makeinfo determine node pointers.
|
|
* anchor:: Defining arbitrary cross-reference targets.
|
|
@end menu
|
|
|
|
|
|
@node Two Paths
|
|
@section Two Paths
|
|
|
|
The node and menu commands and the chapter structuring commands are
|
|
technically independent of each other:
|
|
|
|
@itemize @bullet
|
|
@item
|
|
In Info, node and menu commands provide structure. The chapter
|
|
structuring commands generate headings with different kinds of
|
|
underlining---asterisks for chapters, hyphens for sections, and so on;
|
|
they do nothing else.@refill
|
|
|
|
@item
|
|
In @TeX{}, the chapter structuring commands generate chapter and section
|
|
numbers and tables of contents. The node and menu commands provide
|
|
information for cross references; they do nothing else.@refill
|
|
@end itemize
|
|
|
|
You can use node pointers and menus to structure an Info file any way
|
|
you want; and you can write a Texinfo file so that its Info output has a
|
|
different structure than its printed output. However, virtually all
|
|
Texinfo files are written such that the structure for the Info output
|
|
corresponds to the structure for the printed output. It is neither
|
|
convenient nor understandable to the reader to do otherwise.@refill
|
|
|
|
Generally, printed output is structured in a tree-like hierarchy in
|
|
which the chapters are the major limbs from which the sections branch
|
|
out. Similarly, node pointers and menus are organized to create a
|
|
matching structure in the Info output.@refill
|
|
|
|
|
|
@node Node Menu Illustration
|
|
@section Node and Menu Illustration
|
|
|
|
Here is a copy of the diagram shown earlier that illustrates a Texinfo
|
|
file with three chapters, each of which contains two sections.@refill
|
|
|
|
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.@refill
|
|
|
|
@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
|
|
|
|
The fully-written command to start Chapter 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
|
|
2'', the name of the `Next' node is ``Chapter 3'', the name of the
|
|
`Previous' node is ``Chapter 1'', and the name of the `Up' node is
|
|
``Top''. You can omit writing out these node names if your document is
|
|
hierarchically organized (@pxref{makeinfo Pointer Creation}), but the
|
|
pointer relationships still obtain.
|
|
|
|
@quotation
|
|
@strong{Please Note:} `Next' refers to the next node at the same
|
|
hierarchical level in the manual, not necessarily to the next node
|
|
within the Texinfo file. In the Texinfo file, the subsequent node may
|
|
be at a lower level---a section-level node most often follows a
|
|
chapter-level node, for example. `Next' and `Previous' refer to nodes
|
|
at the @emph{same} hierarchical level. (The `Top' node contains the
|
|
exception to this rule. Since the `Top' node is the only node at that
|
|
level, `Next' refers to the first following node, which is almost always
|
|
a chapter or chapter-level node.)@refill
|
|
@end quotation
|
|
|
|
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:@refill
|
|
|
|
@example
|
|
@group
|
|
@@menu
|
|
* Sect. 2.1:: Description of this section.
|
|
* Sect. 2.2::
|
|
@@end menu
|
|
@end group
|
|
@end example
|
|
|
|
Write the node for Sect. 2.1 like this:@refill
|
|
|
|
@example
|
|
@group
|
|
@@node Sect. 2.1, Sect. 2.2, Chapter 2, Chapter 2
|
|
@@comment node-name, next, previous, up
|
|
@end group
|
|
@end example
|
|
|
|
In Info format, the `Next' and `Previous' pointers of a node usually
|
|
lead to other nodes at the same level---from chapter to chapter or from
|
|
section to section (sometimes, as shown, the `Previous' pointer points
|
|
up); an `Up' pointer usually leads to a node at the level above (closer
|
|
to the `Top' node); and a `Menu' leads to nodes at a level below (closer
|
|
to `leaves'). (A cross reference can point to a node at any level;
|
|
see @ref{Cross References}.)@refill
|
|
|
|
Usually, an @code{@@node} command and a chapter structuring command are
|
|
used in sequence, along with indexing commands. (You may follow the
|
|
@code{@@node} line with a comment line that reminds you which pointer is
|
|
which.)@refill
|
|
|
|
Here is the beginning of the chapter in this manual called ``Ending a
|
|
Texinfo File''. This shows an @code{@@node} line followed by a comment
|
|
line, an @code{@@chapter} line, and then by indexing lines.@refill
|
|
|
|
@example
|
|
@group
|
|
@@node Ending a File, Structuring, Beginning a File, Top
|
|
@@comment node-name, next, previous, up
|
|
@@chapter Ending a Texinfo File
|
|
@@cindex Ending a Texinfo file
|
|
@@cindex Texinfo file ending
|
|
@@cindex File ending
|
|
@end group
|
|
@end example
|
|
|
|
|
|
@node node
|
|
@section The @code{@@node} Command
|
|
|
|
@cindex Node, defined
|
|
@findex node
|
|
|
|
A @dfn{node} is a segment of text that begins at an @code{@@node}
|
|
command and continues until the next @code{@@node} command. The
|
|
definition of node is different from that for chapter or section. A
|
|
chapter may contain sections and a section may contain subsections;
|
|
but a node cannot contain subnodes; the text of a node continues only
|
|
until the next @code{@@node} command in the file. A node usually
|
|
contains only one chapter structuring command, the one that follows
|
|
the @code{@@node} line. On the other hand, in printed output nodes
|
|
are used only for cross references, so a chapter or section may
|
|
contain any number of nodes. Indeed, a chapter usually contains
|
|
several nodes, one for each section, subsection, and
|
|
subsubsection.
|
|
|
|
To create a node, write an @code{@@node} command at the beginning of a
|
|
line, and follow it with up to four arguments, separated by commas, on
|
|
the rest of the same line. The first argument is required; it is the
|
|
name of this node. The subsequent arguments are the names of the
|
|
`Next', `Previous', and `Up' pointers, in that order, and may be omitted
|
|
if your Texinfo document is hierarchically organized (@pxref{makeinfo
|
|
Pointer Creation}).
|
|
|
|
You may insert spaces before each name if you wish; the spaces are
|
|
ignored. You must write the name of the node and (if present) the names
|
|
of the `Next', `Previous', and `Up' pointers all on the same line.
|
|
Otherwise, the formatters fail. (@inforef{Top, info, info}, for more
|
|
information about nodes in Info.)
|
|
|
|
Usually, you write one of the chapter-structuring command lines
|
|
immediately after an @code{@@node} line---for example, an
|
|
@code{@@section} or @code{@@subsection} line. (@xref{Structuring
|
|
Command Types}.)
|
|
|
|
@quotation
|
|
@strong{Please note:} The GNU Emacs Texinfo mode updating commands work
|
|
only with Texinfo files in which @code{@@node} lines are followed by chapter
|
|
structuring lines. @xref{Updating Requirements}.
|
|
@end quotation
|
|
|
|
@TeX{} uses @code{@@node} lines to identify the names to use for cross
|
|
references. For this reason, you must write @code{@@node} lines in a
|
|
Texinfo file that you intend to format for printing, even if you do not
|
|
intend to format it for Info. (Cross references, such as the one at the
|
|
end of this sentence, are made with @code{@@xref} and related commands;
|
|
see @ref{Cross References}.)
|
|
|
|
@menu
|
|
* Node Names:: How to choose node and pointer names.
|
|
* Writing a Node:: How to write an @code{@@node} line.
|
|
* Node Line Tips:: Keep names short.
|
|
* Node Line Requirements:: Keep names unique, without @@-commands.
|
|
* First Node:: How to write a `Top' node.
|
|
* makeinfo top command:: How to use the @code{@@top} command.
|
|
@end menu
|
|
|
|
|
|
@node Node Names
|
|
@subsection Choosing Node and Pointer Names
|
|
|
|
@cindex Node names, choosing
|
|
The name of a node identifies the node. The pointers 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 that 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 node pointers
|
|
name the same node.
|
|
|
|
Usually, the first node of a Texinfo file is the `Top' node, and its
|
|
`Up' and `Previous' pointers point to the @file{dir} file, which
|
|
contains the main menu for all of Info.
|
|
|
|
The `Top' node itself contains the main or master menu for the manual.
|
|
Also, it is helpful to include a brief description of the manual in the
|
|
`Top' node. @xref{First Node}, for information on how to write the
|
|
first node of a Texinfo file.
|
|
|
|
Even when you explicitly specify all pointers, that does not mean you
|
|
can write the nodes in the Texinfo source file in an arbitrary order!
|
|
Because @TeX{} processes the file sequentially, irrespective of node
|
|
pointers, you must write the nodes in the order you wish them to appear
|
|
in the printed output.
|
|
|
|
|
|
@node Writing a Node
|
|
@subsection How to Write an @code{@@node} Line
|
|
@cindex Writing an @code{@@node} line
|
|
@cindex @code{@@node} line writing
|
|
@cindex Node line writing
|
|
|
|
The easiest way to write an @code{@@node} line is to write @code{@@node}
|
|
at the beginning of a line and then the name of the node, like
|
|
this:@refill
|
|
|
|
@example
|
|
@@node @var{node-name}
|
|
@end example
|
|
|
|
If you are using GNU Emacs, you can use the update node commands
|
|
provided by Texinfo mode to insert the names of the pointers; or you
|
|
can leave the pointers out of the Texinfo file and let @code{makeinfo}
|
|
insert node pointers into the Info file it creates. (@xref{Texinfo
|
|
Mode}, and @ref{makeinfo Pointer Creation}.)@refill
|
|
|
|
Alternatively, you can insert the `Next', `Previous', and `Up'
|
|
pointers yourself. If you do this, you may find it helpful to use the
|
|
Texinfo mode keyboard command @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. This comment line is especially useful
|
|
if you are not familiar with Texinfo.@refill
|
|
|
|
The template for a fully-written-out node line with `Next', `Previous',
|
|
and `Up' pointers looks like this:@refill
|
|
|
|
@example
|
|
@@node @var{node-name}, @var{next}, @var{previous}, @var{up}
|
|
@end example
|
|
|
|
If you wish, 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. A large
|
|
number of cross references are an especially important feature of a good
|
|
Info file.
|
|
|
|
After you have inserted an @code{@@node} line, you should immediately
|
|
write an @@-command for the chapter or section and insert its name.
|
|
Next (and this is important!), put in several index entries. Usually,
|
|
you will find at least two and often as many as four or five ways of
|
|
referring to the node in the index. Use them all. This will make it
|
|
much easier for people to find the node.
|
|
|
|
|
|
@node Node Line Tips
|
|
@subsection @code{@@node} Line Tips
|
|
|
|
Here are three suggestions:
|
|
|
|
@itemize @bullet
|
|
@item
|
|
Try to pick node names that are informative but short.@refill
|
|
|
|
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.)@refill
|
|
|
|
@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.@refill
|
|
|
|
@item
|
|
By convention, node names are capitalized just as they would be for
|
|
section or chapter titles---initial and significant words are
|
|
capitalized; others are not.@refill
|
|
@end itemize
|
|
|
|
|
|
@node Node Line Requirements
|
|
@subsection @code{@@node} Line Requirements
|
|
|
|
@cindex Node line requirements
|
|
@cindex Restrictions on node names
|
|
Here are several requirements for @code{@@node} lines:
|
|
|
|
@itemize @bullet
|
|
@cindex Unique nodename requirement
|
|
@cindex Node name must be unique
|
|
@item
|
|
All the node names for a single Info file must be unique.
|
|
|
|
Duplicates confuse the Info movement commands. This means, for
|
|
example, that if you end every chapter with a summary, you must name
|
|
each summary node differently. You cannot just call each one
|
|
``Summary''. You may, however, duplicate the titles of chapters, sections,
|
|
and the like. Thus you can end each chapter in a book with a section
|
|
called ``Summary'', so long as the node names for those sections are all
|
|
different.
|
|
|
|
@item
|
|
A pointer name must be the name of a node.
|
|
|
|
The node to which a pointer points may come before or after the
|
|
node containing the pointer.
|
|
|
|
@cindex @@-commands in nodename
|
|
@cindex Node name, should not contain @@-commands
|
|
@item
|
|
@@-commands in node names are not allowed. This includes punctuation
|
|
characters that are escaped with a @samp{@@}, such as @code{@@} and
|
|
@code{@{}. (For a few rare cases when this is useful, Texinfo has
|
|
limited support for using @w{@@-commands} in node names; see
|
|
@ref{Pointer Validation}.)
|
|
|
|
@item
|
|
@cindex Colon in nodename
|
|
@cindex Comma in nodename
|
|
@cindex Parentheses in nodename
|
|
@cindex Period in nodename
|
|
@cindex Characters, invalid in node name
|
|
@cindex Invalid characters in node names
|
|
@cindex Node names, invalid characters in
|
|
Unfortunately, you cannot use periods, commas, colons or parentheses
|
|
within a node name; these confuse the Texinfo processors.
|
|
|
|
@need 700
|
|
For example, the following is a section title in this manual:
|
|
|
|
@smallexample
|
|
@@code@{@@@@unnumberedsec@}, @@code@{@@@@appendixsec@}, @@code@{@@@@heading@}
|
|
@end smallexample
|
|
|
|
@noindent
|
|
But the corresponding node name lacks the commas and the @@'s:
|
|
|
|
@smallexample
|
|
unnumberedsec appendixsec heading
|
|
@end smallexample
|
|
|
|
@cindex Case in node name
|
|
@item
|
|
Case is significant.
|
|
@end itemize
|
|
|
|
|
|
@node First Node
|
|
@subsection 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, copying permissions, and a master menu. @xref{The Top
|
|
Node}, for more information on the Top node contents and examples.
|
|
|
|
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 installed in the same Info directory tree;
|
|
in this case, use @samp{(dir)} as the parent of the Top node; this is
|
|
short for @samp{(dir)top}, and specifies the Top node in the @file{dir}
|
|
file, which contains the main menu for the Info system as a whole.
|
|
|
|
@item
|
|
@cindex Previous node of Top node
|
|
On the other hand, do not define the `Previous' node of the Top node to
|
|
be @samp{(dir)}, as it causes confusing behavior for users: if you are
|
|
in the Top node and hits @key{DEL} to go backwards, you wind up in the
|
|
middle of the some other entry in the @file{dir} file, which has nothing
|
|
to do with what you were reading.
|
|
|
|
@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.
|
|
|
|
For concreteness, here is an example with explicit pointers (which you
|
|
can maintain automatically with the texinfo mode commands):
|
|
|
|
Or you can leave the pointers off entirely and let the tools implicitly
|
|
define them. This is recommended. Thus:
|
|
|
|
@example
|
|
@@node Top
|
|
@end example
|
|
|
|
|
|
@node makeinfo top command
|
|
@subsection The @code{@@top} Sectioning Command
|
|
@findex top @r{(@@-command)}
|
|
|
|
A special sectioning command, @code{@@top} should be used with the
|
|
@code{@@node Top} line. The @code{@@top} sectioning command tells
|
|
@code{makeinfo} that it marks the `Top' node in the file. It provides
|
|
the information that @code{makeinfo} needs to insert node pointers
|
|
automatically. Write the @code{@@top} command at the beginning of the
|
|
line immediately following the @code{@@node Top} line. Write the title
|
|
on the remaining part of the same line as the @code{@@top} command.
|
|
|
|
In Info, the @code{@@top} sectioning command causes the title to appear
|
|
on a line by itself, with a line of asterisks inserted underneath, as
|
|
other sectioning commands do.
|
|
|
|
In @TeX{} and @code{texinfo-format-buffer}, the @code{@@top}
|
|
sectioning command is merely a synonym for @code{@@unnumbered}.
|
|
Neither of these formatters require an @code{@@top} command, and do
|
|
nothing special with it. You can use @code{@@chapter} or
|
|
@code{@@unnumbered} after the @code{@@node Top} line when you use
|
|
these formatters. Also, you can use @code{@@chapter} or
|
|
@code{@@unnumbered} when you use the Texinfo updating commands to
|
|
create or update pointers and menus.
|
|
|
|
Thus, in practice, a Top node starts like this:
|
|
|
|
@example
|
|
@@node Top
|
|
@@top Your Manual Title
|
|
@end example
|
|
|
|
|
|
@node makeinfo Pointer Creation
|
|
@section Creating Pointers with @code{makeinfo}
|
|
@cindex Creating pointers with @code{makeinfo}
|
|
@cindex Pointer creation with @code{makeinfo}
|
|
@cindex Automatic pointer creation with @code{makeinfo}
|
|
|
|
The @code{makeinfo} program has a feature for automatically defining
|
|
node pointers for a hierarchically organized file.
|
|
|
|
When you take advantage of this feature, you do not need to write the
|
|
`Next', `Previous', and `Up' pointers after the name of a node.
|
|
However, you must write a sectioning command, such as @code{@@chapter}
|
|
or @code{@@section}, on the line immediately following each truncated
|
|
@code{@@node} line (except that comment lines may intervene).
|
|
|
|
In addition, you must follow the `Top' @code{@@node} line with a line
|
|
beginning with @code{@@top} to mark the `Top' node in the
|
|
file. @xref{makeinfo top, , @code{@@top}}.
|
|
|
|
Finally, you must write the name of each node (except for the `Top'
|
|
node) in a menu that is one or more hierarchical levels above the
|
|
node's hierarchical level.
|
|
|
|
This node pointer insertion feature in @code{makeinfo} relieves you from
|
|
the need to update menus and pointers manually or with Texinfo mode
|
|
commands. (@xref{Updating Nodes and Menus}.)
|
|
|
|
In most cases, you will want to take advantage of this feature and not
|
|
redundantly specify node pointers. However, Texinfo documents are not
|
|
required to be organized hierarchically or in fact contain sectioning
|
|
commands at all. For example, if you never intend the document to be
|
|
printed. In those cases, you will need to explicitly specify the pointers.
|
|
|
|
|
|
@node anchor
|
|
@section @code{@@anchor}: Defining Arbitrary Cross-reference Targets
|
|
|
|
@findex anchor
|
|
@cindex Anchors
|
|
@cindex Cross-reference targets, arbitrary
|
|
@cindex Targets for cross-references, arbitrary
|
|
|
|
An @dfn{anchor} is a position in your document, labeled so that
|
|
cross-references can refer to it, just as they can to nodes. You create
|
|
an anchor with the @code{@@anchor} command, and give the label as a
|
|
normal brace-delimited argument. For example:
|
|
|
|
@example
|
|
This marks the @@anchor@{x-spot@}spot.
|
|
@dots{}
|
|
@@xref@{x-spot,,the spot@}.
|
|
@end example
|
|
|
|
@noindent produces:
|
|
|
|
@example
|
|
This marks the spot.
|
|
@dots{}
|
|
See [the spot], page 1.
|
|
@end example
|
|
|
|
As you can see, the @code{@@anchor} command itself produces no output.
|
|
This example defines an anchor `x-spot' just before the word `spot'.
|
|
You can refer to it later with an @code{@@xref} or other cross-reference
|
|
command, as shown. @xref{Cross References}, for details on the
|
|
cross-reference commands.
|
|
|
|
It is best to put @code{@@anchor} commands just before the position you
|
|
wish to refer to; that way, the reader's eye is led on to the correct
|
|
text when they jump to the anchor. You can put the @code{@@anchor}
|
|
command on a line by itself if that helps readability of the source.
|
|
Spaces are always ignored after @code{@@anchor}.
|
|
|
|
Anchor names and node names may not conflict. Anchors and nodes are
|
|
given similar treatment in some ways; for example, the @code{goto-node}
|
|
command in standalone Info takes either an anchor name or a node name as
|
|
an argument. (@xref{goto-node,,,info-stnd,GNU Info}.)
|
|
|
|
|
|
@node Menus
|
|
@chapter Menus
|
|
@cindex Menus
|
|
@findex menu
|
|
|
|
@dfn{Menus} contain pointers to subordinate nodes.@footnote{Menus can
|
|
carry you to any node, regardless of the hierarchical structure; even to
|
|
nodes in a different Info file. However, the GNU Emacs Texinfo mode
|
|
updating commands work only to create menus of subordinate nodes.
|
|
Conventionally, cross references are used to refer to other nodes.} In
|
|
Info, you use menus to go to such nodes. Menus have no effect in
|
|
printed manuals and do not appear in them.
|
|
|
|
By convention, a menu is put at the end of a node since a reader who
|
|
uses the menu may not see text that follows it. Furthermore, a node
|
|
that has a menu should not contain much text. If you have a lot of text
|
|
and a menu, move most of the text into a new subnode---all but a few
|
|
lines. Otherwise, a reader with a terminal that displays only a few
|
|
lines may miss the menu and its associated text. As a practical matter,
|
|
you should locate a menu within 20 lines of the beginning of the
|
|
node.
|
|
|
|
@menu
|
|
* Menu Location:: Put a menu in a short node.
|
|
* Writing a Menu:: What is a menu?
|
|
* Menu Parts:: A menu entry has three parts.
|
|
* Less Cluttered Menu Entry:: Two part menu entry.
|
|
* Menu Example:: Two and three part menu entries.
|
|
* Other Info Files:: How to refer to a different Info file.
|
|
@end menu
|
|
|
|
|
|
@node Menu Location, Writing a Menu, Menus, Menus
|
|
@ifinfo
|
|
@heading Menus Need Short Nodes
|
|
@end ifinfo
|
|
@cindex Menu location
|
|
@cindex Location of menus
|
|
@cindex Nodes for menus are short
|
|
@cindex Short nodes for menus
|
|
|
|
The short text before a menu may look awkward in a printed manual. To
|
|
avoid this, you can write a menu near the beginning of its node and
|
|
follow the menu by an @code{@@node} line, and then an @code{@@heading}
|
|
line located within @code{@@ifinfo} and @code{@@end ifinfo}. This way,
|
|
the menu, @code{@@node} line, and title appear only in the Info file,
|
|
not the printed document.
|
|
|
|
For example, the preceding two paragraphs follow an Info-only menu,
|
|
@code{@@node} line, and heading, and look like this:
|
|
|
|
@example
|
|
@group
|
|
@@menu
|
|
* Menu Location:: Put a menu in a short node.
|
|
* Writing a Menu:: What is a menu?
|
|
* Menu Parts:: A menu entry has three parts.
|
|
* Less Cluttered Menu Entry:: Two part menu entry.
|
|
* Menu Example:: Two and three part entries.
|
|
* Other Info Files:: How to refer to a different
|
|
Info file.
|
|
@@end menu
|
|
|
|
@@node Menu Location, Writing a Menu, , Menus
|
|
@@ifinfo
|
|
@@heading Menus Need Short Nodes
|
|
@@end ifinfo
|
|
@end group
|
|
@end example
|
|
|
|
The Texinfo file for this document contains a number of
|
|
examples of this procedure; one is at the beginning of this chapter.
|
|
|
|
|
|
@node Writing a Menu, Menu Parts, Menu Location, Menus
|
|
@section Writing a Menu
|
|
@cindex Writing a menu
|
|
@cindex Menu writing
|
|
|
|
A menu consists of an @code{@@menu} command on a line by
|
|
itself followed by menu entry lines or menu comment lines
|
|
and then by an @code{@@end menu} command on a line by
|
|
itself.@refill
|
|
|
|
A menu looks like this:@refill
|
|
|
|
@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
|
|
|
|
In a menu, every line that begins with an @w{@samp{* }} is a @dfn{menu
|
|
entry}. (Note the space after the asterisk.) 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 is a menu comment line that appears in the Info
|
|
file. In the example above, the line @samp{Larger Units of Text} is a
|
|
menu comment line; the two lines starting with @w{@samp{* }} are menu
|
|
@cindex Spaces, in menus
|
|
entries. Space characters in a menu are preserved as-is; this allows
|
|
you to format the menu as you wish.
|
|
|
|
|
|
@node Menu Parts, Less Cluttered Menu Entry, Writing a Menu, Menus
|
|
@section 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 menu entry looks like this:@refill
|
|
|
|
@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, period, or newline.@refill
|
|
|
|
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.@refill
|
|
|
|
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 two or more 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.
|
|
|
|
|
|
@node Less Cluttered Menu Entry, Menu Example, Menu Parts, Menus
|
|
@comment node-name, next, previous, up
|
|
@section 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.@refill
|
|
|
|
@need 800
|
|
For example, write
|
|
|
|
@example
|
|
* Name:: @var{description}
|
|
@end example
|
|
|
|
@need 800
|
|
@noindent
|
|
instead of
|
|
|
|
@example
|
|
* Name: Name. @var{description}
|
|
@end example
|
|
|
|
You should use the node name for the menu entry name whenever possible,
|
|
since it reduces visual clutter in the menu.@refill
|
|
|
|
@node Menu Example, Other Info Files, Less Cluttered Menu Entry, Menus
|
|
@comment node-name, next, previous, up
|
|
@section A Menu Example
|
|
@cindex Menu example
|
|
@cindex Example menu
|
|
|
|
A menu looks like this in Texinfo:@refill
|
|
|
|
@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:@refill
|
|
|
|
@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.@refill
|
|
|
|
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}).@refill
|
|
|
|
@node Other Info Files, , Menu Example, Menus
|
|
@comment node-name, next, previous, up
|
|
@section 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. In this case, you should use the three-part menu
|
|
entry format, which saves the reader from having to type the file
|
|
name.@refill
|
|
|
|
@need 800
|
|
The format looks like this:@refill
|
|
|
|
@example
|
|
@group
|
|
@@menu
|
|
* @var{first-entry-name}:(@var{filename})@var{nodename}. @var{description}
|
|
* @var{second-entry-name}:(@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 would write a
|
|
menu like this:@refill
|
|
|
|
@example
|
|
@group
|
|
@@menu
|
|
* Outlining: (emacs)Outline Mode. The major mode for
|
|
editing outlines.
|
|
* Rebinding: (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.@refill
|
|
|
|
The @file{dir} file that contains the main menu for Info has menu
|
|
entries that list only file names. These take you directly to the `Top'
|
|
nodes of each Info document. (@xref{Installing an Info File}.)
|
|
|
|
@need 700
|
|
For example:
|
|
|
|
@example
|
|
@group
|
|
* Info: (info). Documentation browsing system.
|
|
* Emacs: (emacs). The extensible, self-documenting
|
|
text editor.
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
(The @file{dir} top level directory for the Info system is an Info file,
|
|
not a Texinfo file, but a menu entry looks the same in both types of
|
|
file.)@refill
|
|
|
|
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.
|
|
|
|
|
|
@node 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. In Texinfo, nodes and anchors are the
|
|
places to which cross references can refer.
|
|
|
|
@menu
|
|
* References:: What cross references are for.
|
|
* Cross Reference Commands:: A summary of the different commands.
|
|
* Cross Reference Parts:: A cross reference has several parts.
|
|
* xref:: Begin a reference with `See' @dots{}
|
|
* Top Node Naming:: How to refer to the beginning of another file.
|
|
* ref:: A reference for the last part of a sentence.
|
|
* pxref:: How to write a parenthetical cross reference.
|
|
* inforef:: How to refer to an Info-only file.
|
|
* uref:: How to refer to a uniform resource locator.
|
|
@end menu
|
|
|
|
@node References, Cross Reference Commands, Cross References, Cross References
|
|
@ifinfo
|
|
@heading What References Are For
|
|
@end ifinfo
|
|
|
|
Often, but not always, a printed document should be designed so that
|
|
it can be read sequentially. People tire of flipping back and forth
|
|
to find information that should be presented to them as they need
|
|
it.@refill
|
|
|
|
However, in any document, some information will be too detailed for
|
|
the current context, or incidental to it; use cross references to
|
|
provide access to such information. Also, 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.@refill
|
|
|
|
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.@refill
|
|
|
|
In Info, a cross reference results in an entry that you can follow using
|
|
the Info @samp{f} command. (@inforef{Help-Adv, Some advanced Info
|
|
commands, info}.)@refill
|
|
|
|
The various cross reference commands use nodes (or anchors,
|
|
@pxref{anchor,,@code{@@anchor}}) to define cross reference locations.
|
|
This is evident in Info, in which a cross reference takes you to the
|
|
specified location. @TeX{} also uses nodes to define cross reference
|
|
locations, but the action is less obvious. When @TeX{} generates a DVI
|
|
file, it records each node's page number and uses the page numbers in making
|
|
references. Thus, if you are writing a manual that will only be
|
|
printed, and will not be used online, you must nonetheless write
|
|
@code{@@node} lines to name the places to which you make cross
|
|
references.@refill
|
|
|
|
@need 800
|
|
@node Cross Reference Commands, Cross Reference Parts, References, Cross References
|
|
@comment node-name, next, previous, up
|
|
@section Different Cross Reference Commands
|
|
@cindex Different cross reference commands
|
|
|
|
There are four different cross reference commands:@refill
|
|
|
|
@table @code
|
|
@item @@xref
|
|
Used to start a sentence in the printed manual saying @w{`See @dots{}'}
|
|
or an Info cross-reference saying @samp{*Note @var{name}: @var{node}.}.
|
|
|
|
@item @@ref
|
|
Used within or, more often, at the end of a sentence; same as
|
|
@code{@@xref} for Info; produces just the reference in the printed
|
|
manual without a preceding `See'.@refill
|
|
|
|
@item @@pxref
|
|
Used within parentheses to make a reference that suits both an Info
|
|
file and a printed book. Starts with a lower case `see' within the
|
|
printed manual. (@samp{p} is for `parenthesis'.)@refill
|
|
|
|
@item @@inforef
|
|
Used to make a reference to an Info file for which there is no printed
|
|
manual.@refill
|
|
@end table
|
|
|
|
@noindent
|
|
(The @code{@@cite} command is used to make references to books and
|
|
manuals for which there is no corresponding Info file and, therefore,
|
|
no node to which to point. @xref{cite, , @code{@@cite}}.)@refill
|
|
|
|
@node Cross Reference Parts, xref, Cross Reference Commands, Cross References
|
|
@comment node-name, next, previous, up
|
|
@section Parts of a Cross Reference
|
|
@cindex Cross reference parts
|
|
@cindex Parts of a cross reference
|
|
|
|
A cross reference command requires only one argument, which is the
|
|
name of the node to which it refers. But a cross reference command
|
|
may contain up to four additional arguments. By using these
|
|
arguments, you can provide a cross reference name for Info, a topic
|
|
description or section title for the printed output, the name of a
|
|
different Info file, and the name of a different printed
|
|
manual.@refill
|
|
|
|
Here is a simple cross reference example:@refill
|
|
|
|
@example
|
|
@@xref@{Node name@}.
|
|
@end example
|
|
|
|
@noindent
|
|
which produces
|
|
|
|
@example
|
|
*Note Node name::.
|
|
@end example
|
|
|
|
@noindent
|
|
and
|
|
|
|
@quotation
|
|
See Section @var{nnn} [Node name], page @var{ppp}.
|
|
@end quotation
|
|
|
|
@need 700
|
|
Here is an example of a full five-part cross reference:@refill
|
|
|
|
@example
|
|
@group
|
|
@@xref@{Node name, Cross Reference Name, Particular Topic,
|
|
info-file-name, A Printed Manual@}, for details.
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
which produces
|
|
|
|
@example
|
|
*Note Cross Reference Name: (info-file-name)Node name,
|
|
for details.
|
|
@end example
|
|
|
|
@noindent
|
|
in Info and
|
|
|
|
@quotation
|
|
See section ``Particular Topic'' in @i{A Printed Manual}, for details.
|
|
@end quotation
|
|
|
|
@noindent
|
|
in a printed book.
|
|
|
|
The five possible arguments for a cross reference are:@refill
|
|
|
|
@enumerate
|
|
@item
|
|
The node or anchor name (required). 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.@refill
|
|
|
|
@item
|
|
The cross reference name for the Info reference, if it is to be different
|
|
from the node name. If you include this argument, it becomes
|
|
the first part of the cross reference. It is usually omitted.@refill
|
|
|
|
@item
|
|
A topic description or section name. Often, this is the title of the
|
|
section. This is used as the name of the reference in the printed
|
|
manual. If omitted, the node name is used.@refill
|
|
|
|
@item
|
|
The name of the Info file in which the reference is located, if it is
|
|
different from the current file. You need not include any @samp{.info}
|
|
suffix on the file name, since Info readers try appending it
|
|
automatically.
|
|
|
|
@item
|
|
The name of a printed manual from a different Texinfo file.@refill
|
|
@end enumerate
|
|
|
|
The template for a full five argument cross reference looks like
|
|
this:@refill
|
|
|
|
@example
|
|
@group
|
|
@@xref@{@var{node-name}, @var{cross-reference-name}, @var{title-or-topic},
|
|
@var{info-file-name}, @var{printed-manual-title}@}.
|
|
@end group
|
|
@end example
|
|
|
|
Cross references with one, two, three, four, and five arguments are
|
|
described separately following the description of @code{@@xref}.@refill
|
|
|
|
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
|
|
formatters may not find the reference.@refill
|
|
|
|
You can write cross reference commands within a paragraph, but note
|
|
how Info and @TeX{} format the output of each of the various commands:
|
|
write @code{@@xref} at the beginning of a sentence; write
|
|
@code{@@pxref} only within parentheses, and so on.@refill
|
|
|
|
@node xref, Top Node Naming, Cross Reference Parts, Cross References
|
|
@comment node-name, next, previous, up
|
|
@section @code{@@xref}
|
|
@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. The Info formatting commands convert it into
|
|
an Info cross reference, which the Info @samp{f} command can use to
|
|
bring you directly to another node. The @TeX{} typesetting commands
|
|
convert it into a page reference, or a reference to another book or
|
|
manual.@refill
|
|
|
|
@menu
|
|
* Reference Syntax:: What a reference looks like and requires.
|
|
* One Argument:: @code{@@xref} with one argument.
|
|
* Two Arguments:: @code{@@xref} with two arguments.
|
|
* Three Arguments:: @code{@@xref} with three arguments.
|
|
* Four and Five Arguments:: @code{@@xref} with four and five arguments.
|
|
@end menu
|
|
|
|
@node Reference Syntax, One Argument, xref, xref
|
|
@ifinfo
|
|
@subheading What a Reference Looks Like and Requires
|
|
@end ifinfo
|
|
|
|
Most often, an Info cross reference looks like this:@refill
|
|
|
|
@example
|
|
*Note @var{node-name}::.
|
|
@end example
|
|
|
|
@noindent
|
|
or like this
|
|
|
|
@example
|
|
*Note @var{cross-reference-name}: @var{node-name}.
|
|
@end example
|
|
|
|
@noindent
|
|
In @TeX{}, a cross reference looks like this:
|
|
|
|
@quotation
|
|
See Section @var{section-number} [@var{node-name}], page @var{page}.
|
|
@end quotation
|
|
|
|
@noindent
|
|
or like this
|
|
|
|
@quotation
|
|
See Section @var{section-number} [@var{title-or-topic}], page @var{page}.
|
|
@end quotation
|
|
|
|
The @code{@@xref} command does not generate a period or comma to end
|
|
the cross reference in either the Info file or the printed output.
|
|
You must write that period or comma yourself; otherwise, Info will not
|
|
recognize the end of the reference. (The @code{@@pxref} command works
|
|
differently. @xref{pxref, , @code{@@pxref}}.)@refill
|
|
|
|
@quotation
|
|
@strong{Please note:} A period or comma @strong{must} follow the closing
|
|
brace of an @code{@@xref}. It is required to terminate the cross
|
|
reference. This period or comma will appear in the output, both in
|
|
the Info file and in the printed manual.@refill
|
|
@end quotation
|
|
|
|
@code{@@xref} must refer to an Info node by name. Use @code{@@node}
|
|
to define the node (@pxref{Writing a Node}).@refill
|
|
|
|
@code{@@xref} is followed by several arguments inside braces, separated by
|
|
commas. Whitespace before and after these commas is ignored.@refill
|
|
|
|
A cross reference requires only the name of a node; but it may contain
|
|
up to four additional arguments. Each of these variations produces a
|
|
cross reference that looks somewhat different.@refill
|
|
|
|
@quotation
|
|
@strong{Please note:} Commas separate arguments in a cross reference;
|
|
avoid including them in the title or other part lest the formatters
|
|
mistake them for separators.@refill
|
|
@end quotation
|
|
|
|
@node One Argument, Two Arguments, Reference Syntax, xref
|
|
@subsection @code{@@xref} with One Argument
|
|
|
|
The simplest form of @code{@@xref} takes one argument, the name of
|
|
another node in the same Info file. The Info formatters produce
|
|
output that the Info readers can use to jump to the reference; @TeX{}
|
|
produces output that specifies the page and section number for you.@refill
|
|
|
|
@need 700
|
|
@noindent
|
|
For example,
|
|
|
|
@example
|
|
@@xref@{Tropical Storms@}.
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@example
|
|
*Note Tropical Storms::.
|
|
@end example
|
|
|
|
@noindent
|
|
and
|
|
|
|
@quotation
|
|
See Section 3.1 [Tropical Storms], page 24.
|
|
@end quotation
|
|
|
|
@noindent
|
|
(Note that in the preceding example the closing brace is followed by a
|
|
period.)@refill
|
|
|
|
You can write a clause after the cross reference, like this:@refill
|
|
|
|
@example
|
|
@@xref@{Tropical Storms@}, for more info.
|
|
@end example
|
|
|
|
@noindent
|
|
which produces
|
|
|
|
@example
|
|
*Note Tropical Storms::, for more info.
|
|
@end example
|
|
|
|
@noindent
|
|
and
|
|
|
|
@quotation
|
|
See Section 3.1 [Tropical Storms], page 24, for more info.
|
|
@end quotation
|
|
|
|
@noindent
|
|
(Note that in the preceding example the closing brace is followed by a
|
|
comma, and then by the clause, which is followed by a period.)@refill
|
|
|
|
@node Two Arguments, Three Arguments, One Argument, xref
|
|
@subsection @code{@@xref} with Two Arguments
|
|
|
|
With two arguments, the second is used as the name of the Info cross
|
|
reference, while the first is still the name of the node to which the
|
|
cross reference points.@refill
|
|
|
|
@need 750
|
|
@noindent
|
|
The template is like this:
|
|
|
|
@example
|
|
@@xref@{@var{node-name}, @var{cross-reference-name}@}.
|
|
@end example
|
|
|
|
@need 700
|
|
@noindent
|
|
For example,
|
|
|
|
@example
|
|
@@xref@{Electrical Effects, Lightning@}.
|
|
@end example
|
|
|
|
@noindent
|
|
produces:
|
|
|
|
@example
|
|
*Note Lightning: Electrical Effects.
|
|
@end example
|
|
|
|
@noindent
|
|
and
|
|
|
|
@quotation
|
|
See Section 5.2 [Electrical Effects], page 57.
|
|
@end quotation
|
|
|
|
@noindent
|
|
(Note that in the preceding example the closing brace is followed by a
|
|
period; and that the node name is printed, not the cross reference name.)
|
|
|
|
You can write a clause after the cross reference, like this:@refill
|
|
|
|
@example
|
|
@@xref@{Electrical Effects, Lightning@}, for more info.
|
|
@end example
|
|
|
|
@noindent
|
|
which produces
|
|
@example
|
|
*Note Lightning: Electrical Effects, for more info.
|
|
@end example
|
|
|
|
@noindent
|
|
and
|
|
|
|
@quotation
|
|
See Section 5.2 [Electrical Effects], page 57, for more info.
|
|
@end quotation
|
|
|
|
@noindent
|
|
(Note that in the preceding example the closing brace is followed by a
|
|
comma, and then by the clause, which is followed by a period.)@refill
|
|
|
|
@node Three Arguments, Four and Five Arguments, Two Arguments, xref
|
|
@subsection @code{@@xref} with Three Arguments
|
|
|
|
A third argument replaces the node name in the @TeX{} output. The third
|
|
argument should be the name of the section in the printed output, or
|
|
else state the topic discussed by that section. Often, you will want to
|
|
use initial upper case letters so it will be easier to read when the
|
|
reference is printed. Use a third argument when the node name is
|
|
unsuitable because of syntax or meaning.@refill
|
|
|
|
Remember to avoid placing a comma within the title or topic section of
|
|
a cross reference, or within any other section. The formatters divide
|
|
cross references into arguments according to the commas; a comma
|
|
within a title or other section will divide it into two arguments. In
|
|
a reference, you need to write a title such as ``Clouds, Mist, and
|
|
Fog'' without the commas.@refill
|
|
|
|
Also, remember to write a comma or period after the closing brace of an
|
|
@code{@@xref} to terminate the cross reference. In the following
|
|
examples, a clause follows a terminating comma.@refill
|
|
|
|
|
|
@need 750
|
|
@noindent
|
|
The template is like this:
|
|
|
|
@example
|
|
@group
|
|
@@xref@{@var{node-name}, @var{cross-reference-name}, @var{title-or-topic}@}.
|
|
@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
|
|
and
|
|
|
|
@quotation
|
|
See Section 5.2 [Thunder and Lightning], page 57, for details.
|
|
@end quotation
|
|
|
|
If a third argument is given and the second one is empty, then the
|
|
third argument serves both. (Note how two commas, side by side, mark
|
|
the empty second argument.)@refill
|
|
|
|
@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
|
|
and
|
|
|
|
@quotation
|
|
See Section 5.2 [Thunder and Lightning], page 57, for details.
|
|
@end quotation
|
|
|
|
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, and with the first and third arguments if the node name and title
|
|
are different.@refill
|
|
|
|
Here are several examples from @cite{The GNU Awk User's Guide}:@refill
|
|
|
|
@smallexample
|
|
@@xref@{Sample Program@}.
|
|
@@xref@{Glossary@}.
|
|
@@xref@{Case-sensitivity, ,Case-sensitivity in Matching@}.
|
|
@@xref@{Close Output, , Closing Output Files and Pipes@},
|
|
for more information.
|
|
@@xref@{Regexp, , Regular Expressions as Patterns@}.
|
|
@end smallexample
|
|
|
|
@node Four and Five Arguments, , Three Arguments, xref
|
|
@subsection @code{@@xref} with Four and Five Arguments
|
|
|
|
In a cross reference, a fourth argument specifies the name of another
|
|
Info file, different from the file in which the reference appears, and
|
|
a fifth argument specifies its title as a printed manual.@refill
|
|
|
|
Remember that a comma or period must follow the closing brace of an
|
|
@code{@@xref} command to terminate the cross reference. In the
|
|
following examples, a clause follows a terminating comma.@refill
|
|
|
|
@need 800
|
|
@noindent
|
|
The template is:
|
|
|
|
@example
|
|
@group
|
|
@@xref@{@var{node-name}, @var{cross-reference-name}, @var{title-or-topic},
|
|
@var{info-file-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@}, for details.
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@example
|
|
*Note Lightning: (weather)Electrical Effects, for details.
|
|
@end example
|
|
|
|
@noindent
|
|
The name of the Info file is enclosed in parentheses and precedes
|
|
the name of the node.
|
|
|
|
@noindent
|
|
In a printed manual, the reference looks like this:@refill
|
|
|
|
@quotation
|
|
See section ``Thunder and Lightning'' in @i{An Introduction to
|
|
Meteorology}, for details.
|
|
@end quotation
|
|
|
|
@noindent
|
|
The title of the printed manual is typeset in italics; and the
|
|
reference lacks a page number since @TeX{} cannot know to which page a
|
|
reference refers when that reference is to another manual.@refill
|
|
|
|
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 Info.@refill
|
|
|
|
@noindent
|
|
The template looks like this:
|
|
|
|
@example
|
|
@@xref@{@var{node-name}, , @var{title-or-topic}, @var{info-file-name},
|
|
@var{printed-manual-title}@}, for details.
|
|
@end example
|
|
|
|
@noindent
|
|
which produces
|
|
|
|
@example
|
|
*Note @var{title-or-topic}: (@var{info-file-name})@var{node-name}, for details.
|
|
@end example
|
|
|
|
@noindent
|
|
and
|
|
|
|
@quotation
|
|
See section @var{title-or-topic} in @var{printed-manual-title}, for details.
|
|
@end quotation
|
|
|
|
@need 700
|
|
@noindent
|
|
For example,
|
|
|
|
@example
|
|
@@xref@{Electrical Effects, , Thunder and Lightning,
|
|
weather, An Introduction to Meteorology@}, for details.
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@example
|
|
@group
|
|
*Note Thunder and Lightning: (weather)Electrical Effects,
|
|
for details.
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
and
|
|
|
|
@quotation
|
|
See section ``Thunder and Lightning'' in @i{An Introduction to
|
|
Meteorology}, for details.
|
|
@end quotation
|
|
|
|
On rare occasions, you may want to refer to another Info file that
|
|
is within a single printed manual---when multiple Texinfo files are
|
|
incorporated into the same @TeX{} run but make separate Info files.
|
|
In this case, you need to specify only the fourth argument, and not
|
|
the fifth.@refill
|
|
|
|
@node Top Node Naming, ref, xref, Cross References
|
|
@section Naming a `Top' Node
|
|
@cindex Naming a `Top' Node in references
|
|
@cindex @samp{@r{Top}} node naming for references
|
|
|
|
In a cross reference, you must always name a node. This means that in
|
|
order to refer to a whole manual, you must identify the `Top' node by
|
|
writing it as the first argument to the @code{@@xref} command. (This
|
|
is different from the way you write a menu entry; see @ref{Other Info
|
|
Files, , Referring to Other Info Files}.) At the same time, to
|
|
provide a meaningful section topic or title in the printed cross
|
|
reference (instead of the word `Top'), you must write an appropriate
|
|
entry for the third argument to the @code{@@xref} command.
|
|
@refill
|
|
|
|
@noindent
|
|
Thus, to make a cross reference to @cite{The GNU Make Manual},
|
|
write:@refill
|
|
|
|
@example
|
|
@@xref@{Top, , Overview, make, The GNU Make Manual@}.
|
|
@end example
|
|
|
|
@noindent
|
|
which produces
|
|
|
|
@example
|
|
*Note Overview: (make)Top.
|
|
@end example
|
|
|
|
@noindent
|
|
and
|
|
|
|
@quotation
|
|
See section ``Overview'' in @i{The GNU Make Manual}.
|
|
@end quotation
|
|
|
|
@noindent
|
|
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.@refill
|
|
@node ref, pxref, Top Node Naming, Cross References
|
|
@comment node-name, next, previous, up
|
|
@section @code{@@ref}
|
|
@cindex Cross references using @code{@@ref}
|
|
@cindex References using @code{@@ref}
|
|
@findex ref
|
|
|
|
@code{@@ref} is nearly the same as @code{@@xref} except that it does
|
|
not generate a `See' in the printed output, just the reference itself.
|
|
This makes it useful as the last part of a sentence.@refill
|
|
|
|
@need 700
|
|
@noindent
|
|
For example,
|
|
|
|
@cindex Hurricanes
|
|
@example
|
|
For more information, see @@ref@{Hurricanes@}.
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@example
|
|
For more information, see *Note Hurricanes::.
|
|
@end example
|
|
|
|
@noindent
|
|
and
|
|
|
|
@quotation
|
|
For more information, see Section 8.2 [Hurricanes], page 123.
|
|
@end quotation
|
|
|
|
The @code{@@ref} command sometimes leads 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 will be using
|
|
both the printed and the Info format.@refill
|
|
|
|
@need 800
|
|
@noindent
|
|
For example,
|
|
|
|
@cindex Sea surges
|
|
@example
|
|
@group
|
|
Sea surges are described in @@ref@{Hurricanes@}.
|
|
@end group
|
|
@end example
|
|
|
|
@need 800
|
|
@noindent
|
|
produces
|
|
|
|
@quotation
|
|
Sea surges are described in Section 6.7 [Hurricanes], page 72.
|
|
@end quotation
|
|
|
|
@need 800
|
|
@noindent
|
|
in a printed document, and the following in Info:
|
|
|
|
@example
|
|
Sea surges are described in *Note Hurricanes::.
|
|
@end example
|
|
|
|
@quotation
|
|
@strong{Caution:} You @emph{must} write a period, comma, or right
|
|
parenthesis immediately after an @code{@@ref} command with two or more
|
|
arguments. Otherwise, Info will not find the end of the cross reference
|
|
entry and its attempt to follow the cross reference will fail. As a
|
|
general rule, you should write a period or comma after every
|
|
@code{@@ref} command. This looks best in both the printed and the Info
|
|
output.@refill
|
|
@end quotation
|
|
|
|
@node pxref, inforef, ref, Cross References
|
|
@comment node-name, next, previous, up
|
|
@section @code{@@pxref}
|
|
@cindex Cross references using @code{@@pxref}
|
|
@cindex References using @code{@@pxref}
|
|
@findex pxref
|
|
|
|
The parenthetical reference command, @code{@@pxref}, is nearly the
|
|
same as @code{@@xref}, but you use it @emph{only} inside parentheses
|
|
and you do @emph{not} type a comma or period after the command's
|
|
closing brace. The command differs from @code{@@xref} in two
|
|
ways:@refill
|
|
|
|
@enumerate
|
|
@item
|
|
@TeX{} typesets the reference for the printed manual with a lower case
|
|
`see' rather than an upper case `See'.@refill
|
|
|
|
@item
|
|
The Info formatting commands automatically end the reference with a
|
|
closing colon or period.@refill
|
|
@end enumerate
|
|
|
|
Because one type of formatting automatically inserts closing
|
|
punctuation and the other does not, you should use @code{@@pxref}
|
|
@emph{only} inside parentheses as part of another sentence. Also, you
|
|
yourself should not insert punctuation after the reference, as you do
|
|
with @code{@@xref}.@refill
|
|
|
|
@code{@@pxref} is designed so that the output looks right and works
|
|
right between parentheses both in printed output and in an Info file.
|
|
In a printed manual, a closing comma or period should not follow a
|
|
cross reference within parentheses; such punctuation is wrong. But in
|
|
an Info file, suitable closing punctuation must follow the cross
|
|
reference so Info can recognize its end. @code{@@pxref} spares you
|
|
the need to use complicated methods to put a terminator into one form
|
|
of the output and not the other.@refill
|
|
|
|
@noindent
|
|
With one argument, a parenthetical cross reference looks like
|
|
this:@refill
|
|
|
|
@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
|
|
and
|
|
|
|
@quotation
|
|
@dots{} storms cause flooding (see Section 6.7 [Hurricanes], page 72) @dots{}
|
|
@end quotation
|
|
|
|
With two arguments, a parenthetical cross reference has this
|
|
template:@refill
|
|
|
|
@example
|
|
@dots{} (@@pxref@{@var{node-name}, @var{cross-reference-name}@}) @dots{}
|
|
@end example
|
|
|
|
@noindent
|
|
which produces
|
|
|
|
@example
|
|
@dots{} (*Note @var{cross-reference-name}: @var{node-name}.) @dots{}
|
|
@end example
|
|
|
|
@noindent
|
|
and
|
|
|
|
@need 1500
|
|
@quotation
|
|
@dots{} (see Section @var{nnn} [@var{node-name}], page @var{ppp}) @dots{}
|
|
@end quotation
|
|
|
|
@code{@@pxref} can be used with up to five arguments just like
|
|
@code{@@xref} (@pxref{xref, , @code{@@xref}}).@refill
|
|
|
|
@quotation
|
|
@strong{Please note:} Use @code{@@pxref} only as a parenthetical
|
|
reference. Do not try to use @code{@@pxref} as a clause in a sentence.
|
|
It will look bad in either the Info file, the printed output, or
|
|
both.@refill
|
|
|
|
Also, parenthetical cross references look best at the ends of sentences.
|
|
Although you may write them in the middle of a sentence, that location
|
|
breaks up the flow of text.@refill
|
|
@end quotation
|
|
|
|
@node inforef, uref, pxref, Cross References
|
|
@section @code{@@inforef}
|
|
@cindex Cross references using @code{@@inforef}
|
|
@cindex References using @code{@@inforef}
|
|
@findex inforef
|
|
|
|
@code{@@inforef} is used for cross references to Info files for which
|
|
there are no printed manuals. Even in a printed manual,
|
|
@code{@@inforef} generates a reference directing the user to look in
|
|
an Info file.@refill
|
|
|
|
The command takes either two or three arguments, in the following
|
|
order:@refill
|
|
|
|
@enumerate
|
|
@item
|
|
The node name.
|
|
|
|
@item
|
|
The cross reference name (optional).
|
|
|
|
@item
|
|
The Info file name.
|
|
@end enumerate
|
|
|
|
@noindent
|
|
Separate the arguments with commas, as with @code{@@xref}. Also, you
|
|
must terminate the reference with a comma or period after the
|
|
@samp{@}}, as you do with @code{@@xref}.@refill
|
|
|
|
@noindent
|
|
The template is:
|
|
|
|
@example
|
|
@@inforef@{@var{node-name}, @var{cross-reference-name}, @var{info-file-name}@},
|
|
@end example
|
|
|
|
@need 800
|
|
@noindent
|
|
Thus,
|
|
|
|
@example
|
|
@group
|
|
@@inforef@{Expert, Advanced Info commands, info@},
|
|
for more information.
|
|
@end group
|
|
@end example
|
|
|
|
@need 800
|
|
@noindent
|
|
produces
|
|
|
|
@example
|
|
@group
|
|
*Note Advanced Info commands: (info)Expert,
|
|
for more information.
|
|
@end group
|
|
@end example
|
|
|
|
@need 800
|
|
@noindent
|
|
and
|
|
|
|
@quotation
|
|
See Info file @file{info}, node @samp{Expert}, for more information.
|
|
@end quotation
|
|
|
|
@need 800
|
|
@noindent
|
|
Similarly,
|
|
|
|
@example
|
|
@group
|
|
@@inforef@{Expert, , info@}, for more information.
|
|
@end group
|
|
@end example
|
|
|
|
@need 800
|
|
@noindent
|
|
produces
|
|
|
|
@example
|
|
*Note (info)Expert::, for more information.
|
|
@end example
|
|
|
|
@need 800
|
|
@noindent
|
|
and
|
|
|
|
@quotation
|
|
See Info file @file{info}, node @samp{Expert}, for more information.
|
|
@end quotation
|
|
|
|
The converse of @code{@@inforef} is @code{@@cite}, which is used to
|
|
refer to printed works for which no Info form exists. @xref{cite, ,
|
|
@code{@@cite}}.@refill
|
|
|
|
|
|
@node uref
|
|
@section @code{@@uref@{@var{url}[, @var{text}][, @var{replacement}]@}}
|
|
@findex uref
|
|
@cindex Uniform resource locator, referring to
|
|
@cindex URL, referring to
|
|
|
|
@cindex @code{href}, producing HTML
|
|
@code{@@uref} 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 output, @code{@@uref}
|
|
produces a link you can follow.
|
|
|
|
The second argument, if specified, is the text to display (the default
|
|
is the url itself); in Info and DVI output, but not in HTML output, the
|
|
url is also output.
|
|
|
|
@cindex Man page, reference to
|
|
The third argument, on the other hand, if specified is also the text to
|
|
display, but the url is @emph{not} output in any format. This is useful
|
|
when the text is already sufficiently referential, as in a man page. If
|
|
the third argument is given, the second argument is ignored.
|
|
|
|
The simple one argument form, where the url is both the target and the
|
|
text of the link:
|
|
|
|
@example
|
|
The official GNU ftp site is @@uref@{ftp://ftp.gnu.org/gnu@}.
|
|
@end example
|
|
|
|
@noindent produces:
|
|
@display
|
|
The official GNU ftp site is @uref{ftp://ftp.gnu.org/gnu}.
|
|
@end display
|
|
|
|
|
|
An example of the two-argument form:
|
|
@example
|
|
The official @@uref@{ftp://ftp.gnu.org/gnu, GNU ftp site@}
|
|
holds programs and texts.
|
|
@end example
|
|
|
|
@noindent produces:
|
|
@display
|
|
The official @uref{ftp://ftp.gnu.org/gnu, GNU ftp site}
|
|
holds programs and texts.
|
|
@end display
|
|
|
|
@noindent that is, the Info output is this:
|
|
@example
|
|
The official GNU ftp site (ftp://ftp.gnu.org/gnu)
|
|
holds programs and texts.
|
|
@end example
|
|
|
|
@noindent and the HTML output is this:
|
|
@example
|
|
The official <a href="ftp://ftp.gnu.org/gnu">GNU ftp site</a>
|
|
holds programs and texts.
|
|
@end example
|
|
|
|
|
|
An example of the three-argument form:
|
|
@example
|
|
The @@uref@{/man.cgi/1/ls,,ls(1)@} program @dots{}
|
|
@end example
|
|
|
|
@noindent produces:
|
|
@display
|
|
The @uref{/man.cgi/1/ls,,ls(1)} program @dots{}
|
|
@end display
|
|
|
|
@noindent but with HTML:
|
|
@example
|
|
The <a href="/man.cgi/1/ls">ls(1)</a> program @dots{}
|
|
@end example
|
|
|
|
To merely indicate a url without creating a link people can follow, use
|
|
@code{@@url} (@pxref{url, @code{@@url}}).
|
|
|
|
Some people prefer to display url's in the unambiguous format:
|
|
|
|
@display
|
|
<URL:http://@var{host}/@var{path}>
|
|
@end display
|
|
|
|
@noindent
|
|
@cindex <URL convention, not used
|
|
You can use this form in the input file if you wish. We feel it's not
|
|
necessary to clutter up the output with the extra @samp{<URL:} and
|
|
@samp{>}, since any software that tries to detect url's in text already
|
|
has to detect them without the @samp{<URL:} to be useful.
|
|
|
|
|
|
@node Marking Text
|
|
@chapter Marking 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 formatters 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.
|
|
|
|
@menu
|
|
* Indicating:: How to indicate definitions, files, etc.
|
|
* Emphasis:: How to emphasize text.
|
|
@end menu
|
|
|
|
|
|
@node Indicating, Emphasis, Marking Text, Marking Text
|
|
@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, metasyntactic variables are marked by
|
|
@code{@@var}, and code by @code{@@code}. Since the pieces of text are
|
|
labelled by commands that tell what kind of object they are, it is easy
|
|
to change the way the Texinfo formatters prepare such text. (Texinfo is
|
|
an @emph{intentional} formatting language rather than a @emph{typesetting}
|
|
formatting language.)@refill
|
|
|
|
For example, in a printed manual,
|
|
code is usually illustrated in a typewriter font;
|
|
@code{@@code} tells @TeX{} to typeset this text in this font. But it
|
|
would be easy to change the way @TeX{} highlights code to use another
|
|
font, and this change would not affect how keystroke examples are
|
|
highlighted. If straight typesetting commands were used in the body
|
|
of the file and you wanted to make a change, you would need to check
|
|
every single occurrence to make sure that you were changing code and
|
|
not something else that should not be changed.@refill
|
|
|
|
@menu
|
|
* Useful Highlighting:: Highlighting provides useful information.
|
|
* code:: Indicating program code.
|
|
* kbd:: Showing keyboard input.
|
|
* key:: Specifying keys.
|
|
* samp:: A literal sequence of characters.
|
|
* verb:: A verbatim sequence of characters.
|
|
* var:: Indicating metasyntactic variables.
|
|
* env:: Indicating environment variables.
|
|
* file:: Indicating file names.
|
|
* command:: Indicating command names.
|
|
* option:: Indicating option names.
|
|
* dfn:: Specifying definitions.
|
|
* cite:: Referring to books not in the Info system.
|
|
* acronym:: Indicating acronyms.
|
|
* url:: Indicating a World Wide Web reference.
|
|
* email:: Indicating an electronic mail address.
|
|
@end menu
|
|
|
|
|
|
@node Useful Highlighting, code, Indicating, Indicating
|
|
@ifinfo
|
|
@subheading Highlighting Commands are Useful
|
|
@end ifinfo
|
|
|
|
The highlighting commands can be used to extract useful information
|
|
from the file, such as lists of functions or file names. It is
|
|
possible, for example, to write a program in Emacs Lisp (or a keyboard
|
|
macro) to insert an index entry after every paragraph that contains
|
|
words or phrases marked by a specified command. You could do this to
|
|
construct an index of functions if you had not already made the
|
|
entries.@refill
|
|
|
|
The commands serve a variety of purposes:@refill
|
|
|
|
@table @code
|
|
@item @@code@{@var{sample-code}@}
|
|
Indicate text that is a literal example of a piece of a program.@refill
|
|
|
|
@item @@kbd@{@var{keyboard-characters}@}
|
|
Indicate keyboard input.@refill
|
|
|
|
@item @@key@{@var{key-name}@}
|
|
Indicate the conventional name for a key on a keyboard.@refill
|
|
|
|
@item @@samp@{@var{text}@}
|
|
Indicate text that is a literal example of a sequence of characters.@refill
|
|
|
|
@item @@var@{@var{metasyntactic-variable}@}
|
|
Indicate a metasyntactic variable.@refill
|
|
|
|
@item @@env@{@var{environment-variable}@}
|
|
Indicate an environment variable.@refill
|
|
|
|
@item @@file@{@var{file-name}@}
|
|
Indicate the name of a file.@refill
|
|
|
|
@item @@command@{@var{command-name}@}
|
|
Indicate the name of a command.@refill
|
|
|
|
@item @@option@{@var{option}@}
|
|
Indicate a command-line option.@refill
|
|
|
|
@item @@dfn@{@var{term}@}
|
|
Indicate the introductory or defining use of a term.@refill
|
|
|
|
@item @@cite@{@var{reference}@}
|
|
Indicate the name of a book.@refill
|
|
|
|
@item @@acronym@{@var{acronym}@}
|
|
Indicate an acronym.@refill
|
|
|
|
@item @@url@{@var{uniform-resource-locator}@}
|
|
Indicate a uniform resource locator for the World Wide Web.
|
|
|
|
@item @@email@{@var{email-address}[, @var{displayed-text}]@}
|
|
Indicate an electronic mail address.
|
|
|
|
@ignore
|
|
@item @@ctrl@{@var{ctrl-char}@}
|
|
Use for an @sc{ascii} control character.@refill
|
|
@end ignore
|
|
@end table
|
|
|
|
|
|
@node code
|
|
@subsection @code{@@code}@{@var{sample-code}@}
|
|
@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 an @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 lower case, you
|
|
should rearrange the sentence.
|
|
|
|
In the printed manual, @code{@@code} causes @TeX{} to typeset the
|
|
argument in a typewriter face. In the Info file, it causes the Info
|
|
formatting commands to use single quotation marks around the text.
|
|
|
|
@need 700
|
|
For example,
|
|
|
|
@example
|
|
The function returns @@code@{nil@}.
|
|
@end example
|
|
|
|
@noindent
|
|
produces this in the printed manual:
|
|
|
|
@quotation
|
|
The function returns @code{nil}.
|
|
@end quotation
|
|
|
|
@iftex
|
|
@noindent
|
|
and this in the Info file:
|
|
@example
|
|
The function returns `nil'.
|
|
@end example
|
|
@end iftex
|
|
|
|
Here are some cases for which it is preferable not to use @code{@@code}:
|
|
|
|
@itemize @bullet
|
|
@item
|
|
For shell command names such as @command{ls} (use @code{@@command}).
|
|
|
|
@item
|
|
For shell options such as @samp{-c} when such options stand alone (use
|
|
@code{@@option}).
|
|
|
|
@item
|
|
Also, 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 environment variable such as @env{TEXINPUTS} (use @code{@@env}).
|
|
|
|
@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
|
|
|
|
Since @code{@@command}, @code{@@option}, and @code{@@env} were
|
|
introduced relatively recently, it is acceptable to use @code{@@code} or
|
|
@code{@@samp} for command names, options, and environment variables.
|
|
The new commands allow you to express the markup more precisely, but
|
|
there is no real harm in using the older commands, and of course the
|
|
long-standing manuals do so.
|
|
|
|
|
|
@node kbd
|
|
@subsection @code{@@kbd}@{@var{keyboard-characters}@}
|
|
@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@refill
|
|
|
|
@example
|
|
@@kbd@{M-a@}
|
|
@end example
|
|
|
|
@noindent
|
|
and to refer to the characters @kbd{M-x shell}, write@refill
|
|
|
|
@example
|
|
@@kbd@{M-x shell@}
|
|
@end example
|
|
|
|
@cindex user input
|
|
@cindex slanted typewriter font, for @code{@@kbd}
|
|
The @code{@@kbd} command has the same effect as @code{@@code} in Info,
|
|
but by default produces a different font (slanted typewriter instead of
|
|
normal typewriter) in the printed manual, so users can distinguish the
|
|
characters they are supposed to type from those 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{, arg to @@kbdinputstyle}
|
|
@vindex example@r{, arg to @@kbdinputstyle}
|
|
@vindex code@r{, arg to @@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 an @code{@@kbd}
|
|
command. Here, for example, is the way to describe a command that
|
|
would be described more verbosely as ``press an @samp{r} and then
|
|
press the @key{RET} key'':@refill
|
|
|
|
@example
|
|
@@kbd@{r @@key@{RET@}@}
|
|
@end example
|
|
|
|
@noindent
|
|
This produces: @kbd{r @key{RET}}
|
|
|
|
You also use the @code{@@kbd} command if you are spelling out the letters
|
|
you type; for example:@refill
|
|
|
|
@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
|
|
really want to mention a space character as one of the characters of
|
|
input, write @kbd{@@key@{SPC@}} for it.)@refill
|
|
|
|
|
|
@node key, samp, kbd, Indicating
|
|
@comment node-name, next, previous, up
|
|
@subsection @code{@@key}@{@var{key-name}@}
|
|
@findex key
|
|
|
|
Use the @code{@@key} command for the conventional name for a key on a
|
|
keyboard, as in:@refill
|
|
|
|
@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.@refill
|
|
|
|
@need 700
|
|
For example, to produce @kbd{C-x @key{ESC}} you would type:@refill
|
|
|
|
@example
|
|
@@kbd@{C-x @@key@{ESC@}@}
|
|
@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
|
|
|
|
@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 DEL
|
|
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}.
|
|
|
|
@c I don't think this is a good explanation.
|
|
@c I think it will puzzle readers more than it clarifies matters. -- rms.
|
|
@c In other words, use @code{@@kbd} for what you do, and use @code{@@key}
|
|
@c for what you talk about: ``Press @code{@@kbd@{M-a@}} to move point to
|
|
@c the beginning of the sentence. The @code{@@key@{META@}} key is often in
|
|
@c the lower left of the keyboard.''@refill
|
|
|
|
@node samp
|
|
@subsection @code{@@samp}@{@var{text}@}
|
|
@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 both the Info file and the printed manual; in
|
|
addition, it is printed in a fixed-width font.@refill
|
|
|
|
@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$}.@refill
|
|
@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}, or @code{@@key}.@refill
|
|
|
|
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:@refill
|
|
|
|
@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 verb
|
|
@subsection @code{@@verb}@{<char>@var{text}<char>@}
|
|
@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 La@TeX{}'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 these @verb{+@'e?`{}!`\+} this?
|
|
@end example
|
|
|
|
This is in contrast to @code{@@samp} (see the previous
|
|
section), whose argument is normal Texinfo text, where the characters
|
|
@code{@@@{@}} are special; with @code{@@verb}, nothing is special except
|
|
the delimiter character you choose.
|
|
|
|
|
|
@node var
|
|
@subsection @code{@@var}@{@var{metasyntactic-variable}@}
|
|
@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.@refill
|
|
|
|
Do not use @code{@@var} for the names of particular variables in
|
|
programming languages. These are specific names from a program, so
|
|
@code{@@code} is correct for them (@pxref{code}). 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 upper case. In the printed manual and HTML output, the
|
|
argument is printed in slanted type.
|
|
|
|
@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.)@refill
|
|
|
|
Write a metasyntactic variable all in lower case 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:@refill
|
|
|
|
@example
|
|
@group
|
|
\input texinfo
|
|
@@@@setfilename @@var@{info-file-name@}
|
|
@@@@settitle @@var@{name-of-manual@}
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
This produces:
|
|
|
|
@example
|
|
@group
|
|
\input texinfo
|
|
@@setfilename @var{info-file-name}
|
|
@@settitle @var{name-of-manual}
|
|
@end group
|
|
@end example
|
|
|
|
In some documentation styles, metasyntactic variables are shown with
|
|
angle brackets, for example:@refill
|
|
|
|
@example
|
|
@dots{}, type rm <filename>
|
|
@end example
|
|
|
|
@noindent
|
|
However, that is not the style that Texinfo uses. (You can, of
|
|
course, modify the sources to @file{texinfo.tex} and the Info formatting commands
|
|
to output the @code{<@dots{}>} format if you wish.)@refill
|
|
|
|
|
|
@node env
|
|
@subsection @code{@@env}@{@var{environment-variable}@}
|
|
@findex env
|
|
|
|
Use the @code{@@env} command to indicate environment variables, as used
|
|
by many operating systems, including GNU. Do not use it for
|
|
metasyntactic variables; use @code{@@var} instead (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 file
|
|
@subsection @code{@@file}@{@var{file-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}.
|
|
|
|
Currently, @code{@@file} is equivalent to @code{@@samp} in its effects.
|
|
For example,@refill
|
|
|
|
@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 command
|
|
@subsection @code{@@command}@{@var{command-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 option
|
|
@subsection @code{@@option}@{@var{option-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{@@samp} 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
|
|
|
|
In tables, putting options inside @code{@@code} produces a
|
|
more pleasing effect.
|
|
|
|
@node dfn
|
|
@comment node-name, next, previous, up
|
|
@subsection @code{@@dfn}@{@var{term}@}
|
|
@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 generates italics in
|
|
the printed manual, and double quotation marks in the Info file. For
|
|
example:@refill
|
|
|
|
@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 cite
|
|
@subsection @code{@@cite}@{@var{reference}@}
|
|
@findex cite
|
|
|
|
Use the @code{@@cite} command for the name of a book that lacks a
|
|
companion Info file. The command produces italics in the printed
|
|
manual, and quotation marks in the Info file.
|
|
|
|
If a book is written in Texinfo, it is better to use a cross reference
|
|
command since a reader can easily follow such a reference in Info.
|
|
@xref{xref, , @code{@@xref}}.
|
|
|
|
|
|
@ignore
|
|
@c node ctrl, , cite, Indicating
|
|
@comment node-name, next, previous, up
|
|
@c subsection @code{@@ctrl}@{@var{ctrl-char}@}
|
|
@findex ctrl
|
|
|
|
The @code{@@ctrl} command is seldom used. It describes an @sc{ascii}
|
|
control character by inserting the actual character into the Info
|
|
file.
|
|
|
|
Usually, in Texinfo, you talk what you type as keyboard entry by
|
|
describing it with @code{@@kbd}: thus, @samp{@@kbd@{C-a@}} for
|
|
@kbd{C-a}. Use @code{@@kbd} in this way when talking about a control
|
|
character that is typed on the keyboard by the user. When talking
|
|
about a control character appearing in a file or a string, do not use
|
|
@code{@@kbd} since the control character is not typed. Also, do not
|
|
use @samp{C-} but spell out @code{control-}, as in @samp{control-a},
|
|
to make it easier for a reader to understand.@refill
|
|
|
|
@code{@@ctrl} is an idea from the beginnings of Texinfo which may not
|
|
really fit in to the scheme of things. But there may be times when
|
|
you want to use the command. The pattern is
|
|
@code{@@ctrl@{@var{ch}@}}, where @var{ch} is an @sc{ascii} character
|
|
whose control-equivalent is wanted. For example, to specify
|
|
@samp{control-f}, you would enter@refill
|
|
|
|
@example
|
|
@@ctrl@{f@}
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@quotation
|
|
@ctrl{f}
|
|
@end quotation
|
|
|
|
In the Info file, this generates the specified control character, output
|
|
literally into the file. This is done so a user can copy the specified
|
|
control character (along with whatever else he or she wants) into another
|
|
Emacs buffer and use it. Since the `control-h',`control-i', and
|
|
`control-j' characters are formatting characters, they should not be
|
|
indicated with @code{@@ctrl}.@refill
|
|
|
|
In a printed manual, @code{@@ctrl} generates text to describe or
|
|
identify that control character: an uparrow followed by the character
|
|
@var{ch}.@refill
|
|
@end ignore
|
|
|
|
|
|
@node acronym
|
|
@subsection @code{@@acronym}@{@var{acronym}@}
|
|
@findex acronym
|
|
|
|
@cindex NASA, as acronym
|
|
@cindex F.B.I., as acronym
|
|
@cindex Abbreviations, tagging
|
|
@cindex Acronyms, tagging
|
|
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 abbreviations, you may prefer to
|
|
use periods, as in @samp{@@acronym@{F.B.I.@}}.
|
|
|
|
In @TeX{} and HTML, the argument is printed in a slightly smaller font
|
|
size. In Info or plain text output, this command changes nothing.
|
|
|
|
|
|
@node url
|
|
@subsection @code{@@url}@{@var{uniform-resource-locator}@}
|
|
@findex url
|
|
@cindex Uniform resource locator, indicating
|
|
@cindex URL, indicating
|
|
|
|
Use the @code{@@url} command to indicate a uniform resource locator on
|
|
the World Wide Web. This is analogous to @code{@@file}, @code{@@var},
|
|
etc., and is purely for markup purposes. It does not produce a link you
|
|
can follow in HTML output (use the @code{@@uref} command for that,
|
|
@pxref{uref,, @code{@@uref}}). It is useful for url's which do
|
|
not actually exist. For example:
|
|
|
|
@c Two lines because one is too long for smallbook format.
|
|
@example
|
|
For example, the url might be @@url@{http://example.org/path@}.
|
|
@end example
|
|
|
|
@noindent which produces:
|
|
|
|
@display
|
|
For example, the url might be @url{http://example.org/path}.
|
|
@end display
|
|
|
|
|
|
@node email
|
|
@subsection @code{@@email}@{@var{email-address}[, @var{displayed-text}]@}
|
|
@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 and @TeX{}, the address is shown in angle brackets, preceded by
|
|
the text to display if any. In HTML output, @code{@@email} produces a
|
|
@samp{mailto} link that 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
|
|
@comment node-name, next, previous, up
|
|
@section Emphasizing Text
|
|
@cindex Emphasizing text
|
|
|
|
Usually, Texinfo changes the font to mark words in the text according to
|
|
what 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 @TeX{} will typeset
|
|
text. These commands have no effect on Info and only one of them,
|
|
the @code{@@r} command, has any regular use.@refill
|
|
|
|
@menu
|
|
* emph & strong:: How to emphasize text in Texinfo.
|
|
* Smallcaps:: How to use the small caps font.
|
|
* Fonts:: Various font commands for printed output.
|
|
@end menu
|
|
|
|
@node emph & strong
|
|
@subsection @code{@@emph}@{@var{text}@} and @code{@@strong}@{@var{text}@}
|
|
@cindex Emphasizing text, font for
|
|
@findex emph
|
|
@findex strong
|
|
|
|
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}.
|
|
|
|
@need 800
|
|
For example,
|
|
|
|
@example
|
|
@group
|
|
@@quotation
|
|
@@strong@{Caution:@} @@samp@{rm * .[^.]*@} removes @@emph@{all@}
|
|
files in the directory.
|
|
@@end quotation
|
|
@end group
|
|
@end example
|
|
|
|
@iftex
|
|
@noindent
|
|
produces the following in printed output:
|
|
|
|
@quotation
|
|
@strong{Caution}: @samp{rm * .[^.]*} removes @emph{all}
|
|
files in the directory.
|
|
@end quotation
|
|
|
|
@noindent
|
|
and the following in Info:
|
|
@end iftex
|
|
@ifinfo
|
|
@noindent
|
|
produces:
|
|
@end ifinfo
|
|
|
|
@example
|
|
*Caution*: `rm * .[^.]*' removes _all_
|
|
files in the directory.
|
|
@end example
|
|
|
|
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.
|
|
|
|
In the Info output, @code{@@emph} surrounds the text with underscores
|
|
(@samp{_}), and @code{@@strong} puts asterisks around the text.
|
|
|
|
@quotation
|
|
@strong{Caution:} Do not use @code{@@strong} with the word @samp{Note};
|
|
Info will mistake the combination for a cross reference. Use a phrase
|
|
such as @strong{Please note} or @strong{Caution} instead.
|
|
@end quotation
|
|
|
|
|
|
@node Smallcaps
|
|
@subsection @code{@@sc}@{@var{text}@}: The Small Caps Font
|
|
@cindex Small caps font
|
|
@findex sc @r{(small caps font)}
|
|
|
|
Use the @samp{@@sc} command to set text in the printed and the HTML
|
|
output in @sc{a small caps font} and set text in the Info file in upper
|
|
case letters. Write the text you want to be in small caps (where
|
|
possible) between braces in lower case, like this:
|
|
|
|
@example
|
|
The @@sc@{acm@} and @@sc@{ieee@} are technical societies.
|
|
@end example
|
|
|
|
@noindent
|
|
This produces:
|
|
|
|
@display
|
|
The @sc{acm} and @sc{ieee} are technical societies.
|
|
@end display
|
|
|
|
@TeX{} typesets the small caps font in a manner that prevents the
|
|
letters from `jumping out at you on the page'. This makes small caps
|
|
text easier to read than text in all upper case---but it's usually
|
|
better to use regular mixed case anyway. The Info formatting commands
|
|
set all small caps text in upper case. In HTML, the text is upper-cased
|
|
and a smaller font is used to render it.
|
|
|
|
If the text between the braces of an @code{@@sc} command is uppercase,
|
|
@TeX{} typesets in FULL-SIZE CAPITALS. Use full-size capitals
|
|
sparingly, if ever, and since it's redundant to mark all-uppercase text
|
|
with @code{@@sc}, @command{makeinfo} warns about such usage.
|
|
|
|
You may also use the small caps font for a jargon word such as
|
|
@sc{ato} (a @sc{nasa} word meaning `abort to orbit').
|
|
|
|
There are subtleties to using the small caps font with a jargon word
|
|
such as @sc{cdr}, a word used in Lisp programming. In this case, you
|
|
should use the small caps font when the word refers to the second and
|
|
subsequent elements of a list (the @sc{cdr} of the list), but you
|
|
should use @samp{@@code} when the word refers to the Lisp function of
|
|
the same spelling.
|
|
|
|
|
|
@node Fonts
|
|
@subsection Fonts for Printing, Not Info
|
|
@cindex Fonts for printing, not for Info
|
|
@findex i @r{(italic font)}
|
|
@findex b @r{(bold font)}
|
|
@findex t @r{(typewriter font)}
|
|
@findex r @r{(Roman font)}
|
|
|
|
Texinfo provides four font commands that specify font changes in the
|
|
printed manual but have no effect in the Info file. @code{@@i}
|
|
requests @i{italic} font (in some versions of @TeX{}, a slanted font
|
|
is used), @code{@@b} requests @b{bold} face, @code{@@t} requests the
|
|
@t{fixed-width}, typewriter-style font used by @code{@@code}, and @code{@@r} requests a
|
|
@r{roman} font, which is the usual font in which text is printed. All
|
|
four commands apply to an argument that follows, surrounded by
|
|
braces.@refill
|
|
|
|
Only the @code{@@r} command has much use: in example programs, you
|
|
can use the @code{@@r} command to convert code comments from the
|
|
fixed-width font to a roman font. This looks better in printed
|
|
output.@refill
|
|
|
|
@need 700
|
|
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
|
|
|
|
If possible, you should avoid using the other three font commands. If
|
|
you need to use one, it probably indicates a gap in the Texinfo
|
|
language.
|
|
|
|
|
|
@node Quotations and Examples
|
|
@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.@refill
|
|
|
|
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.
|
|
@findex end
|
|
|
|
@menu
|
|
* Block Enclosing Commands:: Different constructs for different purposes.
|
|
* quotation:: Writing a quotation.
|
|
* example:: Writing an example in a fixed-width font.
|
|
* verbatim:: Writing a verbatim example.
|
|
* verbatiminclude:: Including a file verbatim.
|
|
* lisp:: Illustrating Lisp code.
|
|
* small:: Examples in a smaller font.
|
|
* display:: Writing an example in the current font.
|
|
* format:: Writing an example without narrowed margins.
|
|
* exdent:: Undo indentation on a line.
|
|
* flushleft & flushright:: Pushing text flush left or flush right.
|
|
* noindent:: Preventing paragraph indentation.
|
|
* cartouche:: Drawing rounded rectangles around examples.
|
|
@end menu
|
|
|
|
|
|
@node Block Enclosing Commands
|
|
@section Block Enclosing Commands
|
|
|
|
Here are commands for quotations and examples, explained further in the
|
|
following sections:
|
|
|
|
@table @code
|
|
@item @@quotation
|
|
Indicate text that is quoted. The text is filled, indented, and
|
|
printed in a roman font by default.
|
|
|
|
@item @@example
|
|
Illustrate code, commands, and the like. 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 @@smallexample
|
|
Same as @code{@@example}, except that in @TeX{} this command typesets
|
|
text in a smaller font.
|
|
|
|
@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 @@smalllisp
|
|
Is to @code{@@lisp} as @code{@@smallexample} is to @code{@@example}.
|
|
|
|
@item @@display
|
|
Display illustrative text. The text is indented but not filled, and
|
|
no font is selected (so, by default, the font is roman).@refill
|
|
|
|
@item @@smalldisplay
|
|
Is to @code{@@display} as @code{@@smallexample} is to @code{@@example}.
|
|
|
|
@item @@format
|
|
Like @code{@@display} (the text is not filled and no font is selected),
|
|
but the text is not indented.
|
|
|
|
@item @@smallformat
|
|
Is to @code{@@format} as @code{@@smallexample} is to @code{@@example}.
|
|
@end table
|
|
|
|
The @code{@@exdent} command is used within the above constructs to
|
|
undo the indentation of a line.
|
|
|
|
The @code{@@flushleft} and @code{@@flushright} commands are used to line
|
|
up the left or right margins of unfilled text.@refill
|
|
|
|
The @code{@@noindent} command may be used after one of the above
|
|
constructs to prevent the following text from being indented as a new
|
|
paragraph.
|
|
|
|
You can use the @code{@@cartouche} command within one of the above
|
|
constructs to highlight the example or quotation by drawing a box with
|
|
rounded corners around it. @xref{cartouche, , Drawing Cartouches Around
|
|
Examples}.
|
|
|
|
|
|
@node quotation
|
|
@section @code{@@quotation}
|
|
@cindex Quotations
|
|
@findex quotation
|
|
|
|
The text of a quotation is processed normally except that:
|
|
|
|
@itemize @bullet
|
|
@item
|
|
the margins are closer to the center of the page, so the whole of the
|
|
quotation is indented;@refill
|
|
|
|
@item
|
|
the first lines of paragraphs are indented no more than other
|
|
lines;@refill
|
|
|
|
@item
|
|
in the printed output, interparagraph spacing is reduced.@refill
|
|
@end itemize
|
|
|
|
@quotation
|
|
This is an example of text written between an @code{@@quotation}
|
|
command and an @code{@@end quotation} command. An @code{@@quotation}
|
|
command is most often used to indicate text that is excerpted from
|
|
another (real or hypothetical) printed work.@refill
|
|
@end quotation
|
|
|
|
Write an @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. Thus, the following,@refill
|
|
|
|
@example
|
|
@@quotation
|
|
This is
|
|
a foo.
|
|
@@end quotation
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@quotation
|
|
This is a foo.
|
|
@end quotation
|
|
|
|
|
|
@node example
|
|
@section @code{@@example}: Example Text
|
|
@cindex Examples, formatting them
|
|
@cindex Formatting examples
|
|
@findex example
|
|
|
|
The @code{@@example} environment is used to indicate an example that
|
|
is not part of the running text, such as computer input or output.
|
|
Write an @code{@@example} command at the beginning of a line by
|
|
itself. Mark the end of the example with an @code{@@end example}
|
|
command, also written at the beginning of a line by itself.
|
|
|
|
An @code{@@example} environment has the following characteristics:
|
|
|
|
@itemize
|
|
@item Each line in the input file is a line in the output; that is,
|
|
the source text is not filled as it normally is.
|
|
@item Extra spaces and blank lines are significant.
|
|
@item The output is indented.
|
|
@item The output uses a fixed-width font (for formats where this is
|
|
possible and meaningful).
|
|
@item Texinfo commands @emph{are} expanded; if you want the input to
|
|
be the output verbatim, use the @code{@@verbatim} environment instead
|
|
(@pxref{verbatim,,@code{@@verbatim}}).
|
|
@end itemize
|
|
|
|
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 lines containing @code{@@example} and @code{@@end example} will
|
|
disappear from the output. To make the output look good, you should
|
|
put a blank line before the @code{@@example} and another blank line
|
|
after the @code{@@end example}. Blank lines inside the beginning
|
|
@code{@@example} and the ending @code{@@end example}, on the other
|
|
hand, do appear in the output.
|
|
|
|
@quotation
|
|
@strong{Caution:} Do not use tabs in the lines of an example! (Or
|
|
anywhere else in Texinfo, except in verbatim environments.) @TeX{}
|
|
treats tabs as single spaces, and that is not what they look like. In
|
|
Emacs, you can use @kbd{M-x untabify} to convert tabs in a region to
|
|
multiple spaces.
|
|
@end quotation
|
|
|
|
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{noindent,,@code{@@noindent}}.
|
|
|
|
If you want to embed code fragments within sentences, instead of
|
|
displaying them, use the @code{@@code} command or its relatives
|
|
(@pxref{code,,@code{@@code}}).
|
|
|
|
|
|
@node verbatim
|
|
@section @code{@@verbatim}: Literal Text
|
|
@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 output in a Texinfo manual. Here is an example;
|
|
the output you see is just the same as the input, with a line
|
|
@code{@@verbatim} before and a line @code{@@end verbatim} after.
|
|
|
|
@verbatim
|
|
This is an example of text written in a @verbatim
|
|
block. No character substitutions are made. All commands
|
|
are ignored, until `<at>end verbatim'.
|
|
|
|
In the printed manual, the text is typeset in a
|
|
fixed-width font, and not indented or filled. All
|
|
spaces and blank lines are significant, including tabs.
|
|
@end verbatim
|
|
|
|
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 a @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:
|
|
@c oops, got to trick this a bit: can't use @end verbatim inside @verbatim
|
|
|
|
@example
|
|
@exdent @@verbatim
|
|
@exdent @{
|
|
@exdent <tab>@@command with strange characters: @@'e
|
|
@exdent expand<tab>me
|
|
@exdent @}
|
|
@exdent @@end verbatim
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@verbatim
|
|
{
|
|
@command with strange characters: @'e
|
|
expand me
|
|
}
|
|
@end verbatim
|
|
|
|
Since the lines containing @code{@@verbatim} and @code{@@end verbatim}
|
|
produce no output, tyically 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.
|
|
|
|
|
|
@node verbatiminclude
|
|
@section @code{@@verbatiminclude} @var{file}: Include a File Verbatim
|
|
@cindex Verbatim, include file
|
|
@cindex Including a file verbatim
|
|
@findex verbatiminclude
|
|
|
|
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{verbatim,,@code{@@verbatim}}). Generally, the file is printed
|
|
exactly as it is, with all special characters and white space retained.
|
|
|
|
The name of the file is taken literally, with a single exception:
|
|
@code{@@value@{@var{var}@}} references are expanded. This makes it
|
|
possible to reliably include files in other directories in a
|
|
distribution, for instance:
|
|
|
|
@example
|
|
@@include @@value@{top_srcdir@}/NEWS
|
|
@end example
|
|
|
|
@noindent (You still have to get @code{top_srcdir} defined in the
|
|
first place.)
|
|
|
|
|
|
@node lisp
|
|
@section @code{@@lisp}: Marking a Lisp Example
|
|
@findex lisp
|
|
@cindex Lisp example
|
|
|
|
The @code{@@lisp} command is used for Lisp code. It is synonymous
|
|
with the @code{@@example} command.
|
|
|
|
@lisp
|
|
This is an example of text written between an
|
|
@code{@@lisp} command and an @code{@@end lisp} command.
|
|
@end lisp
|
|
|
|
Use @code{@@lisp} instead of @code{@@example} 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.@footnote{It would be straightforward to extend Texinfo to work
|
|
in a similar fashion for C, Fortran, or other languages.}
|
|
|
|
Mark the end of @code{@@lisp} with @code{@@end lisp} on a line by
|
|
itself.
|
|
|
|
|
|
@node small
|
|
@section @code{@@small@dots{}} Block Commands
|
|
@cindex Small examples
|
|
@cindex Examples in smaller fonts
|
|
@cindex Lisp examples in smaller fonts
|
|
@findex smalldisplay
|
|
@findex smallexample
|
|
@findex smallformat
|
|
@findex smalllisp
|
|
|
|
In addition to the regular @code{@@example} and @code{@@lisp} commands,
|
|
Texinfo has ``small'' example-style commands. These are
|
|
@code{@@smalldisplay}, @code{@@smallexample}, @code{@@smallformat}, and
|
|
@code{@@smalllisp}.
|
|
|
|
In Info, the @code{@@small@dots{}} commands are equivalent to their
|
|
non-small companion commands.
|
|
|
|
In @TeX{}, however, the @code{@@small@dots{}} commands typeset text in
|
|
a smaller font than the non-small example commands. Consequently,
|
|
many examples containing long lines fit on a page without needing to
|
|
be shortened.
|
|
|
|
Mark the end of an @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{@@small@dots{}}
|
|
commands (in Info, 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 make it easier to prepare manuals
|
|
without forcing you to edit examples by hand to fit them onto narrower
|
|
pages.
|
|
|
|
As a general rule, a printed document looks much better if you use
|
|
only one of (for instance) @code{@@example} or @code{@@smallexample}
|
|
consistently within a chapter.
|
|
|
|
|
|
@node display
|
|
@section @code{@@display} and @code{@@smalldisplay}
|
|
@cindex Display formatting
|
|
@findex display
|
|
|
|
The @code{@@display} command begins a kind of example. It is like the
|
|
@code{@@example} command
|
|
except that, in
|
|
a printed manual, @code{@@display} does not select the fixed-width
|
|
font. In fact, it does not specify the font at all, so that the text
|
|
appears in the same font it would have appeared in without the
|
|
@code{@@display} command.@refill
|
|
|
|
@display
|
|
This is an example of text written between an @code{@@display} command
|
|
and an @code{@@end display} command. The @code{@@display} command
|
|
indents the text, but does not fill it.
|
|
@end display
|
|
|
|
@findex smalldisplay
|
|
Texinfo also provides a command @code{@@smalldisplay}, which is like
|
|
@code{@@display} but uses a smaller font in @code{@@smallbook} format.
|
|
@xref{small}.
|
|
|
|
|
|
@node format
|
|
@section @code{@@format} and @code{@@smallformat}
|
|
@findex format
|
|
|
|
The @code{@@format} command is similar to @code{@@example} except
|
|
that, in the printed manual, @code{@@format} does not select the
|
|
fixed-width font and does not narrow the margins.@refill
|
|
|
|
@format
|
|
This is an example of text written between an @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
|
|
|
|
@findex smallformat
|
|
Texinfo also provides a command @code{@@smallformat}, which is like
|
|
@code{@@format} but uses a smaller font in @code{@@smallbook} format.
|
|
@xref{small}.
|
|
|
|
|
|
|
|
@node exdent
|
|
@section @code{@@exdent}: Undoing a Line's Indentation
|
|
@cindex Indentation undoing
|
|
@findex exdent
|
|
|
|
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. In a printed manual, the text on an
|
|
@code{@@exdent} line is printed in the roman font.@refill
|
|
|
|
@code{@@exdent} is usually used within examples. Thus,@refill
|
|
|
|
@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 group
|
|
@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.@refill
|
|
|
|
|
|
@node flushleft & flushright
|
|
@section @code{@@flushleft} and @code{@@flushright}
|
|
@findex flushleft
|
|
@findex flushright
|
|
@cindex ragged right
|
|
@cindex ragged left
|
|
|
|
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.@refill
|
|
|
|
@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 noindent
|
|
@section @code{@@noindent}: Omitting Indentation
|
|
@findex noindent
|
|
|
|
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{paragraphindent, Paragraph Indenting}).
|
|
|
|
It is best to write @code{@@noindent} on a line by itself, since in most
|
|
environments, spaces following the command will not be ignored. It's ok
|
|
to use it at the beginning of a line, with text following, outside of
|
|
any environment.
|
|
|
|
@need 1500
|
|
For example:
|
|
|
|
@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. (This whole example is between
|
|
@@code@{@@@@display@} and @@code@{@@@@end display@}.)
|
|
@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. (This whole example is between
|
|
@code{@@display} and @code{@@end display}.)
|
|
|
|
@end display
|
|
|
|
To adjust the number of blank lines properly in the Info file output,
|
|
remember that the line containing @code{@@noindent} does not generate a
|
|
blank line, and neither does the @code{@@end example} line.
|
|
|
|
In the Texinfo source file for this manual, each line that says
|
|
`produces' is preceded by @code{@@noindent}.
|
|
|
|
Do not put braces after an @code{@@noindent} command; they are not
|
|
necessary, since @code{@@noindent} is a command used outside of
|
|
paragraphs (@pxref{Command Syntax}).
|
|
|
|
|
|
@node cartouche
|
|
@section @code{@@cartouche}: Rounded Rectangles Around Examples
|
|
@findex cartouche
|
|
@cindex Box with rounded corners
|
|
@cindex Rounded rectangles, around examples
|
|
|
|
In a printed manual, the @code{@@cartouche} command draws a box with
|
|
rounded corners around its contents. You can use this command to
|
|
further highlight an example or quotation. For instance, you could
|
|
write a manual in which one type of example is surrounded by a cartouche
|
|
for emphasis.
|
|
|
|
@code{@@cartouche} affects only the printed manual; it has no effect in
|
|
other output files.
|
|
|
|
@need 1500
|
|
For example,
|
|
|
|
@example
|
|
@group
|
|
@@example
|
|
@@cartouche
|
|
% pwd
|
|
/usr/local/share/emacs
|
|
@@end cartouche
|
|
@@end example
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
surrounds the two-line example with a box with rounded corners, in the
|
|
printed manual.
|
|
|
|
@iftex
|
|
In a printed manual, the example looks like this:@refill
|
|
|
|
@example
|
|
@group
|
|
@cartouche
|
|
% pwd
|
|
/usr/local/lib/emacs/info
|
|
@end cartouche
|
|
@end group
|
|
@end example
|
|
@end iftex
|
|
|
|
|
|
@node 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.
|
|
|
|
@menu
|
|
* Introducing Lists:: Texinfo formats lists for you.
|
|
* itemize:: How to construct a simple list.
|
|
* enumerate:: How to construct a numbered list.
|
|
* Two-column Tables:: How to construct a two-column table.
|
|
* Multi-column Tables:: How to construct generalized tables.
|
|
@end menu
|
|
|
|
@node Introducing Lists, itemize, Lists and Tables, Lists and Tables
|
|
@ifinfo
|
|
@heading Introducing Lists
|
|
@end ifinfo
|
|
|
|
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.@refill
|
|
|
|
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.@refill
|
|
|
|
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.@refill
|
|
@findex end
|
|
|
|
Precede each element of a list with an @code{@@item} or @code{@@itemx}
|
|
command.@refill
|
|
|
|
@sp 1
|
|
@noindent
|
|
Here is an itemized list of the different kinds of table and lists:@refill
|
|
|
|
@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:@refill
|
|
|
|
@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}:@refill
|
|
|
|
@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 itemize
|
|
@section @code{@@itemize}: Making an Itemized List
|
|
@cindex Itemization
|
|
@findex itemize
|
|
|
|
The @code{@@itemize} command produces sequences of indented
|
|
paragraphs, with a bullet or other mark inside the left margin
|
|
at the beginning of each paragraph for which such a mark is desired.@refill
|
|
|
|
@cindex @code{@@w}, for blank items
|
|
Begin an itemized list by writing @code{@@itemize} at the beginning of
|
|
a line. Follow the command, on the same line, with a character or a
|
|
Texinfo command that generates a mark. Usually, you will write
|
|
@code{@@bullet} after @code{@@itemize}, but you can use
|
|
@code{@@minus}, or any command or character that results in a single
|
|
character in the Info file. If you don't want any mark at all, use
|
|
@code{@@w}. (When you write the mark command such as
|
|
@code{@@bullet} after an @code{@@itemize} command, you may omit the
|
|
@samp{@{@}}.) If you don't specify a mark command, the default is
|
|
@code{@@bullet}.
|
|
|
|
Write the text of the indented paragraphs themselves after the
|
|
@code{@@itemize}, up to another line that says @code{@@end
|
|
itemize}.@refill
|
|
|
|
@findex item
|
|
Before each paragraph for which a mark in the margin is desired, write a
|
|
line that says just @code{@@item}. It is ok to have text following the
|
|
@code{@@item}.
|
|
|
|
Usually, you should put a blank line before an @code{@@item}. This
|
|
puts a blank line in the Info file. (@TeX{} inserts the proper
|
|
interline whitespace in either case.) Except when the entries are
|
|
very brief, these blank lines make the list look better.@refill
|
|
|
|
Here is an example of the use of @code{@@itemize}, followed by the
|
|
output it produces. @code{@@bullet} produces an @samp{*} in Info and a
|
|
round dot in @TeX{}.
|
|
|
|
@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
|
|
|
|
Itemized lists may be embedded within other itemized lists. Here is a
|
|
list marked with dashes embedded in a list marked with bullets:@refill
|
|
|
|
@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 enumerate
|
|
@section @code{@@enumerate}: Making a Numbered or Lettered List
|
|
@cindex Enumeration
|
|
@findex enumerate
|
|
|
|
@code{@@enumerate} is like @code{@@itemize} (@pxref{itemize,,
|
|
@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 lower case 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 you write an
|
|
itemized list: put @code{@@item} on a line of its own before the start
|
|
of each paragraph that you want enumerated. Do not write any other text
|
|
on the line beginning with @code{@@item}.
|
|
|
|
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}:@refill
|
|
@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 brief summary of the alternatives. The summary is constructed
|
|
using @code{@@enumerate} with an argument of @kbd{a}.@refill
|
|
@sp 1
|
|
@enumerate a
|
|
@item
|
|
@code{@@enumerate}
|
|
|
|
Without an argument, produce a numbered list, starting with the number
|
|
1.@refill
|
|
|
|
@item
|
|
@code{@@enumerate @var{positive-integer}}
|
|
|
|
With a (positive) numeric argument, start a numbered list with that
|
|
number. You can use this to continue a list that you interrupted with
|
|
other text.@refill
|
|
|
|
@item
|
|
@code{@@enumerate @var{upper-case-letter}}
|
|
|
|
With an upper case letter as argument, start a list
|
|
in which each item is marked
|
|
by a letter, beginning with that upper case letter.@refill
|
|
|
|
@item
|
|
@code{@@enumerate @var{lower-case-letter}}
|
|
|
|
With a lower case letter as argument, start a list
|
|
in which each item is marked by
|
|
a letter, beginning with that lower case letter.@refill
|
|
@end enumerate
|
|
|
|
You can also nest enumerated lists, as in an outline.@refill
|
|
|
|
@node Two-column Tables
|
|
@section Making a Two-column Table
|
|
@cindex Tables, making two-column
|
|
@findex table
|
|
|
|
@code{@@table} is similar to @code{@@itemize} (@pxref{itemize,,
|
|
@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.
|
|
|
|
@menu
|
|
* table:: How to construct a two-column table.
|
|
* ftable vtable:: Automatic indexing for two-column tables.
|
|
* itemx:: How to put more entries in the first column.
|
|
@end menu
|
|
|
|
@node table
|
|
@subsection Using the @code{@@table} Command
|
|
|
|
@cindex Definition lists, typesetting
|
|
Use the @code{@@table} command to produce two-column tables. It is
|
|
usually listed for ``definition lists'' of various sorts, where you
|
|
have a list of terms and a brief text with each one.
|
|
|
|
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 a
|
|
Texinfo ``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 that goes into the first
|
|
column of each item and thus determines how it will be highlighted.
|
|
For example, @code{@@table @@code} will cause the text in the first
|
|
column to be output as if it @code{@@code} command.
|
|
|
|
@findex asis
|
|
You may also 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 commands that
|
|
normally take arguments in braces. (In this case, however, you use
|
|
the command name without an argument, because the subsequent
|
|
@code{@@item}'s will supply the argument.)
|
|
|
|
@findex item
|
|
Begin each table entry with an @code{@@item} command at the beginning
|
|
of a line. Write the first column text on the same line as the
|
|
@code{@@item} command. Write the second column text on the line
|
|
following the @code{@@item} line and on subsequent lines. (You do not
|
|
need to type anything for an empty second column entry.) 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).
|
|
|
|
Normally, you should put a blank line before an @code{@@item} line.
|
|
This puts a blank line in the Info file. Except when the entries are
|
|
very brief, a blank line looks better.
|
|
|
|
End the table with a line consisting of @code{@@end table}, followed
|
|
by a blank line. @TeX{} will always start a new paragraph after the
|
|
table, so the blank line is needed for the Info output to be analogous.
|
|
|
|
@need 1500
|
|
The following table, for example, highlights the text in the first
|
|
column with an @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{itemx,,@code{@@itemx}}.)
|
|
|
|
|
|
@node ftable vtable
|
|
@subsection @code{@@ftable} and @code{@@vtable}
|
|
@cindex Tables with indexes
|
|
@cindex Indexing table entries automatically
|
|
@findex ftable
|
|
@findex vtable
|
|
|
|
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} commands are indexed, and they are indexed in
|
|
exactly the form that they appear on that line. @xref{Indices},
|
|
for more information about indices.@refill
|
|
|
|
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 an @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 itemx
|
|
@subsection @code{@@itemx}
|
|
@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{@@itemx} for all but the first entry;
|
|
@code{@@itemx} should always follow an @code{@@item} command. The
|
|
@code{@@itemx} command works exactly like @code{@@item} except that it
|
|
does not generate extra vertical space above the first column text.
|
|
|
|
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 upper case (lower
|
|
case) 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 upper case (lower
|
|
case) character or string.@refill
|
|
@end table
|
|
|
|
@noindent
|
|
(Note also that this example illustrates multi-line supporting text in
|
|
a two-column table.)@refill
|
|
|
|
|
|
@node Multi-column Tables, , Two-column Tables, Lists and Tables
|
|
@section Multi-column Tables
|
|
@cindex Tables, making multi-column
|
|
@findex multitable
|
|
|
|
@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 an @code{@@tab} command. Finally, @code{@@end
|
|
multitable} completes the table. Details in the sections below.
|
|
|
|
@menu
|
|
* Multitable Column Widths:: Defining multitable column widths.
|
|
* Multitable Rows:: Defining multitable rows, with examples.
|
|
@end menu
|
|
|
|
@node 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) after the @code{@@multitable} command, as in:
|
|
|
|
@example
|
|
@@multitable @@columnfractions .33 .33 .33
|
|
@end example
|
|
|
|
@noindent 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. You can use a leading zero if you wish.
|
|
|
|
@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.
|
|
|
|
@end enumerate
|
|
|
|
|
|
@node Multitable Rows, , Multitable Column Widths, Multi-column Tables
|
|
@subsection Multitable Rows
|
|
@cindex Multitable rows
|
|
@cindex Rows, of a multitable
|
|
|
|
@findex item
|
|
@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.
|
|
|
|
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
|
|
@@item 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
|
|
@item 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 Indices, Insertions, Lists and Tables, Top
|
|
@comment node-name, next, previous, up
|
|
@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 an Info file, this information is a menu
|
|
entry leading to the first node referenced.@refill
|
|
|
|
Texinfo provides several predefined kinds of index: an index
|
|
for functions, an index for variables, an index for concepts, and so
|
|
on. You can combine indices or use them for other than their
|
|
canonical purpose. If you wish, you can define your own indices.@refill
|
|
|
|
@menu
|
|
* Index Entries:: Choose different words for index entries.
|
|
* Predefined Indices:: Use different indices for different kinds
|
|
of entry.
|
|
* Indexing Commands:: How to make an index entry.
|
|
* Combining Indices:: How to combine indices.
|
|
* New Indices:: How to define your own indices.
|
|
@end menu
|
|
|
|
@node Index Entries, Predefined Indices, Indices, Indices
|
|
@comment node-name, next, previous, up
|
|
@section Making Index Entries
|
|
@cindex Index entries, making
|
|
@cindex Entries, making index
|
|
|
|
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 the word ``Index'' is 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.@refill
|
|
|
|
Like typesetting, the construction of an index is a highly skilled,
|
|
professional art, the subtleties of which are not appreciated until you
|
|
need to do it yourself.@refill
|
|
|
|
@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.@refill
|
|
|
|
@node Predefined Indices, Indexing Commands, Index Entries, Indices
|
|
@comment node-name, next, previous, up
|
|
@section Predefined Indices
|
|
|
|
Texinfo provides six predefined indices:@refill
|
|
|
|
@itemize @bullet
|
|
@item
|
|
A @dfn{concept index} listing concepts that are discussed.@refill
|
|
|
|
@item
|
|
A @dfn{function index} listing functions (such as entry points of
|
|
libraries).@refill
|
|
|
|
@item
|
|
A @dfn{variables index} listing variables (such as global variables
|
|
of libraries).@refill
|
|
|
|
@item
|
|
A @dfn{keystroke index} listing keyboard commands.@refill
|
|
|
|
@item
|
|
A @dfn{program index} listing names of programs.@refill
|
|
|
|
@item
|
|
A @dfn{data type index} listing data types (such as structures defined in
|
|
header files).@refill
|
|
@end itemize
|
|
|
|
@noindent
|
|
Not every manual needs all of these, and most manuals use two or three
|
|
of them. This manual has two indices: a
|
|
concept index and an @@-command index (that is actually the function
|
|
index but is called a command index in the chapter heading). Two or
|
|
more indices can be combined into one using the @code{@@synindex} or
|
|
@code{@@syncodeindex} commands. @xref{Combining Indices}.@refill
|
|
|
|
@node Indexing Commands, Combining Indices, Predefined Indices, Indices
|
|
@comment node-name, next, previous, up
|
|
@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.@refill
|
|
|
|
An index entry consists of an indexing command at the beginning of a
|
|
line followed, on the rest of the line, by the entry.@refill
|
|
|
|
For example, this section begins with the following five entries for
|
|
the concept index:@refill
|
|
|
|
@example
|
|
@@cindex Defining indexing entries
|
|
@@cindex Index entries
|
|
@@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.@refill
|
|
|
|
@cindex Writing index entries
|
|
@cindex Index entry writing
|
|
Concept index entries consist of text. The best way to write an index
|
|
is to choose entries that are terse yet clear. If you can do this,
|
|
the index often looks better if the entries are not capitalized, but
|
|
written just as they would appear in the middle of a sentence.
|
|
(Capitalize proper names and acronyms that always call for upper case
|
|
letters.) This is the case convention we use in most GNU manuals'
|
|
indices.
|
|
|
|
If you don't see how to make an entry terse yet clear, make it longer
|
|
and clear---not terse and confusing. If many of the entries are several
|
|
words long, the index may look better if you use a different convention:
|
|
to capitalize the first word of each entry. But do not capitalize a
|
|
case-sensitive name such as a C or Lisp function name or a shell
|
|
command; that would be a spelling error.
|
|
|
|
Whichever case convention you use, please use it consistently!
|
|
|
|
Entries in indices other than the concept index are symbol names in
|
|
programming languages, or program names; these names are usually
|
|
case-sensitive, so use upper and lower case as required for them.
|
|
|
|
By default, entries for a concept index are printed in a small roman
|
|
font and entries for the other indices are printed in a small
|
|
@code{@@code} font. You may change the way part of an entry is
|
|
printed with the usual Texinfo commands, such as @code{@@file} for
|
|
file names and @code{@@emph} for emphasis (@pxref{Marking
|
|
Text}).@refill
|
|
@cindex Index font types
|
|
|
|
@cindex Predefined indexing commands
|
|
@cindex Indexing commands, predefined
|
|
The six indexing commands for predefined indices are:
|
|
|
|
@table @code
|
|
@item @@cindex @var{concept}
|
|
@findex cindex
|
|
Make an entry in the concept index for @var{concept}.@refill
|
|
|
|
@item @@findex @var{function}
|
|
@findex findex
|
|
Make an entry in the function index for @var{function}.@refill
|
|
|
|
@item @@vindex @var{variable}
|
|
@findex vindex
|
|
Make an entry in the variable index for @var{variable}.@refill
|
|
|
|
@item @@kindex @var{keystroke}
|
|
@findex kindex
|
|
Make an entry in the key index for @var{keystroke}.@refill
|
|
|
|
@item @@pindex @var{program}
|
|
@findex pindex
|
|
Make an entry in the program index for @var{program}.@refill
|
|
|
|
@item @@tindex @var{data type}
|
|
@findex tindex
|
|
Make an entry in the data type index for @var{data type}.@refill
|
|
@end table
|
|
|
|
@quotation
|
|
@strong{Caution:} Do not use a colon in an index entry. In Info, a
|
|
colon separates the menu entry name from the node name, so a colon in
|
|
the entry itself confuses Info. @xref{Menu Parts, , The Parts of a
|
|
Menu}, for more information about the structure of a menu entry.
|
|
@end quotation
|
|
|
|
You are not actually required to use the predefined indices 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. Or you could put the macros in
|
|
with the data types by writing @code{@@tindex} commands for them, and
|
|
give that index a suitable title so the reader will understand.
|
|
(@xref{Printing Indices & Menus}.)@refill
|
|
|
|
@node Combining Indices, New Indices, Indexing Commands, Indices
|
|
@comment node-name, next, previous, up
|
|
@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 of one of them that
|
|
a separate index for them would look silly.@refill
|
|
|
|
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}.@refill
|
|
|
|
@menu
|
|
* syncodeindex:: How to merge two indices, using @code{@@code}
|
|
font for the merged-from index.
|
|
* synindex:: How to merge two indices, using the
|
|
default font of the merged-to index.
|
|
@end menu
|
|
|
|
@node syncodeindex
|
|
@subsection @code{@@syncodeindex}
|
|
@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.@refill
|
|
@findex syncodeindex
|
|
|
|
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:@refill
|
|
|
|
@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:@refill
|
|
|
|
@table @samp
|
|
@item cp
|
|
concept index
|
|
@item fn
|
|
function index
|
|
@item vr
|
|
variable index
|
|
@item ky
|
|
key index
|
|
@item pg
|
|
program index
|
|
@item tp
|
|
data type index
|
|
@end table
|
|
|
|
Write an @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:@refill
|
|
|
|
@example
|
|
@@syncodeindex fn cp
|
|
@end example
|
|
|
|
@noindent
|
|
This will cause all entries designated for the function index to merge
|
|
in with the concept index instead.@refill
|
|
|
|
To merge both a variables index and a function index into a concept
|
|
index, write the following:@refill
|
|
|
|
@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.@refill
|
|
|
|
@node synindex, , syncodeindex, Combining Indices
|
|
@subsection @code{@@synindex}
|
|
@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.@refill
|
|
|
|
@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.@refill
|
|
|
|
@node New Indices, , Combining Indices, 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, 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:@refill
|
|
|
|
@example
|
|
@@defindex @var{name}
|
|
@end example
|
|
|
|
The name of an index should be a two letter word, such as @samp{au}.
|
|
For example:@refill
|
|
|
|
@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 the new indexing command just as
|
|
you would use a predefined indexing command.@refill
|
|
|
|
For example, here is a section heading followed by a concept index
|
|
entry and two @samp{au} index entries.@refill
|
|
|
|
@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{au} index
|
|
leads to the automatic creation of an @code{@@auindex} command.@refill
|
|
|
|
Use the @code{@@printindex} command to print the index, as you do with
|
|
the predefined indices. For example:@refill
|
|
|
|
@example
|
|
@group
|
|
@@node Author Index, Subject Index, , Top
|
|
@@unnumbered Author Index
|
|
|
|
@@printindex au
|
|
@end group
|
|
@end example
|
|
|
|
The @code{@@defcodeindex} is like the @code{@@defindex} command, except
|
|
that, in the printed output, it prints entries in an @code{@@code} font
|
|
instead of a roman font. Thus, it parallels the @code{@@findex} command
|
|
rather than the @code{@@cindex} command.@refill
|
|
|
|
You should define new indices within or right after the end-of-header
|
|
line of a Texinfo file, before any @code{@@synindex} or
|
|
@code{@@syncodeindex} commands (@pxref{Texinfo File Header}).
|
|
|
|
|
|
@node Insertions
|
|
@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.
|
|
|
|
@iftex
|
|
These are:
|
|
|
|
@itemize @bullet
|
|
@item Braces and @samp{@@}.
|
|
@item Whitespace within and around a sentence.
|
|
@item Accents.
|
|
@item Dots and bullets.
|
|
@item The @TeX{} logo and the copyright symbol.
|
|
@item The pounds currency symbol.
|
|
@item The minus sign.
|
|
@item Mathematical expressions.
|
|
@item Glyphs for evaluation, macros, errors, etc.
|
|
@item Footnotes.
|
|
@item Images.
|
|
@end itemize
|
|
@end iftex
|
|
|
|
@menu
|
|
* Braces Atsigns:: How to insert braces, @samp{@@}.
|
|
* Inserting Space:: How to insert the right amount of space
|
|
within a sentence.
|
|
* Inserting Accents:: How to insert accents and special characters.
|
|
* Dots Bullets:: How to insert dots and bullets.
|
|
* TeX and copyright:: How to insert the @TeX{} logo
|
|
and the copyright symbol.
|
|
* pounds:: How to insert the pounds currency symbol.
|
|
* minus:: How to insert a minus sign.
|
|
* math:: How to format a mathematical expression.
|
|
* Glyphs:: How to indicate results of evaluation,
|
|
expansion of macros, errors, etc.
|
|
* Footnotes:: How to include footnotes.
|
|
* Images:: How to include graphics.
|
|
@end menu
|
|
|
|
|
|
@node Braces Atsigns, Inserting Space, Insertions, Insertions
|
|
@section Inserting @@ and Braces
|
|
@cindex Inserting @@, braces
|
|
@cindex Braces, inserting
|
|
@cindex Special characters, commands to insert
|
|
@cindex Commands to insert special characters
|
|
|
|
@samp{@@} and curly braces are 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.
|
|
|
|
Do not put braces after any of these commands; they are not
|
|
necessary.
|
|
|
|
@menu
|
|
* Inserting An Atsign:: How to insert @samp{@@}.
|
|
* Inserting Braces:: How to insert @samp{@{} and @samp{@}}.
|
|
@end menu
|
|
|
|
@node Inserting An Atsign, Inserting Braces, Braces Atsigns, Braces Atsigns
|
|
@subsection Inserting @samp{@@} with @@@@
|
|
@findex @@ @r{(literal @samp{@@})}
|
|
|
|
@code{@@@@} stands for a single @samp{@@} in either printed or Info
|
|
output.
|
|
|
|
Do not put braces after an @code{@@@@} command.
|
|
|
|
|
|
@node Inserting Braces
|
|
@subsection Inserting @samp{@{} and @samp{@}}with @@@{ and @@@}
|
|
@findex @{ @r{(literal @samp{@{})}
|
|
@findex @} @r{(literal @samp{@}})}
|
|
|
|
@code{@@@{} stands for a single @samp{@{} in either printed or Info
|
|
output.
|
|
|
|
@code{@@@}} stands for a single @samp{@}} in either printed or Info
|
|
output.
|
|
|
|
Do not put braces after either an @code{@@@{} or an @code{@@@}}
|
|
command.
|
|
|
|
|
|
@node Inserting Space
|
|
@section Inserting Space
|
|
|
|
@cindex Inserting space
|
|
@cindex Spacing, inserting
|
|
The following sections describe commands that control spacing of various
|
|
kinds within and after sentences.
|
|
|
|
@menu
|
|
* Not Ending a Sentence:: Sometimes a . doesn't end a sentence.
|
|
* Ending a Sentence:: Sometimes it does.
|
|
* Multiple Spaces:: Inserting multiple spaces.
|
|
* dmn:: How to format a dimension.
|
|
@end menu
|
|
|
|
|
|
@node Not Ending a Sentence
|
|
@subsection Not Ending a Sentence
|
|
|
|
@cindex Not ending a sentence
|
|
@cindex Sentence non-ending punctuation
|
|
@cindex Periods, inserting
|
|
Depending on whether a period or exclamation point or question mark is
|
|
inside or at the end of a sentence, less or more space is inserted after
|
|
a period in a typeset manual. Since it is not always possible
|
|
to determine when a period ends a sentence and when it is used
|
|
in an abbreviation, special commands are needed in some circumstances.
|
|
Usually, Texinfo can guess how to handle periods, so you do not need to
|
|
use the special commands; you just enter a period as you would if you
|
|
were using a typewriter, which means you put two spaces after the
|
|
period, question mark, or exclamation mark that ends a sentence.
|
|
|
|
@findex <colon> @r{(suppress widening)}
|
|
Use the @code{@@:}@: command after a period, question mark,
|
|
exclamation mark, or colon that should not be followed by extra space.
|
|
For example, use @code{@@:}@: after periods that end abbreviations
|
|
which are not at the ends of sentences.
|
|
|
|
For example,
|
|
|
|
@example
|
|
The s.o.p.@@: has three parts @dots{}
|
|
The s.o.p. has three parts @dots{}
|
|
@end example
|
|
|
|
@noindent
|
|
@ifinfo
|
|
produces
|
|
@end ifinfo
|
|
@iftex
|
|
produces the following. If you look carefully at this printed output,
|
|
you will see a little more whitespace after @samp{s.o.p.} in the second
|
|
line.@refill
|
|
@end iftex
|
|
|
|
@quotation
|
|
The s.o.p.@: has three parts @dots{}@*
|
|
The s.o.p. has three parts @dots{}
|
|
@end quotation
|
|
|
|
@noindent
|
|
(Incidentally, @samp{s.o.p.} is an abbreviation for ``Standard Operating
|
|
Procedure''.)
|
|
|
|
@code{@@:} has no effect on the Info output. Do not put braces after
|
|
@code{@@:}.
|
|
|
|
|
|
@node Ending a Sentence, Multiple Spaces, Not Ending a Sentence, Inserting Space
|
|
@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)}
|
|
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 ends with a single capital letter. Otherwise, @TeX{}
|
|
will think the letter is an abbreviation and will not insert the correct
|
|
end-of-sentence spacing. Here is an 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
|
|
@ifinfo
|
|
produces
|
|
@end ifinfo
|
|
@iftex
|
|
produces the following. If you look carefully at this printed output,
|
|
you will see a little more whitespace after the @samp{W} in the first
|
|
line.
|
|
@end iftex
|
|
|
|
@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 the Info file output, @code{@@.}@: is equivalent to a simple
|
|
@samp{.}; likewise for @code{@@!}@: and @code{@@?}@:.
|
|
|
|
The meanings of @code{@@:} and @code{@@.}@: in Texinfo are designed to
|
|
work well with the Emacs sentence motion commands (@pxref{Sentences,,,
|
|
emacs, The GNU Emacs Manual}).
|
|
|
|
Do not put braces after any of these commands.
|
|
|
|
|
|
@node Multiple Spaces
|
|
@subsection Multiple Spaces
|
|
|
|
@cindex Multiple spaces
|
|
@cindex Whitespace, inserting
|
|
@cindex Space, inserting horizontal
|
|
@findex (space)
|
|
@findex (tab)
|
|
@findex (newline)
|
|
|
|
Ordinarily, @TeX{} collapses multiple whitespace characters (space, tab,
|
|
and newline) into a single space. Info output, on the other hand,
|
|
preserves whitespace as you type it, except for changing a newline into
|
|
a space; this is why it is important to put two spaces at the end of
|
|
sentences in Texinfo documents.
|
|
|
|
Occasionally, you may want to actually insert several consecutive
|
|
spaces, either for purposes of example (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{@@ }, and @kbd{TAB} and @kbd{NL} represent the tab
|
|
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
|
|
|
|
Other possible uses of @code{@@@kbd{SPACE}} have been subsumed by
|
|
@code{@@multitable} (@pxref{Multi-column Tables}).
|
|
|
|
Do not follow any of these commands with braces.
|
|
|
|
To produce a non-breakable space, see @ref{tie, @code{@@tie}}.
|
|
|
|
|
|
@node dmn
|
|
@subsection @code{@@dmn}@{@var{dimension}@}: Format a Dimension
|
|
@cindex Thin space between number, dimension
|
|
@cindex Dimension formatting
|
|
@cindex Format a dimension
|
|
@findex dmn
|
|
|
|
At times, you may want to write @samp{12@dmn{pt}} or
|
|
@samp{8.5@dmn{in}} with little or no space between the number and the
|
|
abbreviation for the dimension. You can use the @code{@@dmn} command
|
|
to do this. On seeing the command, @TeX{} inserts just enough space
|
|
for proper typesetting; the Info formatting commands insert no space
|
|
at all, since the Info file does not require it.
|
|
|
|
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 @w{@samp{8.27 in.@@:}}
|
|
or @w{@samp{8.27 inches}} to @samp{8.27@@dmn@{in@}} in the Texinfo file.
|
|
In these cases, however, the formatters may insert a line break between
|
|
the number and the dimension, so use @code{@@w} (@pxref{w}). Also, if
|
|
you write a period after an abbreviation within a sentence, you should
|
|
write @samp{@@:} after the period to prevent @TeX{} from inserting extra
|
|
whitespace, as shown here. @xref{Not Ending a Sentence}.
|
|
|
|
|
|
@node Inserting Accents
|
|
@section Inserting Accents
|
|
|
|
@cindex Inserting accents
|
|
@cindex Accents, inserting
|
|
@cindex Floating accents, inserting
|
|
|
|
Here is a table with the commands Texinfo provides for inserting
|
|
floating accents. The commands with non-alphabetic names do not take
|
|
braces around their argument (which is taken to be the next character).
|
|
(Exception: @code{@@,} @emph{does} take braces around its argument.)
|
|
This is so as to make the source as convenient to type and read as
|
|
possible, since accented characters are very common in some languages.
|
|
|
|
@findex " @r{(umlaut accent)}
|
|
@cindex Umlaut accent
|
|
@findex ' @r{(umlaut 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 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{(check accent)}
|
|
@cindex Check accent
|
|
@multitable {@@questiondown@{@}} {Output} {macron/overbar accent}
|
|
@item 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{@@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 hacek or 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{}
|
|
@findex dotless
|
|
@cindex @dotless{i}
|
|
@cindex @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{}
|
|
@findex ss
|
|
@cindex @ss{}
|
|
@cindex Es-zet
|
|
@cindex Sharp S
|
|
@cindex German S
|
|
@multitable {x@@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{@@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{@@ss@{@}} @tab @ss{} @tab es-zet or sharp S
|
|
@end multitable
|
|
|
|
|
|
@node Dots Bullets
|
|
@section Inserting Ellipsis and Bullets
|
|
@cindex Dots, inserting
|
|
@cindex Bullets, inserting
|
|
@cindex Ellipsis, inserting
|
|
@cindex Inserting ellipsis
|
|
@cindex Inserting dots
|
|
@cindex Special typesetting commands
|
|
@cindex Typesetting commands for dots, etc.
|
|
|
|
An @dfn{ellipsis} (a line of dots) is not typeset as a string of
|
|
periods, so a special command is used for ellipsis in Texinfo. The
|
|
@code{@@bullet} command is special, too. Each of these commands is
|
|
followed by a pair of braces, @samp{@{@}}, without any whitespace
|
|
between the name of the command and the braces. (You need to use braces
|
|
with these commands because you can use them next to other text; without
|
|
the braces, the formatters would be confused. @xref{Command Syntax, ,
|
|
@@-Command Syntax}, for further information.)@refill
|
|
|
|
@menu
|
|
* dots:: How to insert dots @dots{}
|
|
* bullet:: How to insert a bullet.
|
|
@end menu
|
|
|
|
|
|
@node dots
|
|
@subsection @code{@@dots}@{@} (@dots{}) and @code{@@enddots}@{@} (@enddots{})
|
|
@findex dots
|
|
@findex enddots
|
|
@cindex Inserting dots
|
|
@cindex Dots, inserting
|
|
|
|
Use the @code{@@dots@{@}} command to generate an ellipsis, which is
|
|
three dots in a row, appropriately spaced, like this: `@dots{}'. Do
|
|
not simply write three periods in the input file; that would work for
|
|
the Info file output, but would produce the wrong amount of space
|
|
between the periods in the printed manual.
|
|
|
|
Similarly, the @code{@@enddots@{@}} command generates an
|
|
end-of-sentence ellipsis (four dots) @enddots{}
|
|
|
|
@iftex
|
|
Here is an ellipsis: @dots{}
|
|
Here are three periods in a row: ...
|
|
|
|
In printed output, the three periods in a row are closer together than
|
|
the dots in the ellipsis.
|
|
@end iftex
|
|
|
|
|
|
@node bullet
|
|
@subsection @code{@@bullet}@{@} (@bullet{})
|
|
@findex bullet
|
|
|
|
Use the @code{@@bullet@{@}} command to generate a large round dot, or
|
|
the closest possible thing to one. In Info, an asterisk is used.@refill
|
|
|
|
Here is a bullet: @bullet{}
|
|
|
|
When you use @code{@@bullet} in @code{@@itemize}, you do not need to
|
|
type the braces, because @code{@@itemize} supplies them.
|
|
(@xref{itemize, , @code{@@itemize}}.)@refill
|
|
|
|
|
|
@node TeX and copyright, pounds, Dots Bullets, Insertions
|
|
@section Inserting @TeX{} and the Copyright Symbol
|
|
|
|
The logo `@TeX{}' is typeset in a special fashion and it needs an
|
|
@@-command. The copyright symbol, `@copyright{}', is also special.
|
|
Each of these commands is followed by a pair of braces, @samp{@{@}},
|
|
without any whitespace between the name of the command and the
|
|
braces.@refill
|
|
|
|
@menu
|
|
* tex:: How to insert the @TeX{} logo.
|
|
* copyright symbol:: How to use @code{@@copyright@{@}}.
|
|
@end menu
|
|
|
|
|
|
@node tex
|
|
@subsection @code{@@TeX}@{@} (@TeX{})
|
|
@findex tex (command)
|
|
|
|
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 Info, it just looks like @samp{TeX}. The
|
|
@code{@@TeX@{@}} command is unique among Texinfo commands in that the
|
|
@samp{T} and the @samp{X} are in upper case.@refill
|
|
|
|
|
|
@node copyright symbol
|
|
@subsection @code{@@copyright@{@}} (@copyright{})
|
|
@findex copyright
|
|
|
|
Use the @code{@@copyright@{@}} command to generate `@copyright{}'. In
|
|
a printed manual, this is a @samp{c} inside a circle, and in Info,
|
|
this is @samp{(C)}.
|
|
|
|
|
|
@node pounds, minus, TeX and copyright, Insertions
|
|
@section @code{@@pounds}@{@} (@pounds{}): Pounds Sterling
|
|
@findex pounds
|
|
|
|
Use the @code{@@pounds@{@}} command to generate `@pounds{}'. In a
|
|
printed manual, this is the symbol for the currency pounds sterling.
|
|
In Info, it is a @samp{#}. Other currency symbols are unfortunately not
|
|
available.
|
|
|
|
|
|
@node minus, math, pounds, Insertions
|
|
@section @code{@@minus}@{@} (@minus{}): Inserting a Minus Sign
|
|
@findex minus
|
|
|
|
@cindex em-dash
|
|
@cindex hyphen
|
|
Use the @code{@@minus@{@}} command to generate a minus sign. In a
|
|
fixed-width font, this is a single hyphen, but in a proportional font,
|
|
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
|
|
|
|
@noindent
|
|
In the fixed-width font used by Info, @code{@@minus@{@}} is the same
|
|
as a hyphen.
|
|
|
|
You should not use @code{@@minus@{@}} inside @code{@@code} or
|
|
@code{@@example} because the width distinction is not made in the
|
|
fixed-width font they use.
|
|
|
|
When you use @code{@@minus} to specify the mark beginning each entry in
|
|
an itemized list, you do not need to type the braces
|
|
(@pxref{itemize, , @code{@@itemize}}.)
|
|
|
|
|
|
@node math
|
|
@section @code{@@math}: Inserting Mathematical Expressions
|
|
@findex math
|
|
@cindex Mathematical expressions
|
|
@cindex Formulas, mathematical
|
|
|
|
You can write a short mathematical expression with the @code{@@math}
|
|
command. Write the mathematical expression between braces, like this:
|
|
|
|
@example
|
|
@@math@{(a + b)(a + b) = a^2 + 2ab + b^2@}
|
|
@end example
|
|
|
|
@iftex
|
|
@noindent This produces the following in @TeX{}:
|
|
|
|
@display
|
|
@math{(a + b)(a + b) = a^2 + 2ab + b^2}
|
|
@end display
|
|
|
|
@noindent and the following in Info:
|
|
@end iftex
|
|
@ifinfo
|
|
@noindent This produces the following in Info:
|
|
@end ifinfo
|
|
|
|
@example
|
|
(a + b)(a + b) = a^2 + 2ab + b^2
|
|
@end example
|
|
|
|
Thus, the @code{@@math} command has no effect on the Info output;
|
|
@command{makeinfo} just reproduces the input, it does not try to
|
|
interpret the mathematics in any way.
|
|
|
|
@code{@@math} implies @code{@@tex}. This not only makes it possible to
|
|
write superscripts and subscripts (as in the above example), but also
|
|
allows you to use any of the plain @TeX{} math control sequences. It's
|
|
conventional to use @samp{\} instead of @samp{@@} for these commands.
|
|
As in:
|
|
@example
|
|
@@math@{\sin 2\pi \equiv \cos 3\pi@}
|
|
@end example
|
|
|
|
@iftex
|
|
@noindent which looks like this in @TeX{}:
|
|
@display
|
|
@math{\sin 2\pi \equiv \cos 3\pi}
|
|
@end display
|
|
|
|
@noindent and
|
|
@end iftex
|
|
@noindent which looks like the input in Info and HTML:
|
|
@example
|
|
\sin 2\pi \equiv \cos 3\pi
|
|
@end example
|
|
|
|
@findex \ @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'll get the literal @samp{\\} in Info). @code{@@\} is not
|
|
defined outside of @code{@@math}, since a @samp{\} ordinarily produces a
|
|
literal @samp{\}.
|
|
|
|
|
|
@cindex Displayed equations
|
|
@cindex Equations, displayed
|
|
For displayed equations, you must at present use @TeX{} directly
|
|
(@pxref{Raw Formatter Commands}).
|
|
|
|
|
|
@node Glyphs
|
|
@section Glyphs for Examples
|
|
@cindex Glyphs
|
|
@cindex Examples, glyphs for
|
|
|
|
In Texinfo, code is often illustrated in examples that are delimited
|
|
by @code{@@example} and @code{@@end example}, or by @code{@@lisp} and
|
|
@code{@@end lisp}. 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, and the
|
|
location of point.@refill
|
|
|
|
The glyph-insertion commands do not need to be used within an example, but
|
|
most often they are. Every glyph-insertion command is followed by a pair of
|
|
left- and right-hand braces.@refill
|
|
|
|
@menu
|
|
* Glyphs Summary::
|
|
* result:: How to show the result of expression.
|
|
* expansion:: How to indicate an expansion.
|
|
* Print Glyph:: How to indicate printed output.
|
|
* Error Glyph:: How to indicate an error message.
|
|
* Equivalence:: How to indicate equivalence.
|
|
* Point Glyph:: How to indicate the location of point.
|
|
@end menu
|
|
|
|
|
|
@node Glyphs Summary
|
|
@subsection Glyphs Summary
|
|
|
|
Here are the different glyph commands:@refill
|
|
|
|
@table @asis
|
|
@item @result{}
|
|
@code{@@result@{@}} points to the result of an expression.@refill
|
|
|
|
@item @expansion{}
|
|
@code{@@expansion@{@}} shows the results of a macro expansion.@refill
|
|
|
|
@item @print{}
|
|
@code{@@print@{@}} indicates printed output.@refill
|
|
|
|
@item @error{}
|
|
@code{@@error@{@}} indicates that the following text is an error
|
|
message.@refill
|
|
|
|
@item @equiv{}
|
|
@code{@@equiv@{@}} indicates the exact equivalence of two forms.@refill
|
|
|
|
@item @point{}
|
|
@code{@@point@{@}} shows the location of point.@refill
|
|
@end table
|
|
|
|
@menu
|
|
* result::
|
|
* expansion::
|
|
* Print Glyph::
|
|
* Error Glyph::
|
|
* Equivalence::
|
|
* Point Glyph::
|
|
@end menu
|
|
|
|
|
|
@node result
|
|
@subsection @code{@@result@{@}} (@result{}): Indicating Evaluation
|
|
@cindex Result of an expression
|
|
@cindex Indicating evaluation
|
|
@cindex Evaluation glyph
|
|
@cindex Value of an expression, indicating
|
|
@findex result
|
|
|
|
Use the @code{@@result@{@}} command to indicate the result of
|
|
evaluating an expression.@refill
|
|
|
|
@iftex
|
|
The @code{@@result@{@}} command is displayed as @samp{=>} in Info and
|
|
as @samp{@result{}} in the printed output.
|
|
@end iftex
|
|
@ifinfo
|
|
The @code{@@result@{@}} command is displayed as @samp{@result{}} in Info
|
|
and as a double stemmed arrow in the printed output.@refill
|
|
@end ifinfo
|
|
|
|
Thus, the following,
|
|
|
|
@lisp
|
|
(cdr '(1 2 3))
|
|
@result{} (2 3)
|
|
@end lisp
|
|
|
|
@noindent
|
|
may be read as ``@code{(cdr '(1 2 3))} evaluates to @code{(2 3)}''.
|
|
|
|
|
|
@node expansion, Print Glyph, result, Glyphs
|
|
@subsection @code{@@expansion@{@}} (@expansion{}): Indicating an Expansion
|
|
@cindex Expansion, indicating it
|
|
@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.@refill
|
|
|
|
@iftex
|
|
The @code{@@expansion@{@}} command is displayed as @samp{==>} in Info and
|
|
as @samp{@expansion{}} in the printed output.
|
|
@end iftex
|
|
@ifinfo
|
|
The @code{@@expansion@{@}} command is displayed as @samp{@expansion{}}
|
|
in Info and as a long arrow with a flat base in the printed output.@refill
|
|
@end ifinfo
|
|
|
|
@need 700
|
|
For example, the following
|
|
|
|
@example
|
|
@group
|
|
@@lisp
|
|
(third '(a b c))
|
|
@@expansion@{@} (car (cdr (cdr '(a b c))))
|
|
@@result@{@} c
|
|
@@end lisp
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@lisp
|
|
@group
|
|
(third '(a b c))
|
|
@expansion{} (car (cdr (cdr '(a b c))))
|
|
@result{} c
|
|
@end group
|
|
@end lisp
|
|
|
|
@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
|
|
five spaces.@refill
|
|
|
|
|
|
@node Print Glyph, Error Glyph, expansion, Glyphs
|
|
@subsection @code{@@print@{@}} (@print{}): Indicating Printed Output
|
|
@cindex Printed output, indicating it
|
|
@findex print
|
|
|
|
Sometimes an expression will print output during its execution. You
|
|
can indicate the printed output with the @code{@@print@{@}} command.@refill
|
|
|
|
@iftex
|
|
The @code{@@print@{@}} command is displayed as @samp{-|} in Info and
|
|
as @samp{@print{}} in the printed output.
|
|
@end iftex
|
|
@ifinfo
|
|
The @code{@@print@{@}} command is displayed as @samp{@print{}} in Info
|
|
and similarly, as a horizontal dash butting against a vertical bar, in
|
|
the printed output.@refill
|
|
@end ifinfo
|
|
|
|
In the following example, the printed text is indicated with
|
|
@samp{@print{}}, and the value of the expression follows on the
|
|
last line.@refill
|
|
|
|
@lisp
|
|
@group
|
|
(progn (print 'foo) (print 'bar))
|
|
@print{} foo
|
|
@print{} bar
|
|
@result{} bar
|
|
@end group
|
|
@end lisp
|
|
|
|
@noindent
|
|
In a Texinfo source file, this example is written as follows:
|
|
|
|
@lisp
|
|
@group
|
|
@@lisp
|
|
(progn (print 'foo) (print 'bar))
|
|
@@print@{@} foo
|
|
@@print@{@} bar
|
|
@@result@{@} bar
|
|
@@end lisp
|
|
@end group
|
|
@end lisp
|
|
|
|
|
|
@node Error Glyph, Equivalence, Print Glyph, Glyphs
|
|
@subsection @code{@@error@{@}} (@error{}): Indicating an Error Message
|
|
@cindex Error message, indicating it
|
|
@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.@refill
|
|
|
|
@iftex
|
|
The @code{@@error@{@}} command is displayed as @samp{error-->} in Info
|
|
and as @samp{@error{}} in the printed output.
|
|
@end iftex
|
|
@ifinfo
|
|
The @code{@@error@{@}} command is displayed as @samp{@error{}} in Info
|
|
and as the word `error' in a box in the printed output.@refill
|
|
@end ifinfo
|
|
|
|
@need 700
|
|
Thus,
|
|
|
|
@example
|
|
@@lisp
|
|
(+ 23 'x)
|
|
@@error@{@} Wrong type argument: integer-or-marker-p, x
|
|
@@end lisp
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@lisp
|
|
(+ 23 'x)
|
|
@error{} Wrong type argument: integer-or-marker-p, x
|
|
@end lisp
|
|
|
|
@noindent
|
|
This indicates that the following error message is printed
|
|
when you evaluate the expression:
|
|
|
|
@lisp
|
|
Wrong type argument: integer-or-marker-p, x
|
|
@end lisp
|
|
|
|
@samp{@error{}} itself is not part of the error message.
|
|
|
|
|
|
@node Equivalence, Point Glyph, Error Glyph, Glyphs
|
|
@subsection @code{@@equiv@{@}} (@equiv{}): Indicating Equivalence
|
|
@cindex Equivalence, indicating it
|
|
@findex equiv
|
|
|
|
Sometimes two expressions produce identical results. You can indicate the
|
|
exact equivalence of two forms with the @code{@@equiv@{@}} command.@refill
|
|
|
|
@iftex
|
|
The @code{@@equiv@{@}} command is displayed as @samp{==} in Info and
|
|
as @samp{@equiv{}} in the printed output.
|
|
@end iftex
|
|
@ifinfo
|
|
The @code{@@equiv@{@}} command is displayed as @samp{@equiv{}} in Info
|
|
and as a three parallel horizontal lines in the printed output.@refill
|
|
@end ifinfo
|
|
|
|
Thus,
|
|
|
|
@example
|
|
@@lisp
|
|
(make-sparse-keymap) @@equiv@{@} (list 'keymap)
|
|
@@end lisp
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@lisp
|
|
(make-sparse-keymap) @equiv{} (list 'keymap)
|
|
@end lisp
|
|
|
|
@noindent
|
|
This indicates that evaluating @code{(make-sparse-keymap)} produces
|
|
identical results to evaluating @code{(list 'keymap)}.
|
|
|
|
|
|
@node Point Glyph
|
|
@subsection @code{@@point@{@}} (@point{}): Indicating Point in a Buffer
|
|
@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.@refill
|
|
|
|
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.)@refill
|
|
|
|
@iftex
|
|
The @code{@@point@{@}} command is displayed as @samp{-!-} in Info and
|
|
as @samp{@point{}} in the printed output.
|
|
@end iftex
|
|
@ifinfo
|
|
The @code{@@point@{@}} command is displayed as @samp{@point{}} in Info
|
|
and as a small five pointed star in the printed output.@refill
|
|
@end ifinfo
|
|
|
|
The following example shows the contents of buffer @file{foo} before
|
|
and after evaluating a Lisp command to insert the word @code{changed}.@refill
|
|
|
|
@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:@refill
|
|
|
|
@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 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.}
|
|
|
|
@menu
|
|
* Footnote Commands:: How to write a footnote in Texinfo.
|
|
* Footnote Styles:: Controlling how footnotes appear in Info.
|
|
@end menu
|
|
|
|
|
|
@node Footnote Commands
|
|
@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, the 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.
|
|
|
|
In a printed manual or book, 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's
|
|
text.
|
|
|
|
In the HTML output, footnote references are marked with a small,
|
|
superscripted number which is rendered as a hypertext link to the
|
|
footnote text.
|
|
|
|
By the way, footnotes in the argument of an @code{@@item} command for a
|
|
@code{@@table} must be on the same line as the @code{@@item}
|
|
(as usual). @xref{Two-column Tables}.
|
|
|
|
|
|
@node Footnote Styles
|
|
@subsection Footnote Styles
|
|
|
|
Info has two footnote styles, which determine where the text of the
|
|
footnote is located:@refill
|
|
|
|
@itemize @bullet
|
|
@cindex @samp{@r{End}} node footnote style
|
|
@item
|
|
In the `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.@refill
|
|
|
|
@need 700
|
|
@noindent
|
|
Here is an example of a single footnote in the end of node style:@refill
|
|
|
|
@example
|
|
@group
|
|
--------- Footnotes ---------
|
|
|
|
(1) Here is a sample footnote.
|
|
@end group
|
|
@end example
|
|
|
|
@cindex @samp{@r{Separate}} footnote style
|
|
@item
|
|
In the `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.@refill
|
|
|
|
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.@refill
|
|
|
|
@noindent
|
|
Here is how the first footnote in this manual looks after being
|
|
formatted for Info in the separate node style:@refill
|
|
|
|
@smallexample
|
|
@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 smallexample
|
|
@end itemize
|
|
|
|
A Texinfo file may be formatted into an Info file with either footnote
|
|
style.@refill
|
|
|
|
@findex footnotestyle
|
|
Use the @code{@@footnotestyle} command to specify an Info file's
|
|
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 an @code{@@footnotestyle} command before or shortly after the
|
|
end-of-header line at the beginning of a Texinfo file. (If you
|
|
include the @code{@@footnotestyle} command between the start-of-header
|
|
and end-of-header lines, the region formatting commands will format
|
|
footnotes as specified.)@refill
|
|
|
|
If you do not specify a footnote style, the formatting commands use
|
|
their default style. Currently, @code{texinfo-format-buffer} and
|
|
@code{texinfo-format-region} use the `separate' style and
|
|
@code{makeinfo} uses the `end' style.@refill
|
|
|
|
@c !!! note: makeinfo's --footnote-style option overrides footnotestyle
|
|
@ignore
|
|
If you use @code{makeinfo} to create the Info file, the
|
|
@samp{--footnote-style} option determines which style is used,
|
|
@samp{end} for the end of node style or @samp{separate} for the
|
|
separate node style. Thus, to format the Texinfo manual in the
|
|
separate node style, you would use the following shell command:@refill
|
|
|
|
@example
|
|
makeinfo --footnote-style=separate texinfo.texi
|
|
@end example
|
|
|
|
@noindent
|
|
To format the Texinfo manual in the end of node style, you would
|
|
type:@refill
|
|
|
|
@example
|
|
makeinfo --footnote-style=end texinfo.texi
|
|
@end example
|
|
@end ignore
|
|
@ignore
|
|
If you use @code{texinfo-format-buffer} or
|
|
@code{texinfo-format-region} to create the Info file, the value of the
|
|
@code{texinfo-footnote-style} variable controls the footnote style.
|
|
It can be either @samp{"separate"} for the separate node style or
|
|
@samp{"end"} for the end of node style. (You can change the value of
|
|
this variable with the @kbd{M-x edit-options} command (@pxref{Edit
|
|
Options, , Editing Variable Values, 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}).@refill
|
|
|
|
The @code{texinfo-footnote-style} variable also controls the style if
|
|
you use the @kbd{M-x makeinfo-region} or @kbd{M-x makeinfo-buffer}
|
|
command in Emacs.@refill
|
|
@end ignore
|
|
@ifinfo
|
|
This chapter contains two footnotes.@refill
|
|
@end ifinfo
|
|
|
|
|
|
@c this should be described with figures when we have them
|
|
@c perhaps in the quotation/example chapter.
|
|
@node Images
|
|
@section Inserting Images
|
|
|
|
@cindex Images, inserting
|
|
@cindex Pictures, inserting
|
|
@findex image
|
|
|
|
You can insert an image given in an external file with the
|
|
@code{@@image} command:
|
|
|
|
@example
|
|
@@image@{@var{filename}, @r{[}@var{width}@r{]}, @r{[}@var{height}@r{]}, @r{[}@var{alttext}@r{]}, @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
|
|
@TeX{} reads the file @file{@var{filename}.eps} (Encapsulated PostScript
|
|
format).
|
|
@item
|
|
@pindex pdftex@r{, and images}
|
|
PDF@TeX{} reads @file{@var{filename}.pdf} (Adobe's Portable Document Format).
|
|
@item
|
|
@code{makeinfo} uses @file{@var{filename}.txt} verbatim for
|
|
Info output (more or less as if it was an @code{@@example}).
|
|
@item
|
|
@code{makeinfo}
|
|
uses the optional fifth argument to @code{@@image} for the extension if
|
|
you supply it. For example:
|
|
|
|
@pindex XPM image format
|
|
@example
|
|
@@image@{foo,,,,xpm@}
|
|
@end example
|
|
|
|
@noindent
|
|
will cause @samp{makeinfo --html} to try @file{foo.xpm}.
|
|
|
|
@cindex GIF, unsupported due to patents
|
|
@cindex PNG image format
|
|
@cindex JPG image format
|
|
If you do not supply the optional fifth argument, @samp{makeinfo
|
|
---html} first tries @file{@var{filename}.png}; if that does not exist,
|
|
it tries @file{@var{filename}.jpg}. If that does not exist either, it
|
|
complains. (We cannot support GIF format directly due to software
|
|
patents.)
|
|
@end itemize
|
|
|
|
@cindex Width of images
|
|
@cindex Height of images
|
|
@cindex Aspect ratio of images
|
|
@cindex Distorting images
|
|
The optional @var{width} and @var{height} arguments specify the size to
|
|
scale the image to (they are ignored for Info output). 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 possibly 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.
|
|
|
|
@cindex alt attribute for images
|
|
@cindex alternate text for images
|
|
When producing html, @code{makeinfo} sets the @dfn{alt attribute} for
|
|
inline images to the optional fourth argument to @code{@@image}, if
|
|
supplied. If not supplied, @code{makeinfo} uses the full file name of
|
|
the image being displayed.
|
|
|
|
|
|
@node Breaks
|
|
@chapter Making and Preventing Breaks
|
|
@cindex Making line and page breaks
|
|
@cindex Preventing line and page breaks
|
|
|
|
@cindex Line breaks
|
|
Usually, a Texinfo file is processed both by @TeX{} and by one of the
|
|
Info formatting commands. Line, paragraph, or page breaks sometimes
|
|
occur in the `wrong' place in one or other form of output. You must
|
|
ensure that text looks right both in the printed manual and in the
|
|
Info file.
|
|
|
|
@cindex White space, excessive
|
|
@cindex Page breaks
|
|
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 occur normally. Fortunately, problems like these do not often
|
|
arise. When they do, use the break, break prevention, or pagination
|
|
commands.
|
|
|
|
@menu
|
|
* Break Commands:: Summary of break-related commands.
|
|
* Line Breaks:: Forcing line breaks.
|
|
* - and hyphenation:: Helping @TeX{} with hyphenation points.
|
|
* w:: Preventing unwanted line breaks in text.
|
|
* tie:: Inserting an unbreakable but varying space.
|
|
* sp:: Inserting blank lines.
|
|
* page:: Forcing the start of a new page.
|
|
* group:: Preventing unwanted page breaks.
|
|
* need:: Another way to prevent unwanted page breaks.
|
|
@end menu
|
|
|
|
|
|
@node Break 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
|
|
@iftex
|
|
@sp 1
|
|
@end iftex
|
|
|
|
The pagination commands apply only to printed output, since Info
|
|
files do not have pages.
|
|
|
|
@table @code
|
|
@item @@page
|
|
Start a new page in the printed manual.
|
|
|
|
@item @@group
|
|
Hold text together that must appear on one printed page.
|
|
|
|
@item @@need @var{mils}
|
|
Start a new printed page if not enough space on this one.
|
|
@end table
|
|
|
|
|
|
@node Line Breaks
|
|
@section @code{@@*}: Generate Line Breaks
|
|
@findex * @r{(force line break)}
|
|
@cindex Line breaks
|
|
@cindex Breaks in a line
|
|
|
|
The @code{@@*} command forces a line break in both the printed manual and
|
|
in Info.@refill
|
|
|
|
@need 700
|
|
For example,
|
|
|
|
@example
|
|
This line @@* is broken @@*in two places.
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@example
|
|
@group
|
|
This line
|
|
is broken
|
|
in two places.
|
|
@end group
|
|
@end example
|
|
|
|
The @code{@@*} command is often used in a file's copyright page:
|
|
|
|
@example
|
|
@group
|
|
This is edition 2.0 of the Texinfo documentation,@@*
|
|
and is for @dots{}
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
In this case, the @code{@@*} command keeps @TeX{} from stretching the
|
|
line across the whole page in an ugly manner.
|
|
|
|
Do not write an @code{@@refill} command at the end of a paragraph
|
|
containing an @code{@@*} command; it will cause the paragraph to be
|
|
refilled after the line break occurs, negating the effect of the line
|
|
break.@refill
|
|
|
|
|
|
@node - and hyphenation
|
|
@section @code{@@-} and @code{@@hyphenation}: Helping @TeX{} Hyphenate
|
|
|
|
@findex - @r{(discretionary hyphen)}
|
|
@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 help @TeX{} out. Texinfo supports two commands for this:
|
|
|
|
@table @code
|
|
@item @@-
|
|
Insert a discretionary hyphen, i.e., a place where @TeX{} can (but does
|
|
not have to) hyphenate. This is especially useful when you notice 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}@}
|
|
Tell @TeX{} how to hyphenate @var{hy-phen-a-ted words}. As shown, you
|
|
put a @samp{-} at each hyphenation point. For example:
|
|
@example
|
|
@@hyphenation@{man-u-script man-u-scripts@}
|
|
@end example
|
|
@noindent @TeX{} only uses the specified hyphenation points when the
|
|
words match exactly, so give all necessary variants.
|
|
@end table
|
|
|
|
Info output is not hyphenated, so these commands have no effect there.
|
|
|
|
@node w
|
|
@section @code{@@w}@{@var{text}@}: Prevent Line Breaks
|
|
@findex w @r{(prevent line break)}
|
|
@cindex Line breaks, preventing
|
|
@cindex Hyphenation, preventing
|
|
|
|
@code{@@w@{@var{text}@}} outputs @var{text} and prohibits line breaks
|
|
within @var{text}.
|
|
|
|
You can use the @code{@@w} command to prevent @TeX{} from automatically
|
|
hyphenating a long name or phrase that happens to fall near the end of a
|
|
line. For example:
|
|
|
|
@example
|
|
You can copy GNU software from @@w@{@@samp@{ftp.gnu.org@}@}.
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@quotation
|
|
You can copy GNU software from @w{@samp{ftp.gnu.org}}.
|
|
@end quotation
|
|
|
|
@cindex Non-breakable space, fixed
|
|
@cindex Unbreakable space, fixed
|
|
You can also 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 some manual indenting. However, usually you
|
|
want a normal interword space that does stretch and shrink (in the
|
|
printed output); see the @code{@@tie} command in the next section.
|
|
|
|
|
|
@node tie
|
|
@section @code{@@tie@{@}}: Inserting an Unbreakable Space
|
|
@findex tie @r{(unbreakable interword space)}
|
|
@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 sp
|
|
@section @code{@@sp} @var{n}: Insert Blank Lines
|
|
@findex sp @r{(line spacing)}
|
|
@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 in both the printed manual and
|
|
the Info file. @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 in the title page.@refill
|
|
|
|
@ignore
|
|
@c node br, page, sp, Breaks
|
|
@comment node-name, next, previous, up
|
|
@c section @code{@@br}: Generate Paragraph Breaks
|
|
@findex br @r{(paragraph breaks)}
|
|
@cindex Paragraph breaks
|
|
@cindex Breaks in a paragraph
|
|
|
|
The @code{@@br} command forces a paragraph break. It inserts a blank
|
|
line. You can use the command within or at the end of a line. If
|
|
used within a line, the @code{@@br@{@}} command must be followed by
|
|
left and right braces (as shown here) to mark the end of the
|
|
command.@refill
|
|
|
|
@need 700
|
|
For example,
|
|
|
|
@example
|
|
@group
|
|
This line @@br@{@}contains and is ended by paragraph breaks@@br
|
|
and is followed by another line.
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@example
|
|
@group
|
|
This line
|
|
|
|
contains and is ended by paragraph breaks
|
|
|
|
and is followed by another line.
|
|
@end group
|
|
@end example
|
|
|
|
The @code{@@br} command is seldom used.
|
|
@end ignore
|
|
|
|
|
|
@node page
|
|
@section @code{@@page}: Start a New Page
|
|
@cindex Page breaks
|
|
@findex page
|
|
|
|
A line containing only @code{@@page} starts a new page in a printed
|
|
manual. The command has no effect on Info files since they are not
|
|
paginated. An @code{@@page} command is often used in the @code{@@titlepage}
|
|
section of a Texinfo file to start the copyright page.
|
|
|
|
|
|
@node group, need, page, Breaks
|
|
@comment node-name, next, previous, up
|
|
@section @code{@@group}: Prevent Page Breaks
|
|
@cindex Group (hold text together vertically)
|
|
@cindex Holding text together vertically
|
|
@cindex Vertically holding text together
|
|
@findex group
|
|
|
|
The @code{@@group} command (on a line by itself) is used inside an
|
|
@code{@@example} or similar construct to begin an unsplittable vertical
|
|
group, which will appear entirely on one page in the printed output.
|
|
The group is terminated by a line containing only @code{@@end group}.
|
|
These two lines produce no output of their own, and in the Info file
|
|
output they have no effect at all.@refill
|
|
|
|
@c Once said that these environments
|
|
@c turn off vertical spacing between ``paragraphs''.
|
|
@c Also, quotation used to work, but doesn't in texinfo-2.72
|
|
Although @code{@@group} would make sense conceptually in a wide
|
|
variety of contexts, its current implementation works reliably 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.) In
|
|
other contexts, @code{@@group} can cause anomalous vertical
|
|
spacing.@refill
|
|
|
|
@need 750
|
|
This formatting requirement means that you should write:
|
|
|
|
@example
|
|
@group
|
|
@@example
|
|
@@group
|
|
@dots{}
|
|
@@end group
|
|
@@end example
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
with the @code{@@group} and @code{@@end group} commands inside the
|
|
@code{@@example} and @code{@@end example} commands.
|
|
|
|
The @code{@@group} command is most often used to hold an example
|
|
together on one page. In this Texinfo manual, more than 100 examples
|
|
contain text that is enclosed between @code{@@group} and @code{@@end
|
|
group}.
|
|
|
|
If you forget to end a group, you may get strange and unfathomable
|
|
error messages when you run @TeX{}. This is because @TeX{} keeps
|
|
trying to put the rest of the Texinfo file onto the one page and does
|
|
not start to generate error messages until it has processed
|
|
considerable text. It is a good rule of thumb to look for a missing
|
|
@code{@@end group} if you get incomprehensible error messages in
|
|
@TeX{}.@refill
|
|
|
|
@node need, , group, Breaks
|
|
@comment node-name, next, previous, up
|
|
@section @code{@@need @var{mils}}: Prevent Page Breaks
|
|
@cindex Need space at page bottom
|
|
@findex 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 Info files since they are not paginated.@refill
|
|
|
|
@need 800
|
|
This paragraph is preceded by an @code{@@need} command that tells
|
|
@TeX{} to start a new page if fewer than 800 mils (eight-tenths
|
|
inch) remain on the page. It looks like this:@refill
|
|
|
|
@example
|
|
@group
|
|
@@need 800
|
|
This paragraph is preceded by @dots{}
|
|
@end group
|
|
@end example
|
|
|
|
The @code{@@need} command is useful for preventing orphans (single
|
|
lines at the bottoms of printed pages).@refill
|
|
|
|
|
|
@node Definition Commands
|
|
@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 such artifacts in a uniform
|
|
format.@refill
|
|
|
|
In the Info file, a definition causes the entity
|
|
category---`Function', `Variable', or whatever---to appear at the
|
|
beginning of the first line of the definition, followed by the
|
|
entity's name and arguments. In the printed manual, the command
|
|
causes @TeX{} to print the entity's name and its arguments on the left
|
|
margin and print the category next to the right margin. In both
|
|
output formats, the body of the definition is indented. Also, the
|
|
name of the entity is entered into the appropriate index:
|
|
@code{@@deffn} enters the name into the index of functions,
|
|
@code{@@defvr} enters it into the index of variables, and so
|
|
on.@refill
|
|
|
|
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.@refill
|
|
|
|
@menu
|
|
* Def Cmd Template:: How to structure a description using a
|
|
definition command.
|
|
* Optional Arguments:: How to handle optional and repeated arguments.
|
|
* deffnx:: How to group two or more `first' lines.
|
|
* Def Cmds in Detail:: All the definition commands.
|
|
* Def Cmd Conventions:: Conventions for writing definitions.
|
|
* Sample Function Definition::
|
|
@end menu
|
|
|
|
@node Def Cmd Template, Optional Arguments, Definition Commands, Definition Commands
|
|
@section The Template for a Definition
|
|
@cindex Definition template
|
|
@cindex Template for a definition
|
|
|
|
The @code{@@deffn} command is used for definitions of entities that
|
|
resemble functions. To write a definition using the @code{@@deffn}
|
|
command, 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. (You may embed examples in the
|
|
body.) Finally, end the definition with an @code{@@end deffn} command
|
|
written on a line of its own. (The other definition commands follow
|
|
the same format.)@refill
|
|
|
|
The template for a definition looks like this:
|
|
|
|
@example
|
|
@group
|
|
@@deffn @var{category} @var{name} @var{arguments}@dots{}
|
|
@var{body-of-definition}
|
|
@@end deffn
|
|
@end group
|
|
@end example
|
|
|
|
@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 function 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',
|
|
write braces around it. For example:@refill
|
|
|
|
@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.@refill
|
|
|
|
Some of the definition commands are more general than others. The
|
|
@code{@@deffn} command, for example, is the general definition command
|
|
for functions and the like---for entities that may take arguments. When
|
|
you use this command, you specify the category to which the entity
|
|
belongs. The @code{@@deffn} command possesses three predefined,
|
|
specialized variations, @code{@@defun}, @code{@@defmac}, and
|
|
@code{@@defspec}, that specify the category for you: ``Function'',
|
|
``Macro'', and ``Special Form'' respectively. (In Lisp, a special form
|
|
is an entity much like a function.) The @code{@@defvr} command also is
|
|
accompanied by several predefined, specialized variations for describing
|
|
particular kinds of variables.@refill
|
|
|
|
The template for a specialized definition, such as @code{@@defun}, is
|
|
similar to the template for a generalized definition, except that you
|
|
do not need to specify the category:@refill
|
|
|
|
@example
|
|
@group
|
|
@@defun @var{name} @var{arguments}@dots{}
|
|
@var{body-of-definition}
|
|
@@end defun
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
Thus,
|
|
|
|
@example
|
|
@group
|
|
@@defun buffer-end flag
|
|
This function returns @@code@{(point-min)@} if @@var@{flag@}
|
|
is less than 1, @@code@{(point-max)@} otherwise.
|
|
@dots{}
|
|
@@end defun
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
produces
|
|
|
|
@quotation
|
|
@defun buffer-end flag
|
|
This function returns @code{(point-min)} if @var{flag} is less than 1,
|
|
@code{(point-max)} otherwise. @dots{}
|
|
@end defun
|
|
@end quotation
|
|
|
|
@noindent
|
|
@xref{Sample Function Definition, Sample Function Definition, A Sample
|
|
Function Definition}, for a more detailed example of a function
|
|
definition, including the use of @code{@@example} inside the
|
|
definition.@refill
|
|
|
|
The other specialized commands work like @code{@@defun}.@refill
|
|
|
|
@cindex Macros in definition commands
|
|
Note that, due to implementation difficulties, macros are not expanded
|
|
in @code{@@deffn} and all the other definition commands.
|
|
|
|
@node Optional Arguments, deffnx, Def Cmd Template, Definition Commands
|
|
@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
|
|
|
|
Some entities take optional or repeated arguments, which may be
|
|
specified by a distinctive glyph that uses square brackets and
|
|
ellipses. For @w{example}, a special form often breaks its argument list
|
|
into separate arguments in more complicated ways than a
|
|
straightforward function.@refill
|
|
|
|
@iftex
|
|
An argument enclosed within square brackets is optional.
|
|
Thus, the phrase
|
|
@samp{@code{@r{[}@var{optional-arg}@r{]}}} means that
|
|
@var{optional-arg} is optional.
|
|
An argument followed by an ellipsis is optional
|
|
and may be repeated more than once.
|
|
@c This is consistent with Emacs Lisp Reference manual
|
|
Thus, @samp{@var{repeated-args}@dots{}} stands for zero or more arguments.
|
|
Parentheses are used when several arguments are grouped
|
|
into additional levels of list structure in Lisp.
|
|
@end iftex
|
|
@c The following looks better in Info (no `r', `samp' and `code'):
|
|
@ifinfo
|
|
An argument enclosed within square brackets is optional.
|
|
Thus, [@var{optional-arg}] means that @var{optional-arg} is optional.
|
|
An argument followed by an ellipsis is optional
|
|
and may be repeated more than once.
|
|
@c This is consistent with Emacs Lisp Reference manual
|
|
Thus, @var{repeated-args}@dots{} stands for zero or more arguments.
|
|
Parentheses are used when several arguments are grouped
|
|
into additional levels of list structure in Lisp.
|
|
@end ifinfo
|
|
|
|
Here is the @code{@@defspec} line of an example of an imaginary
|
|
special form:@refill
|
|
|
|
@quotation
|
|
@defspec foobar (@var{var} [@var{from} @var{to} [@var{inc}]]) @var{body}@dots{}
|
|
@end defspec
|
|
@tex
|
|
\vskip \parskip
|
|
@end tex
|
|
@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.@refill
|
|
|
|
In a Texinfo source file, this @code{@@defspec} line is written like
|
|
this (except it would not be split over two lines, as it is in this
|
|
example).@refill
|
|
|
|
@example
|
|
@group
|
|
@@defspec foobar (@@var@{var@} [@@var@{from@} @@var@{to@}
|
|
[@@var@{inc@}]]) @@var@{body@}@@dots@{@}
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
The function is listed in the Command and Variable Index under
|
|
@samp{foobar}.@refill
|
|
|
|
@node deffnx, Def Cmds in Detail, Optional Arguments, Definition Commands
|
|
@section Two or More `First' Lines
|
|
@cindex Two `First' Lines for @code{@@deffn}
|
|
@cindex Grouping two definitions together
|
|
@cindex Definitions grouped together
|
|
@findex deffnx
|
|
|
|
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}.
|
|
The @code{@@deffnx} command works exactly like @code{@@deffn}
|
|
except that it does not generate extra vertical white space between it
|
|
and the preceding line.@refill
|
|
|
|
@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
|
|
|
|
Each definition command has an `x' form: @code{@@defunx},
|
|
@code{@@defvrx}, @code{@@deftypefunx}, etc.
|
|
|
|
The `x' forms work just like @code{@@itemx}; see @ref{itemx, , @code{@@itemx}}.
|
|
|
|
@node Def Cmds in Detail, Def Cmd Conventions, deffnx, Definition Commands
|
|
@section The Definition Commands
|
|
|
|
Texinfo provides more than a dozen definition commands, all of which
|
|
are described in this section.@refill
|
|
|
|
The definition commands automatically enter the name of the entity in
|
|
the appropriate index: for example, @code{@@deffn}, @code{@@defun},
|
|
and @code{@@defmac} enter function names in the index of functions;
|
|
@code{@@defvr} and @code{@@defvar} enter variable names in the index
|
|
of variables.@refill
|
|
|
|
Although the examples that follow mostly illustrate Lisp, the commands
|
|
can be used for other programming languages.@refill
|
|
|
|
@menu
|
|
* Functions Commands:: Commands for functions and similar entities.
|
|
* Variables Commands:: Commands for variables and similar entities.
|
|
* Typed Functions:: Commands for functions in typed languages.
|
|
* Typed Variables:: Commands for variables in typed languages.
|
|
* Abstract Objects:: Commands for object-oriented programming.
|
|
* Data Types:: The definition command for data types.
|
|
@end menu
|
|
|
|
@node Functions Commands, Variables Commands, Def Cmds in Detail, Def Cmds in Detail
|
|
@subsection Functions and Similar Entities
|
|
|
|
This section describes the commands for describing functions and similar
|
|
entities:@refill
|
|
|
|
@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
|
|
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.@refill
|
|
|
|
@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}.
|
|
|
|
@code{@@deffn} prints argument names such as @var{nchars} in italics or
|
|
upper case, as if @code{@@var} had been used, because we think of these
|
|
names as metasyntactic variables---they stand for the actual argument
|
|
values. 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.
|
|
|
|
The template for @code{@@deffn} is:
|
|
|
|
@example
|
|
@group
|
|
@@deffn @var{category} @var{name} @var{arguments}@dots{}
|
|
@var{body-of-definition}
|
|
@@end deffn
|
|
@end group
|
|
@end example
|
|
|
|
@findex defun
|
|
@item @@defun @var{name} @var{arguments}@dots{}
|
|
The @code{@@defun} command is the definition command for functions.
|
|
@code{@@defun} is equivalent to @samp{@@deffn Function
|
|
@dots{}}.@refill
|
|
|
|
@need 800
|
|
@noindent
|
|
For example,
|
|
|
|
@example
|
|
@group
|
|
@@defun set symbol new-value
|
|
Change the value of the symbol @@var@{symbol@}
|
|
to @@var@{new-value@}.
|
|
@@end defun
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
shows a rather terse definition for a function @code{set} whose
|
|
arguments are @var{symbol} and @var{new-value}. The argument names on
|
|
the @code{@@defun} line automatically appear in italics or upper case as
|
|
if they were enclosed in @code{@@var}. Terminate the definition with
|
|
@code{@@end defun} on a line of its own.@refill
|
|
|
|
The template is:
|
|
|
|
@example
|
|
@group
|
|
@@defun @var{function-name} @var{arguments}@dots{}
|
|
@var{body-of-definition}
|
|
@@end defun
|
|
@end group
|
|
@end example
|
|
|
|
@code{@@defun} creates an entry in the index of functions.
|
|
|
|
@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}.@refill
|
|
|
|
@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}.@refill
|
|
@end table
|
|
|
|
@node Variables Commands, Typed Functions, Functions Commands, Def Cmds in Detail
|
|
@subsection Variables and Similar Entities
|
|
|
|
Here are the commands for defining variables and similar
|
|
entities:@refill
|
|
|
|
@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.
|
|
|
|
Capitalize 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.@refill
|
|
|
|
The template is:
|
|
|
|
@example
|
|
@group
|
|
@@defvr @var{category} @var{name}
|
|
@var{body-of-definition}
|
|
@@end defvr
|
|
@end group
|
|
@end example
|
|
|
|
@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{}}.@refill
|
|
|
|
@need 750
|
|
For example:
|
|
|
|
@example
|
|
@group
|
|
@@defvar kill-ring
|
|
@dots{}
|
|
@@end defvar
|
|
@end group
|
|
@end example
|
|
|
|
The template is:
|
|
|
|
@example
|
|
@group
|
|
@@defvar @var{name}
|
|
@var{body-of-definition}
|
|
@@end defvar
|
|
@end group
|
|
@end example
|
|
|
|
@code{@@defvar} creates an entry in the index of variables for
|
|
@var{name}.@refill
|
|
|
|
@findex defopt
|
|
@item @@defopt @var{name}
|
|
@cindex User options, marking
|
|
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{}} and works like @code{@@defvar}.@refill
|
|
@end table
|
|
|
|
|
|
@node Typed Functions, Typed Variables, Variables Commands, Def Cmds in Detail
|
|
@subsection Functions in Typed Languages
|
|
|
|
The @code{@@deftypefn} command and its variations are for describing
|
|
functions in 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 are
|
|
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, the type of the returned value, the name of this
|
|
particular entity, and its arguments, if any.@refill
|
|
|
|
@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
|
|
|
|
@need 1000
|
|
@noindent
|
|
(where the text before the ``@dots{}'', shown above as two lines, would
|
|
actually be a single line in a real Texinfo file) produces the following
|
|
in Info:
|
|
|
|
@smallexample
|
|
@group
|
|
-- Library Function: int foobar (int FOO, float BAR)
|
|
@dots{}
|
|
@end group
|
|
@end smallexample
|
|
@iftex
|
|
|
|
In a printed manual, it produces:
|
|
|
|
@quotation
|
|
@deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
|
|
@dots{}
|
|
@end deftypefn
|
|
@end quotation
|
|
@end iftex
|
|
|
|
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}).@refill
|
|
|
|
The argument names that you write in @code{@@deftypefn} are not subject
|
|
to an implicit @code{@@var}---since the actual names of the arguments in
|
|
@code{@@deftypefn} are typically scattered among data type names and
|
|
keywords, Texinfo cannot find them without help. Instead, you must write
|
|
@code{@@var} explicitly around the argument names. In the example
|
|
above, the argument names are @samp{foo} and @samp{bar}.@refill
|
|
|
|
The template for @code{@@deftypefn} is:@refill
|
|
|
|
@example
|
|
@group
|
|
@@deftypefn @var{category} @var{data-type} @var{name} @var{arguments} @dots{}
|
|
@var{body-of-description}
|
|
@@end deftypefn
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
Note that if the @var{category} or @var{data type} is more than one
|
|
word then it must be enclosed in braces to make it a single argument.@refill
|
|
|
|
If you are describing a procedure in a language that has packages,
|
|
such as Ada, you might consider using @code{@@deftypefn} in a manner
|
|
somewhat contrary to the convention described in the preceding
|
|
paragraphs.@refill
|
|
|
|
@need 800
|
|
@noindent
|
|
For example:
|
|
|
|
@example
|
|
@group
|
|
@@deftypefn stacks private push
|
|
(@@var@{s@}:in out stack;
|
|
@@var@{n@}:in integer)
|
|
@dots{}
|
|
@@end deftypefn
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
(The @code{@@deftypefn} arguments are shown split into three lines, but
|
|
would be a single line in a real Texinfo file.)
|
|
|
|
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}.)@refill
|
|
|
|
@code{@@deftypefn} creates an entry in the index of functions for
|
|
@var{name}.@refill
|
|
|
|
@item @@deftypefun @var{data-type} @var{name} @var{arguments}@dots{}
|
|
@findex deftypefun
|
|
The @code{@@deftypefun} command is the specialized definition command
|
|
for functions in typed languages. The command is equivalent to
|
|
@samp{@@deftypefn Function @dots{}}.@refill
|
|
|
|
@need 800
|
|
@noindent
|
|
Thus,
|
|
|
|
@smallexample
|
|
@group
|
|
@@deftypefun int foobar (int @@var@{foo@}, float @@var@{bar@})
|
|
@dots{}
|
|
@@end deftypefun
|
|
@end group
|
|
@end smallexample
|
|
|
|
@noindent
|
|
produces the following in Info:
|
|
|
|
@example
|
|
@group
|
|
-- Function: int foobar (int FOO, float BAR)
|
|
@dots{}
|
|
@end group
|
|
@end example
|
|
@iftex
|
|
|
|
@need 800
|
|
@noindent
|
|
and the following in a printed manual:
|
|
|
|
@quotation
|
|
@deftypefun int foobar (int @var{foo}, float @var{bar})
|
|
@dots{}
|
|
@end deftypefun
|
|
@end quotation
|
|
@end iftex
|
|
|
|
@need 800
|
|
The template is:
|
|
|
|
@example
|
|
@group
|
|
@@deftypefun @var{type} @var{name} @var{arguments}@dots{}
|
|
@var{body-of-description}
|
|
@@end deftypefun
|
|
@end group
|
|
@end example
|
|
|
|
@code{@@deftypefun} creates an entry in the index of functions for
|
|
@var{name}.@refill
|
|
|
|
@end table
|
|
|
|
|
|
@node Typed Variables, Abstract Objects, Typed Functions, Def Cmds in Detail
|
|
@subsection 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}.@refill
|
|
|
|
@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.@refill
|
|
|
|
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.@refill
|
|
|
|
@need 800
|
|
@noindent
|
|
For example:
|
|
|
|
@example
|
|
@group
|
|
@@deftypevr @{Global Flag@} int enable
|
|
@dots{}
|
|
@@end deftypevr
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
produces the following in Info:
|
|
|
|
@example
|
|
@group
|
|
-- Global Flag: int enable
|
|
@dots{}
|
|
@end group
|
|
@end example
|
|
@iftex
|
|
|
|
@noindent
|
|
and the following in a printed manual:
|
|
|
|
@quotation
|
|
@deftypevr {Global Flag} int enable
|
|
@dots{}
|
|
@end deftypevr
|
|
@end quotation
|
|
@end iftex
|
|
|
|
@need 800
|
|
The template is:
|
|
|
|
@example
|
|
@@deftypevr @var{category} @var{data-type} @var{name}
|
|
@var{body-of-description}
|
|
@@end deftypevr
|
|
@end example
|
|
|
|
@code{@@deftypevr} creates an entry in the index of variables for
|
|
@var{name}.@refill
|
|
|
|
@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{}}.@refill
|
|
|
|
@need 800
|
|
@noindent
|
|
For example:
|
|
|
|
@example
|
|
@group
|
|
@@deftypevar int fubar
|
|
@dots{}
|
|
@@end deftypevar
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
produces the following in Info:
|
|
|
|
@example
|
|
@group
|
|
-- Variable: int fubar
|
|
@dots{}
|
|
@end group
|
|
@end example
|
|
@iftex
|
|
|
|
@need 800
|
|
@noindent
|
|
and the following in a printed manual:
|
|
|
|
@quotation
|
|
@deftypevar int fubar
|
|
@dots{}
|
|
@end deftypevar
|
|
@end quotation
|
|
@end iftex
|
|
|
|
@need 800
|
|
@noindent
|
|
The template is:
|
|
|
|
@example
|
|
@group
|
|
@@deftypevar @var{data-type} @var{name}
|
|
@var{body-of-description}
|
|
@@end deftypevar
|
|
@end group
|
|
@end example
|
|
|
|
@code{@@deftypevar} creates an entry in the index of variables for
|
|
@var{name}.@refill
|
|
@end table
|
|
|
|
@node Abstract Objects
|
|
@subsection 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.@refill
|
|
|
|
In a definition, if the name of a class is truly a name defined in the
|
|
programming system for a class, then you should write an @code{@@code}
|
|
around it. Otherwise, it is printed in the usual text font.@refill
|
|
|
|
@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. Thus,@refill
|
|
|
|
@example
|
|
@group
|
|
@@defcv @{Class Option@} Window border-pattern
|
|
@dots{}
|
|
@@end defcv
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
illustrates how you would write the first line of a definition of the
|
|
@code{border-pattern} class option of the class @code{Window}.@refill
|
|
|
|
The template is:
|
|
@example
|
|
@group
|
|
@@defcv @var{category} @var{class} @var{name}
|
|
@dots{}
|
|
@@end defcv
|
|
@end group
|
|
@end example
|
|
|
|
@code{@@defcv} 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{}}@refill
|
|
|
|
The template is:
|
|
@example
|
|
@group
|
|
@@defivar @var{class} @var{instance-variable-name}
|
|
@var{body-of-definition}
|
|
@@end defivar
|
|
@end group
|
|
@end example
|
|
|
|
@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 similar to
|
|
@code{@@defivar} with the addition of the @var{data-type} parameter to
|
|
specify the type of the instance variable. @code{@@deftypeivar} creates an
|
|
entry in the index of variables.
|
|
|
|
@findex defop
|
|
@item @@defop @var{category} @var{class} @var{name} @var{arguments}@dots{}
|
|
The @code{@@defop} command is the general definition command for
|
|
entities that may resemble methods in object-oriented programming.
|
|
These entities take arguments, as functions do, but are associated with
|
|
particular classes of objects.@refill
|
|
|
|
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.@refill
|
|
|
|
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.@refill
|
|
|
|
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:@refill
|
|
|
|
@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.@refill
|
|
|
|
The template is:
|
|
@example
|
|
@group
|
|
@@defop @var{category} @var{class} @var{name} @var{arguments}@dots{}
|
|
@var{body-of-definition}
|
|
@@end defop
|
|
@end group
|
|
@end example
|
|
|
|
@code{@@defop} creates an entry, such as `@code{expose} on
|
|
@code{windows}', in the index of functions.@refill
|
|
|
|
@findex deftypeop
|
|
@item @@deftypeop @var{category} @var{class} @var{data-type} @var{name} @var{arguments}@dots{}
|
|
The @code{@@deftypeop} command is the definition command for typed
|
|
operations in object-oriented programming. It is similar to
|
|
@code{@@defop} with the addition of the @var{data-type} parameter to
|
|
specify the return type of the method. @code{@@deftypeop} creates an
|
|
entry in the index of functions.
|
|
|
|
@item @@defmethod @var{class} @var{name} @var{arguments}@dots{}
|
|
@findex defmethod
|
|
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.@refill
|
|
|
|
@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.@refill
|
|
|
|
The template is:
|
|
|
|
@example
|
|
@group
|
|
@@defmethod @var{class} @var{method-name} @var{arguments}@dots{}
|
|
@var{body-of-definition}
|
|
@@end defmethod
|
|
@end group
|
|
@end example
|
|
|
|
@code{@@defmethod} creates an entry, such as `@code{bar-method} on
|
|
@code{bar-class}', in the index of functions.@refill
|
|
|
|
|
|
@item @@deftypemethod @var{class} @var{data-type} @var{name} @var{arguments}@dots{}
|
|
@findex defmethod
|
|
The @code{@@deftypemethod} command is the definition command for methods
|
|
in object-oriented 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 the return type of the method.
|
|
|
|
@end table
|
|
|
|
|
|
@node Data Types
|
|
@subsection Data Types
|
|
|
|
Here is the command for data types:@refill
|
|
|
|
@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.)@refill
|
|
|
|
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}.@refill
|
|
|
|
@example
|
|
@group
|
|
@@deftp @{Data type@} pair car cdr
|
|
@dots{}
|
|
@@end deftp
|
|
@end group
|
|
@end example
|
|
|
|
@need 950
|
|
The template is:
|
|
|
|
@example
|
|
@group
|
|
@@deftp @var{category} @var{name-of-type} @var{attributes}@dots{}
|
|
@var{body-of-definition}
|
|
@@end deftp
|
|
@end group
|
|
@end example
|
|
|
|
@code{@@deftp} creates an entry in the index of data types.
|
|
@end table
|
|
|
|
@node Def Cmd Conventions, Sample Function Definition, Def Cmds in Detail, Definition Commands
|
|
@section Conventions for Writing Definitions
|
|
@cindex Definition conventions
|
|
@cindex Conventions for writing definitions
|
|
|
|
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.@refill
|
|
|
|
@node Sample Function Definition, , Def Cmd Conventions, Definition Commands
|
|
@section A Sample Function Definition
|
|
@cindex Function definitions
|
|
@cindex Command definitions
|
|
@cindex Macro definitions
|
|
@cindex Sample function definition
|
|
|
|
A function definition uses the @code{@@defun} and @code{@@end defun}
|
|
commands. The name of the function follows immediately after the
|
|
@code{@@defun} command and it is followed, on the same line, by the
|
|
parameter list.@refill
|
|
|
|
Here is a definition from @ref{Calling Functions,,, elisp, The GNU Emacs
|
|
Lisp Reference Manual}.
|
|
|
|
@quotation
|
|
@defun apply function &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}.@refill
|
|
@end defun
|
|
@end quotation
|
|
|
|
@need 1200
|
|
In the Texinfo source file, this example looks like this:
|
|
|
|
@example
|
|
@group
|
|
@@defun apply function &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 and Variable
|
|
Index under @code{apply}.@refill
|
|
|
|
Ordinary variables and user options are described using a format like
|
|
that for functions except that variables do not take arguments.
|
|
|
|
|
|
@node Conditionals
|
|
@chapter Conditionally Visible Text
|
|
@cindex Conditionally visible text
|
|
@cindex Text, conditionally visible
|
|
@cindex Visibility of conditional text
|
|
@cindex If text conditionally visible
|
|
|
|
Sometimes it is good to use different text for different output formats.
|
|
For example, you can use the @dfn{conditional commands} to specify
|
|
different text for the printed manual and the Info output.
|
|
|
|
Conditional commands may not be nested.
|
|
|
|
The conditional commands comprise the following categories.
|
|
|
|
@itemize @bullet
|
|
@item Commands for HTML, Info, or @TeX{}.
|
|
@item Commands for not HTML, Info, or @TeX{}.
|
|
@item Raw @TeX{} or HTML commands.
|
|
@item
|
|
Substituting text for all formats, and testing if a flag is set or clear.
|
|
@end itemize
|
|
|
|
@menu
|
|
* Conditional Commands:: Specifying text for HTML, Info, or @TeX{}.
|
|
* Conditional Not Commands:: Specifying text for not HTML, Info, or @TeX{}.
|
|
* Raw Formatter Commands:: Using raw @TeX{} or HTML commands.
|
|
* set clear value:: Designating which text to format (for
|
|
all output formats); and how to set a
|
|
flag to a string that you can insert.
|
|
@end menu
|
|
|
|
|
|
@node Conditional Commands
|
|
@section Conditional Commands
|
|
|
|
Texinfo has an @code{@@if@dots{}} 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 by @TeX{}
|
|
when it typesets the printed manual. The segment of text appears only
|
|
in the Info file and (for historical compatibility) the plain text
|
|
output. The @code{@@ifinfo} command should appear on a line by itself;
|
|
end the Info-only text with a line containing @code{@@end ifinfo} by
|
|
itself.
|
|
|
|
@findex ifhtml
|
|
@findex ifplaintext
|
|
@findex iftex
|
|
@findex ifxml
|
|
The @code{@@iftex} and @code{@@end iftex} commands are analogous to the
|
|
@code{@@ifinfo} and @code{@@end ifinfo} commands; they specify text that
|
|
will appear in the printed manual but not in the Info file. Likewise
|
|
for @code{@@ifhtml} and @code{@@end ifhtml}, which specify text to
|
|
appear only in HTML output. And for @code{@@ifplaintext} and
|
|
@code{@@end ifplaintext}, which specify text to appear only in plain
|
|
text output. And for @code{@@ifxml} and
|
|
@code{@@end ifxml}, for the XML output.
|
|
|
|
For example,
|
|
|
|
@example
|
|
@@iftex
|
|
This text will appear only in the printed manual.
|
|
@@end iftex
|
|
@@ifinfo
|
|
However, this text will appear only in Info (or plain text).
|
|
@@end ifinfo
|
|
@@ifhtml
|
|
And this text will only appear in HTML.
|
|
@@end ifhtml
|
|
@@ifplaintext
|
|
Whereas this text will only appear in plain text.
|
|
@@end ifplaintext
|
|
@@ifxml
|
|
And this will only appear in XML output.
|
|
@@end ifxml
|
|
@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 (or plain text).
|
|
@end ifinfo
|
|
@ifhtml
|
|
And this text will only appear in HTML.
|
|
@end ifhtml
|
|
@ifplaintext
|
|
Whereas this text will only appear in plain text.
|
|
@end ifplaintext
|
|
@ifxml
|
|
And this will only appear in XML output.
|
|
@end ifxml
|
|
|
|
@noindent
|
|
Notice that you only see one of the input lines, depending on which
|
|
version of the manual you are reading.
|
|
|
|
|
|
@node Conditional Not Commands
|
|
@section Conditional Not Commands
|
|
@findex ifnothtml
|
|
@findex ifnotinfo
|
|
@findex ifnotplaintext
|
|
@findex ifnottex
|
|
@findex ifnotxml
|
|
|
|
You can specify text to be included in any output format @emph{other}
|
|
than some given one with the @code{@@ifnot@dots{}} commands:
|
|
@example
|
|
@@ifnothtml @dots{} @@end ifnothtml
|
|
@@ifnotinfo @dots{} @@end ifnotinfo
|
|
@@ifnotplaintext @dots{} @@end ifnotplaintext
|
|
@@ifnottex @dots{} @@end ifnottex
|
|
@@ifnotxml @dots{} @@end ifnotxml
|
|
@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.
|
|
|
|
With 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}).
|
|
|
|
|
|
@node 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 HTML, including raw
|
|
@cindex XML, including raw
|
|
@cindex plain @TeX{}
|
|
|
|
Inside a region delineated by @code{@@iftex} and @code{@@end iftex}, you
|
|
can embed some raw @TeX{} commands. Info will ignore these commands
|
|
since they are only in that part of the file which is seen by @TeX{}.
|
|
You can write the @TeX{} commands as you would write them in a normal
|
|
@TeX{} file, except that you must replace the @samp{\} used by @TeX{}
|
|
with an @samp{@@}. For example, in the @code{@@titlepage} section of a
|
|
Texinfo file, you can use the @TeX{} command @code{@@vskip} to format
|
|
the copyright page. (The @code{@@titlepage} command causes Info to
|
|
ignore the region automatically, as it does with the @code{@@iftex}
|
|
command.)
|
|
|
|
However, many features of plain @TeX{} will not work, as they are
|
|
overridden by Texinfo features.
|
|
|
|
@findex 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. (The @code{@@tex} command also causes Info to ignore the
|
|
region, like the @code{@@iftex} command.) The sole exception is that the
|
|
@code{@@} character still introduces a command, so that @code{@@end tex}
|
|
can be recognized properly.
|
|
|
|
@cindex Mathematical expressions
|
|
For example, here is a mathematical expression 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 Info, you will not see the equation that appears
|
|
in the printed manual.
|
|
@iftex
|
|
In a printed manual, the above expression looks like
|
|
this:
|
|
@end iftex
|
|
|
|
@tex
|
|
$$ \chi^2 = \sum_{i=1}^N
|
|
\left(y_i - (a + b x_i)
|
|
\over \sigma_i\right)^2 $$
|
|
@end tex
|
|
|
|
@findex ifhtml
|
|
@findex html
|
|
Analogously, you can use @code{@@ifhtml @dots{} @@end ifhtml} to delimit
|
|
a region to be included in HTML output only, and @code{@@html @dots{}
|
|
@@end html} for a region of raw HTML (again, except that @code{@@} is
|
|
still the escape character, so the @code{@@end} command can be
|
|
recognized.)
|
|
|
|
@findex ifxml
|
|
@findex xml
|
|
Analogously, you can use @code{@@ifxml @dots{} @@end ifxml} to delimit
|
|
a region to be included in XML output only, and @code{@@xml @dots{}
|
|
@@end xml} for a region of raw XML (again, except that @code{@@} is
|
|
still the escape character, so the @code{@@end} command can be
|
|
recognized.)
|
|
|
|
|
|
@node set clear value
|
|
@section @code{@@set}, @code{@@clear}, and @code{@@value}
|
|
|
|
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.@refill
|
|
|
|
Brief descriptions:
|
|
|
|
@table @code
|
|
@item @@set @var{flag} [@var{value}]
|
|
Set the variable @var{flag}, to the optional @var{value} if specifed.
|
|
|
|
@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 @@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.
|
|
@end table
|
|
|
|
@menu
|
|
* set value:: Expand a flag variable to a string.
|
|
* ifset ifclear:: Format a region if a flag is set.
|
|
* value Example:: An easy way to update edition information.
|
|
@end menu
|
|
|
|
|
|
@node set value
|
|
@subsection @code{@@set} and @code{@@value}
|
|
@findex value
|
|
|
|
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} is an identifier. In general, it is best to use only
|
|
letters and numerals in a flag name, not @samp{-} or @samp{_}---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.
|
|
|
|
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 formatters then replace an @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 formatters convert this:
|
|
|
|
@example
|
|
@group
|
|
@@value@{foo@}
|
|
@exdent @r{to this:}
|
|
This is a string.
|
|
@end group
|
|
@end example
|
|
|
|
You can write an @code{@@value} command within a paragraph; but you
|
|
must write an @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:@refill
|
|
|
|
@example
|
|
@@set how-much very, very, very
|
|
@end example
|
|
|
|
@noindent
|
|
then the formatters transform
|
|
|
|
@example
|
|
@group
|
|
It is a @@value@{how-much@} wet day.
|
|
@exdent @r{into}
|
|
It is a very, very, very wet day.
|
|
@end group
|
|
@end example
|
|
|
|
If you write
|
|
|
|
@example
|
|
@@clear how-much
|
|
@end example
|
|
|
|
@noindent
|
|
then the formatters transform
|
|
|
|
@example
|
|
@group
|
|
It is a @@value@{how-much@} wet day.
|
|
@exdent @r{into}
|
|
It is a @{No value for "how-much"@} wet day.
|
|
@end group
|
|
@end example
|
|
|
|
|
|
@node ifset ifclear
|
|
@subsection @code{@@ifset} and @code{@@ifclear}
|
|
|
|
@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 either
|
|
printed or Info 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; in both
|
|
printed and Info output, 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 an @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 value Example
|
|
@subsection @code{@@value} Example
|
|
|
|
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 an example of this same principle can work with
|
|
Automake distributions, and full texts.
|
|
|
|
Here is an example adapted from @ref{Top,, Overview, 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{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
|
|
@@titlepage
|
|
@@title GNU Make
|
|
@@subtitle A Program for Directing Recompilation
|
|
@@subtitle Edition @@value@{EDITION@}, @dots{}
|
|
@@subtitle @@value@{UPDATE-MONTH@}
|
|
@@page
|
|
@@insertcopying
|
|
@dots{}
|
|
@@end titlepage
|
|
@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
|
|
|
|
@@insertcopying
|
|
@dots{}
|
|
@@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 Internationalization
|
|
@chapter Internationalization
|
|
|
|
@cindex Internationalization
|
|
Texinfo has some support for writing in languages other than English,
|
|
although this area still needs considerable work.
|
|
|
|
For a list of the various accented and special characters Texinfo
|
|
supports, see @ref{Inserting Accents}.
|
|
|
|
@menu
|
|
* documentlanguage:: Declaring the current language.
|
|
* documentencoding:: Declaring the input encoding.
|
|
@end menu
|
|
|
|
|
|
@node documentlanguage
|
|
@section @code{@@documentlanguage @var{cc}}: Set the Document Language
|
|
|
|
@findex documentlanguage
|
|
@cindex Language, declaring
|
|
@cindex Document language, declaring
|
|
|
|
The @code{@@documentlanguage} command declares the current document
|
|
language. Write it on a line by itself, with a two-letter ISO-639
|
|
language code following (list is included below). If you have a
|
|
multilingual document, the intent is to be able to use this command
|
|
multiple times, to declare each language change. If the command is not
|
|
used at all, the default is @code{en} for English.
|
|
|
|
@cindex @file{txi-@var{cc}.tex}
|
|
At present, this command is ignored in Info and HTML output. For
|
|
@TeX{}, it causes the file @file{txi-@var{cc}.tex} to be read (if it
|
|
exists). Such a file appropriately redefines the various English words
|
|
used in @TeX{} output, such as `Chapter', `See', and so on.
|
|
|
|
@cindex Hyphenation patterns, language-dependent
|
|
It would be good if this command also changed @TeX{}'s ideas of the
|
|
current hyphenation patterns (via the @TeX{} primitive
|
|
@code{\language}), but this is unfortunately not currently implemented.
|
|
|
|
@cindex ISO 639 codes
|
|
@cindex Language codes
|
|
Hereare the valid language codes, from ISO-639.
|
|
|
|
@multitable @columnfractions .07 .26 .07 .26 .07 .26
|
|
@item
|
|
@code{aa} @tab Afar @tab
|
|
@code{ab} @tab Abkhazian @tab
|
|
@code{af} @tab Afrikaans
|
|
@item
|
|
@code{am} @tab Amharic @tab
|
|
@code{ar} @tab Arabic @tab
|
|
@code{as} @tab Assamese
|
|
@item
|
|
@code{ay} @tab Aymara @tab
|
|
@code{az} @tab Azerbaijani @tab
|
|
@code{ba} @tab Bashkir
|
|
@item
|
|
@code{be} @tab Byelorussian @tab
|
|
@code{bg} @tab Bulgarian @tab
|
|
@code{bh} @tab Bihari
|
|
@item
|
|
@code{bi} @tab Bislama @tab
|
|
@code{bn} @tab Bengali; Bangla @tab
|
|
@code{bo} @tab Tibetan
|
|
@item
|
|
@code{br} @tab Breton @tab
|
|
@code{ca} @tab Catalan @tab
|
|
@code{co} @tab Corsican
|
|
@item
|
|
@code{cs} @tab Czech @tab
|
|
@code{cy} @tab Welsh @tab
|
|
@code{da} @tab Danish
|
|
@item
|
|
@code{de} @tab German @tab
|
|
@code{dz} @tab Bhutani @tab
|
|
@code{el} @tab Greek
|
|
@item
|
|
@code{en} @tab English @tab
|
|
@code{eo} @tab Esperanto @tab
|
|
@code{es} @tab Spanish
|
|
@item
|
|
@code{et} @tab Estonian @tab
|
|
@code{eu} @tab Basque @tab
|
|
@code{fa} @tab Persian
|
|
@item
|
|
@code{fi} @tab Finnish @tab
|
|
@code{fj} @tab Fiji @tab
|
|
@code{fo} @tab Faroese
|
|
@item
|
|
@code{fr} @tab French @tab
|
|
@code{fy} @tab Frisian @tab
|
|
@code{ga} @tab Irish
|
|
@item
|
|
@code{gd} @tab Scots Gaelic @tab
|
|
@code{gl} @tab Galician @tab
|
|
@code{gn} @tab Guarani
|
|
@item
|
|
@code{gu} @tab Gujarati @tab
|
|
@code{ha} @tab Hausa @tab
|
|
@code{he} @tab Hebrew
|
|
@item
|
|
@code{hi} @tab Hindi @tab
|
|
@code{hr} @tab Croatian @tab
|
|
@code{hu} @tab Hungarian
|
|
@item
|
|
@code{hy} @tab Armenian @tab
|
|
@code{ia} @tab Interlingua @tab
|
|
@code{id} @tab Indonesian
|
|
@item
|
|
@code{ie} @tab Interlingue @tab
|
|
@code{ik} @tab Inupiak @tab
|
|
@code{is} @tab Icelandic
|
|
@item
|
|
@code{it} @tab Italian @tab
|
|
@code{iu} @tab Inuktitut @tab
|
|
@code{ja} @tab Japanese
|
|
@item
|
|
@code{jw} @tab Javanese @tab
|
|
@code{ka} @tab Georgian @tab
|
|
@code{kk} @tab Kazakh
|
|
@item
|
|
@code{kl} @tab Greenlandic @tab
|
|
@code{km} @tab Cambodian @tab
|
|
@code{kn} @tab Kannada
|
|
@item
|
|
@code{ks} @tab Kashmiri @tab
|
|
@code{ko} @tab Korean @tab
|
|
@code{ku} @tab Kurdish
|
|
@item
|
|
@code{ky} @tab Kirghiz @tab
|
|
@code{la} @tab Latin @tab
|
|
@code{ln} @tab Lingala
|
|
@item
|
|
@code{lt} @tab Lithuanian @tab
|
|
@code{lo} @tab Laothian @tab
|
|
@code{lv} @tab Latvian, Lettish
|
|
@item
|
|
@code{mg} @tab Malagasy @tab
|
|
@code{mi} @tab Maori @tab
|
|
@code{mk} @tab Macedonian
|
|
@item
|
|
@code{ml} @tab Malayalam @tab
|
|
@code{mn} @tab Mongolian @tab
|
|
@code{mo} @tab Moldavian
|
|
@item
|
|
@code{mr} @tab Marathi @tab
|
|
@code{ms} @tab Malay @tab
|
|
@code{mt} @tab Maltese
|
|
@item
|
|
@code{my} @tab Burmese @tab
|
|
@code{na} @tab Nauru @tab
|
|
@code{ne} @tab Nepali
|
|
@item
|
|
@code{nl} @tab Dutch @tab
|
|
@code{no} @tab Norwegian @tab
|
|
@code{oc} @tab Occitan
|
|
@item
|
|
@code{om} @tab (Afan) Oromo @tab
|
|
@code{or} @tab Oriya @tab
|
|
@code{pa} @tab Punjabi
|
|
@item
|
|
@code{pl} @tab Polish @tab
|
|
@code{ps} @tab Pashto, Pushto @tab
|
|
@code{pt} @tab Portuguese
|
|
@item
|
|
@code{qu} @tab Quechua @tab
|
|
@code{rm} @tab Rhaeto-Romance @tab
|
|
@code{rn} @tab Kirundi
|
|
@item
|
|
@code{ro} @tab Romanian @tab
|
|
@code{ru} @tab Russian @tab
|
|
@code{rw} @tab Kinyarwanda
|
|
@item
|
|
@code{sa} @tab Sanskrit @tab
|
|
@code{sd} @tab Sindhi @tab
|
|
@code{sg} @tab Sangro
|
|
@item
|
|
@code{sh} @tab Serbo-Croatian @tab
|
|
@code{si} @tab Sinhalese @tab
|
|
@code{sk} @tab Slovak
|
|
@item
|
|
@code{sl} @tab Slovenian @tab
|
|
@code{sm} @tab Samoan @tab
|
|
@code{sn} @tab Shona
|
|
@item
|
|
@code{so} @tab Somali @tab
|
|
@code{sq} @tab Albanian @tab
|
|
@code{sr} @tab Serbian
|
|
@item
|
|
@code{ss} @tab Siswati @tab
|
|
@code{st} @tab Sesotho @tab
|
|
@code{su} @tab Sundanese
|
|
@item
|
|
@code{sv} @tab Swedish @tab
|
|
@code{sw} @tab Swahili @tab
|
|
@code{ta} @tab Tamil
|
|
@item
|
|
@code{te} @tab Telugu @tab
|
|
@code{tg} @tab Tajik @tab
|
|
@code{th} @tab Thai
|
|
@item
|
|
@code{ti} @tab Tigrinya @tab
|
|
@code{tk} @tab Turkmen @tab
|
|
@code{tl} @tab Tagalog
|
|
@item
|
|
@code{tn} @tab Setswana @tab
|
|
@code{to} @tab Tonga @tab
|
|
@code{tr} @tab Turkish
|
|
@item
|
|
@code{ts} @tab Tsonga @tab
|
|
@code{tt} @tab Tatar @tab
|
|
@code{tw} @tab Twi
|
|
@item
|
|
@code{ug} @tab Uighur @tab
|
|
@code{uk} @tab Ukrainian @tab
|
|
@code{ur} @tab Urdu
|
|
@item
|
|
@code{uz} @tab Uzbek @tab
|
|
@code{vi} @tab Vietnamese @tab
|
|
@code{vo} @tab Volapuk
|
|
@item
|
|
@code{wo} @tab Wolof @tab
|
|
@code{xh} @tab Xhosa @tab
|
|
@code{yi} @tab Yiddish
|
|
@item
|
|
@code{yo} @tab Yoruba @tab
|
|
@code{za} @tab Zhuang @tab
|
|
@code{zh} @tab Chinese
|
|
@item
|
|
@code{zu} @tab Zulu
|
|
@end multitable
|
|
|
|
|
|
@node documentencoding
|
|
@section @code{@@documentencoding @var{enc}}: Set Input Encoding
|
|
|
|
@findex documentencoding
|
|
@cindex Encoding, declaring
|
|
@cindex Input encoding, declaring
|
|
@cindex Document input encoding
|
|
|
|
The @code{@@documentencoding} command declares the input document
|
|
encoding. Write it on a line by itself, with a valid encoding
|
|
specification following, such as @samp{ISO-8859-1}.
|
|
|
|
@cindex http-equiv, and charset
|
|
@cindex meta HTML tag, and charset
|
|
At present, this is used only in HTML output from @code{makeinfo}. If a
|
|
document encoding @var{enc} is specified, it is used in a
|
|
@samp{<meta>} tag included in the @samp{<head>} of the output:
|
|
|
|
@example
|
|
<meta http-equiv="Content-Type" content="text/html;
|
|
charset=@var{enc}">
|
|
@end example
|
|
|
|
|
|
@node Defining New Texinfo Commands
|
|
@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:
|
|
|
|
@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 of the manual
|
|
(@pxref{Def Cmd Template}).
|
|
|
|
@item
|
|
@samp{@@alias} is a convenient way to define a new name for an existing
|
|
command.
|
|
|
|
@item
|
|
@samp{@@definfoenclose} allows you to define new commands with
|
|
customized output in the Info file.
|
|
|
|
@end itemize
|
|
|
|
@menu
|
|
* Defining Macros:: Defining and undefining new commands.
|
|
* Invoking Macros:: Using a macro, once you've defined it.
|
|
* Macro Details:: Beyond basic macro usage.
|
|
* alias:: Command aliases.
|
|
* definfoenclose:: Customized highlighting.
|
|
@end menu
|
|
|
|
|
|
@node Defining Macros
|
|
@section Defining Macros
|
|
@cindex Defining macros
|
|
@cindex Macro definitions
|
|
|
|
@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).
|
|
|
|
For a macro to work with @TeX{}, @var{macroname} must consist entirely
|
|
of letters: no digits, hyphens, underscores, or other special characters.
|
|
|
|
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
|
|
@cindex Mutually recursive macros
|
|
@cindex Recursion, mutual
|
|
The definition or @dfn{body} of the macro can contain most Texinfo
|
|
commands, including previously-defined macros. Not-yet-defined macro
|
|
invocations are not allowed; thus, it is not possible to have mutually
|
|
recursive Texinfo macros. Also, 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 newlines 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
|
|
@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 use
|
|
(@dfn{invoke}) it in your document like this:
|
|
|
|
@example
|
|
@@@var{macroname} @{@var{arg1}, @var{arg2}, @dots{}@}
|
|
@end example
|
|
|
|
@noindent and the result will be just 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 (but not the definition), even
|
|
when the macro takes no arguments, consistent with all 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
|
|
@cindex Braces, in macro arguments
|
|
To insert a comma, brace, or backslash in an argument, prepend a
|
|
backslash, as in
|
|
|
|
@example
|
|
@@@var{macname} @{\\\@{\@}\,@}
|
|
@end example
|
|
|
|
@noindent
|
|
which will pass the (almost certainly error-producing) argument
|
|
@samp{\@{@},} to @var{macname}. However, commas in parameters, even
|
|
if escaped by a backslash, might cause trouble in @TeX{}.
|
|
|
|
If the macro is defined to take a single argument, and is invoked
|
|
without any braces, the entire rest of the line after the macro name is
|
|
supplied as the argument. For example:
|
|
|
|
@example
|
|
@@macro bar @{p@}
|
|
Twice: \p\ & \p\.
|
|
@@end macro
|
|
@@bar aah
|
|
@end example
|
|
|
|
@noindent produces:
|
|
|
|
@c Sorry for cheating, but let's not require macros to process the manual.
|
|
@display
|
|
Twice: aah & aah.
|
|
@end display
|
|
|
|
If the macro is defined to take a single argument, and is invoked with
|
|
braces, the braced text is passed as the argument, regardless of
|
|
commas. For example:
|
|
|
|
@example
|
|
@@macro bar @{p@}
|
|
Twice: \p\ & \p\.
|
|
@@end macro
|
|
@@bar@{a,b@}
|
|
@end example
|
|
|
|
@noindent produces:
|
|
|
|
@display
|
|
Twice: a,b & a,b.
|
|
@end display
|
|
|
|
|
|
@node Macro Details
|
|
@section Macro Details
|
|
@cindex Macro details
|
|
@cindex Details of macro usage
|
|
|
|
Due to unavoidable limitations, certain macro-related constructs cause
|
|
problems with @TeX{}. If you get macro-related errors when producing
|
|
the printed version of a manual, try expanding the macros with
|
|
@command{makeinfo} by invoking @command{texi2dvi} with the @samp{-E}
|
|
option (@ref{Format with texi2dvi}).
|
|
|
|
@itemize @bullet
|
|
@item
|
|
All macros are expanded inside at least one @TeX{} group. This means
|
|
that @code{@@set} and other such commands have no effect inside a
|
|
macro.
|
|
|
|
@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.
|
|
|
|
@item
|
|
Commas in macro arguments, even if escaped by a backslash, don't
|
|
always work.
|
|
|
|
@item
|
|
It is best to avoid comments inside macro definitions.
|
|
|
|
@item
|
|
Macro arguments cannot cross lines.
|
|
|
|
@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
|
|
|
|
|
|
@node alias
|
|
@section @samp{@@alias @var{new}=@var{existing}}
|
|
@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 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 ignored. 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 due to vagaries of argument
|
|
parsing. Also, aliases are much simpler to define than macros. So the
|
|
command is not redundant. (It was also heavily used in the Jargon File!)
|
|
|
|
Aliases must not be recursive, directly or indirectly.
|
|
|
|
@node definfoenclose
|
|
@section @samp{definfoenclose}: Customized Highlighting
|
|
@cindex Highlighting, customized
|
|
@cindex Customized highlighting
|
|
@findex definfoenclose
|
|
|
|
A @code{@@definfoenclose} command may be used to define a highlighting
|
|
command for Info, but not for @TeX{}. A command defined using
|
|
@code{@@definfoenclose} marks text by enclosing it in strings that
|
|
precede and follow the text. You can use this to get closer control of
|
|
your Info output.
|
|
|
|
Presumably, if you define a command with @code{@@definfoenclose} for Info,
|
|
you will create a corresponding command for @TeX{}, either in
|
|
@file{texinfo.tex}, @file{texinfo.cnf}, or within an @samp{@@iftex} in
|
|
your document.
|
|
|
|
Write a @code{@@definfoenclose} command on a line and follow it with
|
|
three arguments separated by commas. The first argument to
|
|
@code{@@definfoenclose} is the @@-command name (without the @code{@@});
|
|
the second argument is the Info start delimiter string; and the third
|
|
argument is the Info end delimiter string. The latter two arguments
|
|
enclose the highlighted text in the Info file. 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 Info
|
|
formatting commands will naturally misinterpret the end delimiter string
|
|
you intended as the start delimiter string.
|
|
|
|
If you do a @code{@@definfoenclose} on the name of a pre-defined macro
|
|
(such as @code{@@emph}, @code{@@strong}, @code{@@t}, or @code{@@i}), the
|
|
enclosure definition will override the built-in definition.
|
|
|
|
An enclosure command defined this way takes one argument in braces; this
|
|
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
|
|
formatting 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.
|
|
|
|
Also, for @TeX{} formatting, you could write
|
|
|
|
@example
|
|
@@iftex
|
|
@@global@@let@@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 @code{texinfo-format-buffer} or @code{texinfo-format-region}. The
|
|
@code{@@definfoenclose} command need not be within @samp{@@ifinfo}, but
|
|
the raw @TeX{} commands do need to be in @samp{@@iftex}.
|
|
|
|
@findex headword
|
|
Here is another example: write
|
|
|
|
@example
|
|
@@definfoenclose headword, , :
|
|
@end example
|
|
|
|
@noindent
|
|
near the beginning of the file, to define @code{@@headword} as an Info
|
|
formatting command that inserts nothing before and a colon after the
|
|
argument to @code{@@headword}.
|
|
|
|
@samp{@@definfoenclose} definitions must not be recursive, directly or
|
|
indirectly.
|
|
|
|
|
|
@node Hardcopy
|
|
@chapter Formatting and Printing Hardcopy
|
|
@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
|
|
@pindex texindex
|
|
|
|
There are three major shell commands for making a printed manual from a
|
|
Texinfo file: one for converting the Texinfo file into a file that will be
|
|
printed, a second for sorting indices, and a third for printing the
|
|
formatted document. When you use the shell commands, you can either
|
|
work directly in the operating system shell or work within a shell
|
|
inside GNU Emacs.
|
|
|
|
If you are using GNU Emacs, you can use commands provided by Texinfo
|
|
mode instead of shell commands. In addition to the three commands to
|
|
format a file, sort the indices, and print the result, Texinfo mode
|
|
offers key bindings for commands to recenter the output buffer, show the
|
|
print queue, and delete a job from the print queue.
|
|
|
|
@menu
|
|
* Use TeX:: Use @TeX{} to format for hardcopy.
|
|
* Format with tex/texindex:: How to format with explicit shell commands.
|
|
* Format with texi2dvi:: A simpler way to format.
|
|
* Print with lpr:: How to print.
|
|
* Within Emacs:: How to format and print from an Emacs shell.
|
|
* Texinfo Mode Printing:: How to format and print in Texinfo mode.
|
|
* Compile-Command:: How to print using Emacs's compile command.
|
|
* Requirements Summary:: @TeX{} formatting requirements summary.
|
|
* Preparing for TeX:: What to do before you use @TeX{}.
|
|
* Overfull hboxes:: What are and what to do with overfull hboxes.
|
|
* smallbook:: How to print small format books and manuals.
|
|
* A4 Paper:: How to print on A4 or A5 paper.
|
|
* pagesizes:: How to print with customized page sizes.
|
|
* Cropmarks and Magnification:: How to print marks to indicate the size
|
|
of pages and how to print scaled up output.
|
|
* PDF Output:: Portable Document Format output.
|
|
@end menu
|
|
|
|
@node Use TeX
|
|
@section Use @TeX{}
|
|
|
|
The typesetting program called @TeX{} is used for formatting a Texinfo
|
|
file. @TeX{} is a very powerful typesetting program and, if used correctly,
|
|
does an exceptionally good job. (@xref{Obtaining TeX, , How to Obtain
|
|
@TeX{}}, for information on how to obtain @TeX{}.)
|
|
|
|
The standalone @code{makeinfo} program and Emacs functions
|
|
@code{texinfo-format-region} and @code{texinfo-format-buffer} commands
|
|
read the very same @@-commands in the Texinfo file as does @TeX{}, but
|
|
process them differently to make an Info file (@pxref{Creating an Info
|
|
File}).
|
|
|
|
|
|
@node Format with tex/texindex
|
|
@section Format with @code{tex} and @code{texindex}
|
|
@cindex Shell formatting with @code{tex} and @code{texindex}
|
|
@cindex Formatting with @code{tex} and @code{texindex}
|
|
@cindex DVI file
|
|
|
|
Format the Texinfo file with the shell command @code{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 (see the following sections).
|
|
|
|
@pindex texindex
|
|
The @code{tex} formatting command itself does not sort the indices; it
|
|
writes an output file of unsorted index data. (The @code{texi2dvi}
|
|
command automatically generates indices; @pxref{Format with texi2dvi,,
|
|
Format with @code{texi2dvi}}.) To generate a printed index after
|
|
running the @code{tex} command, you first need a sorted index to work
|
|
from. The @code{texindex} command sorts indices. (The source file
|
|
@file{texindex.c} comes as part of the standard Texinfo distribution,
|
|
among other places.)@refill
|
|
|
|
@cindex Names of index files
|
|
@cindex Index file names
|
|
The @code{tex} formatting command outputs unsorted index files under
|
|
names that obey a standard convention: the name of your main input file
|
|
with any @samp{.tex} (or similar, @pxref{tex invocation,,, web2c,
|
|
Web2c}) extension removed, followed by the two letter names of indices.
|
|
For example, the raw index output files for the input file
|
|
@file{foo.texinfo} would be @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 @code{texindex}.
|
|
|
|
@need 1000
|
|
@cindex Wildcards
|
|
@cindex Globbing
|
|
Instead of specifying all the unsorted index file names explicitly, you
|
|
can use @samp{??} as shell wildcards and give the command in this
|
|
form:
|
|
|
|
@example
|
|
texindex foo.??
|
|
@end example
|
|
|
|
@noindent
|
|
This command will run @code{texindex} on all the unsorted index files,
|
|
including any that you have defined yourself using @code{@@defindex}
|
|
or @code{@@defcodeindex}. (You may execute @samp{texindex foo.??}
|
|
even if there are similarly named files with two letter extensions
|
|
that are not index files, such as @samp{foo.el}. The @code{texindex}
|
|
command reports but otherwise ignores such files.)
|
|
|
|
For each file specified, @code{texindex} generates a sorted index file
|
|
whose name is made by appending @samp{s} to the input file name. The
|
|
@code{@@printindex} command looks for a file with that name
|
|
(@pxref{Printing Indices & Menus}). @code{texindex} does not alter the
|
|
raw index output file.
|
|
|
|
After you have sorted the indices, you need to rerun the @code{tex}
|
|
formatting command on the Texinfo file. This regenerates the DVI file,
|
|
this time with up-to-date index entries.
|
|
|
|
Finally, you may need to run @code{tex} one more time, to get the page
|
|
numbers in the cross-references correct.
|
|
|
|
To summarize, this is a five step process:
|
|
|
|
@enumerate
|
|
@item
|
|
Run @code{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 @code{texindex} on the raw index files. This creates the
|
|
corresponding sorted index files (with three letter extensions).
|
|
|
|
@item
|
|
Run @code{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 last time, generally incorrect.
|
|
|
|
@item
|
|
Sort the indices again, with @code{texindex}.
|
|
|
|
@item
|
|
Run @code{tex} one last time. This time the correct page numbers are
|
|
written for the cross-references.
|
|
@end enumerate
|
|
|
|
@pindex texi2dvi
|
|
Alternatively, it's a one-step process: run @code{texi2dvi}
|
|
(@pxref{Format with texi2dvi}).
|
|
|
|
You need not run @code{texindex} each time after you run @code{tex}. If
|
|
you do not, on the next run, the @code{tex} formatting command will use
|
|
whatever sorted index files happen to exist from the previous use of
|
|
@code{texindex}. This is usually ok while you are debugging.
|
|
|
|
@cindex Auxiliary files, avoiding
|
|
@findex novalidate
|
|
@cindex Pointer validation, suppressing
|
|
@cindex Chapters, formatting one at a time
|
|
Sometimes you may wish to print a document while you know it is
|
|
incomplete, or to print just one chapter of a document. In that case,
|
|
the usual auxiliary files that @TeX{} creates and warnings @TeX{} gives
|
|
when cross-references are not satisfied are just nuisances. You can
|
|
avoid them with the @code{@@novalidate} command, which you must give
|
|
@emph{before} the @code{@@setfilename} command
|
|
(@pxref{setfilename,,@code{@@setfilename}}). Thus, the beginning of
|
|
your file would look approximately like this:
|
|
|
|
@example
|
|
\input texinfo
|
|
@@novalidate
|
|
@@setfilename myfile.info
|
|
@dots{}
|
|
@end example
|
|
|
|
@noindent @code{@@novalidate} also turns off validation in
|
|
@code{makeinfo}, just like its @code{--no-validate} option
|
|
(@pxref{Pointer Validation}).
|
|
|
|
|
|
@node Format with texi2dvi
|
|
@section Format with @code{texi2dvi}
|
|
@pindex texi2dvi @r{(shell script)}
|
|
|
|
The @code{texi2dvi} command automatically runs both @code{tex} and
|
|
@code{texindex} as many times as necessary to produce a DVI file with
|
|
sorted indices and all cross-references resolved. It simplifies the
|
|
@code{tex}---@code{texindex}---@code{tex}---@code{tex} sequence
|
|
described in the previous section.
|
|
|
|
To run @code{texi2dvi} on an input file @file{foo.texi}, do this (where
|
|
@samp{prompt$ } is your shell prompt):
|
|
|
|
@example
|
|
prompt$ @kbd{texi2dvi foo.texi}
|
|
@end example
|
|
|
|
As shown in this example, the input filenames to @code{texi2dvi} must
|
|
include any extension (@samp{.texi}, @samp{.texinfo}, etc.). Under
|
|
MS-DOS and perhaps in other circumstances, you may need to run @samp{sh
|
|
texi2dvi foo.texi} instead of relying on the operating system to invoke
|
|
the shell on the @samp{texi2dvi} script.
|
|
|
|
Perhaps the most useful option to @code{texi2dvi} is
|
|
@samp{--texinfo=@var{cmd}}. This inserts @var{cmd} on a line by itself
|
|
after the @code{@@setfilename} in a temporary copy of the input file
|
|
before running @TeX{}. With this, you can specify different printing
|
|
formats, such as @code{@@smallbook} (@pxref{smallbook}),
|
|
@code{@@afourpaper} (@pxref{A4 Paper}), or @code{@@pagesizes}
|
|
(@pxref{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,,Preparing for @TeX{}}).
|
|
|
|
For a list of other options, run @samp{texi2dvi --help}.
|
|
|
|
|
|
@node Print with lpr
|
|
@section Shell Print Using @code{lpr -d}
|
|
@pindex lpr @r{(DVI print command)}
|
|
|
|
The precise command to print a DVI file depends on your system
|
|
installation. Two common ones are @samp{dvips foo.dvi -o} and @samp{lpr
|
|
-d foo.dvi}.
|
|
|
|
For example, the following commands will (perhaps) suffice to sort the
|
|
indices, format, and print the @cite{Bison Manual}:
|
|
|
|
@example
|
|
@group
|
|
tex bison.texinfo
|
|
texindex bison.??
|
|
tex bison.texinfo
|
|
lpr -d bison.dvi
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
(Remember that the shell commands may be different at your site; but
|
|
these are commonly used versions.)
|
|
|
|
Using the @code{texi2dvi} shell script (see the previous section):
|
|
|
|
@example
|
|
@group
|
|
texi2dvi bison.texinfo
|
|
lpr -d bison.dvi
|
|
# or perhaps dvips bison.dvi -o
|
|
@end group
|
|
@end example
|
|
|
|
@cindex Shell printing, on MS-DOS/MS-Windows
|
|
@cindex Printing DVI files, on MS-DOS/MS-Windows
|
|
@pindex lpr@r{-d, replacements on MS-DOS/MS-Windows}
|
|
@code{lpr} is a standard program on Unix systems, but it is usually
|
|
absent on MS-DOS/MS-Windows. Some network packages come with a
|
|
program named @code{lpr}, but these are usually limited to sending files
|
|
to a print server over the network, and generally don't support the
|
|
@samp{-d} option. If you are unfortunate enough to work on one of these
|
|
systems, you have several alternative ways of printing DVI files:
|
|
|
|
@itemize @bullet{}
|
|
@item Find and install a Unix-like @code{lpr} program, or its clone.
|
|
If you can do that, you will be able to print DVI files just like
|
|
described above.
|
|
|
|
@item Send the DVI files to a network printer queue for DVI files.
|
|
Some network printers have special queues for printing DVI files. You
|
|
should be able to set up your network software to send files to that
|
|
queue. In some cases, the version of @code{lpr} which comes with your
|
|
network software will have a special option to send a file to specific
|
|
queues, like this:
|
|
|
|
@example
|
|
lpr -Qdvi -hprint.server.domain bison.dvi
|
|
@end example
|
|
|
|
@item Convert the DVI file to a Postscript or PCL file and send it to your
|
|
local printer. @xref{dvips invocation,,, dvips, Dvips}, and the man
|
|
pages for @code{dvilj}, for detailed description of these tools. Once
|
|
the DVI file is converted to the format your local printer understands
|
|
directly, just send it to the appropriate port, usually @samp{PRN}.
|
|
@end itemize
|
|
|
|
|
|
@node Within Emacs
|
|
@section From an Emacs Shell
|
|
@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
|
|
|
|
You can give formatting and printing commands from a shell within GNU
|
|
Emacs. To create a shell within Emacs, type @kbd{M-x shell}. In this
|
|
shell, you can format and print the document. @xref{Hardcopy, , Format
|
|
and Print Hardcopy}, for details.
|
|
|
|
You can switch to and from the shell buffer while @code{tex} is
|
|
running and do other editing. If you are formatting a long document
|
|
on a slow machine, this can be very convenient.@refill
|
|
|
|
You can also use @code{texi2dvi} from an Emacs shell. For example,
|
|
here is how to use @code{texi2dvi} to format and print @cite{Using and
|
|
Porting GNU CC} from a shell within Emacs:
|
|
|
|
@example
|
|
@group
|
|
texi2dvi gcc.texinfo
|
|
lpr -d gcc.dvi
|
|
@end group
|
|
@end example
|
|
@ifinfo
|
|
|
|
@xref{Texinfo Mode Printing}, for more information about formatting
|
|
and printing in Texinfo mode.@refill
|
|
@end ifinfo
|
|
|
|
|
|
@node Texinfo Mode Printing, Compile-Command, Within Emacs, Hardcopy
|
|
@section 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.@refill
|
|
|
|
@table @kbd
|
|
@item C-c C-t C-b
|
|
@itemx M-x texinfo-tex-buffer
|
|
Run @code{texi2dvi} on the current buffer.@refill
|
|
|
|
@item C-c C-t C-r
|
|
@itemx M-x texinfo-tex-region
|
|
Run @TeX{} on the current region.@refill
|
|
|
|
@item C-c C-t C-i
|
|
@itemx M-x texinfo-texindex
|
|
Sort the indices of a Texinfo file formatted with
|
|
@code{texinfo-tex-region}.@refill
|
|
|
|
@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}.@refill
|
|
|
|
@item C-c C-t C-q
|
|
@itemx M-x tex-show-print-queue
|
|
Show the print queue.@refill
|
|
|
|
@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}).@refill
|
|
|
|
@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.@refill
|
|
|
|
@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.@refill
|
|
|
|
@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.@refill
|
|
@end table
|
|
|
|
@need 1000
|
|
Thus, the usual sequence of commands for formatting a buffer is as
|
|
follows (with comments to the right):@refill
|
|
|
|
@example
|
|
@group
|
|
C-c C-t C-b @r{Run @code{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.@refill
|
|
|
|
@need 1500
|
|
The formatting and print commands depend on the values of several variables.
|
|
The default values are:@refill
|
|
|
|
@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
|
|
edit-options} command (@pxref{Edit Options, , Editing Variable Values,
|
|
emacs, The GNU Emacs Manual}), 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}).@refill
|
|
|
|
@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
|
|
@section 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 @code{tex} or @code{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.texinfo} file, after the
|
|
@code{@@bye}, you could put the following:@refill
|
|
|
|
@example
|
|
@group
|
|
Local Variables:
|
|
compile-command: "texi2dvi gdb.texinfo"
|
|
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}.@refill
|
|
|
|
|
|
@node Requirements Summary
|
|
@section @TeX{} Formatting Requirements Summary
|
|
@cindex Requirements for formatting
|
|
@cindex Minimal requirements for formatting
|
|
@cindex Formatting requirements
|
|
|
|
Every Texinfo file that is to be input to @TeX{} must begin with a
|
|
@code{\input} command and must contain an @code{@@setfilename} command:
|
|
|
|
@example
|
|
\input texinfo
|
|
@@setfilename @var{arg-not-used-by-@TeX{}}
|
|
@end example
|
|
|
|
@noindent
|
|
The first command instructs @TeX{} to load the macros it needs to
|
|
process a Texinfo file and the second command opens auxiliary files.
|
|
|
|
Every Texinfo file must end with a line that terminates @TeX{}'s
|
|
processing and forces out unfinished pages:
|
|
|
|
@example
|
|
@@bye
|
|
@end example
|
|
|
|
Strictly speaking, these lines are all a Texinfo file needs to be
|
|
processed successfully by @TeX{}.
|
|
|
|
Usually, however, the beginning includes an @code{@@settitle} command to
|
|
define the title of the printed manual, an @code{@@setchapternewpage}
|
|
command, a title page, a copyright page, and permissions. Besides an
|
|
@code{@@bye}, the end of a file usually includes indices and a table of
|
|
contents. (And of course most manuals contain a body of text as well.)
|
|
|
|
For more information, see:
|
|
@itemize @bullet
|
|
@item @ref{settitle, , @code{@@settitle}}
|
|
@item @ref{setchapternewpage, , @code{@@setchapternewpage}}
|
|
@item @ref{Headings, ,Page Headings}
|
|
@item @ref{Titlepage & Copyright Page}
|
|
@item @ref{Printing Indices & Menus}
|
|
@item @ref{Contents}
|
|
@end itemize
|
|
|
|
|
|
@node Preparing for TeX
|
|
@section Preparing for @TeX{}
|
|
@cindex Preparing for @TeX{}
|
|
@cindex @TeX{} input initialization
|
|
@cindex @code{TEXINPUTS} environment variable
|
|
@vindex TEXINPUTS
|
|
@cindex @b{.profile} initialization file
|
|
@cindex @b{.cshrc} initialization file
|
|
@cindex Initialization file for @TeX{} input
|
|
|
|
@TeX{} needs to know where 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.
|
|
|
|
@pindex texinfo.tex@r{, installing}
|
|
|
|
Usually, the installer has put the @file{texinfo.tex} file in the
|
|
default directory that contains @TeX{} macros when GNU Texinfo, Emacs or
|
|
other GNU software is installed. In this case, @TeX{} will find the
|
|
file and you do not need to do anything special. If this has not been
|
|
done, you can put @file{texinfo.tex} in the current directory when you
|
|
run @TeX{}, and @TeX{} will find it there.
|
|
|
|
@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}).
|
|
|
|
@pindex pdfcolor.tex@r{, installing}
|
|
Likewise for @file{pdfcolor.tex}, if it is not already installed and you
|
|
use pdftex.
|
|
|
|
@pindex texinfo.cnf @r{installation}
|
|
@cindex Customizing of @TeX{} for Texinfo
|
|
@cindex Site-wide Texinfo configuration file
|
|
Optionally, you may create an additional @file{texinfo.cnf}, and install
|
|
it as well. This file is read by @TeX{} when the @code{@@setfilename}
|
|
command is executed (@pxref{setfilename,, @code{@@setfilename}}). You can put any
|
|
commands you like there, according to local site-wide conventions. They
|
|
will be read by @TeX{} when processing any Texinfo document. For
|
|
example, if @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.
|
|
|
|
@vindex TEXINPUTS
|
|
If neither of the above locations for these system files suffice for
|
|
you, you can specify the directories explicitly. For
|
|
@file{texinfo.tex}, you can do this by writing the complete path for the
|
|
file after the @code{\input} command. Another way, that works for both
|
|
@file{texinfo.tex} and @file{texinfo.cnf} (and any other file @TeX{}
|
|
might read), is to set the @code{TEXINPUTS} environment variable in your
|
|
@file{.cshrc} or @file{.profile} file.
|
|
|
|
Which you use of @file{.cshrc} or @file{.profile} depends on
|
|
whether you use a Bourne shell-compatible (@code{sh}, @code{bash},
|
|
@code{ksh}, @dots{}) or C shell-compatible (@code{csh}, @code{tcsh})
|
|
command interpreter. The latter read the @file{.cshrc} file for
|
|
initialization information, and the former read @file{.profile}.
|
|
|
|
In a @file{.cshrc} file, you could use the following @code{csh} command
|
|
sequence:
|
|
|
|
@example
|
|
setenv TEXINPUTS .:/home/me/mylib:/usr/lib/tex/macros
|
|
@end example
|
|
|
|
@need 1000
|
|
In a @file{.profile} file, you could use the following @code{sh} command
|
|
sequence:
|
|
|
|
@example
|
|
@group
|
|
TEXINPUTS=.:/home/me/mylib:/usr/lib/tex/macros
|
|
export TEXINPUTS
|
|
@end group
|
|
@end example
|
|
|
|
On MS-DOS/MS-Windows, you would say it like this@footnote{Note the use
|
|
of the @samp{;} character, instead of @samp{:}, as directory separator
|
|
on these systems.}:
|
|
|
|
@example
|
|
@group
|
|
set TEXINPUTS=.;d:/home/me/mylib;c:/usr/lib/tex/macros
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
It is customary for DOS/Windows users to put such commands in the
|
|
@file{autoexec.bat} file, or in the Windows Registry.@refill
|
|
|
|
@noindent
|
|
These settings would cause @TeX{} to look for @file{\input} file first
|
|
in the current directory, indicated by the @samp{.}, then in a
|
|
hypothetical user's @file{me/mylib} directory, and finally in a system
|
|
directory @file{/usr/lib/tex/macros}.
|
|
|
|
@cindex Dumping a .fmt file
|
|
@cindex Format file, dumping
|
|
Finally, you may wish to dump a @file{.fmt} file (@pxref{Memory dumps,,,
|
|
web2c, Web2c}) so that @TeX{} can load Texinfo faster. (The
|
|
disadvantage is that then updating @file{texinfo.tex} requires
|
|
redumping.) You can do this by running this command, assuming
|
|
@file{epsf.tex} is findable by @TeX{}:
|
|
|
|
@example
|
|
initex texinfo @@dump
|
|
@end example
|
|
|
|
(@code{dump} is a @TeX{} primitive.) Then, move @file{texinfo.fmt} to
|
|
wherever your @code{.fmt} files are found; typically, this will be in the
|
|
subdirectory @file{web2c} of your @TeX{} installation.
|
|
|
|
|
|
@node Overfull hboxes
|
|
@section Overfull ``hboxes''
|
|
@cindex Overfull @samp{hboxes}
|
|
@cindex @samp{hboxes}, overfull
|
|
@cindex Final output
|
|
|
|
@TeX{} is sometimes unable to typeset a line without extending it into
|
|
the right margin. This can occur when @TeX{} comes upon what it
|
|
interprets as a long word that it cannot hyphenate, such as an
|
|
electronic mail network address or a very long title. When this
|
|
happens, @TeX{} prints an error message like this:
|
|
|
|
@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 needed 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, , Catching Errors with @TeX{} Formatting},
|
|
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; the default
|
|
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 what overfull boxes you have, however, @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{@@titlepage} command:
|
|
|
|
@example
|
|
@@finalout
|
|
@end example
|
|
|
|
|
|
@node smallbook
|
|
@section Printing ``Small'' Books
|
|
@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. However, you can direct @TeX{} to typeset a document in a 7 by
|
|
9.25 inch format that is suitable for bound books by inserting the
|
|
following command on a line by itself at the beginning of the Texinfo
|
|
file, before the title page:@refill
|
|
|
|
@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.)
|
|
|
|
If you write the @code{@@smallbook} command between the
|
|
start-of-header and end-of-header lines, the Texinfo mode @TeX{}
|
|
region formatting command, @code{texinfo-tex-region}, will format the
|
|
region in ``small'' book size (@pxref{Start of Header}).@refill
|
|
|
|
@xref{small}, for information about
|
|
commands that make it easier to produce examples for a smaller manual.
|
|
|
|
@xref{Format with texi2dvi}, and @ref{Preparing for TeX,,Preparing for
|
|
@TeX{}}, for other ways to format with @code{@@smallbook} that do not
|
|
require changing the source file.
|
|
|
|
|
|
@node A4 Paper
|
|
@section Printing on A4 Paper
|
|
@cindex A4 paper, printing on
|
|
@cindex A5 paper, printing on
|
|
@cindex Paper size, A4
|
|
@cindex European A4 paper
|
|
@findex afourpaper
|
|
|
|
You can tell @TeX{} to format a document for printing on European size
|
|
A4 paper (or A5) with the @code{@@afourpaper} (or @code{@@afivepaper})
|
|
command. Write the command on a line by itself near the beginning of
|
|
the Texinfo file, before the title page. For example, this is how you
|
|
would write the header for this manual:
|
|
|
|
@example
|
|
@group
|
|
\input texinfo @@c -*-texinfo-*-
|
|
@@c %**start of header
|
|
@@setfilename texinfo
|
|
@@settitle Texinfo
|
|
@@afourpaper
|
|
@@c %**end of header
|
|
@end group
|
|
@end example
|
|
|
|
@xref{Format with texi2dvi}, and @ref{Preparing for TeX,,Preparing for
|
|
@TeX{}}, for other ways to format for different paper sizes that do not
|
|
require changing the source file.
|
|
|
|
@findex afourlatex
|
|
@findex afourwide
|
|
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.
|
|
|
|
@node pagesizes
|
|
@section @code{@@pagesizes} [@var{width}][, @var{height}]: Custom Page Sizes
|
|
@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}, @pxref{Preparing for TeX,,Preparing for @TeX{}}).
|
|
|
|
@xref{Format with texi2dvi}, and @ref{Preparing for TeX,,Preparing for
|
|
@TeX{}}, for other ways to specify @code{@@pagesizes} that do not
|
|
require changing the source file.
|
|
|
|
@code{@@pagesizes} is ignored by @code{makeinfo}.
|
|
|
|
|
|
@node Cropmarks and Magnification
|
|
@section Cropmarks and Magnification
|
|
@findex cropmarks
|
|
@cindex Cropmarks for printing
|
|
@cindex Printing cropmarks
|
|
You can (attempt to) direct @TeX{} to print cropmarks at the corners of
|
|
pages with the @code{@@cropmarks} command. Write the @code{@@cropmarks}
|
|
command on a line by itself between @code{@@iftex} and @code{@@end
|
|
iftex} lines near the beginning of the Texinfo file, before the title
|
|
page, like this:@refill
|
|
|
|
@example
|
|
@group
|
|
@@iftex
|
|
@@cropmarks
|
|
@@end iftex
|
|
@end group
|
|
@end example
|
|
|
|
This command is mainly for printers that typeset several pages on one
|
|
sheet of film; but you can attempt to use it to mark the corners of a
|
|
book set to 7 by 9.25 inches with the @code{@@smallbook} command.
|
|
(Printers will not produce cropmarks for regular sized output that is
|
|
printed on regular sized paper.) Since different printing machines work
|
|
in different ways, you should explore the use of this command with a
|
|
spirit of adventure. You may have to redefine the command in
|
|
@file{texinfo.tex}.
|
|
|
|
@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
|
|
plain @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
|
|
\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 PDF Output
|
|
@section PDF Output
|
|
@cindex PDF output
|
|
|
|
@pindex pdftex
|
|
You can generate a PDF output file from Texinfo source by using the
|
|
@command{pdftex} program to process your file instead of plain
|
|
@command{tex}. That is, run @samp{pdftex foo.texi} instead of @samp{tex
|
|
foo.texi}, or give the @samp{--pdf} option to @command{texi2dvi}.
|
|
|
|
@dfn{PDF} stands for `Portable Document Format'. It was invented by
|
|
Adobe Systems some years ago for document interchange, based on their
|
|
PostScript language. A @uref{http://www.foolabs.com/xpdf/, PDF
|
|
reader} for the X window system is freely available, as is the
|
|
@uref{http://partners.adobe.com/asn/developer/technotes/, definition
|
|
of the file format}. At present, there are no @samp{@@ifpdf} or
|
|
@samp{@@pdf} commands as with the other output formats.
|
|
|
|
Despite the `portable' in the name, PDF files are nowhere near as
|
|
portable in practice as the plain ASCII formats (Info, HTML) that
|
|
Texinfo supports (DVI portability is arguable). They also tend to be
|
|
much larger and do not support the bitmap fonts used by @TeX{} (by
|
|
default) very well. Nevertheless, a PDF file does preserve an actual
|
|
printed document on a screen as faithfully as possible, so it has its place.
|
|
|
|
PDF support in Texinfo is fairly rudimentary.
|
|
|
|
|
|
@node Creating and Installing Info Files
|
|
@chapter Creating and Installing Info Files
|
|
|
|
This chapter describes how to create and install Info files. @xref{Info
|
|
Files}, for general information about the file format itself.
|
|
|
|
@menu
|
|
* Creating an Info File::
|
|
* Installing an Info File::
|
|
@end menu
|
|
|
|
|
|
@node Creating an Info File
|
|
@section Creating an Info File
|
|
@cindex Creating an Info file
|
|
@cindex Info, creating an online file
|
|
@cindex Formatting a file for Info
|
|
|
|
@code{makeinfo} is a program that converts a Texinfo file into an Info
|
|
file, HTML file, or plain text. @code{texinfo-format-region} and
|
|
@code{texinfo-format-buffer} are GNU Emacs functions that convert
|
|
Texinfo to Info.
|
|
|
|
For information on installing the Info file in the Info system,
|
|
@pxref{Installing an Info File}.
|
|
|
|
@menu
|
|
* makeinfo advantages:: @code{makeinfo} provides better error checking.
|
|
* Invoking makeinfo:: How to run @code{makeinfo} from a shell.
|
|
* makeinfo options:: Specify fill-column and other options.
|
|
* Pointer Validation:: How to check that pointers point somewhere.
|
|
* makeinfo in Emacs:: How to run @code{makeinfo} from Emacs.
|
|
* texinfo-format commands:: Two Info formatting commands written
|
|
in Emacs Lisp are an alternative
|
|
to @code{makeinfo}.
|
|
* Batch Formatting:: How to format for Info in Emacs Batch mode.
|
|
* Tag and Split Files:: How tagged and split files help Info
|
|
to run better.
|
|
* Generating HTML:: Generating HTML output with makeinfo.
|
|
@end menu
|
|
|
|
|
|
@node makeinfo advantages
|
|
@subsection @code{makeinfo} Preferred
|
|
|
|
The @code{makeinfo} utility creates an Info file from a Texinfo source
|
|
file more quickly than either of the Emacs formatting commands and
|
|
provides better error messages. We recommend it. @code{makeinfo} is a
|
|
C program that is independent of Emacs. You do not need to run Emacs to
|
|
use @code{makeinfo}, which means you can use @code{makeinfo} on machines
|
|
that are too small to run Emacs. You can run @code{makeinfo} in any one
|
|
of three ways: from an operating system shell, from a shell inside
|
|
Emacs, or by typing the @kbd{C-c C-m C-r} or the @kbd{C-c C-m C-b}
|
|
command in Texinfo mode in Emacs.
|
|
@refill
|
|
|
|
The @code{texinfo-format-region} and the @code{texinfo-format-buffer}
|
|
commands are useful if you cannot run @code{makeinfo}. Also, in some
|
|
circumstances, they format short regions or buffers more quickly than
|
|
@code{makeinfo}.@refill
|
|
|
|
@node Invoking makeinfo
|
|
@subsection Running @code{makeinfo} from a Shell
|
|
|
|
To create an Info file from a Texinfo file, type @code{makeinfo}
|
|
followed by the name of the Texinfo file. Thus, to create the Info
|
|
file for Bison, type the following to the shell:
|
|
|
|
@example
|
|
makeinfo bison.texinfo
|
|
@end example
|
|
|
|
(You can run a shell inside Emacs by typing @kbd{M-x shell}.)@refill
|
|
|
|
@ifinfo
|
|
Sometimes you will want to specify options. For example, if you wish
|
|
to discover which version of @code{makeinfo} you are using,
|
|
type:@refill
|
|
|
|
@example
|
|
makeinfo --version
|
|
@end example
|
|
|
|
@xref{makeinfo options}, for more information.
|
|
@end ifinfo
|
|
|
|
|
|
@node makeinfo options
|
|
@subsection Options for @code{makeinfo}
|
|
@cindex @code{makeinfo} options
|
|
@cindex Options for @code{makeinfo}
|
|
|
|
The @code{makeinfo} command takes a number of options. Most often,
|
|
options are used to set the value of the fill column and specify the
|
|
footnote style. Each command line option is a word preceded by
|
|
@samp{--} or a letter preceded by @samp{-}. You can use abbreviations
|
|
for the long option names as long as they are unique.@refill
|
|
|
|
For example, you could use the following shell command to create an Info
|
|
file for @file{bison.texinfo} in which each line is filled to only 68
|
|
columns:@refill
|
|
|
|
@example
|
|
makeinfo --fill-column=68 bison.texinfo
|
|
@end example
|
|
|
|
You can write two or more options in sequence, like this:@refill
|
|
|
|
@example
|
|
makeinfo --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.@refill
|
|
|
|
The options are:
|
|
|
|
@table @code
|
|
|
|
@item -D @var{var}
|
|
@opindex -D @var{var}
|
|
Cause the variable @var{var} to be defined. This is equivalent to
|
|
@code{@@set @var{var}} in the Texinfo file (@pxref{set clear value}).
|
|
|
|
@item --commands-in-node-names
|
|
@opindex --commands-in-node-names
|
|
Allow @code{@@}-commands in node names. This is not recommended, as it
|
|
can probably never be implemented in @TeX{}. It also makes
|
|
@code{makeinfo} much slower. Also, this option is ignored when
|
|
@samp{--no-validate} is used. @xref{Pointer Validation}, for more
|
|
details.
|
|
|
|
@item --docbook
|
|
@opindex --docbook
|
|
Generate DocBook output rather than Info.
|
|
|
|
@item --enable-encoding
|
|
@opindex --enable-encoding
|
|
Output accented and special characters in Info or plain text output
|
|
based on @samp{@@documentencoding}.
|
|
|
|
@item --error-limit=@var{limit}
|
|
@itemx -e @var{limit}
|
|
@opindex --error-limit=@var{limit}
|
|
@opindex -e @var{limit}
|
|
Set the maximum number of errors that @code{makeinfo} will report
|
|
before exiting (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}
|
|
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. Ignored with @samp{--html}.
|
|
|
|
@item --footnote-style=@var{style}
|
|
@itemx -s @var{style}
|
|
@opindex --footnote-style=@var{style}
|
|
@opindex -s @var{style}
|
|
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 an @code{@@footnotestyle} command (@pxref{Footnotes}). When the
|
|
footnote style is @samp{separate}, @code{makeinfo} makes a new node
|
|
containing the footnotes found in the current node. When the footnote
|
|
style is @samp{end}, @code{makeinfo} places the footnote references at
|
|
the end of the current node. Ignored with @samp{--html}.
|
|
|
|
@item --force
|
|
@itemx -F
|
|
@opindex --force
|
|
@opindex -F
|
|
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
|
|
@opindex -h
|
|
Print a usage message listing all available options, then exit successfully.
|
|
|
|
@item --html
|
|
@opindex --html
|
|
Generate HTML output rather than Info. @xref{Generating HTML}. By
|
|
default, the HTML output is split into one output file per source node,
|
|
and the split output is written into a subdirectory with the name of the
|
|
top-level info file.
|
|
|
|
@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,
|
|
@code{makeinfo} searches only the current directory. If @var{dir} is
|
|
not given, the current directory @file{.} is appended. Note that
|
|
@var{dir} can actually be a list of several directories separated by the
|
|
usual path separator character (@samp{:} on Unix, @samp{;} on
|
|
MS-DOS/MS-Windows).
|
|
|
|
@item --ifhtml
|
|
@itemx --ifinfo
|
|
@itemx --ifplaintext
|
|
@itemx --iftex
|
|
@itemx --ifxml
|
|
@opindex --ifhtml
|
|
@opindex --ifinfo
|
|
@opindex --ifplaintext
|
|
@opindex --iftex
|
|
@opindex --ifxml
|
|
For the specified format, process @samp{@@if@var{format}} and
|
|
@samp{@@@var{format}} commands even if not generating the given output
|
|
format. For instance, if @option{--iftex} is specified, then
|
|
@samp{@@iftex} and @samp{@@tex} blocks will be read. This can be useful
|
|
when postprocessing the output.
|
|
|
|
@item --macro-expand=@var{file}
|
|
@itemx -E @var{file}
|
|
@opindex --macro-expand=@var{file}
|
|
@opindex -E @var{file}
|
|
Output the Texinfo source with all the macros expanded to the named
|
|
file. Normally, the results of macro expansion are used internally by
|
|
@code{makeinfo} and then discarded. This option is used by
|
|
@command{texi2dvi} if you are using an old version of @file{texinfo.tex}
|
|
that does not support @code{@@macro}.
|
|
|
|
@item --no-headers
|
|
@opindex --no-headers
|
|
@cindex Plain text output
|
|
@cindex ASCII text output
|
|
@cindex Generating plain text files
|
|
@cindex @file{INSTALL} file, generating
|
|
@cindex Node separators, omitting
|
|
@cindex Menus, omitting
|
|
For Info output, do not include menus or node separator lines in the
|
|
output. This results in a simple plain text file that you can (for
|
|
example) send in email without complications, or include in a
|
|
distribution (as in an @file{INSTALL} file).
|
|
|
|
@cindex Navigation links, omitting
|
|
For HTML output, likewise omit menus. And if @samp{--no-split} is also
|
|
specified, do not include a navigation links at the top of each node
|
|
(these are never included in the default case of split output).
|
|
@xref{Generating HTML}.
|
|
|
|
In both cases, write to standard output by default (can still be
|
|
overridden by @option{-o}).
|
|
|
|
@item --no-ifhtml
|
|
@itemx --no-ifinfo
|
|
@itemx --no-ifplaintext
|
|
@itemx --no-iftex
|
|
@itemx --no-ifxml
|
|
@opindex --no-ifhtml
|
|
@opindex --no-ifinfo
|
|
@opindex --no-ifplaintext
|
|
@opindex --no-iftex
|
|
@opindex --no-ifxml
|
|
Do not process @samp{@@if@var{format}} and @samp{@@@var{format}}
|
|
commands even if generating the given format. For instance, if
|
|
@option{--no-ifhtml} is specified, then @samp{@@ifhtml} and
|
|
@samp{@@html} blocks will not be read.
|
|
|
|
@item --no-split
|
|
@opindex --no-split
|
|
@cindex Splitting of output files
|
|
@cindex Output file splitting
|
|
Suppress the splitting stage of @code{makeinfo}. By default, large
|
|
output files (where the size is greater than 70k bytes) are split into
|
|
smaller subfiles. For Info output, each one is approximately 50k bytes.
|
|
For HTML output, each file contains one node (@pxref{Generating HTML}).
|
|
|
|
@item --no-pointer-validate
|
|
@itemx --no-validate
|
|
@opindex --no-pointer-validate
|
|
@opindex --no-validate
|
|
@cindex Pointer validation, suppressing
|
|
Suppress the pointer-validation phase of @code{makeinfo}. This can also
|
|
be done with the @code{@@novalidate} command (@pxref{Use TeX,,Use
|
|
@TeX{}}). Normally, after a Texinfo file is processed, some consistency
|
|
checks are made to ensure that cross references can be resolved, etc.
|
|
@xref{Pointer Validation}.
|
|
|
|
@item --no-warn
|
|
@opindex --no-warn
|
|
Suppress warning messages (but @emph{not} error messages). You might
|
|
want this if the file you are creating has examples of Texinfo cross
|
|
references within it, and the nodes that are referenced do not actually
|
|
exist.
|
|
|
|
@item --number-sections
|
|
@opindex --number-sections
|
|
Output chapter, section, and appendix numbers as in printed manuals.
|
|
|
|
@item --no-number-footnotes
|
|
@opindex --no-number-footnotes
|
|
Suppress automatic footnote numbering. By default, @code{makeinfo}
|
|
numbers each footnote sequentially in a single node, resetting the
|
|
current footnote number to 1 at the start of each node.
|
|
|
|
@item --output=@var{file}
|
|
@itemx -o @var{file}
|
|
@opindex --output=@var{file}
|
|
@opindex -o @var{file}
|
|
Specify that the output should be directed to @var{file} and not to the
|
|
file name specified in the @code{@@setfilename} command found in the
|
|
Texinfo source (@pxref{setfilename}). If @var{file} is @samp{-}, output
|
|
goes to standard output and @samp{--no-split} is implied. For split
|
|
HTML output, @var{file} is the name for the directory into which all
|
|
HTML nodes are written (@pxref{Generating HTML}).
|
|
|
|
@item -P @var{dir}
|
|
@opindex -P @var{dir}
|
|
Prepend @var{dir} to the directory search list for @code{@@include}.
|
|
If @var{dir} is not given, the current directory @file{.} is prepended.
|
|
See @samp{-I} for more details.
|
|
|
|
@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{paragraphindent}). The value
|
|
of @var{indent} is interpreted as follows:
|
|
|
|
@table @asis
|
|
@item @samp{asis}
|
|
Preserve any existing indentation at the starts of paragraphs.
|
|
|
|
@item @samp{0} or @samp{none}
|
|
Delete any existing indentation.
|
|
|
|
@item @var{num}
|
|
Indent each paragraph by @var{num} spaces.
|
|
@end table
|
|
|
|
@item --reference-limit=@var{limit}
|
|
@itemx -r @var{limit}
|
|
@opindex --reference-limit=@var{limit}
|
|
@opindex -r @var{limit}
|
|
Set the value of the number of references to a node that
|
|
@code{makeinfo} will make without reporting a warning. If a node has more
|
|
than this number of references in it, @code{makeinfo} will make the
|
|
references but also report a warning. The default is 1000.
|
|
|
|
@item --split-size=@var{num}
|
|
@opindex --split-size=@var{num}
|
|
Keep Info files to at most @var{num} characters; default is 50,000.
|
|
|
|
@item -U @var{var}
|
|
Cause @var{var} to be undefined. This is equivalent to
|
|
@code{@@clear @var{var}} in the Texinfo file (@pxref{set clear value}).
|
|
|
|
@item --verbose
|
|
@opindex --verbose
|
|
Cause @code{makeinfo} to display messages saying what it is doing.
|
|
Normally, @code{makeinfo} only outputs messages if there are errors or
|
|
warnings.
|
|
|
|
@item --version
|
|
@itemx -V
|
|
@opindex --version
|
|
@opindex -V
|
|
Print the version number, then exit successfully.
|
|
|
|
@item --xml
|
|
@opindex --xml
|
|
Generate XML output rather than Info.
|
|
|
|
@end table
|
|
|
|
|
|
@node Pointer Validation
|
|
@subsection Pointer Validation
|
|
@cindex Pointer validation with @code{makeinfo}
|
|
@cindex Validation of pointers
|
|
|
|
If you do not suppress pointer validation with the @samp{--no-validate}
|
|
option or the @code{@@novalidate} command in the source file (@pxref{Use
|
|
TeX,,Use @TeX{}}), @code{makeinfo} will check the validity of the final
|
|
Info file. Mostly, this means ensuring that nodes you have referenced
|
|
really exist. Here is a complete list of what is checked:
|
|
|
|
@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.@refill
|
|
|
|
@item
|
|
In every node, if the `Previous' node is different from the `Up' node,
|
|
then the node pointed to by the `Previous' field must have a `Next'
|
|
field which points back to this node.@refill
|
|
|
|
@item
|
|
Every node except the `Top' node must have an `Up' pointer.@refill
|
|
|
|
@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 `(@var{file})'.
|
|
|
|
@item
|
|
If the `Next' reference of a node is not the same as the `Next' reference
|
|
of the `Up' reference, then the node referenced by the `Next' pointer
|
|
must have a `Previous' pointer that points back to the current node.
|
|
This rule allows the last node in a section to point to the first node
|
|
of the next chapter.@refill
|
|
|
|
@item
|
|
Every node except `Top' should be referenced by at least one other node,
|
|
either via the `Previous' or `Next' links, or via a menu or a
|
|
cross-reference.@refill
|
|
@end enumerate
|
|
|
|
@cindex @@-commands in @@node, limited support
|
|
Some Texinfo documents might fail during the validation phase because
|
|
they use commands like @code{@@value} and @code{@@definfoenclose} in
|
|
node definitions and cross-references inconsistently. Consider the
|
|
following example:
|
|
|
|
@example
|
|
@group
|
|
@@set nodename Node 1
|
|
|
|
@@node @@value@{nodename@}, Node 2, Top, Top
|
|
|
|
This is node 1.
|
|
|
|
@@node Node 2, , Node 1, Top
|
|
|
|
This is node 2.
|
|
@end group
|
|
@end example
|
|
|
|
@noindent
|
|
Here, the node ``Node 1'' was referenced both verbatim and through
|
|
@code{@@value}.
|
|
|
|
By default, @code{makeinfo} fails such cases, because node names are not
|
|
fully expanded until they are written to the output file. You should
|
|
always try to reference nodes consistently; e.g., in the above example,
|
|
the second @code{@@node} line should have also used @code{@@value}.
|
|
However, if, for some reason, you @emph{must} reference node names
|
|
inconsistently, and @code{makeinfo} fails to validate the file, you can
|
|
use the @samp{--commands-in-node-names} option to force @code{makeinfo}
|
|
to perform the expensive expansion of all node names it finds in the
|
|
document. This might considerably slow down the program, though;
|
|
twofold increase in conversion time was measured for large documents
|
|
such as the Jargon file.
|
|
|
|
@cindex @@value in @@node lines
|
|
The support for @code{@@}-commands in @code{@@node} directives is not
|
|
general enough to be freely used. For example, if the example above
|
|
redefined @code{nodename} somewhere in the document, @code{makeinfo}
|
|
will fail to convert it, even if invoked with the
|
|
@samp{--commands-in-node-names} option.
|
|
|
|
@samp{--commands-in-node-names} has no effect if the @samp{--no-validate}
|
|
option is given.
|
|
|
|
|
|
@node makeinfo in Emacs
|
|
@subsection Running @code{makeinfo} Within Emacs
|
|
@cindex Running @code{makeinfo} in Emacs
|
|
@cindex @code{makeinfo} inside Emacs
|
|
@cindex Shell, running @code{makeinfo} in
|
|
|
|
You can run @code{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.@refill
|
|
|
|
@table @kbd
|
|
@item C-c C-m C-r
|
|
@itemx M-x makeinfo-region
|
|
Format the current region for Info.@refill
|
|
@findex makeinfo-region
|
|
|
|
@item C-c C-m C-b
|
|
@itemx M-x makeinfo-buffer
|
|
Format the current buffer for Info.@refill
|
|
@findex makeinfo-buffer
|
|
@end table
|
|
|
|
When you invoke @code{makeinfo-region} the output goes to a temporary
|
|
buffer. When you invoke @code{makeinfo-buffer} output goes to the
|
|
file set with @code{@@setfilename} (@pxref{setfilename}).
|
|
|
|
The Emacs @code{makeinfo-region} and @code{makeinfo-buffer} commands
|
|
run the @code{makeinfo} program in a temporary shell buffer. If
|
|
@code{makeinfo} finds any errors, Emacs displays the error messages in
|
|
the temporary buffer.@refill
|
|
|
|
@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 @code{makeinfo} 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.@refill
|
|
|
|
In addition, you can kill the shell in which the @code{makeinfo}
|
|
command is running or make the shell buffer display its most recent
|
|
output.@refill
|
|
|
|
@table @kbd
|
|
@item C-c C-m C-k
|
|
@itemx M-x makeinfo-kill-job
|
|
@findex makeinfo-kill-job
|
|
Kill the current running @code{makeinfo} job
|
|
(from @code{makeinfo-region} or @code{makeinfo-buffer}).@refill
|
|
|
|
@item C-c C-m C-l
|
|
@itemx M-x makeinfo-recenter-output-buffer
|
|
@findex makeinfo-recenter-output-buffer
|
|
Redisplay the @code{makeinfo} shell buffer to display its most recent
|
|
output.@refill
|
|
@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}.)@refill
|
|
|
|
You can specify options for @code{makeinfo} by setting the
|
|
@code{makeinfo-options} variable with either the @kbd{M-x
|
|
edit-options} or the @kbd{M-x set-variable} command, or by setting the
|
|
variable in your @file{.emacs} initialization file.@refill
|
|
|
|
For example, you could write the following in your @file{.emacs} file:@refill
|
|
|
|
@example
|
|
@group
|
|
(setq makeinfo-options
|
|
"--paragraph-indent=0 --no-split
|
|
--fill-column=70 --verbose")
|
|
@end group
|
|
@end example
|
|
|
|
@c If you write these three cross references using xref, you see
|
|
@c three references to the same named manual, which looks strange.
|
|
@iftex
|
|
For more information, see @ref{makeinfo options, , Options for
|
|
@code{makeinfo}}, as well as ``Editing Variable Values,'' ``Examining
|
|
and Setting Variables,'' and ``Init File'' in @cite{The GNU Emacs
|
|
Manual}.
|
|
@end iftex
|
|
@noindent
|
|
@ifinfo
|
|
For more information, see@*
|
|
@ref{Edit Options, , Editing Variable Values, 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{makeinfo options, , Options for @code{makeinfo}}.
|
|
@end ifinfo
|
|
|
|
@node texinfo-format commands
|
|
@comment node-name, next, previous, up
|
|
@subsection The @code{texinfo-format@dots{}} Commands
|
|
@findex texinfo-format-region
|
|
@findex texinfo-format-buffer
|
|
|
|
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*}.@refill
|
|
|
|
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.@refill
|
|
|
|
@table @kbd
|
|
@item C-c C-e C-r
|
|
@itemx @code{texinfo-format-region}
|
|
Format the current region for Info.
|
|
@findex texinfo-format-region
|
|
|
|
@item C-c C-e C-b
|
|
@itemx @code{texinfo-format-buffer}
|
|
Format the current buffer for Info.
|
|
@findex texinfo-format-buffer
|
|
@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 @code{makeinfo} program is often faster and
|
|
provides better error checking (@pxref{makeinfo in Emacs}).@refill
|
|
|
|
@node Batch Formatting
|
|
@comment node-name, next, previous, up
|
|
@subsection 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{Command Switches, , Command
|
|
Line Switches and Arguments, emacs, The GNU Emacs Manual}.)@refill
|
|
|
|
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.@refill
|
|
|
|
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.@refill
|
|
|
|
@code{batch-texinfo-format} is convenient if you lack @code{makeinfo}
|
|
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.)@refill
|
|
|
|
@node Tag and Split Files
|
|
@comment node-name, next, previous, up
|
|
@subsection Tag Files and Split Files
|
|
@cindex Making a tag table automatically
|
|
@cindex Tag table, making automatically
|
|
|
|
If a Texinfo file has more than 30,000 bytes,
|
|
@code{texinfo-format-buffer} automatically creates a tag table
|
|
for its Info file; @code{makeinfo} always creates a tag table. With
|
|
a @dfn{tag table}, Info can jump to new nodes more quickly than it can
|
|
otherwise.@refill
|
|
|
|
@cindex Indirect subfiles
|
|
In addition, if the Texinfo file contains more than about 70,000
|
|
bytes, @code{texinfo-format-buffer} and @code{makeinfo} split the
|
|
large Info file into shorter @dfn{indirect} subfiles of about 50,000
|
|
bytes each. Big files are split into smaller files so that Emacs does
|
|
not need to make a large buffer to hold the whole of a large Info
|
|
file; instead, Emacs allocates just enough memory for the small, split-off
|
|
file that is needed at the time. This way, Emacs avoids wasting
|
|
memory when you run Info. (Before splitting was implemented, Info
|
|
files were always kept short and @dfn{include files} were designed as
|
|
a way to create a single, large printed manual out of the smaller Info
|
|
files. @xref{Include Files}, for more information. Include files are
|
|
still used for very large documents, such as @cite{The Emacs Lisp
|
|
Reference Manual}, in which each chapter is a separate file.)@refill
|
|
|
|
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.@refill
|
|
|
|
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 file name specified by the
|
|
@code{@@setfilename} command. The shortened version of the original file
|
|
continues to have the name specified by @code{@@setfilename}.@refill
|
|
|
|
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:@refill
|
|
|
|
@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:}. @refill
|
|
|
|
In the list of indirect files, the number following the file name
|
|
records the cumulative number of bytes in the preceding indirect files,
|
|
not counting the file list itself, the tag table, or the permissions
|
|
text in each file. In the tag table, the number following the node name
|
|
records the location of the beginning of the node, in bytes from the
|
|
beginning 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
|
|
@code{makeinfo} 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 and how to
|
|
validate the structure of the nodes, see @ref{Using
|
|
Info-validate}.@refill
|
|
|
|
|
|
@node Generating HTML
|
|
@subsection Generating HTML
|
|
@cindex HTML
|
|
|
|
Besides generating output in the Info format, you can use the
|
|
@samp{--html} option to generate output in HTML format, for installation
|
|
on a web site (for example). By default, the HTML output is split at
|
|
node level.
|
|
|
|
When splitting, the HTML output files are written into a subdirectory.
|
|
The subdirectory is named according to the name from
|
|
@code{@@setfilename} with any extension removed; for example, HTML
|
|
output for @code{@@setfilename emacs.info} would be written into a
|
|
subdirectory named @samp{emacs}. If that directory cannot be created
|
|
for any reason, then @samp{.html} is appended to the directory name, as
|
|
in @samp{emacs.html} (this is necessary because sometimes the info file
|
|
is named without an extension, e.g., @samp{texinfo}). If the
|
|
@samp{@var{name}.html} directory can't be created either,
|
|
@code{makeinfo} gives up. 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} or @code{--outfile}. Cross-document node
|
|
references are not supported in monolithic HTML.
|
|
|
|
Texinfo input marked up with the @code{@@ifhtml} command will produce
|
|
output only with the @samp{--html} option supplied. Input marked up
|
|
with the @code{@@html} is passed literally to the output (suppressing
|
|
the normal escaping of input @samp{<}, @samp{>} and @samp{&} characters
|
|
which have special significance in HTML). Similarly for the
|
|
@option{--xml} option and @code{@@ifxml} and @code{@@xml} sections.
|
|
|
|
The @samp{--footnote-style} option is currently ignored for HTML output;
|
|
footnotes are linked to the end of the output file.
|
|
|
|
The HTML generated is mostly standard (i.e., HTML 2.0, RFC-1866). The
|
|
exception is that HTML 3.2 tables are generated from the
|
|
@code{@@multitable} command, but tagged to degrade as well as possible
|
|
in browsers without table support. The HTML 4 @samp{lang} attribute on
|
|
the @samp{<html>} attribute is also used. Please report output from an
|
|
error-free run of @code{makeinfo} which has browser portability problems
|
|
as a bug.
|
|
|
|
Navigation bars are inserted at the start of nodes, similarly to Info
|
|
output. The @samp{--no-headers} option will suppress this if used with
|
|
@samp{--no-split}. Header @code{<link>} elements in split output can
|
|
support info-like navigation with browsers like Lynx and @w{Emacs W3}
|
|
which implement this @w{HTML 1.0} feature. @samp{@@xref} commands to
|
|
other documents are generated assuming the other document is available
|
|
in split HTML form, and installed in the same HTML documentation tree,
|
|
at @file{../<info-document>/}.
|
|
|
|
|
|
@node Installing an Info File
|
|
@section Installing an Info File
|
|
@cindex Installing an Info file
|
|
@cindex Info file 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. (@inforef{Top, info, info}, for an introduction to Info.)
|
|
|
|
@menu
|
|
* Directory File:: The top level menu for all Info files.
|
|
* New Info File:: Listing a new Info file.
|
|
* Other Info Directories:: How to specify Info files that are
|
|
located in other directories.
|
|
* Installing Dir Entries:: How to specify what menu entry to add
|
|
to the Info directory.
|
|
* Invoking install-info:: @code{install-info} options.
|
|
@end menu
|
|
|
|
|
|
@node Directory File
|
|
@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 pathname to 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:@refill
|
|
|
|
@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}.)@refill
|
|
|
|
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.@refill
|
|
|
|
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:@refill
|
|
|
|
@example
|
|
File: emacs Node: Top, Up: (DIR), Next: Distrib
|
|
@end example
|
|
|
|
@noindent
|
|
In this case, the @file{dir} file name is written in upper case
|
|
letters---it can be written in either upper or lower case. This is not
|
|
true in general, it is a special case for @file{dir}.
|
|
|
|
|
|
@node 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 file, 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:@refill
|
|
|
|
@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
|
|
@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:@refill
|
|
|
|
@enumerate
|
|
@item
|
|
Write the pathname in the @file{dir} file as the second part of the menu.
|
|
|
|
@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.)@refill
|
|
|
|
@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.)
|
|
@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:@refill
|
|
|
|
@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.@refill
|
|
|
|
Alternatively, you could write the following in your @file{.emacs} file:
|
|
|
|
@vindex Info-directory-list
|
|
@example
|
|
@group
|
|
(require 'info)
|
|
(setq Info-directory-list
|
|
(cons (expand-file-name "/home/bob/info")
|
|
Info-directory-list))
|
|
@end group
|
|
@end example
|
|
|
|
This tells Emacs to merge the system @file{dir} file with the @file{dir}
|
|
file in @file{/home/bob/info}. Thus, Info will list the
|
|
@file{/home/bob/info/info-test} file as a menu entry in the
|
|
@file{/home/bob/info/dir} file. Emacs does the merging only when
|
|
@kbd{M-x info} is first run, so if you want to set
|
|
@code{Info-directory-list} in an Emacs session where you've already run
|
|
@code{info}, you must @code{(setq Info-dir-contents nil)} to force Emacs
|
|
to recompose the @file{dir} file.
|
|
|
|
@vindex INFOPATH
|
|
Finally, you can tell Info where to look by setting the @code{INFOPATH}
|
|
environment variable in your shell startup file, such as @file{.cshrc},
|
|
@file{.profile} or @file{autoexec.bat}. If you use a Bourne-compatible
|
|
shell such as @code{sh} or @code{bash} for your shell command
|
|
interpreter, you set the @code{INFOPATH} environment variable in the
|
|
@file{.profile} initialization file; but if you use @code{csh} or
|
|
@code{tcsh}, you set the variable in the @file{.cshrc} initialization
|
|
file. On MS-DOS/MS-Windows systems, you must set @code{INFOPATH} in
|
|
your @file{autoexec.bat} file or in the Registry. Each type of shell
|
|
uses a different syntax.
|
|
|
|
@itemize @bullet
|
|
@item
|
|
In a @file{.cshrc} file, you could set the @code{INFOPATH}
|
|
variable as follows:@refill
|
|
|
|
@smallexample
|
|
setenv INFOPATH .:~/info:/usr/local/emacs/info
|
|
@end smallexample
|
|
|
|
@item
|
|
In a @file{.profile} file, you would achieve the same effect by
|
|
writing:@refill
|
|
|
|
@smallexample
|
|
INFOPATH=.:$HOME/info:/usr/local/emacs/info
|
|
export INFOPATH
|
|
@end smallexample
|
|
|
|
@item
|
|
@pindex autoexec.bat
|
|
In a @file{autoexec.bat} file, you write this command@footnote{Note the
|
|
use of @samp{;} as the directory separator, and a different syntax for
|
|
using values of other environment variables.}:
|
|
|
|
@smallexample
|
|
set INFOPATH=.;%HOME%/info;c:/usr/local/emacs/info
|
|
@end smallexample
|
|
@end itemize
|
|
|
|
@noindent
|
|
The @samp{.} indicates the current directory as usual. Emacs uses the
|
|
@code{INFOPATH} environment variable to initialize the value of Emacs's
|
|
own @code{Info-directory-list} variable. The stand-alone 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@footnote{On MS-DOS/MS-Windows systems, use semi-colon 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=/local/info:
|
|
export INFOPATH
|
|
@end example
|
|
|
|
@noindent
|
|
will search @file{/local/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 CTRL-_ characters that Info needs will be present.
|
|
|
|
|
|
@node Installing Dir Entries
|
|
@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 dircategory
|
|
@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. Use @code{@@direntry} to specify the menu entries to add to the
|
|
Info directory file, and use @code{@@dircategory} to specify which part
|
|
of the Info directory to put it in. Here is how these commands are used
|
|
in this manual:
|
|
|
|
@smallexample
|
|
@@dircategory Texinfo documentation system
|
|
@@direntry
|
|
* Texinfo: (texinfo). The GNU documentation format.
|
|
* install-info: (texinfo)Invoking install-info. @dots{}
|
|
@dots{}
|
|
@@end direntry
|
|
@end smallexample
|
|
|
|
Here's what this produces in the Info file:
|
|
|
|
@smallexample
|
|
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 smallexample
|
|
|
|
@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.
|
|
|
|
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.
|
|
|
|
@cindex Free Software Directory
|
|
@cindex Dir categories, choosing
|
|
@cindex Categories, choosing
|
|
When choosing the categories for @code{@@dircategory}, we recommend
|
|
consulting the @uref{Free Sofware Directory,
|
|
http://www.gnu.org/directory}. If your program is not listed there, or
|
|
listed incorrectly or incompletely, please report the situation to the
|
|
directory maintainers (@email{bug-directory@@gnu.org}) so that the
|
|
category names can be kept in sync.
|
|
|
|
Here are a few examples:
|
|
@display
|
|
Emacs
|
|
Localization
|
|
Printing
|
|
Software Libraries
|
|
@end display
|
|
|
|
@cindex Invoking nodes, including in dir file
|
|
Each `Invoking' node for every program installed should have a
|
|
corresponding @code{@@direntry}. This lets users easily find the
|
|
documentation for the different programs they can run, as with the
|
|
traditional @command{man} system.
|
|
|
|
|
|
@node Invoking install-info
|
|
@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). 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 files, reading
|
|
@cindex Dir files, compressed
|
|
If any input file is compressed with @code{gzip} (@pxref{Invoking
|
|
gzip,,,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}.
|
|
|
|
Options:
|
|
|
|
@table @code
|
|
@item --delete
|
|
@opindex --delete
|
|
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.
|
|
|
|
@item --dir-file=@var{name}
|
|
@itemx -d @var{name}
|
|
@opindex --dir-file=@var{name}
|
|
@opindex -d @var{name}
|
|
Specify file name of the Info directory file. This is equivalent to
|
|
using the @var{dir-file} argument.
|
|
|
|
@item --entry=@var{text}
|
|
@itemx -e @var{text}
|
|
@opindex --entry=@var{text}
|
|
@opindex -e @var{text}
|
|
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
|
|
@itemx -h
|
|
@opindex --help
|
|
@opindex -h
|
|
Display a usage message listing basic usage and all available options,
|
|
then exit successfully.
|
|
|
|
@item --info-file=@var{file}
|
|
@itemx -i @var{file}
|
|
@opindex --info-file=@var{file}
|
|
@opindex -i @var{file}
|
|
Specify Info file to install in the directory.
|
|
Equivalent to using the @var{info-file} argument.
|
|
|
|
@item --info-dir=@var{dir}
|
|
@itemx -D @var{dir}
|
|
@opindex --info-dir=@var{dir}
|
|
@opindex -D @var{dir}
|
|
Specify the directory where @file{dir} resides.
|
|
Equivalent to @samp{--dir-file=@var{dir}/dir}.
|
|
|
|
@item --item=@var{text}
|
|
@opindex --item=@var{text}
|
|
Same as @samp{--entry=@var{text}}. An Info directory entry is actually
|
|
a menu item.
|
|
|
|
@item --quiet
|
|
@opindex --quiet
|
|
Suppress warnings.
|
|
|
|
@item --remove
|
|
@itemx -r
|
|
@opindex --remove
|
|
@opindex -r
|
|
Same as @samp{--delete}.
|
|
|
|
@item --section=@var{sec}
|
|
@itemx -s @var{sec}
|
|
@opindex --section=@var{sec}
|
|
@opindex -s @var{sec}
|
|
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.
|
|
|
|
@item --version
|
|
@itemx -V
|
|
@opindex --version
|
|
@opindex -V
|
|
@cindex version number, for install-info
|
|
Display version information and exit successfully.
|
|
|
|
@end table
|
|
|
|
|
|
@node Command List
|
|
@appendix @@-Command List
|
|
@cindex Alphabetical @@-command list
|
|
@cindex List of @@-commands
|
|
@cindex @@-command list
|
|
@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.
|
|
|
|
@sp 1
|
|
@table @code
|
|
@item @@@var{whitespace}
|
|
An @code{@@} followed by a space, tab, or newline produces a normal,
|
|
stretchable, interword space. @xref{Multiple Spaces}.
|
|
|
|
@item @@!
|
|
Generate an exclamation point that really does end 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 @@*
|
|
Force a line break. Do not end a paragraph that uses @code{@@*} with
|
|
an @code{@@refill} command. @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{- and hyphenation}.
|
|
|
|
@item @@.
|
|
Produce a period that really does end a sentence (usually after an
|
|
end-of-sentence capital letter). @xref{Ending a Sentence}.
|
|
|
|
@item @@:
|
|
Indicate to @TeX{} that an immediately preceding period, question
|
|
mark, exclamation mark, or colon does not end a sentence. Prevent
|
|
@TeX{} from inserting extra whitespace as it does at the end of a
|
|
sentence. The command has no effect on the Info file output.
|
|
@xref{Not Ending a Sentence}.
|
|
|
|
@item @@=
|
|
Generate a macron (bar) accent over the next character, as in @=o.
|
|
@xref{Inserting Accents}.
|
|
|
|
@item @@?
|
|
Generate a question mark that really does end a sentence (usually after
|
|
an end-of-sentence capital letter). @xref{Ending a Sentence}.
|
|
|
|
@item @@@@
|
|
Stands for an at sign, @samp{@@}.
|
|
@xref{Braces Atsigns, , Inserting @@ and braces}.
|
|
|
|
@item @@\
|
|
Stands for a backslash (@samp{\}) inside @code{@@math}.
|
|
@xref{math,,@code{math}}.
|
|
|
|
@item @@^
|
|
@itemx @@`
|
|
Generate a circumflex (hat) or grave accent, respectively, over the next
|
|
character, as in @^o and @`e.
|
|
@xref{Inserting Accents}.
|
|
|
|
@item @@@{
|
|
Stands for a left brace, @samp{@{}.
|
|
@xref{Braces Atsigns, , Inserting @@ and braces}.
|
|
|
|
@item @@@}
|
|
Stands for a right-hand brace, @samp{@}}.@*
|
|
@xref{Braces Atsigns, , Inserting @@ and 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 @@acronym@{@var{abbrev}@}
|
|
Tag @var{abbrev} as an acronym, that is, an abbreviation written in all
|
|
capital letters, such as `NASA'. @xref{acronym,, @code{acronym}}.
|
|
|
|
@item @@AE@{@}
|
|
@itemx @@ae@{@}
|
|
Generate the uppercase and lowercase AE ligatures, respectively:
|
|
@AE{}, @ae{}. @xref{Inserting Accents}.
|
|
|
|
@itemx @@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}} an alias for the existing command
|
|
@samp{@@@var{existing}}. @xref{alias}.
|
|
|
|
@item @@anchor@{@var{name}@}
|
|
Define @var{name} as the current location for use as a cross-reference
|
|
target. @xref{anchor,, @code{@@anchor}}.
|
|
|
|
@item @@appendix @var{title}
|
|
Begin an appendix. The title appears in the table
|
|
of contents of a printed manual. In Info, the title is
|
|
underlined with asterisks. @xref{unnumbered & appendix, , The
|
|
@code{@@unnumbered} and @code{@@appendix} Commands}.@refill
|
|
|
|
@item @@appendixsec @var{title}
|
|
@itemx @@appendixsection @var{title}
|
|
Begin an appendix section within an appendix. The section title appears
|
|
in the table of contents of a printed manual. In Info, the title is
|
|
underlined with equal signs. @code{@@appendixsection} is a longer
|
|
spelling of the @code{@@appendixsec} command. @xref{unnumberedsec
|
|
appendixsec heading, , Section Commands}.@refill
|
|
|
|
@item @@appendixsubsec @var{title}
|
|
Begin an appendix subsection within an appendix. The title appears
|
|
in the table of contents of a printed manual. In Info, the title is
|
|
underlined with hyphens. @xref{unnumberedsubsec appendixsubsec
|
|
subheading, , Subsection Commands}.@refill
|
|
|
|
@item @@appendixsubsubsec @var{title}
|
|
Begin an appendix subsubsection within an appendix subsection. The
|
|
title appears in the table of contents of a printed manual. In Info,
|
|
the title is underlined with periods. @xref{subsubsection,, The
|
|
`subsub' Commands}.@refill
|
|
|
|
@item @@asis
|
|
Used following @code{@@table}, @code{@@ftable}, and @code{@@vtable} to
|
|
print the table's first column without highlighting (``as is'').
|
|
@xref{Two-column Tables, , Making a Two-column Table}.@refill
|
|
|
|
@item @@author @var{author}
|
|
Typeset @var{author} flushleft and underline it. @xref{title
|
|
subtitle author, , The @code{@@title} and @code{@@author}
|
|
Commands}.@refill
|
|
|
|
@item @@b@{@var{text}@}
|
|
Print @var{text} in @b{bold} font. No effect in Info. @xref{Fonts}.@refill
|
|
|
|
@ignore
|
|
@item @@br
|
|
Force a paragraph break. If used within a line, follow @code{@@br}
|
|
with braces. @xref{br, , @code{@@br}}.@refill
|
|
@end ignore
|
|
|
|
@item @@bullet@{@}
|
|
Generate a large round dot, or the closest possible
|
|
thing to one. @xref{bullet, , @code{@@bullet}}.@refill
|
|
|
|
@item @@bye
|
|
Stop formatting a file. The formatters do not see the contents of a
|
|
file following an @code{@@bye} command. @xref{Ending a File}.@refill
|
|
|
|
@item @@c @var{comment}
|
|
Begin a comment in Texinfo. The rest of the line does not appear in
|
|
either the Info file or the printed manual. A synonym for
|
|
@code{@@comment}. @xref{Comments, , Comments}.@refill
|
|
|
|
@item @@cartouche
|
|
Highlight an example or quotation by drawing a box with rounded
|
|
corners around it. Pair with @code{@@end cartouche}. No effect in
|
|
Info. @xref{cartouche, , Drawing Cartouches Around Examples}.)@refill
|
|
|
|
@item @@center @var{line-of-text}
|
|
Center the line of text following the command.
|
|
@xref{titlefont center sp, , @code{@@center}}.@refill
|
|
|
|
@item @@centerchap @var{line-of-text}
|
|
Like @code{@@chapter}, but centers the chapter title. @xref{chapter,,
|
|
@code{@@chapter}}.
|
|
|
|
@item @@chapheading @var{title}
|
|
Print a chapter-like heading in the text, but not in the table of
|
|
contents of a printed manual. In Info, the title is underlined with
|
|
asterisks. @xref{majorheading & chapheading, , @code{@@majorheading}
|
|
and @code{@@chapheading}}.@refill
|
|
|
|
@item @@chapter @var{title}
|
|
Begin a chapter. The chapter title appears in the table of
|
|
contents of a printed manual. In Info, the title is underlined with
|
|
asterisks. @xref{chapter, , @code{@@chapter}}.@refill
|
|
|
|
@item @@cindex @var{entry}
|
|
Add @var{entry} to the index of concepts. @xref{Index Entries, ,
|
|
Defining the Entries of an Index}.@refill
|
|
|
|
@item @@cite@{@var{reference}@}
|
|
Highlight the name of a book or other reference that lacks a
|
|
companion Info file. @xref{cite, , @code{@@cite}}.@refill
|
|
|
|
@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{set clear value, , @code{@@set} @code{@@clear} @code{@@value}}.@refill
|
|
|
|
@item @@code@{@var{sample-code}@}
|
|
Highlight text that is an expression, a syntactically complete token
|
|
of a program, or a program name. @xref{code, , @code{@@code}}.@refill
|
|
|
|
@item @@command@{@var{command-name}@}
|
|
Indicate a command name, such as @command{ls}.
|
|
@xref{command,, @code{@@command}}.
|
|
|
|
@item @@comment @var{comment}
|
|
Begin a comment in Texinfo. The rest of the line does not appear in
|
|
either the Info file or the printed manual. A synonym for @code{@@c}.
|
|
@xref{Comments}.
|
|
|
|
@item @@contents
|
|
Print a complete table of contents. Has no effect in Info, which uses
|
|
menus instead. @xref{Contents, , Generating a Table of
|
|
Contents}.@refill
|
|
|
|
@item @@copyright@{@}
|
|
Generate a copyright symbol. @xref{copyright symbol,, @code{@@copyright@{@}}}.
|
|
|
|
@ignore
|
|
@item @@ctrl@{@var{ctrl-char}@}
|
|
Describe an @sc{ascii} control character. Insert actual control character
|
|
into Info file. @xref{ctrl, , @code{@@ctrl}}.@refill
|
|
@end ignore
|
|
|
|
@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}.@refill
|
|
|
|
@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}, and @ref{deffnx,, Def Cmds in Detail}.
|
|
|
|
@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}.@refill
|
|
|
|
@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}.@refill
|
|
|
|
@item @@definfoenclose @var{newcmd}, @var{before}, @var{after},
|
|
Create new @@-command @var{newcmd} for Info that marks text by enclosing
|
|
it in strings that precede and follow the text. @xref{definfoenclose}.
|
|
|
|
@item @@defivar @var{class} @var{instance-variable-name}
|
|
@itemx @@defivarx @var{class} @var{instance-variable-name}
|
|
This command formats a description for an instance variable in
|
|
object-oriented programming. The command is equivalent to @samp{@@defcv
|
|
@{Instance Variable@} @dots{}}. @xref{Definition Commands}, and
|
|
@ref{deffnx,, Def Cmds in Detail}.
|
|
|
|
@item @@defmac @var{macroname} @var{arguments}@dots{}
|
|
@itemx @@defmacx @var{macroname} @var{arguments}@dots{}
|
|
Format a description for a macro. The command is equivalent to
|
|
@samp{@@deffn Macro @dots{}}. @xref{Definition Commands}, and
|
|
@ref{deffnx,, Def Cmds in Detail}.
|
|
|
|
@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. The
|
|
command is equivalent to @samp{@@defop Method @dots{}}. Takes as
|
|
arguments the name of the class of the method, the name of the
|
|
method, and its arguments, if any. @xref{Definition Commands}, and
|
|
@ref{deffnx,, Def Cmds in Detail}.
|
|
|
|
@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 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. @xref{Definition
|
|
Commands}, and @ref{Abstract Objects}.
|
|
|
|
@item @@defopt @var{option-name}
|
|
@itemx @@defoptx @var{option-name}
|
|
Format a description for a user option. The command is equivalent to
|
|
@samp{@@defvr @{User Option@} @dots{}}. @xref{Definition Commands}, and
|
|
@ref{deffnx,, Def Cmds in Detail}.
|
|
|
|
@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. The command is equivalent to
|
|
@samp{@@deffn @{Special Form@} @dots{}}. @xref{Definition Commands},
|
|
and @ref{deffnx,, Def Cmds in Detail}.
|
|
|
|
@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. @code{@@deftp} takes as arguments
|
|
the category, the name of the type (which is a word like @samp{int} or
|
|
@samp{float}), and then the names of attributes of objects of that type.
|
|
@xref{Definition Commands}, and @ref{Data Types}.
|
|
|
|
@item @@deftypefn @var{classification} @var{data-type} @var{name} @var{arguments}@dots{}
|
|
@itemx @@deftypefnx @var{classification} @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
|
|
classification of entity being described, the type, the name of the
|
|
entity, and its arguments, if any. @xref{Definition Commands}, and
|
|
@ref{deffnx,, Def Cmds in Detail}.
|
|
|
|
@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}, and @ref{deffnx,, Def Cmds in Detail}.
|
|
|
|
@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 @@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}, and @ref{deffnx,, Def Cmds in Detail}.
|
|
|
|
@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}, and @ref{deffnx,, Def Cmds in Detail}.
|
|
|
|
@item @@deftypevr @var{classification} @var{data-type} @var{name}
|
|
@itemx @@deftypevrx @var{classification} @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
|
|
classification of entity being described, the type, and the name of the
|
|
entity. @xref{Definition Commands}, and @ref{deffnx,, Def Cmds in
|
|
Detail}.
|
|
|
|
@item @@defun @var{function-name} @var{arguments}@dots{}
|
|
@itemx @@defunx @var{function-name} @var{arguments}@dots{}
|
|
Format a description for functions. The command is equivalent to
|
|
@samp{@@deffn Function @dots{}}. @xref{Definition Commands}, and
|
|
@ref{deffnx,, Def Cmds in Detail}.
|
|
|
|
@item @@defvar @var{variable-name}
|
|
@itemx @@defvarx @var{variable-name}
|
|
Format a description for variables. The command is equivalent to
|
|
@samp{@@defvr Variable @dots{}}. @xref{Definition Commands}, and
|
|
@ref{deffnx,, Def Cmds in Detail}.
|
|
|
|
@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},
|
|
and @ref{deffnx,, Def Cmds in Detail}.
|
|
|
|
@item @@detailmenu
|
|
Avoid @code{makeinfo} confusion stemming from the detailed node listing
|
|
in a master menu. @xref{Master Menu Parts}.
|
|
|
|
@item @@dfn@{@var{term}@}
|
|
Highlight the introductory or defining use of a term.
|
|
@xref{dfn, , @code{@@dfn}}.@refill
|
|
|
|
@item @@dircategory @var{dirpart}
|
|
Specify a part of the Info directory menu where this file's entry should
|
|
go. @xref{Installing Dir Entries}.
|
|
|
|
@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{display, , @code{@@display}}.
|
|
|
|
@item @@dmn@{@var{dimension}@}
|
|
Format a unit of measure, as in 12@dmn{pt}. Causes @TeX{} to insert a
|
|
thin space before @var{dimension}. No effect in Info.
|
|
@xref{dmn, , @code{@@dmn}}.
|
|
|
|
@item @@documentdescription
|
|
Set the document description text, included in the HTML output. Pair
|
|
with @code{@@end documentdescription}. @xref{documentdescription,,
|
|
@code{@@documentdescription}}.
|
|
|
|
@item @@documentencoding @var{enc}
|
|
Declare the input encoding to be @var{enc}.
|
|
@xref{documentencoding,, @code{@@documentencoding}}.
|
|
|
|
@item @@documentlanguage @var{CC}
|
|
Declare the document language as the two-character ISO-639 abbreviation
|
|
@var{CC}. @xref{documentlanguage,, @code{@@documentlanguage}}.
|
|
|
|
@item @@dotaccent@{@var{c}@}
|
|
Generate a dot accent over the character @var{c}, as in @dotaccent{o}.
|
|
@xref{Inserting Accents}.
|
|
|
|
@item @@dots@{@}
|
|
Insert an ellipsis: @samp{@dots{}}.
|
|
@xref{dots, , @code{@@dots}}.@refill
|
|
|
|
@item @@email@{@var{address}[, @var{displayed-text}]@}
|
|
Indicate an electronic mail address.
|
|
@xref{email, , @code{@@email}}.
|
|
|
|
@item @@emph@{@var{text}@}
|
|
Highlight @var{text}; text is displayed in @emph{italics} in printed
|
|
output, and surrounded by asterisks in Info. @xref{Emphasis, ,
|
|
Emphasizing Text}.
|
|
|
|
@item @@end @var{environment}
|
|
Ends @var{environment}, as in @samp{@@end example}. @xref{Formatting
|
|
Commands,,@@-commands}.
|
|
|
|
@item @@env@{@var{environment-variable}@}
|
|
Indicate an environment variable name, such as @env{PATH}.
|
|
@xref{env,, @code{@@env}}.
|
|
|
|
@item @@enddots@{@}
|
|
Generate an end-of-sentence of ellipsis, like this @enddots{}
|
|
@xref{dots,,@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{enumerate, ,
|
|
@code{@@enumerate}}.@refill
|
|
|
|
@item @@equiv@{@}
|
|
Indicate to the reader the exact equivalence of two forms with a
|
|
glyph: @samp{@equiv{}}. @xref{Equivalence}.@refill
|
|
|
|
@item @@error@{@}
|
|
Indicate to the reader with a glyph that the following text is
|
|
an error message: @samp{@error{}}. @xref{Error Glyph}.@refill
|
|
|
|
@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}.@refill
|
|
|
|
@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}.@refill
|
|
|
|
@item @@example
|
|
Begin an example. Indent text, do not fill, and select fixed-width font.
|
|
Pair with @code{@@end example}. @xref{example, ,
|
|
@code{@@example}}.@refill
|
|
|
|
@item @@exampleindent @var{indent}
|
|
Indent example-like environments by @var{indent} number of spaces
|
|
(perhaps 0). @xref{exampleindent,, Paragraph Indenting}.
|
|
|
|
@item @@exclamdown@{@}
|
|
Produce an upside-down exclamation point. @xref{Inserting Accents}.
|
|
|
|
@item @@exdent @var{line-of-text}
|
|
Remove any indentation a line might have. @xref{exdent, ,
|
|
Undoing the Indentation of a Line}.@refill
|
|
|
|
@item @@expansion@{@}
|
|
Indicate the result of a macro expansion to the reader with a special
|
|
glyph: @samp{@expansion{}}.
|
|
@xref{expansion, , @expansion{} Indicating an Expansion}.@refill
|
|
|
|
@item @@file@{@var{filename}@}
|
|
Highlight the name of a file, buffer, node, or directory. @xref{file, ,
|
|
@code{@@file}}.@refill
|
|
|
|
@item @@finalout
|
|
Prevent @TeX{} from printing large black warning rectangles beside
|
|
over-wide lines. @xref{Overfull hboxes}.@refill
|
|
|
|
@item @@findex @var{entry}
|
|
Add @var{entry} to the index of functions. @xref{Index Entries, ,
|
|
Defining the Entries of an Index}.@refill
|
|
|
|
@item @@flushleft
|
|
@itemx @@flushright
|
|
Left justify every line but leave the right end ragged.
|
|
Leave font as is. Pair with @code{@@end flushleft}.
|
|
@code{@@flushright} analogous.
|
|
@xref{flushleft & flushright, , @code{@@flushleft} and
|
|
@code{@@flushright}}.@refill
|
|
|
|
@item @@footnote@{@var{text-of-footnote}@}
|
|
Enter a footnote. Footnote text is printed at the bottom of the page
|
|
by @TeX{}; Info may format in either `End' node or `Separate' node style.
|
|
@xref{Footnotes}.@refill
|
|
|
|
@item @@footnotestyle @var{style}
|
|
Specify an Info file's footnote style, either @samp{end} for the end
|
|
node style or @samp{separate} for the separate node style.
|
|
@xref{Footnotes}.@refill
|
|
|
|
@item @@format
|
|
Begin a kind of example. Like @code{@@display}, but do not narrow the
|
|
margins. Pair with @code{@@end format}. @xref{example,,
|
|
@code{@@example}}.
|
|
|
|
@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{ftable vtable, ,
|
|
@code{@@ftable} and @code{@@vtable}}.@refill
|
|
|
|
@item @@group
|
|
Hold text together that must appear on one printed page. Pair with
|
|
@code{@@end group}. Not relevant to Info. @xref{group, ,
|
|
@code{@@group}}.@refill
|
|
|
|
@item @@H@{@var{c}@}
|
|
Generate the long Hungarian umlaut accent over @var{c}, as in @H{o}.
|
|
|
|
@item @@heading @var{title}
|
|
Print an unnumbered section-like heading in the text, but not in the
|
|
table of contents of a printed manual. In Info, the title is
|
|
underlined with equal signs. @xref{unnumberedsec appendixsec heading,
|
|
, Section Commands}.@refill
|
|
|
|
@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{headings on off, , The
|
|
@code{@@headings} Command}.
|
|
|
|
@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{- and hyphenation,,
|
|
@code{@@-} and @code{@@hyphenation}}.
|
|
|
|
@item @@i@{@var{text}@}
|
|
Print @var{text} in @i{italic} font. No effect in Info. @xref{Fonts}.
|
|
|
|
@item @@ifclear @var{flag}
|
|
If @var{flag} is cleared, the Texinfo formatting commands format text
|
|
between @code{@@ifclear @var{flag}} and the following @code{@@end
|
|
ifclear} command.
|
|
@xref{set clear value, , @code{@@set} @code{@@clear} @code{@@value}}.@refill
|
|
|
|
@item @@ifhtml
|
|
@itemx @@ifinfo
|
|
Begin a stretch of text that will be ignored by @TeX{} when it typesets
|
|
the printed manual. @code{@@ifhtml} text appears only in the HTML
|
|
output. @code{@@ifinfo} output appears in both Info and (for historical
|
|
compatibility) plain text output . Pair with @code{@@end ifhtml}
|
|
resp.@: @code{@@end ifinfo}. @xref{Conditionals}.
|
|
|
|
@item @@ifnothtml
|
|
@itemx @@ifnotinfo
|
|
@itemx @@ifnotplaintext
|
|
@itemx @@ifnottex
|
|
@itemx @@ifnotxml
|
|
Begin a stretch of text that will be ignored in one output format but
|
|
not the others. The text appears in the formats not specified:
|
|
@code{@@ifnothtml} text is omitted from html output, etc. The exception
|
|
is @code{@@ifnotinfo} text, which is omitted from plain text output as
|
|
well as Info output. Pair with the corresponding @code{@@end
|
|
ifnot@var{format}}. @xref{Conditionals}.
|
|
|
|
@item @@ifplaintext
|
|
Begin a stretch of text that appears only in the plain text output.
|
|
Pair with @code{@@end ifplaintext}. @xref{Conditionals}.
|
|
|
|
@item @@ifset @var{flag}
|
|
If @var{flag} is set, the Texinfo formatting commands format text
|
|
between @code{@@ifset @var{flag}} and the following @code{@@end ifset}
|
|
command.
|
|
@xref{set clear value, , @code{@@set} @code{@@clear} @code{@@value}}.@refill
|
|
|
|
@item @@iftex
|
|
Begin a stretch of text that will not appear in the Info file, but
|
|
will be processed only by @TeX{}. Pair with @code{@@end iftex}.
|
|
@xref{Conditionals, , Conditionally Visible Text}.@refill
|
|
|
|
@item @@ifxml
|
|
Begin a stretch of text that appears only in the XML output.
|
|
Pair with @code{@@end ifxml}. @xref{Conditionals}.
|
|
|
|
@item @@ignore
|
|
Begin a stretch of text that will not appear in either the Info file
|
|
or the printed output. Pair with @code{@@end ignore}.
|
|
@xref{Comments, , Comments and Ignored Text}.@refill
|
|
|
|
@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}
|
|
Incorporate the contents of the file @var{filename} into the Info file
|
|
or printed document. @xref{Include Files}.@refill
|
|
|
|
@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{inforef, , Cross references using
|
|
@code{@@inforef}}.@refill
|
|
|
|
@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 backslash 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 @@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}.@refill
|
|
|
|
@item @@itemize @var{mark-generating-character-or-command}
|
|
Produce a sequence of indented paragraphs, with a mark inside the left
|
|
margin at the beginning of each paragraph. Pair with @code{@@end
|
|
itemize}. @xref{itemize, , @code{@@itemize}}.@refill
|
|
|
|
@item @@itemx
|
|
Like @code{@@item} but do not generate extra vertical space above the
|
|
item text. @xref{itemx, , @code{@@itemx}}.@refill
|
|
|
|
@item @@kbd@{@var{keyboard-characters}@}
|
|
Indicate text that is characters of input to be typed by
|
|
users. @xref{kbd, , @code{@@kbd}}.@refill
|
|
|
|
@item @@kbdinputstyle @var{style}
|
|
Specify when @code{@@kbd} should use a font distinct from @code{@@code}.
|
|
@xref{kbd, , @code{@@kbd}}.@refill
|
|
|
|
@item @@key@{@var{key-name}@}
|
|
Indicate a name for a key on a keyboard.
|
|
@xref{key, , @code{@@key}}.@refill
|
|
|
|
@item @@kindex @var{entry}
|
|
Add @var{entry} to the index of keys.
|
|
@xref{Index Entries, , Defining the Entries of an Index}.@refill
|
|
|
|
@item @@L@{@}
|
|
@itemx @@l@{@}
|
|
Generate the uppercase and lowercase Polish suppressed-L letters,
|
|
respectively: @L{}, @l{}.
|
|
|
|
@c Possibly this can be tossed now that we have macros. --karl, 16sep96.
|
|
@c Yes, let's toss it, it's pretty weird. --karl, 15jun97.
|
|
@c @item @@global@@let@var{new-command}=@var{existing-command}
|
|
@c Equate a new highlighting command with an existing one. Only for
|
|
@c @TeX{}. Write definition inside of @code{@@iftex} @dots{} @code{@@end
|
|
@c iftex}. @xref{Customized Highlighting}.@refill
|
|
|
|
@item @@lisp
|
|
Begin an example of Lisp code. Indent text, do not fill, and select
|
|
fixed-width font. Pair with @code{@@end lisp}. @xref{lisp, , @code{@@lisp}}.
|
|
|
|
@item @@lowersections
|
|
Change subsequent chapters to sections, sections to subsections, and so
|
|
on. @xref{Raise/lower sections, , @code{@@raisesections} and
|
|
@code{@@lowersections}}.@refill
|
|
|
|
@item @@macro @var{macroname} @{@var{params}@}
|
|
Define a new Texinfo command @code{@@@var{macroname}@{@var{params}@}}.
|
|
Only supported by @code{makeinfo} and @code{texi2dvi}. @xref{Defining
|
|
Macros}.
|
|
|
|
@item @@majorheading @var{title}
|
|
Print a chapter-like heading in the text, but not in the table of
|
|
contents of a printed manual. Generate more vertical whitespace before
|
|
the heading than the @code{@@chapheading} command. In Info, the chapter
|
|
heading line is underlined with asterisks. @xref{majorheading &
|
|
chapheading, , @code{@@majorheading} and @code{@@chapheading}}.@refill
|
|
|
|
@item @@math@{@var{mathematical-expression}@}
|
|
Format a mathematical expression.
|
|
@xref{math, , @code{@@math}: Inserting Mathematical Expressions}.
|
|
|
|
@item @@menu
|
|
Mark the beginning of a menu of nodes in Info. No effect in a printed
|
|
manual. Pair with @code{@@end menu}. @xref{Menus}.@refill
|
|
|
|
@item @@minus@{@}
|
|
Generate a minus sign, `@minus{}'. @xref{minus, , @code{@@minus}}.@refill
|
|
|
|
@item @@multitable @var{column-width-spec}
|
|
Begin a multi-column table. Pair with @code{@@end multitable}.
|
|
@xref{Multitable Column Widths}.
|
|
|
|
@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{need, ,
|
|
@code{@@need}}.@refill
|
|
|
|
@item @@node @var{name}, @var{next}, @var{previous}, @var{up}
|
|
Define the beginning of a new node in Info, and serve as a locator for
|
|
references for @TeX{}. @xref{node, , @code{@@node}}.@refill
|
|
|
|
@item @@noindent
|
|
Prevent text from being indented as if it were a new paragraph.
|
|
@xref{noindent, , @code{@@noindent}}.@refill
|
|
|
|
@item @@novalidate
|
|
Suppress validation of node references, omit creation of auxiliary files
|
|
with @TeX{}. Use before @code{@@setfilename}. @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}.@refill
|
|
|
|
@item @@OE@{@}
|
|
@itemx @@oe@{@}
|
|
Generate the uppercase and lowercase OE ligatures, respectively:
|
|
@OE{}, @oe{}. @xref{Inserting Accents}.
|
|
|
|
@item @@option@{@var{option-name}@}
|
|
Indicate a command-line option, such as @option{-l} or @option{--help}.
|
|
@xref{option,, @code{@@option}}.
|
|
|
|
@item @@page
|
|
Start a new page in a printed manual. No effect in Info.
|
|
@xref{page, , @code{@@page}}.@refill
|
|
|
|
@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{paragraphindent,, Paragraph Indenting}.
|
|
|
|
@item @@pindex @var{entry}
|
|
Add @var{entry} to the index of programs. @xref{Index Entries, , Defining
|
|
the Entries of an Index}.@refill
|
|
|
|
@item @@point@{@}
|
|
Indicate the position of point in a buffer to the reader with a
|
|
glyph: @samp{@point{}}. @xref{Point Glyph, , Indicating
|
|
Point in a Buffer}.@refill
|
|
|
|
@item @@pounds@{@}
|
|
Generate the pounds sterling currency sign.
|
|
@xref{pounds,,@code{@@pounds@{@}}}.
|
|
|
|
@item @@print@{@}
|
|
Indicate printed output to the reader with a glyph:
|
|
@samp{@print{}}. @xref{Print Glyph}.@refill
|
|
|
|
@item @@printindex @var{index-name}
|
|
Print an alphabetized two-column index in a printed manual or generate
|
|
an alphabetized menu of index entries for Info. @xref{Printing
|
|
Indices & Menus}.@refill
|
|
|
|
@item @@pxref@{@var{node-name}, [@var{entry}], [@var{topic-or-title}], [@var{info-file}], [@var{manual}]@}
|
|
Make a reference that starts with a lower case `see' in a printed
|
|
manual. Use within parentheses only. Do not follow command with a
|
|
punctuation mark---the Info formatting commands automatically insert
|
|
terminating punctuation as needed. Only the first argument is mandatory.
|
|
@xref{pxref, , @code{@@pxref}}.@refill
|
|
|
|
@item @@questiondown@{@}
|
|
Generate an upside-down question mark. @xref{Inserting Accents}.
|
|
|
|
@item @@quotation
|
|
Narrow the margins to indicate text that is quoted from another real
|
|
or imaginary work. Write command on a line of its own. Pair with
|
|
@code{@@end quotation}. @xref{quotation, ,
|
|
@code{@@quotation}}.@refill
|
|
|
|
@item @@r@{@var{text}@}
|
|
Print @var{text} in @r{roman} font. No effect in Info.
|
|
@xref{Fonts}.@refill
|
|
|
|
@item @@raisesections
|
|
Change subsequent sections to chapters, subsections to sections, and so
|
|
on. @xref{Raise/lower sections, , @code{@@raisesections} and
|
|
@code{@@lowersections}}.@refill
|
|
|
|
@item @@ref@{@var{node-name}, [@var{entry}], [@var{topic-or-title}], [@var{info-file}], [@var{manual}]@}
|
|
Make a reference. In a printed manual, the reference does not start
|
|
with a `See'. Follow command with a punctuation mark. Only the first
|
|
argument is mandatory. @xref{ref, , @code{@@ref}}.@refill
|
|
|
|
@item @@refill
|
|
In Info, refill and indent the paragraph after all the other processing
|
|
has been done. No effect on @TeX{}, which always refills. This command
|
|
is no longer needed, since all formatters now automatically refill.
|
|
@xref{Refilling Paragraphs}.@refill
|
|
|
|
@item @@result@{@}
|
|
Indicate the result of an expression to the reader with a special
|
|
glyph: @samp{@result{}}. @xref{result, , @code{@@result}}.@refill
|
|
|
|
@item @@ringaccent@{@var{c}@}
|
|
Generate a ring accent over the next character, as in @ringaccent{o}.
|
|
@xref{Inserting Accents}.
|
|
|
|
@item @@samp@{@var{text}@}
|
|
Highlight @var{text} that is a literal example of a sequence of
|
|
characters. Used for single characters, for statements, and often for
|
|
entire shell commands. @xref{samp, , @code{@@samp}}.@refill
|
|
|
|
@item @@sc@{@var{text}@}
|
|
Set @var{text} in a printed output in @sc{the small caps font} and
|
|
set text in the Info file in uppercase letters.
|
|
@xref{Smallcaps}.@refill
|
|
|
|
@item @@section @var{title}
|
|
Begin a section within a chapter. In a printed manual, the section
|
|
title is numbered and appears in the table of contents. In Info, the
|
|
title is underlined with equal signs. @xref{section, ,
|
|
@code{@@section}}.@refill
|
|
|
|
@item @@set @var{flag} [@var{string}]
|
|
Make @var{flag} active, causing the Texinfo formatting commands to
|
|
format text between subsequent pairs of @code{@@ifset @var{flag}} and
|
|
@code{@@end ifset} commands. Optionally, set value of @var{flag} to
|
|
@var{string}.
|
|
@xref{set clear value, , @code{@@set} @code{@@clear} @code{@@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{setchapternewpage, ,
|
|
@code{@@setchapternewpage}}.
|
|
|
|
@item @@setcontentsaftertitlepage
|
|
Put the table of contents after the @samp{@@end titlepage} even if the
|
|
@code{@@contents} command is not there. @xref{Contents}.
|
|
|
|
@item @@setfilename @var{info-file-name}
|
|
Provide a name to be used by the Info file. This command is essential
|
|
for @TeX{} formatting as well, even though it produces no output.
|
|
@xref{setfilename, , @code{@@setfilename}}.
|
|
|
|
@item @@setshortcontentsaftertitlepage
|
|
Place the short table of contents after the @samp{@@end titlepage}
|
|
command even if the @code{@@shortcontents} command is not there.
|
|
@xref{Contents}.
|
|
|
|
@item @@settitle @var{title}
|
|
Provide a title for page headers in a printed manual, and the default
|
|
document description for HTML @samp{<head>}.
|
|
@xref{settitle, , @code{@@settitle}}.@refill
|
|
|
|
@item @@shortcontents
|
|
Print a short table of contents. Not relevant to Info, which uses
|
|
menus rather than tables of contents. A synonym for
|
|
@code{@@summarycontents}. @xref{Contents, , Generating a Table of
|
|
Contents}.@refill
|
|
|
|
@item @@shorttitlepage @var{title}
|
|
Generate a minimal title page. @xref{titlepage,,@code{@@titlepage}}.
|
|
|
|
@item @@smallbook
|
|
Cause @TeX{} to produce a printed manual in a 7 by 9.25 inch format
|
|
rather than the regular 8.5 by 11 inch format. @xref{smallbook, ,
|
|
Printing Small Books}. Also, see @ref{small}.
|
|
|
|
@item @@smalldisplay
|
|
Begin a kind of example. Like @code{@@smallexample} (narrow margins, no
|
|
filling), but do not select the fixed-width font. Pair with @code{@@end
|
|
smalldisplay}. @xref{small}.
|
|
|
|
@item @@smallexample
|
|
Indent text to indicate an example. Do not fill, select fixed-width
|
|
font, narrow the margins. In printed manuals, print text in a smaller
|
|
font than with @code{@@example}. Pair with @code{@@end smallexample}.
|
|
@xref{small}.
|
|
|
|
@item @@smallformat
|
|
Begin a kind of example. Like @code{@@smalldisplay}, but do not narrow
|
|
the margins. Pair with @code{@@end smallformat}. @xref{small}.
|
|
|
|
@item @@smalllisp
|
|
Begin an example of Lisp code. Same as @code{@@smallexample}. Pair
|
|
with @code{@@end smalllisp}. @xref{small}.
|
|
|
|
@item @@sp @var{n}
|
|
Skip @var{n} blank lines. @xref{sp, , @code{@@sp}}.@refill
|
|
|
|
@item @@ss@{@}
|
|
Generate the German sharp-S es-zet letter, @ss{}. @xref{Inserting Accents}.
|
|
|
|
@item @@strong @{@var{text}@}
|
|
Emphasize @var{text} by typesetting it in a @strong{bold} font for the
|
|
printed manual and by surrounding it with asterisks for Info.
|
|
@xref{emph & strong, , Emphasizing Text}.@refill
|
|
|
|
@item @@subheading @var{title}
|
|
Print an unnumbered subsection-like heading in the text, but not in
|
|
the table of contents of a printed manual. In Info, the title is
|
|
underlined with hyphens. @xref{unnumberedsubsec appendixsubsec
|
|
subheading, , @code{@@unnumberedsubsec} @code{@@appendixsubsec}
|
|
@code{@@subheading}}.@refill
|
|
|
|
@item @@subsection @var{title}
|
|
Begin a subsection within a section. In a printed manual, the
|
|
subsection title is numbered and appears in the table of contents. In
|
|
Info, the title is underlined with hyphens. @xref{subsection, ,
|
|
@code{@@subsection}}.@refill
|
|
|
|
@item @@subsubheading @var{title}
|
|
Print an unnumbered subsubsection-like heading in the text, but not in
|
|
the table of contents of a printed manual. In Info, the title is
|
|
underlined with periods. @xref{subsubsection, , The `subsub'
|
|
Commands}.@refill
|
|
|
|
@item @@subsubsection @var{title}
|
|
Begin a subsubsection within a subsection. In a printed manual,
|
|
the subsubsection title is numbered and appears in the table of
|
|
contents. In Info, the title is underlined with periods.
|
|
@xref{subsubsection, , The `subsub' Commands}.@refill
|
|
|
|
@item @@subtitle @var{title}
|
|
In a printed manual, set a subtitle in a normal sized font flush to
|
|
the right-hand side of the page. Not relevant to Info, which does not
|
|
have title pages. @xref{title subtitle author, , @code{@@title}
|
|
@code{@@subtitle} and @code{@@author} Commands}.@refill
|
|
|
|
@item @@summarycontents
|
|
Print a short table of contents. Not relevant to Info, which uses
|
|
menus rather than tables of contents. A synonym for
|
|
@code{@@shortcontents}. @xref{Contents, , Generating a Table of
|
|
Contents}.@refill
|
|
|
|
@item @@syncodeindex @var{from-index} @var{into-index}
|
|
Merge the index named in the first argument into the index named in
|
|
the second argument, printing the entries from the first index in
|
|
@code{@@code} font. @xref{Combining Indices}.@refill
|
|
|
|
@item @@synindex @var{from-index} @var{into-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}.@refill
|
|
|
|
@item @@t@{@var{text}@}
|
|
Print @var{text} in a @t{fixed-width}, typewriter-like font.
|
|
No effect in Info. @xref{Fonts}.@refill
|
|
|
|
@item @@tab
|
|
Separate columns in a multitable. @xref{Multitable Rows}.
|
|
|
|
@item @@table @var{formatting-command}
|
|
Begin a two-column table, 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{ftable vtable, , @code{@@ftable} and @code{@@vtable}},
|
|
and @ref{itemx, , @code{@@itemx}}.@refill
|
|
|
|
@item @@TeX@{@}
|
|
Insert the logo @TeX{}. @xref{TeX and copyright, , Inserting @TeX{}
|
|
and @copyright{}}.@refill
|
|
|
|
@item @@tex
|
|
Enter @TeX{} completely. Pair with @code{@@end tex}. @xref{Raw
|
|
Formatter Commands}.
|
|
|
|
@item @@thischapter
|
|
@itemx @@thischaptername
|
|
@itemx @@thisfile
|
|
@itemx @@thispage
|
|
@itemx @@thistitle
|
|
Only allowed in a heading or footing. Stands for the number and name of
|
|
the current chapter (in the format `Chapter 1: Title'), the chapter name
|
|
only, the filename, the current page number, and the title of the
|
|
document, respectively. @xref{Custom Headings, , How to Make Your Own
|
|
Headings}.@refill
|
|
|
|
@item @@tie@{@}
|
|
Generate a normal interword space at which a line break is not allowed.
|
|
@xref{tie,, @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}.@refill
|
|
|
|
@item @@title @var{title}
|
|
In a printed manual, set a title flush to the left-hand side of the
|
|
page in a larger than normal font and underline it with a black rule.
|
|
Not relevant to Info, which does not have title pages. @xref{title
|
|
subtitle author, , The @code{@@title} @code{@@subtitle} and
|
|
@code{@@author} Commands}.@refill
|
|
|
|
@item @@titlefont@{@var{text}@}
|
|
In a printed manual, print @var{text} in a larger than normal font.
|
|
Not relevant to Info, which does not have title pages.
|
|
@xref{titlefont center sp, , The @code{@@titlefont} @code{@@center}
|
|
and @code{@@sp} Commands}.@refill
|
|
|
|
@item @@titlepage
|
|
Indicate to Texinfo the beginning of the title page. Write command on
|
|
a line of its own. Pair with @code{@@end titlepage}. Nothing between
|
|
@code{@@titlepage} and @code{@@end titlepage} appears in Info.
|
|
@xref{titlepage, , @code{@@titlepage}}.@refill
|
|
|
|
@item @@today@{@}
|
|
Insert the current date, in `1 Jan 1900' style. @xref{Custom
|
|
Headings, , How to Make Your Own Headings}.@refill
|
|
|
|
@item @@top @var{title}
|
|
In a Texinfo file to be formatted with @code{makeinfo}, identify the
|
|
topmost @code{@@node} in the file, which must be written on the line
|
|
immediately preceding the @code{@@top} command. Used for
|
|
@code{makeinfo}'s node pointer insertion feature. The title is
|
|
underlined with asterisks. Both the @code{@@node} line and the @code{@@top}
|
|
line normally should be enclosed by @code{@@ifnottex} and @code{@@end
|
|
ifnottex}. In @TeX{} and @code{texinfo-format-buffer}, the @code{@@top}
|
|
command is merely a synonym for @code{@@unnumbered}. @xref{makeinfo
|
|
Pointer Creation, , Creating Pointers with @code{makeinfo}}.
|
|
|
|
@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 @@unnumbered @var{title}
|
|
In a printed manual, begin a chapter that appears without chapter
|
|
numbers of any kind. The title appears in the table of contents of a
|
|
printed manual. In Info, the title is underlined with asterisks.
|
|
@xref{unnumbered & appendix, , @code{@@unnumbered} and
|
|
@code{@@appendix}}.@refill
|
|
|
|
@item @@unnumberedsec @var{title}
|
|
In a printed manual, begin a section that appears without section
|
|
numbers of any kind. The title appears in the table of contents of a
|
|
printed manual. In Info, the title is underlined with equal signs.
|
|
@xref{unnumberedsec appendixsec heading, , Section Commands}.@refill
|
|
|
|
@item @@unnumberedsubsec @var{title}
|
|
In a printed manual, begin an unnumbered subsection within a
|
|
chapter. The title appears in the table of contents of a printed
|
|
manual. In Info, the title is underlined with hyphens.
|
|
@xref{unnumberedsubsec appendixsubsec subheading, ,
|
|
@code{@@unnumberedsubsec} @code{@@appendixsubsec}
|
|
@code{@@subheading}}.@refill
|
|
|
|
@item @@unnumberedsubsubsec @var{title}
|
|
In a printed manual, begin an unnumbered subsubsection within a
|
|
chapter. The title appears in the table of contents of a printed
|
|
manual. In Info, the title is underlined with periods.
|
|
@xref{subsubsection, , The `subsub' Commands}.@refill
|
|
|
|
@item @@uref@{@var{url}[, @var{displayed-text}][, @var{replacement}@}
|
|
Define a cross reference to an external uniform resource locator for the
|
|
World Wide Web. @xref{uref, , @code{@@uref}}.@refill
|
|
|
|
@item @@url@{@var{url}@}
|
|
Indicate text that is a uniform resource locator for the World Wide
|
|
Web. @xref{url, , @code{@@url}}.@refill
|
|
|
|
@item @@v@{@var{c}@}
|
|
Generate check accent over the character @var{c}, as in @v{o}.
|
|
@xref{Inserting Accents}.
|
|
|
|
@item @@value@{@var{flag}@}
|
|
Replace @var{flag} with the value to which it is set by @code{@@set
|
|
@var{flag}}.
|
|
@xref{set clear value, , @code{@@set} @code{@@clear} @code{@@value}}.@refill
|
|
|
|
@item @@var@{@var{metasyntactic-variable}@}
|
|
Highlight a metasyntactic variable, which is something that stands for
|
|
another piece of text. @xref{var, , Indicating Metasyntactic
|
|
Variables}.@refill
|
|
|
|
@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{verb,,@code{verb}}.
|
|
|
|
@item @@verbatim
|
|
Output the text of the environment exactly as is (in the fixed-width
|
|
font). Pair with @code{@@end verbatim}. @xref{verbatim,,@code{verbatim}}.
|
|
|
|
@item @@verbatiminclude @var{filename}
|
|
Output the contents of @var{filename} exactly as is (in the fixed-width font).
|
|
@xref{verbatiminclude,,@code{verbatiminclude}}.
|
|
|
|
@item @@vindex @var{entry}
|
|
Add @var{entry} to the index of variables. @xref{Index Entries, ,
|
|
Defining the Entries of an Index}.@refill
|
|
|
|
@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}.) @code{@@vskip} may be used
|
|
only in contexts ignored for Info. @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{ftable vtable, ,
|
|
@code{@@ftable} and @code{@@vtable}}.@refill
|
|
|
|
@item @@w@{@var{text}@}
|
|
Prevent @var{text} from being split across two lines. Do not end a
|
|
paragraph that uses @code{@@w} with an @code{@@refill} command.
|
|
@xref{w, , @code{@@w}}.@refill
|
|
|
|
@item @@xref@{@var{node-name}, [@var{entry}], [@var{topic-or-title}], [@var{info-file}], [@var{manual}]@}
|
|
Make a reference that starts with `See' in a printed manual. Follow
|
|
command with a punctuation mark. Only the first argument is
|
|
mandatory. @xref{xref, , @code{@@xref}}.@refill
|
|
@end table
|
|
|
|
|
|
@node Tips
|
|
@appendix Tips and Hints
|
|
|
|
Here are some tips for writing Texinfo documentation:@refill
|
|
|
|
@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
|
|
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!
|
|
|
|
Write many index entries, in different ways.
|
|
Readers like indices; they are helpful and convenient.
|
|
|
|
Although it is easiest to write index entries as you write the body of
|
|
the text, some people prefer to write entries afterwards. In either
|
|
case, write an entry before the paragraph to which it applies. This
|
|
way, an index entry points to the first page of a paragraph that is
|
|
split across pages.
|
|
|
|
Here are more hints we have found valuable:
|
|
|
|
@itemize @bullet
|
|
@item
|
|
Write each index entry differently, so each entry refers to a different
|
|
place in the document.
|
|
|
|
@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
|
|
Consistently capitalize the first word of every concept index entry,
|
|
or else consistently use lower case. Terse entries often call for
|
|
lower case; 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 upper case 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.
|
|
|
|
@item
|
|
Write the indexing commands that refer to a whole section immediately
|
|
after the section command, and write the indexing commands that refer to
|
|
a paragraph before that paragraph.
|
|
|
|
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.)
|
|
@end itemize
|
|
|
|
@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. Otherwise, a formatter may fold title and
|
|
paragraph together.
|
|
|
|
@item
|
|
Always insert a blank line before an @code{@@table} command and after an
|
|
@code{@@end table} command; but never insert a blank line after an
|
|
@code{@@table} command or before an @code{@@end 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 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 Editions, Dates and Versions
|
|
|
|
Include edition numbers, version numbers, and dates in the
|
|
@code{@@copying} text (for people reading the Texinfo file, and for the
|
|
legal copyright in the output files). Then use @code{@@insertcopying}
|
|
in the @code{@@titlepage} section (for people reading the printed
|
|
output) and the Top node (for people reading the online output).
|
|
|
|
It is easiest to do this using @code{@@set} and @code{@@value}.
|
|
@xref{value Example, , @code{@@value} Example}, and @ref{GNU Sample Texts}.
|
|
|
|
|
|
@subsubheading Definition Commands
|
|
|
|
Definition commands are @code{@@deffn}, @code{@@defun},
|
|
@code{@@defmac}, and the like, and enable you to write descriptions in
|
|
a uniform format.@refill
|
|
|
|
@itemize @bullet
|
|
@item
|
|
Write just one definition command for each entity you define with a
|
|
definition command. The automatic indexing feature creates an index
|
|
entry that leads the reader to the definition.
|
|
|
|
@item
|
|
Use @code{@@table} @dots{} @code{@@end table} in an appendix that
|
|
contains a summary of functions, not @code{@@deffn} or other definition
|
|
commands.
|
|
@end itemize
|
|
|
|
@subsubheading Capitalization
|
|
|
|
@itemize @bullet
|
|
@item
|
|
Capitalize ``Texinfo''; it is a name. Do not write the @samp{x} or
|
|
@samp{i} in upper case.
|
|
|
|
@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{}.
|
|
@end itemize
|
|
|
|
@subsubheading Spaces
|
|
|
|
Do not use spaces to format a Texinfo file, except inside of
|
|
@code{@@example} @dots{} @code{@@end example} and similar 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
|
|
@ifinfo
|
|
@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 ifinfo
|
|
|
|
@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 an
|
|
@samp{@@code}. 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. @TeX{}
|
|
typesets these as a long dash and the Info formatters reduce three
|
|
hyphens to two.
|
|
@end itemize
|
|
|
|
@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 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 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 @@pxref
|
|
|
|
@c !!! maybe include this in the tips on pxref
|
|
@ignore
|
|
By the way, it is okay to use pxref with something else in front of
|
|
it within the parens, as long as the pxref is followed by the close
|
|
paren, and the material inside the parens is not part of a larger
|
|
sentence. Also, you can use xref inside parens as part of a complete
|
|
sentence so long as you terminate the cross reference with punctuation.
|
|
@end ignore
|
|
Absolutely never use @code{@@pxref} except in the special context for
|
|
which it is designed: inside parentheses, with the closing parenthesis
|
|
following immediately after the closing brace. One formatter
|
|
automatically inserts closing punctuation and the other does not. This
|
|
means that the output looks right both in printed output and in an Info
|
|
file, but only when the command is used inside parentheses.
|
|
|
|
@subsubheading Invoking from a Shell
|
|
|
|
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 ANSI C Syntax
|
|
|
|
When you use @code{@@example} to describe a C function's calling
|
|
conventions, use the ANSI C syntax, like this:@refill
|
|
|
|
@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}.@refill
|
|
|
|
@need 800
|
|
Avoid the obsolete style that looks like this:@refill
|
|
|
|
@example
|
|
#include <dld.h>
|
|
|
|
dld_init (path)
|
|
char *path;
|
|
@end example
|
|
|
|
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.@refill
|
|
|
|
@subsubheading Bad Examples
|
|
|
|
Here are several examples of bad writing to avoid:
|
|
|
|
In this example, say, `` @dots{} you must @code{@@dfn}@{check
|
|
in@} the new version.'' That flows better.
|
|
|
|
@quotation
|
|
When you are done editing the file, you must perform a
|
|
@code{@@dfn}@{check in@}.
|
|
@end quotation
|
|
|
|
In the following example, say, ``@dots{} makes a unified interface such as VC
|
|
mode possible.''
|
|
|
|
@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
|
|
|
|
And in this example, you should specify what `it' refers to:
|
|
|
|
@quotation
|
|
If you are working with other people, it assists in coordinating
|
|
everyone's changes so they do not step on each other.
|
|
@end quotation
|
|
|
|
@subsubheading And Finally @dots{}
|
|
|
|
@itemize @bullet
|
|
@item
|
|
Pronounce @TeX{} as if the @samp{X} were a Greek `chi', as the last
|
|
sound in the name `Bach'. But pronounce Texinfo as in `speck':
|
|
``teckinfo''.
|
|
|
|
@item
|
|
Write notes for yourself at the very end of a Texinfo file after the
|
|
@code{@@bye}. None of the formatters 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
|
|
@appendix Sample Texinfo Files
|
|
@cindex Sample Texinfo files
|
|
|
|
The first example is from the first chapter (@pxref{Short Sample}),
|
|
given here in its entirety, without commentary. The second
|
|
includes the full texts to be used in GNU manuals.
|
|
|
|
@menu
|
|
* Short Sample Texinfo File::
|
|
* GNU Sample Texts::
|
|
* Verbatim Copying License::
|
|
* All-permissive Copying License::
|
|
@end menu
|
|
|
|
|
|
@node Short Sample Texinfo File
|
|
@section Short Sample
|
|
@cindex Sample Texinfo file, no comments
|
|
|
|
Here is a complete, short sample Texinfo file, without any commentary.
|
|
You can see this file, with comments, in the first chapter. @xref{Short
|
|
Sample}.
|
|
|
|
In a nutshell: The @command{makeinfo} program transforms a Texinfo
|
|
source file such as this into an Info file or HTML; and @TeX{} typesets
|
|
it for a printed manual.
|
|
|
|
|
|
@sp 1
|
|
@example
|
|
\input texinfo @@c -*-texinfo-*-
|
|
@@c %**start of header
|
|
@@setfilename sample.info
|
|
@@settitle Sample Manual 1.0
|
|
@@c %**end of header
|
|
|
|
@@copying
|
|
This is a short example of a complete Texinfo file.
|
|
|
|
Copyright (C) 2003 Free Software Foundation, Inc.
|
|
@@end copying
|
|
|
|
@@titlepage
|
|
@@title Sample Title
|
|
@@page
|
|
@@vskip 0pt plus 1filll
|
|
@@insertcopying
|
|
@@end titlepage
|
|
|
|
@@c Output the table of the contents at the beginning.
|
|
@@contents
|
|
|
|
@@ifnottex
|
|
@@node Top
|
|
@@top GNU Sample
|
|
|
|
@@insertcopying
|
|
@@end ifnottex
|
|
|
|
@@menu
|
|
* First Chapter:: The first chapter is the
|
|
only chapter in this sample.
|
|
* Index:: Complete index.
|
|
@@end menu
|
|
|
|
|
|
@@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 Index
|
|
@@unnumbered Index
|
|
|
|
@@printindex cp
|
|
|
|
@@bye
|
|
@end example
|
|
|
|
|
|
@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 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.
|
|
@xref{Beginning a File}, for a full explanation of that minimal
|
|
example.
|
|
|
|
Here are some notes on the example:
|
|
|
|
@itemize @bullet
|
|
@item
|
|
@cindex $Id:
|
|
@cindex CVS $Id:
|
|
@cindex RCS $Id:
|
|
@cindex Documentation identification
|
|
@cindex Identification of documentation
|
|
The @samp{$Id:} comment is for the CVS (@pxref{Top,, Overview, cvs,
|
|
Concurrent Versions System}) or RCS (see rcsintro(1)) version control
|
|
systems, which expand it into a string such as:
|
|
@example
|
|
$Id: texinfo.txi,v 1.29 2003/02/04 15:17:21 karl Exp $
|
|
@end example
|
|
(This is useful in all sources that use version control, not just manuals.)
|
|
You may wish to include the @samp{$Id:} comment in the @code{@@copying}
|
|
text, if you want a completely unambiguous reference to the
|
|
documentation version.
|
|
|
|
@item
|
|
@pindex automake@r{, and version info}
|
|
@vindex UPDATED @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{Top,, Introduction, automake, GNU
|
|
Automake}). It sets the @samp{VERSION} and @samp{UPDATED} values used
|
|
elsewhere. If your distribution doesn't use Automake, but you do use
|
|
Emacs, you may find the 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} is for constructing the Info directory.
|
|
@xref{Installing Dir Entries}, which includes a variety of recommended
|
|
category names.
|
|
|
|
@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
|
|
It is best to include the entire GNU Free Documentation License in a GNU
|
|
manual, unless the manual is only a few pages long. Of course this
|
|
sample is even shorter than that, but it includes the FDL anyway in
|
|
order to show one conventional way to do so. The @file{fdl.texi} file
|
|
is available on the GNU machines and in the Texinfo and other GNU
|
|
source distributions.
|
|
|
|
The FDL provides for omitting itself under certain conditions, but in
|
|
that case the sample texts given here have to be modified. @xref{GNU
|
|
Free Documentation License}.
|
|
|
|
@item
|
|
If your manual has invariant sections (again, see the license itself for
|
|
details), then don't forget to change the text here accordingly.
|
|
|
|
@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-*-
|
|
@comment $Id: texinfo.txi,v 1.29 2003/02/04 15:17:21 karl Exp $
|
|
@comment %**start of header
|
|
@setfilename sample.info
|
|
@include version.texi
|
|
@settitle GNU Sample @value{VERSION}
|
|
@syncodeindex pg cp
|
|
@comment %**end of header
|
|
@copying
|
|
This manual is for GNU Sample
|
|
(version @value{VERSION}, @value{UPDATED}),
|
|
which is an example in the Texinfo documentation.
|
|
|
|
Copyright @copyright{} 2003 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.1 or
|
|
any later version published by the Free Software Foundation; with no
|
|
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
|
and with the Back-Cover Texts as in (a) below. A copy of the
|
|
license is included in the section entitled ``GNU Free Documentation
|
|
License.''
|
|
|
|
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
|
|
this GNU Manual, like GNU software. Copies published by the Free
|
|
Software Foundation raise funds for GNU development.''
|
|
@end quotation
|
|
@end copying
|
|
|
|
@dircategory Texinfo documentation system
|
|
@direntry
|
|
* sample: (sample)Invoking sample.
|
|
@end direntry
|
|
|
|
@titlepage
|
|
@title GNU Sample
|
|
@subtitle for version @value{VERSION}, @value{UPDATED}
|
|
@author A.U. Thor (@email{bug-texinfo@@gnu.org})
|
|
@page
|
|
@vskip 0pt plus 1filll
|
|
@insertcopying
|
|
@end titlepage
|
|
|
|
@contents
|
|
|
|
@ifnottex
|
|
@node Top
|
|
@top GNU Sample
|
|
|
|
@insertcopying
|
|
@end ifnottex
|
|
|
|
@menu
|
|
* Invoking sample::
|
|
* Copying This Manual::
|
|
* Index::
|
|
@end menu
|
|
|
|
|
|
@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 was, you could see its basic usage
|
|
and command line options here.
|
|
|
|
|
|
@node Copying This Manual
|
|
@appendix Copying This Manual
|
|
|
|
@menu
|
|
* GNU Free Documentation License:: License for copying this manual.
|
|
@end menu
|
|
|
|
@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 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 documents that express your personal views,
|
|
feelings or experiences, it is more appropriate to use a license
|
|
permitting only verbatim copying.
|
|
|
|
Here is 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{} 2003 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 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{} 2003 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 Include Files
|
|
@appendix Include Files
|
|
@cindex Include files
|
|
|
|
When @TeX{} or an Info formatting command sees an @code{@@include}
|
|
command in a Texinfo file, it processes the contents of the file named
|
|
by the command and incorporates them into the DVI or Info file being
|
|
created. Index entries from the included file are incorporated into
|
|
the indices of the output file.
|
|
|
|
Include files let you keep a single large document as a collection of
|
|
conveniently small parts.
|
|
|
|
@menu
|
|
* Using Include Files:: How to use the @code{@@include} command.
|
|
* texinfo-multiple-files-update:: How to create and update nodes and
|
|
menus when using included files.
|
|
* Include Files Requirements:: What @code{texinfo-multiple-files-update} expects.
|
|
* Sample Include File:: A sample outer file with included files
|
|
within it; and a sample included file.
|
|
* Include Files Evolution:: How use of the @code{@@include} command
|
|
has changed over time.
|
|
@end menu
|
|
|
|
@node Using Include Files
|
|
@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
|
|
|
|
The name of the file is taken literally, with a single exception:
|
|
@code{@@value@{@var{var}@}} references are expanded. This makes it
|
|
possible to reliably include files in other directories in a
|
|
distribution. @xref{verbatiminclude,,@code{@@verbatiminclude}}, for
|
|
an example.
|
|
|
|
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 phrase is inserted
|
|
into the output file as is. Likewise, you should not end an included
|
|
file with an @code{@@bye} command; nothing after @code{@@bye} is
|
|
formatted.
|
|
|
|
In the 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.@refill
|
|
|
|
Conventionally, an included file begins with an @code{@@node} line that
|
|
is followed by an @code{@@chapter} line. Each included file is one
|
|
chapter. This makes it easy to use the regular node and menu creating
|
|
and updating commands to create the node pointers and menus within the
|
|
included file. However, the simple Emacs node and menu creating and
|
|
updating commands do not work with multiple Texinfo files. Thus you
|
|
cannot use these commands to fill in the `Next', `Previous', and `Up'
|
|
pointers of the @code{@@node} line that begins the included file. Also,
|
|
you cannot use the regular commands to create a master menu for the
|
|
whole file. Either you must insert the menus and the `Next',
|
|
`Previous', and `Up' pointers by hand, or you must use the GNU Emacs
|
|
Texinfo mode command, @code{texinfo-multiple-files-update}, that is
|
|
designed for @code{@@include} files.@refill
|
|
|
|
|
|
@node texinfo-multiple-files-update
|
|
@section @code{texinfo-multiple-files-update}
|
|
@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 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:@refill
|
|
|
|
@table @kbd
|
|
@item M-x texinfo-multiple-files-update
|
|
Called without any arguments:@refill
|
|
|
|
@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.@refill
|
|
|
|
@item
|
|
Create or update the `Top' level node pointers of the outer or
|
|
overall file.@refill
|
|
|
|
@item
|
|
Create or update a main menu in the outer file.@refill
|
|
@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.@refill
|
|
@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 @strong{all} the `Next', `Previous', and `Up' pointers
|
|
of all the included files.@refill
|
|
|
|
@item
|
|
Create or update @strong{all} the menus of all the included
|
|
files.@refill
|
|
|
|
@item
|
|
Create or update the `Top' level node pointers of the outer or
|
|
overall file.@refill
|
|
|
|
@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.@refill
|
|
@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 @strong{every} pointer and menu in @strong{all} the files and then inserts a
|
|
master menu.@refill
|
|
|
|
|
|
@node Include Files Requirements
|
|
@section 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.@refill
|
|
|
|
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 an @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.@refill
|
|
|
|
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.@refill
|
|
|
|
|
|
@node Sample Include 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 before running @code{texinfo-multiple-files-update}, which
|
|
would insert a main or master menu:
|
|
|
|
@example
|
|
@group
|
|
\input texinfo @@c -*-texinfo-*-
|
|
@c %**start of header
|
|
@@setfilename include-example.info
|
|
@@settitle Include Example
|
|
@c %**end of header
|
|
@end group
|
|
|
|
... @xref{Sample Texinfo Files}, for
|
|
examples of the rest of the frontmatter ...
|
|
|
|
@group
|
|
@@ifnottex
|
|
@@node Top
|
|
@@top Include Example
|
|
@@end ifnottex
|
|
@end group
|
|
|
|
@group
|
|
@@include foo.texinfo
|
|
@@include bar.texinfo
|
|
@@include concept-index.texinfo
|
|
@@bye
|
|
@end group
|
|
@end example
|
|
|
|
An included file, such as @file{foo.texinfo}, 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.texinfo} might be as simple as this:
|
|
|
|
@example
|
|
@group
|
|
@@node Concept Index
|
|
@@unnumbered Concept Index
|
|
|
|
@@printindex cp
|
|
@end group
|
|
@end example
|
|
|
|
The outer Texinfo source file for @cite{The GNU Emacs Lisp Reference
|
|
Manual} is named @file{elisp.texi}. This outer file contains a master
|
|
menu with 417 entries and a list of 41 @code{@@include}
|
|
files.
|
|
|
|
|
|
@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.@refill
|
|
|
|
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}.)@refill
|
|
|
|
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.)@refill
|
|
|
|
However, because large Info files are now split automatically, it is
|
|
no longer necessary to keep them small.@refill
|
|
|
|
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.@refill
|
|
|
|
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.@refill
|
|
|
|
|
|
@node Headings
|
|
@appendix Page Headings
|
|
@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. (Headings and footings have no meaning to Info, which is
|
|
not paginated.)@refill
|
|
|
|
@menu
|
|
* Headings Introduced:: Conventions for using page headings.
|
|
* Heading Format:: Standard page heading formats.
|
|
* Heading Choice:: How to specify the type of page heading.
|
|
* Custom Headings:: How to create your own headings and footings.
|
|
@end menu
|
|
|
|
@node Headings Introduced, Heading Format, Headings, Headings
|
|
@ifinfo
|
|
@heading Headings Introduced
|
|
@end ifinfo
|
|
|
|
Texinfo provides standard page heading formats for manuals that are
|
|
printed on one side of each sheet of paper and for manuals that are
|
|
printed on both sides of the paper. Typically, you will use these
|
|
formats, but you can specify your own format if you wish.@refill
|
|
|
|
In addition, you can specify whether chapters should begin on a new
|
|
page, or merely continue the same page as the previous chapter; and if
|
|
chapters begin on new pages, you can specify whether they must be
|
|
odd-numbered pages.@refill
|
|
|
|
By convention, a book is printed on both sides of each sheet of paper.
|
|
When you open a book, the right-hand page is odd-numbered, and
|
|
chapters begin on right-hand pages---a preceding left-hand page is
|
|
left blank if necessary. Reports, however, are often printed on just
|
|
one side of paper, and chapters begin on a fresh page immediately
|
|
following the end of the preceding chapter. In short or informal
|
|
reports, chapters often do not begin on a new page at all, but are
|
|
separated from the preceding text by a small amount of whitespace.@refill
|
|
|
|
The @code{@@setchapternewpage} command controls whether chapters begin
|
|
on new pages, and whether one of the standard heading formats is used.
|
|
In addition, Texinfo has several heading and footing commands that you
|
|
can use to generate your own heading and footing formats.@refill
|
|
|
|
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.@refill
|
|
|
|
@node Heading Format, Heading Choice, Headings Introduced, Headings
|
|
@comment node-name, next, previous, up
|
|
@section 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.
|
|
|
|
By default, nothing is specified for the footing of a Texinfo file,
|
|
so the footing remains blank.@refill
|
|
|
|
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.@refill
|
|
|
|
@need 950
|
|
A single-sided page looks like this:
|
|
|
|
@example
|
|
@group
|
|
_______________________
|
|
| |
|
|
| chapter page number |
|
|
| |
|
|
| Start of text ... |
|
|
| ... |
|
|
| |
|
|
|
|
@end group
|
|
@end example
|
|
|
|
The standard format for two-sided printing depends on whether the page
|
|
number is even or odd. By convention, even-numbered pages are on the
|
|
left- and odd-numbered pages are on the right. (@TeX{} will adjust the
|
|
widths of the left- and right-hand margins. Usually, widths are
|
|
correct, but during double-sided printing, it is wise to check that
|
|
pages will bind properly---sometimes a printer will produce output in
|
|
which the even-numbered pages have a larger right-hand margin than the
|
|
odd-numbered pages.)@refill
|
|
|
|
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.@refill
|
|
|
|
@need 750
|
|
Two pages, side by side as in an open book, look like this:@refill
|
|
|
|
@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.@refill
|
|
|
|
@node Heading Choice, Custom Headings, Heading Format, Headings
|
|
@comment node-name, next, previous, up
|
|
@section Specifying the Type of Heading
|
|
|
|
@TeX{} does not begin to generate page headings for a standard Texinfo
|
|
file until it reaches the @code{@@end titlepage} command. Thus, the
|
|
title and copyright pages are not numbered. The @code{@@end
|
|
titlepage} command causes @TeX{} to begin to generate page headings
|
|
according to a standard format specified by the
|
|
@code{@@setchapternewpage} command that precedes the
|
|
@code{@@titlepage} section.@refill
|
|
|
|
@need 1000
|
|
There are four possibilities:@refill
|
|
|
|
@table @asis
|
|
@item No @code{@@setchapternewpage} command
|
|
Cause @TeX{} to specify the single-sided heading format, with chapters
|
|
on new pages. This is the same as @code{@@setchapternewpage on}.@refill
|
|
|
|
@item @code{@@setchapternewpage on}
|
|
Specify the single-sided heading format, with chapters on new pages.@refill
|
|
|
|
@item @code{@@setchapternewpage off}
|
|
Cause @TeX{} to start a new chapter on the same page as the last page of
|
|
the preceding chapter, after skipping some vertical whitespace. Also
|
|
cause @TeX{} to typeset for single-sided printing. (You can override
|
|
the headers format with the @code{@@headings double} command; see
|
|
@ref{headings on off, , The @code{@@headings} Command}.)@refill
|
|
|
|
@item @code{@@setchapternewpage odd}
|
|
Specify the double-sided heading format, with chapters on new pages.@refill
|
|
@end table
|
|
|
|
@noindent
|
|
Texinfo lacks an @code{@@setchapternewpage even} command.@refill
|
|
|
|
@node Custom Headings, , Heading Choice, Headings
|
|
@comment node-name, next, previous, up
|
|
@section 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} @code{@@everyfooting} generate page headers and
|
|
footers that are the same for both even- and odd-numbered pages.
|
|
@item
|
|
@code{@@evenheading} and @code{@@evenfooting} command 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
|
|
|
|
Write custom heading specifications in the Texinfo file immediately
|
|
after the @code{@@end titlepage} command.
|
|
You must cancel the predefined heading commands with the
|
|
@code{@@headings off} command before defining your own
|
|
specifications.@refill
|
|
|
|
@need 1000
|
|
Here is how to tell @TeX{} 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:@refill
|
|
|
|
@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.@refill
|
|
|
|
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.@refill
|
|
|
|
@need 950
|
|
Here are the six heading and footing commands:@refill
|
|
|
|
@findex everyheading
|
|
@findex everyfooting
|
|
@table @code
|
|
@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.@refill
|
|
|
|
@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, or anywhere else in a Texinfo file so long as
|
|
they are between @code{@@iftex} and @code{@@end iftex} commands.@refill
|
|
|
|
@need 1000
|
|
Here are the @samp{@@this@dots{}} commands:@refill
|
|
|
|
@table @code
|
|
@findex thispage
|
|
@item @@thispage
|
|
Expands to the current page number.@refill
|
|
@c !!! Karl Berry says that `thissection' can fail on page breaks.
|
|
@ignore
|
|
@item @@thissection
|
|
Expands to the name of the current section.@refill
|
|
@end ignore
|
|
|
|
@findex thischaptername
|
|
@item @@thischaptername
|
|
Expands to the name of the current chapter.@refill
|
|
|
|
@findex thischapter
|
|
@item @@thischapter
|
|
Expands to the number and name of the current
|
|
chapter, in the format `Chapter 1: Title'.@refill
|
|
|
|
@findex thistitle
|
|
@item @@thistitle
|
|
Expands to the name of the document, as specified by the
|
|
@code{@@settitle} command.@refill
|
|
|
|
@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.)@refill
|
|
@end table
|
|
|
|
@noindent
|
|
You can also use the @code{@@today@{@}} command, which expands to the
|
|
current date, in `1 Jan 1900' format.@refill
|
|
@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:@refill
|
|
|
|
@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.@refill
|
|
|
|
|
|
@node Catching Mistakes
|
|
@appendix Formatting 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.
|
|
|
|
Emacs has two tools for catching the @@-command mistakes and two for
|
|
catching structuring mistakes.@refill
|
|
|
|
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.@refill
|
|
|
|
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.@refill
|
|
|
|
@menu
|
|
* makeinfo Preferred:: @code{makeinfo} finds errors.
|
|
* Debugging with Info:: How to catch errors with Info formatting.
|
|
* Debugging with TeX:: How to catch errors with @TeX{} formatting.
|
|
* Using texinfo-show-structure:: How to use @code{texinfo-show-structure}.
|
|
* Using occur:: How to list all lines containing a pattern.
|
|
* Running Info-Validate:: How to find badly referenced nodes.
|
|
@end menu
|
|
|
|
@node makeinfo Preferred, Debugging with Info, Catching Mistakes, Catching Mistakes
|
|
@ifinfo
|
|
@heading @code{makeinfo} Find Errors
|
|
@end ifinfo
|
|
|
|
The @code{makeinfo} 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.@refill
|
|
|
|
If you can, use the updating commands to create and insert pointers
|
|
and menus. These prevent many errors. Then use @code{makeinfo} (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 @code{makeinfo}, or your problem is very puzzling, then you
|
|
may want to use the tools described in this appendix.@refill
|
|
|
|
@node Debugging with Info, Debugging with TeX, makeinfo Preferred, Catching Mistakes
|
|
@comment node-name, next, previous, up
|
|
@section 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.@refill
|
|
|
|
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}.@refill
|
|
|
|
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).@refill
|
|
|
|
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:@refill
|
|
|
|
@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:@refill
|
|
|
|
@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:@refill
|
|
|
|
@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.@refill
|
|
|
|
Sometimes @code{texinfo-format-region} fails to detect mistakes. For
|
|
example, in the following, the closing brace is swapped with the
|
|
closing parenthesis:@refill
|
|
|
|
@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:@refill
|
|
|
|
@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}).)
|
|
|
|
@c !!! section on using Elisp debugger ignored.
|
|
@ignore
|
|
Sometimes @code{texinfo-format-region} will stop long after the
|
|
original error; this is because it does not discover the problem until
|
|
then. In this case, you will need to backtrack.@refill
|
|
|
|
@c menu
|
|
@c * Using the Emacs Lisp Debugger:: How to use the Emacs Lisp debugger.
|
|
@c end menu
|
|
|
|
@c node Using the Emacs Lisp Debugger
|
|
@c appendixsubsec Using the Emacs Lisp Debugger
|
|
@c index Using the Emacs Lisp debugger
|
|
@c index Emacs Lisp debugger
|
|
@c index Debugger, using the Emacs Lisp
|
|
|
|
If an error is especially elusive, you can turn on the Emacs Lisp
|
|
debugger and look at the backtrace; this tells you where in the
|
|
@code{texinfo-format-region} function the problem occurred. You can
|
|
turn on the debugger with the command:@refill
|
|
|
|
@example
|
|
M-x set-variable @key{RET} debug-on-error @key{RET} t @key{RET}
|
|
@end example
|
|
|
|
@noindent
|
|
and turn it off with
|
|
|
|
@example
|
|
M-x set-variable @key{RET} debug-on-error @key{RET} nil @key{RET}
|
|
@end example
|
|
|
|
Often, when you are using the debugger, it is easier to follow what is
|
|
going on if you use the Emacs Lisp files that are not byte-compiled.
|
|
The byte-compiled sources send octal numbers to the debugger that may
|
|
look mysterious. To use the uncompiled source files, load
|
|
@file{texinfmt.el} and @file{texinfo.el} with the @kbd{M-x load-file}
|
|
command.@refill
|
|
|
|
The debugger will not catch an error if @code{texinfo-format-region}
|
|
does not detect one. In the example shown above,
|
|
@code{texinfo-format-region} did not find the error when the whole
|
|
list was formatted, but only when part of the list was formatted.
|
|
When @code{texinfo-format-region} did not find an error, the debugger
|
|
did not find one either. @refill
|
|
|
|
However, when @code{texinfo-format-region} did report an error, it
|
|
invoked the debugger. This is the backtrace it produced:@refill
|
|
|
|
@example
|
|
---------- Buffer: *Backtrace* ----------
|
|
Signalling: (search-failed "[@},]")
|
|
re-search-forward("[@},]")
|
|
(while ...)
|
|
(let ...)
|
|
texinfo-format-parse-args()
|
|
(let ...)
|
|
texinfo-format-xref()
|
|
funcall(texinfo-format-xref)
|
|
(if ...)
|
|
(let ...)
|
|
(if ...)
|
|
(while ...)
|
|
texinfo-format-scan()
|
|
(save-excursion ...)
|
|
(let ...)
|
|
texinfo-format-region(103370 103631)
|
|
* call-interactively(texinfo-format-region)
|
|
---------- Buffer: *Backtrace* ----------
|
|
@end example
|
|
|
|
The backtrace is read from the bottom up.
|
|
@code{texinfo-format-region} was called interactively; and it, in
|
|
turn, called various functions, including @code{texinfo-format-scan},
|
|
@code{texinfo-format-xref} and @code{texinfo-format-parse-args}.
|
|
Inside the function @code{texinfo-format-parse-args}, the function
|
|
@code{re-search-forward} was called; it was this function that could
|
|
not find the missing right-hand brace.@refill
|
|
|
|
@xref{Lisp Debug, , Debugging Emacs Lisp, emacs, The GNU Emacs
|
|
Manual}, for more information.@refill
|
|
@end ignore
|
|
|
|
@node Debugging with TeX, Using texinfo-show-structure, Debugging with Info, Catching Mistakes
|
|
@comment node-name, next, previous, up
|
|
@section Catching Errors with @TeX{} Formatting
|
|
@cindex Catching errors with @TeX{} formatting
|
|
@cindex Debugging with @TeX{} formatting
|
|
|
|
You can also catch mistakes when you format a file with @TeX{}.@refill
|
|
|
|
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.)@refill
|
|
|
|
For example, @TeX{} was run on a Texinfo file, part of which is shown
|
|
here:@refill
|
|
|
|
@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.)@@refill
|
|
---------- Buffer: texinfo.texi ----------
|
|
@end example
|
|
|
|
@noindent
|
|
(The cross reference lacks a closing brace.)
|
|
@TeX{} produced the following output, after which it stopped:@refill
|
|
|
|
@example
|
|
---------- Buffer: *tex-shell* ----------
|
|
Runaway argument?
|
|
@{sorting indices, for more information about sorting
|
|
indices.) @@refill @@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.@refill
|
|
|
|
Unfortunately, @TeX{} is not always so helpful, and sometimes you must
|
|
truly be a Sherlock Holmes to discover what went wrong.@refill
|
|
|
|
In any case, if you run into a problem like this, you can do one of three
|
|
things.@refill
|
|
|
|
@enumerate
|
|
@item
|
|
You can tell @TeX{} to continue running and ignore just this error by
|
|
typing @key{RET} at the @samp{?} prompt.@refill
|
|
|
|
@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.@refill
|
|
|
|
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.@refill
|
|
@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 that@refill
|
|
|
|
@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.@refill
|
|
|
|
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.@refill
|
|
|
|
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.@refill
|
|
|
|
@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.)@refill
|
|
|
|
@node Using texinfo-show-structure, Using occur, Debugging with TeX, Catching Mistakes
|
|
@comment node-name, next, previous, up
|
|
@section Using @code{texinfo-show-structure}
|
|
@cindex Showing the structure of a file
|
|
@findex texinfo-show-structure
|
|
|
|
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.@refill
|
|
|
|
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.@refill
|
|
|
|
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:@refill
|
|
|
|
@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 an @@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}.@refill
|
|
|
|
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.@refill
|
|
|
|
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}).)@refill
|
|
|
|
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.@refill
|
|
|
|
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.@refill
|
|
|
|
@node Using occur, Running Info-Validate, Using texinfo-show-structure, Catching Mistakes
|
|
@comment node-name, next, previous, up
|
|
@section 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@refill
|
|
|
|
@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.@refill
|
|
|
|
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.@refill
|
|
|
|
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.@refill
|
|
|
|
@xref{Other Repeating Search, , Using Occur, emacs , The GNU Emacs Manual},
|
|
for more information.@refill
|
|
|
|
@node Running Info-Validate, , Using occur, Catching Mistakes
|
|
@comment node-name, next, previous, up
|
|
@section Finding Badly Referenced Nodes
|
|
@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.@refill
|
|
|
|
The @code{makeinfo} program validates pointers automatically, so you
|
|
do not need to use the @code{Info-validate} command if you are using
|
|
@code{makeinfo}. You only may need to use @code{Info-validate} if you
|
|
are unable to run @code{makeinfo} 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.@refill
|
|
|
|
@menu
|
|
* Using Info-validate:: How to run @code{Info-validate}.
|
|
* Unsplit:: How to create an unsplit file.
|
|
* Tagifying:: How to tagify a file.
|
|
* Splitting:: How to split a file manually.
|
|
@end menu
|
|
|
|
@node Using Info-validate, Unsplit, Running Info-Validate, Running Info-Validate
|
|
@subsection Running @code{Info-validate}
|
|
@cindex Running @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:@refill
|
|
|
|
@example
|
|
M-x Info-validate
|
|
@end example
|
|
|
|
@noindent
|
|
Note that the @code{Info-validate} command requires an upper case
|
|
`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*}.@refill
|
|
|
|
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:@refill
|
|
|
|
@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).@refill
|
|
|
|
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:@refill
|
|
|
|
@example
|
|
In node "Texinfo Mode", should have Previous: Overview
|
|
@end example
|
|
|
|
@noindent
|
|
This is because every `Next' pointer should be matched by a
|
|
`Previous' (in the node where the `Next' points) which points back.@refill
|
|
|
|
@code{Info-validate} also checks that all menu entries and cross references
|
|
point to actual nodes.@refill
|
|
|
|
@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, Tagifying, Using Info-validate, Running Info-Validate
|
|
@comment node-name, next, previous, up
|
|
@subsection Creating an Unsplit File
|
|
@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 70,000 bytes or so), you need to run the
|
|
@code{texinfo-format-buffer} or @code{makeinfo-buffer} command in such
|
|
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.@refill
|
|
|
|
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:@refill
|
|
|
|
@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, Texinfo will not split the file and will not create
|
|
a tag table for it. @refill
|
|
@cindex Making a tag table manually
|
|
@cindex Tag table, making manually
|
|
|
|
@node Tagifying, Splitting, Unsplit, Running Info-Validate
|
|
@subsection Tagifying a File
|
|
|
|
After creating an unsplit Info file, you must create a tag table for
|
|
it. Visit the Info file you wish to tagify and type:@refill
|
|
|
|
@example
|
|
M-x Info-tagify
|
|
@end example
|
|
|
|
@noindent
|
|
(Note the upper case @samp{I} in @code{Info-tagify}.) This creates an
|
|
Info file with a tag table that you can validate.@refill
|
|
|
|
The third step is to validate the Info file:@refill
|
|
|
|
@example
|
|
M-x Info-validate
|
|
@end example
|
|
|
|
@noindent
|
|
(Note the upper case @samp{I} in @code{Info-validate}.)
|
|
In brief, the steps are:@refill
|
|
|
|
@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.@refill
|
|
|
|
@node Splitting, , Tagifying, Running Info-Validate
|
|
@comment node-name, next, previous, up
|
|
@subsection Splitting a File Manually
|
|
@cindex Splitting an Info file manually
|
|
@cindex Info file, 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{Creating an Info File}.)@refill
|
|
|
|
The split-off files are called the indirect subfiles.@refill
|
|
|
|
Info files are split to save memory. With smaller files, Emacs does not
|
|
have make such a large buffer to hold the information.@refill
|
|
|
|
If an Info file has more than 30 nodes, you should also make a tag
|
|
table for it. @xref{Using Info-validate}, for information
|
|
about creating a tag table. (Again, tag tables are usually created
|
|
automatically by the formatting command; you only need to create a tag
|
|
table yourself if you are doing the job manually. Most likely, you
|
|
will do this for a large, unsplit file on which you have run
|
|
@code{Info-validate}.)@refill
|
|
|
|
@c Info-split is autoloaded in `loaddefs.el' in Emacs 18.51
|
|
@ignore
|
|
Before running @code{Info-split}, you need to load the @code{info} library
|
|
into Emacs by giving the command @kbd{M-x load-library @key{RET} info
|
|
@key{RET}}.
|
|
@end ignore
|
|
|
|
Visit the Info file you wish to tagify and split and type the two
|
|
commands:@refill
|
|
|
|
@example
|
|
M-x Info-tagify
|
|
M-x Info-split
|
|
@end example
|
|
|
|
@noindent
|
|
(Note that the @samp{I} in @samp{Info} is upper case.)@refill
|
|
|
|
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.@refill
|
|
|
|
The primary file still functions as an Info file, but it contains just
|
|
the tag table and a directory of subfiles.@refill
|
|
|
|
|
|
@node Refilling Paragraphs
|
|
@appendix Refilling Paragraphs
|
|
@cindex Refilling paragraphs
|
|
@cindex Filling paragraphs
|
|
@cindex Paragraphs, filling
|
|
@findex refill
|
|
|
|
The @code{@@refill} command refills and, optionally, indents the first
|
|
line of a paragraph.@footnote{Perhaps the command should have been
|
|
called the @code{@@refillandindent} command, but @code{@@refill} is
|
|
shorter and the name was chosen before indenting was possible.} The
|
|
@code{@@refill} command is no longer important, but we describe it here
|
|
because you once needed it. You will see it in many old Texinfo
|
|
files.@refill
|
|
|
|
Without refilling, paragraphs containing long @@-constructs may look
|
|
bad after formatting because the formatter removes @@-commands and
|
|
shortens some lines more than others. In the past, neither the
|
|
@code{texinfo-format-region} command nor the
|
|
@code{texinfo-format-buffer} command refilled paragraphs
|
|
automatically. The @code{@@refill} command had to be written at the
|
|
end of every paragraph to cause these formatters to fill them. (Both
|
|
@TeX{} and @code{makeinfo} have always refilled paragraphs
|
|
automatically.) Now, all the Info formatters automatically fill and
|
|
indent those paragraphs that need to be filled and indented.@refill
|
|
|
|
The @code{@@refill} command causes @code{texinfo-format-region} and
|
|
@code{texinfo-format-buffer} to refill a paragraph in the Info file
|
|
@emph{after} all the other processing has been done. For this reason,
|
|
you can not use @code{@@refill} with a paragraph containing either
|
|
@code{@@*} or @code{@@w@{ @dots{} @}} since the refilling action will
|
|
override those two commands.@refill
|
|
|
|
The @code{texinfo-format-region} and @code{texinfo-format-buffer}
|
|
commands now automatically append @code{@@refill} to the end of each
|
|
paragraph that should be filled. They do not append @code{@@refill} to
|
|
the ends of paragraphs that contain @code{@@*} or @w{@code{@@w@{ @dots{}@}}}
|
|
and therefore do not refill or indent them.@refill
|
|
|
|
|
|
@node Command Syntax
|
|
@appendix @@-Command Syntax
|
|
@cindex @@-command syntax
|
|
@cindex Syntax, of @@-commands
|
|
@cindex Command syntax
|
|
|
|
The character @samp{@@} is used to start special Texinfo commands.
|
|
(It has the same meaning that @samp{\} has in plain @TeX{}.) Texinfo
|
|
has four types of @@-command:@refill
|
|
|
|
@table @asis
|
|
@item 1. Non-alphabetic commands.
|
|
These commands consist of an @@ followed by a punctuation mark or other
|
|
character that is not part of the alphabet. Non-alphabetic commands are
|
|
almost always part of the text within a paragraph, and never take any
|
|
argument. The two characters (@@ and the other one) are complete in
|
|
themselves; none is followed by braces. The non-alphabetic commands
|
|
are: @code{@@.}, @code{@@:}, @code{@@*}, @code{@@@kbd{SPACE}},
|
|
@code{@@@kbd{TAB}}, @code{@@@kbd{NL}}, @code{@@@@}, @code{@@@{}, and
|
|
@code{@@@}}.@refill
|
|
|
|
@item 2. Alphabetic commands that do not require arguments.
|
|
These commands start with @@ followed by a word followed by left- and
|
|
right-hand braces. These commands insert special symbols in the
|
|
document; they do not require arguments. For example,
|
|
@code{@@dots@{@}} @result{} @samp{@dots{}}, @code{@@equiv@{@}}
|
|
@result{} @samp{@equiv{}}, @code{@@TeX@{@}} @result{} `@TeX{}',
|
|
and @code{@@bullet@{@}} @result{} @samp{@bullet{}}.@refill
|
|
|
|
@item 3. Alphabetic commands that require arguments within braces.
|
|
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.}@refill
|
|
|
|
@item 4. Alphabetic commands that occupy an entire line.
|
|
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.@refill
|
|
@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 2 and does not require an argument; if it makes sense to use the
|
|
command together with other text as part of a paragraph, the command
|
|
is in class 3 and must be followed by an argument in braces;
|
|
otherwise, it is in class 4 and uses the rest of the line as its
|
|
argument.@refill
|
|
|
|
The purpose of having a different syntax for commands of classes 3 and
|
|
4 is to make Texinfo files easier to read, and also to help the GNU
|
|
Emacs paragraph and filling commands work properly. There is only one
|
|
exception to this rule: the 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 @emph{not} require braces. @code{@@refill} never confuses the
|
|
Emacs paragraph commands because it cannot appear at the beginning of
|
|
a line.@refill
|
|
|
|
|
|
@node Obtaining TeX
|
|
@appendix How to Obtain @TeX{}
|
|
@cindex Obtaining @TeX{}
|
|
@cindex @TeX{}, how to obtain
|
|
|
|
@c !!! Here is information about obtaining TeX. Update it whenever.
|
|
@c !!! Also consider updating TeX.README on ftp.gnu.org.
|
|
@c Updated by RJC on 1 March 1995, conversation with MacKay.
|
|
@c Updated by kb@cs.umb.edu on 29 July 1996.
|
|
@c Updated by kb@cs.umb.edu on 25 April 1997.
|
|
@c Updated by kb@cs.umb.edu on 27 February 1998.
|
|
@TeX{} is freely redistributable. You can obtain @TeX{} for Unix
|
|
systems via anonymous ftp or on physical media. The core material
|
|
consists of the Web2c @TeX{} distribution (@uref{http://tug.org/web2c}).
|
|
|
|
Instructions for retrieval by anonymous ftp and information on other
|
|
available distributions:
|
|
@example
|
|
@uref{ftp://tug.org/tex/unixtex.ftp}
|
|
@uref{http://tug.org/unixtex.ftp}
|
|
@end example
|
|
|
|
The Free Software Foundation provides a core distribution on its Source
|
|
Code CD-ROM suitable for printing Texinfo manuals. To order it, contact:
|
|
|
|
@display
|
|
@group
|
|
Free Software Foundation, Inc.
|
|
59 Temple Place Suite 330
|
|
Boston, MA @ @ 02111-1307
|
|
USA
|
|
Telephone: @w{+1-617-542-5942}
|
|
Fax: (including Japan) @w{+1-617-542-2652}
|
|
Free Dial Fax (in Japan):
|
|
@w{ } @w{ } @w{ } 0031-13-2473 (KDD)
|
|
@w{ } @w{ } @w{ } 0066-3382-0158 (IDC)
|
|
Electronic mail: @code{gnu@@gnu.org}
|
|
@end group
|
|
@end display
|
|
|
|
Many other @TeX{} distributions are available; see
|
|
@uref{http://tug.org/}.
|
|
|
|
|
|
@c These are no longer ``new'', and the explanations
|
|
@c are all given elsewhere anyway, I think. --karl, 25apr97.
|
|
@c So ignore the entire appendix.
|
|
@ignore
|
|
@c node New Features, Command and Variable Index, Obtaining TeX, Top
|
|
@c appendix Second Edition Features
|
|
|
|
@tex
|
|
% Widen the space for the first column so three control-character
|
|
% strings fit in the first column. Switched back to default .8in
|
|
% value at end of chapter.
|
|
\global\tableindent=1.0in
|
|
@end tex
|
|
|
|
The second edition of the Texinfo manual describes more than 20 new
|
|
Texinfo mode commands and more than 50 previously undocumented Texinfo
|
|
@@-commands. This edition is more than twice the length of the first
|
|
edition.@refill
|
|
|
|
Here is a brief description of the new commands.@refill
|
|
|
|
@c menu
|
|
* New Texinfo Mode Commands:: The updating commands are especially useful.
|
|
* New Commands:: Many newly described @@-commands.
|
|
@c end menu
|
|
|
|
@c node New Texinfo Mode Commands, New Commands, Obtaining TeX, Obtaining TeX
|
|
@c appendixsec New Texinfo Mode Commands
|
|
|
|
Texinfo mode provides commands and features especially designed for
|
|
working with Texinfo files. More than 20 new commands have been
|
|
added, including commands for automatically creating and updating
|
|
both nodes and menus. This is a tedious task when done by hand.@refill
|
|
|
|
The keybindings are intended to be somewhat mnemonic.@refill
|
|
|
|
@c subheading Update all nodes and menus
|
|
|
|
The @code{texinfo-master-menu} command is the primary command:
|
|
|
|
@table @kbd
|
|
@item C-c C-u m
|
|
@itemx M-x texinfo-master-menu
|
|
Create or update a master menu.
|
|
With @kbd{C-u} as a prefix argument,
|
|
first create or update all nodes
|
|
and regular menus.
|
|
@end table
|
|
|
|
@c subheading Update Pointers
|
|
|
|
@noindent
|
|
Create or update `Next', `Previous', and `Up' node pointers.@refill
|
|
|
|
@noindent
|
|
@xref{Updating Nodes and Menus}.
|
|
|
|
@table @kbd
|
|
@item C-c C-u C-n
|
|
@itemx M-x texinfo-update-node
|
|
Update a node.
|
|
|
|
@item C-c C-u C-e
|
|
@itemx M-x texinfo-every-node-update
|
|
Update every node in the buffer.
|
|
@end table
|
|
|
|
@c subheading Update Menus
|
|
|
|
@noindent
|
|
Create or update menus.@refill
|
|
|
|
@noindent
|
|
@xref{Updating Nodes and Menus}.
|
|
|
|
@table @kbd
|
|
@item C-c C-u C-m
|
|
@itemx M-x texinfo-make-menu
|
|
Make or update a menu.
|
|
|
|
@item C-c C-u C-a
|
|
@itemx M-x texinfo-all-menus-update
|
|
Make or update all the menus in a buffer.
|
|
With @kbd{C-u} as a prefix argument,
|
|
first update all the nodes.
|
|
@end table
|
|
|
|
@c subheading Insert Title as Description
|
|
|
|
@noindent
|
|
Insert a node's chapter or section title in the space for the
|
|
description in a menu entry line; position point so you can edit the
|
|
insert. (This command works somewhat differently than the other
|
|
insertion commands, which insert only a predefined string.)@refill
|
|
|
|
@noindent
|
|
@xref{Inserting, Inserting Frequently Used Commands}.
|
|
|
|
@table @kbd
|
|
@item C-c C-c C-d
|
|
Insert title.
|
|
@end table
|
|
|
|
@c subheading Format for Info
|
|
|
|
@noindent
|
|
Provide keybindings both for the Info formatting commands that are
|
|
written in Emacs Lisp and for @code{makeinfo} that is written in
|
|
C.@refill
|
|
|
|
@noindent
|
|
@xref{Info Formatting}.
|
|
|
|
@noindent
|
|
Use the Emacs lisp @code{texinfo-format@dots{}} commands:
|
|
|
|
@table @kbd
|
|
@item C-c C-e C-r
|
|
Format the region.
|
|
|
|
@item C-c C-e C-b
|
|
Format the buffer.
|
|
@end table
|
|
|
|
@noindent
|
|
Use @code{makeinfo}:
|
|
|
|
@table @kbd
|
|
@item C-c C-m C-r
|
|
Format the region.
|
|
|
|
@item C-c C-m C-b
|
|
Format the buffer.
|
|
|
|
@item C-c C-m C-l
|
|
Recenter the @code{makeinfo} output buffer.
|
|
|
|
@item C-c C-m C-k
|
|
Kill the @code{makeinfo} formatting job.
|
|
@end table
|
|
|
|
@c subheading Typeset and Print
|
|
|
|
@noindent
|
|
Typeset and print Texinfo documents from within Emacs.@refill
|
|
|
|
@ifinfo
|
|
@noindent
|
|
@xref{Printing}.
|
|
@end ifinfo
|
|
@iftex
|
|
@noindent
|
|
@xref{Printing, , Formatting and Printing}.
|
|
@end iftex
|
|
|
|
@table @kbd
|
|
@item C-c C-t C-b
|
|
Run @code{texi2dvi} on the buffer.
|
|
|
|
@item C-c C-t C-r
|
|
Run @TeX{} on the region.
|
|
|
|
@item C-c C-t C-i
|
|
Run @code{texindex}.
|
|
|
|
@item C-c C-t C-p
|
|
Print the DVI file.
|
|
|
|
@item C-c C-t C-q
|
|
Show the print queue.
|
|
|
|
@item C-c C-t C-d
|
|
Delete a job from the print queue.
|
|
|
|
@item C-c C-t C-k
|
|
Kill the current @TeX{} formatting job.
|
|
|
|
@item C-c C-t C-x
|
|
Quit a currently stopped @TeX{} formatting job.
|
|
|
|
@item C-c C-t C-l
|
|
Recenter the output buffer.
|
|
@end table
|
|
|
|
@c subheading Other Updating Commands
|
|
|
|
@noindent
|
|
The ``other updating commands'' do not have standard keybindings because
|
|
they are used less frequently.@refill
|
|
|
|
@noindent
|
|
@xref{Other Updating Commands}.
|
|
|
|
@table @kbd
|
|
@item M-x texinfo-insert-node-lines
|
|
Insert missing @code{@@node} lines using
|
|
section titles as node names.
|
|
|
|
@item M-x texinfo-multiple-files-update
|
|
Update a multi-file document.
|
|
With a numeric prefix, such as @kbd{C-u 8},
|
|
update @strong{every} pointer and
|
|
menu in @strong{all} the files and
|
|
then insert a master menu.
|
|
|
|
@item M-x texinfo-indent-menu-description
|
|
Indent descriptions in menus.
|
|
|
|
@item M-x texinfo-sequential-node-update
|
|
Insert node pointers in strict sequence.
|
|
@end table
|
|
|
|
@c no.de New Commands, , New Texinfo Mode Commands, Obtaining TeX
|
|
@c appendix.sec New Texinfo @@-Commands
|
|
|
|
The second edition of the Texinfo manual describes more than 50
|
|
commands that were not described in the first edition. A third or so
|
|
of these commands existed in Texinfo but were not documented in the
|
|
manual; the others are new. Here is a listing, with brief
|
|
descriptions of them:@refill
|
|
|
|
@c subheading Indexing
|
|
|
|
@noindent
|
|
Create your own index, and merge indices.@refill
|
|
|
|
@noindent
|
|
@xref{Indices}.
|
|
|
|
@table @kbd
|
|
@item @@defindex @var{index-name}
|
|
Define a new index and its indexing command.
|
|
See also the @code{@@defcodeindex} command.
|
|
|
|
@c written verbosely to avoid overfull hbox
|
|
@item @@synindex @var{from-index} @var{into-index}
|
|
Merge the @var{from-index} index into the @var{into-index} index.
|
|
See also the @code{@@syncodeindex} command.
|
|
@end table
|
|
|
|
@c subheading Definitions
|
|
|
|
@noindent
|
|
Describe functions, variables, macros,
|
|
commands, user options, special forms, and other such artifacts in a
|
|
uniform format.@refill
|
|
|
|
@noindent
|
|
@xref{Definition Commands}.
|
|
|
|
@table @kbd
|
|
@item @@deffn @var{category} @var{name} @var{arguments}@dots{}
|
|
Format a description for functions, interactive
|
|
commands, and similar entities.
|
|
|
|
@item @@defvr, @@defop, @dots{}
|
|
15 other related commands.
|
|
@end table
|
|
|
|
@c subheading Glyphs
|
|
|
|
@noindent
|
|
Indicate the results of evaluation, expansion,
|
|
printed output, an error message, equivalence of expressions, and the
|
|
location of point.@refill
|
|
|
|
@noindent
|
|
@xref{Glyphs}.
|
|
|
|
@table @kbd
|
|
@item @@equiv@{@}
|
|
@itemx @equiv{}
|
|
Equivalence:
|
|
|
|
@item @@error@{@}
|
|
@itemx @error{}
|
|
Error message
|
|
|
|
@item @@expansion@{@}
|
|
@itemx @expansion{}
|
|
Macro expansion
|
|
|
|
@item @@point@{@}
|
|
@itemx @point{}
|
|
Position of point
|
|
|
|
@item @@print@{@}
|
|
@itemx @print{}
|
|
Printed output
|
|
|
|
@item @@result@{@}
|
|
@itemx @result{}
|
|
Result of an expression
|
|
@end table
|
|
|
|
@c subheading Page Headings
|
|
|
|
@noindent
|
|
Customize page headings.
|
|
|
|
@noindent
|
|
@xref{Headings}.
|
|
|
|
@table @kbd
|
|
@item @@headings @var{on-off-single-double}
|
|
Headings on or off, single, or double-sided.
|
|
|
|
@item @@evenfooting [@var{left}] @@| [@var{center}] @@| [@var{right}]
|
|
Footings for even-numbered (left-hand) pages.
|
|
|
|
@item @@evenheading, @@everyheading, @@oddheading, @dots{}
|
|
Five other related commands.
|
|
|
|
@item @@thischapter
|
|
Insert name of chapter and chapter number.
|
|
|
|
@item @@thischaptername, @@thisfile, @@thistitle, @@thispage
|
|
Related commands.
|
|
@end table
|
|
|
|
@c subheading Formatting
|
|
|
|
@noindent
|
|
Format blocks of text.
|
|
|
|
@noindent
|
|
@xref{Quotations and Examples}, and@*
|
|
@ref{Lists and Tables, , Making Lists and Tables}.
|
|
|
|
@table @kbd
|
|
@item @@cartouche
|
|
Draw rounded box surrounding text (not in Info).
|
|
|
|
@item @@enumerate @var{optional-arg}
|
|
Enumerate a list with letters or numbers.
|
|
|
|
@item @@exdent @var{line-of-text}
|
|
Remove indentation.
|
|
|
|
@item @@flushleft
|
|
Left justify.
|
|
|
|
@item @@flushright
|
|
Right justify.
|
|
|
|
@item @@format
|
|
Do not narrow nor change font.
|
|
|
|
@item @@ftable @var{formatting-command}
|
|
@itemx @@vtable @var{formatting-command}
|
|
Two-column table with indexing.
|
|
|
|
@item @@lisp
|
|
For an example of Lisp code.
|
|
|
|
@item @@smallexample
|
|
@itemx @@smalllisp
|
|
Like @@table and @@lisp, but for (originally) @@smallbook.
|
|
@end table
|
|
|
|
@c subheading Conditionals
|
|
|
|
@noindent
|
|
Conditionally format text.
|
|
|
|
@noindent
|
|
@xref{set clear value, , @code{@@set} @code{@@clear} @code{@@value}}.@refill
|
|
|
|
@table @kbd
|
|
@item @@set @var{flag} [@var{string}]
|
|
Set a flag. Optionally, set value
|
|
of @var{flag} to @var{string}.
|
|
|
|
@item @@clear @var{flag}
|
|
Clear a flag.
|
|
|
|
@item @@value@{@var{flag}@}
|
|
Replace with value to which @var{flag} is set.
|
|
|
|
@item @@ifset @var{flag}
|
|
Format, if @var{flag} is set.
|
|
|
|
@item @@ifclear @var{flag}
|
|
Ignore, if @var{flag} is set.
|
|
@end table
|
|
|
|
@c subheading @@heading series for Titles
|
|
|
|
@noindent
|
|
Produce unnumbered headings that do not appear in a table of contents.
|
|
|
|
@noindent
|
|
@xref{Structuring}.
|
|
|
|
@table @kbd
|
|
@item @@heading @var{title}
|
|
Unnumbered section-like heading not listed
|
|
in the table of contents of a printed manual.
|
|
|
|
@item @@chapheading, @@majorheading, @@c subheading, @@subsubheading
|
|
Related commands.
|
|
@end table
|
|
|
|
@need 1000
|
|
@c subheading Font commands
|
|
|
|
@need 1000
|
|
@noindent
|
|
@xref{Smallcaps}, and @*
|
|
@ref{Fonts}.
|
|
|
|
@table @kbd
|
|
@item @@r@{@var{text}@}
|
|
Print in roman font.
|
|
|
|
@item @@sc@{@var{text}@}
|
|
Print in @sc{small caps} font.
|
|
@end table
|
|
|
|
@c subheading Miscellaneous
|
|
|
|
@noindent
|
|
See @ref{title subtitle author, , @code{@@title} @code{@@subtitle} and @code{@@author} Commands},@*
|
|
see @ref{Customized Highlighting},@*
|
|
see @ref{Overfull hboxes},@*
|
|
see @ref{Footnotes},@*
|
|
see @ref{dmn, , Format a Dimension},@*
|
|
see @ref{Raise/lower sections, , @code{@@raisesections} and @code{@@lowersections}},@*
|
|
see @ref{math, , @code{@@math}: Inserting Mathematical Expressions}.@*
|
|
see @ref{minus, , Inserting a Minus Sign},@*
|
|
see @ref{paragraphindent, , Paragraph Indenting},@*
|
|
see @ref{Cross Reference Commands},@*
|
|
see @ref{title subtitle author, , @code{@@title} @code{@@subtitle} and @code{@@author}}, and@*
|
|
see @ref{Custom Headings, , How to Make Your Own Headings}.
|
|
|
|
@table @kbd
|
|
@item @@author @var{author}
|
|
Typeset author's name.
|
|
|
|
@c @item @@definfoenclose @var{new-command}, @var{before}, @var{after},
|
|
@c Define a highlighting command for Info. (Info only.)
|
|
|
|
@item @@finalout
|
|
Produce cleaner printed output.
|
|
|
|
@item @@footnotestyle @var{end-or-separate}
|
|
Specify footnote style.
|
|
|
|
@item @@dmn@{@var{dimension}@}
|
|
Format a dimension.
|
|
|
|
@item @@global@@let@var{new-cmd}=@var{existing-cmd}
|
|
Define a highlighting command for @TeX{}. (@TeX{} only.)
|
|
|
|
@item @@lowersections
|
|
Reduce hierarchical level of sectioning commands.
|
|
|
|
@item @@math@{@var{mathematical-expression}@}
|
|
Format a mathematical expression.
|
|
|
|
@item @@minus@{@}
|
|
Generate a minus sign.
|
|
|
|
@item @@paragraphindent @var{asis-or-number}
|
|
Specify paragraph indentation.
|
|
|
|
@item @@raisesections
|
|
Raise hierarchical level of sectioning commands.
|
|
|
|
@item @@ref@{@var{node-name}, @r{[}@var{entry}@r{]}, @r{[}@var{topic-or-title}@r{]}, @r{[}@var{info-file}@r{]}, @r{[}@var{manual}@r{]}@}
|
|
Make a reference. In the printed manual, the
|
|
reference does not start with the word `see'.
|
|
|
|
@item @@title @var{title}
|
|
Typeset @var{title} in the alternative
|
|
title page format.
|
|
|
|
@item @@subtitle @var{subtitle}
|
|
Typeset @var{subtitle} in the alternative
|
|
title page format.
|
|
|
|
@item @@today@{@}
|
|
Insert the current date.
|
|
@end table
|
|
@tex
|
|
% Switch width of first column of tables back to default value
|
|
\global\tableindent=.8in
|
|
@end tex
|
|
@end ignore
|
|
|
|
|
|
@node Copying This Manual
|
|
@appendix Copying This Manual
|
|
|
|
@menu
|
|
* GNU Free Documentation License:: License for copying this manual.
|
|
@end menu
|
|
|
|
@include fdl.texi
|
|
|
|
|
|
@node Command and Variable Index
|
|
@unnumbered Command and Variable Index
|
|
|
|
This is an alphabetical list of all the @@-commands, assorted Emacs Lisp
|
|
functions, and several variables. To make the list easier to use, the
|
|
commands are listed without their preceding @samp{@@}.@refill
|
|
|
|
@printindex fn
|
|
|
|
|
|
@node Concept Index
|
|
@unnumbered Concept Index
|
|
|
|
@printindex cp
|
|
|
|
|
|
@bye
|