\documentstyle[a4,makeidx,verbatim,texhelp,fancyhea,mysober,mytitle]{report}%
%\input psbox.tex
\parskip=10pt%
\parindent=0pt%
\winhelpignore{\title{Manual for Tex2RTF 1.33:\\A \LaTeX\ to RTF and HTML converter}
\author{Julian Smart\\Artificial Intelligence Applications Institute\\
University of Edinburgh\\EH1 1HN}
\date{March 1994}
}
\winhelponly{\title{Manual for Tex2RTF 1.33}
\author{by Julian Smart, Artificial Intelligence Applications Institute,
University of Edinburgh\\$$\image{1cm;0cm}{tex2rtf.wmf}$$}
}%
\makeindex%
\begin{document}%
\maketitle%

\pagestyle{fancyplain}
\bibliographystyle{plain}
\pagenumbering{roman}
\setheader{{\it CONTENTS}}{}{}{}{}{{\it CONTENTS}}
\setfooter{\thepage}{}{}{}{}{\thepage}
\tableofcontents%

\chapter*{Copyright notice}
\setheader{{\it COPYRIGHT}}{}{}{}{}{{\it COPYRIGHT}}%
\setfooter{\thepage}{}{}{}{}{\thepage}

Copyright (c) 1993 Julian Smart.

Permission to use, copy, modify, and distribute this software and its
documentation for any purpose is hereby granted without fee, provided that the
above copyright notice, author statement and this permission notice appear in
all copies of this software and related documentation.

THE SOFTWARE IS PROVIDED ``AS-IS'' AND WITHOUT WARRANTY OF ANY KIND, EXPRESS,
IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

IN NO EVENT SHALL JULIAN SMART OR THE ARTIFICIAL INTELLIGENCE
APPLICATIONS INSTITUTE OR UNIVERSITY OF EDINBURGH BE LIABLE FOR ANY
SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY
OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.

\chapter{Introduction}
\pagenumbering{arabic}%
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}

This document describes a utility for converting \popref{\LaTeX}{latexgloss}\ files into
several other formats, and the C++ library which the converters rely on for
parsing and other services.

Only a subset of \LaTeX\ can be processed by this utility, especially
since the target document language will never perfectly match \LaTeX.
Whether the quality of the results is good enough will depend upon the
application and your own expectations.

Tex2RTF is heavily biased towards making on-line, hypertext versions of
\rtfsp\LaTeX\ documents, but the \popref{RTF}{rtf} converter can be used for normal, linear
documents too.

The latest version of Tex2RTF can be accessed by anonymous ftp from:

\begin{verbatim}
skye.aiai.ed.ac.uk (192.41.104.6)
\end{verbatim}

in the directory /pub/tex2rtf. It is available in SPARC Open Look and
Windows 3.1 versions.

Tex2RTF was developed using the free Open Look, Motif and Windows 3.1
C++ class library \popref{wxWindows}{wxwindows}, also available from the
above FTP site in the /pub/wxwin/beta directory.

\section{Status of Tex2RTF}

Tex2RTF is under continual development, often following users'
suggestions. From version 1.33, Tex2RTF is effectively in a second phase
of development. In addition to the bare minimum of syntax and facilities
for producing useable help systems or linear RTF, commands are being
added to allow visually effective, even aesthetically pleasing,
documentation to be produced.

Examples are the {\it indented}, {\it twocollist} and {\it marginpar} \rtfsp
commands; over time I hope to be able to reproduce most of the popular
styles of formatting and presentation in Windows Help files, whilst
allowing a reasonable equivalent to be generated in the other formats.

\section{Why use \LaTeX?}

\LaTeX\ happens to be a very convenient format if you need to produce
documents (such as manuals, help facilities, up-to-date information) in
both printed and on-line media. Being a language rather than a WYSIWYG system,
it allows explicit specification of layout and document structure, lending
itself well to hypertext applications and automatic document generation.
Many people also prefer to use \LaTeX\ for ordinary use since it encourages
a logical document structure and the user is not distracted by having to perfect
the appearance; many layout decisions are taken by \LaTeX\ automatically.

Although \LaTeX\ is not as fancy as modern word processors and desk-top
publishing packages, it is for many purposes quite adequate, and sometimes
more flexible than its modern counterparts.

The conversion utility gives \LaTeX\ a new lease of life by allowing
virtually all other wordprocessor formats to be generated from documents
containing a reasonable subset of \LaTeX\ syntax. From the same \LaTeX\ 
sources, we can now generate printed manuals, Windows Help files, \popref{wxHelp}{wxhelp} \rtfsp
files, RTF-compatible word processor formats such as MS Word, and \popref{HTML}{html}\rtfsp
files for use in the World Wide Web. Since the conversion tool is
free, as are \LaTeX, HTML viewers, wxHelp and (effectively) Windows
Help, there are no financial or time penalties for providing
documentation in a wide range of printed and hypertext formats.

\section{Help versus the printed page}

The purist may argue, quite rightly, that on-line help systems and
printed manuals have different characteristics; help windows tend to be
much smaller than pages, help topics should be more stand-alone than
pages in a manual, navigation methods are very different, etc. Therefore,
help systems should be {\it based} on printed documentation but
separately hand-crafted into hypertext help, preferably by an
independent person or team.

This might be the ideal, but many organisations or individuals simply
do not have the time: on-line help wouldn't get done if the
documentation effort had to be doubled. However, Tex2RTF does provide
some commands to allow tailoring the docmentation to printed or
on-line form, such as {\it helponly} and {\it helpignore}. An awareness
of the design issues should go a long way to making the compromise
a good one, so a book such as \cite{helpbook} is highly recommended.

\section{Output Formats}

At present the following output formats are supported:

\begin{itemize}
\itemsep=0pt
\item RTF (Rich Text Format). This is the most well developed
converter. RTF is commonly used as a document exchange format amongst
Windows-based applications, and is the input for the Windows Help
Compiler. Tex2RTF supports both linear documents and Windows Help
hypertext format.
\item wxHelp. This is the platform-independent help system for
the class library wxWindows \cite{smart93a}. It can display ASCII files with embedded codes
for changing font styles, but no formatting is done by wxHelp.
\item HTML (Hypertext Markup Language). This an SGML-like format
commonly used by documents in the World Wide Web distributed hypertext
system, and formats text dynamically rather like Windows Help.
\end{itemize}

\section{What compromises must I make?}

As a \LaTeX\ user, you need to be aware that some macros or facilities
don't transfer to other formats, either because they are not supported
by the target format or because the converter does not support them. 
Maths formatting is a good example of an unsupported feature.

Sometimes \LaTeX\ facilities must be accessed in a slightly different
way to support the variety of formats, particularly hypertext formats
where \LaTeX\ references are often replaced by hypertext jumps (but must
still look right in printed documentation). Tables don't transfer well
to RTF (and not at all to the other formats) but an attempt is made
to approximate tables so long as special row macros are used, instead
of the usual end of row delimiter.

Bibliographies are handled quite well since the utilities can read in\rtfsp
{\tt .bib} files and resolve citations. Numbers are used in citations;
the references are not yet sorted alphabetically.

Pictures are handled in a limited way: if the PSBOX macro package is
used, an {\it image} macro can be used to place Encapsulated PostScript
files in \LaTeX, and Windows RGB-encoded bitmap files or placeable
metafiles when converting to RTF.

Nested file inclusion (input, include, verbatiminput), is handled,
and the comment environment is supported. However, using {\it input}\rtfsp
to include macro packages is not advisable. If you do this,
make sure you add a line in the Tex2RTF initialisation file to ignore
this file, unless it's a simple \LaTeX\ file that conforms to Tex2RTF
restrictions. The file {\tt psbox.tex} is the only file ignored
by Tex2RTF by default.

Because of the way \LaTeX\ is parsed, some syntax has to conform to a
few simple rules. Macros such as {\it bf} and {\it it} need to occur
immediately after a left brace, and have a block of their own, since
the text within their scope is regarded as its argument. This syntax
means the same thing as using {\it begin ... end}, which is usually
a one argument macro (the argument is the text between the {\it begin}\rtfsp
and {\it end}). See \helpref{Space}{space}.

As a Windows hypertext help writer, you don't have access to all RTF
commands but you'll be able to get most of what you want. In particular,
any \LaTeX\ document you write will automatically be a hypertext
document, because the converter takes advantage of the hierarchy of
sections. Further jumps can be placed using the commands
\rtfsp\helprefn{label}{label}, \helprefn{helpref}{helpref},
\rtfsp\helprefn{helprefn}{helprefn}, and \helprefn{popref}{popref}.
Tex2RTF outputs help files that may be read linearly using the
\rtfsp$<<$ and $>>$ buttons, and an additonal Up button for
ease of navigation.

