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.