下图是我想要的效果:
我写了相应的代码如下
\begin{lstlisting}[mathescape]
\textbf{Document} ::= <Document [\textbf{\emph{documentName}}]$_0^1$ [\textbf{\emph{author}}]$_0^1$ [\textbf{\emph{date}}]$_0^1$>
[\textbf{Table}]$_1^n$ [\textbf{Action}]$_0^n$ [\textbf{Comment}]$_0^n$
</Document>
\end{lstlisting}
这些代码确实有效,但是它无法显示斜体和粗体,以下是其结果。
感谢您的解决方案!
答案1
您已启用mathescape
。这也可以用于执行\textbf
,例如$\textbf{Table}$
。
我会使用标记命令,这样代码就更容易阅读和维护。除了列表之外,还有其他选项。以下示例使用环境tabbing
:
\documentclass{article}
\usepackage{amstext}
\newcommand*{\EndTag}[1]{%
\textless /#1\textgreater
}
\newcommand*{\StartTagBegin}[1]{%
\textless #1%
}
\newcommand*{\StartTagEnd}{\textgreater}
\newcommand*{\Attribute}[1]{%
\textbf{\itshape#1}%
}
\newcommand*{\AttributeSpec}[3]{%
\Spec{\Attribute{#1}}{#2}{#3}%
}
\newcommand*{\Element}[1]{%
\textbf{#1}%
}
\newcommand*{\ElementSpec}[3]{%
\Spec{\Element{#1}}{#2}{#3}%
}
\newcommand*{\Spec}[3]{%
[#1]$_{\text{#2}}^{\text{#3}}$%
}
\newcommand*{\IsDefinedAs}
\begin{document}
\begin{tabbing}
\Element{Document} \IsDefinedAs\ \= \StartTagBegin{Document}
\AttributeSpec{documentName}{0}{1}
\AttributeSpec{author}{0}{1}
\AttributeSpec{date}{0}{1}\StartTagEnd
\\
\>\quad
\ElementSpec{Table}{1}{n}
\ElementSpec{Action}{0}{n}
\ElementSpec{Comment}{0}{n}
\\
\> \EndTag{Document}
\end{tabbing}
\end{document}