将语法视为列表

将语法视为列表

我在我的文档中使用了类似答案中描述的grammarsyntax如何在 LaTeX 中输入 Backus-Naur 形式

现在我希望它像我文档中的列表一样被处理。这意味着我想添加一个标签、一个标题(开头写着“列表 42”),它应该出现在 中\lstlistoflistings。有办法实现这个吗?

到目前为止,我的文档的一个高度简化的示例:

\documentclass[12pt,tablecaptionabove]{scrartcl}
\usepackage[final]{listings}
\usepackage[nounderscore]{syntax}
\begin{document}
   \lstlistoflistings

    some Text

    \begin{lstlisting}[caption={A listing},label=myListing]
        myListingCode
    \end{lstlisting}

    some Text

    \begin{grammar}
        <S> ::= someTerminal
    \end{grammar}
\end{document}

答案1

lstlisting您可以借助以下包定义一个新环境,该环境调用的标题类型与 相同caption

\documentclass[12pt,tablecaptionabove]{scrartcl}
\usepackage[final]{listings}
\usepackage[nounderscore]{syntax}
\usepackage{caption}

\usepackage{lipsum} % just to provide mock text

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

\begin{document}
\lstlistoflistings

\section{A section}

\lipsum[1]

\begin{lstlisting}[caption={A listing},label=myListing]
myListingCode
\end{lstlisting}

\lipsum[2]

\begin{BNF}
\caption{A grammar}
\begin{grammar}
   <S> ::= someTerminal
\end{grammar}
\end{BNF}

\lipsum[3]

\end{document}

在此处输入图片描述

相关内容