我在我的文档中使用了类似答案中描述的grammar
包syntax
如何在 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}