summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/sf298
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/sf298
Initial commit
Diffstat (limited to 'macros/latex/contrib/sf298')
-rw-r--r--macros/latex/contrib/sf298/Makefile95
-rw-r--r--macros/latex/contrib/sf298/README.txt55
-rw-r--r--macros/latex/contrib/sf298/sf298.dtx2386
-rw-r--r--macros/latex/contrib/sf298/sf298.ins100
-rw-r--r--macros/latex/contrib/sf298/sf298.pdfbin0 -> 417492 bytes
5 files changed, 2636 insertions, 0 deletions
diff --git a/macros/latex/contrib/sf298/Makefile b/macros/latex/contrib/sf298/Makefile
new file mode 100644
index 0000000000..63857045c7
--- /dev/null
+++ b/macros/latex/contrib/sf298/Makefile
@@ -0,0 +1,95 @@
+PACKAGE = sf298
+########################################################################
+## LaTeX2e Makefile
+##
+## Update the following defines for your local configuration,
+##
+CONTRIB = /usr/share/texmf/tex/latex/misc
+##
+CP = cp
+DVIPS = dvips -t letter
+GZIP = gzip
+LATEX = latex
+MAKEINDEX = makeindex
+PDFLATEX = pdflatex
+PS2PDF = ps2pdf
+RM = rm
+TAR = tar
+########################################################################
+## make [all] Generates the style (.sty) file, the doc and
+## test files (.ps) and cleans up the directory.
+## make [un]install Install or uninstall the style (.sty) file from
+## the CONTRIB area.
+## make [very]clean Clean out various auxillary files. "veryclean"
+## cleans out more stuff.
+########################################################################
+## make dvi Generate the *.dvi version of the documentation.
+## make [full]ps Generate the documentation. The "fullps" version
+## adds the change log and the cross-references.
+## make idx Generate the change log and the cross-references
+## (for fullps -- requires MAKEINDEX).
+## make sty Generate the style (.sty) file.
+## make pdf Generate the *.pdf version of the documentation.
+########################################################################
+## make test Runs test program(s).
+## make distribtion Builds a distribution (.tar.gz) file.
+########################################################################
+
+all: pdf test clean
+
+install: sty
+ $(CP) $(PACKAGE).sty $(CONTRIB)
+uninstall: ; -$(RM) -f $(CONTRIB)/$(PACKAGE).sty
+clean: ; -$(RM) -f *.dvi *.log *.aux *.lof *.lot *.lom *.toc
+ -$(RM) -f *.idx *.ind *.glo *.gls *.ilg *.out *~
+veryclean: clean
+ -$(RM) -f *.sty *.cls *.ps *.pdf *.gz *pk ltxdoc.cfg
+
+dvi: $(PACKAGE).dvi
+fullps: dvi idx ps
+idx: $(PACKAGE).ind $(PACKAGE).gls
+ $(LATEX) $(PACKAGE).dtx
+ $(LATEX) $(PACKAGE).dtx
+ps: $(PACKAGE).ps
+sty: $(PACKAGE).sty
+pdf: fullps
+ $(PS2PDF) $(PACKAGE).ps > $(PACKAGE).pdf
+
+test: $(PACKAGE).sty
+ $(LATEX) sample298.tex
+ $(LATEX) sample298.tex
+ $(DVIPS) -o sample298.ps sample298.dvi
+
+distribution: ; mkdir $(PACKAGE)
+ $(CP) -p Makefile $(PACKAGE).pdf $(PACKAGE)
+ $(CP) -p $(PACKAGE).dtx $(PACKAGE).ins $(PACKAGE)
+ $(TAR) -cvf $(PACKAGE).tar ./$(PACKAGE)
+ $(RM) -rf $(PACKAGE)
+ $(GZIP) -9 $(PACKAGE).tar
+
+
+$(PACKAGE).aux: $(PACKAGE).dtx $(PACKAGE).sty
+ $(LATEX) $(PACKAGE).dtx
+ $(LATEX) $(PACKAGE).dtx
+
+$(PACKAGE).dvi: $(PACKAGE).dtx $(PACKAGE).sty $(PACKAGE).aux
+ $(LATEX) $(PACKAGE).dtx
+ $(LATEX) $(PACKAGE).dtx
+
+$(PACKAGE).glo: $(PACKAGE).dtx $(PACKAGE).sty
+ $(LATEX) $(PACKAGE).dtx
+
+$(PACKAGE).gls: $(PACKAGE).glo
+ -$(MAKEINDEX) -s gglo.ist -o $(PACKAGE).gls $(PACKAGE).glo
+
+$(PACKAGE).idx: $(PACKAGE).dtx $(PACKAGE).sty
+ $(LATEX) $(PACKAGE).dtx
+
+$(PACKAGE).ind: $(PACKAGE).idx
+ -$(MAKEINDEX) -s gind.ist $(PACKAGE).idx
+
+$(PACKAGE).ps: $(PACKAGE).dvi
+ $(DVIPS) -o $(PACKAGE).ps $(PACKAGE).dvi
+
+$(PACKAGE).sty: $(PACKAGE).dtx $(PACKAGE).ins
+ $(LATEX) $(PACKAGE).ins
diff --git a/macros/latex/contrib/sf298/README.txt b/macros/latex/contrib/sf298/README.txt
new file mode 100644
index 0000000000..fe10e1ae37
--- /dev/null
+++ b/macros/latex/contrib/sf298/README.txt
@@ -0,0 +1,55 @@
+sf298 package
+-------------
+
+Authors
+-------
+Steven Douglas Cochran
+SVC HS Information Technology, M200 Scaife Hall
+3550 Terrace Street
+Pittsburgh, PA 15261, USA
+email: sdc18@pitt.edu
+(Original Author, versions 1.1 & 1.2)
+
+and
+
+Peter Andrew Rochford
+Acorn Science & Innovation, Inc.
+1616 Anderson Road, Suite 213
+McLean, VA 22102, USA
+email: prochford@acornsi.com
+(Author, version 1.3)
+
+Purpose
+-------
+The sf298 package provides for creating a filled-in copy of the standard form
+298 (Rev. 8/98), ``Report Documentation Page''. This form is used in announcing
+and cataloging reports submitted as deliverables on contracts with the U.S.
+Government. It is important that the information on the sf298 page be
+consistent with the rest of the report, particularly the cover and title page.
+Instructions for filling in each block of the form are given in the documentation
+file (sf298.pdf) distributed with the package. The macro \MakeRptDocPage causes
+the page to be printed. If the "twoside" option is specified in the
+documentclass, then it is printed as a separate page with a blank back. The
+macro \GeneralInstructions causes the page of general instructions that
+accompanies the form to be printed. This is typically inserted after the
+sf298 form.
+
+License
+-------
+Copyright (C) 2000,2004 Steven Douglas Cochran.
+
+The copyright remains with the above author.
+
+The sf298 package may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.2
+of this license or (at your option) any later version. The latest
+version of this license is in:
+ http://www.latex-project.org/lppl.txt
+and version 1.2 or later is part of all distributions of LaTeX
+version 1999/12/01 or later.
+
+The sf298 package is distributed in the hope that it will be
+useful, but `as is', WITHOUT WARRANTY OF ANY KIND, either expressed
+or implied, including, but not limited to, the implied warranties of
+MERCHANTABILITY and FITNESS FOR A PARTICULAR PURPOSE. See the LaTeX
+Project Public License for more details.
diff --git a/macros/latex/contrib/sf298/sf298.dtx b/macros/latex/contrib/sf298/sf298.dtx
new file mode 100644
index 0000000000..17779ae44c
--- /dev/null
+++ b/macros/latex/contrib/sf298/sf298.dtx
@@ -0,0 +1,2386 @@
+% \iffalse
+% Fill-in and print the Standard Form 298.
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% This is file `sf298.dtx', the documentation file for the `sf298'
+% package.
+%
+% Copyright (C) 2000,2004 Steven Douglas Cochran.
+%
+% The copyright remains with the above author.
+%
+% The sf298 package may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.2
+% of this license or (at your option) any later version. The latest
+% version of this license is in:
+% http://www.latex-project.org/lppl.txt
+% and version 1.2 or later is part of all distributions of LaTeX
+% version 1999/12/01 or later.
+%
+% The sf298 package is distributed in the hope that it will be
+% useful, but `as is', WITHOUT WARRANTY OF ANY KIND, either expressed
+% or implied, including, but not limited to, the implied warranties of
+% MERCHANTABILITY and FITNESS FOR A PARTICULAR PURPOSE. See the LaTeX
+% Project Public License for more details.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% @LaTeX-style-file{
+% Author = "Peter A. Rochford",
+% Version = "1.3",
+% Date = "2016/7/7",
+% Time = "11:38:00",
+% Filename = "sf298.sty",
+% Address = "Acorn Science & Innovation, Inc.
+% 1616 Anderson Road, Suite 213
+% McLean, VA 22102, USA",
+% Telephone = "+1 703-995-9872",
+% Email = "prochford@acornsi.com",
+% Abstract = "Extension of the LaTeX package to optionally provide the page of
+% General Instructions. Also fixed known bug when using \usepackage{totpages}.''
+%
+% Author = "Steven Douglas Cochran",
+% Version = "1.2",
+% Date = "2004/12/22",
+% Time = "10:33:25",
+% Filename = "sf298.sty",
+% Address = "SVC HS Information Technology, M200 Scaife Hall
+% 3550 Terrace Street
+% Pittsburgh, PA 15261, USA",
+% Telephone = "+1 412.624.9282",
+% FAX = "+1 412.648.8865",
+% Email = "sdc18@pitt.edu",
+% CodeTable = "ISO/ASCII",
+% Keywords = "LaTeX, standard forms, sf298, report documentation",
+% Supported = "yes",
+% Abstract = "LaTeX package for generating a completed standard
+% form 298 (Rev.\ 8/98) as prescribed by ANSI
+% Std.\ Z39.18 for report documentation, for instance,
+% as part of a document delivered on a U.S. Government
+% contract.''
+% }
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{sf298.dtx}
+\documentclass[letterpaper]{ltxdoc}
+\usepackage{totpages} % needed to provide total number of pages in SF298
+\def\CurrentOption{} % fix bug in totpages
+\usepackage[noconfig]{sf298}
+\usepackage{afterpage}
+\advance\textheight2\baselineskip
+\setlength\hfuzz{26pt}
+
+\usepackage[textwidth=\textwidth,textheight=\textheight]{geometry} % needed to change textwidth for \GeneralInstructions
+%</driver>
+%
+%<*ltxdoc>
+\AtBeginDocument{
+ \EnableCrossrefs
+ \RecordChanges
+ \CodelineIndex}
+\AtEndDocument{
+ \PrintChanges
+ \PrintIndex}
+\begin{document}
+ \DocInput{sf298.dtx}
+\end{document}
+%</ltxdoc>
+%
+% \fi
+%
+% \newcommand*{\Lopt}[1]{\textsf{#1}}
+% \newcommand*{\Lfile}[1]{\texttt{#1}}
+% \newcommand*{\Lpack}[1]{\textsf{#1}}
+%
+% \changes{v1.0}{11 Jan 2000}{Initial revision.}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \DoNotIndex{\ ,\(,\),\@car,\@date,\@empty,\@gobble,\@ifnextchar}
+% \DoNotIndex{\@ifundefined,\@nil,\@tempa,\@tempboxa,\@tempskipa}
+% \DoNotIndex{\@viiipt,\@vpt,\@vipt,\@xipt,\@xivpt,\@warning,\@xpt,\\}
+% \DoNotIndex{\2,\AtEndDocument,\addtocounter,\advance,\arabic}
+% \DoNotIndex{\baselineskip,\baselinestretch,\begin,\bf,\c@page}
+% \DoNotIndex{\cleardoublepage,\csname,\date,\day,\DeclareFixedFont}
+% \DoNotIndex{\def,\documentclass,\documentpackage,\edef,\else,\end}
+% \DoNotIndex{\endcsname,\evensidemargin,\ExecuteOptions,\expandafter}
+% \DoNotIndex{\fi,\font,\fontdimen,\footnote,\framebox,\global,\hbox}
+% \DoNotIndex{\headheight,\headsep,\hrule,\hskip,\hss,\if,\if@twoside}
+% \DoNotIndex{\ifdim,\IfFileExists,\ifodd,\ifx,\InputIfFileExists,\LARGE}
+% \DoNotIndex{\large,\leftskip,\let,\line,\lineskip,\linethickness}
+% \DoNotIndex{\linewidth,\makeatletter,\makeatother,\makebox,\maketitle}
+% \DoNotIndex{\month,\NeedsTeXFormat,\newcommand,\newcounter,\newif}
+% \DoNotIndex{\newpage,\noindent,\normalbaselineskip,\null,\number}
+% \DoNotIndex{\oddsidemargin,\pagenumbering,\pagestyle,\par,\parbox,\phantom}
+% \DoNotIndex{\ProvidesPackage,\put,\r@TotPages,\raggedright,\relax}
+% \DoNotIndex{\renewcommand,\rightskip,\rule,\section,\setcounter}
+% \DoNotIndex{\setbox,\setlength,\shortstack,\space,\spaceskip,\string}
+% \DoNotIndex{\tableofcontents,\textheight,\textwidth,\thispagestyle}
+% \DoNotIndex{\topmargin,\tt,\typeout,\unitlength,\usepackage,\value}
+% \DoNotIndex{\vbox,\vfil,\voffset,\vskip,\vss,\wd,\xspaceskip,\year}
+%
+% \newcommand{\ie}{{\it i.e.\/}}
+%
+% \def\filename{sf298.dtx}
+% \def\fileversion{1.3}
+% \def\filedate{2016/7/7}
+% \def\docdate {2016/7/7}
+% \makeatletter
+% \def\drawform{\sf@drawform}
+% \def\@oddfoot{%
+% \rm
+% \hfill
+% \@ifundefined{r@fig:form}%
+% {thepage}%
+% {\@tempcnta\pageref{fig:form}
+% \ifnum \c@page=\@tempcnta \else
+% \thepage
+% \fi}%
+% \hfill}
+% \let\@evenfoot\@oddfoot
+% \makeatother
+%
+% \CheckSum{1457}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \title{The \Lpack{sf298} Package\footnote{This paper documents
+% the \Lpack{sf298} package v\fileversion, last revised \filedate.}}
+% \author{
+% Steven Douglas Cochran\\[5pt]
+% SVC HS Information Technology, M200 Scaife Hall \\
+% 3550 Terrace Street \\
+% Pittsburgh, PA 15261, USA\\[5pt]
+% \texttt{sdc18@pitt.edu}
+% \and\\[5pt]
+% Peter Andrew Rochford\\[5pt]
+% Acorn Science \& Innovation, Inc. \\
+% 1616 Anderson Road, Suite 213 \\
+% McLean, VA 22102, USA\\[5pt]
+% \texttt{prochford@acornsi.com}
+% }
+% \date{\docdate}
+% \maketitle
+% \vspace{-20pt}
+% \begin{abstract}
+% \noindent
+% This article documents the \LaTeX\ package for generating a completed
+% standard form 298 (Rev.\ 8/98) as prescribed by ANSI Std.\ Z39.18 for
+% report documentation, for instance, as part of a document delivered on
+% a U.S. Government contract. The latest revision includes the option of
+% inserting the General Instructions page that typically appears after the
+% form.
+%
+%\end{abstract}
+%
+% \setcounter{tocdepth}{2}
+% \tableofcontents
+%
+% \section{Introduction}
+% \begin{figure}
+% \ReportDate{}
+% \DistributionStatement{}
+% \ReportClassification{}
+% \AbstractClassification{}
+% \PageClassification{}
+% \AbstractLimitation{}
+% \NumberPages{}
+% \Abstract{\hfill Figure~\ref{fig:form}: Blank Special Form 298
+% (Report Documentation Page).\hfill\null}
+% \refstepcounter{figure}
+% \label{fig:form}
+% \vbox to \textheight{%
+% \vspace{-78pt}%
+% \hbox to \textwidth{%
+% \hspace{-130pt}%
+% \drawform
+% \hss}%
+% \vss}
+% \end{figure}
+%
+% The \Lpack{sf298} package provides for creating a filled-in copy of
+% the standard form 298 (Rev.\ 8/98), ``Report Documentation Page''
+% (shown in Figure~\ref{fig:form}). This form is used in announcing and
+% cataloging reports submitted as deliverables on contracts with the
+% U.S. Government. It is important that the information on the sf298
+% page be consistent with the rest of the report, particularly the cover
+% and title page. Instructions for filling in each block of the form
+% are given below. The macro \cmd{\MakeRptDocPage} causes the page to be
+% printed. If the \Lopt{twoside} option is specified in the
+% documentclass, then it is printed as a separate page with a blank
+% back. The macro \cmd{\GeneralInstructions} causes the page of general
+% instructions that accompanies the form to be printed. This is typically inserted
+% after the |sf298| form.
+%
+% If you are changing the base font families for your paper (\eg, you
+% load the \Lpack{times} package to use the PostScript fonts) and you
+% want the fonts used on the |sf298| to change also, then you must
+% change the font families before loading the \Lpack{sf298} package (see
+% section~\ref{sec:configfont}).
+%
+% The package takes two sets of options: The \Lopt{config} option (default),
+% causes it to check for a configuration file, while \Lopt{noconfig} disables
+% this check (see section~\ref{sec:configfile}); The
+% \Lopt{nofloatlongboxes} option (default) causes the package to generate
+% the fixed standard form, while the \Lopt{floatlongboxes} option causes
+% boxes 12--15 to distribute their vertical spacing in order to handle
+% special cases such as a very long supplementary note in box 13.
+%
+% A sample report is given in section~\ref{sec:sample} that shows one
+% approach to using the \Lpack{sf298} package.
+%
+% \section{The Individual Fields}
+% \changes{v1.2}{22 Dec 2004}{Added note about the \Lopt{floatlongboxes}
+% option.}
+%
+% There are nineteen fields, three with multiple sub-fields, on the
+% sf298. The following macros, each having a single argument, define
+% the data to be included in each field. Usually only a few fields will
+% apply to a given report. Table~\ref{tab:attributes} notes which
+% fields are required and which have default values. It also gives an
+% approximate number of lines and characters per line that will fit into
+% each block (for the Computer Modern Roman font family, PostScript Times
+% Roman or other fonts will differ). The best approach to insure that
+% the form is properly filled-in is to preview the page and adjust any
+% fields that appear to have a problem.
+%
+% A few fields allow a partial extra line along the top of the box. The
+% last two columns of Table~\ref{tab:attributes} shows the offset needed
+% to add such an extra line. To use this extra space, you must already
+% have used up the maximum number of (regular) lines for this field and
+% you must begin the argument with an \cmd{\hspace} of the size of the
+% indicated {\bf Skip}. The last {\bf Chars.} column gives the approximate
+% amount of extra characters that you can add.
+%
+% \begin{table}
+% \null\vspace{-.1in}
+% \def\n{\hfill{\bf ---}\hfill\null}
+% \def\d#1#2{\smash{\lower#1\hbox{#2}}}
+% \def\p{\phantom{0}}
+% \def\s#1{{\footnotesize (#1)}}
+% \def\S#1{%
+% \ifnum#1<10
+% {\footnotesize \phantom{0}(#1)}%
+% \else
+% \s{#1}%
+% \fi}
+% \def\z#1{\hbox to 0pt{#1\hss}\p\p\p}
+% \doublerulesep.5pt
+% \arrayrulewidth.5pt
+% \caption{Field Attributes and Approximate Maximum Size.}
+% \label{tab:attributes}
+% \vspace{10pt}
+% \DeleteShortVerb{\|}
+% \hbox to 1.1\textwidth{%
+% \hss
+% \begin{tabular}{rlcccccc} \hline\hline
+% \multicolumn{1}{c}{\rule{0pt}{14pt}\bf Field}
+% & \multicolumn{1}{c}{\d{1ex}{\bf Macro Name}}
+% & \multicolumn{1}{c}{\d{1ex}{\bf Required}}
+% & \multicolumn{1}{l}{\bf Default}
+% & \multicolumn{1}{c}{\bf Max}
+% & \multicolumn{1}{c}{{\bf Chars.}\d{-2.5pt}{\s{6}}}
+% & \multicolumn{2}{c}{\d{-2pt}{{\bf Extra Space}\d{-2.5pt}{\s{8}}}}
+% \\ \cline{7-8}
+% \multicolumn{1}{c}{\rule[-7pt]{0pt}{7pt}\bf Number}
+% & & & \multicolumn{1}{l}{{\bf Value}\d{-2.5pt}{\s{1}}}
+% & \multicolumn{1}{c}{\bf Lines}
+% & \multicolumn{1}{c}{\bf per Line}
+% & \multicolumn{1}{c}{\d{2pt}{{\bf Skip}\d{-2.5pt}{\s{7}}}}
+% & \multicolumn{1}{c}{\d{2pt}{{\bf Chars.}\d{-2.5pt}{\s{6}}}}
+% \\ \hline\rule{0pt}{14pt}
+% 1\z{} & \cmd{\ReportDate} & Yes &\s{2}& \p1 & \p31 & \n & \n \\
+% 2\z{} & \cmd{\ReportType} & Yes & \n & \p1 & \p46 & \n & \n \\
+% 3\z{} & \cmd{\DatesCovered} & Yes & \n & \p1 & \p39 & \n & \n \\
+% 4\z{} & \cmd{\Title} & Yes & \n & \p7 & \p72 & 35mm & \p48 \\
+% 5\z{a} & \cmd{\ContractNumber} & \n & \n & \p1 & \p46 & \n & \n \\
+% 5\z{b} & \cmd{\GrantNumber} & \n & \n & \p1 & \p46 & \n & \n \\
+% 5\z{c} & \cmd{\ProgramElementNumber} & \n & \n & \p1 & \p46 & \n & \n \\
+% 5\z{d} & \cmd{\ProjectNumber} & \n & \n & \p1 & \p46 & \n & \n \\
+% 5\z{e} & \cmd{\TaskNumber} & \n & \n & \p1 & \p46 & \n & \n \\
+% 5\z{f} & \cmd{\WorkUnitNumber} & \n & \n & \p1 & \p46 & \n & \n \\
+% 6\z{} & \cmd{\Author} & Yes & \n & \p7 & \p72 & 22mm & \p58 \\
+% 7\z{} & \cmd{\PerformingOrg} & Yes & \n & \p4 & \p81 & \n & \n \\
+% 8\z{} & \cmd{\POReportNumber} & \n & \n & \p4 & \p39 & 18mm & \p26 \\
+% 9\z{} & \cmd{\SponsoringAgency} & Yes & \n & \p5 & \p81 & \n & \n \\
+% 10\z{} & \cmd{\Acronym} & \n & \n & \p2 & \p30 & \n & \n \\
+% 11\z{} & \cmd{\SMReportNumber} & \n & \n & \p1 & \p39 & 23mm & \p23 \\
+% 12\z{} & \cmd{\DistributionStatement} \s{9} & \n &\s{3}& \p3 & 120 & 70mm & \p75 \\
+% 13\z{} & \cmd{\SupplementaryNotes} \s{9} & \n & \n & \p2 & 120 & 45mm & \p92 \\
+% 14\z{} & \cmd{\Abstract} \s{9} & Yes & \n & 10 & 120 & 22mm & 105 \\
+% 15\z{} & \cmd{\SubjectTerms} \s{9} & \n & \n & \p3 & 125 & 32mm & 103 \\
+% 16\z{a} & \cmd{\ReportClassification} & Yes &\s{4}& \p1 & \p\p9 & \n & \n \\
+% 16\z{b} & \cmd{\AbstractClassification} & Yes &\s{4}& \p1 & \p\p9 & \n & \n \\
+% 16\z{c} & \cmd{\PageClassification} & Yes &\s{4}& \p1 & \p\p9 & \n & \n \\
+% 17\z{} & \cmd{\AbstractLimitation} & \n &\s{5}& \p1 & \p12 & \n & \n \\
+% 18\z{} & \cmd{\NumberPages} & Yes & \n & \p1 & \p\p8 & \n & \n \\
+% 19\z{a} & \cmd{\ResponsiblePerson} & \n & \n & \p1 & \p41 & \n & \n \\ \rule[-7pt]{0pt}{7pt}
+% 19\z{b} & \cmd{\RPTelephone} & \n & \n & \p1 & \p41 & \n & \n \\ \hline\hline
+% \multicolumn{8}{l}{\rule{0pt}{14pt}{\bf Notes:}} \\
+% \multicolumn{8}{l}{\quad\S{1} All defaults may be overridden by specifying a
+% value. Custom defaults may be assigned using a} \\
+% \multicolumn{8}{l}{\quad\phantom{\S{1}} configuration file (see
+% section~\ref{sec:configfile})}. \\
+% \multicolumn{8}{l}{\quad\S{2} Defaults to the current date (in dd-mm-yyyy
+% format).} \\
+% \multicolumn{8}{l}{\quad\S{3} Defaults to ``Approved for public release;
+% distribution is unlimited''}. \\
+% \multicolumn{8}{l}{\quad\S{4} Defaults to ``U'' (Unclassified)}. \\
+% \multicolumn{8}{l}{\quad\S{5} Defaults to ``UU'' (Unclassified Unlimited).} \\
+% \multicolumn{8}{l}{\quad\phantom{\S{1}} otherwise, there is no default (see
+% section~\ref{sec:configpage}).} \\
+% \multicolumn{8}{l}{\quad\S{6} The number of characters is approximate and for
+% the Computer Modern Roman font family only.} \\
+% \multicolumn{8}{l}{\quad\S{7} Amount to indent the extra first line,
+% \eg, \cmd{\Title}\{\cmd{\hspace}\{37mm\} \dots text\dots\}.} \\
+% \multicolumn{8}{l}{\quad\S{8} More text may be placed in these blocks by
+% adjusting the font family or size and/or changing} \\
+% \multicolumn{8}{l}{\quad\phantom{\S{8}} the interline gap (see
+% \cmd{\PerformingOrg} in sections~\ref{sec:configfile} and
+% \ref{sec:sample} for an example).} \\
+% \multicolumn{8}{l}{\quad\S{9} If the \Lopt{floatlongboxes} option is set
+% when loading the pacakage, then this box may hold more or} \\
+% \multicolumn{8}{l}{\quad\phantom{\S{9}} less than indicated in this table,
+% however the extra space sizes are still valid.}
+% \end{tabular}%
+% \hskip-5mm}
+% \vspace{.1in}
+% \MakeShortVerb{\|}
+% \end{table}
+%
+% For those blocks that allow more than one line (see
+% Table~\ref{tab:attributes}), the text argument will automatically be
+% broken to fit the box and the paragraph is usually vertically centered
+% and left justified. You can use ``|\\|'' (newline) to override the
+% default linebreaking, if desired (see section~\ref{sec:configfile} for
+% an example).
+%
+% \newpage
+% \paragraph{1. REPORT DATE.}
+% \DescribeMacro{\ReportDate}
+%
+% \noindent
+% Full publication date including day and month, if available.
+% Must cite at least the year and be Year 2000 compliant, \eg
+% \par\null\noindent
+% \begin{tabular}{llll}
+% ~~ & {\tt \cmd{\ReportDate}\{30--06--1998\}} & $\rightarrow$ & 30--06--1998 \\
+% ~~ & {\tt \cmd{\ReportDate}\{xx--06--1998\}} & $\rightarrow$ & xx--06--1998 \\
+% ~~ & {\tt \cmd{\ReportDate}\{xx--xx--1998\}} & $\rightarrow$ & xx--xx--1998
+% \end{tabular}
+% \par\null\noindent
+% This field is required, but will default to the current date.
+%
+% \paragraph{2. REPORT TYPE.}
+% \DescribeMacro{\ReportType}
+%
+% \noindent
+% State the type of report, such as final, technical, interim,
+% memorandum, master's thesis, progress, quarterly, research, special,
+% group study, {\it etc\@.\/} This field is required.
+%
+% \paragraph{3. DATES COVERED.}
+% \DescribeMacro{\DatesCovered}
+%
+% \noindent
+% Indicate the time during which the work was performed and the report
+% was written, \eg,
+% \par\null\noindent
+% \begin{tabular}{llll}
+% ~~ & {\tt \cmd{\DatesCovered}\{Jun 1997--Jun 1998\}} & $\rightarrow$ & Jun 1997--Jun 1998 \\
+% ~~ & {\tt \cmd{\DatesCovered}\{1--10 Jun 1996\}} & $\rightarrow$ & 1--10 Jun 1996 \\
+% ~~ & {\tt \cmd{\DatesCovered}\{May--Nov 1998\}} & $\rightarrow$ & May--Nov 1998 \\
+% ~~ & {\tt \cmd{\DatesCovered}\{Nov 1998\}} & $\rightarrow$ & Nov 1998
+% \end{tabular}
+% \par\null\noindent
+% The month and year for at least one month are required.
+%
+% \paragraph{4. TITLE AND SUBTITLE.}
+% \DescribeMacro{\Title}
+%
+% \noindent
+% A title is taken from the part of the report that provides the most
+% meaningful and complete information. When a report is prepared in
+% more than one volume, repeat the primary title, add volume number, and
+% include subtitle for the specific volume. On classified documents enter
+% the title classification in parentheses. This field is required.
+%
+% \paragraph{5a. CONTRACT NUMBER.}
+% \DescribeMacro{\ContractNumber}
+%
+% \noindent
+% Enter all contract numbers as they appear in the report, \eg
+%
+% \par\null\noindent
+% \begin{tabular}{llll}
+% ~~ & {\tt \cmd{\ContractNumber}\{F33615--86--C--5169\}} & $\rightarrow$ & F33615--86--C--5169
+% \end{tabular}
+%
+% \paragraph{5b. GRANT NUMBER.}
+% \DescribeMacro{\GrantNumber}
+%
+% \noindent
+% Enter all grant numbers as they appear in the report, \eg
+%
+% \par\null\noindent
+% \begin{tabular}{llll}
+% ~~ & {\tt \cmd{\GrantNumber}\{AFOSR--82--1234\}} & $\rightarrow$ & AFOSR--82--1234
+% \end{tabular}
+%
+% \paragraph{5c. PROGRAM ELEMENT NUMBER.}
+% \DescribeMacro{\ProgramElementNumber}
+%
+% \noindent
+% Enter all program element numbers as they appear in the report, \eg
+%
+% \par\null\noindent
+% \begin{tabular}{llll}
+% ~~ & {\tt \cmd{\ProgramElementNumber}\{61101A\}} & $\rightarrow$ & 61101A
+% \end{tabular}
+%
+% \paragraph{5d. PROJECT NUMBER.}
+% \DescribeMacro{\ProjectNumber}
+%
+% \noindent
+% Enter all project numbers as they appear in the report, \eg
+%
+% \par\null\noindent
+% \begin{tabular}{llll}
+% ~~ & {\tt \cmd{\ProjectNumber}\{1F665702D1257; ILIR\}} & $\rightarrow$ & 1F665702D1257; ILIR
+% \end{tabular}
+%
+% \paragraph{5e. TASK NUMBER.}
+% \DescribeMacro{\TaskNumber}
+%
+% \noindent
+% Enter all task numbers as they appear in the report, \eg
+%
+% \par\null\noindent
+% \begin{tabular}{llll}
+% ~~ & {\tt \cmd{\TaskNumber}\{05; RF0330201; T4112\}} & $\rightarrow$ & 05; RF0330201; T4112
+% \end{tabular}
+%
+% \paragraph{5f. WORK UNIT NUMBER.}
+% \DescribeMacro{\WorkUnitNumber}
+%
+% \noindent
+% Enter all work unit numbers as they appear in the report, \eg
+%
+% \par\null\noindent
+% \begin{tabular}{llll}
+% ~~ & {\tt \cmd{\WorkUnitNumber}\{001; AFAPL30480105\}} & $\rightarrow$ & 001; AFAPL30480105
+% \end{tabular}
+%
+% \paragraph{6. AUTHOR(S).}
+% \DescribeMacro{\Author}
+%
+% \noindent
+% Enter name(s) of the person(s) responsible for writing the report,
+% performing the research, or credited with the content of the report.
+% The form of entry is the last name, first name, middle initial, and
+% additional qualifiers separated by commas, \eg
+% \par\null\noindent
+% \begin{tabular}{llll}
+% ~~ & {\tt \cmd{\Author}\{Smith, Richard, J, Jr\}} & $\rightarrow$ & Smith, Richard, J, Jr
+% \end{tabular}
+% \par\null\noindent
+% If editor or compiler, this should follow the name(s).
+%
+% \paragraph[7. PERFORMING ORGANIZATION NAME(S) AND ADDRESS(ES).]
+% {\hbox to 1in{7. PERFORMING ORGANIZATION NAME(S) AND ADDRESS(ES).\hss}}
+% \DescribeMacro{\PerformingOrg}
+%
+% \noindent
+% Self-explanatory. This field is one of the best examples of one that
+% may be defined in a configuration file that may be used for many
+% papers. For an example of how to use a configuration file, see
+% section~\ref{sec:configfile}.
+%
+% \paragraph{8. PERFORMING ORGANIZATION REPORT NUMBER.}
+% \DescribeMacro{\POReportNumber}
+%
+% \noindent
+% Enter the unique alphanumeric report number(s) assigned by the
+% performing organization, \eg
+% \par\null\noindent
+% \begin{tabular}{llll}
+% ~~ & \multicolumn{3}{l}{\tt \cmd{\POReportNumber}\{BRL--1234; AFWL--TR--85--4017--Vol21--PT--2\}} \\
+% & \hspace{1in} & $\rightarrow$ & BRL--1234; AFWL--TR--85--4017--Vol21--PT--2
+% \end{tabular}
+%
+% \paragraph{9. SPONSORING/MONITORING AGENCY NAME(S) AND ADDRESS(ES).}
+% \DescribeMacro{\SponsoringAgency}
+%
+% \noindent
+% Enter the name and address of the organization(s) financially
+% responsible for and monitoring the work. If it is desired to place
+% two organizations in this field, then they may be split up in two
+% different ways, the first is to use two 2-line addresses with (for
+% example) a % ``|\\[10pt]|'' line break after the first address to show
+% both % the sponsoring and the monitoring agency addresses. The second
+% method is to place the addresses in a |tabular| environment. An
+% example of both methods is shown below.
+% \begin{verbatim}
+% \SponsoringAgency{%
+% U.S. Government Sponsoring Department \\
+% P.O. Box 92919, Miltown, AK 97909--6543 \\[10pt]
+% U.S. Army Monitoring Agency \\
+% 909 Mission Rd., Somecity, MD 29399--9753}
+% \end{verbatim}
+% \begin{verbatim}
+% \SponsoringAgency{%
+% \begin{tabular}{@{}l@{\hspace{5mm}}l@{}}
+% U.S. Government Sponsoring Dept. & U.S. Government Monitoring Agency \\
+% P.O. Box 92919 & 909 Mission Rd. \\
+% Miltown, AK 97909--6543 & Somecity, MD 29399--9753
+% \end{tabular}}
+% \end{verbatim}
+% These give the following, respectively:
+% \par\null\noindent
+% \frame{\vbox to 72.8pt{%
+% \vfil
+% \parbox{364.2pt}{%
+% U.S. Government Sponsoring Dept. \\
+% P.O. Box 92919, Miltown, AK 97909--6543 \\[10pt]
+% U.S. Government Monitoring Agency \\
+% 909 Mission Rd., Somecity, MD 29399--9753}%
+% \vfil}}
+% \par\null\noindent
+% \frame{\vbox to 72.8pt{%
+% \vfil
+% \parbox{364.2pt}{%
+% \begin{tabular}{@{}l@{\hspace{5mm}}l@{}}
+% U.S. Government Sponsoring Dept. & U.S. Government Monitoring Agency \\
+% P.O. Box 92919 & 909 Mission Rd. \\
+% Miltown, AK 97909--6543 & Somecity, MD 29399--9753
+% \end{tabular}}
+% \vfil}}
+%
+% \paragraph{10. SPONSOR/MONITOR'S ACRONYM(S).}
+% \DescribeMacro{\Acronyms}
+%
+% \noindent
+% Enter any acronym(s) that pertain to the Sponsor/Monitor, separated
+% with commas, if available, \eg
+% \par\null\noindent
+% \begin{tabular}{llll}
+% ~~ & {\tt \cmd{\Acronyms}\{BRL, ARDEC, NADC\}} & $\rightarrow$ & BRL, ARDEC, NADC
+% \end{tabular}
+%
+% \paragraph{11. SPONSOR/MONITOR'S REPORT NUMBER(S).}
+% \DescribeMacro{\SMReportNumber}
+%
+% \noindent
+% Enter the report number(s) as assigned by the sponsoring/monitoring
+% agency, if available, \eg
+% \par\null\noindent
+% \begin{tabular}{llll}
+% ~~ & {\tt \cmd{\SMReportNumber}\{BRL-TR--829\}} & $\rightarrow$ & BRL-TR--829
+% \end{tabular}
+%
+% \paragraph{12. DISTRIBUTION/AVAILABILITY STATEMENT.}\hskip-3mm%
+% \footnote{The \Lopt{floatlongboxes} option may shrink or enlarge this
+% box vertically as it equalizes the vertical space for boxes 12--15.}
+% \DescribeMacro{\DistributionStatement}
+% \changes{v1.2}{22 Dec 2004}{Added note about the \Lopt{floatlongboxes}
+% option.}
+%
+% \noindent
+% Use agency-mandated availability statements to indicated the public
+% availability or distribution limitations of the report. If additional
+% limitations/restrictions or special markings are indicated follow
+% agency authorization procedures, \eg, RD/FRD, PROPIN, ITAR.
+% Include copyright information. This field is {\bf not} required, but will
+% default to the first of the following examples:
+% \par\null\noindent
+% ``Approved for public release; distribution is unlimited.''
+% \par\null\noindent
+% ``Distribution authorized to DoD only; (reason and date). Other
+% requests shall be referred to (controlling DoD office).''
+% \par\null\noindent
+% ``Further dissemination only as directed by (controlling DoD office
+% and date) or higher DoD authority.''
+% \par\null\noindent
+% \hbox to \textwidth{%
+% \begin{tabular}{l@{\space---\space}l}
+% For DoD & See DoDD 5230.24, ``Distribution Statements on Technical
+% Documents.''\\
+% For DoE & See authorities.\\
+% For NASA & See Handbook NHB 2200.2.\\
+% For NTIS & Leave blank.
+% \end{tabular}%
+% \hss}
+%
+% \paragraph{13. SUPPLEMENTARY NOTES.}\hskip-3mm\addtocounter{footnote}{-1}\footnotemark
+% \DescribeMacro{\SupplementaryNotes}
+% \changes{v1.2}{22 Dec 2004}{Added note about the \Lopt{floatlongboxes}
+% option.}
+%
+% \noindent
+% Enter information not included elsewhere such as: ``Prepared in
+% cooperation with\dots''; ``Translation of\dots''; ``To be published
+% in\dots''. When a report is revised, include a statement whether the
+% new report supersedes or supplements the older report and the older
+% report number if different. ARO requires the following text:
+% \begin{verse}\noindent
+% ``The views, opinions and/or findings contained in this report
+% are those of the authors and should not be construed as an
+% official Department of Army position, policy or decision, unless
+% so designated by other documentation.''
+% \end{verse}
+%
+% \paragraph{14. ABSTRACT.}\hskip-3mm{\addtocounter{footnote}{-1}\footnotemark
+% \DescribeMacro{\Abstract}
+% \changes{v1.2}{22 Dec 2004}{Added note about the \Lopt{floatlongboxes}
+% option.}
+%
+% \noindent
+% Include a brief (approximately 200 words) factual summary of
+% the most significant information contained in the report. This field
+% is required.
+%
+% \paragraph{15. SUBJECT TERMS.}\hskip-3mm\addtocounter{footnote}{-1}\footnotemark
+% \DescribeMacro{\SubjectTerms}
+% \changes{v1.2}{22 Dec 2004}{Added note about the \Lopt{floatlongboxes}
+% option.}
+%
+% \noindent
+% Enter keywords or phrases identifying major subjects in the report.
+% Separate key words and phrases with semicolons (;).
+%
+% \paragraph{16a. REPORT SECURITY CLASSIFICATION.}
+% \DescribeMacro{\ReportClassification}
+%
+% \noindent
+% Enter U.S.\ Security Classification in accordance with U.S.\ Security
+% Regulations, \eg\ U, C, S, etc. If this form contains classified
+% information, stamp classification level on the top and bottom of the
+% page. This field is required, but will default to ``U'' (Unclassified).
+%
+% \paragraph{16b. ABSTRACT SECURITY CLASSIFICATION.}
+% \DescribeMacro{\AbstractClassification}
+%
+% \noindent
+% See 16a (above).
+%
+% \paragraph{16c. THIS PAGE SECURITY CLASSIFICATION.}
+% \DescribeMacro{\PageClassification}
+%
+% \noindent
+% See 16a (above).
+%
+% \paragraph{17. LIMITATION OF ABSTRACT.}
+% \DescribeMacro{\AbstractLimitation}
+%
+% \noindent
+% This block must be completed to assign a distribution limitation to
+% the abstract. Enter either ``UU'' (Unclassified Unlimited) or ``SAR''
+% (same as report). An entry in this block is necessary if the abstract
+% is to be limited. If blank, the abstract is assumed to be unlimited.
+% This field is {\bf not} required, but defaults to ``UU''.
+%
+% \paragraph{18. NUMBER OF PAGES.}
+% \DescribeMacro{\NumberPages}
+% \DescribeMacro{\NumberPages*}
+%
+% \noindent
+% Enter the total number of pages (including including Roman numerals).
+% This field is required. The current implementation of the \Lpack{sf298}
+% package uses the \Lpack{totpages} package that is now commonly
+% available with standard \LaTeX\ distributions or can be easily obtained
+% from Internet accessible package distribution sites such as the
+% The Com­pre­hen­sive TeX Archive Net­work (CTAN) (https://www.ctan.org/).
+% You may ignore this field and a value will be entered on the page after the
+% processing of the document with \LaTeX. As with labels and citations
+% referenced in the document, a message will be printed if \LaTeX\ must
+% be run again to propagate a correct label value to the sf298 form. If
+% a value is given with this macro, then it {\bf will} be the one used
+% on the form.
+%
+% There is also a star version of the \cmd{\NumberPages} macro that is
+% only used with the \Lpack{totpages} package. This adds the given
+% number of pages to the result rather than directly setting the page
+% number. This macro is used when you are inserting a known number of
+% pages, say for an appendix, into the document.
+%
+% \paragraph{19a. NAME OF RESPONSIBLE PERSON.}
+% \DescribeMacro{\ResponsiblePerson}
+%
+% \noindent
+% Enter the name of the person responsible for submission of the
+% document.
+%
+% \paragraph{19b. TELEPHONE NUMBER OF RESPONSIBLE PERSON.}
+% \DescribeMacro{\RPTelephone}
+%
+% \noindent
+% Enter the telephone number of the person responsible for the
+% submission of the document (including area code).
+%
+% \section{SF298 Form}
+% \changes{v1.3}{23 Jun 2016}{Added section describing how to insert the Special
+% Form 298 into the document.}
+%
+% The macro \cmd{\ReportDescription} will insert the standard form 298 on a
+% separate page at the location where it appears. This will produce the Report
+% Documentation page as appears earlier in this document.
+%
+% \section{General Instructions Page}
+% \changes{v1.3}{20 Jun 2016}{Added section describing the option to
+% add a General Instructions page.}
+%
+% Some government organizations require that a General Instructions
+% page be included after the standard form 298. The macro
+% \cmd{\GeneralInstructions\{\Lopt{typesize}\}} causes the page to be printed
+% according to a generic type size, \eg \Lopt{footnotesize}. The \Lopt{typesize}
+% argument was implemented to allow the end user control over the print size
+% of the general instructions.
+%
+% The\cmd{\GeneralInstructions} command need simply be inserted into your
+% \LaTeX\ document after the \cmd{\MakeRptDocPage} command. This will
+% result in the following page appearing in the document.
+%
+% \newgeometry{textheight=1.1\textheight}
+% \GeneralInstructions{small}
+% \restoregeometry
+%
+% \section{Configuration}
+% \enlargethispage{24pt}
+%
+% In order to make the use of the report documentation page as easy as
+% possible, several aspects of the package are automated or can be easily
+% configured.
+%
+% \subsection{Fonts}
+% \label{sec:configfont}
+%
+% When the package is loaded it defines the fonts that are used by
+% basing them on the font families \cmd{\sfdefault} for the field labels and
+% \cmd{\rmdefault} for the text entries. By default, they will be based on
+% the Computer Modern font family. If you are changing the base font
+% families for your paper and you want the fonts used on the |sf298| to
+% change also, then you must change the font families before loading the
+% \Lpack{sf298} package. See \cite[pages 229,236]{Kopk-Daly93} for more
+% information about the default font families.
+%
+% For any specific field, you can override the default font by
+% declaring your preferred value along with your entry, \eg
+% \par\null\noindent
+% \begin{tabular}{llll}
+% ~~ & {\tt \cmd{\Title}\{\cmd{\Huge} A Huge Title\}} & $\rightarrow$ & \smash{\Huge\lower.5ex\hbox{A Huge Title}}
+% \end{tabular}
+%
+% \subsection{Configuration file}
+% \label{sec:configfile}
+%
+% When the package is loaded, it searches along the standard \TeX\
+% search path, as configured in the system and modified by
+% the {\tt TEXINPUTS} environment variable (or equivalent) for the
+% file \Lfile{sf298.cfg}. It loads the first such file that
+% it finds and this file may be used to change defaults or make other
+% changes to the \Lpack{sf298} package, \eg
+% \par\null\noindent
+% \begin{tabular}{ll@{}l}
+% ~~ & {\tt \cmd{\PerformingOrg}\{} & {\tt Our Little Laboratory \cmd{\\[-1pt]}}\footnotemark \\[-1pt]
+% & & {\tt Computer Science Department \cmd{\\[-1pt]}} \\[-1pt]
+% & & {\tt The Big University \cmd{\\[-1pt]}} \\[-1pt]
+% & & {\tt 9999 Avenue Street \cmd{\\[-1pt]}} \\[-1pt]
+% & & {\tt Anytown, TX 19293--8765}
+% \end{tabular}\footnotetext{Note that five lines are fit where only four are recommended in
+% Table~\ref{tab:attributes} by shrinking the baselineskip by one point.}
+% \par\null\noindent
+% For an organization, other typical fields for inclusion in the
+% configuration file are \cmd{\ResponsiblePerson} and
+% \cmd{\RPTelephone}. For a set of papers that are part of the same
+% contract, you could set the \TeX\ search path so that a local version
+% of \Lfile{sf298.cfg} is loaded that first \cmd{\inputs} the more global
+% one and then sets contract specific defaults associated with a single
+% contract, \eg, \cmd{\ContractNumber}, \cmd{\Sponsoring Agency},
+% \cmd{\Acronym}, {\it etc.\/}
+%
+% The option |noconfig| turns off the input of the configuration file.
+% For symmetry, there exists an option |config|, but that is the
+% default and does not need to be specified.
+%
+% \subsection{``Number of Pages'' field}
+% \label{sec:configpage}
+%
+% The {\bf Number of Pages} field will be automatically filled-in by calculating the
+% difference between the page count of the |sf298| page and the last
+% page. If the \Lpack{totpages} package is not present, and if the field
+% is not defined, a warning will be issued.
+%
+% If the {\bf Number of Pages} is incorrectly calculated, then the
+% correct value can be explicitly defined with the \cmd{\NumberPage}
+% macro or offset by a fixed value with the \cmd{\NumberPage*} macro.
+% The former may be needed if the sf298 form is not the first page of
+% the document. An example of the latter is where there is an
+% appendix whose pages are inserted and are, therefore, not
+% automatically counted.
+%
+% \subsection{Adjusting the form placement}
+% \DescribeMacro{\LeftShift}
+% \DescribeMacro{\DownShift}
+% \changes{v1.1}{15 Feb 2000}{Changed reference of millimeters to big points.}
+%
+% \noindent
+% Sometimes you need to adjust the placement of a large form, such as to
+% provide an extra amount of margin space or for a different page size.
+% These two macros allow this fine-tuning: \cmd{\LeftShift\{5\}} will cause
+% the form to be shifted 5 big points to the left\@.\footnote{Note that
+% there are no units here, the unit step is defined as one big point
+% (1 bp) at the beginning of the \cmd{\MakeRptDocPage} command above by
+% setting the \cmd{\unitlength}.} The \cmd{\DownShift\{-8.5\}} will cause the
+% form to be shifted up $8\frac{1}{2}$ big points (\ie, down a negative
+% $8\frac{1}{2}$ big points). For example, the following commands will
+% center the sf298 form on A4 paper:
+% \par\null\noindent
+% \begin{tabular}{ll}
+% ~~ & {\tt \cmd{\LeftShift}\{8.5\}} \\
+% & {\tt \cmd{\DownShift}\{-22.0\}}
+% \end{tabular}
+%
+% \section{An example of use with the \Lpack{article} class}
+% \label{sec:sample}
+% \iffalse
+%<*sample>
+% \fi%
+%
+% This sample program demonstrates how the \Lpack{sf298} package may
+% be used and integrated with an existing class. Here we redefine
+% \cmd{\@makefile} so that we can create a titlepage and report
+% documentation page that share a common set of fields, such as the
+% report title, the performing organization title and address and the
+% report abstract.
+%
+% First we have to start the paper as an \Lpack{article} with twosided
+% pages and using the \Lpack{sf298} package. We also make the `@' a
+% letter so that we can update some internal names.
+%
+% \begin{macrocode}
+\documentclass[twoside]{article}
+\usepackage{sf298}
+
+ \setlength{\parindent}{5ex}
+ \setlength{\paperwidth}{8.5in}
+ \setlength{\textwidth}{6.5in}
+ \setlength{\oddsidemargin}{0in}
+ \setlength{\evensidemargin}{0in}
+
+\makeatletter
+% \end{macrocode}
+%
+% \begin{macro}{\@maketitle}
+%
+% We modify the standard \cmd{\@maketitle} so that the title and author's
+% address (from the internal \cmd{\sf@PeformingOrg} value) are
+% integrated into the standard titlepage layout. This may not always be
+% the best approach, since the blocks may contain different internal
+% layout information on the title page and on the report documentation
+% page. Here, the \cmd{\@date} macro is used for the date rather than
+% \cmd{\sf@ReportDate} and similarly for the author's names, since the
+% desired format is different for these fields, even though the
+% information is the same. Another way to do the same thing is to
+% define the macro to parse and format these values as desired in each
+% case.
+%
+% As much as possible, a document class that generates both a titlepage
+% and the report documentation page (sf298) should allow the common
+% information to be entered only once.
+%
+% \begin{macrocode}
+\renewcommand{\@maketitle}{%
+ \newpage
+ \null
+ \vskip 2em%
+ \begin{center}%
+ \let\footnote\thanks
+ {\LARGE\sf@Title\par}%
+ \vskip 1.5em%
+ {\large
+ \lineskip .5em%
+ \begin{tabular}[t]{c}%
+ \@author\\[10pt]
+ \sf@PerformingOrg
+ \end{tabular}\par}%
+ \vskip 1em%
+ {\large\@date}%
+ \end{center}%
+ \par
+ \vskip 1.5em}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\showabstract}
+%
+% The next macro, \cmd{\showabstract} shows one method of pulling the
+% abstract text out of the internal (``hidden'') define, in order to
+% include it on the titlepage as we show in the accompanying
+% \Lfile{sample298.txt} file. We just have to make sure that we use it
+% before making the report documentation page, since this data is
+% thrown away after that.
+%
+% \begin{macrocode}
+ \newcommand{\showabstract}{%
+ \noindent
+ \sf@Abstract}
+% \end{macrocode}
+% \end{macro}
+%
+% We are finished with our example integration, so we close off changing
+% the internals and make `@' an ``other'' once more.
+%
+% \begin{macrocode}
+\makeatother
+% \end{macrocode}
+%
+% Now we fill in the fields needed for the title and the report
+% documentation pages. For reference as a template, we have entered all
+% of the \Lpack{sf298} block macros below. The ones that are not being
+% used are commented out. Note that although block 7 (Performing Organization Name)
+% is rated at four lines according to Table~\ref{tab:attributes}, we can fit five
+% lines if we compress them a little. Depending on your base font family and
+% such small adjustments, you can probably fit any reasonable set of information
+% onto this form in the way that you want to.
+%
+% \begin{macrocode}
+\date{June 1996}
+\ReportDate{10--06--1996}
+\ReportType{Final}
+\DatesCovered{1 June 1996 --- 31 May 1999}
+\Title{Final Report Title\thanks{We wish to thank all those who helped with
+ this project. The views and conclusions contained
+ in this document are those of the authors and should
+ not be interpreted as representing anyone else.}}
+\ContractNumber{DACA99--99--C--9999}
+ %\GrantNumber{}
+ %\ProgramElementNumber{}
+ %\ProjectNumber{}
+ %\TaskNumber{}
+ %\WorkUnitNumber{}
+\author{Joe A. Uthor and Jane E. Ditor}
+\Author{Uthor, Joe, A., and Ditor, Jane, E.}
+\PerformingOrg{%
+ Our Little Laboratory\\[-1pt]
+ Computer Science Department\\[-1pt]
+ The Big University\\[-1pt]
+ 9999 Avenue Street\\[-1pt]
+ Anytown, TX 19293--8765}
+ %\POReportNumber{}
+\SponsoringAgency{%
+ U.S. Army Sponsoring Department\\
+ P.O. Box 92919, Miltown, AK 97909--6543\\[10pt]
+ U.S. Army Monitoring Agency\\
+ 909 Mission Rd., Somecity, MD 29399--9753}
+ %\Acronyms{}
+ %\SMReportNumber{}
+ %\DistributionStatement{}
+\SupplementaryNotes{%
+ The views, opinions and/or findings contained in this report are
+ those of the authors and should not be construed as an official
+ U.S.\ Government position, policy or decision, unless so designated
+ by other documentation.}
+\Abstract{%
+ This sample paper shows one way to use the sf298 package along with
+ the article documentclass to generate a paper with the standard form 298
+ as the second physical page in the document.
+
+ In addition, the common text of the title, authors and abstract are
+ shared and the ``{\tt \string\thanks}'' macro is treated specially so
+ that it is active for the titlepage and inactive for the report
+ documentation page.}
+\SubjectTerms{keywords; associated words; other words}
+ %\NumberPages{}
+ %\ReportClassification{}
+ %\PageClassification{}
+ %\AbstractClassification{}
+\AbstractLimitation{UU}
+\ResponsiblePerson{Mr.\ Joe A. Uthor}
+\RPTelephone{(412) 555--9999}
+% \end{macrocode}
+%
+% Finally we begin a very simple report. First we print the titlepage
+% and the abstract. Next the report documentation and general
+% instructions pages are written. Following these two pages, the
+% table of contents is output, followed by the very short report.
+%
+% \begin{macrocode}
+\begin{document}
+\pagenumbering{roman}
+
+\maketitle\thispagestyle{empty}
+\begin{abstract}
+ \showabstract
+\end{abstract}
+
+\ReportDescription
+
+\GeneralInstructions{small}
+
+\tableofcontents
+\cleardoublepage
+\pagenumbering{arabic}
+\setcounter{page}{1}
+
+\section{Introduction}
+
+Blah, blah and blah.
+
+\section{Conclusion}
+
+More blah, blah and blah.
+
+\end{document}
+% \end{macrocode}
+% \iffalse
+%</sample>
+% \fi%
+%
+% \StopEventually{%
+% \section{Acknowledgments}
+%
+% Dr. Cochran would like to thank Professor Bruce M. Boghosian at the Center for
+% Computational Science, Boston University (bruceb@bu.edu) for
+% discovering problems with the use of a PostScript background for the
+% sf298 form which convinced him to original write the entire package in \LaTeX\
+% (versions 1.1 \& 1.2). Also, to Dr.\ Nino Pereira (pereira@speakeasy.net) for the
+% suggestion to make some of the fields more flexible.
+%
+% Dr. Rochford would like to thank Dr. Cochran for creating the orginal version of
+% the package, to which he added the option of providing the page of General
+% Instructions (version 1.3).
+%
+% \begin{thebibliography}{6}%
+% \bibitem{Mull99}%
+% Wihelm M\"uller,
+% \emph{The \Lpack{totpages} package},
+% 1999/07/13.
+% \bibitem{Kopk-Daly93}%
+% Michel Goossens, Framk Mittelbach, and Alexander Samarin,
+% \emph{A Guide to \LaTeXe},
+% 1993, 2$^{nd}$ edition (revised 1995).
+% \end{thebibliography}}
+%
+% \section{The {\tt DOCSTRIP} modules}
+% The following modules are used in the implementation to direct
+% {\tt DOCSCRIPT} in generating the external files:
+% \begin{tabular}[t]{ll}
+% driver & produces a documentation driver file.\\
+% package & produces the package sf298.sty.\\
+% sample & produces a sample \LaTeX\ template and test file.
+% \end{tabular}
+%
+% \newpage
+% \section{The code}
+% \iffalse
+%<*package>
+% \fi%
+% \subsection{Identification}
+%
+% \changes{v1.1}{15 Feb 2000}{No longer require the graphicx package.}
+% \changes{v1.2}{22 Dec 2004}{Updated package ID.}
+%
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{sf298}[2016/07/07 Standard Form 298]
+\typeout{Package: sf298 2016/07/07 v1.3)}
+\providecommand{\eg}{{\it e.g.\/\ }}
+% \end{macrocode}
+%
+% \subsection{Load the \Lpack{totpages} package, if it exists.}
+%
+% \begin{macro}{\sf@page}
+% \changes{v1.1}{22 Feb 2000}{Added the optional loading of the
+% {\sf totpages} package. If present, then the total pages block
+% is automatically set.}
+%
+% Check to see if the \Lpack{totpages} package is present. If it is,
+% then load the package and create a local page counter for use in
+% calculating the actual total pages.
+%
+% \begin{macrocode}
+\IfFileExists{totpages.sty}{%
+ \usepackage{totpages}
+ \newcounter{sf@page}}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Load the \Lpack{multicol} package.}
+%
+% \changes{v1.3}{20 Jun 2016}{Added the multicol package to support multi-column formatting
+% for the General Instructions page.}
+%
+% Check to see if the \Lpack{multicol} package is present. If it is, then load the package to
+% support multi-column formatting for the General Instructions page. If it is not present then
+% report error and terminate.
+%
+% \begin{macrocode}
+\IfFileExists{multicol.sty}{%
+ \usepackage{multicol}}
+ {\PackageError {sf298}{The multicol package was not found.}
+ {Install the multicol package on your system.}}
+% \end{macrocode}
+%
+% \subsection{Load the \Lpack{fancyhdr} Package}
+%
+% Check to see if the \Lpack{fancyhdr} package is present. If it is, then load the package to
+% define a custom footer. If it is not present then report error and terminate. This package
+% is needed to define a custom footer where the form identifier appears on the General
+% Instructions produced by \cmd{\GeneralInstructions}.
+%
+% \begin{macrocode}
+\IfFileExists{fancyhdr.sty}{%
+ \usepackage{fancyhdr}}
+ {\PackageError {sf298}{The fancyhdr package was not found.}
+ {Install the fancyhdr package on your system.}}
+% \end{macrocode}
+%
+% \subsection{Create the user interface}
+%
+% \changes{v1.1}{22 Feb 2000}{Moved user interface commands and default
+% prior to loading a configuration file}
+%
+% The following macros define the external and internal portions of the
+% user interface. These macros are used to fill the various blocks of
+% the form. All but one of the macros have the same pattern: a public
+% version which sets the internal value, both based on the block name.
+% The exception is the \cmd{\NumberPages} macro that has a starred form
+% for special use when the \Lpack{totpages} when the page count is
+% calculated automatically (see below).
+%
+% \begin{macro}{\ReportDate}
+% \begin{macro}{\sf@ReportDate}
+% \begin{macrocode}
+\newcommand\ReportDate[1]{\renewcommand\sf@ReportDate{#1}}
+\newcommand\sf@ReportDate{\number\day--\number\month--\number\year}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ReportType}
+% \begin{macro}{\sf@ReportType}
+% \begin{macrocode}
+\newcommand\ReportType[1]{\renewcommand\sf@ReportType{#1}}
+\newcommand\sf@ReportType{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\DatesCovered}
+% \begin{macro}{\sf@DatesCovered}
+% \begin{macrocode}
+\newcommand\DatesCovered[1]{\renewcommand\sf@DatesCovered{#1}}
+\newcommand\sf@DatesCovered{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Title}
+% \begin{macro}{\sf@Title}
+% \begin{macrocode}
+\newcommand\Title[1]{\renewcommand\sf@Title{#1}}
+\newcommand\sf@Title{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ContractNumber}
+% \begin{macro}{\sf@ContractNumber}
+% \begin{macrocode}
+\newcommand\ContractNumber[1]{\renewcommand\sf@ContractNumber{#1}}
+\newcommand\sf@ContractNumber{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\GrantNumber}
+% \begin{macro}{\sf@GrantNumber}
+% \begin{macrocode}
+\newcommand\GrantNumber[1]{\renewcommand\sf@GrantNumber{#1}}
+\newcommand\sf@GrantNumber{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ProgramElementNumber}
+% \begin{macro}{\sf@ProgramElementNumber}
+% \begin{macrocode}
+\newcommand\ProgramElementNumber[1]{\renewcommand\sf@ProgramElementNumber{#1}}
+\newcommand\sf@ProgramElementNumber{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ProjectNumber}
+% \begin{macro}{\sf@ProjectNumber}
+% \begin{macrocode}
+\newcommand\ProjectNumber[1]{\renewcommand\sf@ProjectNumber{#1}}
+\newcommand\sf@ProjectNumber{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\TaskNumber}
+% \begin{macro}{\sf@TaskNumber}
+% \begin{macrocode}
+\newcommand\TaskNumber[1]{\renewcommand\sf@TaskNumber{#1}}
+\newcommand\sf@TaskNumber{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\WorkUnitNumber}
+% \begin{macro}{\sf@WorkUnitNumber}
+% \begin{macrocode}
+\newcommand\WorkUnitNumber[1]{\renewcommand\sf@WorkUnitNumber{#1}}
+\newcommand\sf@WorkUnitNumber{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Author}
+% \begin{macro}{\sf@Author}
+% \begin{macrocode}
+\newcommand\Author[1]{\renewcommand\sf@Author{#1}}
+\newcommand\sf@Author{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\PerformingOrg}
+% \begin{macro}{\sf@PerformingOrg}
+% \begin{macrocode}
+\newcommand\PerformingOrg[1]{\renewcommand\sf@PerformingOrg{#1}}
+\newcommand\sf@PerformingOrg{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\POReportNumber}
+% \begin{macro}{\sf@POReportNumber}
+% \begin{macrocode}
+\newcommand\POReportNumber[1]{\renewcommand\sf@POReportNumber{#1}}
+\newcommand\sf@POReportNumber{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\SponsoringAgency}
+% \begin{macro}{\sf@SponsoringAgency}
+% \begin{macrocode}
+\newcommand\SponsoringAgency[1]{\renewcommand\sf@SponsoringAgency{#1}}
+\newcommand\sf@SponsoringAgency{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Acronyms}
+% \begin{macro}{\sf@Acronyms}
+% \begin{macrocode}
+\newcommand\Acronyms[1]{\renewcommand\sf@Acronyms{#1}}
+\newcommand\sf@Acronyms{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\SMReportNumber}
+% \begin{macro}{\sf@SMReportNumber}
+% \begin{macrocode}
+\newcommand\SMReportNumber[1]{\renewcommand\sf@SMReportNumber{#1}}
+\newcommand\sf@SMReportNumber{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\DistributionStatement}
+% \begin{macro}{\sf@DistributionStatement}
+% \begin{macrocode}
+\newcommand\DistributionStatement[1]{%
+ \renewcommand\sf@DistributionStatement{#1}}
+\newcommand\sf@DistributionStatement{Approval for public release;
+ distribution is unlimited.}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\SupplementaryNotes}
+% \begin{macro}{\sf@SupplementaryNotes}
+% \begin{macrocode}
+\newcommand\SupplementaryNotes[1]{\renewcommand\sf@SupplementaryNotes{#1}}
+\newcommand\sf@SupplementaryNotes{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Abstract}
+% \begin{macro}{\sf@Abstract}
+% \begin{macrocode}
+\newcommand\Abstract[1]{\renewcommand\sf@Abstract{#1}}
+\newcommand\sf@Abstract{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\SubjectTerms}
+% \begin{macro}{\sf@SubjectTerms}
+% \begin{macrocode}
+\newcommand\SubjectTerms[1]{\renewcommand\sf@SubjectTerms{#1}}
+\newcommand\sf@SubjectTerms{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ReportClassification}
+% \begin{macro}{\sf@ReportClassification}
+% \begin{macrocode}
+\newcommand\ReportClassification[1]{\renewcommand\sf@ReportClassification{#1}}
+\newcommand\sf@ReportClassification{U}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\AbstractClassification}
+% \begin{macro}{\sf@AbstractClassification}
+% \begin{macrocode}
+\newcommand\AbstractClassification[1]{%
+ \renewcommand\sf@AbstractClassification{#1}}
+\newcommand\sf@AbstractClassification{U}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\PageClassification}
+% \begin{macro}{\sf@PageClassification}
+% \begin{macrocode}
+\newcommand\PageClassification[1]{\renewcommand\sf@PageClassification{#1}}
+\newcommand\sf@PageClassification{U}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\AbstractLimitation}
+% \begin{macro}{\sf@AbstractLimitation}
+% \begin{macrocode}
+\newcommand\AbstractLimitation[1]{\renewcommand\sf@AbstractLimitation{#1}}
+\newcommand\sf@AbstractLimitation{UU}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ResponsiblePerson}
+% \begin{macro}{\sf@ResponsiblePerson}
+% \begin{macrocode}
+\newcommand\ResponsiblePerson[1]{\renewcommand\sf@ResponsiblePerson{#1}}
+\newcommand\sf@ResponsiblePerson{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\RPTelephone}
+% \begin{macro}{\sf@RPTelephone}
+% \begin{macrocode}
+\newcommand\RPTelephone[1]{\renewcommand\sf@RPTelephone{#1}}
+\newcommand\sf@RPTelephone{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\NumberPages}
+% \begin{macro}{\NumberPages*}
+% \changes{v1.1}{29 Feb 2000}{Added ability to offset the automatic
+% number of pages calculation.}
+%
+% The \cmd{\NumberPages} macro that has a both a regular form
+% (\cmd{\NumberPages}) that is used when setting the number of pages,
+% and a starred form (\cmd{\NumberPages*}) that is used to offset
+% the automatically calculated number of pages calculated using the
+% \Lpack{totpages} package. The value supplied by the starred form
+% is added to account for inserted pages that are not part of the
+% \LaTeX\ paper. For instance, when you are inserting a known number of
+% pages from an alternative source, say for an appendix, into the
+% document.
+%
+% The \cmd{\NumberPages} macro looks ahead for an asterisk and if it
+% finds one, then it ``eats'' it and passes the argument to the internal
+% \cmd{\sf@SNumberPages} macro where it is stored for later use to with the
+% total pages calculation. Otherwise, it sends the argument to
+% the \cmd{\sf@NNumberPages} macro where it becomes the actual page number.
+%
+% \begin{macrocode}
+\newcommand\NumberPages{%
+ \@ifnextchar *%
+ {\def\@tempa*{\sf@SNumberPages}%
+ \@tempa}%
+ {\sf@NNumberPages}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\sf@NNumberPages}
+% \begin{macro}{\sf@NumberPages}
+% \begin{macrocode}
+\newcommand\sf@NNumberPages[1]{\renewcommand\sf@NumberPages{#1}}
+\newcommand\sf@NumberPages{\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\sf@SNumberPages}
+% \begin{macro}{\sf@ExtraPages}
+% \begin{macrocode}
+\newcommand\sf@SNumberPages[1]{\renewcommand\sf@ExtraPages{#1}}
+\newcommand\sf@ExtraPages{0}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fancypagestyle}
+% The macro \cmd{\fancypagestyle\{sf298FormIDStyle\}} is defined so the
+% form identifier for the General Instructions page can be placed at the bottom
+% of the page, namely ``{\bfseries Standard Form 298 Back} (Rev.\ 8/98)''.
+% \end{macro}
+%
+% \begin{macrocode}
+\fancypagestyle{sf298FormIDStyle}
+{\fancyhf{}\renewcommand{\headrulewidth}{0pt}
+\fancyfoot[R]{\footnotesize {\bfseries Standard Form 298 Back} (Rev.\ 8/98)} }
+% \end{macrocode}
+%
+% \subsection{Options Processing: Check for a configuration file}
+%
+% \changes{v1.1}{29 Feb 2000}{Added option to turn on/off the
+% configuration file check.}
+% \changes{v1.1}{22 Feb 2000}{Added check for a configuration file.}
+% \changes{v1.2}{22 Dec 2004}{Added new option: [no]floatlongboxes.}
+%
+% First we define a switch that we can set with the optional arguments
+% and then declare the optional arguments themselves.
+%
+% \begin{macrocode}
+\DeclareOption{config}{\def\sf@config{Y}}
+\DeclareOption{noconfig}{\def\sf@config{N}}
+% \end{macrocode}
+%
+% Second, we define an option that floats the four long boxes near
+% the bottom of the page. This allows for more flexibility in the
+% layout without greatly modifying the standard form.
+%
+% \begin{macrocode}
+\newif\ifsf@floatlongboxes
+\DeclareOption{floatlongboxes}{\sf@floatlongboxestrue}
+\DeclareOption{nofloatlongboxes}{\sf@floatlongboxesfalse}
+% \end{macrocode}
+%
+% Next we process the optional arguments. We set the default
+% to read the configuration file and process any options to
+% allow the user to turn it off. Then, depending on the
+% current value of the configuration switch, we check for the
+% configuration file.
+%
+% \begin{macrocode}
+\ExecuteOptions{config,nofloatlongboxes}
+\ProcessOptions
+% \end{macrocode}
+%
+% \begin{macrocode}
+\if Y\sf@config
+ \InputIfFileExists{sf298.cfg}{}{}
+\fi
+\let\sf@config\relax
+% \end{macrocode}
+%
+% \subsection{Form placement fine tuning}
+%
+% \begin{macro}{\LeftShift}
+% \begin{macro}{\DownShift}
+%
+% These two macros allow the user to set any offset for the form. This
+% allows fine tuning of the form placement as necessary.
+%
+% \begin{macrocode}
+\newcommand\LeftShift[1]{\renewcommand\sf@LeftShift{#1}}
+\newcommand\sf@LeftShift{0}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand\DownShift[1]{\renewcommand\sf@DownShift{#1}}
+\newcommand\sf@DownShift{0}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Font definition}
+% \changes{v1.3}{20 Jun 2016}{Changed fonts for form identifiers at bottom of page.}
+%
+% \begin{macro}{\sf@setfont}
+% \changes{v1.1}{15 Feb 2000}{Added titlefonts to support a \LaTeX-based
+% blank form (rather than the previous PostScript one). Added setfont
+% stuff to fix weird things that can be done to upset a fixed format.}
+%
+% This macro is used to set the baseline and insure that the interword
+% spacing has not been changed by evil outside influences when
+% typesetting the form titles and entries.
+%
+% \begin{macrocode}
+\newcommand{\sf@setfont}[2]{%
+ \renewcommand{\baselinestretch}{1.0}%
+ \setlength{\baselineskip}{#2}%
+ \setlength{\normalbaselineskip}{\baselineskip}%
+ #1
+ \spaceskip=\fontdimen2\font % space between words (\raggedright)
+ \xspaceskip=\fontdimen2\font
+ \advance\xspaceskip by\fontdimen7\font}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sf@strut}
+% \changes{v1.1}{15 Feb 2000}{Added strut to space the block heading at the
+% exactly proper position in the upper left corner.}
+%
+% This strut is added at the beginning of each block title to place the
+% title text at the desired offset from the upper left corner of the
+% block.
+%
+% \begin{macrocode}
+\newcommand{\sf@strut}{\rule{0pt}{7pt}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sf@titlefontA}
+% \begin{macro}{\sf@settitlefontA}
+% \begin{macro}{\sf@titlefontB}
+% \begin{macro}{\sf@settitlefontB}
+% \begin{macro}{\sf@titlefontC}
+% \begin{macro}{\sf@settitlefontC}
+% \begin{macro}{\sf@titlefontD}
+% \begin{macro}{\sf@settitlefontD}
+% \begin{macro}{\sf@titlefontE}
+% \begin{macro}{\sf@settitlefontE}
+% \begin{macro}{\sf@titlefontF}
+% \begin{macro}{\sf@settitlefontF}
+% \changes{v1.1}{22 Feb 2000}{Changed font declarations to use
+% \cmd{\sfdefault} so that they will adjust to the preferred font family.}
+%
+% The form headings are set with Sans Serif at 14-, 11-, 8-, and 6-point
+% sizes and a couple of different shapes and sizes. Each font is
+% actually set by the related \cmd{\settitlefont?} macro which switches
+% to the indicated fixed font, sets the new baseline and protects the
+% text from external settings. The actual font family used depends on
+% the current setting of \cmd{\sfdefault} \cite[pages 229,236]{Kopk-Daly93}.
+%
+% \begin{macrocode}
+\DeclareFixedFont{\sf@titlefontA}{OT1}{\sfdefault}{bx}{n}{\@xivpt}
+\newcommand{\sf@settitlefontA}{\sf@setfont{\sf@titlefontA}{18pt}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFixedFont{\sf@titlefontB}{OT1}{\sfdefault}{m}{sl}{\@xipt}
+\newcommand{\sf@settitlefontB}{\sf@setfont{\sf@titlefontB}{13.6pt}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFixedFont{\sf@titlefontC}{OT1}{\sfdefault}{m}{n}{\@vipt}
+\newcommand{\sf@settitlefontC}{\sf@setfont{\sf@titlefontC}{7pt}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFixedFont{\sf@titlefontD}{OT1}{\sfdefault}{bx}{n}{\@vipt}
+\newcommand{\sf@settitlefontD}{\sf@setfont{\sf@titlefontD}{7pt}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFixedFont{\sf@titlefontE}{OT1}{\sfdefault}{bx}{n}{\@viiipt}
+\newcommand{\sf@settitlefontE}{\sf@setfont{\sf@titlefontE}{9.5pt}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFixedFont{\sf@titlefontF}{OT1}{\sfdefault}{m}{sl}{\@viiipt}
+\newcommand{\sf@settitlefontF}{\sf@setfont{\sf@titlefontF}{9.5pt}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\sf@entryfont}
+% \begin{macro}{\sf@setentryfont}
+% \changes{v1.1}{22 Feb 2000}{Changed font declaration to use
+% \cmd{\rmdefault} so that it will adjust to the preferred font family.}
+%
+% The form is filled in with Roman 10-point text. This insures that the
+% text will reasonably fit in the form boxes and will not vary with
+% the choice of the normal fontsize of the document. As with the title
+% fonts, above, the entry font is actually set by the related
+% \cmd{\setentryfont} macro. The actual font family used depends on
+% the current setting of \cmd{\rmdefault}
+% \cite[pages 229,236]{Kopk-Daly93}.
+%
+% \begin{macrocode}
+\DeclareFixedFont{\sf@entryfont}{OT1}{\rmdefault}{m}{n}{\@xpt}
+\newcommand{\sf@setentryfont}{\sf@setfont{\sf@entryfont}{11pt}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\sf@revfontbold}
+% \begin{macro}{\sf@setrevfontbold}
+% \begin{macro}{\sf@revfont}
+% \begin{macro}{\sf@setrevfont}
+% \changes{v1.3}{20 Jun 2016}{Added font declaration for form identifier (i.e.
+% revision) that appears at the bottom of the forms.}
+%
+% The form identifiers are filled in with Sans Serif at 9-point size to match the
+% appearance of the form as publicly distributed in Portable Data Format (PDF)
+% by the United States Government. Separate fonts are specified for the bold
+% and non-bold portions of the identifiers.
+%
+% \begin{macrocode}
+\DeclareFixedFont{\sf@revfontbold}{OT1}{\sfdefault}{bx}{n}{9pt}
+\newcommand{\sf@setrevfontbold}{\sf@setfont{\sf@revfontbold}{10pt}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFixedFont{\sf@revfont}{OT1}{\sfdefault}{m}{n}{9pt}
+\newcommand{\sf@setrevfont}{\sf@setfont{\sf@revfont}{10pt}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Error checking and reporting}
+%
+% \changes{v1.1}{22 Feb 2000}{Added the error checking and reporting.}
+% \begin{macro}{\ifsf@undef}
+% \begin{macro}{\sf@undeftrue}
+% \begin{macro}{\sf@undeffalse}
+%
+% This switch is used by the error reporting at the end of the document
+% to generate a general message that there was an undefined required
+% field.
+%
+% \begin{macrocode}
+\newif\ifsf@undef
+\sf@undeffalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\sf@undefined}
+%
+% The \cmd{\sf@undefined} macro is executed with the optional argument for
+% each required field and without the optional argument at the end of
+% the document.
+%
+% \begin{macrocode}
+\newcommand{\sf@undefined}[1][\@empty]{%
+ \ifx \@empty#1\relax
+ \ifsf@undef
+ \typeout{^^J%
+ SF298 Warning: There are required fields that are undefined.%
+ ^^J}%
+ \fi
+ \else
+ \sf@undeftrue
+ \typeout{^^J%
+ SF298 Warning: \expandafter\string\csname #1\endcsname\space
+ is undefined.%
+ ^^J}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sf@checkfield}
+%
+% This macro does the actual checking for undefined required fields.
+% Because of the different sorts of field definitions that could be
+% created, it was easier to just fill a box with whatever the user
+% defined and check to see if the box has a non-zero width. You could
+% defeat this if you really wanted to, but it should work for reasonable
+% field values.
+%
+% \begin{macrocode}
+\newcommand{\sf@checkfield}[1]{%
+ \setbox\@tempboxa\vbox{\csname sf@#1\endcsname}%
+ \ifdim \wd\@tempboxa =0pt
+ \sf@undefined[#1]
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\AtEndDocument{\sf@undefined}
+% \end{macrocode}
+%
+%
+% \subsection{Page layout}
+%
+% This is the part of the code that actually sets up the form page and
+% draws the form. After the form is drawn, most of the macros are set
+% to \cmd{\relax} in order to recover as much pool space as possible.
+%
+% \subsubsection{Form setup and cleanup}
+%
+% \begin{macro}{\ReportDescription}
+%
+% At the end of the \cmd{\titlepage} command, the \cmd{\thanks} macro is
+% redefined to be \cmd{\relax}. If we want to define the title once and
+% also want to be able to have a \cmd{\thanks} message associated with the
+% title on the titlepage, and want to use that same title text on the
+% report documentation page, then we need to redefine the \cmd{\thanks}
+% macro to eat it's argument. This is done by setting \cmd{\thanks} to
+% \cmd{\@gobble} while printing the report documentation page.
+%
+% \begin{macrocode}
+\newcommand{\ReportDescription}{%
+ \global\let\thanks\@gobble
+ \MakeRptDocPage
+ \global\let\thanks\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\MakeRptDocPage}
+%
+% The \cmd{\MakeRptDocPage} command creates the Report Documentation Page
+% using the information defined by the associated field macros. This
+% should be used at the beginning of a deliverable report just after
+% the cover or title page and counts as the first actual page of the
+% document.
+%
+% \begin{macrocode}
+\newcommand\MakeRptDocPage{%
+% \end{macrocode}
+%
+% If the \Lpack{twoside} option is specified in the \cmd{\documentclass}, then
+% it is printed as a separate page with a blank back. This page is treated
+% as page `{\it i}' (if the documentclass \Lpack{twoside} option is
+% specified, then the back treated as page `{\it ii}'.
+%
+% \begin{macrocode}
+ \newpage
+ \if@twoside\ifodd\c@page\else
+ \null
+ \thispagestyle{empty}%
+ \newpage
+ \fi\fi
+% \end{macrocode}
+%
+% \changes{v1.1}{22 Feb 2000}{Added calculation of total pages (if the
+% totpages package is present). Added check for missing fields.}
+%
+% Check for missing required fields. If the field value is missing, then
+% print a warning. In the case of the number of pages, if the
+% \Lpack{totpages} package was loaded, then calculate the value, else if
+% the total pages is not given, then give a warning.
+%
+% \begin{macrocode}
+ \sf@checkfield{ReportDate}
+ \sf@checkfield{ReportType}
+ \sf@checkfield{DatesCovered}
+ \sf@checkfield{Title}
+ \sf@checkfield{Author}
+ \sf@checkfield{PerformingOrg}
+ \sf@checkfield{SponsoringAgency}
+ \sf@checkfield{Abstract}
+ \sf@checkfield{ReportClassification}
+ \sf@checkfield{AbstractClassification}
+ \sf@checkfield{PageClassification}
+ \sf@checkfield{AbstractLimitation}
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \edef\@tempa{\sf@NumberPages}%
+ \edef\@tempa{\expandafter\@car\@tempa \@nil}%
+ \if \relax\@tempa\relax
+ \@ifundefined{c@TotPages}%
+ {\sf@undefined[NumberPages]}
+ {\@ifundefined{r@TotPages}%
+ {\renewcommand{\sf@NumberPages}{{\bf ??}}}%
+ {\setcounter{sf@page}{\expandafter\@car\r@TotPages\@nil}
+ \addtocounter{sf@page}{-\value{TotPages}}
+ \addtocounter{sf@page}{\sf@ExtraPages}
+ \renewcommand{\sf@NumberPages}{\arabic{sf@page}}}}
+ \fi
+% \end{macrocode}
+%
+% \changes{v1.1}{15 Feb 2000}{Adjusted offset calculations for new
+% blank form.}
+%
+% Next we make this page number one of the document and draw the form on
+% an $8\frac{1}{2}\times 11$ inch letter-size page and all offsets in
+% the actual form layout are in pixels from the lower-left corner of the
+% picture box as defined by the \cmd{\sf@drawform} macro. When we close
+% off the boxes, we allow the form to expand beyond the zero sized box.
+% This keeps \LaTeX\ from issuing warnings about overfull boxes.
+%
+% \begin{macrocode}
+ \setcounter{page}{1}%
+ \thispagestyle{empty}
+ \vbox to 0pt{%
+ \@tempskipa 34pt
+ \advance\@tempskipa\voffset
+ \advance\@tempskipa\topmargin
+ \advance\@tempskipa\headheight
+ \advance\@tempskipa\headsep
+ \advance\@tempskipa\baselineskip
+ \vskip-\@tempskipa
+ \hbox to 0pt{%
+ \@tempskipa\oddsidemargin
+ \advance\@tempskipa 42pt
+ \hskip-\@tempskipa
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \sf@drawform
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \hss}%
+ \vss}%
+% \end{macrocode}
+%
+% The page is now done, so, if the documentclass \Lpack{twoside} option
+% is specified, generate a blank page for its back, which counts as
+% page `{\it ii}').
+%
+% \begin{macrocode}
+ \newpage
+ \if@twoside
+ \null
+ \thispagestyle{empty}%
+ \newpage
+ \fi
+% \end{macrocode}
+%
+% \changes{v1.1}{15 Feb 2000}{Added font macros to the list of unused
+% definitions. Also \cmd{\ReportDate} and \cmd{\sf@ReportDate}.}
+% Finally, the last step is to set all of the now unused definitions to
+% \cmd{\relax}, thereby freeing some space.
+%
+% \begin{macrocode}
+ \global\let\ReportDate\relax
+ \global\let\sf@ReportDate\relax
+ \global\let\ReportType\relax
+ \global\let\sf@ReportType\relax
+ \global\let\DatesCovered\relax
+ \global\let\sf@DatesCovered\relax
+ \global\let\Title\relax
+ \global\let\sf@Title\relax
+ \global\let\ContractNumber\relax
+ \global\let\sf@ContractNumber\relax
+ \global\let\GrantNumber\relax
+ \global\let\sf@GrantNumber\relax
+ \global\let\ProgramElementNumber\relax
+ \global\let\sf@ProgramElementNumber\relax
+ \global\let\ProjectNumber\relax
+ \global\let\sf@ProjectNumber\relax
+ \global\let\TaskNumber\relax
+ \global\let\sf@TaskNumber\relax
+ \global\let\WorkUnitNumber\relax
+ \global\let\sf@WorkUnitNumber\relax
+ \global\let\Author\relax
+ \global\let\sf@Author\relax
+ \global\let\PerformingOrg\relax
+ \global\let\sf@PerformingOrg\relax
+ \global\let\POReportNumber\relax
+ \global\let\sf@POReportNumber\relax
+ \global\let\SponsoringAgency\relax
+ \global\let\sf@SponsoringAgency\relax
+ \global\let\Acronyms\relax
+ \global\let\sf@Acronyms\relax
+ \global\let\SMReportNumber\relax
+ \global\let\sf@SMReportNumber\relax
+ \global\let\DistributionStatement\relax
+ \global\let\sf@DistributionStatement\relax
+ \global\let\SupplementaryNotes\relax
+ \global\let\sf@SupplementaryNotes\relax
+ \global\let\Abstract\relax
+ \global\let\sf@Abstract\relax
+ \global\let\SubjectTerms\relax
+ \global\let\sf@SubjectTerms\relax
+ \global\let\ReportClassification\relax
+ \global\let\sf@ReportClassification\relax
+ \global\let\AbstractClassification\relax
+ \global\let\sf@AbstractClassification\relax
+ \global\let\PageClassification\relax
+ \global\let\sf@PageClassification\relax
+ \global\let\AbstractLimitation\relax
+ \global\let\sf@AbstractLimitation\relax
+ \global\let\ResponsiblePerson\relax
+ \global\let\sf@ResponsiblePerson\relax
+ \global\let\RPTelephone\relax
+ \global\let\NumberPages\relax
+ \global\let\sf@NNumberPages\relax
+ \global\let\sf@NumberPages\relax
+ \global\let\sf@SNumberPages\relax
+ \global\let\sf@ExtraPages\relax
+ \global\let\LeftShift\relax
+ \global\let\sf@LeftShift\relax
+ \global\let\DownShift\relax
+ \global\let\sf@DownShift\relax
+ \global\let\sf@RPTelephone\relax
+ \global\let\sf@setfont
+ \global\let\sf@strut\relax
+ \global\let\sf@titlefontA\relax
+ \global\let\sf@settitlefontA\relax
+ \global\let\sf@titlefontB\relax
+ \global\let\sf@settitlefontB\relax
+ \global\let\sf@titlefontC\relax
+ \global\let\sf@settitlefontC\relax
+ \global\let\sf@titlefontD\relax
+ \global\let\sf@settitlefontD\relax
+ \global\let\sf@titlefontE\relax
+ \global\let\sf@settitlefontE\relax
+ \global\let\sf@titlefontF\relax
+ \global\let\sf@settitlefontF\relax
+ \global\let\sf@entryfont\relax
+ \global\let\sf@setentryfont\relax
+ \global\let\sf@revfontbold\relax
+ \global\let\sf@setrevfontbold\relax
+ \global\let\sf@revfont\relax
+ \global\let\sf@setrevfont\relax
+ \global\let\sf@checkfield\relax
+ \global\let\sf@parbox\relax
+ \global\let\sf@drawform\relax
+ \global\let\MakeRptDocPage\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Form layout}
+% \begin{macro}{\sf@parbox}
+% \changes{v1.1}{15 Feb 2000}{Added.}
+%
+% This macro is used in the following \cmd{\sf@drawform} to contain fields that
+% are to be centered in a block, but expand upward when overfull.
+% \begin{macrocode}
+\def\sf@parbox(#1,#2)#3{%
+ \makebox(0,0)[bl]{%
+ \vbox to #1\unitlength{%
+ \vss
+ \noindent
+ \parbox{#2\unitlength}{\raggedright#3}%
+ \vfil}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sf@drawform}
+% \changes{v1.1}{15 Feb 2000}{Changed from millimeter to big point spacing.}
+% \changes{v1.2}{22 Dec 2004}{Removed hard lines on the four long
+% boxes if `floatlingboxes' is used.}
+%
+% First draw the boxes of the form as a large thick-walled box with
+% a series of thin horizontal and vertical lines.
+%
+% \begin{macrocode}
+\newcommand\sf@drawform{%
+ \sf@setentryfont
+ \setlength{\unitlength}{1bp}
+ \begin{picture}(539,707)(\sf@LeftShift,\sf@DownShift)
+ % Draw blank form
+ \linethickness{1bp}%
+ \put( 0, 0){\framebox(539,707){}}
+ % Horizontal lines
+ \linethickness{0.5bp}%
+ \put( 0,677){\line(1,0){539}}
+ \put( 0,635){\line(1,0){539}}
+ \put( 0,611){\line(1,0){539}}
+ \put(324,581){\line(1,0){215}}
+ \put(324,551){\line(1,0){215}}
+ \put( 0,521){\line(1,0){539}}
+ \put(324,491){\line(1,0){215}}
+ \put(324,461){\line(1,0){215}}
+ \put( 0,431){\line(1,0){539}}
+ \put( 0,372){\line(1,0){539}}
+ \put(359,336){\line(1,0){180}}
+ \put( 0,300){\line(1,0){539}}
+ \ifsf@floatlongboxes\else
+ \put( 0,252){\line(1,0){539}}
+ \put( 0,215){\line(1,0){539}}
+ \put( 0, 95){\line(1,0){539}}
+ \fi
+ \put( 0, 48){\line(1,0){539}}
+ \put( 0, 36){\line(1,0){180}}
+ \put(324, 24){\line(1,0){215}}
+ % Vertical lines
+ \put(359,707){\line(0,-1){ 30}}
+ \put(144,635){\line(0,-1){ 24}}
+ \put(359,635){\line(0,-1){ 24}}
+ \put(324,611){\line(0,-1){180}}
+ \put(359,431){\line(0,-1){131}}
+ \put(180, 48){\line(0,-1){ 48}}
+ \put(266, 48){\line(0,-1){ 48}}
+ \put(324, 48){\line(0,-1){ 48}}
+ \put( 60, 36){\line(0,-1){ 36}}
+ \put(120, 36){\line(0,-1){ 36}}
+% \end{macrocode}
+%
+% \changes{v1.2}{22 Dec 2004}{Removed hard titles on the four long
+% boxes if `floatlingboxes' is used.}
+% Next, fill in the individual box titles. Note the use of the
+% \cmd{\sf@strut} to set the block titles a little down and to
+% the right of the absolute corner of the box.
+%
+% \begin{macrocode}
+ % Title text
+ \put( 0,677){\makebox(359, 30){%
+ \sf@settitlefontA REPORT DOCUMENTATION PAGE}}
+ \put(359,677){\makebox(180, 30){%
+ \sf@settitlefontB\shortstack[c]{%
+ Form Approved\\[-2pt]%
+ OMB No. 0704--0188}}}
+ \put( 3,635){\makebox(533, 42){%
+ \sf@settitlefontC\parbox{533bp}{\raggedright
+ The public reporting burden for this collection of information
+ is estimated to average 1 hour per response, including the
+ time for reviewing instructions, searching existing data
+ sources, gathering and maintaining the data needed, and
+ completing and reviewing the collection of information.
+ Send comments regarding this burden estimate or any other
+ aspect of this collection of information, including
+ suggestions for reducing this burden to Department of
+ Defense, Washington Headquarters Services, Directorate for
+ Information Operations and Reports (0704--0188), 1215
+ Jefferson Davis Highway, Suite 1204, Arlington, VA
+ 22202--4302. Respondents should be aware that
+ notwithstanding any other provision of law, no person shall
+ be subject to any penalty for failing to comply with a
+ collection of information if it does not display a currently
+ valid OMB control number.
+ {\sf@settitlefontD
+ PLEASE DO NOT RETURN YOUR FORM TO THE ABOVE ADDRESS.}}}}
+ \put( 0,611){\makebox(144, 24)[tl]{%
+ \sf@settitlefontE\sf@strut 1.\ REPORT DATE
+ \sf@settitlefontF (DD--MM--YYYY)}}
+ \put(144,611){\makebox(215, 24)[tl]{%
+ \sf@settitlefontE\sf@strut 2.\ REPORT TYPE}}
+ \put(359,611){\makebox(180, 24)[tl]{%
+ \sf@settitlefontE\sf@strut 3.\ DATES COVERED
+ \sf@settitlefontF (From --- To)}}
+ \put( 0,521){\makebox(324,90)[tl]{%
+ \sf@settitlefontE\sf@strut 4.\ TITLE AND SUBTITLE}}
+ \put(324,581){\makebox(215, 30)[tl]{%
+ \sf@settitlefontE\sf@strut 5a.\ CONTRACT NUMBER}}
+ \put(324,551){\makebox(215, 30)[tl]{%
+ \sf@settitlefontE\sf@strut 5b.\ GRANT NUMBER}}
+ \put(324,521){\makebox(215, 30)[tl]{%
+ \sf@settitlefontE\sf@strut 5c.\ PROGRAM ELEMENT NUMBER}}
+ \put(324,491){\makebox(215, 30)[tl]{%
+ \sf@settitlefontE\sf@strut 5d.\ PROJECT NUMBER}}
+ \put(324,461){\makebox(215, 30)[tl]{%
+ \sf@settitlefontE\sf@strut 5e.\ TASK NUMBER}}
+ \put(324,431){\makebox(215, 30)[tl]{%
+ \sf@settitlefontE\sf@strut 5f.\ WORK UNIT NUMBER}}
+ \put( 0,431){\makebox(324, 90)[tl]{%
+ \sf@settitlefontE\sf@strut 6.\ AUTHOR(S)}}
+ \put( 0,372){\makebox(359, 59)[tl]{%
+ \sf@settitlefontE\sf@strut
+ 7.\ PERFORMING ORGANIZATION NAME(S) AND ADDRESS(ES)}}
+ \put(359,372){\makebox(180, 59)[tl]{%
+ \sf@settitlefontE\shortstack[l]{%
+ \sf@strut 8.\ PERFORMING ORGANIZATION REPORT\\[-2pt]
+ \sf@strut\phantom{8.\ }NUMBER}}}
+ \put( 0,300){\makebox(359, 72)[tl]{%
+ \sf@settitlefontE\sf@strut
+ 9.\ SPONSORING / MONITORING AGENCY NAME(S) AND ADDRESS(ES)}}
+ \put(359,336){\makebox(180, 36)[tl]{%
+ \sf@settitlefontE\sf@strut 10.\ SPONSOR/MONITOR'S ACRONYM(S)}}
+ \put(359,300){\makebox(180, 36)[tl]{%
+ \sf@settitlefontE\shortstack[l]{%
+ \sf@strut 11.\ SPONSOR/MONITOR'S REPORT\\[-3pt]
+ \sf@strut\phantom{11.\ }NUMBER(S)}}}
+ \ifsf@floatlongboxes\else
+ \put( 0,252){\makebox(539, 48)[tl]{%
+ \sf@settitlefontE\sf@strut
+ 12.\ DISTRIBUTION / AVAILABILITY STATEMENT}}
+ \put( 0,215){\makebox(539, 37)[tl]{%
+ \sf@settitlefontE\sf@strut 13.\ SUPPLEMENTARY NOTES}}
+ \put( 0,95){\makebox(539,120)[tl]{%
+ \sf@settitlefontE\sf@strut 14.\ ABSTRACT}}
+ \put( 0, 48){\makebox(539, 46)[tl]{%
+ \sf@settitlefontE\sf@strut 15.\ SUBJECT TERMS}}
+ \fi
+ \put( 0, 36){\makebox(180, 12)[tl]{%
+ \sf@settitlefontE\sf@strut 16.\ SECURITY CLASSIFICATION OF:}}
+ \put( 0, 0){\makebox( 60, 36)[tl]{%
+ \sf@settitlefontE\sf@strut a.\ REPORT}}
+ \put( 60, 0){\makebox(60, 36)[tl]{%
+ \sf@settitlefontE\sf@strut b.\ ABSTRACT}}
+ \put(120, 0){\makebox(60, 36)[tl]{%
+ \sf@settitlefontE\sf@strut c.\ THIS PAGE}}
+ \put(180, 0){\makebox( 86, 48)[tl]{%
+ \sf@settitlefontE\shortstack[l]{%
+ \sf@strut 17.\ LIMITATION OF\\[-2pt]
+ \sf@strut\phantom{17.\ }ABSTRACT}}}
+ \put(266, 0){\makebox( 68, 48)[tl]{%
+ \sf@settitlefontE\shortstack[l]{%
+ \sf@strut 18.\ NUMBER\\[-2pt]
+ \sf@strut\phantom{18.\ }OF\\[-2pt]
+ \sf@strut\phantom{18.\ }PAGES}}}
+ \put(324, 24){\makebox(215, 24)[tl]{%
+ \sf@settitlefontE\sf@strut 19a.\ NAME OF RESPONSIBLE PERSON}}
+ \put(324, 0){\makebox(215, 24)[tl]{%
+ \sf@settitlefontE\sf@strut 19b.\ TELEPHONE NUMBER
+ \sf@settitlefontF (include area code)}}
+ \put(405,-25){\makebox(123, 17)[bl]{%
+ \shortstack[l]{%
+ {{\sf@setrevfontbold Standard Form 298} \sf@setrevfont (Rev.\ 8/98)}\\[-2pt]%
+ {\sf@setrevfont Prescribed by ANSI Std.\ Z39.18}}}}
+% \end{macrocode}
+%
+% \changes{v1.2}{22 Dec 2004}{If `floatlingboxes' is used, then the
+% four long box separator lines and titles are typset along with
+% the text so that they may act more dynamically.}
+%
+% Now, we add the user's entries to the form. For undefined entries,
+% we just add null text, the required fields are checked above and a
+% warning issued if any of them are empty.
+%
+% \begin{macrocode}
+ % Fill in form
+ \put( 4,614){\makebox(0,0)[bl]{\sf@ReportDate}}
+ \put(148,614){\makebox(0,0)[bl]{\sf@ReportType}}
+ \put(363,614){\makebox(0,0)[bl]{\sf@DatesCovered}}
+ \put( 4,523){\sf@parbox( 80,324){\sf@Title}}
+ \put(328,585){\makebox(0,0)[bl]{\sf@ContractNumber}}
+ \put(328,555){\makebox(0,0)[bl]{\sf@GrantNumber}}
+ \put(328,525){\makebox(0,0)[bl]{\sf@ProgramElementNumber}}
+ \put(328,495){\makebox(0,0)[bl]{\sf@ProjectNumber}}
+ \put(328,465){\makebox(0,0)[bl]{\sf@TaskNumber}}
+ \put(328,435){\makebox(0,0)[bl]{\sf@WorkUnitNumber}}
+ \put( 4,434){\sf@parbox( 80,321){\sf@Author}}
+ \put( 4,397){\makebox(0,0)[l]{%
+ \parbox{355bp}{\raggedright\sf@PerformingOrg}}}
+ \put(363,372){\sf@parbox( 46,176){\sf@POReportNumber}}
+ \put( 4,331){\makebox(0,0)[l]{%
+ \parbox{355bp}{\raggedright \sf@SponsoringAgency}}}
+ \put(363,349){\makebox(0,0)[l]{%
+ \parbox{176bp}{\raggedright\sf@Acronyms}}}
+ \put(363,304){\makebox(0,0)[bl]{%
+ \vbox to 26bp{%
+ \vss
+ \noindent
+ \parbox{176bp}{\raggedright\sf@SMReportNumber}}}}
+ \ifsf@floatlongboxes
+ \put( 0,49){\parbox[b]{541bp}{%
+ \leftskip=4bp
+ \rightskip=4bp plus 2em
+ \vbox to 250bp{%
+ \vbox to 0bp{%
+ \hbox{\sf@settitlefontE\sf@strut
+ 12.\ DISTRIBUTION / AVAILABILITY STATEMENT}
+ \vss}
+ \vfil
+ \sf@DistributionStatement
+ \vfil
+ \hrule width\linewidth height0.5bp
+ \vbox to 0bp{%
+ \hbox{\sf@settitlefontE\sf@strut 13.\ SUPPLEMENTARY NOTES}
+ \vss}
+ \vfil
+ \sf@SupplementaryNotes
+ \vfil
+ \hrule width\linewidth height0.5bp
+ \vbox to 0bp{%
+ \hbox{\sf@settitlefontE\sf@strut 14.\ ABSTRACT}
+ \vss}
+ \vfil
+ \sf@Abstract
+ \vfil
+ \hrule width\linewidth height0.5bp
+ \vbox to 0bp{%
+ \hbox{\sf@settitlefontE\sf@strut 15.\ SUBJECT TERMS}
+ \vss}
+ \vfil
+ \sf@SubjectTerms
+ \vfil}}}
+ \else
+ \put( 4,255){\sf@parbox( 38,532){\sf@DistributionStatement}}
+ \put( 4,217){\sf@parbox( 25,532){\sf@SupplementaryNotes}}
+ \put( 4, 95){\sf@parbox(110,533){\sf@Abstract}}
+ \put( 4, 51){\sf@parbox( 36,533){\sf@SubjectTerms}}
+ \fi
+ \put( 30, 13){\makebox(0,0){\sf@ReportClassification}}
+ \put( 90, 13){\makebox(0,0){\sf@AbstractClassification}}
+ \put(150, 13){\makebox(0,0){\sf@PageClassification}}
+ \put(223, 13){\makebox(0,0){\sf@AbstractLimitation}}
+ \put(295, 13){\makebox(0,0){\large\sf@NumberPages}}
+ \put(328, 33){\makebox(0,0)[l]{\sf@ResponsiblePerson}}
+ \put(328, 9){\makebox(0,0)[l]{\sf@RPTelephone}}
+ \end{picture}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\GeneralInstructions}
+%
+% The \cmd{\GeneralInstructions} command creates the General Instructions Page,
+% which uses a two column format. This is optionally included in some technical
+% reports and should be used immediately after the \cmd{\ReportDescription} command
+% so the General Instructions Page appears on the page immediately following the SF298
+% form.
+%
+% \begin{macrocode}
+\newcommand\GeneralInstructions[1]{%
+ \global\let\thanks\@gobble
+ \MakeGenInsPage{#1}
+ \global\let\thanks\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\MakeGenInsPage}
+%
+% The \cmd{\MakeGenInsPage} command creates a new page containing
+% the General Instructions for the SF298 form in a two-column format.
+%
+% \begin{macrocode}
+\newcommand\MakeGenInsPage[1]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \newpage
+ \if@twoside\ifodd\c@page\else
+ \null
+ \thispagestyle{empty}%
+ \newpage
+ \fi\fi
+ \vspace{1ex}
+
+ \thispagestyle{sf298FormIDStyle} % insert document code in footer
+% \end{macrocode}
+%
+% \begin{macrocode}
+\begin{#1} % set font size
+\noindent
+\fbox{\begin{minipage}{\textwidth}
+\vspace{3ex}
+\begin{center}
+\textbf{INSTRUCTIONS FOR COMPLETING SF 298}
+\end{center}
+
+\vspace{1ex}
+
+\setlength{\columnsep}{0.8cm}
+\setlength{\columnseprule}{0.2pt}
+\vspace{-4ex}
+
+\begin{multicols}{2}
+\noindent
+\textbf{1.~REPORT DATE.} Full publication date including day, month,
+and year, if available. Must cite at least the year and be Year 2000
+compliant, \eg 30-06-1998; xx-06-1998; xx-xx-1998.\hfill
+\\ \\ \noindent
+\textbf{2.~REPORT TYPE.} State the type of report, such as final,
+technical, interim, memorandum, master's thesis, progress, quarterly,
+research, special, group study, etc.\hfill
+\\ \\ \noindent
+\textbf{3.~DATE COVERED.} Indicate the time during which the work was
+performed and the report was written, \eg, Jun 1997 - Jun 1998;
+1-10 Jun 1996; May - Nov 1998; Nov 1998.\hfill
+\\ \\ \noindent
+\textbf{4.~TITLE.} Enter title and subtitle with volume number and part
+number, if applicable. On classified documents, enter the title
+classification in parentheses.\hfill
+\\ \\ \noindent
+\textbf{5a.~CONTRACT NUMBER.} Enter all contract numbers as they
+appear in the report, \eg F33315-86-C-5169.\hfill
+\\ \\ \noindent
+\textbf{5b.~GRANT NUMBER.} Enter all grant numbers as they appear in the
+report. \eg AFOSR-82-1234.\hfill
+\\ \\ \noindent
+\textbf{5c.~PROGRAM ELEMENT NUMBER.} Enter all program element numbers
+as they appear in the report, \eg 61101A.\hfill
+\\ \\ \noindent
+\textbf{5e.~TASK NUMBER.} Enter all task numbers as they appear in the
+report, \eg 05; RF0330201; T4112.\hfill
+\\ \\ \noindent
+\textbf{5f.~WORK UNIT NUMBER.} Enter all work unit numbers as they
+appear in the report, \eg 001; AFAPL30480105.\hfill
+\\ \\ \noindent
+\textbf{6.~AUTHOR(S).} Enter name(s) of person(s) responsible
+for writing the report, performing the research, or credited with the
+content of the report. The form of entry is the last name, first name,
+middle initial, and additional qualifiers separated by commas, \eg Smith,
+Richard, J, Jr.\hfill
+\\ \\ \noindent
+\textbf{7.~PERFORMING ORGANIZATION NAME(S) AND ADDRESS(ES).} Self-explanatory. \hfill
+\vfill
+\columnbreak
+
+\noindent
+\textbf{8.~PERFORMING ORGANIZATION REPORT NUMBER.} Enter all unique
+alphanumeric report numbers assigned by the performing organization,
+\eg BRL-1234; AFWL-TR-85-4017-Vol-21-PT-2.\hfill
+\\ \\ \noindent
+\textbf{9.~SPONSORING/MONITORING AGENCY NAME(S) AND ADDRESS(ES).} Enter
+the name and address of the organization(s) financially responsible for
+and monitoring the work.\hfill
+\\ \\ \noindent
+\textbf{10.~SPONSOR/MONITOR'S ACRONYM(S).} Enter, if available, \eg BRL,
+ARDEC, NADC.\hfill
+\\ \\ \noindent
+\textbf{11.~SPONSOR/MONITOR'S REPORT NUMBER(S).} Enter report number as
+assigned by the sponsoring/ monitoring agency, if available, \eg BRL-TR-829;
+-215.\hfill
+\\ \\ \noindent
+\textbf{12.~DISTRIBUTION/AVAILABILITY STATEMENT.} Use agency-mandated
+availability statements to indicate the public availability or distribution
+ limitations of the report. If additional limitations/ restrictions or
+ special markings are indicated, follow agency authorization procedures,
+ \eg RD/FRD, PROPIN, ITAR, etc. Include copyright information.\hfill
+\\ \\ \noindent
+\textbf{13.~SUPPLEMENTARY NOTES.} Enter information not included elsewhere
+such as: prepared in cooperation with; translation of; report supersedes;
+old edition number, etc.\hfill
+\\ \\ \noindent
+\textbf{14.~ABSTRACT.} A brief (approximately 200 words) factual summary
+of the most significant information.\hfill
+\\ \\ \noindent
+\textbf{15.~SUBJECT TERMS.} Key words or phrases identifying major concepts
+in the report.\hfill
+\\ \\ \noindent
+\textbf{16.~SECURITY CLASSIFICATION.} Enter security classification in
+accordance with security classification regulations, \eg U, C, S, etc. If
+this form contains classified information, stamp classification level on
+the top and bottom of this page.\hfill
+\\ \\ \noindent
+\textbf{17.~LIMITATION OF ABSTRACT.} This block must be completed to assign
+a distribution limitation to the abstract. Enter UU (Unclassified Unlimited)
+or SAR (Same as Report). An entry in this block is necessary if the abstract
+is to be limited. \hfill
+
+\end{multicols}
+\end{minipage}
+}
+\end{#1}
+
+\normalsize % return font to normal size
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</package>
+% \fi%
+%
+% \Finale
+%
diff --git a/macros/latex/contrib/sf298/sf298.ins b/macros/latex/contrib/sf298/sf298.ins
new file mode 100644
index 0000000000..4c80811437
--- /dev/null
+++ b/macros/latex/contrib/sf298/sf298.ins
@@ -0,0 +1,100 @@
+%%
+%% This is file `sf298.ins', the installation file for the `sf298'
+%% package.
+%%
+%% Copyright � 2000,2004 Steven Douglas Cochran.
+%%
+%% The sf298 package may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.2
+%% of this license or (at your option) any later version. The latest
+%% version of this license is in:
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%y
+%% This package consists of the files Makefile, sf298.dtx, and
+%% sf298.ins.
+%%
+%% The sf298 package is distributed in the hope that it will be
+%% useful, but `as is', WITHOUT WARRANTY OF ANY KIND, either expressed
+%% or implied, including, but not limited to, the implied warranties of
+%% MERCHANTABILITY and FITNESS FOR A PARTICULAR PURPOSE. See the LaTeX
+%% Project Public License for more details.
+
+\def\batchfile{sf298.ins}
+\input docstrip.tex
+
+\keepsilent
+\preamble
+
+Copyright (C) 2000,2005 Steven Douglas Cochran.
+
+The copyright remains with the above author.
+
+This file is NOT the source for sf298, because almost all comments
+have been stripped from it. It is NOT the preferred form of sf298 for
+making modifications to it.
+
+Therefore you can NOT redistribute and/or modify THIS file. You can
+however redistribute the complete source package (Makefile, sf298.dtx
+and sf298.ins) and/or modify it under the terms of the LaTeX Project
+Public License, either version 1.2 of this license or (at your option)
+any later version. The latest version of this license is in:
+http://www.latex-project.org/lppl.txt and version 1.2 or later is part
+of all distributions of LaTeX version 1999/09/03 or later.
+
+The sf298 package is distributed in the hope that it will be useful,
+but `as is', WITHOUT WARRANTY OF ANY KIND, either expressed or
+implied, including, but not limited to, the implied warranties of
+MERCHANTABILITY and FITNESS FOR A PARTICULAR PURPOSE. See the LaTeX
+Project Public License for more details.
+
+\endpreamble
+\declarepreamble\samplepreamble
+
+Copyright (C) 2000,2005 Steven Douglas Cochran.
+
+This file is NOT the source for sample298, because almost all comments
+have been stripped from it. It is NOT the preferred form of sample298
+for making modifications to it.
+
+Therefore you can NOT redistribute and/or modify THIS file. You can
+however redistribute the complete source package (Makefile, sf298.dtx
+and sf298.ins) and/or modify it under the terms of the LaTeX Project
+Public License, either version 1.2 of this license or (at your option)
+any later version. The latest version of this license is in:
+http://www.latex-project.org/lppl.txt and version 1.2 or later is part
+of all distributions of LaTeX version 1999/09/03 or later.
+
+The sf298 package is distributed in the hope that it will be useful,
+but `as is', WITHOUT WARRANTY OF ANY KIND, either expressed or
+implied, including, but not limited to, the implied warranties of
+MERCHANTABILITY and FITNESS FOR A PARTICULAR PURPOSE. See the LaTeX
+Project Public License for more details.
+
+\endpreamble
+\keepsilent
+
+% programs and packages
+
+\generate{\file{sf298.sty}{\from{sf298.dtx}{package}}
+ \usepreamble\samplepreamble
+ \file{sample298.tex}{\from{sf298.dtx}{sample}}
+ }
+
+\ifToplevel{
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space\space sf298.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file `sf298.dtx'}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing}
+\Msg{*}
+\Msg{***********************************************************}
+}
+ \ No newline at end of file
diff --git a/macros/latex/contrib/sf298/sf298.pdf b/macros/latex/contrib/sf298/sf298.pdf
new file mode 100644
index 0000000000..5349d35081
--- /dev/null
+++ b/macros/latex/contrib/sf298/sf298.pdf
Binary files differ