% Begin document here
%
% ===================================================================
%  galex6.sty	(Be sure to use this name when saving the file!)
%
%	Style file for GALEX Cycle 6 Phase 1 proposals.
%	Version 1.10  May 1, 2009
%
%    developed by:
%       Harry Payne (payne@stsci.edu)
%       Space Telescope Science Institute 
%    modified for Cycle 5 FUSE by 
%       Mary Romelfanger (mary@pha.jhu.edu)
%       Johns Hopkins University
%    modified for GALEX Cycle 1 by
%       Susan Neff (susan.g.neff@nasa.gov)
%       Goddard Space Flight Center
%       and
%       Michael Greason
%       Goddard Space Flight Center
%
\newcounter{cycle}
\setcounter{cycle}{6}   % <== Current cycle goes here.

\newcounter{nextcycle}
    \setcounter{nextcycle}{5}
    \addtocounter{nextcycle}{\value{cycle}}
\newcounter{afternext}
    \setcounter{afternext}{6}
    \addtocounter{afternext}{\value{cycle}}

\def\@thiscycle{\alph{cyclecounter}}
\def\@nextcycle{\alph{nextcyclecounter}}
\def\@afternext{\alph{afternextcounter}}

%
%       INPUT OTHER STYLES
%
%       Get started by reading in some standard LaTeX styles.  We
%       want the text to be in 12pt fonts.  But \input art12.sty
%       does not work in latex2e, so we changed the template.
%
%       The PostScript Times
%       style should be commented out, except at sites where it
%       has been installed (it is part of Tomas Rokicki's dvips
%       package, available via anonymous ftp from labrea.stanford.edu).

%\input supertabular.sty\relax
%%% ====================================================================
%%%  @LaTeX-style-file{
%%%     author-1        = "Braams J.L.",
%%%     author-2        = "Jurriens, T.",
%%%     version         = "3.7b",
%%%     date            = "16 May 1994",
%%%     time            = "16:11:07 MET",
%%%     filename        = "supertabular.sty",
%%%     shortfilename   = "supertab.sty"
%%%     address-1       = "PTT Research
%%%                        St. Paulusstraat 4
%%%                        2264 XZ Leidschendam
%%%                        The Netherlands",
%%%     address-2       = "Rijksuniversiteit Groningen
%%%                        P.O. Box 800
%%%                        9700 AV Groningen
%%%                        The Netherlands",
%%%     telephone       = "(70) 3325051",
%%%     FAX             = "(70) 3326477",
%%%     checksum        = "53924 541 2505 23783",
%%%     email           = "J.L.Braams@research.ptt.nl (Internet)",
%%%     codetable       = "ISO/ASCII",
%%%     keywords        = "",
%%%     supported       = "yes",
%%%     abstract        = "A style optioin that implements multi-page
%%%                        tables. The tables have their natural
%%%                        widths on the subsequent pages.",
%%%     docstring       = "The checksum field above contains a CRC-16
%%%                        checksum as the first value, followed by the
%%%                        equivalent of the standard UNIX wc (word
%%%                        count) utility output of lines, words, and
%%%                        characters.  This is produced by Robert
%%%                        Solovay's checksum utility.",
%%%  }
%%% ====================================================================
%
% ===> This file can NOT YET be run through LaTeX with the doc option <==
%
% supertabular sty
% original idea:  Theo Jurriens 1988
%                 jurriens@fwn.rug.nl P.O Box 800, 9700 AV Groningen
%
% revised by:     Johannes Braams
%                 J.L.Braams@research.ptt.nl   PTT Research Leidschendam (NL)
% \def\fileversion{3.7a}
% \def\filename{supertabular sty}
% \def\filedate{1994/05/16}
%
% \changes{v3.7b}{1994/05/16}{Rewrote the page break deciding
%    algorithm again}
% \changes{v3.7b}{1994/05/16}{Started to convert to dtx format}
%
% 05.04.93  - Supertabular didn't work correctly in twocolumn mode.
% V 3.7a      Rewrote the mechanism for establishing the amount of
%             space that supertabular can use. This still needs further
%             thought. The algorithm to compute the places to break
%             the table is still a bit fragile, especially when p{}
%             columns are used.
% 10.07.92  - Still a problem in the combination of supertabular with array..sty
% V 3.6h      I overlooked the fact that array doesn't use \@tabulacr anymore
%             and it behaves differently with respect to \@startparbox.
% 03.07.92  - A problem in the combination of supertabular with array.sty
% V 3.6g      It can be solved by removing the \string from \def\tableformat
%             and passing \tableformat expanded to \tabular.
% 11.02.92  - Bug found by Michael Heissmeier when p{...} is used.
% V 3.6f      A change in LaTeX.tex didn't find its way into supertabular.
% 01.08.91  - Take height of tabletail into account when computing the
% V 3.6e      maximum tableheight; add tolerance on first (partial) page
%             of the supertabular.
% 27.06.91  - Cured bug that made the first part of the table one line
% V 3.6d      shorter than the others. Appeared when supertabular was
%             used in a twocolumn environment.
% 26.06.91  - Made \@process@tablecaption a global macro. Previous caption
% V 3.6c      turned up on a table without one.
% 27.05.91  - Replaced \clearpage with \newpage to make supertabulars work
% V 3.6b      in a twocolumn environment. This also prevents all floats
%             from being printed.
% 15.02.91  - Because of the check for the use of tablefirsthead the
% V 3.6a      combination of an \hline in the head and an \hline as the first
%             thing in the data went wrong. The \futurelet in the definition
%             of \hline found \fi instead of \hline, so no \doublerulesep
%             was added.
%             Also had to modify the way the environments were defined.
%             The blank space (from the CR after the argument of \supertabular)
%             has to be gobbled. This can only be done using a construction
%             like \def\command#1 {...}. So removed the use of \newenvironment
% 04.02.91  - Added the commands \topcaption, \bottomcaption and \tablecaption
% V 3.6       to include a caption within the supertabular environment. The
%             default behaviour is to put the caption before the actual start
%             of the table.
%           - Also added \tablefirsthead and \tablelasttail to let the
%             user specify a different head for the first page of the table
%             and for consecutive pages as well as different tails for first
%             pages and the last one. If these commands are not used, the
%             default behaviour will be to use the value of \tablehead end
%             \tabletail
%           - Removed the need for the \noalign{\global\let\\=\@stabularcr}
%             commands by storing and resetting \@stabularcr
%
% 16.10.90  Added the supertabular* environment that was in an earlier
% V 3.5     version (2.0) by the original author
%           Reintroduced the version numbering
%
% revised by:     Gabriele Kruljac
%                 kruljac@ds0mpi11   Max-Planck-Institute Stuttgart
%
%
% 06.06.89  Correction: now care is taken of probably existing onecolumn
%           head (title or tables ...) in twocolumn sty.
%
% 10.05.89  Correction: the new \\ definition has been added to the
%           begin of each `sub'-tabular
%           Added: algorithm to produce the tabulars in twocolumn style
%
% 06.04.89  Correction: put \global statement in \end{supertabular}
%           into \noalign
%
% 22.02.89  Correction: restore the original meaning of \\ with
%           \end{supertabular}
%
% (Feb 89) The whole algorithm has been changed, so that I can use
%          the most features of a normal tabular:
%          \\  for new line, including  \\[#1]
%          p{...} in the preamble ...
%          Account is taken to \baselinestretch and \arraystretch
%         -I'm not counting the lines because of too much rounding errors
%          but instead I add the (estimated) used space in pt.
%         -The tablehead is taken into this algorithm of proofing, so
%          I really know how much space the head uses.
%         -When no p-arg is given I add a variable \midlineheight to
%          calculate the used space. To calculate \midlineheight I
%          take the \baselineskip, which is active when the supertabular
%          starts (\baselineskip includes the \value of \baselinestretch)
%          and multiply it with \arraystretch.
%         -When a p-arg is given the text will be stored in a box. So
%          I know the height I have to add. Also I reduce the maximum
%          pagesize, so that the last parbox on a page can get up to
%          max 4 lines without producing an overfull vbox.
%         -To do so I had to make some additions to LaTeX's tabular
%          commands. These new commands got a leading `s'.
%
%          Weak points:
%          -When the material of a normal entry (not a p-arg) becomes
%           larger than the estimated \midlineheight, overfull vboxes
%           will be produced at all.
%          -When the last p-arg on a page gets more than 4 lines
%           (probably even more than 3 lines) it will result in an
%           overfull vbox.
%           Also some combinations of \baselinestretch \arraystretch and
%           a large font may lead to one line too much.
%          -if accidentally the last line of the tabular produces
%           a newpage, on the next page the tabletail will be written
%           immediately after the tablehead. Depending on the contents
%           this may result in an error message regarding misplaced
%           \noalign.
%
%           A quick but not very elegant solution: shrink \maxsize by
%           \noalign{\global\maxsize=...pt} after the first \\ of the
%           supertabular.
%
%------------------------------------------------------------------------------
% \begin{macro}{\topcaption}
% \begin{macro}{\bottomcaption}
%    The user-commands |\topcaption| and |\bottomcaption| set the
%    boolean  |@topcaption| to determine where to put the
%    tablecaption. The default  is to put the caption on the top of
%    the table 
%    \begin{macrocode}
%    \begin{macrocode}
\newif\if@topcaption \@topcaptiontrue
\def\topcaption{\@topcaptiontrue\tablecaption}
\def\bottomcaption{\@topcaptionfalse\tablecaption}
%    \end{macrocode}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\tablecaption}
%    This command has to function exactly like |\caption| does except
%    it has to store its argument (and the optional argument) for
%    later processing \emph{within} the supertabular environment. 
%
%    \begin{macrocode}
\long\def\tablecaption{%
  \refstepcounter{table} \@dblarg{\@xtablecaption}}
