Jakob Richter

Hervorhebungen in Listings


Eine kleine Ergänzung zum Beitrag Quellcode und Latex in der Beamer-Class: Aus didaktischen Gründen kann es sehr hilfreich sein bestimmte Begriffe oder Abschnitte hervorzuheben.

Begriffe Hervorheben

Einzelne Begriffe können recht leicht umformatiert werden. Leider nur (soweit ich es herausfinden konnte) für Wörter, die nicht bereits eingefärbt wurden. Also keine keywords und keine comments. Dafür sind folgende Zeilen in dem unteren kompletten Quelltext zuständig:

28
29
emph={x,test}, %Woerter die hervorgehoben werden sollen, koennen keine keywords oder comments sein.
emphstyle=\color{red}\underbar %rot und unterstrichen

Abschnitte Hervorheben

Es können auch ganze Abschnitte hervorgehoben werden, indem wir eine colorbox um den Code legen. Damit das geht, müssen wir listings klar machen, dass der Latex-Code nicht zu dem anderen Code in listings gehört. Dazu nutzten wir escapechar=@. Das @ kann man theoretisch auch ändern. Das Zeichen darf nur nicht im restlichen Quelltext vorkommen.
So kann mit @\colorbox{highlightcolor}{quelltext hier}@ ein Teil des Quelltextes hervorgehoben werden. Leider wird eine Zeile dadurch etwas höher, sodass eine Linie am Rand zerstückelt wird.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
\documentclass{beamer}
 
\usepackage[utf8x]{inputenc} %An eigene Codierung anpassen! z.B. latin1 anstelle von utf8x
\usepackage[ngerman]{babel}
 
%Definieren uns farbigen Quellcode
\usepackage{color}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}
\definecolor{highlightcolor}{rgb}{1,0.96,0.8}
 
%Damit wir Quellcode nutzen können.
\usepackage{listings}
\lstset{numbers=left,
	numberstyle=\tiny,
	numbersep=5pt,
	breaklines=true,
	showstringspaces=false,
	frame=l ,
	xleftmargin=15pt,
	xrightmargin=15pt,
	basicstyle=\ttfamily\scriptsize, %\scriptsize weg, wenns groesser werden soll
	stepnumber=1,
	keywordstyle=\color{blue},          % keyword style
  	commentstyle=\color{dkgreen},       % comment style
  	stringstyle=\color{mauve},         % string literal style
  	emph={x,test}, %Woerter die hervorgehoben werden sollen, koennen keine keywords oder comments sein.
  	emphstyle=\color{red}\underbar %rot und unterstrichen
}
%Sprache Festelegen
\lstset{language=R}
 
\begin{document}
 
\begin{frame}[fragile] %fragile ist sehr wichtig!
\frametitle{R-Code Minimalbeispiel}
 \begin{lstlisting}[escapechar=@]
library(gridExtra)
test <- tapply(mtcars$hp, mtcars$cyl, function(x) @\colorbox{highlightcolor}{c(mean=round(mean(x)), min=min(x), max=max(x))}@, simplify=T)
test <- simplify2array(test)
grid.table(test)
  \end{lstlisting}
\end{frame}
 
\end{document}

Ergebnis:

Leider gibt es auch keine Einfärbung innerhalb der colorbox. Kann man aber verschmerzen, denke ich.

Leave a Reply