I need to type Backus-Naur form in LaTeX document. I found several packages on CTAN:

  • ebnf seems to not work with TeXLive 2009
  • latex-bnf does not align the declaration, etc.
  • There is a module for ConTeXt, context-bnf

Is there a package for modern LaTeX, or should I just use hand-formatting via verbatim?

  • 2
    Not verbatim, for goodness sake. If everything else fails, use an itemize or something like that. I hope someone comes up with a better solution. Oct 23, 2010 at 14:27
  • 1
    Please note that I mentioned verbatim as last resort. Probably tabular would be closer to what I have in mind but neither of those solution is IMHO LaTeX-like (i.e. type the document and let computer to figure out how to format it). Oct 23, 2010 at 14:35
  • See also tex.stackexchange.com/questions/24886/…
    – knut
    Aug 30, 2012 at 20:19
  • I have found the syntax package very easy to use, thanks to this detailed answer. May 3, 2014 at 17:13
  • The simplebnf package (github.com/Zeta611/simplebnf) is straightforward to use. Disclaimer: I'm the author of the package.
    – Jay Lee
    May 12, 2022 at 7:09

2 Answers 2


I stumbled across the syntax-mdw package the other day. It looks like it might typeset BNFs and syntax diagrams nicely. See the documentation (PDF) to get an idea of its capabilities.

  • 3
    If the package's underscore hack causes problems then try \usepackage[nounderscore]{syntax}.
    – mpartel
    May 28, 2012 at 14:39
  • I needed to use [nounderscore] otherwise I got the error ! Missing \endcsname inserted.
    – Flow
    Aug 30, 2012 at 20:10

Try the bnf.tex at http://dante.ctan.org/tex-archive/macros/plain/contrib/bnf/ . It is simple enough that can form the basis of what you are looking and expand as you wish.

Not the answer you're looking for? Browse other questions tagged .