forked from muzimuzhi/latex-examples
-
Notifications
You must be signed in to change notification settings - Fork 0
/
bnf-alignat-and-tabularx.tex
69 lines (62 loc) · 2.18 KB
/
bnf-alignat-and-tabularx.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
\documentclass{article}
\usepackage{amsmath}
%\usepackage[pass, showframe]{geometry}
\usepackage{tabularx}
\input code-with-output
\ifx\example\undefined
\newenvironment{example}{}{}
\fi
\begin{document}
\def\key#1{\textsf{#1}}
\def\vor{\mathrel{\,|\,}}
\def\wideOr{\mathrel{\,\,|\,}}
\def\note#1{\text{#1}}
\begin{example}{Use \texttt{alignat}, two groups of formulae}
\begin{alignat*}{2}
&\key{app} (\lambda C, o) &&= \key{inst} (C, o) \\
&\key{app} ([k], o) &&= [k\ o]
\end{alignat*}
\begin{alignat*}{2}
&\key{first} (n, m) &&= n \\
&\key{first} ([k]) &&= [k\ .1] \\
&\key{second} (n, m) &&= m \\
&\key{second} ([k]) &&= [k\ .2]
\end{alignat*}
\end{example}
\begin{example}{Use \texttt{alignat}, three groups of formulae}
\def\key#1{\textsf{#1}}
\def\vor{\mathrel{\,|\,}}
\def\wideOr{\mathrel{\,\,|\,}}
\def\note#1{\text{#1}}
\begin{alignat*}{4}
&\Gamma, \Delta &\quad&::=&\quad&
() \vor \Gamma, x : A &\mskip 60mu& \note{Contexts} \\[10pt]
& t, u, A, B &&::= &&
x \vor \lambda x : A. t \vor t\ u \vor (x : A) \to B
&& \note{Pi-types} \\
& &&\wideOr &&
(t, u) \vor t.1 \vor t.2 \vor (x : A) \times B
&& \note{Sigma-types} \\
& &&\wideOr &&
\key{0} \vor \key{s}\ u \vor \key{natrec}\ t\ u \vor \key{N}
&& \note{Natural numbers}
\end{alignat*}
\end{example}
\begin{example}{Use \texttt{tabu}, 4 columns}
\noindent
\setlength{\tabcolsep}{0pt}
\begin{tabularx}{\linewidth}{>{$}l<{$} >{$\quad}c<{\quad$} >{$}X<{$} l}
\Gamma, \Delta & ::= &
() \vor \Gamma, x : A & Contexts \\[10pt]
t, u, A, B & ::= &
x \vor \lambda x : A. t \vor t\ u \vor (x : A) \to B
& \note{Pi-types} \\
&\vor &
(t, u) \vor t.1 \vor t.2 \vor (x : A) \times B
& \note{Sigma-types} \\
&\vor &
\key{0} \vor \key{s}\ u \vor \key{natrec}\ t\ u \vor \key{N}
& \note{Natural numbers}
\end{tabularx}
\end{example}
\end{document}