When writing HTML, multiple files are generated from one \LaTeX\ file
since browsing HTML works best with many small files rather than a few
large ones.

wxHelp files are least well supported since there is no formatting
support, only font style, sizes and colours. Still, some hypertext help
support on UNIX/X platforms is better than none. The class library
wxWindows may be extended in future to allow using a better help viewer,
such as {\it xmosaic}. Of course there is nothing to stop xmosaic being
used as a help system, but it won't be integrated with wxWindows
programs as wxHelp is.

Sometimes you will use a local macro package that is unrecognised by
the converters. In this case, you may define a custom macro file
where macros are defined in terms of supported \LaTeX\ commands
and text. Even if the result is not the same as in \LaTeX, you
can probably end up with something adequate, and at least avoid
undefined macro errors. See \helpref{Initialisation file syntax}{inifile} for
further information.

\section{Changes to \LaTeX\ syntax}

Here are the conventions you need to observe to satisfy the Tex2RTF
parser.

\subsection{Space}\label{space}

Tex2RTF attempts to insert spaces where \LaTeX\ assumes whitespace.
However, for the benefit of RTF conversion, you need to use the {\it
$\backslash$rtfsp} macro where a command or brace within a paragraph
begins or ends with a macro. For example:

\begin{verbatim}
Within a paragraph, you need to be careful about commands that begin
\rtfsp {\it at the start} of a line.
\end{verbatim}

As normal with \LaTeX, two newlines represents a paragraph break,
although \helprefn{par}{par} can also be used at the end of a paragraph.

You need to have a blank line between section and some environment
commands and the first paragraph or your document will look rather
weird, e.g. headings running into paragraphs.

wxHelp is more fussy than \LaTeX\ or RTF: you need to use percent
characters at line ends liberally to eliminate newlines after commands
on single lines.

\subsection{Command arguments}

Commands that have one or more arguments can be used in the following
three ways:

\begin{verbatim}
\bf{Some text.}

\begin{bf}
Some text.
\end{bf}

{\bf Some text.}
\end{verbatim}

The first method is a normal \LaTeX\ command.

The second method is called an {\it environment}; \LaTeX\ has specific
environments that do not always correspond to normal commands, but
Tex2RTF recognizes environments and normal commands interchangeably, so
long as the command has no more than two arguments.

With the third method, it is important that the command has its own
pair of braces, and that the command immediately follows the first brace.
Otherwise, the parser cannot parse the argument(s) properly.
With multiple arguments, each should be enclosed in braces.

Optional arguments are specified using square brackets or parentheses.

Whitespace should be avoided between command names and their arguments.

\subsection{Avoid the setlength macro}

Using the $\backslash$setlength command doesn't work, since its first
argument looks like a macro with the wrong number of arguments. Use an
alternative form instead, e.g.

\begin{verbatim}
\parindent 0pt
\end{verbatim}

instead of

\begin{verbatim}
\setlength{\parindent}{0pt}
\end{verbatim}

\subsection{Units}

Only a subset of \LaTeX\ units may be used for specifying dimensions.
Valid units are {\it pt, mm, cm} and {\it in}. Units should usually
be specified for dimensions or the results may be unexpected.

\subsection{Labels}

The {\it label} command may be used for sections and figure captions,
but must come immediately after the section or caption commands with no
intervening whitespace.

\section{Tex2RTF change log}

Changes in version 1.33:

\begin{itemize}
\itemsep=0pt
\item Added -charset command-line switch.
\item Added {\it itemsep, twocolumn, onecolumn, setfooter, setheader, pagestyle,
pagenumbering, thechapter, thesection, thepage, thebibliography, bibitem} commands.
\item New environment called {\it twocollist} for making two-column lists,
with formatting optimized for target file format.
\item New {\it indented} environment for controlling indentation.
\item List indentation and bulleting improved.
\item Added commands {\it normalbox, normalboxd} for putting borders around text.
\item Many options can now be specified in the .ini file along with custom macros.
\item Cured bug that put too much vertical space after some commands.
\item Improved table formatting.
\item Optional `Up' button in WinHelp files for easier navigation.
\item Verbatim lines followed by {\it par} in RTF, to improve WinHelp wrapping.
\item Conversion may now be aborted under Windows by attempting to close the application.
\item Added conditional output for all formats: {\it latexignore, latexonly, rtfignore, rtfonly,
winhelpignore, winhelponly, htmlignore, htmlonly, xlpignore, xlponly.}
\item HTML generator can now add Contents, Up, << and >> buttons (text or bitmap) to
each page except titlepage.
\end{itemize}

Changes in version 1.32:

\begin{itemize}
\itemsep=0pt
\item {\it footnote} command now supported in WinHelp RTF, and {\it footnotepopup}\rtfsp
added.
\end{itemize}

Changes in version 1.31:

\begin{itemize}
\itemsep=0pt
\item {\it footnote} command now supported, in linear RTF only.
\item Added -bufsize option, for converting large documents.
\end{itemize}

Changes in version 1.30:

\begin{itemize}
\itemsep=0pt
\item {\it image} command now scales metafiles (but not bitmaps).
\item Fixed macro loading bug, now informs the user of the found macro filename.
\item Now supports paragraph and subparagraph commands.
\item Support for some accents added.
\item {\it verb} command now supported.
\item Bug in subsubsection handling fixed.
\item Can save conversion log in a text file.
\end{itemize}

Changes in version 1.22:

\begin{itemize}
\itemsep=0pt
\item More informative, warns against use of some commands.
\item Added compile-time support for non-GUI environments (such as plain UNIX).
\item Improved HTML support.
\end{itemize}

\chapter{Hypertext features}
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}
\setfooter{\thepage}{}{}{}{}{\thepage}

\LaTeX\ is inherently suitable for specifying hypertext documents since
it encourages description of the logical structure of a document using
section commands. Therefore, a \LaTeX\ document is automatically
a hypertext document, without any further editing.

For Windows Help, a single RTF file is generated with topics
corresponding to sections. A top level contents page shows each chapter
or top-level section, and each chapter or section ends with a list of
further sections or subsections. Tex2RTF outputs help files that may be
read linearly using the \rtfsp$<<$ and $>>$ buttons.

Similarly, a single wxHelp XLP file is generated.

For HTML, a different file is generated for each section, since the XMOSAIC browser
works best with a large number of small files. The files are named automatically
based on the name of the output file, with the contents page filename being
formed from the output filename with {\tt \_contents} appended to the name.
This may result in the generation of several hundred files for a large \LaTeX\ 
input file. 

To specify explicit jumps around a hypertext file, the \helprefn{helpref}{helpref} macro is
used. The first argument is the text to be displayed at the point of reference,
which will be highlighted in a hypertext file to allow jumping to a reference.
The second argument is the reference label (there should be a corresponding
\rtfsp\helprefn{label}{label} command in the file, following a section or figure).

To use extra Tex2RTF features in proper \LaTeX, such as {\bf helpref}\rtfsp
and the C++ and CLIPS class reference documentation features, include
the style file {\tt texhelp.sty}.

\chapter{Special sections}
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}
\setfooter{\thepage}{}{}{}{}{\thepage}

The treatment of bibliography, glossary and index are worth special mention.

\section{Bibliography}\label{bibsection}

Tex2RTF recognises standard \LaTeX\ bibliography files (usually with {\tt .bib} extension)
and resolves citations. The \helprefn{bibliography}{bibliography}\rtfsp
command reads the given {\tt .bib} file and includes a list of
references at that point in the input. Only numbered, unsorted
references are catered for at the moment, with no variation in
bibliography style. A {\bf References} heading is placed in the contents
section. Note that Tex2RTF must be run twice to ensure the citations are
resolved properly.

Tex2RTF can also cope with the {\it thebibliography} environment, with \rtfsp 
{\it bibitem} commands, so long as the text following the first {\it bibitem}\rtfsp 
argument is enclosed in braces as if it were a second argument.

\section{Glossary}\label{glossarysection}

Glossaries are formatted according to the following scheme.
The \helprefn{helpglossary}{helpglossary} environment is used together with
the \helprefn{gloss}{gloss} command for glossary entries. In \LaTeX\ this
is interpreted as a description list, and each glossary entry is an item.
In on-line help, each glossary entry is a section.

A labelled glossary entry command may be referenced by \helprefn{popref}{popref}\rtfsp 
to provide a quick popup explanation of a term.

\section{Index}

The explicit index is assumed to be redundant in on-line help, since
search facilities are provided. Therefore the {\it printindex} command
does nothing in on-line versions (nor in linear RTF).

In Windows Help, all section headings and C++ function names are treated
as keywords. A keyword may be ambiguous, that is, refer to more than one
section in the help file.  This automatic indexing may not always be
adequate, so the \LaTeX\ \helprefn{index}{index} command may be used
to add keywords.

In wxHelp, all section headings are indexed.

\chapter{Running Tex2RTF}
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}
\setfooter{\thepage}{}{}{}{}{\thepage}

Tex2RTF may be run in a number of ways: with or without command line arguments,
interactively or in batch mode, and with an optional initialisation file
for specifying \LaTeX\ macros and detailed options.

Tex2RTF accepts two arguments (input and output filenames) and trailing
(optional) switches.  If both filenames are given, the utility will work
in batch mode.  Otherwise, if Tex2RTF has been compiled for GUI
operation, a main window will be shown, with appropriate menu items for
selecting input and output filenames, starting off the conversion
process, and so on.

Note that if the file {\tt bullet.bmp} is found by Tex2RTF, this bitmap
will be used as the bullet for items in {\it itemize} lists, for WinHelp
output. Otherwise, a symbol will be inserted (linear RTF) or bold `o'
will be used instead (all other formats).

