我正在使用自定义环境编写 BNF 定义,它只是tabular
带有一些指定的列分隔符:
\begin{tabular}{r @{$\in$} c @{:=} l}
...
\end{tabular}
其中左列指定元变量,中间列是定义的人性化名称,右列是 BNF 符号。例如,自然数可能看起来像
n & Naturals & 0 \mid S n
并打印为
n \in Naturals := 0 | S n
问题
我的问题是:此表的某些行将没有元变量,因为我不需要引用它们在任何其他 BNF 规则中定义的内容。但如果我省略元数据列,\in
仍然会插入(可以理解),这看起来不太好。
\in Integers := n | -n
其他一些行将没有 BNF 定义,因为它们只是元变量。同样,:=
这些行中会打印出 ,这看起来也很糟糕。
i \in Indexes :=
当我真正想要
Integers := n | -n
i \in Indexes
我怎样才能使列分隔符仅在两列之间有值时才显示?我不反对任何额外的包。