我希望获得与在环境\underline
中获得的相同的结果lstlisting
。
我几乎确信我是通过这种方式得到它的:
\documentclass{article}
\usepackage{listings}
\usepackage{upquote}
\lstdefinestyle{myStyle}{
language=SQL,
basicstyle=\small\ttfamily,
moredelim=[is][\underbar]{_}{_},
keepspaces=true
}
\begin{document}
\begin{lstlisting}[style=myStyle]
SELECT * FROM usr WHERE _id = 7_
\end{lstlisting}
\end{document}
但是当我使用_
之间的分隔符时''
它不起作用:
\documentclass{article}
\usepackage{listings}
\usepackage{upquote}
\lstdefinestyle{myStyle}{
language=SQL,
basicstyle=\small\ttfamily,
moredelim=[is][\underbar]{_}{_},
keepspaces=true
}
\begin{document}
\begin{lstlisting}[style=myStyle]
SELECT * FROM usr WHERE id ='_7_'
\end{lstlisting}
\end{document}
我怎么解决这个问题?
答案1
可能有更简单的方法,但由于lstlisting
是逐字环境,因此\underline
无法以这种方式工作(因为任何其他命令也会失败)。必须使用用户定义的 escapechar 转义到 LaTeX,我%
为此选择了
\documentclass{article}
\usepackage{listings}
\usepackage{upquote}
\lstdefinestyle{myStyle}{
language=SQL,
basicstyle=\small\ttfamily,
moredelim=[is][\underbar]{_}{_},
keepspaces=true
}
\begin{document}
\begin{lstlisting}[style=myStyle,escapechar=\%]
SELECT * FROM usr WHERE %\underline{id} = \underline{7}%
\end{lstlisting}
\end{document}