Syntax error reporting is fairly minimal. Unrecognised macro errors may
actually be produced by an unbalanced brace or passing the wrong number of
arguments to a macro, so look in the vicinity of the error for the
real cause.

It is recommended that you run Tex2RTF twice in order to be sure of
of resolving all references and including an up-to-date contents page.

\section{Command line arguments}

These are the optional arguments you may give Tex2RTF on the command line.

\begin{description}
\item[-bufsize] Specifies buffer size in K (default 60 under Windows,
500 under UNIX). Large files (particularly large verbatim environments)
may require a large buffer size, equal to the largest argument of a \LaTeX\ command.
Note that this value may not be larger than 64 under Windows.
\item[-html] Specifies HTML (World Wide Web) output.
\item[-interactive] Forces interactive mode even if both
filenames are given.
\item[-charset charset] Specifies a character set for
RTF production. This can be one of ansi, mac, pc, and pca.
The default is ansi.
\item[-macros filename] Specifies a file for the custom macro
file -- see \helpref{Macro not found error}{macronotfound}.
\item[-rtf] Specifies linear RTF output.
\item[-sync] Forces synchronous mode (no yielding to other
processes) -- usually use this in non-interactive mode.
\item[-twice] Tells Tex2RTF to run the conversion twice to ensure all
references and citations are resolved and the contents page included.
\item[-winhelp] Specifies Windows Help RTF output.
\end{description}

\section{Initialisation file syntax}\label{inifile}

The initialisation file contains further detailed options for
customising Tex2RTF's behaviour. A file may be specified
with the {\bf -macros} command line switch, otherwise Tex2RTF
looks for the file {\tt tex2rtf.ini} in the working directory
or input file directory.

The file may comprise macro definitions or option settings.

The syntax for a macro definition is:

\begin{verbatim}
\name [number of args] {...LaTeX code...}
\end{verbatim}

For example:

\begin{verbatim}
\crazy      [2]{{\bf #2} is crazy but #1 is not}
\something  [0]{}
\julian     [0]{Julian Smart}
\end{verbatim}

The syntax for an option setting is:

\begin{verbatim}
name = value
\end{verbatim}

For example:

\begin{verbatim}
conversionMode = RTF
runTwice = true
titleFontSize = 12
authorFontSize = 10
headerRule = yes
footerRule = yes
\end{verbatim}

Options expecting boolean values accept {\it 1, 0, true, false, yes, no} in any combination of upper or
lower case.

\subsection{Tex2RTF options}

These are the allowable options in an initialisation file.

\begin{twocollist}
\htmlignore{\twocolitemruled{Option}{Description}}
\twocolitem{conversionMode}{One of RTF, WinHelp, XLP (or wxHelp), and HTML.}
\twocolitem{documentFontSize}{One of 10, 11 and 12, to specify the main font size
independently of the \LaTeX\ document style command.}
\twocolitem{chapterFontSize}{Specifies the point size for chapter headings (RTF only).}
\twocolitem{sectionFontSize}{Specifies the point size for section headings (RTF only).}
\twocolitem{subsectionFontSize}{Specifies the point size for subsection headings (RTF only).}
\twocolitem{titleFontSize}{Specifies the point size for the title (RTF only).}
\twocolitem{authorFontSize}{Specifies the point size for the author and date (RTF only).}
\twocolitem{ignoreInput}{Adds the filename to the list of files ignored by the {\it input} command.
The only default filename in the list is {\tt psbox.tex}.}
\twocolitem{mirrorMargins}{If true, margins are mirrored in twosided documents (linear RTF only).}
\twocolitem{runTwice}{If true, runs the converter twice.}
\twocolitem{isInteractive}{If true, runs in interactive mode (the default).}
\twocolitem{headerRule}{If true, draws a rule below headers (linear RTF only).}
\twocolitem{footerRule}{If true, draws a rule above footers (linear RTF only).}
\twocolitem{listLabelIndent}{Specifies the size of list item label indentation, in points.}
\twocolitem{itemLabelIndent}{Specifies the size of list item indentation, in points.}
\twocolitem{useUpButton}{If true (the default), WinHelp files will be generated with an {\bf Up}\rtfsp
button to make browsing easier. Note that you need to put an extra line in the CONFIG section
of your .HPJ file:

{\tt CreateButton("Up", "\&Up", "JumpId(`name.hlp', `Contents')")}

where {\tt name.hlp} is the name of your help file.}
\twocolitem{htmlBrowseButtons}{Allows generation of Contents, Up, browse back and browse forward
buttons on each HTML page except title page. Specify none, text or bitmap. If you specify
bitmap, make sure that the files contents.gif, up.gif, back.gif and forward.gif are in the
directory where the HTML files will reside: samples are given in the docs directory.}
\end{twocollist}

\chapter{Tex2RTF for non-\LaTeX\ users}
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}
\setfooter{\thepage}{}{}{}{}{\thepage}

You don't need to have \LaTeX\ installed to use Tex2RTF. You
can still output RTF files to be imported into your favourite
word processor, and hypertext files for on-line help.

This chapter gives a very brief introduction to \LaTeX. For further
information, Kopka and Daly's {\it A Guide to \LaTeX} \cite{kopka} is
recommended.

\section{What is \LaTeX?}

\LaTeX\ is a macro package built on top of the typesetting package,
\TeX. \TeX\ was written by Donald Knuth in the 1970s, and Leslie
Lamport wrote \LaTeX\ as a higher-level, easier way to write \TeX.

\TeX\ was quite advanced for its day, and is still used (particularly by
academics) because of its free availability and its flexibility in
typesetting maths and other symbols. It's more like a programming
language than a word processor, with embedded commands prefixed by a
backslash and block structure. Like programs, \TeX\ documents are
processed by a `compiler', outputting a .dvi file, which is a device
independent file which can be read by many converters for output
onto physical devices, such as screens and printers.

A reason for its longevity is the ability to add facilities to
\TeX, using macro packages that define new commands.

\LaTeX\ is the most popular way to write \TeX. Although WYSIWYG
word processors and DTP packages are outstripping \LaTeX, the increasing
interest in hypertext and mark-up languages makes \LaTeX\ relevant as
a similar language to SGML documents (such as World Wide Web HTML files).

Also, languages such as \LaTeX\ (and Rich Text Format, which it resembles
in many ways) are {\it complementary} to WYSIWYG packages. These languages
allow automatic production and translation of documents, where manual
mark-up is impractical or undesirable.

Since the source code of \TeX\ and \LaTeX\ is in the public domain,
there are many free and commercial implementations of \LaTeX\ for almost
every computer in existance. Of PC implementations, EmTeX is arguably
the best and most complete. You can download it from various FTP sites.

If you don't want to use \LaTeX\ itself, you may wish to use a program
called lacheck to check your documents before using Tex2RTF, since it
catches some mistakes that Tex2RTF doesn't.

\section{Document structure}

Here is a sample of a typical \LaTeX\ document:

\begin{verbatim}
\documentstyle[a4,texhelp]{report}
\title{A title}
\author{Julian Smart}
\date{October 1993}
\begin{document}
\maketitle

\chapter{Introduction}

...

\section{A section}

...

\end{document}
\end{verbatim}

The first line is always a {\it documentstyle} command. The square brackets
enclose optional {\it style} files (suffix .sty) that alter the appearance
of the document or provide new commands, and the curly brackets enclose
the mandatory style, in this case `report'.

Before the document begins properly with {\it $\backslash$begin\{document\}},
you can write various commands that have an effect on the appearance of the
document or define title page information. The {\it maketitle} command
writes the title page using information defined previously (title, author,
date).

A report has chapters, which are divided into sections, and can be further
divided into subsections and subsubsections. To start a new section, you
write the appropriate section command with the section heading; there is
no specific end section command, since a new section heading or the end
of the document will indicate the end of the previous section.

An article is divided into sections, subsections and subsubsections, but
has no chapters. This is so an article can be included in a report as a chapter.

Tex2RTF is written to deal with reports best, so stick with the report
style if you can.

\section{Command syntax}

There are several kinds of commands in \LaTeX. Most involve a keyword
prefixed with a backslash. Here are some examples:

\begin{verbatim}
\titlepage

\centerline{This is a centred line}

\begin{center}
This is a centred
paragraph
\end{center}

{\bf This is bold font}
\end{verbatim}

The first example has no arguments. The second has one argument. The third
example is an {\it environment} which uses the begin and end keywords instead
of a pair of braces to enclose an argument (usually one). The fourth is an example
of using a command within a pair of braces: the command applies to the scope within
the braces. Tex2RTF treats this form as if it were a command with one argument,
with the right brace delimiting the argument. In this case, the command must
immediately follow a left brace as shown.

Commands may be nested, but not overlapped.

\section{Space}

In \LaTeX, white space is mostly ignored, line breaks make no difference.
However, \LaTeX\ interprets two successive newlines (a blank line) as
denoting a paragraph break. You may also use the {\it par} command to end
a paragraph.

{\large {\it To be continued!}}

\chapter{Macro reference}
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}
\setfooter{\thepage}{}{}{}{}{\thepage}

