\begin{page}{HTXAdvPage5}{\Language{} paste-ins}
\centerline{\fbox{{\tt \thispage}}}\newline
\begin{scroll}

The {\it paste} and {\it patch} facility (see \downlink{previous page}{HTXAdvPage4})
is used to display (or hide) the \Language{} output
of an \Language{} command ({\tt\\spadcommand})
included in a
\HyperName{} page.

A mechanism has been set up to {\it automatically} generate
these paste-ins. It amounts to replacing an
{\tt \\spadcommand} by a {\tt \\spadpaste} in the
\HyperName{} page.

In the case of a \spadop{draw} \Language{} command
, where the result is to create an interactive viewport,
the appropriate command to use is {\tt \\graphpaste}.
The effect of this is to include (as the output)
the \Language{} generated {\it image} of the graph
as an active area. Clicking on it will put up an
interactive viewport.
The {\tt \\graphpaste} command should be used only when
the result of the associated \Language{} operation is
to {\it create} an interactive viewport. It is {\it not} necessarily
appropriate for all commands whose result
is a \spadtype{TwoDimensionalViewport} or \spadtype{ThreeDimensionalViewport}.
The {\tt \\spadpaste} and {\tt \\graphpaste}
are  macros defined in {\bf util.ht}.



There is no automatic paste-in generation facility
for \Language{} piles (the {\tt \\begin\{axiomsrc\}} command).


The automatic paste-in generation mechanism works
by invoking \Language{} with a particular option.
\HyperName{} is also started automatically. It reads
the {\tt \\spadpaste} and {\tt \\graphpaste}
commands in all pages in a specified
{\bf somefile.ht}  and passes them to
\Language{} for evaluation. \HyperName{}
captures the output and writes it out (to a
file called {\bf somefile.pht}) as the body of
some {\it patch} definitions. The commands
encountered are written to a file
{\bf somefile.input} which you can {\tt )read} from an \Language{} session.
It also creates directories for the graphics
images encountered. Those files and directories
will be written under the {\it current} directory.
The idea is that you then include the {\it patch} definitions
in {\bf somefile.pht} in your local database using {\bf htadd}.


You can try this feature now. Edit a file called, say, {\bf trypaste.ht}
in a directory, say {\bf /tmp}. Put the following \HyperName{} text
in it.
\beginImportant
\newline
{\tt \\begin\{page\}\{TryPaste\}\{Trying out paste-in generation\}}\newline
{\tt \\begin\{scroll\}}\newline
{\tt \\spadpaste\{f z == z^2 \\bound\{f\}\}}\newline
{\tt \\graphpaste\{draw(f,-1..1) \\free\{f\}\}}\newline
{\tt \\spadpaste\{x:= f 3 \\free\{f\}\}}\newline
{\tt \\end\{scroll\}}\newline
{\tt \\end\{page\}}\newline
\endImportant

From the directory that contains the {\bf trypaste.ht},
issue
\centerline{
{\tt htadd -l ./trypaste.ht}
}
You will get the
{\bf ht.db} database file.
Set the environment variable {\tt HTPATH} so that
it points first to your directory and then the system directory.
In the {\bf /bin/csh}, you might use
\centerline{
{\tt setenv HTPATH /tmp:\$FRICAS/share/hypertex/pages}
}
Make sure that no {\bf trypaste.input} or {\bf trypaste.pht}
files exist in the directory.
Then issue
\centerline{
{\tt fricas -paste trypaste.ht}
}
 and wait for
\Language{} to finish.

There is a modification you will wish to make to
the {\bf trypaste.pht} file.
This is because the generated \HyperName{} text will assume that
the {\it viewport} data will be located in the
{\it system} directory.
\centerline{{\bf \env{FRICAS}/share/viewports}}
You may want to place your images in a different directory,
say, {\bf /u/sugar/viewports}.
If so, then change all occurrences of
\beginImportant
\newline
{\tt \\env\{FRICAS\}/share/viewports/}
\centerline{{\it by}}
{\tt /u/sugar/viewports/}
\endImportant
in the file {\bf trypaste.pht}. The last step
is to include the {\it patch} definitions
in {\bf trypaste.pht} to your local database.
Issue
\centerline{
{\tt htadd -l ./trypaste.pht}
}
to update the database. If you have provided
a link to your pages from the {\tt RootPage}
via the {\tt \\localinfo} macro, you should now
be able to start \Language{} or \HyperName{}
and see the computed \Language{} output whenever you
click on the buttons to the left of each command.



\end{scroll}
\beginmenu
\menulink{Next Page --- Miscellaneous}{HTXAdvPage6}
\endmenu

\end{page}
