\usepackage{hevea}
\title{\hevea{} User Documentation\\
{\normalsize Version~\heveaversion}}
\urldef{\ftpbase}{\url}{ftp://ftp.inria.fr/INRIA/Projects/para/hevea/unstable}
\urldef{\ftpbase}{\url}{ftp://ftp.inria.fr/INRIA/Projects/para/hevea}
\urldef{\httpbase}{\url}{http://pauillac.inria.fr/~maranget/hevea}
\def\locversion{\ifdevrelease\releasedate\else\heveaversion\fi}
\ahref{\ftpbase/hevea-\locversion-manual.ps.gz}{compressed Postscript},
\ahref{\ftpbase/hevea-\locversion-manual.pdf}{PDF}, and as
a \ahref{\ftpbase/hevea-\locversion-manual.tar.gz}{bundle of HTML files}.
\hevea{} is a \LaTeX{} to
\hevea{} understands \LaTeX{} macro definitions. Simple user style
Furthermore, \hevea{} customization is done by writing \LaTeX{} code.
\hevea{} is written in Objective Caml, as many lexers. It is
Using \hevea{} it is possible to translate large documents such
\hevea{} can also be instructed to output plain text or info files.
Information on \hevea{} is available at \ahrefurl{\heveaurl}.
# hevea a.tex
\hevea{} does not crash, just ignore them for the moment
If you wish to experiment \hevea{} on small \LaTeX{} source fragments,
then launch \hevea{} without arguments. \hevea{} will read its
# hevea
You can find some more elaborate \footahref{\heveaurl/examples/index.html}{examples} in the on-line
\noindent\hevea{} really knows about two \LaTeX{} base styles,
Base style \filename{style} is implemented by an \hevea{} specific
More precisely, \hevea{} interprets
\hevea{} searches for files).
Thus, at the moment, \hevea{} distribution includes the files,
Documents whose base style is not recognized by \hevea{} can be
\verb+hevea mydoc.tex+ will yield an error, since
\hevea{} cannot find the \texttt{acmconf.hva} file:
# hevea.opt mydoc.tex
This situation is avoided by invoking \hevea{} with the known
# hevea article.hva mydoc.tex
\hevea{} to load its \texttt{article.hva}
\hevea{} about them (see section~\ref{dontknow}).
\hevea{} will almost surely fail on \TeX-ish input.
Just like \LaTeX{}, \hevea{} reacts to the construct
\textit{file}. (if I got it right, \hevea{} even follows \TeX{} crazy
# hevea mymacros.hva mydoc.tex
As a consequence of \hevea{} behavior with respect to
Another situation is when \hevea{} fails to process a whole
style file. Usually, this means that \hevea{} crashes on that style
Then, \hevea{} should be instructed
This is done by invoking \texttt{hevea} as follows:
# hevea mymacros.hva -e mymacros.tex mydoc.tex
\hevea{} reacts in a similar, but different, manner, by
\hevea{} distributions already includes quite a few ``\texttt{.hva}''
and \hevea{} will react to \verb+\usepackage{zorglub}+ by loading
space, whereas a single newline is replicated in the output.
\hevea{} is a bit simplistic in breaking paragraphs and extra paragraph
\hevea{} tries to emulate \LaTeX{} behavior in all situations, but
by \LaTeX{} (or \hevea).
\hevea{} math mode is not very far from normal text mode, except that
feature allows users to instruct \hevea{}
symbols, whereas \verb+\alpha \rightarrow \beta+ produces these spaces.
freely adjust \hevea{} output without changing anything to \LaTeX{}
\hevea{} assumes this choice for the symbol font to be
A browser correctly displays \hevea{} symbols when
at \localurl{symbol.html} in \hevea{} on-line documentation
by any browser, \hevea{} offers a degraded mode that outputs text
\hevea{} operates in this mode when given the \verb+-nosymb+ flag.
\hevea{} is also given the \verb+-francais+ flag. In that case
\hevea{} handles such constraints in display mode only.
The main two operating modes of \hevea{} are \emph{text} mode and
\hevea{} chooses to translate in-text formulas that way.
\hevea{} display mode allows more control on text placement, since
As a consequence, \hevea{} is more powerful in display mode and
This rule is also true in \LaTeX{} but it is more strict in \hevea{},
Users should remember that \hevea{} is not \TeX{} or \LaTeX{} and that
\hevea{} author neither is D.~E.~Knuth nor L.~Lamport.
Users can get an idea on how \hevea{} combines elements in display mode
instructs \hevea{} to add a
By contrast with formulas, which \hevea{} attempts to render with
When \hevea{} thinks it cannot translate a symbol or construct
In the following (silly) example, \hevea{} gets nervous because of
Running \hevea{} on this input produces a warning:
# hevea manual.tex
When a warning reveals a real problem, it can often be cured by
writing a specific macro. The next two sections introduce \hevea{}
Just like \LaTeX{}, \hevea{} can be seen as a macro language, macros
As a consequence, users can tailor \hevea{} to their needs, but it
\hevea{}, since this is done by writing \LaTeX{} code.
fine control over text placement, whereas
Therefore, there are many situations where \hevea{} just cannot
If you are not satisfied with \hevea{} rendering of text style
\LaTeX{}. The key point is that you need not worry about \hevea{}
\texttt{hevea.hva} file that \hevea{} loads before processing any
invoke \hevea{} internal commands.
\LaTeX{} key constructs or \hevea{} internal commands (see section~\ref{internal}),
in \hevea{} source code.
argument to \hevea.
# hevea trouble.hva trouble.tex
By doing so, the macros written specially for \hevea{} are not
\subsection{\hevea{} does not know a macro}\label{dontknow}
Since \hevea{} does not know about \verb+\raisebox+,
\verb+\raisebox+ macro for \hevea, because of \html{} limitations.
Whereas, with the above definition of \verb+\raisebox+, \hevea{} produces:
\hevea{} now produces a satisfying output:
since by \hevea{} semantics for \verb+\newcommand+ (see
\subsection{\hevea{} incorrectly interprets a macro}\label{blob}
Sometimes \hevea{} knows about a macro, but the produced \html{}
However, \hevea{} does its best to issue warnings when such situations
\hevea{} always translates \verb+\rule+ as \verb+
+, ignoring size
There is not small square in the symbol font used by \hevea.
\subsection{\hevea{} crashes}
\hevea{} failure may have many causes, including a bug.
Such a source will make both \LaTeX{} and \hevea{} choke.
\hevea{} issues the following error message that shows the \LaTeX{}
Thus, when \hevea{} crashes, it is a good idea to check that the
Unfortunately, \hevea{} may crash on input that does not affect
However, \hevea{} usually translates \LaTeX{} environments to \html{}
At that point, \hevea{} refuses to generate obviously
of nuisance to \hevea{}.
By contrast, running \hevea{} on \texttt{horreur.tex} yields a fatal error:
# hevea horreur.tex
Note that \hevea{} error message ``\texttt{Latex environment
If \hevea{} crashes on \LaTeX{} source (not on \TeX{} source),
\hevea{} version number.
\latexsection{Making \hevea{} and \LaTeX{} both happy}
giving instructions to \hevea{}.
by \hevea{}.
processor, file loading, the \texttt{hevea} package
\hevea{} and \LaTeX{} treat files differently. Here is a summary of the main
\item \LaTeX{} and \hevea{} both load files given as arguments to
\hevea{} does not load \filename{filename}.
\item \hevea{} loads all files given as command line arguments.
\item Both \LaTeX{} and \hevea{} load style files given as optional
in the source and to invoke \hevea{} as follows:
\verb+# hevea+ \texttt{-e} \filename{latexonly}\ldots
\label{heveaonly}Having \filename{heveaonly} loaded by \hevea{} only is more
simple: it suffices to invoke \hevea{} as follows:
\verb+# hevea+ \filename{heveaonly}\ldots
Finally, if one has an \hevea{} equivalent \textit{style}\texttt{.hva}
while \hevea{} loads \textit{style}\texttt{.hva}.
As \hevea{} will not fail in case \textit{style}\texttt{.hva} does not
Writing an \hevea{}-specific file \textit{file}\texttt{.hva}
to \hevea{} only. Users can then be sure that these definitions are
In the \verb+\usepackage+ case, \hevea{} loads \textit{file}\texttt{.hva}
\subsection{The \protect\texttt{hevea} package}\label{heveastyle}
The \texttt{hevea.sty} style file is intended to be loaded by \LaTeX{}
and not by \hevea{}.
Note that \hevea{} copes with the constructs defined in
the \texttt{hevea.sty} file by default.
It is important to notice that the \texttt{hevea.sty} style file from
is not compatible with old \LaTeX{}. Moreover, the \texttt{hevea}
\hevea{} and \LaTeX{} perform the following actions on source inside
environment & \multicolumn{1}{c}{\hevea} & \multicolumn{1}{c}{\LaTeX}
\hevea{} and left alone by \LaTeX{}:
It is impossible to avoid the spurious space in \hevea{} output
by using the \texttt{hevea} boolean register
or comments, see sections~\ref{heveabool}
It takes a little practice of \hevea{} to understand why this is
by \hevea{} inside the \texttt{latexonly} environment, in order to
\noindent While there is no \hevea{} output.
Since \hevea{} somehow analyses input that is enclosed in the
Inside this environment, \hevea{} performs no other action
\subsubsection{The \texttt{hevea} boolean register}\label{heveabool}
\boolindex{hevea}Both the \texttt{hevea.sty} style file
and \hevea{} define the boolean register \texttt{hevea}.
and \textit{true} for \hevea{}.
Thus, provided, both the \texttt{hevea.sty} style file and the
{\ifthenelse{\boolean{hevea}}{\purple}{}purple rain, purple rain}\ldots
{\ifthenelse{\boolean{hevea}}{\purple}{}purple rain, purple rain}\ldots
\verb+\ifhevea+ (see Section~\ref{texcond}):
{\ifhevea\purple\fi purple rain, purple rain}\ldots
We get: {\ifhevea\purple\fi purple rain, purple rain}\ldots
\index{comment!hevea@\texttt{\%HEVEA}}
\hevea{} processes all lines that start with \verb+%HEVEA+, while
\texttt{hevea} package. For user convenience, comment equivalents to
\hevea{} just cannot process its input, but it remains acceptable to
\LaTeX{} output and to include a link to this image into \hevea{}
\hevea{} provides a limited support for doing this.
While outputting \filename{mydoc}\texttt{.html}, \hevea{} echoes some
output a \verb++ tag in \hevea{}
and \hevea{} output file name.
# hevea blob.tex
Note that this technique is used by \hevea{} implementation of the
Then, \hevea{} can have this image translated into a inlined (and
Then, processing \texttt{round.tex} through \hevea{} and
command, so that \hevea{} echoes \verb+\epsfbox+ and its argument to
Such a definition must be seen by \hevea{} only. So, it is best put
\hevea{} command line (see section~\ref{heveaonly}).
because \hevea{} does not know about \verb+\epsfbox+ by default.
Here again, the rule of the game is keeping \hevea{} away from the
normal process: first applying the filter, then making \hevea{} send
The \texttt{gpic} filter is applied first, then come \texttt{hevea}
# hevea tmp.tex -o smile.html
Observe how the \verb+-o+ argument to \hevea{} is used and that
\texttt{imagen} argument is \hevea{} output basename (see
section~\ref{basenames} for the full definition of \hevea{} output basename).
\hevea{} will process this source correctly, provided it is given its
Assuming that the definition above is in a \ahref{\heveaurl/examples/smile.hva}{smile.hva} file,
\ahref{\heveaurl/examples/smile.tex}{smile.tex} \mbox{now is}:
# hevea smile.hva tmp.tex -o smile.html
The warnings above are normal: they are issued when \hevea{} runs
\hevea{} outputs a single \texttt{.html} file. This file can be
First generate your {\html} document by applying \hevea{}:
\texttt{\# hevea }\filename{mydoc}\texttt{.tex}
\hevea{} are changed into remote links.
Some of \hevea{} output get replicated in all the files generated by
\texttt{hevea.sty} style file from the \hevea{} distribution.
An alternative to loading the \texttt{hevea} package is to put
Cutting units start a new output file, whereas units comprised between the
\item[{\tt\char92 tocnumber}] Instruct \hevea{} to put section numbers
\item[{\tt\char92 notocnumber}] Instruct \hevea{} \emph{not} to put
\verb+\begin{document}+. They all generate \html{} comments in \hevea{}
\usepackage{hevea}
\texttt{hevea} package is loaded).
an \hevea{} unaware \html{} page by~:
\ifhevea
\verb+\htmlprefix{\hevea{} Manual: }+ in the document,
``\hevea{} Manual: Cutting your document into pieces with \hacha''
\hevea{} and \hacha{}.
\ifhevea The example yields:
\hevea{} output language being \html{}, it is normal for users to insert
\hevea{} provides high-level commands for doing this.
\html{} directly may interfeer in nasty ways with \hevea{} internals.
commands have approriate equivalents defined by the \texttt{hevea}
package (see section~\ref{heveastyle}).
still can be typeset by \LaTeX{}, provided it loads the \texttt{hevea}
\multicolumn{1}{c}{Macro} & \multicolumn{1}{c}{\hevea} &
document processed both by \LaTeX{} and \hevea{}.
Moreover, \hevea{} (optionnaly) depends on only one third party package:
some compatibility with older versions of \hevea.
\hevea{} should be done using the \texttt{color} package (see
The \texttt{hevea.sty} style file
\hevea{} consumption only.
Then, for \hevea{} to include a link to the GIF image in its
Then \hevea{} has to be run as:
# hevea macros.hva doc.tex
Since it has its own definition of \verb+\epsfbox+, \hevea{} will
\newcommand{\includeimage}[1]{\ifhevea\imgsrc{#1.gif}\else\epsfbox{#1.ps}\fi}
Note that this method uses the \texttt{hevea} boolean register (see
section~\ref{heveabool}).
If one does not wish to load the \texttt{hevea.sty} file,
When \hevea{} is given the command line option ``\texttt{-O}'',
\texttt{hevea.sty} style file (see section~\ref{heveastyle}).
In this section a few of \hevea{} internal macros are
Internal macros occur at the final expansion stage of \hevea{} and
their behavior may change from one version of \hevea{} to another and
crashes \hevea.
\hevea{} works.
The general principle of \hevea{} is that \LaTeX{} environments
excerpt from the \texttt{hevea.hva} file that
\hevea{} does not feature all text-level elements by default.
which \hevea{} uses internaly to output \texttt{A} elements.
\latexsection{Customizing \hevea}
\hevea{} can be controlled by writing \LaTeX{} code. In this section,
we examine how users can change \hevea{} default behavior or add
\texttt{macros.hva}. That is, \hevea{} is invoked as:
# hevea macros.hva mydoc.tex
\hevea{} default rendering of type style changes is described in
For running \hevea{}, the \textit{jsc} style can be replaced by
takes an extra optional argument (which \hevea{} should ignore
However, \hevea{} can process the document as it stands.
calls \hevea{} \verb+\title+ with the appropriate argument.
\hevea{} fully implements \LaTeXe{} \verb+\newcommand+.
To do this, the \hevea{} \verb+\epsfbox+ command has to check
{\@imageflush\stepcounter{image}\imgsrc[#1]{\jobname\theimage\heveaimageext}}
\hevea{} provides direct support for the alternative PNG image file
It suffices to invoke \texttt{hevea} as:
\texttt{\#~hevea~png.hva}~\textit{mydoc.tex}
To translate into text, invoke \hevea{} as follow:
# hevea -text [-w ] myfile.tex
Then, \hevea{} produces \texttt{myfiles.txt} a plain text translation
described hereafter.
Please note that \hevea{} translates plain \LaTeX{} to info, and not
# hevea -info [-w ] myfile.tex
Then, \hevea{} produces the file \texttt{myfile.info}, an info
i.e., in \hevea{} case, to sectional units.
Usually, \hevea{} ignore such comments. However, \hevea{} processes
(and this is the case of many of \hevea{} internal commands), or
However, \hevea{} does its best to read arguments even when they are
\hevea{} has been improved as regards emulation of complicated
\hevea{} correctly processes the following source:
\verb+\textbf+ and \hevea{} succeeds in fetching the argument
but \hevea{} handles it.
behavior, which \hevea{} does not handle.
the rest of the text alone. While \hevea{} typesets everything using
bold font. Here is \ifhevea\hevea\else\LaTeX\fi{} output:
Note that, in most similar situations, \hevea{} will likely crash.
Fragile commands are not relevant to \hevea{} and \verb+\protect+ is
to users expectations. Note that, to \hevea{} being
The \emph{preamble} starts as soon as \hevea{} starts to operate and
arguments to \hevea{}, see section~\ref{comline}).
This is mostly useful when \hevea{} output is later cut into pieces by
change \hevea{} default (empty) atribute for
the iso-latin1 and symbol character sets, then \hevea{}
in the directory \texttt{\heveaurl/doc/}
Otherwise, \hevea{} usually issues a warning to draw user attention.
\hevea{} now generates a table of contents, using a procedure similar
However, \hevea{} has a more sophisticated way of producing
A later run of {\hacha} on \hevea{} output file splits it
\filename{style}\texttt{.hva} file (see~\ref{comline} to see where \hevea{}
giving one of the four recognized style files of \hevea{} as command
Conversely, if \hevea{} attempt to load \filename{style}\texttt{.hva}
\hevea{} reacts to
\item \hevea{} attempt to load file \textit{pkg}\texttt{.hva},
(see section~\ref{search:path} on where \hevea{} searches for files).
Note that \hevea{} will not fail if it cannot load
The \hevea{} distribution contains implementations of some packages,
In some situations it may not hurt at all if \hevea{} does not
implement a package, for instance \hevea{} does not provide an
command generates will work properly only if \texttt{hevea} is invoked
\hevea{} implements the \verb+center+, \verb+flushleft+ and
\hevea{} also implements the corespondant \TeX{} style declaration
Math mode is not as powerful in \hevea{} as in \LaTeX{}. The
\hevea{} have much more possibilities in display context than inside
For instance compare how \hevea{} renders
\hevea{} admits, subscript (\verb+_+), superscripts (\verb+^+) and
By contrast, when not in display mode, \hevea{} uses only
given as a command line argument to \hevea{}.
For instance, \hevea{} cannot render the \verb+\leadsto+ symbol, but it
When given the \verb+-nosymb+ option, \hevea{} silently replaces
\ifhevea{\input{mathaccents.hva}For instance, given the formula
\ifhevea With such definitions the previous example now appears as:
\verb+\textstyle+ do nothing when \hevea{} is already in the requested
This is so because \hevea{} implements displayed maths as tables,
\hevea{} understands command definitions given in \LaTeX{} style. Such
However, \hevea{} is more tolerant: if command
name}. In both cases, \LaTeX{} would crash, \hevea{} just issues
specific style file given as an argument to \hevea{} (see section~\ref{heveaonly}).
Conversely, changes of base macros (i.e., the ones that \hevea{}
It is worth noticing that \hevea{} also partly implements \TeX{} definitions
\hevea{} accepts environment definitions and redefinitions
this style will clobber the output. However, \hevea{} implements
As a consequence, \hevea{} accepts the following example from the
Additionally, a few boolean registers are defined by \hevea{}.
\item[\texttt{hevea}] Initial value is \texttt{true}.
The \texttt{hevea.sty} style file also defines this register with
\item[\texttt{mmode}] This register value reflects \hevea{} operating
\item[\texttt{display}] This register value reflects \hevea{} operating
command line option internally (see Section~\ref{heveaoptions}).
When set false, \hevea{} does not insert its footer ``\emph{This
document has been translated by \hevea}''.
Finally, note that \hevea{} also recognized à la \TeX{} conditional
\hevea{} makes a distinction between LR-mode and paragraph mode.
By default, \hevea{} implements the \texttt{array} package
\hevea{} uses some of the ancillary files generated by \LaTeX.
If this file is present, \hevea{} reads it and put such numbers (or
file is not present, or if the \texttt{hevea} command is given the
``\texttt{-fix}'' option, \hevea{} will instead use \texttt{.haux}
\item[\protect\texttt{.haux}] Such files are \hevea{} equivalents of
As a consequence, two runs of \hevea{} might be needed to get cross
\hevea{} computes its own indexes, using \texttt{.hidx} files for
Again, several runs of \hevea{} might be needed to get indexes right.
\noindent\hevea{} does not fail when it cannot find an auxiliary file.
When another run of \hevea{} is needed, a warning is issued,
and it is user's responsability to rerun \hevea{}.
provided makes \hevea{} rerun itself.
The \LaTeX{} \verb+\label+ and \verb+\ref+ are changed by \hevea{}
(For \hevea{} needs, one run is probably sufficient).
\item If no \filename{mydoc}\texttt{.aux} file exists, then \hevea{}
\hevea{} will output a
Hence, in that case, \hevea{} may need to run twice to get
\hevea{} issues a warning then the cross-referencing information it
and by \hevea{} in the second case, when they process the
See section~\ref{comline} on how \hevea{} searches files.
option (see section~\ref{heveaoptions}),
then \hevea{} does not attempt to load \textit{filename}.
\item \hevea{} does not fails when it cannot find
As with \LaTeX{}, two runs of \hevea{} are normally needed to format
\hevea{} cannot interpret more complicated length arguments
However \verb+\makebox+ generates a specific warning, since \hevea{}
this choice is made by \hevea.
(However, note that \hevea{} runs \texttt{imagen} when given the
by \hevea:
# hevea doc.tex
\ifhevea
\hevea{} partly implements the \texttt{color} package.
As regards color models, \hevea{} implements the \texttt{rgb},
(\hevea{} implements the \texttt{color} package with
\ifhevea Which yields:
However, \hevea{} features a
Here is how \hevea{} implements text-style declarations by default:
\newcommand{\heveastyle}[2]{{\ifhevea#1\fi#2}}
\verb+\itshape+ & \heveastyle{\itshape}{italics}\\
\verb+\slshape+ & \heveastyle{\slshape}{maroon italics}\\
\verb+\scshape+ & \heveastyle{\scshape}{navy blue}\\
\verb+\upshape+ & \heveastyle{\upshape}{no style}\\ \hline
\verb+\ttfamily+ & \heveastyle{\ttfamily}{typewriter font}\\
\verb+\sffamily+ & \heveastyle{\sffamily}{purple}\\
\verb+\rmfamily+ & \heveastyle{\rmfamily}{no style}\\ \hline
\verb+\bfseries+ & \heveastyle{\bfseries}{bold}\\
\verb+\mdseries+ & \heveastyle{\mdseries}{no style}\\ \hline
\hevea{} implements the three components by making one declaration to
italics\ifhevea: ``{\sl\sc slanted and small caps}''\fi.
This section describes \hevea{} functionalities that extends on plain \LaTeX{},
Normally, \hevea{} does not recognize constructs that are specific to
However, some of the internal commands of \hevea{} are homonymous to
notice that \hevea{} semantics for \verb+\def+
\hevea{}, where \verb+\def+ had the same semantics as
macros parameters is not performed at the same moment by \hevea{} and
\LaTeX{} and in \hevea:
\LaTeX{} output is ``coucou''A, while \hevea{} output is ``coucouA''.
Here is \ifhevea\hevea\else\LaTeX\fi{} output:
\hevea{} crash.
\comdefindex{let}\hevea{} also processes a
Note that \hevea{} also implements \LaTeX{} \texttt{ifthen} package
\hevea{} implements the macros \verb+\unskip+ and \verb+\endinput+.
However, \hevea{} source distribution includes a simple (\texttt{sh})
The \texttt{hevea} command, should be invoked as~:
# hevea -exec xxdate.exe ...
read by \hevea{}.
\comindex{heveadate}
\ifhevea(e.g. \theweekday)\fi\\
\ifhevea(e.g. \theHour)\fi\\
Counter \texttt{hour} & hour, 00\ldots{}23 \ifhevea(e.g. \thehour)\fi \\
\ifhevea(e.g. \theminute)\fi\\
\ifhevea(e.g. \thesecond)\fi\\ \hline
\ifhevea(e.g. \ampm)\fi\\
\ifhevea(e.g. \timezone)\fi\\
Command \verb+\heveadate+ & Output of the ``\texttt{date}'' Unix
command\ifhevea, (e.g. \heveadate)\fi\\ \hline
not want to enable \hevea{} to execute silently an arbitrary program
Moreover, the \texttt{hevea} program does not execute
commands themselves do\ifhevea{} (this is the style of this manual).\else.\fi{}
# hevea article.hva fancysection.hva doc.tex
And then launch \texttt{hevea} as:
# hevea doc.hva doc.tex
\subsection{\hevea{} as a Back-End for VideoC}
\hevea{} is one of the back-ends of the VideoC system for producing
\hevea{} internal engine implements some of the core constructs needed
\hevea{} distribution includes ``.hva'' packages that are
\hevea{} \texttt{amsmath} package defines some of the constructs of the
specifications and of how \hevea{}
\hevea{} implements column specifications with commands defined in the
environment \verb+tabularx+ and a new column type \verb+X+. \hevea{}
From \hevea{} point of view, drawing the border line between what can be
At the moment \hevea{} choice is not to specify too much (in
\hevea{} does not implement this extension, since it does not
\hevea{} supports several simultaneous indexes, following the scheme
More precisely, \hevea{} knows the following commands:
\hevea{}; and {\it indexname} is the title of the index.
If given the \verb+idx+ option. \hevea{} attempts to read file
difference between \LaTeX{} and \hevea{}: for \verb+\printindex+ to
\hevea{} provides a slighty uncomplete implementation of the
\hevea{} commands for hyperlinks (see section~\ref{hyperlink})~:
\hevea{} home page is
\ahrefurl{\url{http://pauillac.inria.fr/~maranget/hevea/}}
It yields~: ``\hevea{} home page is
\ahrefurl{\url{http://pauillac.inria.fr/~maranget/hevea/}}''.
\LaTeX{} problem, not an \hevea{} one).
\urldef{\heveahome}{\url}{http://pauillac.inria.fr/~maranget/hevea/}
\urldef{\heveahome}{\url}{http://pauillac.inria.fr/~maranget/hevea/}%
Such a source defines the robust command \verb+\heveahome+ as the
Have a look at \footurl{\heveahome}{\hevea{} home page}
It yields: ``Have a look at \footahref{\heveahome}{\hevea{} home page}''.
contrast, it does not work in \hevea{}. In such situations,
\hevea{} implementation is somehow compatible at the ``programming level''.
Have a look at \url{http://pauillac.inria.fr/~maranget/hevea/}
\input{urlhref.hva}It yields ``Have a look at \url{http://pauillac.inria.fr/~maranget/hevea/}''.
style file (which is an \hevea{} style file and not a \LaTeX{}
is much more compatible with \hevea{} than
\hevea{} features a quite compatible implementation, please refer to
Note that \hevea{} does not produce very compact
giving \texttt{hevea} the command line option ``\texttt{-O}''
(see Section~\ref{heveaoptions}).
\subsection{\hevea{} usage}\label{heveausage}
\index{hevea@\texttt{hevea} command}
The \texttt{hevea} command has two operating modes, normal mode and
The \texttt{hevea} command interprets its arguments as names of
searched along \texttt{hevea} search path, which consist in:
\item \texttt{hevea} library directory.
\texttt{info} from \texttt{hevea} library directory, depending upon
\texttt{hevea} output format,
The \texttt{hevea} library directory is fixed at compile-time
(this is where \texttt{hevea} library files are installed)
and typically is \texttt{/usr/local/lib/hevea}.
\hevea{} will attempt to load the main input file.
The output base name governs all files produced by \hevea{}.
That is, \html{} output of \hevea{} normally goes to the file
Thus, in the simple case where the \texttt{hevea} command is invoked
# hevea file.tex
\texttt{file}. The main input file is searched once along \texttt{hevea}
In the more complicated case where the \texttt{hevea} command is invoked
# hevea ./dir/file
base style files from \hevea{} library are special.
# hevea article.hva file.tex
In other words \texttt{hevea} acts as a filter.
``\verb+hevea+ \textit{file}\verb+.tex+'' and not
``\verb+hevea < + \textit{file}\verb+.tex > +\textit{file}\verb+.html+''.
\subsubsection{Options}\label{heveaoptions}
The \texttt{hevea} command recognizes the following options:
\item[{\tt -version}] Show \texttt{hevea} version and exit.
\item[{\tt -e} {\it filename}] Prevent \texttt{hevea} from loading any file
files, including \texttt{hevea.hva} and base style files.
\item[{\tt -fix}] Iterate \hevea{} until a fixpoint is found.
searched by following the searching rules of~\texttt{hevea}.
\item \texttt{hevea} sets the boolean register \texttt{french} to
a tutorial introduction to \hevea{},
while \hevea{} reference manual is part~\ref{referencemanual}.
is part of \hevea{} and is designed to optimize \texttt{hevea}
It is a companion program of \hevea{}, which must have been previously run as:
\texttt{\# hevea}\ldots{} \textit{base}\texttt{.tex}\\
\texttt{\# hevea}\ldots{} \texttt{-o} \textit{base}\texttt{.html}\ldots\\
(In both cases, \textit{base} is \hevea{} output basename.)
\hevea{} echoes part of its input into
Note that \texttt{hevea} should have been previously run as
\texttt{hevea png.hva} \textit{base}\texttt{.tex} (so that the proper
The file is first translated into \texttt{doc.html} by \texttt{hevea},
HEVEA=hevea
Thanks to the \verb+-fix+ options, \texttt{hevea} will run the appropriate
HEVEA=hevea
when given the \verb+-fix+ option, \texttt{hevea} will itself run
By default, \hevea{} uses
A good way to know whether your browser can show \hevea{} symbols or
as intended by \hevea{}.
work only with documents that are generated by \hevea{} with the
\texttt{-noiso} option enabled (see section~\ref{heveaoptions}).
\hevea{} home page is \ahrefurl{\httpbase}. It contains links to the
\hevea{} can be freely used and redistributed without modifications.
Modifying and redistributing \hevea{} implies a few constraints.
More precisely, \hevea{} is distributed under the terms of the
Q~Public License, but \hevea{} binaries include the Objective Caml
\ifhevea
The programs \commandname{hevea} and \commandname{hacha} are written in
\footahref{\ftpbase/hevea-\heveaversion-1.i386.rpm}{binary distribution}
\label{imagen:needs}\hevea{} users may instruct the program not to process a
\verb+.gif+ file and \hevea{} outputs a link to the image file.
To benefit from the full functionality of \hevea, you need all
this software. However, \hevea{} runs without them, but then you will
Basically, \hevea{} should be given a library
directory. The installation procedure stores the \texttt{hevea.hva}
In \hevea{} case, \texttt{ocamlopt} produces code that is up to three
Note that the \texttt{hevea.sty} file is simply copied to \hevea{}
\hevea{}: write a fast translator as a lexer, use symbol fonts and
whereas \hacha{} can cut the output of \hevea{} into several files.
for producing the Caml manuals. This is \hevea{} direct ancestor and I
The following people contributed to \hevea{} development:
\ahref{http://www.arch.ohio-state.edu/crp/faculty/pviton/support/hevea.html}{window
(win32) port} of \hevea.
lexer with \hevea{} main lexer is now used extensively throughout
\hevea{} source code.
\item Pierre Boulet, by using \hevea{} as a stage in his tool
\hevea{} implementation of the \verb+alltt+ environment.