Anzeige:
Ergebnis 1 bis 12 von 12

Thema: Listing immer auf neue Seite packen

  1. #1
    Registrierter Benutzer
    Registriert seit
    18.09.2005
    Beiträge
    32

    Listing immer auf neue Seite packen

    Heyho.

    Es gibt da ein Problem, mit dem ich maximal überfordert bin. Ich muss ein leider ziemlich langes Listing (knapp eine Seite) innerhalb meines Textes anzeigen. Aufgrund der Länge des Listings würde ich mir wünschen, dass es immer auf einer neuen Seite beginnt. Allerdings möchte ich nicht, dass auf der Seite davor eine große Lücke entsteht, stattdessen soll sich das Listing immer an die Stelle schieben, die eine gefüllte vorhergehende Seite gewährleistet. Wenn ich das jetzt so lese, dann hoffe ich, mich ein wenig verständlich ausgedrückt zu haben. Selbstverständlich könnte ich das immer alles mit Hand zurechtbasteln, da aber am Text immer wieder Änderungen vorgenommen werden, wäre eine "dynamische" Lösung weitaus besser. Für das Listing benutze ich (wahrscheinlich wenig überraschend) das Paket "listings".

    Besten Dank vorab und Gruß aus HB,

    Toob

  2. #2
    Registrierter Benutzer Avatar von sofa-surfer
    Registriert seit
    23.05.2006
    Beiträge
    2.032
    Hallo,
    kannst du das Listing nicht einfach in eine Gleitumgebung packen und das dann auf einer Page of Floats platzieren?

    Matthias

  3. #3
    Registrierter Benutzer
    Registriert seit
    18.09.2005
    Beiträge
    32
    Zitat Zitat von sofa-surfer
    Hallo,
    kannst du das Listing nicht einfach in eine Gleitumgebung packen und das dann auf einer Page of Floats platzieren?

    Matthias
    Das weiß ich noch nicht, da ich all diese Begriffe gerade zum ersten Mal gehört/gelesen habe. Ich werde gleich mal recherchieren gehen, da Gleitumgebung bezüglich meiner Frage ziemlich passend klingt.

    Danke Dir schon mal,

    Toob

  4. #4
    Registrierter Benutzer
    Registriert seit
    18.09.2005
    Beiträge
    32

    Smile Besten Dank...

    Tatsächlich gibt es für das listings-Paket die Option "float", die wie andere Gleitumgebungen mit den entsprechenden Werten htbp belegt werden kann. Nun kriege ich zwar immer eine Warnung, dass das Listing nicht an die gewünschte Stelle passt, dafür stimmt aber das Ergebnis.

    Sehr cool, allerbesten Dank mal wieder,

    Toob

  5. #5
    Registrierter Benutzer
    Registriert seit
    18.09.2005
    Beiträge
    32

    Alles zurück,

    ... leider funktioniert es doch noch nicht wie gewünscht. Ich versuche mich mal an einem Minimalbeispiel:

    Code:
    \documentclass[pdftex,a4paper,12pt]{scrreprt}
    \usepackage[latin1]{inputenc}
    \usepackage{listings}
    
    \begin{document}
    \lstset{
    	commentstyle=\textit,
    	basicstyle=\small,
    	frame=b,
    	numbers=left,
    	numberstyle=\tiny,
    	aboveskip=30pt,
    	belowskip=30pt,
    	xleftmargin=40pt,
    	xrightmargin=40pt,
    	lineskip=-2pt,
    	captionpos=b,
    	tabsize=4
    }
    
    \chapter{Kapitelüberschrift}
    Hier steht zunächst eine ganze Menge Text, zumindest aber soviel,
    dass das nachfolgende (hier aber gekürzte) Listing bei einer Länge 
    von knapp einer Seite nicht mehr komplett auf diese Seite passt.\\
    \lstset{language=XML}
    \begin{lstlisting}[float=ht,
    	caption={Einfaches \gloss{xml}-Schema für eine Rechnung},
    	label={lst:xsdexample}
    ]{}
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    (...)
    </xs:schema>
    \end{lstlisting}
    Hier nun der nachfolgende Text, der auf der ersten Seite (und 
    damit vor dem Listing) auftauchen soll.
    Soweit funktioniert das auch, das Listing wird zunächst an den Beginn der nächsten Seite geschoben. Schreibe ich hinter dem Listing aber sehr viel weiter, taucht der Text trotzdem noch vor dem Listing auf, welches dann eben irgendwann auf die dritte Seite (usw) geschoben wird. Eigentlich hatte ich mir gewünscht, dass es an der ersten Stelle, an die es hinpasst, stehen bleibt und der nachfolgende Text dann eben auch nach dem Listing auftaucht. Wo liegt denn mein Fehler?

  6. #6
    Registrierter Benutzer
    Registriert seit
    26.05.2006
    Beiträge
    879
    Zitat Zitat von toob
    ... leider funktioniert es doch noch nicht wie gewünscht. Ich versuche mich mal an einem Minimalbeispiel:

    Soweit funktioniert das auch, das Listing wird zunächst an den Beginn der nächsten Seite geschoben. Schreibe ich hinter dem Listing aber sehr viel weiter, taucht der Text trotzdem noch vor dem Listing auf, welches dann eben irgendwann auf die dritte Seite (usw) geschoben wird. Eigentlich hatte ich mir gewünscht, dass es an der ersten Stelle, an die es hinpasst, stehen bleibt und der nachfolgende Text dann eben auch nach dem Listing auftaucht. Wo liegt denn mein Fehler?
    na du hast doch extra in deinem ersten Posting angegeben, dass die Seite davor aufgefüllt werden soll ????
    Wenn du das nicht willst, dann nimm kein GLEITobjekt, sondern mach einfach

    \clearpage
    \begin{lstlisting}
    ....

    _ohne_ die float option.

    Abgesehen davon solltest du \\ nur in Ausnahmefällen benutzen. In deinem Beispiel ist es jedenfalls fehl am Platze ...

    rc

  7. #7
    Registrierter Benutzer
    Registriert seit
    18.09.2005
    Beiträge
    32
    Jetzt verstehe ich leider gar nichts mehr. Ein \clearpage scheint in meinem Fall zu bewirken, dass an der entsprechenden Stelle ein Seitenumbruch stattfindet. Dann wird der leere Platz vor dem Listing aber nicht aufgefüllt. Mit der float-Angabe wird dieser Platz zwar ausgefüllt, aber das Listing scheint komplett aus dem Text herausgenommen und immer weiter nach hinten geschoben zu werden. Was ich eigentlich bräuchte wäre aber ein Verschieben auf die nächste freie Seite, die vorhergehende sollte bis zum Ende aufgefüllt werden, nachfolgender Text dann aber nach dem Listing fortgeführt werden. Oje, mir fehlt da ganz klar die LaTeX-Erfahrung.


    PS: Wie erreiche ich denn einen Absatz im Text? \\ ist bisher der einzige mir bekannte Weg.

    Edit: Rechtschreibung.

  8. #8
    Registrierter Benutzer Avatar von sofa-surfer
    Registriert seit
    23.05.2006
    Beiträge
    2.032
    \\ --> Zeilenumbruch

    Leerzeile in der .tex-Datei --> Absatz
    \par --> Absatz

    generell sinnvoll (?) --> einführende Doku lesen

  9. #9
    Registrierter Benutzer
    Registriert seit
    26.05.2006
    Beiträge
    879
    Zitat Zitat von toob
    Jetzt verstehe ich leider gar nichts mehr. Ein \clearpage scheint in meinem Fall zu bewirken, dass an der entsprechenden Stelle ein Seitenumbruch stattfindet. Dann wird der leere Platz vor dem Listing aber nicht aufgefüllt. Mit der float-Angabe wird dieser Platz zwar ausgefüllt, aber das Listing scheint komplett aus dem Text herausgenommen und immer weiter nach hinten geschoben zu werden. Was ich eigentlich bräuchte wäre aber ein Verschieben auf die nächste freie Seite, die vorhergehende sollte bis zum Ende aufgefüllt werden, nachfolgender Text dann aber nach dem Listing fortgeführt werden. Oje, mir fehlt da ganz klar die LaTeX-Erfahrung.
    wenn du float=p machst, kommt es garantiert auf die nächste Seite! Es sei denn und hier liegt wohl das Problem, das listing ist länger als eine Seite, dann wandert es automatisch an das Ende des Kapitels. Und länger als eine Seite ist es schon, wenn es nur 1pt ist (einschließlich der Über/Unterschrift.

    rc

  10. #10
    Registrierter Benutzer
    Registriert seit
    18.09.2005
    Beiträge
    32
    Zitat Zitat von RedCloud
    wenn du float=p machst, kommt es garantiert auf die nächste Seite! Es sei denn und hier liegt wohl das Problem, das listing ist länger als eine Seite, dann wandert es automatisch an das Ende des Kapitels. Und länger als eine Seite ist es schon, wenn es nur 1pt ist (einschließlich der Über/Unterschrift.

    rc
    Aah, das scheint tatsächlich der Fall zu sein. Die oben angesprochene Warnung besagt tatsächlich, dass der/die/das Float zu groß für eine Seite ist. Ich dachte, das bezog sich auf die erste Seite und nicht bereits auf die Zielseite. Dann muss ich mal schauen, ob sich da nicht was kürzen lässt.

    Vielen Dank Euch allen, mit der Bitte um Verzeihung für etwas ungenaue Auskünfte meinerseits und ein schönes Wochenende,

    Toob

  11. #11
    Registrierter Benutzer
    Registriert seit
    26.05.2006
    Beiträge
    879
    Zitat Zitat von toob
    Aah, das scheint tatsächlich der Fall zu sein. Die oben angesprochene Warnung besagt tatsächlich, dass der/die/das Float zu groß für eine Seite ist. Ich dachte, das bezog sich auf die erste Seite und nicht bereits auf die Zielseite. Dann muss ich mal schauen, ob sich da nicht was kürzen lässt.
    du kannst den Zeilenabstand im listing etwas verringern -> doku

    rc

  12. #12
    Registrierter Benutzer
    Registriert seit
    18.09.2005
    Beiträge
    32

    Smile

    Ich habe jetzt einfach \aboveskip und \belowskip im \lstset etwas verringert. Und alles ist gut. Danke nochmals.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •