Zeilenumbruch entfernen

WRITER hat alles, was Sie von einer modernen, voll ausgestatteten Textverarbeitung erwarten.
DavidG
Beiträge: 117
Registriert: Do 22. Mär 2018, 21:41

Re: Zeilenumbruch entfernen

Beitrag von DavidG » Mo 4. Jun 2018, 20:57

Hallo Hans,

in meiner Anleitung habe ich Dir ein Bild des Menüs Extras → „Anpassen“ (Seite 5) hinterlegt.
Da ich eine neuere Version von LO verwende, kann es sein, dass das Fenster „Anpassen“ etwas anders aussieht.
Kann mich aber nicht mehr erinnern wie es in der Version 5.4.7 aussah.

Rufe bitte das Fenster auf und klicke gemäß Punkt 2 meiner Anleitung (Seite 5) auf das DropDown-Menü unter Kategorie.
Dort scrolle ganz nach unten.

Steht dort nichts in Bezug auf Makros?
Wenn nicht, mache nun einen Screenshot von dieser Ansicht (mit ausgeklapptem DropDown-Menü und
nach unten gescrollt) und lade ihn hoch, damit ich sehen kann was dort steht.

Aus dem Objektkatalog-Bild, welches Du hochgeladen hast, lese ich folgenden Pfad für das erforderliche Makro:
Entweder:
Meine Makros & Dialog\WriterMakros\Modul1\RegExSuchenErsetzen
ODER
Meine Makros\WriterMakros\Modul1\RegExSuchenErsetzen

Einer dieser Pfade müsstest Du eigentlich auch in der LO-Version im Anpassen-Fenster sehen.
Zumindest irgendetwas mit Makros, ggf. auch Basic.

Gruß
David
___________________
WIN 10 PRO
LO 6.0.4.2 32-Bit



anaxagoras
Beiträge: 31
Registriert: So 19. Jun 2016, 17:55

Re: Zeilenumbruch entfernen

Beitrag von anaxagoras » Di 5. Jun 2018, 19:24

Hallo David,
bei mir ist keine Kategorie sondern Symbolleisten mit einem Dropdown Menü.
Makros habe ich gestern hineingeschrieben (oder wars Sonntag?)

Das einzige wo Makros steht unter Tastatur. Dann eben mit der Tastatur.

Gruß Hans
Dateianhänge
2018-06-05 19_21_05-Unbenannt 1 - LibreOffice Writer.png
2018-06-05 19_21_05-Unbenannt 1 - LibreOffice Writer.png (57.17 KiB) 338 mal betrachtet
2018-06-05 19_14_04-Unbenannt 1 - LibreOffice Writer.png
2018-06-05 19_14_04-Unbenannt 1 - LibreOffice Writer.png (55.61 KiB) 338 mal betrachtet

DavidG
Beiträge: 117
Registriert: Do 22. Mär 2018, 21:41

Re: Zeilenumbruch entfernen

Beitrag von DavidG » Di 5. Jun 2018, 20:45

Hallo Hans,
Hans hat geschrieben:bei mir ist keine Kategorie sondern Symbolleisten mit einem Dropdown Menü.
Makros habe ich gestern hineingeschrieben (oder wars Sonntag?)
Du hast eine neue Symbolleiste namens "Makros" erstellt?
Wenn ja, dann sollte darunter in der Rubrik "Symbolleisteninhalt" das Fenster leer sein, oder?

Ich frage deshalb, weil es auch eine Makrossymbolleiste von LO gibt, in der schon Symbole und Funktionen enthalten sind.

Nun gehe ich mal davon aus, dass das Fenster leer ist. Dieses würde bedeuten,
dass Du per MENÜ Ansicht --> Symbolleisten eine neue Symbolleiste hast, die aktiviert werden kann.
Sie erscheint bei Aktievierung irgendwo oben rechts neben den Standardsymbolleisten, hat aber noch kein Symbol!

Wenn dies so ist, dann rufe Menü Extras --> Anpassen Register Symbolleisten auf.
Suche nochmals die von Dir erstellte "Makros" Leiste aus.
Jetzt klickst Du auf "Befehl hinzufügen".
Welches Menü dann erscheint, weiß ich auch nicht mehr.
Ich gehe aber davon aus, dass Du dort so etwas wie "LibreOffice Makros" findest.

---------------------------
Zum Bild Tastenkombination
In dem von Dir hochgeladenen Bild siehst Du in der Rubrik "Funktionen/Bereich" die Option "LibreOffice Makros", mit einem + davor.
Erweitere die Ansicht und Du solltest einen dieser Pfade finden:
Entweder:
Meine Makros & Dialog\WriterMakros\Modul1
ODER
Meine Makros\WriterMakros\Modul1

