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
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
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.
Da Überschriften in den Texten, die ich bekomme, nicht gut erkannt werden, sind die einzigen Funktionen die ich beim Autoformatieren gebrauchen kann:
Harte Zeilenenden in Absätze umwandeln
Gerade Anführungszeichen durch typografische ersetzen ("Hallo" zu Hallo)
Bulletzeichen ersetzen durch
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.
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 SUBDieses 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 SUBDie 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.
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.
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.
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>.
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
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.
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.
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
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