PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Syntax Highlight in Code?



sensemann
31-01-2006, 10:13
Hallo alle zusammen,

ich fürchte, hier ist nur der Wunsch der Vater des Gedankens, aber Fragen kostet ja nix:

Ich hab hier für meine Arbeit diverse Schnipsel XML, die ich per \lstinputlisting einfüge. Gibt es denn eine Möglichkeit, dass der Code irgendwie automatisch ein Syntax-Highlighting erfährt? Von Hand ist das einfach nicht machbar...

Danke!

fhess
31-01-2006, 10:17
Hi,

einfach ein
\lstset{language=XML}
davor setzen.

Fabian

sensemann
31-01-2006, 10:43
Kommt das nicht auf's gleiche, wie wenn ich die language option nehme?

\lstinputlisting[language=XML, ...]

Der output bleibt da bei mir aber schwarz. Also unter Syntax Highlighting meinte ich jetzt Farben, so wie in XML Editoren ...

fhess
31-01-2006, 10:51
Das wurde erst kürzlich diskutiert: http://www.mrunix.de/forums/showthread.php?t=42890

Ansonsten hilft auch ein
\lstset{
language=XML,
keywordstyle=\color{blue}\bfseries,
identifierstyle=\color{orange},
stringstyle=\color{green}
}

Das hilft aber auch nur insofern, als dass dann lediglich
?xml version="1.0" encoding="iso-8859-1" ? etwas bunt erscheint.

countbela666
31-01-2006, 11:57
Der output bleibt da bei mir aber schwarz. Also unter Syntax Highlighting meinte ich jetzt Farben, so wie in XML Editoren ...Lies doch bitte einfach mal die Doku (S. 5, Abs. 1.3 "Figure out the appearance"):
Keywords are typeset bold, comments in italic shape, and spaces in strings appear as _. You don’t like these settings? Look at this: ...Danach wird die Anwendung der schon von fhess geposteten Befehle am Beispiel erklärt.

Das hilft aber auch nur insofern, als dass dann etwas bunt erscheint.ich dachte, das sei der Sinn von Syntax-Highlighting...

Grüße,
Marcel

fhess
31-01-2006, 12:09
ich dachte, das sei der Sinn von Syntax-Highlighting...


ach, der hat den text in klammern verschluckt... habs rauseditiert.

sensemann
01-02-2006, 08:22
Danker erstmal ... das mit dem keywordstyle hatte ich gelesen, aber nicht, dass man noch welche hinzufügen kann. Ansonsten bringt's ja aber nicht viel. Es geht ja weniger darum, dass bestimmte keywords farbig dargestellt werden, sondern halt alle Elemente und Attribute - da werd ich wohl nicht drumrum kommen, erst alle vorkommenden als Keywords hinzuzufügen :(

Etwas schade, ich dachte da gäb's vielleicht schon ne Logik, die sich das selber denkt.

Ciao

sensemann
01-02-2006, 09:29
Hab noch'n kleines Problem. Wie kann ich die Tagzeichen einfärben? Außerdem funktionieren Elementnamen mit 'nem Bindestrich nicht :(


morekeywords={<, >, </, />},
keywordstyle=\color{RoyalBlue},

geht genausowenig wie


morekeywords={\textless, \textgreater, \textless/, /\textgreater},
keywordstyle=\color{RoyalBlue},

Und wie gesagt, bei


morekeywords={component, elem-ent, monitor, foo-bar}

werden nur component und monitor eingefärbt.

Ich schätze mal, es hat was mit der kodierung zu tun? Da hab ich leider keinen Schimmer von :confused:

countbela666
01-02-2006, 18:21
Hallöchen,

Wie kann ich die Tagzeichen einfärben? Außerdem funktionieren Elementnamen mit 'nem Bindestrich nicht [...] Ich schätze mal, es hat was mit der kodierung zu tun?Nee, hat's nicht, sondern etwas mit der Klasse einzelner Zeichen. Die sind entweder Buchstaben, Ziffern oder "was anderes", und ein Bindestrich ist so in ziemlich jeder mir bekannten Programmiersprache ein Operator/Befehl (sogar in Brainfuck) und deshalb nicht für keywords/Bezeichner etc. geeignet. Kann man aber ändern und zwar wie folgt (staht übrigens auch in der Doku; S. 41):

\documentclass{article}
\usepackage{listings,color}
\lstset{morekeywords={component, elem-ent, monitor, foo-bar},
keywordstyle=\color{red},
alsoletter=-,
otherkeywords={<,>}}
\begin{document}
\begin{lstlisting}
bla component < bla foo-bar blupp
\end{lstlisting}
\end{document}Wenn du Operatoren als keyword definieren willst, geht das mit otherkeywords (s. Doku ebd.).

Grüße,
Marcel

sensemann
01-02-2006, 19:27
Oh man, sorry dafür. Da hätt ich genauer lesen müssen.

Tausend Dank ;)

Update: es geht trotzdem nicht ... warum auch immer.


\lstinputlisting[ language=XML, basicstyle=\tiny,
alsoletter={-},
%% xml syntax
classoffset=0,
otherkeywords={<,>,/,=},keywordstyle=\color{RoyalBlue},
%% attribute keywords
classoffset=1,
morekeywords={role, class, id, value, name},keywordstyle=\color{Red},
%% element keywords
classoffset=2,
morekeywords={component, foo-bar, monitor},
keywordstyle=\color{BrickRed},
%% comments
classoffset=0,
commentstyle=\color{PineGreen},
u.s.w. ]{#1}