PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeilennummer, Seitenrand, Quellcode



dynamic_cast
26-01-2008, 16:21
Ich möchte gern eine graue Box haben in der Quellcode aus einer C++ Datei geladen wird. Dafür verwende ich folgende Befehle:

\definecolor{dunkelgrau}{gray}{0.35}
\definecolor{hellgrau}{gray}{0.95}

\fcolorbox{dunkelgrau}{hellgrau}{
\parbox{\linewidth}{
\begin{linenumbers}
\lstset{language=C++, numbers=left, numberstyle=\small}
\lstinputlisting[breaklines, firstline=1, lastline=14 ]{Datei.cpp}
\end{linenumbers}
}
}

Das funktioniert soweit auch. Das Problem ist, das die Zeilennummerierung im Seitenrand platziert werden. Ich möchte die Zeilennumern aber gern innerhalb der grauen Box haben. Mein Gedanke ist eine Minipage drumherum zu bauen, um die Zeilennumern im Seitenrand der Minipage zu platzieren. Ich habe aber keine Minipage mit Seitenrand gefunden. Hat jemand Rat?

SpockinDresden
26-01-2008, 17:01
nur mal so ein "schnellschuss aus der hüfte":


\hspace*{-2em}\fcolorbox{dunkelgrau}{hellgrau}{\hspace*{2em}
% der Rest von Deinem Code

(habs spontan mal ausprobiert - das klappt zumindest)

dynamic_cast
26-01-2008, 21:03
Ok das sieht schon mal sehr gut aus. Wobei mir folgendes besser gefällt, weil der Rahmen an die Seitenbreite bzw. dem Strich in Kopf und Fusszeile angepasst wird.

\fcolorbox{dunkelgrau}{hellgrau}{\hspace*{2em}
\parbox{\linewidth-3em}

Bei beiden Lösungen entsteht aber das Problem, dass der Quellcode und die graue Box nicht über die Seiten umgebrochen werden. Anders herum kann man auch \fcolorbox und \parbox weglassen und nur die vom Paket listings zur verfügung stehenden Befehle verwenden.

\lstset{language=C++, numbers=left, numberstyle=\small, numbersep=-10pt}
\lstinputlisting[frame=tlrb, numbers=left, breaklines, firstline=1, lastline=30 ]{Datei.cpp}

Dabei werden die Zeilennumern um -10pt verschoben. Setzt man nun im Quellcode File alles um einen tab nach rechts, siehts auch wider gut aus.

Aber wie bekomme ich jetzt einen grauen Hintergrund ?

Was mir auch schon oft bei latex aufgefallen ist das bei einige Rahmen die Obere Kante im Ausdruck fehlt. Woran liegt das ?

dynamic_cast
26-01-2008, 21:11
ich weis eigentlich gar nicht was ich hier für ein Streß mache ... steht doch alles in der Paket Dokumentation

\lstset{language=C++, numbers=left, numberstyle=\small, numbersep=-10pt, backgroundcolor=\color{hellgrau}}
\lstinputlisting[frame=tlrb, numbers=left, breaklines, firstline=1, lastline=30 ]{Datei.cpp}

graue Box + Seitenumbruch + Zeilennummern in Box

Wie gesagt die Befehle in der Quellcode Datei müssen aber ein Stück nach rechts geschoben werden.

voss
26-01-2008, 21:19
Ich möchte gern eine graue Box haben in der Quellcode aus einer C++ Datei geladen wird. Dafür verwende ich folgende Befehle:

\definecolor{dunkelgrau}{gray}{0.35}
\definecolor{hellgrau}{gray}{0.95}

\fcolorbox{dunkelgrau}{hellgrau}{
\parbox{\linewidth}{
\begin{linenumbers}
\lstset{language=C++, numbers=left, numberstyle=\small}
\lstinputlisting[breaklines, firstline=1, lastline=14 ]{Datei.cpp}
\end{linenumbers}
}
}

Das funktioniert soweit auch. Das Problem ist, das die Zeilennummerierung im Seitenrand platziert werden. Ich möchte die Zeilennumern aber gern innerhalb der grauen Box haben. Mein Gedanke ist eine Minipage drumherum zu bauen, um die Zeilennumern im Seitenrand der Minipage zu platzieren. Ich habe aber keine Minipage mit Seitenrand gefunden. Hat jemand Rat?

xleftmargin=2em beispielsweise

steht alles in der Doku

Herbert

Tailor
02-07-2008, 12:12
Ok, kann mir das nochmal einer bitte gaaanz langsam und für doofe erklären?
Ich kann listings leider nicht nutzen weil ich in 4DSkript schreibe und das wird von dem Paket nicht unterstützt.

Deswegen benutze ich moreverb. Mehr als Zeilennummern und grauen Hintergrund (box) will ich dafür eh nich. Kann mir also einer erklären wie ich diese Colorbox Geschichte mit
/begin{listing}[]{}
/end{listing}
unter einen Hut bekomme.
Sorry wenn das hier vielleicht n total profanes Ding is aber ich stocher schon seit Tagen in Dokumentationen und Foren rum und komm doch nicht weiter.

Ach ja, nur der Vollständigkeit halber. Ich will evtl. die eingefügten Code Segmente hinten im Anhang in einem Verzeichnis auflisten. Geht das mit Labels oder muss ich dann aus ner ganz anderen Richtung kommen?