Text/Plain mit dem StarWriter umarbeiten

Was soll verschönert werden?

Es geht hier vor allem um das Formatieren von schnödem ASCII-Text. Diesen bekommt man an jeder Straßenecke und öfters als man denkt. Gerne wird einem solcher Text vor allem in Emails zugestellt, dann meist noch ohne oder mit irgendwelchen Umlauten. Eine weitere Quelle sind Textformate anderer textverarbeitenden Produkte aus denen man den Text einfacher als man (zuerst) denkt extrahieren kann. Dazu gehören LaTeX-Sourcen oder so was wie MS-Word für DOS.

Auch für Leute, die einen vorhandenen StarWriter-Text mal so richtig neu durchformatieren wollen, hält dieser Text einiges nützliche vor.

Behandelt werden: die Autoformatierfunktion, Textbearbeitung mit einfachen Makros, der Einsatz der Suchen&Ersetzen-Funktion und die Text in Tabelle Funktion

Umlaute, Umschrift und Co.

Text aus Newsgroups, Emails oder FAQLs (Frequently Asked Question Lists (Listen mit häufig gestellen Fragen)) sind häufig bar jeglicher Umlaute, da auf verschiedenen Plattformen verschiedene Zeichencodierungen üblich sind. Möchte man seine Kommunikations-Umwelt schonen, so sollte man stets Umlaute ersetzen. Üblich sind hier die bekannte Umschrift
 

Ä 

Ö 

Ü 

ä 

ö 

ü 

ß 

Ae 

Oe 

Ue 

ae 

oe 

ue 

ss 

oder TeX Umlaute
 

Ä 

Ö 

Ü 

ä 

ö 

ü 

ß 

"A 

"O 

"U 

"a 

"o 

"u 

"s 

 

Was zwar zum Lesen in Newsreadern nützlich ist, ist jedoch zum weiterverarbeiten in Textdokumenten ärgerlich, da man sowohl Umschrift, als auch TeX-Umlaute nicht via Suchen&Ersetzen in Umlaute konvertieren kann. So würde aus Neuer Neür bzw. aus er sagte: "Ach", er sagte Äch". Hier helfen entweder Geduld oder meine Makros, die ein wenig Linderung schaffen.
Makros zum importieren und exportieren von TeX-Umlauten, Umschrift, Unix-Umlauten usw. findet ihr unter:
http://hyperg.uni-paderborn.de/StarWriter/Makros/UmlautKonvertierer.zip

Format|Autoformat|Bearbeiten

Von Texten, die in bestimmten Beschreibungssprachen abgefaßt sind, mal abgesehen, kann man ASCII-Texte recht gut mit der Autoformatierfunktion bearbeiten. Dazu sollte man das Dokument speichern, der Cursor nicht in einer Tabelle stehen und nichts markiert sein.

Generell sollte man vor jeder globalen Aktion das Dokument speichern damit man gegebenenfalls auf die Datei|Letzte Version zurückgreifen kann (es gibt aber auch noch diese Bearbeiten|Rückgängig-Funktion).

Das Autoformatieren eines Dokuments startet man unter Format|Autoformat|Bearbeiten Seite: Nachbearbeitung Button: [Formatieren]. Auf der Seite: Nachbearbeitung kann man noch einiges einstellen, was die einzelnen Sachen bedeuten kann man in der StarWriter-Hilfe unter Nachbearbeitung nachlesen. Das einzige auf das ich hier eingehen möchte ist: „Zusammenfassen von einzeiligen Absätzen ab ... Zeilenfüllung“

Untereinander stehende einzeilige Absätze werden vom Autoformatierer zu einem Absatz zusammengefaßt, wenn sie eine gewisse Zeichenanzahl aufweisen. Je weniger Zeichen pro Zeile das Dokument aufweist, desto geringer sollte man hier die Prozentzahl wählen. Bei einem Zeilenumbruch bei 72 Zeichen kommt man gut mit der Voreinstellung 50% zurecht.

Enthält das Dokument keinerlei Auflistungen oder sonstige Passagen mit kurzer Zeilenlänge sollte man sogar 0% einstellen.

„Autoformatieren“ mit Makros

Da Überschriften in den Texten, die ich bekomme, nicht gut erkannt werden, sind die einzigen Funktionen die ich beim Autoformatieren gebrauchen kann:

Das kann man auch mit Makros durchführen. Im Gegensatz zu den obigen komplexeren Makros, die Umlauten wiederherstellen sollen, gebe ich hier die Makros im Quelltext an, da man deren Funktionsweise so besser individuell an die zu konvertierenden Texte anpassen kann.

Harte Zeilenenden in Absätze umwandeln

Viele der Texte, die ich bekomme, enthalten eine Leerzeile, an den Stellen, die ein Absatzende bedeuten sollen. Das folgende Makro sucht nach Leerzeilen und faßt ansonsten einzelne Absätze zu einem Gesamtabsatz zusammen. Ein Nachteil dieser Vorgehensweise ist, das auch Aufzählungen usw. zusammengefaßt werden.

SUB EntferneZeilenUmbruch
'Von oben nach unten arbeiten
Selection.GoToStartOfDoc
'immer Absatzende Betrachten
Selection.GoToEndOfPara()
'solange bis man das ganze Dokument durchgeforstet hat
DO UNTIL Selection.IsEndOfDoc
 'am Absatzende stehe ich mal schauen ob der naechste Absatz eine "Leerzeile" ist
 Selection.GoRight()
 'wenn der Anfang des nächsten Absatzes auch ein Absatzende ist
 'dann ist das wohl eine Leerzeile --> nichts zu tun!
 IF (Selection.IsStartOfPara and Selection.IsEndOfPara) THEN
 'Absatzende löschen
 Selection.Delete()
 ELSE
 'ansonsten füge die Absätze zusammen
 'Absatzende löschen
 Selection.Backspace()
 'Leerzeichen einfügen
 Selection.Insert(" ")
 ENDIF
 'und weiter...
 Selection.GoToEndOfPara()
LOOP
'Falls durch diese Aktion Leerzeichen zuviel sind
ActiveWindow.ReplaceAll(" ", " ")
END SUB

Gerade Anführungszeichen durch typografische ersetzen ("Hallo" zu „Hallo“)

Dieses Makro ist ein Prototyp für viele Konvertierungen dieser Art, man kann auf diese Weise z.B. auch Bulletzeichen suchen und ersetzen.

SUB WandeleAnfuehrungszeichen
'Suchoptionen wie "Nur ganze Wörter" ausstellen
WITH ActiveWindow.SearchSettings
 .Backward = False
 .InSelection = False
 .CaseSensitive = False
 .RegExp = False
 .WordOnly = False
END WITH

'<Leerzeichen><Anführungszeichen> ersetzen
ActiveWindow.ReplaceAll(" "+Chr(34), " "+Chr(132))
'<Anführungszeichen><Leerzeichen> ersetzen
ActiveWindow.ReplaceAll(Chr(34)+" ", Chr(147)+" ")

'Nach "regulärem Ausdruck suchen"
ActiveWindow.SearchSettings.RegExp = True
'<Absatzbeginn><Anführungszeichen> ersetzen
ActiveWindow.ReplaceAll("^"+Chr(34), Chr(132))
'<Anführungszeichen><Absatzende> ersetzen
ActiveWindow.ReplaceAll(Chr(34)+"$", Chr(147))
END SUB

Die globalen „SearchSettings“ sollte man vor jeder Suchaktion in Makros setzen (auch bei dem Makro EntferneZeilenUmbruch), in der StarBasic-Hilfe findet man sie unter der SearchAll-Methode. Statt Chr(<Zahl>) kann man das zu Suchende auch einfach aus dem Text in das Makro kopieren.

Bulletzeichen ersetzen durch

Aufzählungen die mit Spiegelstrichen oder Aufzählungspunkten gegliedert sind kann man entweder mit so einem Makro wie WandeleAnfuehrungszeichen oder mit Hilfe der Suche&Ersetze Funktion in den Griff bekommen. Mehr dazu unter Aufzählungen erstellen.

Was nach dem Autoformatieren kommt

Auf die richtige Reihenfolge kommt es an. Was trivial klingt, kann einen in der Praxis ganz schön Ärgern. Ist der Text in einer Beschreibungssprache abgefaßt, so muß man natürlich erste die Überschriften formatieren, bevor man die entsprechenden Tags entfernt. Anders Beispiel, wenn man zuerst die Überschriften formatiert und dann via Suchen&Ersetzen Leerzeilen entfernt gehen eventuell einige Überschriften verloren. Vieles was jetzt kommt basiert auf der Suchen&Ersetzen-Funktion von StarWriter, man kann darus jeweils auch Makros erstellen ein Beispiel dafür ist das obige Makro WandeleAnfuehrungszeichen.