Markieren "Modul1", dann erscheint im Fenster rechts daneben der Makroname "RegExSuchenErsetzen" oder "SuchenErsetzen".
Diesen Eintrag ebenfalls markieren.
Jetzt sucht Du eine nicht besetzte Tastenkombination aus und markierst diese.
Dann auf den BUtton "Ändern" klicken, damit erscheint die gewählte Tastenkombination im Fenster "Funktionen/Tasten".
Nun mit OK bestätigen und die Tastenkombination ausprobieren, ob das Makro startet.

Gruß
David
___________________
WIN 10 PRO
LO 6.0.4.2 32-Bit

anaxagoras
Beiträge: 31
Registriert: So 19. Jun 2016, 17:55

Re: Zeilenumbruch entfernen

Beitrag von anaxagoras » Mi 6. Jun 2018, 16:49

Hallo David,
Ich konnte unter Ansicht > Symbolleisten meinen Eintrag "Makros" finden und habe auch versucht ein Symbol zuzuweisen, habe aber im ersten Schritt nur geschafft die Schrift statt dem Symbol hinzukriegen. In einem zweiten Schritt habe ich den Weg zm Symbol gefunden, habs aber einmal so belassen (siehe hochgeladenes Bild) weil ich mich nicht entscheiden konnte welches Symbol, da brauche etwas ich Ruhe die ich jetzt nicht habe. Vielleicht probier ich es auch mit einer Tastenkombination. Auf alle Fälle funktioniert es.
Ich bin mit der Lösung sehr zufrieden, machmal machts zwar Leerzeichen weg wo eins hingehört, das füge ich dann einfach wieder ein.
Ich danke dir nochmals für die perfekte Hilfe.

Gruß Hans
Dateianhänge
2018-06-06 16_36_06-Unbenannt 1 - LibreOffice Writer.png
2018-06-06 16_36_06-Unbenannt 1 - LibreOffice Writer.png (8.39 KiB) 324 mal betrachtet

DavidG
Beiträge: 117
Registriert: Do 22. Mär 2018, 21:41

Re: Zeilenumbruch entfernen

Beitrag von DavidG » Mi 6. Jun 2018, 19:44

Hallo Hans,

es freut mich, dass es nun fast funktioniert. Habe gern geholfen.
Hans hat geschrieben:Ich bin mit der Lösung sehr zufrieden, machmal machts zwar Leerzeichen weg wo eins hingehört,
das füge ich dann einfach wieder ein
Wenn Du mir ein Beispiel nennst, unter welche Bedingungen ein
Leerzeichen zuviel ersetzt wird, kann ich das Makro noch anpassen.

Gruß
David
___________________
WIN 10 PRO
LO 6.0.4.2 32-Bit

anaxagoras
Beiträge: 31
Registriert: So 19. Jun 2016, 17:55

Re: Zeilenumbruch entfernen

Beitrag von anaxagoras » Do 7. Jun 2018, 18:49

Hallo David,
Wenn Du mir ein Beispiel nennst, unter welche Bedingungen ein
Leerzeichen zuviel ersetzt wird, kann ich das Makro noch anpassen.
Ja das wäre natürlich perfekt wenn das auch behoben ist. Beim nächsten mal verwenden schicke ich dir am besten die Urdatei d.h. die der Scanner ausspuckt (rtf) und die berichtigte mit LO. Das ist die nächsten Tage, ich habe da eh noch was zu scannen.

Gruß Hans

anaxagoras
Beiträge: 31
Registriert: So 19. Jun 2016, 17:55

Re: Zeilenumbruch entfernen

Beitrag von anaxagoras » Di 12. Jun 2018, 17:00

Hallo David,
ich habe etwas eingescannt, da lade ich einmal die Wordpad Datei hoch die der Scanner ausgibt, und dann die Writer Datei nach dem Makro. Ich habe, um es dir leichter zu machen, jeweils das wort nachdem ein Leerzeichen eingefügt werden soll rot markiert.
Würde mich freuen wenn du das auch noch lösen kannst.

Gruß Hans
Dateianhänge
salbei.rtf
(3.11 KiB) 15-mal heruntergeladen
salbei.odt
(20.55 KiB) 15-mal heruntergeladen

DavidG
Beiträge: 117
Registriert: Do 22. Mär 2018, 21:41

Re: Zeilenumbruch entfernen

Beitrag von DavidG » Di 12. Jun 2018, 23:59

Hallo Hans,

hier der neue Code:

Code: Alles auswählen

REM  *****  BASIC  *****

Sub RegExSuchenErsetzen
Dim oDoc as Object
Dim oCC as Object
Dim oReplace as Object
Dim oSel as Object
 	
 	' Referenz auf aktuelles Dokument setzen
	oDoc =thiscomponent
		' Controller Referenz
		oCC=oDoc.getCurrentcontroller()
		
'			' OPTIONAL markierter Bereich
'			oSel=oDoc.getCurrentSelection

	' Text des Dokuments in Variable
	sStr=oDoc.getText().String  
	
	' Referanz des Suchen- und Ersetzen-Objektes
	 oReplace = oDoc.createSearchDescriptor()

' MRI Codeinspektor 
'mri oReplace  

REM .....................................................................................................
REM ABSATZMARKEN  ¶
REM Absätze per RegEx entfernen 
REM "- "  = Sucht Absatzmarken, mit vorangestelltem Bindestrich und einem Leerzeichen
REM Die Suchmaske (REM RegEx Expression) besteht aus 4 Operationen:
REM RegEx Expression = \-\s+$
REM 1.1)	maskierter Bindestrich = \-
REM 1.2)	maskierter Leerzeichen (Space) = \s
REM 1.3)	UND Operator = +
REM 1.4)	Absatzemarke (¶) = $

REM "" = Ersetzung durch NICHTS

REM Es werden die Bindestriche und Leerzeichen (keine Whitespaces) vor den Absatzmarken entfernt
	With oReplace
		.SearchAll
		.SearchRegularExpression = True
		.SearchString ="\-\s+$"
		.ReplaceString = ""
	End With
	
	odoc.replaceAll(oReplace)
REM	oSel.replaceAll(oReplace)

REM .....................................................................................................
REM MANUELLE ZEILENUMBRÜCHE ⮠
REM ZEILENUMBRÜCHE per RegEx entfernen 
REM "- "  = Sucht ZEILENUMBRÜCHE, mit vorangestelltem Bindestrich und einem Leerzeichen
REM Die Suchmaske (REM RegEx Expression) besteht aus 4 Operationen:
REM RegEx Expression = \-\s+\n
REM 1.1)	maskierter Bindestrich = \-
REM 1.2)	maskierter Leerzeichen (Space) = \s
REM 1.3)	UND Operator = +
REM 1.4)	Absatzemarke (⮠ ) = \n

REM "" = Ersetzung durch NICHTS

REM Es werden die Bindestriche und Leerzeichen (keine Whitespaces) vor den Zeilenumbrüche entfernt

	With oReplace
		.SearchAll
		.SearchRegularExpression = True
		.SearchString ="\-\s+\n"
		'.SearchString = "[- ]^$"
		.ReplaceString = ""
	End With
	
	odoc.replaceAll(oReplace)
REM	oSel.replaceAll(oReplace)

REM .....................................................................................................
REM ABSATZMARKEN  ¶
REM Leere Absätze per RegEx entfernen 
REM "^$"  = Suche leeren Absatz
REM "" = Ersetze mit NICHTS
	With oReplace
		.SearchAll
		.SearchRegularExpression = True
		.SearchString = "^$"
		.ReplaceString = ""
	End With
	
	odoc.replaceAll(oReplace)
REM	oSel.replaceAll(oReplace)

REM .....................................................................................................
REM ABSATZMARKEN  ¶
REM Ersetzt Absatzmarken am Ende einer Textzeile per RegEx
REM "$"  = Suche Absatzmarken
REM "" = Ersetze mit "" = NICHTS
	With oReplace
		.SearchAll
		.SearchRegularExpression = True
		.SearchString = "$"
		.ReplaceString = ""
	End With
	
	odoc.replaceAll(oReplace)
REM	oSel.replaceAll(oReplace)

REM .....................................................................................................
REM MANUELLE ZEILENUMBRÜCHE ⮠
REM Manuelle Zeilenumbrüche per RegEx entfernen 
REM "\n"  = Suche manuelle Zeilenumbrüche
REM "" = Ersetze mit "" = NICHTS
	With oReplace
		.SearchAll
		.SearchRegularExpression = True
		.SearchString = "\n"
		.ReplaceString = ""
	End With
	
	odoc.replaceAll(oReplace)
REM	oSel.replaceAll(oReplace)


End Sub
Ersetze den alten Code in Deiner Bibliothek durch diesen Code.
Einfach diesen Code per Klick auf "Alles auswählen" markieren und per [STRG]+[c] kopieren.
Dann in die Basic-IDE wechseln, Deinen alten Code mit [STRG]+[a] komplett markieren und
den neuen Code aus der Zwischenablage per [STRG]+[v] einfügen.

