PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : in Zeichenkette Wort hervorheben.



Cinux
03-12-2012, 12:01
Hallo Leute,

mein Problem ist folgendes. Ich habe den folgenden Ruby Quellcode:



# Die Begrüßungsklasse
class Greeter
def initialize(name)
@name = name.capitalize
end

def salute
puts "Hallo #{@name}!"
end
end

# Erstelle ein neues Objekt
g = Greeter.new("Welt")

# Ausgabe "Hallo Welt!"
g.salute

In Zeile 8 befindet sich ein Keyword(@name) innerhalb eines Strings. Dieses Keyword möchte ich allerdings in LaTeX noch einmal seperat hervorheben.

Auch kein Erfolg hat folgende Zeile gebracht:


moredelim=[s][\color{LightBlue}]{\#\{}{\}},


Ich weiß mir leider nicht weiter zu helfen. Habt ihr vielleicht eine Idee wie ich meine Anforderung realisieren kann?

Hier noch das Minimalbeispiel:


\documentclass[a4paper,12pt,bigheadings,xcolor=dvipsnames]{scrartcl}
\setkomafont{disposition}{\normalfont\bfseries}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel,translator}
\usepackage{xcolor}
\usepackage{lmodern}
\usepackage{listings}

\definecolor{LightBlue}{RGB}{33,190,222}
\definecolor{CommandGreen}{RGB}{146,205,0}
\definecolor{RoyalBlue3}{RGB}{58, 95, 205}
\definecolor{Orange3}{RGB}{205, 133, 0}

\lstdefinestyle{FancyRuby}{
language=Ruby,
basicstyle=\ttfamily\fontsize{9}{10}\selectfont\co lor{black},
showspaces=false,
showstringspaces=false,
showtabs=false,
frame=single,
rulecolor=\color{black},
numbers=none,
captionpos=b,
tabsize=2,
breaklines=true,
texcl=true,
moredelim=[s][\color{LightBlue}]{\#\{}{\}},
stringstyle=\color{CommandGreen},
commentstyle=\color{RoyalBlue3},
keywordstyle=\color{Orange3},
emph={@name},
emphstyle=\color{LightBlue}
}

\begin{document}

\lstset{
language=Ruby,
basicstyle=\ttfamily\fontsize{9}{10}\selectfont\co lor{black},
showspaces=false,
showstringspaces=false,
showtabs=false,
frame=single,
rulecolor=\color{black},
numbers=none,
captionpos=b,
tabsize=2,
breaklines=true,
texcl=true,
stringstyle=\color{CommandGreen},
commentstyle=\color{RoyalBlue3},
keywordstyle=\color{Orange3},
emph={@name},
emphstyle=\color{LightBlue}
}
\begin{lstlisting}
# Die Begrüßungsklasse
class Greeter
def initialize(name)
@name = name.capitalize
end

def salute
puts "Hallo #{@name}!"
end
end

# Erstelle ein neues Objekt
g = Greeter.new("Welt")

# Ausgabe "Hallo Welt!"
g.salute
\end{lstlisting}

\end{document}

bobmalaria
03-12-2012, 13:17
hi,

wie waere es einfach @name als keyword hinzuzufuegen?


\documentclass[a4paper,12pt,bigheadings,color=dvipsnames]{scrartcl}
\setkomafont{disposition}{\normalfont\bfseries}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel,translator}
\usepackage{xcolor}
\usepackage{lmodern}
\usepackage{listings}

\definecolor{LightBlue}{RGB}{33,190,222}
\definecolor{CommandGreen}{RGB}{146,205,0}
\definecolor{RoyalBlue3}{RGB}{58, 95, 205}
\definecolor{Orange3}{RGB}{205, 133, 0}

\lstdefinestyle{FancyRuby}{
language=Ruby,
basicstyle=\ttfamily\fontsize{9}{10}\selectfont\co lor{black},
showspaces=false,
showstringspaces=false,
showtabs=false,
frame=single,
rulecolor=\color{black},
numbers=none,
captionpos=b,
tabsize=2,
breaklines=true,
texcl=true,
moredelim=[s][\color{LightBlue}]{\#\{}{\}},
stringstyle=\color{CommandGreen},
commentstyle=\color{RoyalBlue3},
keywordstyle=\color{Orange3},
emph={@name},
emphstyle=\color{LightBlue},
otherkeywords={@name}
}

\begin{document}

\lstset{language=Ruby,style=FancyRuby}
\begin{lstlisting}
# Die Begrüßungsklasse
class Greeter
def initialize(name)
@name = name.capitalize
end

def salute
puts "Hallo #{@name}!"
end
end

# Erstelle ein neues Objekt
g = Greeter.new("Welt")

# Ausgabe "Hallo Welt!"
g.salute
\end{lstlisting}

\end{document}

http://www.mrunix.de/forums/attachment.php?attachmentid=5503&stc=1&d=1354537048

Cinux
03-12-2012, 13:43
Richtig, so funktioniert es.
Allerdings ist das @name nun in der falsche Farbe. Wie du ein paar Zeilen darüber siehst gibt wird das @name erst angelegt und ist in blau geschrieben. Bei deinem Vorschlag allerdings ist die Farbe falsch und wenn ich die Farbe ändere betrifft das ja das gesamte Dokument. Was ich ja auch nicht will. ( abgesehen davon das ich etwas ähnliches wie otherkeywordsstyle anscheinend nicht gibt)

Cinux
10-12-2012, 15:00
Mir ist bis jetzt Leider noch keine Lösung über den Weg gelaufen.

Habt ihr vielleicht noch Ideen oder Ansätze für mich?