Problem mit Packet listings Thema ist als GELÖST markiert

Schriftbild, Absätze und Auflistungen einstellen


Tanata

Problem mit Packet listings

Beitrag 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

Xenara
Forum-Meister
Forum-Meister
Beiträge: 682
Registriert: Mi 25. Nov 2009, 09:41

Beitrag 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?

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2759
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Minimalbeispiel

Beitrag 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

Tanata

Problem mit Packet listings

Beitrag 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

Tanata

Problem mit Packet listings

Beitrag 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

Xenara
Forum-Meister
Forum-Meister
Beiträge: 682
Registriert: Mi 25. Nov 2009, 09:41

Beitrag 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} 

Tanata

Problem mit Packet listings

Beitrag 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

Xenara
Forum-Meister
Forum-Meister
Beiträge: 682
Registriert: Mi 25. Nov 2009, 09:41

Beitrag von Xenara »

Dann würde mich nur noch interessieren, ob mein MB jetzt funktioniert hat oder nicht.

Tanata

Problem mit Packet listings

Beitrag 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

Xenara
Forum-Meister
Forum-Meister
Beiträge: 682
Registriert: Mi 25. Nov 2009, 09:41

Beitrag 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.

Antworten