Habe ich bei beiden Texten angewendet.
Es kann aber immer wieder zu Situationen kommen, die das Makro nicht abdeckt.
Naja, Du weißt ja wo Du mich findest ;)
Die Funktionsweise des Makros habe ich im Code kommentiert.

Eine Frage habe ich:
Warum speicherst Du den Scan erst als rtf-Datei?
Du kannst doch direkt aus LO scannen!
MENÜ Einfügen → Medien → Scannen → Anfordern
Dies funktioniert allerdings nur in eine LO-32-Bit Version.
Wenn Du eine 64-Bit Version hast, dann geht dieses erst ab LibreOffice 6.1 64-Bit, wird vermutlich ab Herbst verfügbar sein.

Viel Vergnügen beim Test... :D

Gruß

David
Zuletzt geändert von DavidG am Mi 13. Jun 2018, 13:52, insgesamt 1-mal geändert.
___________________
WIN 10 PRO
LO 6.0.4.2 32-Bit

Rocko
Beiträge: 1272
Registriert: Sa 2. Jul 2011, 11:12

Re: Zeilenumbruch entfernen

Beitrag von Rocko » Mi 13. Jun 2018, 11:07

anaxagoras hat geschrieben:
Di 12. Jun 2018, 17:00
ich habe etwas eingescannt, da lade ich einmal die Wordpad Datei hoch die der Scanner ausgibt
Wenn du auf Teufel komm raus unbedingt mit Makros arbeiten möchtest, hoffe ich für dich auf ein gutes Ergebnis. Vielleicht hilft dir aber auch zusätzlich bei der Bewältigung deines Problems die Abfolge der einzelnen Schritte mit Hilfe von Suchen und Ersetzen.
Dateianhänge
salbei mit S und E.odt
(19.28 KiB) 15-mal heruntergeladen
Hast du schon mal einen Blick in die Writer-FAQ und in die Calc-FAQ des Forums geworfen?
Für jeden vor dem Beginn seiner Seminararbeit ein unbedingtes MUSS: http://openoffice-uni.org/

DavidG
Beiträge: 117
Registriert: Do 22. Mär 2018, 21:41

Re: Zeilenumbruch entfernen

Beitrag von DavidG » Mi 13. Jun 2018, 14:08

@Rocko
Ob man nun "Suchen und Erstzen" mehrfach manuell aufruft oder dieses per Makro erledigt,
ist doch fast das Gleiche. Nur mit der Ausnahme, dass ein Makro zeitsparend arbeitet.

Der Vorschlag mit dem Makro kam von mir, denn wie Du weißt bietet das Makro die
Möglichkeit mehrere Einzelschritt in einem Durchgang abzuarbeiten.
Rocko hat geschrieben: Zunächst habe ich den offensichtlich leeren Absatz einfach gelöscht.

Davon kann es mehr, als nur einen geben. Auch innerhalb des Textstreams.
Rocko hat geschrieben: Abschließend stören noch die die vorhandenen Trennzeichen mit einem folgenden Leerzeichen.

Hierbei werden aber auch die Ergänzungsstriche entfernt, siehe:
Gurgel- und Mundspülmittel
wird zu
Gurgelund Mundspülmittel

-------------------------------------------------------------------------------------------------------
Wenn man alle Bedingungen manuell abarbeiten möchte, dann bedarf es fünf Schritte,
um in allen Mustertexten (Text1 und Text2) von Hans zu einem korrekten Ergebnis zu kommen.
Wer sich sehr gut mit RegEx auskennt, kann ggf. den ein oder anderen Schritt verketten, um
statt mit fünf Schritten vielleicht mit drei Schritten auszukommen.
Dieses wird für einen Laien aber sehr unübersichtlich.

Manuelles "Suchen und Ersetzen" per RegEx:
Schritt 1
Es werden die Bindestriche und Leerzeichen (keine Whitespaces) vor den Absatzmarken entfernt
Suche:
\-\s+$
Ersetzen durch Nichts
""
Schritt 2
Es werden die Bindestriche und Leerzeichen (keine Whitespaces) vor den Zeilenumbrüchen entfernt
Suche:
\-\s+\n
Ersetzen durch Nichts
""
Schritt 3
Leere Absätze entfernen
Suche:
^$
Ersetzen durch Nichts
""
Schritt 4
Ersetzt Absatzmarken am Ende einer Textzeile
Suche:
$
Ersetzen durch Nichts
""

Schritt 5
Ersetzt manuelle Zeilenumbrüche
Suche:
\n
Ersetzen durch Nichts
""

Nichts anderes macht das Makro in einem Rutsch.

Gruß
David
___________________
WIN 10 PRO
LO 6.0.4.2 32-Bit



Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste