PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : lstlisting und XML



sewid2k
20-07-2006, 09:27
Hi!

Ich nutze ein lstlisting um verschiedene Code-Passagen in mein Dokument einzufügen. Darunter auch einige Zeilen XML. Wenn ich folgende Zeilen einfüge:


\lstset{language=XML}
\begin{lstlisting}[caption=Setzen und löschen von Feldern]
<field="feld1" value="wert1" />
<!-- Das Feld "feld1" hat nun den Wert "wert1" -->

<unset field="feld1" />
<!-- Das Feld "feld1" wurde gelöscht - es existiert jetzt nicht mehr -->
\end{lstlisting}

dann wird das ganze auch schön farblich hervorgehoben - zu schön. Es werden nämlich auch die "Strings" in Anführungszeichen in den Kommentaren hervorgehoben, was ziemlich doof aussieht. Wie bekomme ich es hin, dass alles, was in einem Kommentar steht, gleich eingefärbt wird?

Im Header definiere ich mein lstlisting wie folgt:

\lstset{
commentstyle=\itshape\color{darkgreen},
keywordstyle=\bfseries\color{darkblue},
stringstyle=\color{darkred},
language=JAVA,
%backgroundcolor=\color{dunkelgrau},
numbers=left, % Zeilennummer links
numberstyle=\tiny, % Zeilennummer klein
stepnumber=1, % Z.nr in 1er schritten
numbersep=5pt,
breaklines=true, % Zeilenumbruch
breakautoindent=true, % Bei Zeilenumbruch einrücken
tabsize=4, % Breite eines Tabulators
postbreak=\space,
showspaces=false, % Keine Leerzeichensymbole
showtabs=false, % Keine Tabsymbole
showstringspaces=false,% Leerzeichen in Strings
extendedchars=true, % Erweiterte Symbole
frame=lines,
basicstyle=\scriptsize,
mathescape=false}

Gruß
sewid

countbela666
20-07-2006, 18:36
\lstset{language=XML,morecomment=[s]{!--}{--}}wäre eine Möglichkeit.

Grüße,
Marcel

sewid2k
21-07-2006, 10:37
Klappt!
Vielen Dank!

FelixB
25-04-2007, 15:58
bei mir klappt aber so einiges noch nicht...

die erste Zeile wird fett gedruckt, alle weiteren kursiv. Farbig markiert wir dhier rein gar nichts :(



\lstset{language=XML,morecomment=[s]{!--}{--}}
\begin{lstlisting}
< xml>
< a att="'123"' >
text
< /a >
< /xml >
\end{lstlisting}


habe die Tags hier aufgetrennt, weil die sonst nicht angezeigt wurden.


\lstset{
commentstyle=\itshape\color{darkgreen},
keywordstyle=\bfseries\color{darkblue},
stringstyle=\color{darkred},
extendedchars=true,
basicstyle=\scriptsize\ttfamily,
%basicstyle=\tiny\ttfamily,
tabsize=2,
keywordstyle=\textbf,
commentstyle=\color{grau},
stringstyle=\textit,
numbers=left,
numberstyle=\tiny,
% für schönen Zeilenumbruch
breakautoindent = true,
breakindent = 2em,
breaklines = true,
postbreak = ,
%prebreak = \raisebox{-.8ex}[0ex][0ex]{\ensuremath{\lrcorner}},
prebreak = \raisebox{-.8ex}[0ex][0ex]{\Righttorque},
showspaces=false, % Keine Leerzeichensymbole
showtabs=false, % Keine Tabsymbole
showstringspaces=false,% Leerzeichen in Strings
}


hat jemand gue Tipps?

danke!
Felix

countbela666
25-04-2007, 16:01
Hallo, Felix,

erstell doch bitte ein lauffähiges Minimalbeispiel, das deinen Fehler reproduziert.

Grüße
Marcel

countbela666
25-04-2007, 17:01
die erste Zeile wird fett gedruckt, alle weiteren kursiv. Farbig markiert wir dhier rein gar nichts :(Die farbige Hervorhebung wird von dir ja auch überschrieben. Anfänglich für keywords mit \bfseries\color{darkblue} definiert, überschreibst du sie sechs Zeilen später wieder mit \textbf; bei stringstyle machst du dasselbe. Einen Kommentar hast du nicht im Beispielcode. Kein Wunder also.

Das alles ab der zweiten Zeile kursiv dargestellt wird, liegt an der Tatsache, dass du den String falsch einleitest: mit "' statt korrekt mit ".

Hier mal ein funktionierendes Beispiel:

\documentclass{scrartcl}
\usepackage{listings,xcolor,courier}
\definecolor{darkgreen}{named}{green}
\definecolor{darkblue}{named}{blue}
\definecolor{darkred}{named}{red}
\definecolor{grau}{named}{gray}
\let\Righttorque\relax
\lstset{
commentstyle=\itshape\color{darkgreen},
keywordstyle=\bfseries\color{darkblue},
stringstyle=\color{darkred},
extendedchars=true,
basicstyle=\scriptsize\ttfamily,
%basicstyle=\tiny\ttfamily,
tabsize=2,
% keywordstyle=\textbf,
commentstyle=\color{grau},
% stringstyle=\textit,
numbers=left,
numberstyle=\tiny,
% für schönen Zeilenumbruch
breakautoindent = true,
breakindent = 2em,
breaklines = true,
postbreak = ,
%prebreak = \raisebox{-.8ex}[0ex][0ex]{\ensuremath{\lrcorner}},
prebreak = \raisebox{-.8ex}[0ex][0ex]{\Righttorque},
showspaces=false, % Keine Leerzeichensymbole
showtabs=false, % Keine Tabsymbole
showstringspaces=false,% Leerzeichen in Strings
}
\begin{document}
\lstset{language=XML,morecomment=[s]{!--}{--}}
\begin{lstlisting}

<xml>
<a att="123"> <!--was <a att="'123"'>-->
<!-->text<-->
</a>
</xml>

\end{lstlisting}
\end{document}Grüße
Marcel