\long\def\@xtablecaption[#1]#2{%
  \long\gdef\@process@tablecaption{\@stcaption{table}[#1]{#2}}}
\global\let\@process@tablecaption\relax
%    \end{macrocode}
% \end{macro}
%
% This is a redefinition of LaTeX's \@caption, \@makecaption is
% called within a group so as not to return to \normalsize globally.
% also a fix is made for the `feature' of the \@makecaption of article.sty and
% friends that a caption ALWAYS gets a \vskip 10pt at the top and NONE at the
% bottom. If a user wants to precede his table with a caption this results
% in a collision.
%
%    \begin{macrocode}
\long\def\@stcaption#1[#2]#3{\par%
  \addcontentsline{\csname ext@#1\endcsname}{#1}%
                  {\protect\numberline{%
                      \csname the#1\endcsname}{\ignorespaces #2}}
  \begingroup
    \@parboxrestore
    \normalsize
    \if@topcaption \vskip -10pt \fi
    \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
    \if@topcaption \vskip 10pt \fi
  \endgroup}
%    \end{macrocode}
%
%    |\tablehead| activates the new tabular |\cr| commands.
%    \begin{macrocode}
\newcommand\tablehead[1]{\gdef\@tablehead{#1}}
\tablehead{}
\newcommand\tablefirsthead[1]{\gdef\@table@first@head{#1}}
%    \end{macrocode}
%
%
%    If the user uses an extra amount of tabular-data (like
%    \|multicolumn|) in |\tabletail| \TeX\ starts looping because of
%    the definition of |\nextline|. So make |\\| act like just a |\cr|
%    inside this tail to prevent the loop.  Save and restore the value
%    of |\\|
%
%    \begin{macrocode}
\newcommand\tabletail[1]{%
  \gdef\@tabletail{%
    \noalign{%
      \global\let\@savcr=\\
      \global\let\\=\cr}%
    #1%
    \noalign{\global\let\\=\@savcr}}}
\tabletail{}
\newcommand\tablelasttail[1]{\gdef\@table@last@tail{#1}}
%    \end{macrocode}
%
%  \begin{macro}{\sttraceon}
% \changes{v3.7b}{1994/05/16}{Added macro}
%  \begin{macro}{\sttraceoff}
% \changes{v3.7b}{1994/05/16}{Added macro}
%    There now is a possiblity to follow the decisions supertabular
%    makes about breaking the tabular. This has to be enabled when
%    converting this file with \texttt{docstrip} to a \texttt{.sty}
%    file. 
%    \begin{macrocode}
%<tracing> \newif\if@st@trace
%<tracing> \newcommand\sttraceon{\@st@tracetrue}
%<tracing>\newcommand\sttraceoff{\@st@tracefalse}
%<tracing>\newif\if@st@trace
%    \end{macrocode}
%    The default is to turn tracing off
%    \begin{macrocode}
%<tracing>\sttraceoff
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\@sttrace}
%    A macro that gets the trace message as its argument
%    \begin{macrocode}
%<tracing> \newcommand\@sttrace[1]{\if@st@trace\typeout{ST trace: #1}\fi}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\page@left}
% \changes{v3.7b}{1994/05/16}{Renamed from \cmd\maxsize}
%    This register holds the estimate of the amount of space left over
%    on the current page. This is used in the decision when to start a
%    new page.
%    \begin{macrocode}
\newdimen\page@left
%    \end{macrocode}
%  \end{macro}
%
%    \begin{macrocode}
\newdimen\actsize            % actual pagesize
\newdimen\@tailht            % height of table tail (if any)
\newdimen\parboxheight       % height plus depth of a parbox-argument
\newdimen\addspace           % stores the value of \\[#1]
\newdimen\midlineheight      % estimated size of a normal line
\newdimen\pargcorrection     % to set page height tolerance if p-arg
\newdimen\computedimens      % computation variable
\newbox\tabparbox
%    \end{macrocode}
%
%  \begin{macro}{\@stabularcr}
%  \begin{macro}{\@sxtabularcr}
%    These are redefinitions of |\@tabularcr| and |\@xtabularcr|. This
%    is needed to include |\nextline| in the definition of
%    |\@xtabularcr|. 
%
%    All redefined macros have names that are similar to the original
%    names, except with a leading 's'
%    \begin{macrocode}
\def\@stabularcr{{\ifnum0=`}\fi\@ifstar{\@sxtabularcr}{\@sxtabularcr}}
\def\@sxtabularcr{%
  \@ifnextchar[{\@sargtabularcr}{\ifnum0=`{\fi}\cr\nextline}}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%    \begin{macrocode}
\def\@sargtabularcr[#1]{%
  \ifnum0=`{\fi}%
  \ifdim #1>\z@
    \unskip\@sxargarraycr{#1}
  \else 
    \@syargarraycr{#1}%
  \fi}
%    \end{macrocode}
%
%    In this case we need to copy the value of the optional argument
%    of |\\| in our private register |\addspace|.
%    \begin{macrocode}
\def\@sxargarraycr#1{%
  \@tempdima #1\advance\@tempdima \dp \@arstrutbox
  \vrule \@height\z@ \@depth\@tempdima \@width\z@ \cr
  \noalign{\global\addspace=#1}\nextline}
%    \end{macrocode}
%
%    Here we need to insert |\nextline|
%    \begin{macrocode}
\def\@syargarraycr#1{\cr\noalign{\vskip #1\global\addspace=#1}\nextline}
%    \end{macrocode}
%
%    The macros that deal with parbox columns need to be redefined,
%    because we need to know the size of the parbox. Also the maximum
%    size of the tabular on this page is shrunk somewhat.
%    \begin{macrocode}
\def\@sstartpbox#1{%
  \global\advance\page@left by -\pargcorrection
  \global\pargcorrection=0pt
%    \end{macrocode}
%    To achieve our goal we need to save the text in box.
%    \begin{macrocode}
  \setbox\tabparbox\vtop\bgroup\hsize#1\@arrayparboxrestore}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\@sastartpbox#1{%
  \bgroup\hsize#1%
  \global\advance\page@left by -\pargcorrection
  \global\pargcorrection=0pt
  \setbox\tabparbox\vtop\bgroup\hsize#1\@arrayparboxrestore}
%    \end{macrocode}
%
% 11/03/92 JB: The following change didn't find its way into the
%              \@sendpbox command. This caused a difference in linespacing
%              between a supertabular and a normal tabular.
% \def\@endpbox{\unskip\strut\par\egroup\hfil}
% % 14 Jan 89: Def of \@endpbox changed from
% %    \def\@endpbox{\par\vskip\dp\@arstrutbox\egroup\hfil}
% % so vertical spacing works out right if the last line of a `p' entry
% % has a descender.
%    \begin{macrocode}
\def\@sendpbox{%
  \unskip\strut\par\egroup
  \computedimens=\ht\tabparbox
  \advance\computedimens by \dp\tabparbox
  \ifnum\parboxheight<\computedimens
    \global\parboxheight=\computedimens
  \fi
  \computedimens=\z@
  \box\tabparbox\hfil}
\def\@saendpbox{%
  \unskip\strut\par\egroup
  \computedimens=\ht\tabparbox
  \advance\computedimens by \dp\tabparbox
  \ifnum\parboxheight<\computedimens
    \global\parboxheight=\computedimens
  \fi
  \computedimens=\z@
  \unvbox\tabparbox\egroup}
%    \end{macrocode}
%
%         %%%%  Here start really new supertabular commands   %%%%
%
% \begin{macro}{\calmidlineheight}
%    Estimates the height of normal line taking |\arraystretch| into
%    account.
%    \begin{macrocode}
\def\calmidlineheight{%
  \midlineheight=\arraystretch \baslineskp
  \global\advance\midlineheight by 1\p@
%<tracing>  \@sttrace{Average line height:\the\midlineheight}%
  \global\pargcorrection=4\midlineheight
%<tracing>  \@sttrace{Correction for p columns: \the\pargcorrection}%
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@calfirstpageht}
% \changes{v3.7a}{1993/04/05}{Renamed from \cmd\calpage}
%    Estimates the space left on the current page and decides whether
%    the tabular can be started on this page or on a new page.
%    \begin{macrocode}
\def\@calfirstpageht{%
%<tracing>  \@sttrace{Calculating height of tabular on first page}
%    \end{macrocode}
%    The \TeX\ register |\pagetotal| contains the height of the page
%    sofar, the \LaTeX\ register |\@colroom| contains the height of
%    the column.
%    \begin{macrocode}
  \global\actsize\pagetotal
  \global\page@left\@colroom
%<tracing>  \@sttrace{pagetotal = \the\pagetotal; 
%<tracing>            page@left = \the\page@left}%
%    \end{macrocode}
%    When we are in twocolumn mode \TeX\ may still be collecting
%    material for the first column although there seems to be no space
%    left. In this case we have to check against two times |\page@left|.
%    \begin{macrocode}
  \if@twocolumn
%<tracing>    \@sttrace{two column mode}%
    \if@firstcolumn
%<tracing>     \@sttrace{First column}%
      \ifnum\actsize > \page@left 
        \global\maxsize=2\page@left
        \ifnum\actsize > \page@left
          \newpage\@calnextpageht
%<tracing>          \@sttrace{starting new page}%
        \else
%    \end{macrocode}
%    In this case we're in the second column, so we have to compensate
%    for the material in the first column.
%    \begin{macrocode}
%<tracing>     \@sttrace{Second column}%
          \global\advance\page@left -\actsize
          \global\advance\page@left -\@colroom
        \fi
      \fi
    \fi
  \else
%    \end{macrocode}
%    In one column mode there is a simple decision.
%    \begin{macrocode}
%<tracing>    \@sttrace{one column mode}%
    \ifnum\actsize > \page@left
%<tracing>      \@sttrace{starting new page}%
      \newpage\@calnextpageht
%    \end{macrocode}
%    When we are not starting a new page subtract the size of the
%    material already on it from the available space.
%    \begin{macrocode}
    \else
      \global\advance\page@left by -\actsize
      \global\actsize\z@
    \fi
  \fi
%    \end{macrocode}
%    To decide when to start a new page, we need to know the vertical
%    size of the tail of the table.
%    \begin{macrocode}
  \ifx\empty\@tabletail
    \@tailht=\z@
  \else
    \setbox\@tempboxa=\vbox{\@arrayparboxrestore%
      \expandafter\tabular\expandafter{\tableformat}
        \@tabletail\endtabular}
    \@tailht=\ht\@tempboxa\advance\@tailht\dp\@tempboxa
  \fi
%    \end{macrocode}
%    We add the average height of a line to this because when we
%    decide to continue the tabular we need to have enough space left
%    for one line an the tail.
%    \begin{macrocode}
  \advance\@tailht by \midlineheight
%<tracing>  \@sttrace{Height of tail: \the\@tailht}
%<tracing>  \@sttrace{Maximum height of tabular: \the\page@left}
}
                             % Here is the definition of supertabular
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@calnextpageht}
% \changes{v3.7a}{1993/04/05}{Macro added}
%    This calculates the maximum height of the tabular on all
%    subsequent pages of the supertabular environment. The correction
%    for parbox columns is somewhat smaller then on the first page of
%    the environment
%    \begin{macrocode}
\def\@calnextpageht{%
%<tracing>  \@sttrace{Calculating height of tabular on next page}
  \global\page@left\@colroom
  \global\pargcorrection=2\midlineheight
%<tracing>  \@sttrace{Correction for p columns: \the\pargcorrection}%
  \global\actsize=\z@
%<tracing>  \@sttrace{Maximum height of tabular: \the\page@left}
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\supertabular}
%    We start by saving the preamble of the tabular in a macro.
%    \begin{macrocode}
\def\supertabular#1 {%
  \def\tableformat{#1}
%<tracing>  \@sttrace{Starting a new supertabular}
%    \end{macrocode}
%    Then remember that this is not a \textsf{supertabular*}
%    environment.
%    \begin{macrocode}
  \global\starfalse
%    \end{macrocode}
%    If the caption should come at the top we insert it here.
%    \begin{macrocode}
  \if@topcaption \@process@tablecaption \fi
%    \end{macrocode}
%    Save the original definition of |\\|.
%    \begin{macrocode}
  \global\let\@oldcr=\\
%    \end{macrocode}
%    Save the current value of |\baselineskip|, as we need it in the
%    calculation of the average height of a line. 
%    \begin{macrocode}
  \def\baslineskp{\baselineskip}%
  \calmidlineheight
  \@calfirstpageht
%    \end{macrocode}
%    We have to check whether \texttt{array.sty} was loaded, because
%    some of the internal macros have different names.
%    \begin{macrocode}
  \ifx\undefined\@classix
%    \end{macrocode}
%    Save old |\@tabularcr| and insert the definition of
%    |\@stabularcr|. 
%    \begin{macrocode}
      \let\@@tabularcr\@tabularcr
      \let\@tabularcr\@stabularcr
%    \end{macrocode}
%    Activate the new parbox algorithm.
%    \begin{macrocode}
      \let\@@startpbox=\@sstartpbox
      \let\@@endpbox=\@sendpbox
  \else
%    \end{macrocode}
%    When \texttt{array.sty} was loaded things are a bit different.
%    \begin{macrocode}
      \let\@@tabularcr\@arraycr
      \let\@arraycr\@stabularcr
      \let\org@startpbox=\@startpbox
      \let\org@endpbox=\@endpbox
      \let\@startpbox=\@sastartpbox
      \let\@endpbox=\@saendpbox
  \fi
%    \end{macrocode}
%
%    Moved the check for the use of \tablefirsthead to befor the start of
%    the tabular environment in order to make the \futurelet inside \hline
%    do its work correctly (15.02.91)
%
%    Check if the head of the table should be different for the first
%    and subsequent pages.
%    \begin{macrocode}
    \ifx\@table@first@head\undefined
        \let\@@tablehead=\@tablehead
    \else
        \let\@@tablehead=\@table@first@head
    \fi
%    \end{macrocode}
%    Finally start a normal \textsf{tabular} environment.
%    \begin{macrocode}
    \expandafter\tabular\expandafter{\tableformat}
    \@@tablehead}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\endsupertabular}
%    This closes the environment.
%    \begin{macrocode}
\def\endsupertabular{%
  \ifx\@table@last@tail\undefined
    \@tabletail
  \else
    \@table@last@tail
  \fi
  \endtabular
%    \end{macrocode}
%    Restore the original definition of |\@tabularcr|
%    \begin{macrocode}
  \ifx\undefined\@classix
    \let\@tabularcr\@@tabularcr
  \else
    \let\@arraycr\@@tabularcr
    \let\@startpbox=\org@startpbox
    \let\@endpbox=\org@endpbox
  \fi
%    \end{macrocode}
%    Check if we have to insert a caption and restore to default
%    behaviour of putting captions at the top.
%    \begin{macrocode}
  \if@topcaption
  \else
    \@process@tablecaption
    \@topcaptiontrue
  \fi
%    \end{macrocode}
%
%    Restore the meaning of |\\| to the one it had before the start
%    of this environment. Also re-initialize some control-sequences
%
%    \begin{macrocode}
  \global\let\\=\@oldcr
  \let\@table@first@head\undefined
  \let\@table@last@tail\undefined
  \global\let\@process@tablecaption\relax
%<tracing>  \@sttrace{Ended a supertabular}
  }
%    \end{macrocode}
% \end{macro}
%
%  \begin{macro}{\ifstar}
%    This switch is used in the internal macros to remember which
%    kind of environment was started.
%    \begin{macrocode}
\newif\ifstar
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\tabularwidth}
%    For the \textsf{supertabular*} environment it is necessary to
%    store the intended width of the tabular.
%    \begin{macrocode}
\newdimen\tabularwidth
%    \end{macrocode}
%  \end{macro}
%
% \begin{macro}{\supertabular*}
%    We start by saving the intended width and the preamble of the
%    \textsf{tabular*}.
%    \begin{macrocode}
\@namedef{supertabular*}#1#2 {%
%<tracing>  \@sttrace{Starting a new supertabular*}
  \def\tableformat{#2}
  \tabularwidth=#1
  \global\startrue
%    \end{macrocode}
%    If the caption should come at the top we insert it here.
%    \begin{macrocode}
    \if@topcaption\@process@tablecaption\fi
%    \end{macrocode}
%    Save the original definition of |\\|.
%    \begin{macrocode}
  \global\let\@oldcr=\\
%    \end{macrocode}
%    Save the current value of |\baselineskip|, as we need it in the
%    calculation of the average height of a line. 
%    \begin{macrocode}
    \def\baslineskp{\baselineskip}%
    \calmidlineheight
    \@calfirstpageht
%    \end{macrocode}
%    We have to check whether \texttt{array.sty} was loaded, because
%    some of the internal macros have different names.
%    \begin{macrocode}
    \ifx\undefined\@classix
%    \end{macrocode}
%    Save old |\@tabularcr| and insert the definition of
%    |\@stabularcr|. 
%    \begin{macrocode}
      \let\@@tabularcr\@tabularcr
      \let\@tabularcr\@stabularcr
%    \end{macrocode}
%    Activate the new parbox algorithm
%    \begin{macrocode}
      \let\@@startpbox=\@sstartpbox
      \let\@@endpbox=\@sendpbox
    \else
%    \end{macrocode}
%    When \texttt{array.sty} was loaded things are a bit different.
%    \begin{macrocode}
      \let\@@tabularcr\@arraycr
      \let\@arraycr\@stabularcr
      \let\org@startpbox=\@startpbox
      \let\org@endpbox=\@endpbox
      \let\@startpbox=\@sastartpbox
      \let\@endpbox=\@saendpbox
    \fi
%    \end{macrocode}
%
%    Check if the head of the table should be different for the first
%    and subsequent pages.
%    \begin{macrocode}
    \ifx\@table@first@head\undefined
        \let\@@tablehead\@tablehead
    \else
        \let\@@tablehead\@table@first@head
    \fi
%    \end{macrocode}
%    Finally start a normal \textsf{tabular*} environment.
%    \begin{macrocode}
    \expandafter\csname tabular*\expandafter\endcsname
    \expandafter{\expandafter\tabularwidth\expandafter}%
    \expandafter{\tableformat}%
    \@@tablehead}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\endsupertabular*}
%    This closes the environment.
%    \begin{macrocode}
\@namedef{endsupertabular*}{%
  \ifx\@table@last@tail\undefined
    \@tabletail
  \else
    \@table@last@tail
  \fi
  \csname endtabular*\endcsname
%    \end{macrocode}
%    Restore the old definition of |\@tabularcr|.
%    \begin{macrocode}
  \ifx\undefined\@classix
    \let\@tabularcr\@@tabularcr
  \else
    \let\@arraycr\@@tabularcr
    \let\@startpbox=\org@startpbox
    \let\@endpbox=\org@endpbox
  \fi
%    \end{macrocode}
%    Check if we have to insert a caption and restore to default
%    behaviour of putting captions at the top.
%    \begin{macrocode}
  \if@topcaption
  \else
    \@process@tablecaption
    \@topcaptiontrue
  \fi
%    \end{macrocode}
%
%    Restore the meaning of |\\| to the one it had before the start
%    of this environment. Also re-initialize some control-sequences
%
%    \begin{macrocode}
  \global\let\\=\@oldcr
  \let\@table@first@head\undefined
  \let\@table@last@tail\undefined
  \global\let\@process@tablecaption\relax
%<tracing>  \@sttrace{Ended a supertabular*}
    }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\nextline}
%    This macro is called by each |\\| inside the tabular environment.
%    It updates the estimate of the amount of space left on the
%    current page and starts a new page if necessary.
%    \begin{macrocode}
\def\nextline{%
  \noalign{%
    \ifnum\parboxheight<\midlineheight
%    \end{macrocode}
%    If there is a non-empty line, but an empty parbox, then
%    |\parboxheight| might be non-zero, but too small thereby breaking
%    the algorithm. Therefore we estimate the height of the line to be
%    |\midlineheight| in this case.
%    \begin{macrocode}
      \global\advance\page@left -\midlineheight
%    \end{macrocode}
%    |\addspace| is the value of the optional argument of |\\|.
%    \begin{macrocode}
      \global\advance\page@left -\addspace
    \else
%    \end{macrocode}
%    When the parbox was not empty we take into account its height
%    (plus a bit extra).
%    \begin{macrocode}
%<tracing>     \@sttrace{Added par box with height \the\parboxheight}%
      \global\advance\page@left -\parboxheight
      \global\advance\page@left -0.1\parboxheight
      \global\parboxheight\z@
    \fi
    \global\addspace=\z@
%<tracing>    \@sttrace{Space left for tabular: \the\page@left}
  }
%    \end{macrocode}
%    When there is not enough space left we start a new page.
%    \begin{macrocode}
  \ifnum\page@left<\@tailht
    \st@newpage
  \else
%    \end{macrocode}
%    
%    This line is necessary because the tablehead has to be inserted
%    *after* the |\if\else\fi|-clause. For this purpose |\st@next| is
%    used. In the middle of tableprocessing it shoud be an *empty*
%    macro (*not* |\relax|).  (15.2.91)
%    \begin{macrocode}
    \noalign{\global\let\st@next\@empty}%
  \fi\st@next}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\st@newpage}
% \changes{v3.7b}{1994/05/16}{Added macro, split off from
%    \cmd\nextline}
%    This macro performs the actions necessary to start a new page.
%    \begin{macrocode}
\def\st@newpage{%
%<tracing>  \noalign{\@sttrace{Starting new page, writing tail}}
%    \end{macrocode}
%    Output |\tabletail|, close the tabular environment, output all
%    material and start a fresh new page.
%    \begin{macrocode}
  \@tabletail
  \ifstar
    \csname endtabular*\endcsname
  \else
    \endtabular
  \fi
%  \if@twocolumn
%    \if@firstcolumn
%      \newpage\@calnextpageht
%      \global\actsize=\z@
%    \else
%      \newpage\@calnextpageht
%    \fi
%  \else
    \newpage\@calnextpageht
%  \fi
  \let\st@next\@tablehead
%<tracing>  \@sttrace{writing head}
  \ifstar
    \expandafter\csname tabular*\expandafter\endcsname
    \expandafter{\expandafter\tabularwidth\expandafter}%
    \expandafter{\tableformat}%
  \else
    \expandafter\tabular\expandafter{\tableformat}%
  \fi}
%    \end{macrocode}

% end of supertabular.sty.  Back to our own stuff.

%
%       EPS FIGURE SUPPORT
%
%       We will support the incorporation of PostScript figures in
%       the manner of AASTeX.  This means we will assume the presence
%       of the Rokicki dvips package, and use specials with that
%       syntax.  So, taken from aaspp.sty:

% Include Rokicki's epsf.sty file explicitly.
 
\@ifundefined{epsfbox}{\input{epsf.sty}}{\relax}
 
% Simplified EPS inclusion macros so we can see how this goes...
% These are layered on Rokicki's dvips material, and are dependent
% on the author's use of that DVI driver.
%
%    \plotone{EPSFILE}
%    \plottwo{EPSFILE}{EPSFILE}
%    \plotfiddle{EPSFILE}{VSIZE}{ROT}{HSF}{VSF}{HTRANS}{VTRANS}
%
% \plotone inserts the plot in a space that is some fraction of
% \columnwidth wide (default is 0.95\columnwidth; use \epsscale
% to pick some different fraction); the
% plot is scaled so the horizontal dimension fits in the text width,
% and the vertical dimension is scaled to maintain the aspect ratio.
% \plottwo inserts two plots next to each other in one \columnwidth,
% sort of like "two-up" mode.
%
%    EPSFILE    name of file with EPS
%
% The following arguments are for the \plotfiddle macro which formats
% the \special itself, prepares vspace, etc.  This completely bypasses
% Rokicki's macros that attempt to rationalize the EPS BoundingBox with
% the LaTeX page dimensions.
%
%    VSIZE      vertical white space to allow for plot
%    ROT        rotation angle
%    HSF        horiz scale factor
%    VSF        vert scale factor
%    HTRANS     horiz translation
%    VTRANS     vert translation
 
%\epsfverbosetrue
 
\def\eps@scaling{.95}
\def\epsscale#1{\gdef\eps@scaling{#1}}

\def\plotone#1{\centering \leavevmode
    \epsfxsize=\eps@scaling\columnwidth \epsfbox{#1}}

\def\plottwo#1#2{\centering \leavevmode
    \epsfxsize=.45\columnwidth \epsfbox{#1} \hfil
    \epsfxsize=.45\columnwidth \epsfbox{#2}}

\def\plotfiddle#1#2#3#4#5#6#7{\centering \leavevmode
    \vbox to#2{\rule{0pt}{#2}}
    \special{psfile=#1 voffset=#7 hoffset=#6 vscale=#5 hscale=#4 angle=#3}}

%
%       PAGE LAYOUT
%
%       Hopefully, everything will fit on an A4
%       page, although the right margin may be a bit cramped.

\headheight 40pt
\headsep 30pt
\oddsidemargin 0pt
\parindent 0pt
\topmargin -33pt
\textwidth 6.5in
\textheight 8.5in
\raggedbottom

%       Here is the magic code from Chris B. allowing p boxes in
%       tables NOT be right justified.  The difference from the
%       definition of @arrayparboxrestore in latex.tex is changing
%       \rightskip and \@rightskip from zero to \@flushglue.
%
\def\@arrayparboxrestore{\let\par\@@par
    \let\-\@dischyph \let\'\@acci \let\`\@accii \let\=\@acciii
    \parindent\z@ \parskip\z@ \everypar{}\linewidth\hsize
    \@totalleftmargin\z@ \leftskip\z@
    \rightskip\@flushglue \@rightskip\@flushglue
    \parfillskip\@flushglue \lineskip\normallineskip
    \baselineskip\normalbaselineskip\sloppy}
 
%
%       PAGE HEADINGS
%
%       Page headings slightly altered from the myheadings page style
%       to allow the PI and title to be stacked in a \vbox.  The first
%       page has it's own page style, identifying the proposal
%       category, and without a page number.

\def\ps@fusefirst{%
    \let\@mkboth\@gobbletwo
    \def\@oddhead{\parbox[b]{\textwidth}{ \@pititle~\@pifirstname~\@pilastname,~~   
%        \hfill%
       \@title}}
%       \\\ \raggedleft \ GALEX Cycle \thecycle~Proposal~Number: \@nasapropno}}
    \let\@evenhead\@oddhead
    \def\@oddfoot{}
    \def\@evenfoot{}
    \def\sectionmark##1{}
    \def\subsectionmark##1{}}

\def\ps@fuseheadings{%
    \let\@mkboth\@gobbletwo
    \def\@oddhead{\hbox to \textwidth{\hfil%
         
\llap{\parbox[b]{\textwidth}{\@pititle~\@pifirstname~\@pilastname,~~
%          \hfill%
        \@title }}}}
%        \\\  \raggedleft GALEX Cycle \thecycle~Proposal~Number: \@nasapropno}}}}
    \let\@evenhead\@oddhead
    \def\@oddfoot{\hfil\rm\thepage\hfil}
    \let\@evenfoot\@oddfoot
    \def\sectionmark##1{}
    \def\subsectionmark##1{}}

\pagestyle{fuseheadings}
\thispagestyle{fusefirst}

%
%       FOOTNOTES
%
%       Changes for footnotes.  The observation summary and investigator
%       list tables are set within minipages to keep the footnotes close
%       to the table, if they are used.  Set \footins to 0pt to keep
%       them REALLY close.

\def\thefootnote{\arabic{footnote}}
\def\thempfootnote{\arabic{mpfootnote}}
\let\footnotesize\small
\let\footnoterule\relax
\skip\footins 0pt plus 4pt minus 2pt

%
%       SECTIONING COMMANDS
%
%       It would be nice to allow proposers to use sectioning commands
%       when composing long replies---in the scientific justification,
%       for example.  Make sure they are less conspicuous than the
%       headers for each question.

\def\section{\@startsection {section}{1}{\z@}{-3.5ex plus -1ex minus 
 -.2ex}{2.3ex plus .2ex}{\normalsize\bf}}
\def\subsection{\@startsection{subsection}{2}{\z@}{-3.25ex plus -1ex minus 
 -.2ex}{1.5ex plus .2ex}{\normalsize\it}}
\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-3.25ex plus
 -1ex minus -.2ex}{1.5ex plus .2ex}{\normalsize}}

%
%       MACROS
%
%       Define a whole bunch of string macros, that stuff their
%       arguments away for later use:
%
%               \address{}      Obsolete as of version 1.6
%               \aperture{}     IMAGE  or GRISM 
%               \brtfluxacc{}   HIGH, MED, or LOW
%               \brtfluxlamref{}  % Flux value at wavelength specified
%                                  by brtlamref{}
%               \brtlamref{}    A reference wavelength, brightest source, 
%                           in angstroms.
%               \brtstarflag{}  Yes or No  Yes means a bright star is close 
%                                       enough to possibly be dangerous          
%               \brtstarmag{}   Magnitude (NUV) of nearby bright star                
%               \brtstardist{}  Distance from field center to bright star(deg) 
%               \coifirstname{}
%               \coilastname{}  Note that \coilastname and 
%                                \pilastname use the same hidden string:
%                                \@lastname.
%               \coititle{}
%               \colorexcess{}  Measured E(B-V), if available
%               \country{}
%               \dec{}          Declination 
%               \elinefwhm      FWHM of line in Angstroms.
%               \email{}        E-mail address, set in \tt font
%               \fldfluxacc{}   HIGH, MED, or LOW
%               \fldfluxlamref{}  %Flux value at wavelength specified
%                                  by fldlamref{}
%               \fldlamref{}    A reference wavelength, Field brightness, 
%                               in angstroms.
%               \fluxaccuracy{} HIGH, MED, or LOW
%               \fluxlambdaref{}
%                               Flux value at wavelength specified
%                                by \lambdaref
%               \institution{}  Supposed to fit on one line
%               \instrument{}   Allows building up a list of instruments
%                                by calling repeatedly.
%               \lambdaref{}    A reference wavelength in angstroms.
%               \legacyyrs{}    number of years (1 or 2) requested for 
%                                 programcategory{LEGACY}
%               \mode{}         1 subvisit (SINGLE) or many subvisits (AIS)
%               \nasapropno{}   NASA asssigned proposal number
%               \numvisits{}    Number of visits required for this object
%               \numsteps{}     Number of steps (pointings) in an AIS orbit                              
%               \objectname{}   Target name
%               \obtime{}       Total time on a particular pointing, %           
%                            obtime should = numvisits x integrationtime 
%               \phaseoneZID{}
%               \phone{}
%               \pifirstname{}  
%               \pilastname{}
%               \pititle{}      Title (Dr., Prof. Ms.) should go here
%               \programcategory{}  LEGACY, STANDARD, SNAP, or ARCHIVAL
%               \ra{}           Right ascension 
%               \resolutionelement{}
%                               Size of resolution element in S/N
%                                calculation.
%               \scientificcategory{}
%               \signoisechan{} Channel assumed for S/N calc (or total)
%               \signoise{}     Expected S/N per resolution element
%               \sblambdaref{}  Expected surface brightness.
%               \sourcetype{}   Two letter code, first is P (point) or
%                                E (extended), second is C (continuum)
%                                or E (emission-line).  REQUIRED
%               \spectype{}     MK spectral type and luminosity class
%                                for stellar objects.  For other types ??
%               \totalorbits{}  Total orbits needed for whole proposal %         
%               \USstate{}      Gets used only if country is "USA"
%               \vmag{}         Johnson V magnitude.
%
%       Many of the strings hidden under these macros have highly
%       visible defaults, when typeset, to remind the preparer to
%       supply a value.
%

\def\address#1{\gdef\@address{#1}}
    \gdef\@address{{\bf Please supply a postal address!}}
\def\aperture#1{%
    \uppercase{\gdef\@aperture{#1}}
    \ifx\IMAGE\@aperture\else
        \ifx\GRISM\@aperture\else
           \gdef\@aperture{???}
        \fi
    \fi}
    \gdef\@aperture{}
    \def\IMAGE{IMAGE}
    \def\GRISM{GRISM}
\def\brtfluxacc#1{\ifx\empty#1\else\gdef\@brtfluxacc{#1}\fi}
    \gdef\@brtfluxacc{???}
\def\brtfluxlamref#1{\ifx\empty#1\else\gdef\@brtfluxlamref{#1}\fi}
    \gdef\@brtfluxlamref{???}
\def\brtlamref#1{\ifx\empty#1\else\gdef\@brtlamref{#1}\fi}
    \gdef\@brtlamref{???}
\def\brtstarflag#1{%
    \uppercase{\gdef\@brtstarflag{#1}}
    \ifx\YES\@brtstarflag\else
        \ifx\NO\@brtstarflag\else
           \gdef\@brtstarflag{???}
        \fi
    \fi}
    \gdef\@aperture{}
    \def\YES{YES}
    \def\NO{NO}
\def\brtstarmag#1{\ifx\empty#1\else\gdef\@brtstarmag{#1}\fi}
    \gdef\@brtstarmag{-}
\def\brtstardist#1{\ifx\empty#1\else\gdef\@brtstardist{#1}\fi}
    \gdef\@brtstardist{-}
\def\coifirstname#1{\gdef\@firstname{#1}}
    \gdef\@firstname{}
\def\coilastname#1{\gdef\@lastname{#1}}
    \gdef\@lastname{???}
\def\coititle#1{%
    \invline\\$         % Add a line to the investigator table
    \gdef\@PIorCoI{CoI:}\gdef\@investigatortitle{#1}}
    \gdef\@investigatortitle{???}
\def\colorexcess#1{\gdef\@colorexcess{#1}}
    \gdef\@colorexcess{}
\def\country#1{\gdef\@country{#1}\xdef\@countrystate{#1}}
    \def\@countrystate{{\bf Please supply a country!}}
\def\dec#1{\ifx\empty#1\else\gdef\@dec{#1}\fi}
    \gdef\@dec{???}
\def\elinefwhm#1{%
    \ifx\empty#1\else\gdef\@elinefwhm{#1\AA}\fi}
    \gdef\@elinefwhm{}
\def\email#1{\gdef\@email{#1}}
    \gdef\@email{}
\def\fax#1{\gdef\@fax{#1}}
    \gdef\@fax{}
\def\fldfluxacc#1{\ifx\empty#1\else\gdef\@fldfluxacc{#1}\fi}
    \gdef\@fldfluxacc{???}
\def\fldfluxlamref#1{\ifx\empty#1\else\gdef\@fldfluxlamref{#1}\fi}
    \gdef\@fldfluxlamref{???}
\def\fldlamref#1{\ifx\empty#1\else\gdef\@fldlamref{#1}\fi}
    \gdef\@fldlamref{???}
\def\fluxaccuracy#1{\ifx\empty#1\else\gdef\@fluxaccuracy{#1}\fi}
    \gdef\@fluxaccuracy{???}
\def\fluxlambdaref#1{\ifx\empty#1\else\gdef\@fluxlambdaref{#1}\fi}
    \gdef\@fluxlambdaref{???}
\def\institution#1{\gdef\@institution{#1}}
    \gdef\@institution{{\bf Please supply an institution!}}
\def\integrationtime#1{% Total integration time, in orbits
    \ifx\empty#1\else\global\@integrationtime=#1\fi}
    \newcount\@integrationtime          
    \@integrationtime=0
\def\lambdaref#1{\ifx\empty#1\else\gdef\@lambdaref{#1}\fi}
    \gdef\@lambdaref{???}
%\def\legacyyrs#1{% 
%    \ifx\empty#1\global\@legacyyearsfalse
%    \else
%        \gdef\@legacyyrs{#1}
%        \global\@legacyyearstrue
%    \fi}
%    \gdef\@legacyyrs{}
%    \newif\if@legacyyears \@legacyyearsfalse
\def\mode#1{ \uppercase{\gdef\@mode{#1}}     
     \ifx\ONE\@mode\else         
         \ifx\MULTI\@mode\else         
             \gdef\@mode{???}    
         \fi   
    \fi}
    \gdef\@mode{}
    \def\ONE{ONE}    
    \def\MULTI{MULTI} 
\def\nasapropno#1{\gdef\@nasapropno{#1}}
    \gdef\@nasapropno{???}
\def\numsteps#1{\gdef\@numsteps{#1}}
    \gdef\@numsteps{1}
\def\numvisits#1{% Defaults to 1 on empty argument
    \ifx\empty#1
    	\global\@numvisits=1
    \else
    	\global\@numvisits=#1
    \fi}
    \newcount\@numvisits                
    \@numvisits=1
\def\objectname#1{% First thing, flush out the object line already specified,
                  %  unless this is the first time through.  In that case,
                  %  just save everything for next time.
    \if@firstobject%
        \global\@firstobjectfalse\relax%
        $%
    \else%
        \@objectline%
    \fi%
    \ifx\empty#1\else%
        \gdef\@objectname{#1}%
    \fi
   }
    \gdef\@objectname{???}
    \newif\if@firstobject 
   \global\@firstobjecttrue 
\def\obtime#1{\gdef\@obtime{#1}}
    \gdef\@obtime{???}
\def\phaseoneZID#1{\gdef\@ZID{#1}}
    \gdef\@ZID{}
\def\phone#1{\def\@telephone{#1}}
    \def\@telephone{}
\def\piaffiliation#1{\gdef\@piaffiliation{#1}}
    \gdef\@piaffiliation{???}
\def\pifirstname#1{\gdef\@PIorCoI{PI:}
    \gdef\@firstname{#1}\gdef\@pifirstname{#1}}
    \def\@PIorCoI{???!}
    \def\@pifirstname{}
\def\pilastname#1{\gdef\@lastname{#1}\gdef\@pilastname{#1}}
    \gdef\@pilastname{???}
\def\pititle#1{\gdef\@pititle{#1}\gdef\@investigatortitle{#1}}
    \gdef\@pititle{???}
\def\programcategory#1{\def\@progcat{#1}}
    \def\@progcat{{\bf Please supply a program category!}}
\def\ra#1{\ifx\empty#1\else\gdef\@ra{#1}\fi}
    \gdef\@ra{???}
%\def\resolutionelement#1{%
%    \ifx\empty#1\else\gdef\@resolutionelement{#1\AA}\fi}
%%    \gdef\@resolutionelement{} %    \gdef\@resolutionelement{???}
\def\scientificcategory#1{\def\@scicat{#1}}
    \def\@scicat{{\bf Please supply a scientific category!}}
%\def\signoisechan#1{\gdef\@signoisechan{#1}}
%    \gdef\@signoisechan{}
\def\signoise#1{\ifx\empty#1\else\gdef\@signoise{#1}\fi}
    \gdef\@signoise{???}
\def\sblambdaref#1{\ifx\empty#1\else\gdef\@sblambdaref{#1}\fi}
    \gdef\@sblambdaref{???}
\def\sourcetype#1{\uppercase{\gdef\@sourcetype{#1}}
    \global\@validsourcetypetrue
    \ifx\PC\@sourcetype
        \global\@pointsourcetrue 
        \global\@continuumsourcetrue
    \else
        \ifx\PE\@sourcetype
            \global\@pointsourcetrue
            \global\@continuumsourcefalse
        \else
            \ifx\EC\@sourcetype
                \global\@pointsourcefalse
                \global\@continuumsourcetrue
            \else
                \ifx\EE\@sourcetype
                    \global\@pointsourcefalse
                    \global\@continuumsourcefalse
                \else
                    \global\@validsourcetypefalse
                    \gdef\@sourcetype{???}
                \fi
            \fi
        \fi
    \fi}
    \def\@sourcetype{}
    \def\PC{PC} % Point continuum
    \def\PE{PE} % Point emission-line
    \def\EC{EC} % Extended continuum
    \def\EE{EE} % Extended emission-line
    \newif\if@validsourcetype \@validsourcetypefalse
    \newif\if@pointsource \@pointsourcefalse
    \newif\if@continuumsource \@continuumsourcefalse
\def\specialreq#1{%
    \if@onerequestalready
      \xdef\@reqtemp{\@specialreq}
      \uppercase{\gdef\@specialreq{\@reqtemp{} #1}}
    \else
      \global\@onerequestalreadytrue
      \uppercase{\gdef\@specialreq{#1}}
    \fi
    }
    \newif\if@onerequestalready \global\@onerequestalreadyfalse
    \newif\if@tworequestsalready \global\@tworequestsalreadyfalse
    \gdef\@specialreq{}
    \gdef\@specialreqtwo{}
\def\spectype#1{\ifx\empty#1\else\gdef\@spectype{#1}\fi}
    \gdef\@spectype{???}
\def\totalobstime#1{% Total observing time, in orbits
    \gdef\@totalobstime{#1}}
    \gdef\@totalobstime{???}
\def\totalobjects#1{% Total number of objects 
    \ifx\empty#1\else\global\@totalobjects=#1\fi}
    \newcount\@totalobjects             
    \@totalobjects=0
\def\totalorbits#1{\ifx\empty#1\else\gdef\@totalorbits{#1}\fi}
    \gdef\@totalorbits{}
\def\USstate#1{\gdef\@USstate{#1}
    \ifx\USA\@country
        \xdef\@countrystate{USA/#1}
    \fi}
    \def\@USstate{}
  \def\USA{USA}
\def\vmag#1{\ifx\empty#1\else\gdef\@vmag{#1}\fi}
    \gdef\@vmag{???}

%       Let's start doing something.

%       THE PROPOSAL SUMMARY

%       The printed form starts off with some boilerplate, the
%       proposal title, and some general info, identifies the PI,
%       and makes a table of orbit requests for observing proposals.
%       Put the PI and title into the page header with a \markright
%       command.  Everything else comes in a big 4 column table.  This
%       summary might be invoked from a number of places, but make
%       sure it only gets done once.
%
%       We say that the length of the abstract is limited by the 
%       constraint that it not run over to the second page.  This
%       is unfair unless we make some effort to insure that the
%       proposal summary takes the same amount of space for almost
%       all proposals.  What we will do is to allow for a title that
%       runs over onto a second line, but not a third, and for a
%       postal address that runs over onto a third line, but not a
%       fourth.  Put the title into a vbox to 42pt.  Put everything
%       else into a vbox to 170pt.  NO CHEATING NOW!

\newif\if@didsummary
    \@didsummaryfalse

\def\makesummary{%
    \@didsummarytrue
    \vbox to 42pt{\parbox[b]{\textwidth}{%
        \sloppy\raggedright\Large\bf \@title}\vfil}
    \vskip 12pt
    \hbox to \textwidth{\vbox to 170pt{\lineskip .75em
    \begin{tabular}[t]{@{}rl}
        Principal Investigator:&\@pititle~\@firstname~\@lastname\\ 
        Institution:&\@piaffiliation\\ 
        &\@institution\\ 
        &\begin{tabular}{@{}l}\@address\end{tabular}\\ 
        Country:&\@country\\
        Telephone:&\@telephone\\ 
        FAX:&\@fax\\
        Electronic Mail:&\@email\\
        \\
        NASA Proposal Number:&\@nasapropno\\
%       \if@legacyyears\         Program Category:&\@progcat~~Legacy 
%          Years:~\@legacyyrs\\
%        \else\          
        Program Category:&\@progcat\\
%        \fi
        Scientific Category:&\@scicat\\
        Total Time:&\@totalobstime \,ksec~~~or~~~\@totalorbits \,orbits\\
        Number of Fields, or Pointings:&{\number \@totalobjects}\\
    \end{tabular}\vfil}}
    \vskip 36pt
    }

%       THE ABSTRACT

%       Just make a little heading, make sure that the proposal 
%       summary has been typeset, and provide a non-zero \parindent.

\renewenvironment{abstract}{%
    \makesummary
%    \if@didsummary\relax\else\makesummary\fi
    \noindent{\large\bf Abstract}\par
    \vskip 13pt
    \global\parindent 2em
   }{%
    \global\parindent 0em
   }

%       THE INVESTIGATOR LIST

%       The data for the Investigator list table is specified as
%       tagged items.  The trigger for actually typesetting them is
%       the \coititle macro, which is assumed to be the first macro
%       in the group of specifications for each CoI.  This macro
%       flushes the already defined data items out to the table, in
%       preparation for the next line.  The last line of the table
%       has to be flushed out by the \end{investigors} statement.
%       Of course, you might not have any co-investigators, in which
%       case it would have been nice if you were allowed to get rid 
%       of both the \begin and \end{investigators} statements.  However
%       both must be present.
%
%       Notice the use of math mode.  Right after the two \hline's
%       for the table heading is a dollar sign.  So LaTeX is actually
%       in math mode while reading the tagged data for the table.
%       This allows all of the white space to be ignored, so that the
%       first columns can actually line up.
%
%       In addition, the table is set within a minipage environment, in
%       case the preparer is moved to use footnotes within the table.
%       (Not to say we are encouraging the use of footnotes---we
%       aren't.)  This keeps the footnotes close to the table.
%
%       The table is typeset in \small, with \normalsize restored at
%       the end.

\newenvironment{investigators}{%
    \newpage\small
    \markanswer{Investigator List}
    \noindent\begin{minipage}{\textwidth}
    \begin{tabular*}{%
        \textwidth}{%
        @{}l@{\extracolsep{\fill}}lll@{}}
    & Investigator& Institution& Country \\\hline\hline$
   }{\finishinvlist}

\newif\if@finishedinvlist
    \@finishedinvlistfalse

\def\finishinvlist{%
    \invline\\\hline
    \end{tabular*}\par
    \end{minipage}
    \global\@finishedinvlisttrue
    \normalsize}

%       Add lines to the table of investigators.  
%       If the columns exceed a certain width, set them in a p box
%       of that width.  Otherwise use the natural width.
%
\newdimen\investwd
\newdimen\investboxwd 
\investboxwd=2.0in              % Width of the "Investigator" column

\newdimen\instwd
\newdimen\instboxwd 
\instboxwd=3.0in                % Width of the "Institution" column

\newdimen\countrywd
\newdimen\countryboxwd 
\countryboxwd=1.25in            % Width of the "Country" column

\def\invline{% 
  \global\setbox0=\hbox{\@investigatortitle~\@firstname~\@lastname}
  \global\investwd=\wd0
  \global\setbox0=\hbox{\@institution}
  \global\instwd=\wd0
  \global\setbox0=\hbox{\@countrystate}
  \global\countrywd=\wd0
  $\@PIorCoI&%                  % Note transition FROM math mode.
    \ifdim\investwd>\investboxwd%
      \multicolumn{1}{@{}p{\investboxwd}}{\@investigatortitle~\@firstname{}
      \@lastname}%
    \else%
      \@investigatortitle~\@firstname~\@lastname%
    \fi%
    &%
    \ifdim\instwd>\instboxwd%
      \multicolumn{1}{p{\instboxwd}}{\@institution}
    \else
      \@institution%
    \fi&
    \ifdim\countrywd>\countryboxwd%
      \multicolumn{1}{p{\countryboxwd}}{\@countrystate}
    \else
      \@countrystate%
    \fi
    }

%      THE OBSERVATION SUMMARY

%       The observations environment produces a tabular summary of
%       the proposed observations.  Unlike the investigators
%       environment, we don't start out with a line of information
%       already, so we have to make sure that no typesetting actually
%       gets done the first time through.  The trigger for spitting 
%       out a line of text is the \objectname macro.  Unlike (?) the
%       table of investigators, we reset most of the fields after 
%       each line, trying to make things more robust to re-arranging
%       lines in the table.
%
%       The trick of getting into math mode between lines of the table
%       doesn't work in this case, since the first column is a p box.
%       The $ goes into the p box, which messes everything up.  Instead,
%       we use the trick of a zero width p box for the always empty
%       dummy first column.
%
%       The table is typeset in \small, with \normalsize restored at
%       the end.

\tablehead{%
\multicolumn{4}{@{}l}{\bf Observing Summary:}\\
\hline\hline
\multicolumn{4}{@{}c}{\it --------------- Program Object --------------- }&
\multicolumn{2}{@{}c}{\it -- Instrument Setup -- }&
~ &
\multicolumn{3}{@{}c}{\it ------Safety Checking ----- } \\ 
%
\hline
\multicolumn{1}{@{}l@{}}{\vrule height12pt width 0pt Object name}& 
\multicolumn{1}{@{}c@{}}{RA}& 
\multicolumn{1}{@{}c@{}}{Flux$_{\lambda{\rm ref}}$}& 
\multicolumn{1}{@{}c@{}}{Src}&
\multicolumn{1}{@{}c@{}}{Opt.Path}&
\multicolumn{1}{@{}c@{}}{Special}&
\multicolumn{1}{@{}c@{}}{~ }&
\multicolumn{1}{@{}c@{}}{Flux$_{\rm Fld}$}&
\multicolumn{1}{@{}c@{}}{Flux$_{\rm Brt}$}&
\multicolumn{1}{@{}c@{}}{Brt.~Star}\\
\multicolumn{1}{@{\hspace{0.15in}}l@{}}{\vrule depth6pt width0pt 
Visits~$\times$~IntTime}& 
\multicolumn{1}{@{}c@{}}{Dec}&
\multicolumn{1}{@{}c@{}}{$\lambda_{\rm ref}$}& 
\multicolumn{1}{@{}c@{}}{Spec}&
\multicolumn{1}{@{}c@{}}{ObsMode}&
\multicolumn{1}{@{}c@{}}{Req}&
\multicolumn{1}{@{}c@{}}{ }&
\multicolumn{1}{@{}c@{}}{$\lambda_{\rm ref}$}& 
\multicolumn{1}{@{}c@{}}{$\lambda_{\rm ref}$}&
\multicolumn{1}{@{}c@{}}{NUV}\\
\multicolumn{1}{@{\hspace{0.15in}}l@{}}{\vrule depth6pt width0pt Total~Time}&
\multicolumn{1}{@{}c@{}}{S/N}&
\multicolumn{1}{@{}c@{}}{Acc.}&
\multicolumn{1}{@{}c@{}}{E(B-V)}& 
\multicolumn{1}{@{}c@{}}{\#~legs}&
\multicolumn{1}{@{}c@{}}{}&
\multicolumn{1}{@{}c@{}}{}&
\multicolumn{1}{@{}c@{}}{Acc.}&
\multicolumn{1}{@{}c@{}}{Acc.}&
\multicolumn{1}{@{}c@{}}{~Sep.}\\
\hline\hline%
}
\tabletail{\\\hline}
\tablelasttail{\@objectline$\\}
\newenvironment{observations}{%
  %\tracingall
  \newpage\small%
  \parindent0pt%
  \vskip 3em%
  \begin{supertabular*}{\textwidth}{@{}l@{\extracolsep{\fill}}cccccccrccc@{}}%
  }{\end{supertabular*} 
  \normalsize 
}

\newdimen\objectwd
\newdimen\objectboxwd \objectboxwd=1.25in

\newdimen\specialreqwd
\newdimen\specialreqboxwd \specialreqboxwd=0.85in

%\@ifundefined{@@tabularcr}{\def\@@tabularcr{\org@tabularcr}}{\relax}

\def\@objectline{%  First thing, leave math mode!
        $%
        \global\setbox0=\hbox{\@objectname}%
        \global\objectwd=\wd0%
        \global\setbox0=\hbox{\@specialreq}%
        \global\specialreqwd=\wd0%
        \begin{tabular}[t]{@{}l@{}}
          \ifdim\objectwd>\objectboxwd%
            \multicolumn{1}{@{}p{\objectboxwd}@{}}{\@objectname}
            %\hbox to\objectboxwd{\@objectname}%
          \else
            \@objectname%
          \fi\@@tabularcr
          \multicolumn{1}{@{\hspace{0.15in}}l}{$\number\@numvisits
            \times$\number\@integrationtime\,s}             \@@tabularcr         
 {\hspace{0.15in}}{\@obtime\,s}          \end{tabular}&
        \begin{tabular}[t]{@{}r@{}}
          \@ra\@@tabularcr
          \@dec\@@tabularcr       \@signoise      \end{tabular}&
%       \begin{tabular}[t]{@{}r@{}}
%         \@vmag\@@tabularcr
%         \@colorexcess
%         \end{tabular}&
%        \begin{tabular}[t]{@{}r@{}}
%         \@spectype\@@tabularcr
%         \@sourcetype
%         \end{tabular}&
        \begin{tabular}[t]{@{}r@{}}
          \@fluxlambdaref\@@tabularcr     \@lambdaref\@@tabularcr
          \@fluxaccuracy 
          \end{tabular}&
        \begin{tabular}[t]{@{}r@{}}
         \@sourcetype\@@tabularcr          \@spectype\@@tabularcr          
\@colorexcess
         \end{tabular}&
%       \begin{tabular}[t]{@{}r@{}}
%         \if@continuumsource\else\@elinefwhm\fi\@@tabularcr
%         \if@pointsource\else
%           \@sblambdaref
%         \fi
%         \end{tabular}&
%       \begin{tabular}[t]{@{}r@{}}
%         \@aperture\@@tabularcr
%         \@signoise\@@tabularcr
%         \@fluxaccuracy
%         \end{tabular}&
        \begin{tabular}[t]{@{}r@{}}

          \@aperture\@@tabularcr
          \@mode\@@tabularcr      \@numsteps      \end{tabular}&
        \ifdim\specialreqwd>\specialreqboxwd%
            \multicolumn{1}{p{\specialreqboxwd}}{\@specialreq}
          \else
                  \@specialreq%
          \fi
%  \end{tabular}&
         & &    \begin{tabular}[t]{@{}r@{}}
          \@fldfluxlamref\@@tabularcr     \@fldlamref\@@tabularcr
          \@fldfluxacc 
          \end{tabular}&
        \begin{tabular}[t]{@{}r@{}}
          \@brtfluxlamref\@@tabularcr     \@brtlamref\@@tabularcr
          \@brtfluxacc 
          \end{tabular}&
        \begin{tabular}[t]{@{}r@{}}
          \@brtstarflag\@@tabularcr       \@brtstarmag\@@tabularcr
          \@brtstardist 
          \end{tabular}&
  %          % TEST
%       \objectlinetest
%       \objectlinecheck
  %
  %     Reset strings back to visible defaults
  %
        \gdef\@ra{???}%
        \gdef\@dec{???}%
        \gdef\@vmag{???}%
        \gdef\@spectype{???}%
        \gdef\@colorexcess{???}%
        \gdef\@sourcetype{???}%
        \gdef\@lambdaref{???}%
        \gdef\@fluxlambdaref{???}%
        \gdef\@fluxaccuracy{???}%
        \gdef\@elinefwhm{???}%
        \gdef\@sblambdaref{???}%
        \gdef\@resolutionelement{???}%
        \gdef\@signoisechan{???}%
        \gdef\@signoise{???}%
        \gdef\@aperture{???}%
        \gdef\@mode{???}%
        \gdef\@specialreq{}%
        \gdef\@specialreqtwo{}%
        \gdef\@fldlamref{???}%
        \gdef\@fldfluxlamref{???}%
        \gdef\@fldfluxacc{???}%
        \gdef\@brtlamref{???}%
        \gdef\@brtfluxlamref{???}%
        \gdef\@brtfluxacc{???}%
        \gdef\@brtstarflag{???}%        \gdef\@brtstarmag={???}%        
\gdef\@brtstardist={???}%       \gdef\@numsteps={???}%
        \gdef\@obtime={???}%    \global\@numvisits=1%
        \global\@integrationtime=0%
        \global\@onerequestalreadyfalse%
        \global\@tworequestsalreadyfalse%
               \\[26pt]
        \hline  $       % Return to math mode!
        }
\def\objectlinetest {
  % TEST
        \\
        & objectname & \@objectname \\
        & ra    & \@ra \\
        & dec   & \@dec \\
        & vmag  & \@vmag \\
        & spectype & \@spectype\\
        & colorexcess & \@colorexcess \\
    \if@validsourcetype 
        & sourcetype & \@sourcetype \\
        & continuum source & \if@continuumsource TRUE\else FALSE\fi \\
        & point source & \if@pointsource TRUE\else FALSE\fi \\
    \else
        & sourcetype & \@sourcetype not a valid source type \\
    \fi
        & lambdaref  & \@lambdaref \\
        & fluxlambdaref & \@fluxlambdaref \\
        & fluxaccuracy & \@fluxaccuracy \\
        & elinefwhm  & \@elinefwhm \\
        & sblambdaref & \@sblambdaref \\
        & resolutionelement & \@resolutionelement \\
        & signoisechan & \@signoisechan \\
        & signoise & \@signoise \\
        & aperture & \@aperture \\
        & special req & \@specialreq \\
        & fldlamref  & \@fldlamref \\
        & fldfluxlamref & \@fldfluxlamref \\
        & fldfluxacc & \@fldfluxacc \\
        & brtlamref  & \@brtlamref \\
        & brtfluxlamref & \@brtfluxlamref \\
        & brtfluxacc & \@brtfluxacc \\
        & brtstarflag & \@brtstarflag \\
        & brtstarmag & \@brtstarmag \\
        & brtstardist & \@brtstardist \\
        & num visits & \number\@numvisits \\
        & num legs & \number\@numsteps \\
        & integration time & \number\@integrationtime
}
\def\objectlinecheck{
        \if@continuumsource
            \ifx\empty\vmag
                {\\ & \multicolumn{2}{l}{Please specify \verb+\vmag+} \\}\fi
        \fi
    }

%       GENERAL FORM
%
%       Define macros to print out little section headers for each of the
%       questions that appear in this part of the form.  Each calls
%       \markanswer, which puts a big black box in the left margin.
%       Reset the section counter, so that if the proposer used
%       sectioning commands in an answer, they start at 1 again in the
%       next answer.

\def\markanswer#1{%
    \vskip 12pt
    \global\parindent 2em
    {\noindent%\kern -24pt\vrule width10pt height10pt depth0pt
     %\hskip 12pt
    \large\bf #1}\vskip 12pt
    \setcounter{section}{0}}

\def\additionalinfo{%
    \markanswer{Additional Information}}
\def\describeobservations{%
    \markanswer{Description of the Observations}}
\def\feasibility{%
    \markanswer{Feasibility and Safety Considerations}}
\def\justification{%
    \markanswer{Scientific Justification}}
\def\previousfuseprograms{%
    \markanswer{Previous FUSE Observing Programs}}
\def\vita{%
    \markanswer{Vita}}

%       ABBREVIATIONS
%
%       Special symbols of astronomical interest.  

%       These came from Howard Bond, I think, by way of the STScI 
%       preprint style:
%

\def\ang{\AA}               %Angstrom unit
\def\degpoint{\mbox{$^\circ\mskip-7.0mu.\,$}}
\def\halpha{\mbox{H$\alpha$}}
\def\hbeta{\mbox{H$\beta$}}
\def\hgamma{\mbox{H$\gamma$}}
\def\kms{\,km~s$^{-1}$}      % note leading thinspace
\def\lya{\mbox{Ly$\alpha$}}
\def\lyb{\mbox{Ly$\beta$}}
\def\minpoint{\mbox{$'\mskip-4.7mu.\mskip0.8mu$}}
\def\mv{\mbox{$m_{_V}$}}
\def\Mv{\mbox{$M_{_V}$}}
\def\peryr{\mbox{$\>\rm yr^{-1}$}}
\def\secpoint{\mbox{$''\mskip-7.6mu.\,$}}
\def\sqdeg{\mbox{${\rm deg}^2$}}
\def\squig{\sim\!\!}
%\def\subsun{\mbox{$_{\twelvesy\odot}$}}
\def\subsun{\mbox{$_{\normalsize\odot}$}}

%       These are from AASTeX, with notes:

% Handy little things everybody works out for themselves anyway.  Many
% of these come from Springer's A&A package, and some were contributed
% by Francois Schweizer at DTM.  You can go berserk making these up,
% especially when you start getting into the composite ones.  We have
% tried to select a tractable number that were useful, and somewhat
% difficult to get right because fussy kerning or some such is required.
% Most can be used in or out of math mode with impunity; \alt and \agt
% are relations and can only be used in math mode.
 
\def\deg{\hbox{$^\circ$}}
\def\sun{\hbox{$\odot$}}
\def\earth{\hbox{$\oplus$}}
\def\lesssim{\mathrel{\hbox{\rlap{\hbox{\lower4pt\hbox{$\sim$}}}\hbox{$<$}}}}
\def\gtrsim{\mathrel{\hbox{\rlap{\hbox{\lower4pt\hbox{$\sim$}}}\hbox{$>$}}}}
\def\sq{\hbox{\rlap{$\sqcap$}$\sqcup$}}
\def\arcmin{\hbox{$^\prime$}}
\def\arcsec{\hbox{$^{\prime\prime}$}}
\def\fd{\hbox{$.\!\!^{\rm d}$}}
\def\fh{\hbox{$.\!\!^{\rm h}$}}
\def\fm{\hbox{$.\!\!^{\rm m}$}}
\def\fs{\hbox{$.\!\!^{\rm s}$}}
\def\fdg{\hbox{$.\!\!^\circ$}}
\def\farcm{\hbox{$.\mkern-4mu^\prime$}}
\def\farcs{\hbox{$.\!\!^{\prime\prime}$}}
\def\fp{\hbox{$.\!\!^{\scriptscriptstyle\rm p}$}}
\def\micron{\hbox{$\mu$m}}
 
\let\la=\lesssim                        % For Springer A&A compliance...
\let\ga=\gtrsim
 
% Permit author to typeset "case" fractions.  This is sometimes
% wanted in displayed equations, during which LaTeX will set fractions
% specified as \frac{x}{y} as "built-up" fractions (numerator and
% denominator at body text size).
 
\def\case#1#2{\hbox{$\frac{#1}{#2}$}}
 
% Permit author to typeset fractions set with solidus where the size
% is reduced and the numerals are oriented diagonally.  Note that this
% is different from a "shilled" fraction, which the author can produce
% without any special formatting markup.  Define markup shorthands for
% several common fractions using solidus.
 
\def\slantfrac#1#2{\hbox{$\,^#1\!/_#2$}}
\def\onehalf{\slantfrac{1}{2}}
\def\onethird{\slantfrac{1}{3}}
\def\twothirds{\slantfrac{2}{3}}
\def\onequarter{\slantfrac{1}{4}}
\def\threequarters{\slantfrac{3}{4}}
 
\def\ubvr{\hbox{$U\!BV\!R$}}            % UBVR system
\def\ub{\hbox{$U\!-\!B$}}               % U-B
\def\bv{\hbox{$B\!-\!V$}}               % B-V
\def\vr{\hbox{$V\!-\!R$}}               % V-R
\def\ur{\hbox{$U\!-\!R$}}               % U-R
 
% Notation for atomic species (ionization levels).  The ionization state
% is specified as the second argument, and should be given as a numeral.
% The macro has to expand the numeric state into the proper notation for
% the publication (roman, numeric, plus signs, etc.)
%
%    \ion{ELEMENT}{IONIZATION STATE}
 
\def\ion#1#2{#1$\;${\small\rm\@Roman{#2}}\relax}
 
% Centered ellipsis for use in tables (for unknown values).  \nodata
% is generalized markup for this notion: format of null-valued entries
% in tables is style-specific.
 
%\def\cellipsis{\hfill$\cdots$\hfill}
\def\nodata{\multicolumn{1}{c}{$\cdots$}}

%       End of stuff from AASTeX

%       Captions
%
%       There was a request that captions be in a smaller size than
%       the running text.  Here, it is set to \small.
\long\def\@makecaption#1#2{%
  \vskip 10pt
  \sbox\@tempboxa{\small #1: #2}%
  \ifdim \wd\@tempboxa >\hsize
    \small #1: #2\par
  \else
    \global \@minipagefalse
    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
  \fi
  \vskip 10pt} 

%
% end document here