The following lists macros which are recognised by the converters. Other
macros not not mentioned can be assumed to be unrecognised or ignored.

Each command is listed with its name, the number of arguments it takes
(excluding optional arguments), and a description. Note that if the
command is used as an environment (using {\it begin} and {\it end}) then
the number of arguments must be either one or two. For example, the {\it
tabular} environment takes two arguments: a first argument for
specifying the formatting, and the second argument for the body of the
environment.

\begin{verbatim}
\begin{tabular}{|l|l|}
\row{One}{Two}
\row{Three}{Four}
\end{tabular}
\end{verbatim}

\section{Commands}

\subsection*{abstract:1}\label{abstract}

This standard \LaTeX\ environment prepares an abstract page, and is
treated as an ordinary chapter or section in on-line help.

\subsection*{addcontentsline:3}\label{addcontentsline}

Adds a chapter title to the contents page. Linear RTF. Rarely required.

%\subsection*{appendix}
%\subsection*{arabic}
%\subsection*{array}
\subsection*{author:1}\label{author}

Defines the author, for output when {\it maketitle} is used.

\subsection*{backslash:0}\label{backslash}

Outputs a backslash in math mode (should be enclosed by two dollar symbols).

%\subsection*{baselineskip}
\subsection*{bf:1}\label{bf}

Specifies bold font.

\subsection*{bibitem:2}\label{bibitem}

For parsing convenience, {\it bibitem} requires two arguments: a cite key and item.
\rtfsp\LaTeX\ syntax permits writing this as if it were two arguments,
even though it is in fact only one. This command is used within
a \helprefn{thebibliography}{thebibliography} environment. The preferred
method is to store references in .bib files and use the \helprefn{bibliography}{bibliography}\rtfsp
command to generate a bibliography section automatically.

\subsection*{bibliographystyle:1}\label{bibliographystyle}

Currently doesn't affect the style of bibliography, but probably will
in the future.

\subsection*{bibliography:0}\label{bibliography}

Includes the bibliography at this point in the document. See the section
on \helpref{bibliographies}{bibsection}.

%\subsection*{boxit:1}\label{boxit}
%\subsection*{caption*}
\subsection*{caption:1}\label{caption}

Specifies a caption (within a \helprefn{figure}{figure} environment). This may
be followed immediately by a \helprefn{label}{label} command.

\subsection*{cdots:0}\label{cdots}

Outputs three dots.

\subsection*{centerline:1}\label{centerline}

Centres (or centers!) a line of text.

%\subsection*{centering}
\subsection*{center:1}\label{center}

Centres a block of text.

\subsection*{cextract:0}\label{cextract}

Prints a C++ extraction operator (\cextract).

\subsection*{chapter*:1}\label{chaptersX}

Outputs a chapter heading with no contents entry.

\subsection*{chapter:1}\label{chapter}

Outputs a chapter heading.

\subsection*{chapterheading:1}\label{chapterheading}

Like \helprefn{chapter}{chapter}, but does not increment the chapter
number and does not print a chapter number in the printed documentation
contents page, or in the chapter heading. Used to implement \helpref{glossaries}{glossarysection} and
other sections that are not real chapters.

\subsection*{cinsert:0}\label{cinsert}

Prints a C++ insertion operator (\cinsert).

\subsection*{cite:1}\label{cite}

Cite a reference. The argument is a reference key as defined in a \LaTeX\ .bib
file.

\subsection*{class:1}\label{class}

Outputs the argument, an index entry (\LaTeX\ only) and a keyword entry (WinHelp only).
Used in class reference documentation.

%\subsection*{cleardoublepage}
%\subsection*{clearpage}
%\subsection*{cline}
\subsection*{clipsfunc:3}\label{clipsfunc}

Formats a CLIPS function, given the return value, function name, and
arguments.

%\subsection*{columnsep}
\subsection*{comment:1}\label{comment}

Allows large comments in \LaTeX\ files. Ignored by Tex2RTF.

\subsection*{copyright:0}\label{copyright}

Outputs the copyright symbol.

\subsection*{cparam:2}\label{cparam}

Formats a CLIPS type and argument. Used within the third argument of
a \helprefn{clipsfunc}{clipsfunc} command.

\subsection*{date:1}\label{date}

Specifies the date of a document; only output by \helprefn{maketitle}{maketitle}.

\subsection*{description:1}\label{description}

A list environment, where each \helprefn{item}{item} command must be
followed by optional (!) square-bracketed text which will be highlighted.

%\subsection*{destruct:1}\label{destruct}
\subsection*{documentstyle:1}\label{documentstyle}

Specifies the main style (report, article etc.) and, optionally, style files
such as {\tt texhelp.sty}. A report has \helprefn{chapters}{chapter}, while an article's top-level
sections are specified using \helprefn{section}{section}.

\subsection*{document:1}\label{document}

This environment should enclose the body of a document.

%\subsection*{doublespace}\label{doublespace}
\subsection*{em:1}\label{em}

Emphasizes text (italic in RTF).

\subsection*{enumerate:1}\label{enumerate}

Enumerate list environment: numbers the \helprefn{items}{item}.

%\subsection*{equation}\label{equation}
%\subsection*{evensidemargin}
%\subsection*{fbox:1}\label{fbox}

\subsection*{figure:1}\label{figure}

A figure enviroment: does nothin in RTF.

\subsection*{flushleft:1}\label{flushleft}

Flushes the given text to the left margin.

\subsection*{flushright:1}\label{flushright}

Flushes the given text to the right margin.

%\subsection*{footheight}\label{footheight}
\subsection*{footnote:1}\label{footnote}

In linear RTF, a footnote is created. Whether this appears at the end of
the section or the bottom of the page appears to depend on the current
document style, at least for MS Word 6.0 for Windows. The default seems
to be to put the footnotes at the end of the section, which is probably
not the best assumption.

In WinHelp RTF, a bracketed number is generated for the footnote
and the footnote becomes a popup topic. It is probably preferable
to change footnote commands to \helpref{footnotepopup}{footnotepopup},
or \helpref{popref}{popref} references to glossary entries.

This command is not supported for formats other than \LaTeX,
linear RTF and WinHelp RTF.

\subsection*{footnotepopup:2}\label{footnotepopup}

In linear RTF, a footnote is created following the first argument, as with
\helpref{footnote}{footnote}.

In WinHelp RTF, a the first argument is highlighted and becomes
a popup reference to the second argument. See also \helpref{footnote}{footnote}\rtfsp
and \helpref{popref}{popref}.

This command is not supported for formats other than \LaTeX,
linear RTF and WinHelp RTF.

%\subsection*{footskip}\label{footskip}
%\subsection*{framebox:1}\label{framebox}

\subsection*{functionsection:1}\label{functionsection}

Defines a subsection, adding the C++ function name to the \LaTeX\ index or the
WinHelp keyword list.

Should be followed by a \helprefn{func}{func} command to specify function
details.

\subsection*{func:3}\label{func}

Defines a C++ function, given the return type, function name, and parameter list.

Should occur after a \helprefn{functionsection}{functionsection} command.

%\subsection*{glossary:}\label{glossary}
\subsection*{gloss:1}\label{gloss}

Marks a glossary entry. In \LaTeX, this is a synonym for an \helprefn{item}{item}
with an optional argument, within a \helprefn{description}{description} environment,
and the argument is added to the index.

