PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \lstset && bestimmte tags mit farbe hinterlegen - MÖGLICH?!



schnitzelhirte
29-06-2006, 09:58
Hallo liebe mrunix gemeinde,

ich habe einen quelltext in mein latex-dokument einfgefügt und möchte nun bestimmt tags mit farbe hinterlegen. Dafür verwende ich das paket listings. einen bestimmten tag einzufärben ist kein problem (z.b alles zwischen /* und */ => morecomment=[s][\color{red}]{/*-}{*/}), aber wie kann ich listings so konfigurieren, dass der hintergrund dieses tags farbig wird?!
ich habe es bereits so versucht: backgroundcolor= [s][\color{green}]{<\%}{\%>}, leider ohne erfolg.


hier meine konfigurierte listings:


\usepackage{listings}
\lstset{
numbers=left,
numberstyle=\tiny,
numbersep=5pt,
breaklines=true,
backgroundcolor= [s][\color{green}]{<\%}{\%>},
morecomment=[s][\color{red}]{/*-}{*/}

wie gesagt, es klappt alles wunderbar bis auf das einfärben des hintergrunds eine bestimmten tags (den tag zwischen < % und %>).
habe auch schon diverse andere varianten versucht und auch hier im forum gestöbert, aber leider keine lösung gefunden :-(!

danke schon mal dem latex profi hier, der mit weiter helfen kann.

schönen tag

ich
}

Caveman
29-06-2006, 11:29
Kann es sein, dass der Backslash hier Probleme macht?
Probier doch mal ein anderes Zeichen als %.
z.B.: backgroundcolor=[s][\color{green}]{<§}{§>}

schnitzelhirte
29-06-2006, 11:52
daran liegt es leider nicht, denn das funktioniert ohne probleme, dh. alles zeichen zwischen < % und % > werden in rot geschrieben:

morecomment=[s][\color{red}]{<\%}{\%>}

wenn ich die slashes weg lassen, dann bekomme ich eine fehlermeldung mit den verweis auf lstset.

countbela666
30-06-2006, 14:28
Moin,

die Option backgroundcolor kann meines Wissens nur für das farbige Hinterlegen des gesamten Quellcodes genutzt werden, das Produzieren einer farbigen Box um bestimmte Elemente ist damit nicht vorgesehen.

Eine richtig schöne Lösung für das Problem hab ich nicht gefunden, hier also nur zwei "unschöne" Beispiele. Folgende Variante eignet sich nur für die Hinterlegung einzelner Terminalsymbole der verwendeten Grammatik, sprich ein Bezeichner oder ein Operand, da ansonsten die verwendete Box je nach Token eine andere Höhe aufweist:

\documentclass{article}
\usepackage{listings,color}
\begin{document}
\lstset{basicstyle=\ttfamily,moredelim=[is][\colorbox{red}]{/*}{*/}}
\begin{lstlisting}
body onload=""
!-- logo --
a name="top"/a
table border="0" width="100%" /*cellpadding*/="0" cellspacing="0" align="center"
tr
\end{lstlisting}
\end{document}Die nächste Variante funktioniert mit beliebigen Ausschnitten des Quellcodes, muss aufgrund eines Escapes zu LaTeX jedoch aufwändiger eingeleitet werden:

\documentclass{article}
\usepackage{listings,color}
\providecommand{\cb}[1]{\colorbox{blue}{#1}}
\begin{document}
\lstset{basicstyle=\ttfamily,escapeinside={~}{~}}
\begin{lstlisting}
body onload=""
~\cb{!-- logo --}~
a name="top"/a
table border="0" width="100%" cellpadding="0" cellspacing="0" align="center"
tr
\end{lstlisting}
\end{document}Grüße,
Marcel

schnitzelhirte
03-07-2006, 11:52
Servus Marcel,

danke für die prima lösungvorschläge. ich habe mich für die zweite variante entschieden...aber wie in aller welt kommt man nur auf solche lösungen (wenn man kein board mit schlauen leuten hat). warscheinlich nach 8 jahren latexen :-)...

danke nochmals und noch einen schönen tag

lutz