PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeilenumbruch bei listings verhindern



stefanx80
13-12-2004, 15:39
Hallo ihr!

Ich verwende das listings-Paket. Nun möchte ich dafür sorgen, das meine Code-Schnipsel nicht umgebrochen werden.

Mein erster Gedanke war, einfach das Listing in eine nopagebreak-Umgebung einzufassen. Das funktioniert aber so nicht. Habt ihr eine bessere Idee?

Code:

%Programmcode einbinden
\usepackage{listings}

%Listeneinstellungen
\definecolor{listinggray}{gray}{0.95}
\lstloadlanguages{XML}
\lstset{backgroundcolor=\color{listinggray},framer ound=ffff,basicstyle=\small,stringstyle=\ttfamily, keywordstyle=\bfseries,
extendedchars=true,frame=single,language=XML}

%
%
\begin{nopagebreak}
\lstinputlisting[caption={bla},label=bla]{bla.lst}
\end{nopagebreak}
%
%



Stefan

peschmae
13-12-2004, 16:02
Wo sollen die denn hin wenn sie nicht umgebrochen werden? Einfach geradeaus in die Mauer bzw. ins nichts?

MfG Peschmä

Detrius
13-12-2004, 16:26
\lstset{breaklines=false}

Aber wie peschmae schon gesagt hat, wird der Code dann irgendwo einfach abgeschnitten und das ist ja wohl auch nicht das wahre. ;)

stefanx80
13-12-2004, 16:34
Wo sollen die denn hin wenn sie nicht umgebrochen werden? Einfach geradeaus in die Mauer bzw. ins nichts?


Sie sind nie länger als ne Seite.
Ich hätte sie gerne wie Gleitobjekte, also das sie sich automatisch zum Beispiel auf extra Seiten sammeln, wenn es viele sind, und direkt im Text stehen bleiben bzw. höchstens auf die nächste Seite komplett umgebrochen werden, wenn sie über einen Seitenrand hinausragen.

Ist einigermaßen verständlich was ich will? :)
Die Mauer ist nicht mein Ziel und auch nicht das Nichts.

Stefan

PS: Die Wirkung von \lstset{breaklines=false} ist übrigens gleich Null. Ich vermute mal wegen der Kapselung meiner Listings in die nopagebreak-Umgebungen, richtig?

Detrius
13-12-2004, 16:39
Oh, ich hatte Dich missverstanden. Ich dachte, Dir ginge es um den Zeilenumbruch und nicht um einen Seitenumbruch. Ich sollte wohl genauer lesen. :eek:

peschmae
13-12-2004, 18:24
[x] peschmae sollte auch genauer lesen :)

MfG Peschmä

blubb
14-12-2004, 10:43
In eine Minipage packen? (Bzw. gleich in eine Gleitumgebung?)

stefanx80
14-12-2004, 13:50
Also quasi so?

%
%
\begin{minipage}[t]{120mm}
\lstinputlisting[caption={Auschnitt ...},label=commandGrammarListing]{commandGrammarListing.lst}
\end{mainipage}
%
%

Kann ich da eigentlich t und die Breite weglassen?

Und gibt es eine allgemeine Gleitumgebung? Also ich kenn bisher nur figure, und table...

Stefan

blubb
14-12-2004, 14:53
> Kann ich da eigentlich t und die Breite weglassen?
t ja, Breite nein (aber \begin{minipage}{\textwidth} hilft dir vermutlich auch schon weiter)

Ansonsten:
FAQ 6.1.14 Wie kann man neue Typen von Gleitumgebungen (,floats`) z.B. für weitere Arten von Tafeln oder Programm-Code erzeugen?

stefanx80
14-12-2004, 16:23
FAQ-Links sind toll, aber...
...nach ein wenig rumgestöbere sehe ich, das mich die FAQ nicht wirklich weiterbringt, weil jeder von da abschreibt und es nicht verständlicher dadurch wird...

Also in meiner Latex-Datei binde ich zur Verwendung von float dieses ein:

% let it flow - bel. Gleitumgebungen
\usepackage{float}

und dann sowas?

\newfloat{listingfloat}{tp}{lot}[section]

tp? (Nicht h, nicht t, tolle FAQ... :-/)
lot (Endung Hilfsdatei? Welche Hilfe? Welche Datei?)
section? (die section in der es verwendet wird? oder was?)

Und die Verwendung dann später in der Syntax:

\begin{listingfloat}
% listing
\end{listingfloat}

?

Klingt gerade so, als wäre minipage millionenfach leichter.. *g*

stefanx80
15-12-2004, 21:16
So, hab jetzt mal mit minipage probiert, also:

\begin{minipage}{\textwidth}
\lstinputlisting[caption={Einführendes Beispiel},label=bsp]{bst.lst}
\end{minipage}

Das Problem ist, das er das Listing jetzt komplett auf die nächsten Seite haut, und den freien Platz, der dadurch auf der ursprünglichen Seite nicht wie bei Gleitobjekten üblich, mit Text füllt. Gibts da irgendeine Funktion für?

Stefan

Christoph
16-12-2004, 09:36
Es gibt auch \begin{samepage} .... \end{samepage}

blubb
16-12-2004, 10:06
Lies mal die Listings-Doku.
Es gibt einen Parameter float für \lstinputlisting

Minimalbeispiel als test.tex speichern:

\documentclass{scrartcl}
\usepackage{blindtext}
\usepackage{listings}
\lstloadlanguages{[LaTeX]TeX}

\begin{document}
\lstlistoflistings

\Blindtext

\lstinputlisting[caption={bla},label=bla,float]{test.tex}

\Blindtext
\end{document}

Und nächstes mal sagst du bitte gleich was du willst:
Ein Programmcode mit \lstinputlisting in einer Gleitumgebung lesen.

Ansonsten steht in meiner ersten Antwort schon
(Bzw. gleich in eine Gleitumgebung?)
Hast du es einfach mal in eine figure-Umgebung gepackt?

Wobei listings.sty dir schon alles bietet was du brauchst (zumindest soweit du deine Anforderungen bisher stückchenweise verraten hast.

stefanx80
16-12-2004, 13:21
Und nächstes mal sagst du bitte gleich was du willst:

Ist dir eigentlich mal bewußt geworden, das man eventuell sein Anliegen nicht so klar formulieren kann, wenn man nicht den Überblick hat, wie du ihn anscheinend besitzt?

Wieso geht das eigentlich in anderen Support-Foren auch, nur beim Thema Latex werden die Leute immer so patzig. Finde ich echt unmöglich. Sorry.

stefanx80
16-12-2004, 13:26
\lstinputlisting[caption={bla},label=bla,float]{test.tex}
[/CODE]


Denn das ist die Lösung, danke.