两列语法环境

两列语法环境

我的语法又长又细。我想将其水平分隔为两列。

\newenvironment{BNF}
  {\captionsetup{type=lstlisting}}
  {}

\begin{BNF}
\caption{My Grammar}
\label{grammar:my-grammar}
\begin{grammar}
<f> ::= "p"
\alt "true"
\alt "false"
\alt <f> <binop> <f>

<binop> ::= "U" (strong until)
 \alt "&&" (logical and)
 \alt $\rightarrow$ (implication)
 \alt $\leftrightarrow$ (equivalence)
\end{grammar}
\end{BNF}

我希望它是一个列表,带有一个标题。但我希望<f>它位于第一列,并且<binop位于第二列。这可能吗?

答案1

您可以使用以下软件包轻松完成此操作multicol

\documentclass{article}
\usepackage{listings,caption,syntax}
\newenvironment{BNF}
  {\captionsetup{type=lstlisting}}
  {}
\usepackage{multicol}
\begin{document}

\begin{BNF}
\caption{My Grammar}
\label{grammar:my-grammar}
\begin{multicols}{2}
\begin{grammar}
<f> ::= "p"
\alt "true"
\alt "false"
\alt <f> <binop> <f>
\columnbreak

<binop> ::= "U" (strong until)
 \alt "&&" (logical and)
 \alt $\rightarrow$ (implication)
 \alt $\leftrightarrow$ (equivalence)
\end{grammar}
\end{multicols}
\end{BNF}

\end{document}

代码输出

相关内容