peethebee
03-03-2007, 10: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
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