PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Listing-Frage



beacher_pille88
24-07-2012, 13:23
Hallo Leute,

ich bin neu hier und wollte euch erstmal herzlichst begrüßen ;)

Gleich mal zum Thema: Ich schreibe meine Masterarbeit mit Latex unter Linux (TexLive und Kile).

Jetzt habe ich 2 Programmiersprachen verwendet: Python und C. In der Latex-Vorlage steht:



\lstset{
language = {C}, % Grundsprache ist C
frame = {tb}, % none, (top, right, bottom, and left directly) trbl or TRBL
captionpos = {b}, % Beschriftung ist unterhalb
basicstyle = {\footnotesize\tt}, % Schriftart
keywordstyle = {\color{keywd1}}, % Farbe für die Keywords wie public, void, object u.s.w.
commentstyle = {\color{comment}}, % Farbe der Kommentare
stringstyle = {\color{string}}, % Farbe der Zeichenketten
numbers = {left}, % Zeilennummern links vom Code
numberstyle = {\tiny}, % kleine Zeilennummern
numbersep = {10pt},
breaklines = {true}, % Wordwrap a.k.a. Zeilenumbruch aktiviert
showstringspaces = {false},
emph = {double,bool,int,unsigned,char,true,false,void}, emphstyle=\color{keywd1},
emph = {Assert,Test}, emphstyle=\color{string},
emph = {[2]\using,\#define,\#ifdef,\#endif}, emphstyle={[2]\color{keywd1}},
emph = {[3]KeyEventArgs,Keys,String}, emphstyle={[3]\color{keywd2}},
xleftmargin = {20pt}
}


Meine Listing binde ich mit folgendem ein:



\begin{lstlisting}[label={lis:bla},caption={test}]
...
\end{lstlisting}


Da findet die Formatierung ja aber nur für C statt ... wie kann ich jetzt noch seperat sagen, dass das eine Listing in C ist und das andere in Python?


vlg

Sepp99
24-07-2012, 14:33
Kannst du jedes mal umstellen mit

\lstset{
language=....,
}

Bitte verwende zur Darstellung des Codes die #-Taste!

Gruß, Sepp.-
Nachtrag:
oder

\begin{lstlisting}[label={lis:bla},caption={test},language=....]
...
\end{lstlisting}

hakaze
24-07-2012, 14:43
Du kannst direkt beim jeweiligen listing angeben, welche Sprache es ist (im Prinzip können alle Parameter aus lstset auch lokal in jedem listing geändert/übergeben werden):
\begin{lstlisting}[label={lis:bla},caption={test in C}, language=C]
... C-code ...
\end{lstlisting}

\begin{lstlisting}[label={lis:bla2},caption={test in python}, language=Python]
... Python-Code ...
\end{lstlisting}

EDIT: zu langsam getippt ;)

beacher_pille88
24-07-2012, 17:26
Versteh ich das richtig, dass ich mir quasi 2 Formatierungen erstellen und mit lstset festlegen kann?

Sodass ich dann vor dem Listingobjekt zusätzlich noch die Sprache angeben muss und es auf das jeweilige lstset zurück greift??

hakaze
24-07-2012, 18:09
lstset legt die globalen Parameter für alle Listings ab dem letzten Aufruf von lstset fest.

Was du möchtest geht wohl eher in die Richtung eigener Styles mittels lstdefinestyle (siehe die Dokumentation, z.B. Abschnitt 3.1):
You could even write ‘\lstdefinestyle{C++}{language=C++,style=numbers}’ . Style and language names are independent of each other and so might coincide. Moreover it is possible to activate other styles. Du könntest so zwei Stile festlegen, die Formatierungsanweisung und auch schon die Wahl der Programmiersprache beinhalten. Dann würde beim jeweiligen Listing die Angabe des jeweiligen Styles ausreichen:

\begin{lstlisting}[label={lis:bla},caption={test in C}, style=C++]
... C-code ...
\end{lstlisting}oder eben mit lstset umschalten, wenn danach nur noch Listings der entsprechenden Sprache kommen.