`tabular` - 仅在非空单元格之间包含列分隔符

`tabular` - 仅在非空单元格之间包含列分隔符

我正在使用自定义环境编写 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

我怎样才能使列分隔符仅在两列之间有值时才显示?我不反对任何额外的包。

相关内容