Warum hebt das Listings-Paket Operatoren nicht richtig hervor?

Warum hebt das Listings-Paket Operatoren nicht richtig hervor?

Ich schreibe gerade ein paar Notizen zur Programmiersprache R. Leider listingsscheint das Paket einige mathematische Operatoren zu erkennen, andere jedoch nicht. Im folgenden Beispiel werden beispielsweise *und %%wie gewünscht in einer anderen Farbe gesetzt, und %/%und +und -jedoch ^nicht in einer anderen Farbe.

\documentclass[12pt]{scrartcl}

\usepackage{xcolor}

\usepackage{listings}
\lstset{
language=R,
basicstyle=\footnotesize\ttfamily,
backgroundcolor=\color{white!95!black},
commentstyle=\color{green},
keepspaces=true,
keywordstyle=\color{blue}}

\begin{document}

You can use R as a simple calculator:
\begin{lstlisting}
> # The hash symbol '#' will comment out the rest of the line
> 2 + 3
[1] 5
> 7 - 3
[1] 4
> 4 * 5
[1] 20
> 3^4          # Exponentiation
[1] 81
> 43 %% 10     # Modulo operator
[1] 3
> 43 / 10      # Floating point division
[1] 4.3
> 43 %/% 10    # Integer division
[1] 4
\end{lstlisting}

\end{document}

Bildbeschreibung hier eingeben

Wie erhalte ich eine Ausgabe, bei der alle mathematischen Operatoren blau gesetzt sind?

Antwort1

Für die RSprache listingsdefiniert:

otherkeywords={!,!=,~,$,*,\&,\%/\%,\%*\%,\%\%,<-,<<-,_,/},

Daher sind weder +noch -noch ^aufgeführt, sie müssen hinzugefügt werden.

In diesem Zusammenhang %/%scheint es, dass es nur wie erwartet funktioniert, \%wenn man es davor hinzufügt.otherkeywords

Mit anderen Worten, das Hinzufügen von:

otherkeywords={!,!=,~,$,*,\&,+,-,^,\%,\%/\%,\%*\%,\%\%,<-,<<-,_,/},

zu Ihrem \lstsetmacht was Sie wollen.

\documentclass[12pt]{scrartcl}

\usepackage{xcolor}

\usepackage{listings}
\lstset{
language=R,
basicstyle=\footnotesize\ttfamily,
backgroundcolor=\color{white!95!black},
commentstyle=\color{green},
keepspaces=true,
otherkeywords={!,!=,~,$,*,\&,+,-,^,\%,\%/\%,\%*\%,\%\%,<-,<<-,_,/},
keywordstyle=\color{blue}}

\begin{document}

You can use R as a simple calculator:
\begin{lstlisting}
> # The hash symbol '#' will comment out the rest of the line
> 2 + 3
[1] 5
> 7 - 3
[1] 4
> 4 * 5
[1] 20
> 3^4          # Exponentiation
[1] 81
> 43 %% 10     # Modulo operator
[1] 3
> 43 / 10      # Floating point division
[1] 4.3
> 43 %/% 10    # Integer division
[1] 4
\end{lstlisting}

\end{document} 

Bildbeschreibung hier eingeben

verwandte Informationen