diff options
author | Karl Berry <karl@freefriends.org> | 2021-11-13 21:13:55 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-11-13 21:13:55 +0000 |
commit | 09fb10e18bc08cea7aa46f661f3643b4bc6cde4c (patch) | |
tree | f0eb9f1d070046e2da06943c0606add5915e9121 /Master/texmf-dist/tex | |
parent | 640afb3c3409328eb49d71e28d5d9511ff7de3b1 (diff) |
formal-grammar (12nov21)
git-svn-id: svn://tug.org/texlive/trunk@61046 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/formal-grammar/formal-grammar.sty | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/formal-grammar/formal-grammar.sty b/Master/texmf-dist/tex/latex/formal-grammar/formal-grammar.sty new file mode 100644 index 00000000000..90eaa407da6 --- /dev/null +++ b/Master/texmf-dist/tex/latex/formal-grammar/formal-grammar.sty @@ -0,0 +1,101 @@ +%% +%% This is file `formal-grammar.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% formal-grammar.dtx (with options: `package') +%% This is a generated file. +%% Copyright (C) 2021 by Martin Vassor +%% +%% This file may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 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.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{formal-grammar}[2021/11/10 v1.0 A package to typeset formal grammars] +\RequirePackage{xparse} +\RequirePackage{float} +\RequirePackage{xcolor} +\RequirePackage{colortbl} +\RequirePackage{array} +\definecolor{LightCyan}{rgb}{0.8,1,1} +%% \begin{abstract} +%% The \textsf{formal-grammar} package provides commands to typeset formal grammars. +%% \end{abstract} +\newfloat{floatgrammar}{t b h p}{.gram} +\floatname{floatgrammar}{Grammar} +%% Taken from https://tex.stackexchange.com/a/26364/107341 +\newcommand*{\@rowstyle}{} + +\newcommand*{\rowstyle}[1]{% sets the style of the next row + \gdef\@rowstyle{#1}% + \@rowstyle\ignorespaces% +} +\newcolumntype{=}{% resets the row style + >{\gdef\@rowstyle{}}% +} + +\newcolumntype{+}{% adds the current row style to the next column + >{\@rowstyle}% +} +%% End of stackexchange +\ExplSyntaxOn +%% 1st argument: caption (makes it float) +%% 2nd argument: positionning option (`p` by default) +%% 3rd argument: label +\NewDocumentEnvironment{grammar} {o o o} +{ +\IfNoValueTF{#1} { +}{ +\IfNoValueTF{#2}{ +\begin{floatgrammar}[p] +} { +\begin{floatgrammar}[#2] +} +\centering +} + +\begin{tabular}{=l +r +l +l} +}{ +\end{tabular} + +\IfNoValueTF{#1} { +\linebreak +} { +\caption{#1} +\IfNoValueTF{#3}{ +} { +\label{#3} +} +\end{floatgrammar} +} +} +\ExplSyntaxOff + +\newcommand{\firstcase}[3]{\(\mathcal{#1}\) & \(::=\) & \(#2\) & {\itshape \color{gray!90!black} #3}\\} +\newcommand{\firstcasesubtil}[3]{#1 & \(::=\) & \(#2\) & {\itshape \color{gray!90!black} #3}\\} + +\newcommand{\otherform}[2]{& \(|\) & \(#1\) & {\itshape \color{gray!90!black} #2}\\} + +\newcommand{\nonterm}[1]{\mathcal{#1}} + +\newcommand{\nontermsubtil}[1]{#1} + +\newcommand{\gralt}[0]{\quad |\quad } + +\newcommand{\highlight}[0]{\rowcolor{LightCyan}} + +\newcommand{\lochighlight}[1]{{\color{red} #1}} + +\newcommand{\downplay}[0]{\rowstyle{\color{white!80!black}}} +\endinput +%% +%% End of file `formal-grammar.sty'. |