Leerzeilen und Leerzeichen entfernen

Leere Zeilen sollten zu Beginn der Formatierarbeit entfernt werden, da sonst einiges an Absatzformatierung durcheinander geraten kann. Nach Leerzeilen kann man mit Hilfe eines „Regulären Ausdrucks“ suchen. Die Syntax regulärer Ausdrücke findet man in der Hilfefunktion (unter Suchen&Ersetzen) oder mit dem HelpAgent (im Suchen&Ersetzen-Dialog in Höhe der CheckBox „Regulärer Ausdruck“ die rechte Maustaste drücken).


Der Suchen nach-Ausdruck muß ^$ (Absatzanfang+Absatzende) sein.
Der Ersetzen durch-Ausdruck muß leer bleiben.
Die CheckBox Regulärer Ausdruck muß aktiviert sein.
Dann einfach auf [Ersetze alle] drücken

Nach überflüssigen Leerzeichen sollte zu Ende der Formatierarbeit gesucht werden, da in reinen Textdokumenten mit Leerzeichen oft Einrückungen und Tabellen simuliert werden. Nach doppelten Leerzeichen sucht man, mit:
Suchen nach: <zwei Leerzeichen>
Ersetzen durch: <ein Leerzeichen>
[Ersetze alle]
Dabei wird das komplette Dokument nach zwei Leerzeichen durchsucht und jeweils durch ein Leerzeichen ersetzt, das bedeutet, daß aus drei Leerzeichen in Folge zwei Leerzeichen gemacht werden. Also muß man ggf. ein paar mal auf [Ersetze alle] drücken.

Nach Leerzeichen am Ende eines Absatzes sucht man mit <Leerzeichen>+"$" nach führenden Leerzeichen mit "^"+<Leerzeichen>.

Aufzählungen erstellen

Mit Minuszeichen oder Sternchen erstellte Aufzählungen, bzw. den Aufzählungen, die das Autoformatieren erstellt kann man mit dem [Suche alle]-Button zu Leibe rücken.

Die folgende Verwendung von Suche&Ersetze ist bei ähnlich gelagerten Problemen gut einsetzbar und StarWriter spezifisch.

In diesem Beispiel seien die Aufzählungen wie folgt aufgebaut:

* Erster Punkt
* Zweiter Punkt

Im Suche&Ersetze-Dialog gibt man bei Suche nach ^*<Leerzeichen> ein (Absatzbeginn Sternchen Leerzeichen), markiert die CheckBox Regulärer Ausdruck und drückt dann auf den [Suche alle]-Button (den Dialog auflassen).

Nun sind alle *<Leerzeichen> an Absatzanfängen markiert:


 

Da zur Anwendung eines Absatzformates nur ein Teil des Absatzes markiert sein muß, kann man sich nun ein Absatzformat z.B. Textkörper (mit Doppelklick aus dem Stylist) auswählen und Aufzählungen erstellen, in dem man auf den Aufzählungs-Button drückt:


So werden mit einem Mausklick aus allen *-Aufzählungen Bulletlisten!

Zum Schluß auf den [Ersetzte alle]-Button des Suche&Ersetze-Dialogs drücken und alle *<Leerzeichen> werden entfernt.

Besteht die Aufzählung aus einem Sternchen gefolgt von einem Tabulator lautet der reguläre Ausdruck: ^*\t

Überschriftsebenen festlegen

Muß man die Überschriftsebenen rein aus dem Kontext festlegen empfehle ich die Ganzseitenansicht (Ansicht|Ganzer Bildschirm <Umschalt><Strg>+<i>), den Navigator zur Anzeige der schon erstellten Überschriftsebenen (Bearbeiten|Navigator <F5>) und den Gießkannenmodus des Stylists (Format|Stylist <F11>).

 

Sind die Überschriften mit (manuellen) Kapitelnummern versehen, kann man analog zu Aufzählungen erstellen vorgehen.

Mal angenommen das Dokument sei wie folgt durchnumeriert:

1<Tabulator>Erstes Kapitel
1.1<Tabulator>Erstes Unterkapitel
1.1.1<Tabulator>Erster Abschnitt

Für die erste Überschriftsebene (Kapitel) sucht man nach den regulären Ausdruck: ^.\t
Drückt auf [Suche alle] und wählt die Absatzvorlage Überschrift 1 (Doppelklick im Sylist)
zur Prüfung der Ebenen kann man den Navigator einsetzen.

Der reguläre Ausdruck für die Unterkapitel lautet: ^.\..\t
und für die Abschnitte: ^.\..\..\t

Selbstverständlich kann man eine gegebene manuelle Kapitelnumerierung durch eine automatische Kapitelnumerierung ersetzen, in den man jeweils nach dem Zuweisen der Absatzvorlage Überschrift <n> auf [Ersetze alle] im Suchen&Ersetzen-Dialog drückt. Die Kapitelnumerierung des StarWriters findet man unter Format|Numerierung/Aufzählung.

Alles Textkörper

In einem neu formatierten Dokument wird man eventuell sehr spät feststellen, daß noch einige Absätze mit dem Absatzformat Standard formatiert sind, macht nichts auch Absatzformate kann man Suchen&Ersetzen.


Ich hoffe das Bild erläutert alles.

Mit dieser Methode kann man auch die Überschriftsebenen global verschieben. Wenn man z.B. beim Zusammenfügen von Dokumenten an vielen Stellen noch Kapitelüberschriften einfügen muß, jedoch die Absatzformate Überschrift 1 bis Überschrift 3 schon vergeben sind. Kann man Überschrift 3 mit Überschrift 4 ersetzen; Überschrift 2 mit Überschrift 3 ersetzen und Überschrift 1 mit Überschrift 2 ersetzen...

...und wieder ist die Reihenfolge entscheidend!

Falls nur einzelne Kapitel betroffen sind, sollte man jedoch mit dem Navigator Ebenen erhöhen und senken.

Tabellen erstellen

Mit Tabulatorstops formatierte Tabellen kann man sehr schön mit der Funktion Text <-> Tabelle (unter Extras) erzeugen. Tabellen in einem ASCII-Text mit Leerzeichen formatiert sind bearbeite ich immer so:

 Nord Süd West Ost
1. Quartal 23 76 56 67
2. Quartal 54 67 14 67
3. Quartal 6 33 58 67

Zuerst in jede Zeile für jede Spalte ein Semikolon mit Maus und Tastatur einsetzen (ruhig grob arbeiten):

 ; Nord ; Süd ; West ; Ost
1. Quartal ; 23 ; 76 ; 56 ; 67
2. Quartal ; 54 ; 67 ; 14 ; 67
3. Quartal ; 6 ;33 ; 58 ; 67
        
        
Dann die Tabelle markieren, Extras|Text <-> Tabelle wählen und als Trennzeichen im Text Semikolon angeben.
Nun muß man in der entstandenen Tabelle noch die überflüssigen Leerzeichen entfernen. Dazu die Tabelle markieren (<Strg>+<A>) und nach den regulären Ausdrücken ^<Leerzeichen> und <Leerzeichen>$ suchen. Dabei muß die Checkbox Nur in Selektion aktiviert sein, der Ersetzen durch-Ausdruck leer bleiben und auf den Button [Ersetzte alle] gedrückt werden. Sind in der Tabelle keine Einträge mit Leerzeichen kann man selbstverständlich auch einfach nach Leerzeichen suchen.
Ein einheitliches Aussehen kann man seinen Tabellen mit (Cursor in Tabelle stellen und) Format|Autoformat geben. Hier kann man auch eigenen Tabellenformatierungen einen Namen zuweisen.

Gedankenstriche

Ach ja, <Leerzeichen><Minus><Leerzeichen> sollte man durch <Leerzeichen><Gedankenstrich><Leerzeichen> Suchen&Ersetzen. Als Gedankenstrich verwendet man den sogenannten Halbgeviertstrich – (Einfügen|Sonderzeichen Zeichen Nummer 150). In dem Suchen&Ersetzen-Dialog kommt man an den Gedankenstrich, in dem man die <Alt>-Taste drückt (und festhält) und die Ziffernfolge 0150 auf dem Nummernblock eintippt (jetzt <Alt>-Taste loslassen) oder durch Copy&Paste eines Gedankenstrichs aus dem Text.

Ich würde jedoch nicht mit dem [Ersetze alle]-Button arbeiten, da <Leerzeichen><Minus><Leerzeichen> auch in der Bedeutung von „bis“ (10 - 11 Uhr) eingesetzt wird, und das zu Recht!

Autor: Werner Roth Original liegt auf http://www.wernerroth.de/staroffice/dokumentation

© 2000 Rechtlicher Hinweis