In Windows Help, this is identical to a \helprefn{section*}{sectionX} in a report.

If labels are associated with the glossary entries, they can be referenced by
\helpref{helpref}{helpref} or \helpref{popref}{popref} jumps. A glossary entry is
currently the only type of destination that popref may refer to.

This is an example of making a glossary in a report:

\begin{verbatim}
\begin{helpglossary}

\gloss{API}\label{api}

Application Programmer's Interface - a set of calls and classes defining
how a library (in this case, wxWindows) can be used.

\gloss{Canvas}\label{canvas}

A canvas in XView and wxWindows is a subwindow...

\gloss{DDE}\label{dde}

Dynamic Data Exchange - Microsoft's interprocess communication protocol.
wxWindows provides an abstraction of DDE under both Windows and UNIX.

\end{helpglossary}
\end{verbatim}

%\subsection*{headheight}\label{headheight}
\subsection*{helpglossary:1}\label{helpglossary}

An environment for making a glossary (not standard \LaTeX). See \helprefn{gloss}{gloss} for
usage.

\subsection*{helpignore:1}\label{helpignore}

Ignores the argument in Tex2RTF generated files, but not \LaTeX.

\subsection*{helponly:1}\label{helponly}

Only outputs the argument in Tex2RTF generated files.

\subsection*{helpinput:1}\label{helpinput}

Only includes the given file in Tex2RTF generated files.

\subsection*{helpfontfamily:1}\label{helpfontfamily}

Specifies the font family for Tex2RTF generated files. The argument
may be Swiss or Times.

\subsection*{helpfontsize:1}\label{helpfontsize}

Specifies the font size for Tex2RTF generated files.

\subsection*{helpref:2}\label{helpref}

Specifies a jump to a labelled chapter, section, subsection subsubsection
or figure.

The first argument is text to be highlighted (mouseable in help systems)
and the second is the reference label. In linear documents, the section number
is given following the text, unless the \helprefn{helprefn}{helprefn} command
is used instead, where the section number is suppressed.

Note that when generating HTML, the label {\it contents} is automatically defined,
and may be referenced using {\it helpref}.

\subsection*{helprefn:2}\label{helprefn}

Specifies a jump to a labelled chapter, section, subsection subsubsection
or figure.

The first argument is text to be highlighted (mouseable in help systems)
and the second is the reference label.  See \helprefn{helpref}{helpref} for
the form where the section number is printed in linear documents.

%\subsection*{hfill}\label{hfill}
\subsection*{hline:0}\label{hline}

Within a \helprefn{tabular}{tabular} environment, draws a horizontal
rule below the current row. Note that this does not work in RTF for the
last row of a table, in which case the command \helprefn{ruledrow}{ruledrow}\rtfsp
should be used instead.

\subsection*{hrule:0}\label{hrule}

Draws a horizontal line below the current paragraph. For example:

\begin{verbatim}
This paragraph should have a horizontal rule following it.\hrule
\end{verbatim}

gives:

This paragraph should have a horizontal rule following it.\hrule

\subsection*{htmlignore:1}\label{htmlignore}

Ignores the argument in HTML.

\subsection*{htmlonly:1}\label{htmlonly}

Only outputs the argument in HTML.

%\subsection*{hspace*}\label{hspaceX}
%\subsection*{hspace}\label{hspace}
%\subsection*{hskip*}\label{hskipX}
%\subsection*{hskip}\label{hskip}

\subsection*{huge:1}\label{huge1}

Outputs the argument in huge text.

\subsection*{Huge:1}\label{Huge2}

Outputs the argument in huger text that \helprefn{huge}{huge1}.

\subsection*{HUGE:1}\label{HUGE3}

Outputs the argument in huger text that \helprefn{Huge}{Huge2}.

%\subsection*{includeonly}\label{includeonly}
\subsection*{include:1}\label{include}

Include the given file. The command must not be preceded by any whitespace,
and spurious whitespace between elements of the command will also
trip up Tex2RTF.

\subsection*{indented:2}\label{indented}

Environment supplied by Tex2RTF to allow (possibly nested) indentation of
\LaTeX\ and RTF text. The first argument is the amount to be indented.

For example:

\begin{verbatim}
\begin{indented}{2cm}
This text should be indented by a couple of centimetres. This can be
useful to highlight paragraphs.
\end{indented}
\end{verbatim}

produces:

\begin{indented}{2cm}
This text should be indented by a couple of centimetres. This can be
useful to highlight paragraphs.
\end{indented}

%\subsection*{index:0}\label{index}
\subsection*{input:1}\label{input}

Include the given file. The command must not be preceded by any whitespace,
and spurious whitespace between elements of the command will also
trip up Tex2RTF.

\subsection*{itemize:1}\label{itemize}

Indents each \helprefn{item}{item} of a list and precedes with a bullet.
If the file {\tt bullet.bmp} is found by Tex2RTF, this bitmap will be
used as the bullet (WinHelp RTF); otherwise, a symbol or bold `o' will be used instead,
depending on output format.

Use \helprefn{itemsep}{itemsep} to specify the separation between
list items. Currently this only works for linear or WinHelp RTF output.
If the value is more than zero, an extra paragraph is inserted.

\subsection*{item:0}\label{item}

Marks an item of a \helprefn{itemize}{itemize}, \helprefn{description}{description} or \helprefn{enumerate}{enumerate}
list. Items within a description environment should have an `optional' argument
in square brackets which will be highlighted.

\subsection*{itemsep:0}\label{itemsep}

Use this command to specify the separation between
list items. Currently this only works for linear or WinHelp RTF output.
If the value is zero, no extra paragraph is inserted; if the value
is more than zero, an extra paragraph is inserted.

\subsection*{image:2}\label{image}

This is translated to a PSBOX macro package {\it psboxto} command in \LaTeX,
the first argument being a sizing command and the second a filename.

In HTML mode, the second argument is used to generate a PostScript file reference.

In RTF mode, the second argument is tried with first a BMP extension and
then a WMF extension to find a suitable Windows bitmap file or placeable
metafile. If a suitable file is found, in Windows Help mode a {\it bmc}\rtfsp
command is inserted into the RTF file with a reference to the file. In
linear RTF mode, the bitmap or metafile is converted into hex and
inserted into the RTF document.

Note that only RGB-encoded Windows bitmaps, or placeable metafiles, are
valid for input to Tex2RTF. You can convert a RLE (run length encoded)
bitmap file into a (bigger) RGB file using a program such as Paintshop
Pro. A placeable metafile has a special header with dimension
information. One may be constructed by a wxWindows program by calling
the function wxMakeMetafilePlaceable. The Microsoft Windows SDK has a
sample program that loads and steps through placeable and ordinary
metafiles.

Here is an example of using the {\it image} command.

\begin{verbatim}
\begin{figure}
$$\image{5cm;0cm}{heart.ps}$$

\caption{My picture}\label{piccy}
\end{figure}
\end{verbatim}

The dollars centre the image in the horizontal plane. The syntax
of the first argument to {\it image} is taken from syntax used by the {\it psbox}\rtfsp
package: it allows specification of the horizontal and vertical
dimensions of the image. Scaling will take place for PostScript
and metafile images. A value of zero indicates that the image should
be scaled in proportion to the non-zero dimension. Zeros for both
dimensions will leave the image unscaled in the case of metafiles,
or scaled to fit the page in the case of PostScript.

\subsection*{index:1}\label{index}

In WinHelp mode, adds a keyword to the keyword list for the current
topic. This keyword must currently be straight text, with no embedded
commands. The conversion process must be run twice (without quitting
Tex2RTF inbetween) to resolve the keyword references.

\subsection*{it:1}\label{it}

Marks the argument in italic.

%\subsection*{kill}\label{kill}
\subsection*{label:1}\label{label}

Labels the chapter, section, subsection, subsubsection or figure caption
with the given label. This must be an ASCII string, and duplicate items
with different case letters are not allowed.

The command must follow immediately after the section or caption command,
with no intervening whitespace.

\subsection*{large:1}\label{large1}

Marks the argument in large text.

\subsection*{Large:1}\label{Large2}

Makes the argument display in larger text than \helprefn{large}{large1}.

\subsection*{LARGE:1}\label{LARGE3}

Makes the argument display in larger text than \helprefn{Large}{Large2}.

\subsection*{LaTeX:0}\label{LaTeX}

Outputs the annoying \LaTeX\ upper and lower case name.

\subsection*{latexignore:1}\label{latexignore}

Ignores the argument in \LaTeX.

\subsection*{latexonly:1}\label{latexonly}

Only prints the argument in \LaTeX.

