Archiv des LibreOffice- und OpenOffice.org-Wiki

[ÜberSicht] [TitelIndex] [WortIndex] [SeiteFinden

(./) SO6 SO7 OOo1.1

Absatzschaltungen entfernen und/oder in Zeilenumbrüche ändern.

1. Entfernen von "hard returns"

1.1. Allgemeines Vorgehen

Um unerwünschte Absatzschaltungen (engl. hard returns, zu erkennen am Steuerzeichen ), wie sie z.B. beim Import von ASCII-Text auftreten können, zu entfernen, öffnet man den Dialog Suchen & Ersetzen (Strg+g) und geht wie folgt vor:

  1. Suchen nach $, ersetzen durch einen Platzhalter (eine Zeichenkette, die im Text nicht vorkommt, z.B. @@@), dabei ein Häkchen bei RegulärerAusdruck setzen;

  2. suchen nach @@@@@@ (die doppelte Zeichenkette aus Schritt 1), ersetzen durch \n, auch hierbei RegulärerAusdruck anhaken;

  3. suchen nach @@@ (die Zeichenkette aus Schritt 1), ersetzen durch » « (ein Leerzeichen);

  4. ggf. Suchen nach »  « (zwei Leerzeichen), ersetzen durch » « (ein Leerzeichen).

Im Ergebnistext erfolgen Absatzwechsel nur an den Stellen, an denen im Ausgangstext eine Leerzeile stand.

Sollte im Schritt 2 die Zeichenkette @@@@@@ nicht wie beabsichtigt durch , sondern durch @@@¶ ersetzt werden, kann am Ende von Absätzen jeweils ein einzelnes Leerzeichen übrigbleiben. Diese Leerzeichen kann man bei Bedarf durch einen weiteren Suchen-und-Ersetzen-Vorgang entfernen: Suchen nach [:space:]$, ersetzen durch »« (nichts); dabei wieder das Häckchen bei RegulärerAusdruck setzen.

Will man sich Tipp-Arbeit sparen, so zeichnet man den Vorgang als Makro auf.

1.2. Leere Absätze

Wenn sich die Absatzmarken nur am Zeilenanfang befinden, geht es schneller. Man hat 2 Möglichkeiten:

1.3. Absätze entfernen, die nur Leerzeichen enthalten

Nach diesen kann man nun nicht mehr mit dem Ausdruck ^$ suchen, aber der zuvor beschriebene Weg über die AutoKorrektur funktioniert auch mit Absätzen, die nur Leerzeichen enthalten.

Bei Anwendung der AutoKorrektur muss jedoch bedacht werden, dass sich diese jeweils auf alle aktivierten Optionen auswirkt. Fangen z.B. leere Absätze mit Leerzeichen an, so kann das dazu führen, dass bei den verbleibenden Absätzen automatisch die Absatzvorlage "Textkörper Einzug" zugeordnet wird, was man aber mit Suchen & Ersetzen von AbsatzVorlagen auch wieder beheben kann.

2. Ändern von "hard returns" per Makro

Dieses Makro hilft unerwünschte Zeilenendschaltungen (engl. hard returns, zu erkennen am Steuerzeichen ), wie sie z.B. beim Import von ASCII-Text oder durch falsche Texteingabe auftreten können, zu entfernen.

Folgende Auswahlmöglichkeiten bestehen:

  1. Leere Absätze ersatzlos entfernen.
  2. Alle Absatzschaltungen gegen Zeilenumbruch tauschen.
  3. Alle Absatzschaltungen gegen 1 Leerzeichen tauschen.

Die 3 Möglichkeiten werden nacheinander erfragt und müssen für das gewünschte Ergebnis kombiniert werden; z.B.:

Abfrage 1=OK + 2=Abbruch + 3=OK

Alle Absatzschaltungen werden entfernt.

Abfrage 1=Abbruch + 2=OK + 3=Abbruch

Einfache Absatzschaltungen werden zu Zeilenumbrüchen, Doppelte Absatzschaltungen werden zu einfachen.

Abfrage 1=OK + 2=OK + 3=Abbruch

Leere Absatzschaltungen werden entfernt, Absatzschaltungen werden zu Zeilenumbrüchen.

usw.

2.1. Makro

option Explicit
Sub AbsatzUmbruchLoeschen
        Dim oDoc as Object
        Dim oSuchAusdruck as Object
        Dim Zeichen as String
        Dim Weiche as Integer
        Dim Auswahl as String
        oDoc = Thiscomponent
        
        Auswahl = InputBox ("Leere Absatzumbrüche  löschen?" & chr$(13)& chr$(13)& "Ja=OK   Nein=Abbrechen","K. Reiser","hier nichts eingeben")
        If Auswahl = "hier nichts eingeben" Then
                oSuchAusdruck = oDoc.createSearchDescriptor
                oSuchAusdruck.searchString= "^$"
                oSuchAusdruck.SearchRegularExpression = "true"
                Weiche = 1
                Zeichen = ""
                ErsetzenNeu(oDoc,oSuchAusdruck,Zeichen,Weiche)
        End If
        
        Auswahl = InputBox ("Absatzumbrüche gegen Zeilenumbrüche tauschen?" & chr$(13)& chr$(13)&"Ja=OK  Nein=Abbrechen","K. Reiser","hier nichts eingeben")
        If Auswahl = "hier nichts eingeben" Then
                oSuchAusdruck = oDoc.createSearchDescriptor
                oSuchAusdruck.searchString= "$"
                oSuchAusdruck.SearchRegularExpression = "true"
                Weiche = 2
                Zeichen = ""
                ErsetzenNeu(oDoc,oSuchAusdruck,Zeichen,Weiche)
        End If
        
        Auswahl = InputBox ("Absatzumbrüche gegen Leerzeichen tauschen?" & chr$(13)& chr$(13)& "Ja=OK  Nein=Abbrechen ","K. Reiser","hier nichts eingeben")
        If Auswahl = "hier nichts eingeben" Then
                oSuchAusdruck = oDoc.createSearchDescriptor
                oSuchAusdruck.searchString= "$"
                oSuchAusdruck.SearchRegularExpression = "true"
                Weiche = 1
                Zeichen = " "
                ErsetzenNeu(oDoc,oSuchAusdruck,Zeichen,Weiche)
        End If
End Sub

Sub ErsetzenNeu(oDoc,oSuchAusdruck,Zeichen,Weiche)
        Dim oGefunden as object
        Dim oTC as Object
        oTC = oDoc.Text.createTextCursor()
        oGefunden = oDoc.findFirst (oSuchAusdruck)
        Do While not IsNull( oGefunden)
                oTC.gotoRange(oGefunden, false)
                Select Case Weiche
                Case 1
                        oTC.string = Zeichen
                Case 2
                        oDoc.Text.insertControlCharacter(oTC,com.sun.star.text.ControlCharacter.LINE_BREAK, true)
                End Select
                        oGefunden = ThisComponent.findNext( oGefunden.End, oSuchAusdruck)
        Loop
End Sub

<!> Aufgrund technischer Beschränkungen kann "Suchen und Ersetzen mit Regulären Ausdrücken" nicht mit OpenOffice.org Version 1.0 ausgeführt werden.

3. Siehe auch


KategorieWriter KategorieMakro KategorieHowto


LizenzBedingungen | AnbieterKennzeichnung | DatenschutzErklärung | Stand: 2013-04-28