1\begin{page}{HTXAdvPage5}{\Language{} paste-ins}
2\centerline{\fbox{{\tt \thispage}}}\newline
3\begin{scroll}
4
5The {\it paste} and {\it patch} facility (see \downlink{previous page}{HTXAdvPage4})
6is used to display (or hide) the \Language{} output
7of an \Language{} command ({\tt\\spadcommand})
8included in a
9\HyperName{} page.
10
11A mechanism has been set up to {\it automatically} generate
12these paste-ins. It amounts to replacing an
13{\tt \\spadcommand} by a {\tt \\spadpaste} in the
14\HyperName{} page.
15
16In the case of a \spadop{draw} \Language{} command
17, where the result is to create an interactive viewport,
18the appropriate command to use is {\tt \\graphpaste}.
19The effect of this is to include (as the output)
20the \Language{} generated {\it image} of the graph
21as an active area. Clicking on it will put up an
22interactive viewport.
23The {\tt \\graphpaste} command should be used only when
24the result of the associated \Language{} operation is
25to {\it create} an interactive viewport. It is {\it not} necessarily
26appropriate for all commands whose result
27is a \spadtype{TwoDimensionalViewport} or \spadtype{ThreeDimensionalViewport}.
28The {\tt \\spadpaste} and {\tt \\graphpaste}
29are  macros defined in {\bf util.ht}.
30
31
32
33There is no automatic paste-in generation facility
34for \Language{} piles (the {\tt \\begin\{axiomsrc\}} command).
35
36
37The automatic paste-in generation mechanism works
38by invoking \Language{} with a particular option.
39\HyperName{} is also started automatically. It reads
40the {\tt \\spadpaste} and {\tt \\graphpaste}
41commands in all pages in a specified
42{\bf somefile.ht}  and passes them to
43\Language{} for evaluation. \HyperName{}
44captures the output and writes it out (to a
45file called {\bf somefile.pht}) as the body of
46some {\it patch} definitions. The commands
47encountered are written to a file
48{\bf somefile.input} which you can {\tt )read} from an \Language{} session.
49It also creates directories for the graphics
50images encountered. Those files and directories
51will be written under the {\it current} directory.
52The idea is that you then include the {\it patch} definitions
53in {\bf somefile.pht} in your local database using {\bf htadd}.
54
55
56You can try this feature now. Edit a file called, say, {\bf trypaste.ht}
57in a directory, say {\bf /tmp}. Put the following \HyperName{} text
58in it.
59\beginImportant
60\newline
61{\tt \\begin\{page\}\{TryPaste\}\{Trying out paste-in generation\}}\newline
62{\tt \\begin\{scroll\}}\newline
63{\tt \\spadpaste\{f z == z^2 \\bound\{f\}\}}\newline
64{\tt \\graphpaste\{draw(f,-1..1) \\free\{f\}\}}\newline
65{\tt \\spadpaste\{x:= f 3 \\free\{f\}\}}\newline
66{\tt \\end\{scroll\}}\newline
67{\tt \\end\{page\}}\newline
68\endImportant
69
70From the directory that contains the {\bf trypaste.ht},
71issue
72\centerline{
73{\tt htadd -l ./trypaste.ht}
74}
75You will get the
76{\bf ht.db} database file.
77Set the environment variable {\tt HTPATH} so that
78it points first to your directory and then the system directory.
79In the {\bf /bin/csh}, you might use
80\centerline{
81{\tt setenv HTPATH /tmp:\$FRICAS/share/hypertex/pages}
82}
83Make sure that no {\bf trypaste.input} or {\bf trypaste.pht}
84files exist in the directory.
85Then issue
86\centerline{
87{\tt fricas -paste trypaste.ht}
88}
89 and wait for
90\Language{} to finish.
91
92There is a modification you will wish to make to
93the {\bf trypaste.pht} file.
94This is because the generated \HyperName{} text will assume that
95the {\it viewport} data will be located in the
96{\it system} directory.
97\centerline{{\bf \env{FRICAS}/share/viewports}}
98You may want to place your images in a different directory,
99say, {\bf /u/sugar/viewports}.
100If so, then change all occurrences of
101\beginImportant
102\newline
103{\tt \\env\{FRICAS\}/share/viewports/}
104\centerline{{\it by}}
105{\tt /u/sugar/viewports/}
106\endImportant
107in the file {\bf trypaste.pht}. The last step
108is to include the {\it patch} definitions
109in {\bf trypaste.pht} to your local database.
110Issue
111\centerline{
112{\tt htadd -l ./trypaste.pht}
113}
114to update the database. If you have provided
115a link to your pages from the {\tt RootPage}
116via the {\tt \\localinfo} macro, you should now
117be able to start \Language{} or \HyperName{}
118and see the computed \Language{} output whenever you
119click on the buttons to the left of each command.
120
121
122
123\end{scroll}
124\beginmenu
125\menulink{Next Page --- Miscellaneous}{HTXAdvPage6}
126\endmenu
127
128\end{page}
129