PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pfade in Listing



peethebee
03-03-2007, 09:21
Hallo!

Ich nutze das Paket listings, um Quellcode darzustellen. Ich habe mir eine eigene Sprachdefinition geschrieben. Diese erzeugt zwar 8 Errors, aber läuft trotzdem (scheinbar?) korrekt durch.
Ein Problem entsteht nun, wenn ich in einem String einen Pfad habe. Dadurch tritt gelegentlich die Kombination \" auf. Damit hat listings aber scheinbar ein Problem, sodass der String nicht mehr korrekt beendet wird. Das wiederum hat zur Folge, dass die Hervorhebung von Keywords nicht mehr funktioniert.

Hier mein Minimalbeispiel:

\documentclass[12pt]{scrbook}
\usepackage[latin1]{inputenc}
\usepackage{ngerman}
\usepackage[a4paper]{geometry}
\usepackage{courier}
\usepackage{listings}


\lstset{morekeywords={Global,Local,While,WEnd,If,T hen,Select,True,False,ContinueCase,ContinueLoop,De fault,Dim,Const,Do,Until,Enum,Exit,ExitLoop,For,Ne xt,In,Func,Return,EndFunc,ElseIf,Else,include,incl ude-once,NoTrayIcon,ReDim,RequireAdmin,Case,EndSelect, EndSwitch,Switch,EndWith,With,Else,EndIf,or,and},
sensitive=false,
morecomment=[l]{;},
morecomment=[s]{#cs}{#ce},
morecomment=[s]{#comments-start}{#comments-end},
morestring=[b]",
morestring=[d]'}

\lstdefinestyle{std}{frame=single,numbers=left,fir stnumber=1,numbersep=7pt,basicstyle=\ttfamily, breaklines=true, showstringspaces=false, stringstyle=\ttfamily, keywordstyle=\bfseries\ttfamily, commentstyle=\itshape}


\begin{document}
\begin{lstlisting}[caption={Erfolgskontrolle mit If-Anweisungen}, label=if_check, style=std]
If FileExists("D:\") Then
MsgBox(0, "", "D:\ existiert.")
Else
MsgBox(0, "", "D:\ existiert nicht.")
EndIf
\end{lstlisting}
\end{document}


Meine bisherigen Versuche mit escapechars (") oder Escapen zu LaTeX sind fehlgeschlagen. Auch die Forensuche lieferte mir leider keine Anhaltspunkte.

Ein weiteres Problem habe ich mit & mitten im Code. Das muss ich im Moment so escapen: '\&' (wobei ' als Escapezeichen nach LaTeX definiert ist). Gibt es dafür vielleicht eine einfachere Methode?

Vielen Dank für eure Mühe schon mal,
peethebee

peethebee
03-03-2007, 09:26
Unfassbar: Immer direkt nachdem ich nach langer Suche hier poste, finde ich die Lösung ;-)

morestring=[d]" statt morestring=[b]" und die Sache läuft wunderbar...

Bis zum nächsten Mal,
peethebee