/*############################################################################## FUNNNELWEB COPYRIGHT ==================== FunnelWeb is a literate-programming macro preprocessor. Copyright (C) 1992 Ross N. Williams. Ross N. Williams ross@spam.adelaide.edu.au 16 Lerwick Avenue, Hazelwood Park 5066, Australia. This program is free software; you can redistribute it and/or modify it under the terms of Version 2 of the GNU General Public License as published by the Free Software Foundation. This program is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See Version 2 of the GNU General Public License for more details. You should have received a copy of Version 2 of the GNU General Public License along with this program. If not, you can FTP the license from prep.ai.mit.edu/pub/gnu/COPYING-2 or write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Section 2a of the license requires that all changes to this file be recorded prominently in this file. Please record all changes here. Programmers: RNW Ross N. Williams ross@spam.adelaide.edu.au ABC Anthony B. Coates coates@physics.uq.edu.au Changes: 07-May-1992 RNW Program prepared for release under GNU GPL V2. 15-Apr-1994 ABC Created this file by modifying `texhead.h' ##############################################################################*/ /******************************************************************************/ /* HTMLHEAD.H */ /******************************************************************************/ /* */ /* HTML HEADER PACKAGE */ /* ================== */ /* This package contains a single function that writes the HTML header */ /* (containing all the Weave macros) to the specified stream. The package */ /* consists of: */ /* */ /* htmlhead.htm - The header file ("source code" for htmlhead.cht). */ /* htmlhead.cht - C code automatically generated by htmlhead.htm. */ /* htmlhead.h - This file, containing a function definition. */ /* htmlhead.c - Contains a function body. */ /* */ /* The first version of FunnelWeb (1986) generated TeX output files that used */ /* a collection of macros to neaten and simplify the bulk of the TeX output */ /* file. For example, the macro \fwbtx provided a simple way to specify */ /* verbatim text. This system worked extremely well, the only inconvenience */ /* being that each FunnelWeb TeX output file had to "\input" the TeX header */ /* file containing all the macros. At the time, this seemed a sensible */ /* factorization of the macros, and, within the limited environment in which */ /* FunnelWeb was operating, worked well. */ /* */ /* In NEW, IMPROVED FunnelWeb, "\input"ing the header file has the potential */ /* to cause lots of problems, the major ones being: */ /* */ /* - The header file would have to be installed as part of the FunnelWeb */ /* system. Currently this means that it would be the ONLY other file */ /* necessary apart from the FunnelWeb executable. It would be far more */ /* desirable to avoid having to install the header file. */ /* */ /* - The header file would have to be referred to somehow by the TeX file. */ /* As it makes sense to have only one copy of the header file on a machine, */ /* TeX files would have to refer to that copy. This would require one of a */ /* number of messy machine-specific mechanisms such as (VMS) logical name */ /* translation or environment variable translation. */ /* */ /* - TeX files could not be easily moved to other machines (particularly */ /* those not running FunnelWeb themselves) without also sending the header */ /* file. */ /* */ /* - If FunnelWeb and the header file were ever jointly modified, the dynamic */ /* binding of old TeX files would mean that they may no longer be printable.*/ /* */ /* For all these reasons, the decision was made to write the library of TeX */ /* macros at the start of each TeX output file, thus making each TeX output */ /* file entirely self-contained. To do this, the header file had to be */ /* converted into a sequence of C output statments. To this end, a new */ /* FunnelWeb shell command CODIFY was added that performs this transformation.*/ /* CODIFY could have been a separate utility program, but if it was, it might */ /* somehow be separated from the rest of FunnelWeb during distribution. By */ /* building CODIFY into FunnelWeb itself, this possibility is eliminated. */ /* */ /* This package encapsulates the automatically generated C code. This header */ /* file defines a function that writes it to a specified stream. The package */ /* body htmlhead.c contains the body of the function which consists mainly of */ /* a #include of the automatically generated C code in htmlhead.cht. */ /* */ /******************************************************************************/ /* Ensure that the body of this header file is included at most once. */ #ifndef DONE_HTMLH #define DONE_HTMLH /******************************************************************************/ /* Define NO_HEADER to suppress inclusion of the FunnelWeb HTML header */ #include "style.h" #include "writfile.h" /******************************************************************************/ EXPORT void html_head P_((p_wf_t)); /* Writes the FunnelWeb HTML header block to the argument stream. */ /******************************************************************************/ /* For #ifndef preventing multiple inclusion of the body of this header file. */ #endif /******************************************************************************/ /* End of HTMLHEAD.H */ /******************************************************************************/