在 \lstlisting 中设置斜体和粗体

在 \lstlisting 中设置斜体和粗体

下图是我想要的效果: enter image description here

我写了相应的代码如下

\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}

这些代码确实有效,但是它无法显示斜体和粗体,以下是其结果。 enter image description here

感谢您的解决方案!

答案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}

Result

相关内容