PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrere Programmiersprachen mit dem Paket Listings in einem Dokument



Mic_81
07-02-2008, 19:37
Hi Leute!

Ich hätte mal eine Frage bzgl. des Listings-Paket:
Kann man auch unterschiedliche Programmiersprachen in ein Dokument einbinden?
Wäre nämlich sehr geschickt, da ich höchstwahrscheinlich Java, TCL und ggf. Shell-Skript-Code in meiner Doku zur Erklärung verwenden will.
Hab auch schon in der Paket-Doku gestöbert, aber nichts Brauchbares entdecken können!

Gruß
Mic

sofa-surfer
07-02-2008, 20:54
Hab auch schon in der Paket-Doku gestöbert, aber nichts Brauchbares entdecken können!


Dann hast du nicht gut gestöbert ... ;)


\documentclass{article}
\usepackage{listings}

\begin{document}

\begin{lstlisting}[language=C]
#include <R.h>
\end{lstlisting}

\begin{lstlisting}[language=R]
#include <R.h>
\end{lstlisting}

\end{document}

Matthias

Mic_81
08-02-2008, 20:31
Oha! :o

Da hab ich echt nicht richtig "gestöbert"! Vielen Dank! Interessant sind auch die Befehle \lstdefinestyle{style name}{key=value list}, alsolanguage=[dialect]language und defaultdialect=[dialect]language. Da werde ich gleich mal ausprobieren, Java als "default Language" einzustellen und für jede Programmiersprache einen Style zu definieren. Muss nur noch herausfinden, wo ich dann denn Style bei einem Listing angeben muss. Binde meinen Quell-Code wie folgt ein:

\lstinputlisting[caption={bla.java}, label=blabla]{JavaKlassen/bla.java}

Hier sind übrigens mal meine Einstellungen für meinen Java-Code:


\lstset{language=Java, keywordstyle=\color{javaLila}\bfseries, commentstyle=\color{javaGreen}, stringstyle=\color{javaBlue},
numbers=left, numberstyle=\tiny, stepnumber=1, frame=trbl, showstringspaces=false, captionpos=b, breaklines=true,
basicstyle=\rmfamily, morecomment=[s][\color{javaDocBlue}]{/**}{*/},tabsize=2, emph={@author, @deprecated, @param, @return,
@see, @since, @throws, @version, @serial, @serialField, @serialData, @link}, emphstyle=\color{javaDocTags},
extendedchars=true}

Nur der emph-Befehl, um die Javadoc-Keywords hervorzuheben funktioniert nicht. Weiß da noch jemand Bescheid, wieso diese Tags (@author etc.) nicht fett gedruckt werden?

Greetz
Mic

Mic_81
08-02-2008, 21:45
Also mit den unterschiedlichen Styles funktioniert es bei mir wunderbar!
Diese definiere ich im Header meines Dokuments wie folgt:


\lstdefinestyle{java}{language=Java, keywordstyle=\color{javaLila}\bfseries, commentstyle=\color{javaGreen}, stringstyle=\color{javaBlue},
numbers=left, numberstyle=\tiny, stepnumber=1, frame=trbl, showstringspaces=false, captionpos=b, breaklines=true,
basicstyle=\rmfamily, morecomment=[s][\color{javaDocBlue}]{/**}{*/},tabsize=2, emph={@author, @deprecated, @param, @return,
@see, @since, @throws, @version, @serial, @serialField, @serialData, @link}, emphstyle=\color{javaDocTags},
extendedchars=true}


\lstdefinestyle{tcl}{language=tcl, numbers=left, numberstyle=\tiny, stepnumber=1, frame=trbl, showstringspaces=false, captionpos=b, breaklines=true,
basicstyle=\rmfamily}

Mein Listings-Aufruf sieht dann so aus:


\lstinputlisting[caption={a.java}, label=a, style=java]{JavaKlassen/a.java}


\lstinputlisting[caption={b.tcl}, label=b, style=tcl]{JavaKlassen/b.tcl}

Funzt perfekt! :) Aber ich hab immer noch das Problem mit den Javadoc-Tags (s. oben)...:confused:

Mic

Stefan_K
08-02-2008, 22:19
Hallo,

wie wäre:

emph={@author, @deprecated, ... , @link},
emphstyle=\color{javaDocTags}\bfseries, ...

Viele Grüße,

Stefan

Mic_81
08-02-2008, 22:57
Leider geht das auch nicht!:mad:

Es wird noch nicht einmal die Farbe übernommen! Könnte es daran liegen, dass die javadoc-tags hinter einem "*" stehen. Also eben so:



/**
* bla bla bla
*
* @author Max Mustermann
*
*/


Und diese "Sterne" habe ich ja mit folgender Zeile als Kommentare eingestellt:


..., morecomment=[s][\color{javaDocBlue}]{/**}{*/}, ...

Gruß
Mic

Stefan_K
09-02-2008, 00:47
Hallo Mic,

innerhalb eines Kommentars geht das nicht, es liegt tatsächlich an den /** ... */. Versuch folgende Änderung:

morecomment=*[s][\color{blue}]{/**}{*/}

Viele Grüße,

Stefan

Mic_81
09-02-2008, 15:35
Hallo Stefan,

vielen vielen Dank! :) Jetzt funktioniert es! Hier mal mein kompletter Java-Style (von der IDE eclipse übernommen):


\lstdefinestyle{java}{language=Java, keywordstyle=\color{javaLila}\bfseries, commentstyle=\color{javaGreen},
stringstyle=\color{javaBlue}, numbers=left, numberstyle=\tiny, stepnumber=1, frame=trbl, showstringspaces=false,
captionpos=b, breaklines=true, basicstyle=\rmfamily, morecomment=*[s][\color{javaDocBlue}]{/**}{*/},tabsize=2,
emph={@author, @deprecated, @param, @return, @see, @since, @throws, @version, @serial, @serialField, @serialData, @link},
emphstyle=\color{javaDocTags}\bfseries, extendedchars=true}

Und hier die definierten Farben:


% Definieren neuer Farben für den Java-Quelltext
\definecolor{javaBlue}{RGB}{42,0.0,255}
\definecolor{javaGreen}{RGB}{63,127,95}
\definecolor{javaLila}{RGB}{127,0,85}
\definecolor{javaDocBlue}{RGB}{63,95,191}
\definecolor{javaDocTags}{RGB}{127,159,191}

Greetz
Mic