Seite 1 von 2

Problem mit Packet listings

Verfasst: Mo 28. Jun 2010, 16:38
von Tanata
Hallo LaTeX-Freunde,
mit folgendem Code benutze ich das listings package und habe eigene Listen für die Verwendung von Access-VBA-Code geschrieben, die ich hier weglasse.
\documentclass[12pt,a4paper]{book}
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[usenames]{color}
\usepackage{array}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{listings}

\lstdefinelanguage{VBA}{morekeywords={…Liste…},
	sensitive=false,
	morecomment=[l]Rem,
	morecomment=[l]',
	morestring=[b]",
	emph={…Liste…},
	emphstyle=\itshape}
	
\lstloadlanguages{VBA}
\lstset{%
	language=VBA,
	basicstyle=\small,
	keywordstyle=\color{blue}\bfseries,
	commentstyle=\color{green}\itshape,
	tabsize=1,
	extendedchars=false,
	inputencoding=utf8,
	breaklines=true,
	showstringspaces=false,
	stringstyle=\sffamily,
	numbers=left,
	numberstyle=\tiny,
	stepnumber=2,
	numbersep=5pt}
[\code]

Alles funktioniert wie gewünscht, bis auf eine Sache: für einen Kommentar, der mit Rem oder ' eingeleitet ist, greift für die speziellen deutschen Umlaute nicht die hier in diesem Code definierte Weise, also die Umlaute werden nicht in grün und nicht in itshape gesetzt. Allerdings der Rest des Kommentartextes wird richtig wie gewünscht gesetzt.

Ich hatte vermutet, es liegt daran, dass ich den inputencoding=utf8 nicht gesetzt hatte, doch auch jetzt, wie in dem obigen Code, funktioniert es nicht. Auch wenn ich extendedchars=true setze, erhalte ich mehrere Fehlermeldungen. 

Was könnte hier das Problem sein und wie kann ich die Umlaute innerhalb der Rem-und-'-Zeilen wie gewünscht setzen lassen?

Danke für Hinweise.
Tanata

Verfasst: Mo 28. Jun 2010, 17:01
von Xenara
Du lieferst leider kein vollständiges, kompilierbares Minimalbeispiel und ich habe gerade keine Zeit, daraus was zu basteln.

extendedchars=true ist afaik tatsächlich für Umlaute zuständig.

Weshalb verschweigst du die Fehlermeldungen, die du bekommst?

Minimalbeispiel

Verfasst: Mo 28. Jun 2010, 17:03
von Stefan Kottwitz
Hallo Tanata,

wenn Du ein übersetzbares Beispiel angeben würdest, welches das Problem aufzeigt, könnte man es einfach testen und ggf. ausbessern.
So bleibt Raten anhand der Parameter, oder der jeweilige Leser baut sich selbst ein Problembeispiel nach, wofür sich nicht jeder die Zeit nimmt. Siehe minimalbeispiel.de.

Viele Grüße,

Stefan

Problem mit Packet listings

Verfasst: Di 29. Jun 2010, 10:48
von Tanata
Verzeihung, hier ein komplettes Beispiel:
\documentclass[12pt,a4paper]{book}
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[usenames]{color}
\usepackage{array}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{listings}

\lstdefinelanguage{VBA}{morekeywords={And, As, Byte, Call, Case, Compare, CDbl, Datebase, Date, Dim, Else, ElseIf, End, Error, Exit, Explicit, False, Function, GoTo, If, IIF, Integer, Not, Nothing, Null, Object, On, Option, Or, Private, Resume, String, Single, Select, Set, Static, Sub, Then, True, To,},
	sensitive=false,
	morecomment=[l]Rem,
	morecomment=[l]',
	morestring=[b]",
	emph={acFormBar, acEditMenu, acCurrent, acEntire, acMenuVer70, acSaveYes, acViewNormal, acForm, acDataErrAdded, acNewRec, acDataErrContinue, Cancel, CancelEvent, Close, CurrentDb, DefaultValue, DateValue, DAO, Description, DoCmd, DoMenuItem, Err, Error, Error$, $, Execute,  FindRecord, Forms, FindFirst, IsNull, Me, MsgBox, GoToControl, GoToRecord, NewData, Nz, Maximize, Number, OpenForm, Parent, Recordset, Requery, Response, SetFocus, stDocName, stLinkCriteria, Value, vbExclamation, vbOK, vbOKCancel, vbInformation, vbYes, vbNo, vbYesNo, vbCancel, vbQuestion, vbYesNoCancel, Visible,},
	emphstyle=\itshape}
	
\lstloadlanguages{VBA,VBScript}
\lstset{%
	language=VBA,
	basicstyle=\small,
	keywordstyle=\color{blue}\bfseries,
	commentstyle=\color{green}\itshape,
	tabsize=1,
	extendedchars=false,
	inputencoding=utf8,
	breaklines=true,
	showstringspaces=false,
	stringstyle=\sffamily,
	numbers=left,
	numberstyle=\tiny,
	stepnumber=2,
	numbersep=5pt}

