4

I'd like to have code in a PDF that someone can simply copy, paste, and use. Currently, \lstlisting is converting '-' to em dashes. Then when I paste the output into the Python interpreter or MATLAB, I get syntax errors. None of the solutions I've looked at on here seem to work.

myvar = 9
myvar = myvar - 2

The '-' ends up as '−' in the output.

I have the following settings

\lstset{breakatwhitespace,
language=MATLAB,
columns=fullflexible,
keepspaces,
breaklines,
tabsize=3, 
showstringspaces=false,
extendedchars=true,
basicstyle=\fontfamily{pcr}\selectfont\scriptsize,
keywordstyle=\color{orange},
upquote=true}

I am using \documentclass{beamer}

I've looked at

  1. listings package changes hyphens to minus signs
  2. less relevant since i'm focusing on code, not comments: Avoiding "minus sign" dash in listings commentstyle
5

You can use literate to change possible automated conversions. In this specific case, using literate={-}{-}1 substitutes - for - as-is:

\documentclass{beamer}

\usepackage{listings,textcomp}

\lstset{
  breakatwhitespace,
  language=MATLAB,
  columns=fullflexible,
  keepspaces,
  breaklines,
  tabsize=3, 
  showstringspaces=false,
  extendedchars=true,
  basicstyle=\fontfamily{pcr}\selectfont\scriptsize,
  keywordstyle=\color{orange},
  upquote=true,
  literate={-}{-}1}

\begin{document}

\begin{frame}[fragile]
\frametitle{A listing}

\begin{lstlisting}
myvar = 9
myvar = myvar - 2
\end{lstlisting}

\end{frame}

\end{document}
  • Thank you. This is very nice and simple. I was fearful of the other solutions that used \makeatletter and so on, things I'm not too familiar with. The issue with having to respecify fonts seems to have fixed itself as well. – bernie Sep 30 '16 at 21:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.