Mike Renfro (GitHub/Twitter: @mikerenfro)
This needs better documentation, but for now, this documentclass lets you make relatively compact NSF proposals with a minimum of fiddly ad hoc formatting inside the main document. We've used this documentclass for both an MRI and a CC* proposal in 2021, and it's just been recently been verified for the 2024 PAPPG standards (as far as I know).
\documentclass[fontsize,basefont]{nsf-proposal}
where fontsize
is 10pt
, 11pt
, or
12pt
, and basefont
is any of:
arial
cm
(the default)courier-new
helvetica
palatino
palatino-linotype
(may only work by default on Windows)times-new-roman
Optionally, add the tg
class option to use the TeX Gyre equivalents to Courier
New, Helvetica, Palatino, or Times New Roman.
Now write the rest of your proposal, using \chapter
on down to \paragraph
to break things up. You'll want to use the starred versions of these on the
one-page project summary. See nsf-demo.tex
and nsf-demo-content.tex
for an example.
This documentclass uses the memoir class as its base, and supports proposals
with a base font size of 10 points and higher (for the arial
, courier-new
,
helvetica
, palatino
, and palatino-linotype
options), or 11 points and higher (for the cm
and times-new-roman
options).
It adds a small amount of whitespace around lines at 10pt, since NSF's PDF
readers will often flag a 10pt document as having more than 6 lines per inch.
We also noticed that LuaLaTeX creates a slightly different line height than
pdfLaTeX, so if you're using Overleaf, you may want to set the default engine
to pdfLaTeX, or if you find a better solution that works with both engines,
send me a pull request.
It disables most, if not all, of the hyperlinks in the main body of the proposal, leaving hyperlinks active in the references.
The documentclass code is around 300 lines, including whitespace and comments, so it should be relatively readable (over half of that is for handling different base fonts and sizes). The documentclass depends on the following packages:
fontspec
(if using LuaLaTeX or XeLaTeX)helvet
(for optionhelvetica
)hyperref
iftex
mathpazo
(for optionpalatino
andpalatino-linotype
)sansmath
(for optionarial
andhelvetica
)xstring
Sample source files for a proposal can be found in:
The following table is grouped by base font, latex engine, and font size. The "S", "D", and "R" PDFs represent the one-page summary, the <=15-page project description, and the references/bibliography for a sample NSF proposal. These PDFs can be uploaded to research.gov on a test project, and they shouldn't throw any warnings as provided. The "C" PDFs are a combined document including the summary, description, and references. Any N/A entries represent either an impossible combination of font and engine (e.g., Arial and pdflatex), or an invalid combination of font and size per the NSF PAPPG (e.g., Computer Modern at 10 pt).
Engine: | pdf* | pdf* | pdf* | xe* | xe* | xe* | lua* | lua* | lua* |
---|---|---|---|---|---|---|---|---|---|
Font | 10 pt | 11 pt | 12 pt | 10 pt | 11 pt | 12 pt | 10 pt | 11 pt | 12 pt |
Arial | N/A | N/A | N/A | S D R C | S D R C | S D R C | S D R C | S D R C | S D R C |
Computer Modern | N/A | S D R C | S D R C | N/A | S D R C | S D R C | N/A | S D R C | S D R C |
Courier New | N/A | N/A | N/A | S D R C | S D R C | S D R C | S D R C | S D R C | S D R C |
Courier New (TeX Gyre Cursor) | N/A | N/A | N/A | S D R C | S D R C | S D R C | S D R C | S D R C | S D R C |
Helvetica | S D R C | S D R C | S D R C | S D R C | S D R C | S D R C | S D R C | S D R C | S D R C |
Helvetica (TeX Gyre Heros) | N/A | N/A | N/A | S D R C | S D R C | S D R C | S D R C | S D R C | S D R C |
Palatino | S D R C | S D R C | S D R C | S D R C | S D R C | S D R C | S D R C | S D R C | S D R C |
Palatino (TeX Gyre Pagella) | N/A | N/A | N/A | S D R C | S D R C | S D R C | S D R C | S D R C | S D R C |
Palatino Linotype | N/A | N/A | N/A | S D R C | S D R C | S D R C | S D R C | S D R C | S D R C |
Times New Roman | N/A | N/A | N/A | N/A | S D R C | S D R C | N/A | S D R C | S D R C |
Times New Roman (TeX Gyre Termes) | N/A | N/A | N/A | N/A | S D R C | S D R C | N/A | S D R C | S D R C |
The sample document nsf-demo.tex
(and nsf-demo-content.tex
) adds the following packages not
specifically required by NSF, but really handy for these sorts of proposals:
array
(including a ragged right paragraph column typeP
)biblatex
booktabs
(with a reduced value for\tabcolsep
)calc
cleveref
enumitem
(including inline lists)graphicx
multicol
pifont
siunitx
(including binary units)xcolor
xurl
As shown in the sample document, you can use a \chapter*
and \section*
for the 1-page Project Summary, \chapter
, \section
, \subsection
,
\subsubsection
, and \paragraph
commands as needed in the Project
Description, where the subsubsection and paragraph levels are unnumbered
by default.
Larger font sizes may trigger hyphenation problems for some words and drive
some lines into the right margin, so be sure to add hyphenation as necessary
(already done for the hurt2021
reference in nsf-demo.bib
).
We also made a basic Gantt chart for one of the proposals. It uses
pgfgantt
, with just a bit of abuse to let
us have additional columns for which team member bears primary responsibility
or secondary responsibility. You'll find its source and output in the
images/
folder.