\begin{document}
\begin{lstlisting}
Rem Die in diesem Kommentar vorhandenen Umlaute, wie in für, ändern, Aufführung, werden nicht wie gewünscht gesetzt.
\end{lstlisting}
\end{document}
Könnt ihr den Fehler jetzt nachvollziehen?

Gruß
Tanata

Problem mit Packet listings

Verfasst: Di 29. Jun 2010, 11:00
von Tanata
Für den Fall
extendedchars=true
erhalte ich die Fehlermeldung
! Package inputenc Error: Unicode char \u8:\expandafter not set up for use with LaTeX
und
! Package inputenc Error: Keyboard character used is undefined
Damit kann ich nicht wirklich was anfangen. Habt ihr da eine Idee?

Gruß
Tanata

Verfasst: Di 29. Jun 2010, 11:00
von Xenara
Jup, jetzt ist das nachvollziehbar :)

Hier der Code, wies bei mir funktioniert (ich musste nur für mein System utf8 auf latin1 ändern), es lag wie vermutet an extendedchars=false. Mit true klappts.
\documentclass[12pt,a4paper]{book} 
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}	
\usepackage[ngerman]{babel} 
\usepackage[usenames]{color} 
\usepackage{array} 
\usepackage{booktabs} 
\usepackage{longtable} 
\usepackage{listings} 

\lstdefinelanguage{VBA}{morekeywords={And, As, Byte, Call, Case, Compare, CDbl, Datebase, Date, Dim, Else, ElseIf, End, Error, Exit, Explicit, False, Function, GoTo, If, IIF, Integer, Not, Nothing, Null, Object, On, Option, Or, Private, Resume, String, Single, Select, Set, Static, Sub, Then, True, To,}, 
   sensitive=false, 
   morecomment=[l]Rem, 
   morecomment=[l]', 
   morestring=[b]", 
   emph={acFormBar, acEditMenu, acCurrent, acEntire, acMenuVer70, acSaveYes, acViewNormal, acForm, acDataErrAdded, acNewRec, acDataErrContinue, Cancel, CancelEvent, Close, CurrentDb, DefaultValue, DateValue, DAO, Description, DoCmd, DoMenuItem, Err, Error, Error$, $, Execute,  FindRecord, Forms, FindFirst, IsNull, Me, MsgBox, GoToControl, GoToRecord, NewData, Nz, Maximize, Number, OpenForm, Parent, Recordset, Requery, Response, SetFocus, stDocName, stLinkCriteria, Value, vbExclamation, vbOK, vbOKCancel, vbInformation, vbYes, vbNo, vbYesNo, vbCancel, vbQuestion, vbYesNoCancel, Visible,}, 
   emphstyle=\itshape} 
    
\lstloadlanguages{VBA,VBScript} 
\lstset{% 
   language=VBA, 
   basicstyle=\small, 
   keywordstyle=\color{blue}\bfseries, 
   commentstyle=\color{green}\itshape, 
   tabsize=1, 
   extendedchars=true, 
   inputencoding=latin1, 
   breaklines=true, 
   showstringspaces=false, 
   stringstyle=\sffamily, 
   numbers=left, 
   numberstyle=\tiny, 
   stepnumber=2, 
   numbersep=5pt} 

\begin{document} 
\begin{lstlisting} 
Rem Die in diesem Kommentar vorhandenen Umlaute, wie in für, ändern, Aufführung, werden nicht wie gewünscht gesetzt. 
\end{lstlisting} 
\end{document} 

Problem mit Packet listings

Verfasst: Di 29. Jun 2010, 11:19
von Tanata
Habe noch einmal die Dokumentation zum Packet listings durchforstet und habe etwas gefunden. Für
texcl=true
in der folgenden Deklaration, also mit
\lstset{..., 
    texcl=true,
    ....}
tritt der Fehler im Minimalbeispiel nicht mehr auf. Ich verstehe es zwar nicht wirklich, aber es funktioniert und das ist gut so.

Danke fürs Zuhören.

Lieben Gruß
Tanata

Verfasst: Di 29. Jun 2010, 11:22
von Xenara
Dann würde mich nur noch interessieren, ob mein MB jetzt funktioniert hat oder nicht.

Problem mit Packet listings

Verfasst: Di 29. Jun 2010, 11:24
von Tanata
Hallo Xenara,

das liegt in Wirklichkeit an dem Encoding utf8, ich arbeite mit LaTex unter OpenSuse. Mit latin1 taucht das Problem nicht auf, nur mit utf8. Wenn du mehr wissen willst, in der Dokumentation zum listings Packet steht da mehr zu, was ich aber nicht wirklich verstehe.

Und was ein "escape to LateX" ist weiß ich auch nicht, doch das soll
texcl=true
zustande bringen. Es geht im Minimalbeispiel. Jetzt schaue ich, ob es in meiner echten LaTeX-Datei auch so funktioniert. Dank.

Gruß, Tanata

Verfasst: Di 29. Jun 2010, 11:35
von Xenara
Ah, ok. Ich arbeite auf WinXP standardmässig mit latin1, daher habe ich es umgestellt, und nachdem der Fehler mit den extendedchars=true behoben war, habe ich nicht mehr weiter nachgeforscht.
Gut, dass du eine Lösung gefunden hast.