Zeilenumbruch


%!PS-Adobe-1.0
%%Creator: Holger Gehringer
%%Title: Beispiel fuer Zeilenumbruch
%%CreationDate: Mo, 23.11.1998
%%DocumentMedia: A4 595 842 0 () ()
%%Orientation: Portrait
%%Pages: (atend)
%%DocumentFonts: Times-Roman Helvetica
%%EndComments

% Zeilenumbruch

/Wordbreak ( ) def               % Trennzeichen zwischen Worten (Leerzeichen)

% BreaklntoLines umbricht einen Text-String in Zeilen vorgegebener Laenge. Die
% Prozedur benoetigt 3 Parameter: Den Text-String, die Satzbreite und die Pro-
% zedur, die aufgerufen wird, wenn das Ende der Zeile erreicht ist. Diese Pro-
% zedur erhaelt die aktuelle Zeile als Argument auf dem Stack.
/BreakIntoLines
{ /Proc exch def
  /Linewidth exch def            % Satzbreite
  /Textstring exch def
  /Breakwidth Wordbreak          % Breite des Leerezeichens im aktuellen Font
  stringwidth pop def
  /Curwidth 0 def                % Die Breite der laufenden Zeile
  /LastWordbreak 0 def           % Index zum letzten Leerzeichen
  /Startchar 0 def               % Index zum ersten Zeichen der laufenden Zeile
  /RestOfText Textstring def     % Unverarbeiteter Rest des Textes
  
  { RestOfText
    Wordbreak search             % search sucht nach dem ersten Leerzeichen und
    { /Nextword exch def pop     % liefert, falls erfolgreich, das Wort vor dem
      /RestOfText exch def       % Leerzeichen und den restlichen Text
      /Wordwidth Nextword        % Breite des Wortes
      stringwidth pop def
      Curwidth Wordwidth add
      Linewidth gt               % Passt das Wort noch in die Zeile?
      { Textstring Startchar     % Nein. Laufende Zeile als Parameter an Proc
        LastWordbreak            % uebergeben (Zeile ausgeben) und Variablen
   Startchar sub                 % fuer naechste Zeile initialisieren.
   getinterval Proc
   /Startchar
   LastWordbreak def
   /Curwidth Wordwidth
   Breakwidth add def
      }
      { /Curwidth Curwidth       % Ja: Wort in laufende Zeile aufnehmen.
        Wordwidth add
   Breakwidth add def
      } ifelse
      /LastWordbreak
      LastWordbreak Nextword     % Index zum letzten Leerzeichen um ein Wort
      length add 1 add def       % weiterschieben
    }
    { pop exit } ifelse          % Kein blank mehr gefunden: Schleifenende.
  } loop
  /Lastchar                      % Nicht vergessen: letzte Zeile ausgeben
  Textstring length def
  Textstring Startchar
  Lastchar Startchar sub
  getinterval Proc
} def

%%EndProlog

%%Page: 1 1
/Times-Roman findfont 16 scalefont setfont

/YLine 650 def                   % Vertikale Position auf der Seite

(Es darf daher getrost, was auch von allen, deren Sinne, weil sie unter\
 Sternen, die, wie der Dichter sagt, zu doerren, statt zu leuchten, geschaffen\
 sind, geboren sind, vertrocknet sind, behauptet wird, enthauptet werden, dass\
 hier in einem sozumassen und im Sinne der Zeit, dieselbe im negativen als\
 Hydra betrachtet, hydratherapeutischen Moment ersten Ranges, immer angesichts\
 dessen, dass, wie oben, keine mit Rosenfingern den springenden Punkt ihrer\
 schlechthin unvoreingenommenen Hoffnung auf eine, sagen wir, schwansinnige\
 oder wesenzielle Erweiterung des natuerlichen Stoffeldes zusamt mit der\
 Freiheit des Individuums vor dem Gesetz ihrer Volksseele zu verraten den Mut,\
 was sage ich, die Verruchtheit haben wird, einem Moment, wie ihm in Handel,\
 Wandel, Kunst und Wissenschaft allueberall dieselbe Erscheinung, dieselbe\
 Tendenz den Arm bietet, und welches bei allem, ja vielleicht eben trotz\
 allem, als ein mehr oder minder undulationsfaehiger Ausdruck einer ganz\
 bestimmten und im weitesten Verfolge excoesen\
 Weltauffasseraumwortkindundkunstanschauung kaum mehr zu unterschlagen\
 versucht werden zu wollen vermag - gegenuebergestanden und beigewohnt werden\
 zu duerfen gelten lassen zu muessen sein moechte. \261 Christian Morgenstern)
 
420                              % Satzbreite 420 Punkt
{ 72 YLine moveto show           % Diese Prozedur wird als Parameter an Break-
  /YLine YLine 18 sub def        % IntoLines uebergeben. Sie geht an den Anfang
}                                % der naechsten Zeile, liest einen String vom
                                 % Stack und gibt ihn aus.
BreakIntoLines

showpage

%%Trailer
%%Pages: 1


Vorschau:

Download PostScript-File

© Holger Gehringer, Dezember 1998