[Tex/LaTex] lstlisting – keep hyphens/dashes from combining into one

listingsprolog

I'm using lstlisting to display some ProLog code, in this code I need to add 5 dashes after another: -----, but they keep combining into one line, which is not what I want.

I tried using \lstinline and \verb, but it seems like these aren't allowed in lstlisting, -{}-{}-{}-{}-{} won't work either as it'll just display {} too.

What is the correct way to do this in lstlisting?

I currently have something like this:

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

The dashes don't display as above though.

Best Answer

One trick to prevent TeX from "joining" consecutive hyphens is to (ab)use the literate option by replacing each - character by... itself!

enter image description here

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