Skip to content

mikerenfro/nsf-proposal

Repository files navigation

nsf-proposal: Basic LaTeX2e documentclass for NSF proposals

Mike Renfro (GitHub/Twitter: @mikerenfro)

Sample Project Summary page

Sample Project Description page

Sample Project References page

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).

TL;DR

\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.

More Details

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:

Sample source files for a proposal can be found in:

Sample Output

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

Sample Document Details

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:

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.

Sample Gantt chart