lstlisting - 防止连字符/破折号合并为一个

lstlisting - 防止连字符/破折号合并为一个

我正在使用 lstlisting 显示一些 ProLog 代码,在此代码中我需要在另一个后面添加 5 个破折号:-----,但它们一直组合成一行,这不是我想要的。

我尝试使用\lstinline\verb,但似乎这些在 lstlisting 中是不允许的,-{}-{}-{}-{}-{}也不起作用因为它{}也只会显示。

在 lstlisting 中执行此操作的正确方法是什么?

我目前有这样的东西:

\documentclass[11pt,a4paper]{report}

\usepackage[a4paper,left=3.5cm, right=2.5cm, top=3.5cm, bottom=3.5cm]{geometry}
\usepackage[dutch]{babel}
\usepackage{graphicx}
\usepackage[latin1]{inputenc}
\usepackage{listings}
\usepackage{verbatim}                   % weergeven van code, commando's, ...
\usepackage{hyperref}                   % maak PDF van de thesis navigeerbaar
\usepackage{url}                        % URL's invoegen in tekst met behulp van \url{http://}
\usepackage[small,bf,hang]{caption}     % om de captions wat te verbeteren
\usepackage[final]{pdfpages}            % gebruikt voor het invoegen van het artikel in pdf-formaat
\usepackage{pslatex}
\usepackage{sectsty}
\usepackage{float} 
\usepackage{amsmath}

\usepackage{mdwlist}
\usepackage{paralist}

\begin{document}
\selectlanguage{dutch}

\definecolor{dkgreen}{rgb}{0,0.5,0}
\lstset{language=Prolog, commentstyle=\color{dkgreen}}
\begin{lstlisting}[frame=LR]
% Bunch of prolog code that displays fine
evidence(burglary,false).
evidence(alarm,false).
-----
evidence(earthquake,false).
evidence(alarm,true).
evidence(burglary,true).
-----
evidence(burglary,false).
\end{lstlisting}

\end{document}

但破折号并不像上面那样显示。

答案1

防止 TeX “连接”连续连字符的一个技巧是滥用该literate选项,将每个-字符替换为......其本身!

在此处输入图片描述

\documentclass{report}

\usepackage{listings}
\lstset{
  language = Prolog,
  literate = {-}{-}1, % <------ trick!
}

\begin{document}

\begin{lstlisting}
% Bunch of prolog code that displays fine
evidence(burglary,false).
evidence(alarm,false).
-----
evidence(earthquake,false).
evidence(alarm,true).
evidence(burglary,true).
-----
evidence(burglary,false).
\end{lstlisting}

\end{document}

相关内容