summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-12-13 00:23:24 +0000
committerKarl Berry <karl@freefriends.org>2012-12-13 00:23:24 +0000
commitd1d04225520c250b38a97909df849a985df0b641 (patch)
tree03fd7e330a9129f38d2e369e6a077ae938f377a5 /Master
parentf8e86ec9cb8d2ae745356441baa359900a07858e (diff)
new latex package backnaur (12dec12)
git-svn-id: svn://tug.org/texlive/trunk@28513 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/backnaur/README29
-rw-r--r--Master/texmf-dist/doc/latex/backnaur/backnaur.pdfbin0 -> 306704 bytes
-rw-r--r--Master/texmf-dist/source/latex/backnaur/backnaur.dtx551
-rw-r--r--Master/texmf-dist/source/latex/backnaur/backnaur.ins82
-rw-r--r--Master/texmf-dist/tex/latex/backnaur/backnaur.sty51
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/backnaur.tlpsrc0
-rw-r--r--Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc1
8 files changed, 715 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/backnaur/README b/Master/texmf-dist/doc/latex/backnaur/README
new file mode 100644
index 00000000000..8e2b81ef80b
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/backnaur/README
@@ -0,0 +1,29 @@
+The backnaur package typesets Backus-Naur Form (BNF)
+definitions. It prints formatted lists of productions,
+with numbers if required. It can also print in line BNF
+expressions using math mode.
+
+To install the package, run LaTeX on the installation script
+backnaur.ins and follow the instructions provided by the script
+itself.
+
+Run LaTeX on backnaur.dtx to get the package's documentation.
+Comment out this files 'OnlyDescription' line to include the
+implementation documentation.
+
+Copyright (C) 2012 by Adrian P Robson
+ adrian.robson@nepsweb.co.uk
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3c 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
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Adrian Robson.
+
+This work consists of the files backnaur.dtx and
+ backnaur.ins
+and the derived files backnaur.sty and
+ backnaur.pdf
diff --git a/Master/texmf-dist/doc/latex/backnaur/backnaur.pdf b/Master/texmf-dist/doc/latex/backnaur/backnaur.pdf
new file mode 100644
index 00000000000..4cf57741436
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/backnaur/backnaur.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/backnaur/backnaur.dtx b/Master/texmf-dist/source/latex/backnaur/backnaur.dtx
new file mode 100644
index 00000000000..bf04cc42ba0
--- /dev/null
+++ b/Master/texmf-dist/source/latex/backnaur/backnaur.dtx
@@ -0,0 +1,551 @@
+% \iffalse meta-comment
+%
+% backnaur.dtx
+% 4 December 2012
+%
+% Documented LaTeX file for the backnaur package.
+%
+% Run LaTeX on backnaur.ini to make the package's
+% backnaur.sty file.
+%
+% Run LaTeX on this file to produce the package
+% documentation.
+%
+% Copyright (C) 2012 by Adrian P Robson
+% adrian.robson@nepsweb.co.uk
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c 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
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Adrian Robson.
+%
+% This work consists of the files backnaur.dtx and
+% backnaur.ins
+% and the derived files backnaur.sty and
+% backnaur.pdf
+% -----------------------------------------------------------
+% \fi
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[2011/06/27]
+%<package>\ProvidesPackage{backnaur}
+%<package>[2012/12/12 1.1 Typesetting for Backus-Naur Form (BNF) definitions]
+%<*driver>
+\documentclass[10pt,a4paper]{ltxdoc}
+\usepackage{backnaur}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage{textcomp}
+\usepackage{bigstrut}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\OnlyDescription % comment out for code implementation
+\begin{document}
+\DocInput{backnaur.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+%^^A-------------------------------------------------------------------
+%^^A Change log...
+%^^A--------------
+%^^A
+%^^A 15 November 2012
+%^^A The original was based on a non-packaged version that was used
+%^^A in 2008 for the LaTeX editions of the author's foggy times
+%^^A reports.
+% \changes{v1.0}{2012/11/15}
+% {Initial version of the package.}
+%^^A
+%^^A 3 December 2012
+%^^A Add tstt option and generally rewrite documentation
+% \changes{v1.1}{2012/12/12}
+% {Added {\tt tstt} option, and improved documentation.}
+%^^A-------------------------------------------------------------------
+%
+%^^A \CheckSum{0} %^^A no checksum for development
+% \CheckSum{59}
+% \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 \~}
+%
+% \GetFileInfo{backnaur.sty}
+%
+% \title{The \textsf{backnaur} package\thanks{
+% This work replaces \emph{Writing BNF Notation in LaTeX},
+% which described a non-package method of BNF typesetting.
+% This document corresponds to \textsf{backnaur}~\fileversion, dated~\filedate.}}
+%
+% \author{Adrian P. Robson\thanks{\texttt{adrian.robson@nepsweb.co.uk}}}
+% \date{12 December 2012}
+%
+% \maketitle
+%
+%^^A-------------------------------------------------------------------
+%^^A Start report body
+%^^A-------------------------------------------------------------------
+%
+% \section{Introduction}
+%
+% The \textsf{backnaur} package typesets Backus-Naur Form (BNF) definitions.
+% It creates aligned lists of productions, with numbers if required.
+% It can also print in line BNF expressions using math mode.
+%
+% Backus-Naur Form is a notation for defining context free grammars.
+% It is used to describe such things as programming languages, communication protocols
+% and command syntaxes, but it can be useful whenever a rigorous definition of language is needed.
+%
+% \section{BNF Definitions}
+%
+% The following is a BNF definition of a semicolon separated list:
+% \begin{bnf*}
+% \bnfprod{list}
+% {\bnfpn{listitems} \bnfor \bnfes}\\
+% \bnfprod{listitems}
+% {\bnfpn{item} \bnfor \bnfpn{item}
+% \bnfsp \bnfts{;} \bnfsp \bnfpn{listitems}}\\
+% \bnfprod{item}
+% { \bnftd{description of item}}
+% \end{bnf*}
+%
+% \noindent
+% Here, $\bnfpo$ signifies \emph{produces}, $\mid$ is an \emph{or} operator, $\langle$...$\rangle$
+% are \emph{production names},
+% and $\bnfes$ represents the \emph{empty string}.
+% However, some BNF users prefer alternative terminologies,
+% where $\bnfpo$ stands for \emph{is defined as},
+% $\langle$...$\rangle$ is a \emph{category name} or \emph{nonterminal},
+% and $\bnfes$ is refered to as \emph{null} or \emph{empty}.
+%
+% The above definition was created with the following code:
+%
+%\begin{verbatim}
+%\usepackage{backnaur}
+%...
+%\begin{bnf*}
+% \bnfprod{list}
+% {\bnfpn{listitems} \bnfor \bnfes}\\
+% \bnfprod{listitems}
+% {\bnfpn{item} \bnfor \bnfpn{item}
+% \bnfsp \bnfts{;} \bnfsp \bnfpn{listitems}}\\
+% \bnfprod{item}
+% {\bnftd{description of item}}
+%\end{bnf*}
+%
+%\end{verbatim}
+%
+% \noindent
+% Each BNF production is defined by a |\bnfprod| command, which has two arguments
+% giving its left and right sides.
+% The right hand side of each production is specified with the commands described in
+% \S\ref{commandDesc}.
+% Terminal (|\bnfts{;}|) and nonterminal (|\bnfpn{item}|), elements are separated
+% by spaces (|\bnfsp|) and OR symbols (|\bnfor|).
+% The |\bnfes| command gives the symbol for the empty string.
+%
+% \section{Package Commands}\label{commandDesc}
+%
+% \subsection{Loading and options}\label{packopts}
+%
+% The package is loaded with
+%
+% \medskip\noindent
+% \hspace{2.5em}|\usepackage{backnaur}| \\
+% or\\
+% \hspace*{2.5em}|\usepackage[|<options>|]{backnaur}|
+% \medskip
+%
+% \noindent
+% Possible options are
+%
+% \vspace{-1.5ex}
+% \begin{tabbing}
+% xxxxxxxxx \=\kill
+% |perp| \>The empty string symbol is $\perp$\\
+% |epsilon| \> The empty string symbol is $\epsilon$\\
+% |tstt| \> Terminal string typeface is typewriter
+% \end{tabbing}
+% \vspace{-1ex}
+%
+% \noindent
+% The defaults are: the empty string symbol is $\lambda$,
+% and the terminal string typeface is normal (roman).
+%
+% \subsection{Environments}
+%
+% \DescribeEnv{bnf}
+% BNF productions are defined in a |bnf| or |bnf*| environment,
+% which respectively give numbered and unnumbered lists of productions.
+% \DescribeEnv{bnf*}
+% \begin{quote}
+% \begin{minipage}{0.5\linewidth}
+% |\begin{bnf}|\\
+% \hspace*{1em}<list of productions>\\
+% |\end{bnf}|
+% \end{minipage}
+% \begin{minipage}{0.45\linewidth}
+% |\begin{bnf*}|\\
+% \hspace*{1em}<list of productions>\\
+% |\end{bnf*}|
+% \end{minipage}
+% \end{quote}
+%
+% \subsection{Productions}
+%
+% \DescribeMacro{\bnfprod}
+% A production is defined by |\bnfprod|, which takes two arguments:
+% \begin{quote}
+% |\bnfprod{|<production name>|}{|<production definition>|}|
+% \end{quote}
+%
+% \subsection{Production definitions}
+%
+% The following commands are used to compose the right hand side of a production.
+% They are deployed in the second argument of the |\bnfprod| command.
+%
+% \DescribeMacro{\bnfpn}
+% The |\bnfpn| command generates a production name.
+% It takes a single argument that is the name.
+% It is used as follows:
+% \begin{quote}
+% \begin{minipage}{0.6\linewidth}
+% |\bnfpn{list item}|
+% \end{minipage}
+% \begin{minipage}{0.3\linewidth}
+% $\bnfpn{list item}$
+% \end{minipage}
+% \end{quote}
+%
+% \DescribeMacro{\bnftm}
+% There are three types of terminal item: a literal string, a descriptive phrase and an empty string.
+% \DescribeMacro{\bnftd}
+% A literal terminal string is specified by the |\bnftm| command, which takes a single argument.
+% \DescribeMacro{\bnfes}
+% The |\bnftd| command generates a descriptive phrase, as an alternative to a literal string.
+% The |\bnfes| command generates a token that represents the empty string.
+% This is normally $\bnfes$, but it can be changed as a package option (see \S\ref{packopts}).
+% \begin{quote}
+% \begin{minipage}{0.6\linewidth}
+% |\bnfts{terminal}|\\
+% |\bnftd{description}|\\
+% |\bnfes|
+% \end{minipage}
+% \begin{minipage}{0.3\linewidth}
+% $\bnfts{terminal}$\\
+% $\bnftd{description}$\\
+% $\bnfes$
+% \end{minipage}
+% \end{quote}
+%
+% \DescribeMacro{\bnfsk}
+% Some literal terminal strings can be abbreviated with the `skip' token,
+% which is generated by the |\bnfsk| command.
+% This substitutes for a sequence of terminal characters.
+% It is used like this:
+% \begin{quote}
+% \begin{minipage}{0.6\linewidth}
+% |\bnfts{A} \bnfsk \bnfts{Z}|
+% \end{minipage}
+% \begin{minipage}{0.3\linewidth}
+% $\bnfts{A} \bnfsk \bnfts{Z}$
+% \end{minipage}
+% \end{quote}
+%
+% \DescribeMacro{\bnfor}
+% All items are separated by an OR or a space.
+% The |\bnfor| command generates the OR symbol, and the |\bnfsp| command introduces a space.
+% \DescribeMacro{\bnfsp}
+% A space can be considered equivalent to an AND operator.
+% \begin{quote}
+% \begin{minipage}{0.6\linewidth}
+% |\bnfpn{abc} \bnfor \bnfts{xzy}|\\
+% |\bnfpn{abc} \bnfsp \bnfts{xzy}|
+% \end{minipage}
+% \begin{minipage}{0.3\linewidth}
+% $\bnfpn{abc} \bnfor \bnfts{xzy}$\\
+% $\bnfpn{abc} \bnfsp \bnfts{xzy}$
+% \end{minipage}
+% \end{quote}
+%
+% \subsection{Inline expressions}
+%
+% The package's definition commands can be typeset inline using maths mode,
+% so the expression |$\bnfpn{name}$| will give $\bnfpn{name}$.
+%
+% \DescribeMacro{\bnfpo}
+% The |\bnfpo| command is provided so that the production operator $\bnfpo$
+% can be printed independently from the |bnf| environment if required.
+% The |\bnfprod| command cannot be used inline.
+%
+% \DescribeMacro{\bnfpo}
+% The |\bnfpo| command is provided so that the production operator $\bnfpo$
+% can be printed independently from the |bnf| environment if required.
+% The |\bnfprod| command cannot be used inline.
+%
+% \DescribeMacro{\bnfpo}
+% The |\bnfprod| command cannot be used inline.
+% So the |\bnfpo| command is provided so that the production operator $\bnfpo$
+% can be printed independently from the |bnf| environment if required.
+%
+% \subsection{Command summary}
+%
+% The commands that can be used to define a BNF production in a |bnf| or |bnf*| environment
+% are as follows:
+%
+% \begin{center}
+% \begin{tabular}{lll}
+% \hline
+% Command & Operator & Outcome \bigstrut \\
+% \hline
+% |\bnfpn{}| & production name & $\bnfpn{name}$ \bigstrut[t] \\
+% |\bnfor| & OR operator & $\bnfor$ \\
+% |\bnfsk| & skip & $\bnfsk$ \\
+% |\bnfsp| & space/AND operator & $\bnfsp$ \\
+% |\bnfes| & empty string & $\bnfes$ \\
+% |\bnfts{}| & terminal string & $\bnfts{terminal}$ \\
+% |\bnftd{}| & terminal description & $\bnftd{description}$ \\
+% |\bnfpo| & production operator & $\bnfpo$ \bigstrut[b] \\
+% \hline
+% \end{tabular}
+% \end{center}
+%
+% \section{Example}\label{example}
+%
+% A more significant example is the following definition of a $\bnfpn{sentence}$,
+% where $\bnfpn{cchar}$ are countable characters, and $\bnfpn{ichar}$ are characters
+% that should be ignored:
+%
+% \begin{samepage}
+% \small
+%\begin{verbatim}
+%\begin{bnf*}
+% \bnfprod{sentence}
+% {\bnfpn{start} \bnfsp \bnfpn{rest} \bnfsp \bnfts{.}}\\
+% \bnfprod{start}
+% {\bnfpn{space} \bnfor \bnfes}\\
+% \bnfprod{rest}
+% {\bnfpn{word} \bnfsp \bnfpn{space} \bnfsp \bnfpn{rest}
+% \bnfor \bnfpn{word} \bnfor \bnfes}\\
+% \bnfprod{word}
+% {\bnfpn{wchar} \bnfsp \bnfpn{word} \bnfor \bnfpn{wchar}}\\
+% \bnfprod{space}
+% {\bnfpn{schar} \bnfsp \bnfpn{space} \bnfor \bnfpn{schar}}\\
+% \bnfprod{wchar}
+% {\bnfpn{cchar} \bnfor \bnfpn{ichar} }\\
+% \bnfprod{cchar}
+% {\bnfts{A} \bnfsk \bnfts{Z} \bnfor \bnfts{a} \bnfsk \bnfts{z}
+% \bnfor \bnfts{0} \bnfsk \bnfts{9} \bnfor
+% \bnfts{\textquotesingle}}\\
+% \bnfprod{ichar}
+% {-}\\
+% \bnfprod{schar}
+% {\bnfts{`\hspace{1em}'} \bnfor \bnfts{!} \bnfor \bnfts{"}
+% \bnfor \bnfts{(} \bnfor \bnfts{)} \bnfor \bnfts{\{} \bnfor
+% \bnfts{\}} \bnfor \bnfts{:} \bnfor \bnfts{;} \bnfor \bnfts{?}
+% \bnfor \bnfts{,}}\\
+%\end{bnf*}
+%\end{verbatim}
+% \end{samepage}
+%
+% \noindent
+% This creates the following BNF definition:
+% \begin{bnf*}
+% \bnfprod{sentence}
+% {\bnfpn{start} \bnfsp \bnfpn{rest} \bnfsp \bnfts{.}}\\
+% \bnfprod{start}
+% {\bnfpn{space} \bnfor \bnfes}\\
+% \bnfprod{rest}
+% {\bnfpn{word} \bnfsp \bnfpn{space} \bnfsp \bnfpn{rest}
+% \bnfor \bnfpn{word} \bnfor \bnfes }\\
+% \bnfprod{word}
+% {\bnfpn{wchar} \bnfsp \bnfpn{word} \bnfor \bnfpn{wchar}}\\
+% \bnfprod{space}
+% {\bnfpn{schar} \bnfsp \bnfpn{space} \bnfor \bnfpn{schar}}\\
+% \bnfprod{wchar}
+% {\bnfpn{cchar} \bnfor \bnfpn{ichar} }\\
+% \bnfprod{cchar}
+% {\bnfts{A} \bnfsk \bnfts{Z} \bnfor \bnfts{a} \bnfsk
+% \bnfts{z} \bnfor \bnfts{0} \bnfsk \bnfts{9} \bnfor
+% \bnfts{\textquotesingle} }\\
+% \bnfprod{ichar}
+% {-}\\
+% \bnfprod{schar}
+% {\bnfts{`\hspace{1em}'} \bnfor \bnfts{!} \bnfor \bnfts{"}
+% \bnfor \bnfts{(} \bnfor \bnfts{)} \bnfor \bnfts{\{}
+% \bnfor \bnfts{\}} \bnfor \bnfts{:} \bnfor \bnfts{;}
+% \bnfor \bnfts{?} \bnfor \bnfts{,} }
+% \end{bnf*}
+%
+%
+%^^A-------------------------------------------------------------------
+%^^A Start code implementation
+%^^A-------------------------------------------------------------------
+%
+% \StopEventually{}
+%^^A \StopEventually{\PrintChanges}
+%^^A -> Run pdfLaTeX backnaur.dtx
+%^^A makeindex -s gglo.ist -o backnaur.gls backnaur.glo
+%^^A pdfLaTeX backnaur.dtx
+%^^A \StopEventually{\PrintIndex}
+%^^A -> Run pdfLaTeX backnaur.dtx
+%^^A makeindex -s gind.ist -o backnaur.ind backnaur.idx
+%^^A pdfLaTeX backnaur.dtx
+%
+% \section{Implementation}
+%
+% The implementation of |backnaur.sty| uses only \LaTeX{} commands.
+%
+% \subsection{Environments}\label{environ}
+%
+% There are two environments defined:
+%
+% \begin{environment}{bnf}
+% A production list with numbers. It is simply implemented as an |eqnarray|.
+% Surplus space is removed with an |\ignorespacesafterend| and |%| characters.
+% \begin{macrocode}
+\newenvironment{bnf}%
+{\begin{eqnarray}}%
+{\end{eqnarray}\ignorespacesafterend}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{bnf*}
+% A lists without numbers. It is implemented with an |eqnarray*|,
+% and extra space is removed as in the |bnf| environment above.
+% \begin{macrocode}
+\newenvironment{bnf*}%
+{\begin{eqnarray*}}%
+{\end{eqnarray*}\ignorespacesafterend}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Definition Commands}
+%
+% All of these commands run in the math mode supplied by the
+% |bnf| and |bnf*| environments (see \S\ref{environ}).
+%
+% \begin{macro}{\bnfpn}
+% Production name / nonterminal.
+% \begin{macrocode}
+\newcommand{\bnfpn}[1]{\langle \textnormal{#1} \rangle}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bnfor}
+% OR operator.
+% \begin{macrocode}
+\newcommand{\bnfor}{\; \mid \;}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bnfsp}
+% Space.
+% \begin{macrocode}
+\newcommand{\bnfsp}{\;}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bnfes}
+% Empty string symbol. This is the default if no package options are given.
+% \begin{macrocode}
+\newcommand{\bnfes}{\lambda}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bnfts}\label{codebnfts}
+% \changes{v1.1}{2012/12/12}{Support for {\tt tstt} option added}
+% \begin{macro}{\bnf@tsfont}
+% Terminal string. The font is controlled by the |\bnf@tsfont| macro,
+% and this macro can be redefined by the |tstt| option (see \S\ref{codeoptions}).
+% \begin{macrocode}
+\newcommand\bnf@tsfont[1]{\textrm{#1}}
+\newcommand{\bnfts}[1]{\textnormal{\bnf@tsfont{#1}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\bnfpo}
+% Terminal description.
+% \begin{macrocode}
+\newcommand{\bnftd}[1]{\textnormal{\it #1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bnfsk}
+% Skip symbol.
+% \begin{macrocode}
+\newcommand{\bnfsk}{\dots}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bnfpo}
+% Production operator.
+% \begin{macrocode}
+\newcommand{\bnfpo}{\models}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Production Commands}
+%
+% \begin{macro}{\bnfprod}
+% A Backus-Naur Form production.
+% This command is designed to exploit the behaviour the |equarray| used in
+% the |bnf| and |bnf*| environments.
+% In particular, the |\bnfpo| character will be vertically aligned.
+% \begin{macrocode}
+\newcommand{\bnfprod}[2]{\bnfpn{#1} & \bnfpo & #2}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Options}\label{codeoptions}
+%
+% \begin{macro}{tstt}
+% \changes{v1.1}{2012/12/12}{New option declared}
+% \begin{macro}{\bnf@tsfont}
+% The |tstt| option redefines |\bnf@tsfont| to change the
+% terminal string font used in the |\bnfts| command (see \S\ref{codebnfts}):
+% \begin{macrocode}
+\DeclareOption{tstt}{\renewcommand\bnf@tsfont[1]{\texttt{#1}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{perp}
+% \begin{macro}{epsilon}
+% \begin{macro}{\bnfes}
+% The |perp| and |epsilon| options redefine |\bnfes|,
+% which is the empty string command:
+% \begin{macrocode}
+\DeclareOption{perp}{\renewcommand{\bnfes}{\perp}}
+\DeclareOption{epsilon}{\renewcommand{\bnfes}{\epsilon}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%\noindent
+% Finally, the options that have been selected are executed:
+% \begin{macrocode}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+% \Finale
+\endinput
diff --git a/Master/texmf-dist/source/latex/backnaur/backnaur.ins b/Master/texmf-dist/source/latex/backnaur/backnaur.ins
new file mode 100644
index 00000000000..ccccd9186f5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/backnaur/backnaur.ins
@@ -0,0 +1,82 @@
+% backnaur.ins
+% 15 November 2012
+%
+% Installation file for the backnaur package.
+%
+% Run LaTeX on this file, with backnaur.dtx in the same
+% folder to make the package's backnaur.sty file.
+%
+% Run LaTeX on backnaur.dtx to produce the package
+% documentation.
+%
+% Copyright (C) 2012 by Adrian P Robson
+% adrian.robson@nepsweb.co.uk
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c 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
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Adrian Robson.
+%
+% This work consists of the files backnaur.dtx and
+% backnaur.ins
+% and the derived files backnaur.sty and
+% backnaur.pdf
+% -----------------------------------------------------------
+
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+Copyright (C) 2012 by Adrian P Robson
+ adrian.robson@nepsweb.co.uk
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3c 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
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Adrian Robson.
+
+This work consists of the files backnaur.dtx and
+ backnaur.ins
+and the derived files backnaur.sty and
+ backnaur.pdf
+
+\endpreamble
+
+\Msg{}
+\Msg{**********************************************************}
+\Msg{* The backnaur package}
+\Msg{* backnaur.ins and backnaur.dtx are being processed}
+\Msg{**********************************************************}
+
+\generate{\file{backnaur.sty}{\from{backnaur.dtx}{package}}}
+
+\Msg{**********************************************************}
+\Msg{* Processing complete ...}
+\Msg{*}
+\Msg{* To finish the installation, put backnaur.sty in a}
+\Msg{* suitable place on your system's TeX search path.}
+\Msg{*}
+\Msg{* Run LaTeX on backnaur.dtx to produce the documentation.}
+\Msg{* Comment out its 'OnlyDescription' line to include the}
+\Msg{* implementation documentation. }
+\Msg{*}
+\Msg{* You might like to keep backnaur.ins and backnaur.dtx}
+\Msg{* somewhere safe as a backup, or in case you want to }
+\Msg{* pass the backnaur package on to someone.}
+\Msg{*}
+\Msg{* Do not forget to delete the auxiliary files.}
+\Msg{**********************************************************}
+\Msg{}
+
+\endbatchfile \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/backnaur/backnaur.sty b/Master/texmf-dist/tex/latex/backnaur/backnaur.sty
new file mode 100644
index 00000000000..704d3d4f152
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/backnaur/backnaur.sty
@@ -0,0 +1,51 @@
+%%
+%% This is file `backnaur.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% backnaur.dtx (with options: `package')
+%%
+%% Copyright (C) 2012 by Adrian P Robson
+%% adrian.robson@nepsweb.co.uk
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c 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
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%% The Current Maintainer of this work is Adrian Robson.
+%%
+%% This work consists of the files backnaur.dtx and
+%% backnaur.ins
+%% and the derived files backnaur.sty and
+%% backnaur.pdf
+%%
+\NeedsTeXFormat{LaTeX2e}[2011/06/27]
+\ProvidesPackage{backnaur}
+[2012/12/12 1.1 Typesetting for Backus-Naur Form (BNF) definitions]
+\newenvironment{bnf}%
+{\begin{eqnarray}}%
+{\end{eqnarray}\ignorespacesafterend}
+\newenvironment{bnf*}%
+{\begin{eqnarray*}}%
+{\end{eqnarray*}\ignorespacesafterend}
+\newcommand{\bnfpn}[1]{\langle \textnormal{#1} \rangle}
+\newcommand{\bnfor}{\; \mid \;}
+\newcommand{\bnfsp}{\;}
+\newcommand{\bnfes}{\lambda}
+\newcommand\bnf@tsfont[1]{\textrm{#1}}
+\newcommand{\bnfts}[1]{\textnormal{\bnf@tsfont{#1}}}
+\newcommand{\bnftd}[1]{\textnormal{\it #1}}
+\newcommand{\bnfsk}{\dots}
+\newcommand{\bnfpo}{\models}
+\newcommand{\bnfprod}[2]{\bnfpn{#1} & \bnfpo & #2}
+\DeclareOption{tstt}{\renewcommand\bnf@tsfont[1]{\texttt{#1}}}
+\DeclareOption{perp}{\renewcommand{\bnfes}{\perp}}
+\DeclareOption{epsilon}{\renewcommand{\bnfes}{\epsilon}}
+\ProcessOptions\relax
+\endinput
+%%
+%% End of file `backnaur.sty'.
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index aa79c7cfdad..2be0e6590b8 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -47,7 +47,7 @@ my @TLP_working = qw(
attachfile
augie auncial-new aurical autopdf authoraftertitle authorindex
auto-pst-pdf autoarea automata autonum avantgar
- b1encoding babel babelbib background bangtex
+ b1encoding babel babelbib background backnaur bangtex
barcodes bardiag barr bartel-chess-fonts bashful baskervald
basque-book basque-date
bbcard bbding bbm bbm-macros bbold bbold-type1 bchart bclogo
diff --git a/Master/tlpkg/tlpsrc/backnaur.tlpsrc b/Master/tlpkg/tlpsrc/backnaur.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/backnaur.tlpsrc
diff --git a/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc
index 187e3ff8211..3a6ce52f8ac 100644
--- a/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc
@@ -3,6 +3,7 @@ shortdesc Advanced math typesetting
longdesc Extra math
depend 12many
depend amstex
+depend backnaur
depend binomexp
depend boldtensors
depend bosisio