PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Listing für Quelltexte mit best. Aussehen



maceop
23-09-2007, 16:41
Hallo,
ich habe vor kurzem in einem Buch (Java Reflection) ein Listing gesehen, welches ich persönlich recht schön finde. Nun würde mich interessieren ob ich das mit Latex so umsetzen kann und ob es da schon was gibt. Oder muss ich mir das selbst gerade biegen und so machen?

Vielleicht kennt da ja jemand was. Vielen Dank schonmal. Ich hoffe man erkennt was. Falls nicht: Es gibt die Überschrift Listing 1.1 .... in weisser Schrift mit einem grauen Kasten drumherum. Darunter folgt der Quelltext.

maceop
23-09-2007, 17:36
Es muss übrigens nicht exakt dieses Aussehen sein. Bisher habe ich nur immer lstlisting verwendet (mit syntax highlighting für java). ist zwar ok, aber ich finde die umgebung nicht so schön. Ihr könnt ja mal sagen mit welchen Code-Umgebungen ihr arbeitet.

rais
23-09-2007, 23:32
Moin moin,
Generell genügt mir ja, was man mit dem listings-Paket zustande bringt;-)
Mir ist nicht ganz klar, ob Du diesen grauen Balken auf Textbreite (und das Listing entsprechend eingerückt) haben willst oder den Text der caption auf Textbreite und den grauen Balken entsprechend überstehen lassen..
Hier mal ein Beispiel, das den grauen Balken links und rechts des Textbereichs überstehen lässt:


\documentclass{scrreprt}
\usepackage{color,listings}
\newlength{\caplrm}
\setlength{\caplrm}{1em}
\newlength{\capbgw}
\definecolor{capbg}{gray}{0.6}
\definecolor{capfg}{gray}{1}
\makeatletter
\lstnewenvironment{mylstlisting}[2][]{%
\renewcommand\@makecaption[2]{%
\vskip\abovecaptionskip
\setlength{\capbgw}{\linewidth}%
\addtolength{\capbgw}{2\caplrm}%
\hspace*{-\caplrm}\makebox[0pt][l]{{\color{capbg}\rule[-1.25ex]{\capbgw}{4ex}}}\hspace{\caplrm}\parbox{\linewidth }{{\color{capfg}\bfseries##1: ##2}}%
\vskip\belowcaptionskip}%
\lst@TestEOLChar{#2}%ab hier wie lstlisting
\lstset{#1}%
\csname\@lst @SetFirstNumber\endcsname}
{\csname\@lst @SaveFirstNumber\endcsname}
\makeatother
\begin{document}
\chapter{foo}
\noindent\hrulefill\par% nur zur Orientierung
\begin{mylstlisting}[basicstyle={\small\ttfamily},language=Java,caption ={George's \texttt{setObjectColor} code}]
public static void setObjectColor( Object obj, Color color ) {
\end{mylstlisting}
\end{document}

die selbstdefinierten Längen kannst Du Dir ja entsprechend anpassen.
D. h. nun, da ich gerade poste, fällt mir noch n Klinken auf: Wenn Du mehrzeilige captions haben willst, muss der Kram ggf. in eine \colorbox, nicht mit vorangestellter \makebox, gepackt werden. -- da muss dann links und rechts nochmal \fboxsep berücksichtigt bzw. schlicht auf den Wert von \caplrm gesetzt werden.
MfG,

maceop
24-09-2007, 00:45
Danke für die Antwort. Es war so gedacht, dass der graue Kasten links bündig mit dem drüber stehenden text abschließt.

aber war auch nur ein beispiel. ich finde die lstlisting umgebung halt nicht soo schön ;-)

danke für deine antwort. werds bald mal ausprobieren.