%\subsection*{lbox}\label{lbox}
\subsection*{ldots}\label{ldots}

Outputs three dots.

%\subsection*{linebreak}\label{linebreak}
%\subsection*{listoffigures}\label{listoffigures}
%\subsection*{listoftables}\label{listoftables}
%\subsection*{makeglossary}\label{makeglossary}
%\subsection*{makeindex}\label{makeindex}
\subsection*{maketitle}\label{maketitle}

Makes the article or report title by outputting the \helprefn{title}{title},
\rtfsp\helprefn{author}{author} and optionally \helprefn{date}{date}.

%\subsection*{markright}\label{markright}
%\subsection*{markboth}\label{markboth}

\subsection*{marginparwidth:1}\label{marginparwidth}

Specifies the width of a margin paragraph.

\subsection*{marginpar:1}\label{marginpar}

Inserts a marginal note. It is best to use the Tex2RTF extensions \rtfsp
\helprefn{marginparodd}{marginparodd} and \helprefn{marginpareven}{marginpareven} \rtfsp
for best results.

\subsection*{marginpareven:1}\label{marginpareven}

Inserts a marginal note on even pages. This is required for RTF generation since
it is impossible for Tex2RTF to know in advance which side of paper the marginal note
will fall upon, and the text has to be positioned using absolute dimensions.
If only one sided output is required, use \helprefn{marginparodd}{marginparodd} \rtfsp
instead.

\subsection*{marginparodd:1}\label{marginparodd}

Inserts a marginal note on odd pages. This is required for RTF generation since
it is impossible for Tex2RTF to know in advance which side of paper the marginal note
will fall upon, and the text has to be positioned using absolute dimensions.

Also, even if one-sided output is required, this command should be used instead
of {\it marginpar} because the \LaTeX\ macro allows it to be used
just before a paragraph. Normally, if this were done, the marginal note would
not be aligned with the paragraph succeeding it. For example:

\begin{verbatim}
\marginparodd{{\it Note:} if nothing happens, perhaps you have not plugged
your computer in at the mains.}%
To start using your WhizzyGig Computer 4001, push the Power button and
wait for some kind of response.
\end{verbatim}

Note the percent sign after the {\it marginparodd} command: without it,
\LaTeX\ refuses to believe that the following text is part of the
same paragraph, and will print the note at the wrong place.

You should use \helprefn{textwidth}{textwidth} to allow space for marginal
notes, and also \helprefn{marginparwidth}{marginparwidth} to specify the size of
the marginal note.

In WinHelp, HTML and wxHelp, marginal notes are treated as normal text delineated
with horizontal rules above and below.

%\subsection*{mbox:1}\label{mbox}

\subsection*{membersection:1}\label{membersection}

Used when formatting C++ classes to print a subsection for the member name.

\subsection*{member:1}\label{member}

Used to format a C++ member variable name.

%\subsection*{multicolumn}\label{multicolumn}
\subsection*{newcommand:3}\label{newcommand}

Define a new command; arguments are the command, the number of
arguments, and the command body. For example:

\begin{verbatim}
\newcommand{\crazy}[2]{{\bf #1} is crazy but {\bf #2} is not.}
\end{verbatim}

The command must have no whitespace at the start of the line or between
the three arguments.

New commands may also be defined in the {\tt tex2rtf.ini} file using
slightly different syntax (see \helpref{Macro not found error}{macronotfound}).

%\subsection*{newcounter}\label{newcounter}
%\subsection*{newline}\label{newline}
\subsection*{newpage:0}\label{newpage}

Inserts a page break.

\subsection*{nocite:1}\label{nocite}

Specifies that this reference should appear in the bibliography,
but the citation should not appear in the text.

See also \helprefn{cite}{cite}.

\subsection*{noindent:0}\label{noindent}

Sets paragraph indentation to zero. See also \helprefn{parindent}{parindent}.

\subsection*{normalbox:1}\label{normalbox}

Draws a box around the given paragraph in \LaTeX\ and RTF. In HTML
and XLP formats, horizontal rules are drawn before and after the text.

For example:

\begin{verbatim}
\normalbox{This should be a boxed paragraph for highlighting important
information, such as information for registering a shareware program.}
\end{verbatim}

gives:

\normalbox{This should be a boxed paragraph for highlighting important
information,such as information for registering a shareware program.}

See also \helprefn{normalboxd}{normalboxd} for double-bordered text.

\subsection*{normalboxd:1}\label{normalboxd}

Draws a double border around the given paragraph in \LaTeX\ and RTF. In
HTML and XLP formats, horizontal rules are drawn before and after the
text.

For example:

\begin{verbatim}
\normalboxd{This should be a boxed paragraph for highlighting important
information, such as information for registering a shareware program.}
\end{verbatim}

gives:

\normalboxd{This should be a boxed paragraph for highlighting important
information,such as information for registering a shareware program.}

See also \helprefn{normalbox}{normalbox} for single-bordered text.

%\subsection*{nolinebreak}\label{nolinebreak}
%\subsection*{nopagebreak}\label{nopagebreak}

\subsection*{normalsize:1}\label{normalsize}

Sets the font size back to normal.

\subsection*{onecolumn:0}\label{onecolumn}

Sets the number of columns to one. \LaTeX\ and linear RTF only.

%\subsection*{oddsidemargin}\label{oddsidemargin}
%\subsection*{pagebreak}\label{pagebreak}
%\subsection*{pageref}\label{pageref}

\subsection*{pagestyle:1}\label{pagestyle}

If argument is {\it fancyplain} or {\it fancy}, Tex2RTF
separates the header from the rest of the page with a rule.
This command must be defined for headers and footers to
work properly. See also \helprefn{setheader}{setheader},
\helprefn{setfooter}{setfooter}.

\LaTeX\ and linear RTF only.

\subsection*{pagenumbering:1}\label{pagenumbering}

The argument may be one of:

\begin{description}
\itemsep=0pt
\item[alph] a, b, ...
\item[Alph] A, B, ...
\item[arabic] 1, 2, ...
\item[roman] i, ii, ...
\item[Roman] I, II, ...
\end{description}

\LaTeX\ and linear RTF only.

\subsection*{paragraph*}\label{paragraphX}

Behaves as for a subsubsection.

\subsection*{paragraph}\label{paragraph}

Behaves as for a subsubsection.

\subsection*{param:1}\label{param}

Formats a C++ type and argument pair. Should be used within the third argument
of a a \helprefn{func}{func} command.

\subsection*{parindent:1}\label{parindent}

Indents the first line of succeeding paragraphs by the given amount.

\subsection*{parskip:1}\label{parskip}

Changes the spacing between paragraphs. In fact, in RTF this will cause
two \helprefn{par}{par} commands to be output if parindent is greater
than zero.

%\subsection*{part*}\label{partX}
%\subsection*{part}\label{part}
\subsection*{par:0}\label{par}

Causes the paragraph to end at this point. \LaTeX\ and Tex2RTF also
treat two consecutive newlines as a paragraph break.

%\subsection*{pfunc}\label{pfunc}
%\subsection*{picture}\label{picture}
%\subsection*{printindex}\label{printindex}
\subsection*{popref:2}\label{popref}

Similar to \helprefn{helprefn}{helprefn}, except that in Windows Help,
the destination text is popped up in a small window to be dismissed with
a mouse click, instead of going to a separate section.

Currently this command can only refer to a labelled glossary entry; see
\helprefn{gloss}{gloss}.

\subsection*{psboxto:2}\label{psboxto}

Identical to \helprefn{image}{image}.

%\subsection*{psbox}\label{psbox}
\subsection*{quote:1}\label{quote}

Indents a short quotation.

\subsection*{quotation:1}\label{quotation}

Indents a long quotation.

%\subsection*{raggedbottom}\label{raggedbottom}
%\subsection*{raggedleft}\label{raggedleft}
%\subsection*{raggedright}\label{raggedright}
\subsection*{ref:1}\label{ref}

In \LaTeX\ and linear RTF, refers to a \helprefn{label}{label} and
causes the number of that section or figure to be printed.

\subsection*{rm:1}\label{rm}

Causes the argument to be formatted in a plain, roman font.

%\subsection*{roman}\label{roman1}
%\subsection*{Roman}\label{Roman2}

\subsection*{row:1}\label{row}

A Tex2RTF command signifying the row of a table within the \helprefn{tabular}{tabular}\rtfsp
environment. See also \helprefn{ruledrow}{ruledrow}.

\subsection*{ruledrow:1}\label{ruledrow}

A Tex2RTF command signifying a ruled row of a table within the \helprefn{tabular}{tabular}\rtfsp
environment. See also \helprefn{row}{row}.

\subsection*{rtfignore:1}\label{rtfignore}

Ignores the argument in linear RTF.

\subsection*{rtfonly:1}\label{rtfonly}

Only outputs the argument in linear RTF.

\subsection*{rtfsp:0}\label{rtfsp}

Outputs a space in RTF. Tex2RTF tries to insert a space where one is implied
by a newline, but cannot cope where a line starts or ends with a command,
in the middle of a paragraph. Use this command to insert a space explicitly.

\subsection*{sc:1}\label{sc}

Prints the output in small capitals.

\subsection*{section*:1}\label{sectionX}

Section header, with no entry in the contents page.

\subsection*{section:1}\label{section}

Section header, with an entry in the contents page.

\subsection*{sectionheading:1}\label{sectionheading}

Like \helprefn{section}{section}, but does not increment the section
number and does not print a section number in the printed documentation
contents page, or in the section heading.

\subsection*{setfooter:6}\label{setfooter}

Tex2RTF has a non-standard way of setting headers and footers,
but the default macro definitions in texhelp.sty may be altered
to your current method.

The arguments are as follows:

\begin{enumerate}
\itemsep=0pt
\item Left footer, even pages
\item Centre footer, even pages
\item Right footer, even pages
\item Left footer, odd pages
\item Centre footer, odd pages
\item Right footer, odd pages
\end{enumerate}

For many documents, the first three arguments will be left empty.

The behaviour for first pages of a chapter, section or document
is to have a blank header, but print the footer.

For best results, define headers and footers for {\it each chapter or
section}.

Note that this command works only for \LaTeX\ and linear RTF. See also\rtfsp
\helprefn{setheader}{setheader}.

\subsection*{setheader:6}\label{setheader}

Tex2RTF has a non-standard way of setting headers and footers,
but the default macro definitions in texhelp.sty may be altered
to your current method.

The arguments are as follows:

\begin{enumerate}
\itemsep=0pt
\item Left header, even pages
\item Centre header, even pages
\item Right header, even pages
\item Left header, odd pages
\item Centre header, odd pages
\item Right header, odd pages
\end{enumerate}

For many documents, the first three arguments will be left empty.
If \helprefn{pagestyle}{pagestyle} is not plain or empty, the
header will separated from the rest of the page by a rule.

The behaviour for first pages of a chapter, section or document
is to have a blank header, but print the footer.

For best results, define headers and footers for {\it each chapter or
section}.

Note that this command works only for \LaTeX\ and linear RTF. See also\rtfsp
\helprefn{setfooter}{setfooter}.

%\subsection*{setcounter}\label{setcounter}
%\subsection*{sf}\label{sf}
\subsection*{shortcite:1}\label{shortcite}

The same as \helprefn{cite}{cite}.

%\subsection*{singlespace}\label{singlespace}
%\subsection*{sloppypar}\label{sloppypar}
%\subsection*{sloppy}\label{sloppy}
%\subsection*{sl}\label{sl}

\subsection*{small:1}\label{small}

Prints the argument in a small font.

%\subsection*{subitem}\label{subitem}
\subsection*{subparagraph*:1}\label{subparagraphX}

Behaves as for a subsubsection.

\subsection*{subparagraph:1}\label{subparagraph}

Behaves as for a subsubsection.

%\subsection*{special}\label{special}

\subsection*{subsection*:1}\label{subsectionX}

Subsection header, with no entry in the contents page. 

\subsection*{subsection:1}\label{subsection}

Subsection header, with an entry in the contents page. 

\subsection*{subsubsection*:1}\label{subsubsectionX}

Subsubsection header, with no entry in the contents page. 

\subsection*{subsubsection:1}\label{subsubsection}

Subsubsection header, with an entry in the contents page. 

\subsection*{tabbing:1}\label{tabbing}

Tabbing environment: doesn't work properly in RTF.

\subsection*{tableofcontents:0}\label{tableofcontents}

Inserts the table of contents at this point.

%\subsection*{table}\label{table}
\subsection*{tabular:2}\label{tabular}

Tabular environment: an attempt is made to output something
reasonable in RTF format, although currently only simple
tables will work. The first argument specifies the column formatting.
a pipe symbol (\verb$|$) denotes a vertical border, one of {\it l, r, c}\rtfsp
signifies a normal column of default width, and {\it p} followed by
a dimension specifies a column of given width. It is recommended that
the {\it p} is used since Tex2RTF cannot deduce a column width in the
same way that \LaTeX\ can.

Horizontal rules are achieved with \helprefn{hline}{hline}; two together
signify a double rule.

Use the Tex2RTF \helprefn{row}{row} and \helprefn{ruledrow}{ruledrow} commands
for best effect.

For two-column tables that work in WinHelp files, use \helprefn{twocollist}{twocollist} instead.

Example:

\begin{verbatim}
\begin{tabular}{|l|p{8.5cm}|}\hline
\row{{\bf A.I.}&{\bf Simulation}}\hline\hline
\row{rules&constraints/methods}
\row{planning&design of experiments}
\row{diagnosis&analysis of results}
\ruledrow{learning&detection of connections}
\end{tabular}
\end{verbatim}

This produces:

\begin{tabular}{|l|p{8.5cm}|}\hline
\row{{\bf A.I.}&{\bf Simulation}}\hline\hline
\row{rules&constraints/methods}
\row{planning&design of experiments}
\row{diagnosis&analysis of results}
\ruledrow{learning&detection of connections}
\end{tabular}

%\subsection*{tab:1}\label{tab}
\subsection*{TeX:0}\label{TeX}

Outputs the annoying \TeX\ upper and lower case name.

\subsection*{textwidth:1}\label{textwidth}

Sets the text width (valid for RTF only). This might be used
in conjunction with \helprefn{marginpar}{marginpar}, for example,
to leave space for marginal notes.

%\subsection*{textheight}\label{textheight}
\subsection*{thebibliography:1}\label{thebibliography}

An environment for specifying the a bibliography as a series of\rtfsp
\helprefn{bibitem}{bibitem} commands; the preferred method is to use
.bib files and \helprefn{bibliography}{bibliography} instead.

%\subsection*{titlepage:0}\label{titlepage}

\subsection*{title:1}\label{title}

Sets the title, to be output when the command \helprefn{maketitle}{maketitle}\rtfsp
is used.

\subsection*{tiny:1}\label{tiny}

Prints the argument in a very small font.

\subsection*{today:0}\label{today}

Outputs today's date.

%\subsection*{topmargin}\label{topmargin}
%\subsection*{topskip}\label{topskip}
\subsection*{tt:1}\label{tt}

Outputs the argument in teletype font.

%\subsection*{typein}\label{typein}
\subsection*{typeout:1}\label{typeout}

Outputs the text on the Tex2RTF text window.

\subsection*{twocolitem:2}\label{twocolitem}

Used to specify a row for a two column list, a Tex2RTF
extension to optimize two-column lists for different
file formats.  See \helprefn{twocollist}{twocollist},
\rtfsp\helprefn{twocolitemruled}{twocolitemruled}.

\subsection*{twocolitemruled:2}\label{twocolitemruled}

Used to specify a ruled row for a two column list, a Tex2RTF
extension to optimize two-column lists for different
file formats.  See \helprefn{twocollist}{twocollist},
\rtfsp\helprefn{twocolitem}{twocolitem}.

\subsection*{twocollist:1}\label{twocollist}

A Tex2RTF environment for specifying a table of two columns, often
used in manuals and help files (for example, for listing commands and
their meanings). The first column should be one line only, and
the second can be an arbitrary number of paragraphs.

The reason that a normal tabular environment cannot be used is that
WinHelp does not allow borders in table cells, so a different method
must be employed if any of the rows are to be ruled. In \LaTeX, a table
is used to implement this environment. In RTF, indentation is used instead.

Use this environment in conjunction with \helprefn{twocolitem}{twocolitem} and\rtfsp
\helprefn{twocolitemruled}{twocolitemruled}. To set the widths of the first
and second column, use \helprefn{twocolwidtha}{twocolwidtha} and\rtfsp
\helprefn{twocolwidthb}{twocolwidthb}.

Example:

\begin{verbatim}
\htmlignore{\begin{twocollist}}
\twocolitemruled{{\bf Command}}{{\bf Description}}
\twocolitem{File}{The file menu is used to select various file-related
operations, such as saving, loading, exporting, importing, saving as
and various other bits and pieces.}
\twocolitem{Edit}{The Edit menu is used for selection, copying, pasting
and various other bits and pieces.}
\end{twocollist}
\end{verbatim}

This produces:

\begin{twocollist}
\twocolitemruled{{\bf Command}}{{\bf Description}}
\twocolitem{File}{The file menu is used to select various file-related
operations, such as saving, loading, exporting, importing, saving as
and various other bits and pieces.}
\twocolitem{Edit}{The Edit menu is used for selection, copying, pasting
and various other bits and pieces.}
\end{twocollist}

\subsection*{twocolwidtha:1}\label{twocolwidtha}

Sets the width of the first column in a two column list to the given
dimension. See also \helprefn{twocollist}{twocollist} and \helprefn{twocolwidthb}{twocolwidthb}.

\subsection*{twocolwidthb:1}\label{twocolwidthb}

Sets the width of the second column in a two column list to the given
dimension. See also \helprefn{twocollist}{twocollist} and \helprefn{twocolwidtha}{twocolwidtha}.

\subsection*{twocolumn:0}\label{twocolumn}

Sets the number of columns to two. \LaTeX\ and linear RTF only.

\subsection*{underline:1}\label{underline}

Underlines the argument.
  
\subsection*{verbatiminput:1}\label{verbatiminput}

Include the given file as if it were within a \helprefn{verbatim}{verbatim}\rtfsp
environment. The command must not be preceded by any whitespace,
and spurious whitespace between elements of the command will also
trip up Tex2RTF.

\subsection*{verbatim:1}\label{verbatim}

Uses a fixed-width font to format the argument without interpreting
any \LaTeX\ commands.

\subsection*{verb}\label{verb}

The {\it verb} command is like the \helpref{verbatim}{verbatim} environment,
but for small amounts of text. The syntax is:

\begin{verbatim}
\verb<char><text><char>
\end{verbatim}

The character {\it char} is used as a delimiter; it may be any character
not ocurring in the following text, except asterisk.

For example, \verb@\verb$\thing%^&$@ produces \verb$\thing%^&$.

%\subsection*{verse}\label{verse}
%\subsection*{vfill}\label{vfill}
%\subsection*{vline}\label{vline}
%\subsection*{void}\label{void}
%\subsection*{vrule}\label{vrule}
%\subsection*{vspace*}\label{vspaceX}
%\subsection*{vskip*}\label{vskipX}
%\subsection*{vspace}\label{vspace}
%\subsection*{vskip}\label{vskip}

\subsection*{winhelpignore:1}\label{winhelpignore}

Ignores the argument in WinHelp RTF.

\subsection*{winhelponly:1}\label{winhelponly}

Only outputs the argument in WinHelp RTF.

\subsection*{xlpignore:1}\label{xlpignore}

Ignores the argument in XLP mode (wxHelp files).

\subsection*{xlponly:1}\label{xlponly}

Only outputs the argument in XLP mode (wxHelp files).

\section{Accents}\label{comments}

The following \LaTeX\ accents work for RTF production:

\begin{itemize}%
\itemsep=0pt
\item \verb$\'{a}$ produces \'{a}. Valid for a, e, i, o, u, A, E, I, O, U
\item \verb$\`{a}$ produces \`{a}. Valid for a, e, i, o, u, y, A, E, I, O, U, Y
\item \verb$\^{a}$ produces \^{a}. Valid for a, e, i, o, u, A, E, I, O, U
\item \verb$\~{a}$ produces \~{a}. Valid for a, n, o, A, N, O
\item \verb$\"{a}$ produces \"{a}. Valid for a, e, i, o, u, y, A, E, I, O, U, Y
\item \verb$\.{a}$ produces \.{a}. Valid for a, A
\end{itemize}

\chapter{Errors and bugs}\label{errors}
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}
\setfooter{\thepage}{}{}{}{}{\thepage}

\section{Errors}

The following sections explain some of the errors that may occur,
and how to deal with them.

\subsection{Macro not found}\label{macronotfound}

This error indicates that Tex2RTF has not implemented a standard
\rtfsp\LaTeX\ macro, or that a local macro package is being used that
Tex2RTF does not know about. It can cause spurious secondary
errors, such as not recognising the end document command.

You can get round this by defining a macro file (default name {\tt tex2rtf.ini})
containing command definitions, such as:

\begin{verbatim}
\crazy      [2]{{\bf #2} is crazy but #1 is not}
\something  [0]{}
\julian     [0]{Julian Smart}
\end{verbatim}

New commands may be defined in \LaTeX\ files, but custom macro files
will have to be defined when local style files are being used. See\rtfsp
\helpref{Initialisation file syntax}{inifile} for further details.

The `Macro not found' error can also be caused by a syntax error such as
an unbalanced brace or passing the wrong number of arguments to a macro,
so look in the vicinity of the reported error for the real cause.

\subsection{Unresolved references}

References and citations are usually resolved on a second pass of
Tex2RTF. If this doesn't work, then a missing label or bibliographical
entry is to blame.

\section{Bugs}

\begin{description}
\item[Command parsing.] If a command is used followed by inappropriate
argument syntax, Tex2RTF can crash. This an occur when a command is
used in an asterisk form that is only formed in the non-asterisk
variety. The non-asterisk form is assumed, which makes the following
asterisk trip up the parser.
\item[Setlength.] Using the $\backslash$setlength command doesn't work,
since its first argument looks like a macro with the wrong number
of arguments. Use an alternative form instead, e.g. \verb$\parindent 0pt$ instead
of \verb$\setlength{parindent}{0pt}$.
\item[Newcommand bug.] Environments in a command definition confuse
Tex2RTF. Use the command form instead (e.g. $\backslash$flushleft\{...\} instead
of $\backslash$begin\{flushleft\} ... $\backslash$end\{flushleft\}.
\item[Bibliography.] There's no flexibility in the way references
are output: I expect I'll get round to doing something better,
but only if people tell me they need it!
\item[Tables.] Tables can't handle all \LaTeX\ syntax, and require
the Tex2RTF \verb$\row$ commands for decent formatting. Still, it's
better than it was (RTF only).
\item[Indexes and glossaries.] Not yet supported.
\item[Crashes.] Crashes may be due to an input file exceeding the fixed-size
buffer used for converting command arguments, especially for the {\it verbatim}\rtfsp
command. Use the {\bf -bufsize} switch to increase the buffer size.
\item[Verbatiminput.] Verbatiminput files which do not end with a blank line
can trip up following commands.
\item[Comment.] The {\it comment} environment doesn't really ignore its argument
when parsing, so it will trip up over unrecognised syntax and commands.
\end{description}

\newpage

% Puts books in the bibliography without needing to cite them in the
% text
\nocite{smart93a}%
\nocite{robins87}%
\nocite{kopka}%
\nocite{pfeiffer}%

\bibliography{refs}
\addcontentsline{toc}{chapter}{Bibliography}
\setheader{{\it REFERENCES}}{}{}{}{}{{\it REFERENCES}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%

\begin{helpglossary}
\setheader{{\it GLOSSARY}}{}{}{}{}{{\it GLOSSARY}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%

\gloss{GUI}

Graphical User Interface, such as Windows 3 or X.

\gloss{HTML}\label{html}

Hypertext Markup Language; an SGML document type, used for providing
hypertext information on the World Wide Web, a distributed hypertext
system on the Internet.

\gloss{\LaTeX}\label{latexgloss}

A typesetting language implemented as a set of \TeX\ macros. It is
distinguished for allowing specification of the document structure,
whilst taking care of most layout concerns. It represents the opposite
end of the spectrum from WYSIWYG word processors.

\gloss{Metafile}

Microsoft Windows-specific object which may contain a restricted set of
GDI primitives. It is device independent, since it may be scaled without
losing precision, unlike a bitmap. A metafile may exist in a file or in
memory. wxWindows implements enough metafile functionality to use it to
pass graphics to other applications via the clipboard. A placeable metafile
is a metafile with a 22-byte header which can be imported into several
Windows applications, and is a format used by the Microsoft help compiler.

\gloss{Open Look}

A specification for a GUI `look and feel', initiated by Sun
Microsystems. XView is one toolkit for writing Open Look applications
under X, and wxWindows sits on top of XView.

\gloss{RTF}\label{rtf}

Rich Text Format: an interchange format for word processor files,
used for importing and exporting formatted documents, and as the
input to the Windows Help compiler.

\gloss{wxHelp}\label{wxhelp}

wxHelp is the hypertext help facility used to provide on-line
documentation for UNIX-based wxWindows applications. Under Windows 3.1,
Windows Help is used instead.

\gloss{wxWindows}\label{wxwindows}

wxWindows is a free C++ toolkit for writing applications that are
portable across several platforms. Currently these are Motif, Open Look,
Windows 3.1 and Windows NT.

\gloss{XView}

An X toolkit supplied by Sun Microsystems, initially just for porting
SunView applications to X, but which has become a popular toolkit in its
own right due to its simplicity of use. XView implements Sun's Open Look
`look and feel' for X, but is not the only toolkit to do so.

\end{helpglossary}

\end{document}

