Zeichen pro Zeile festlegen

Hallo zusammen,

aktuell versuche ich mit dem LibreOffice Writer ein normales Schriftdokument ohne jegliches sonstiges Format oder Layout zu erstellen, welches jedoch folgende Bedingung erfüllt: Pro Zeile sollen maximal 60 Zeichen stehen. Im Optimalfall erfolgt ein automatischer Zeilenumbruch vor jedem Wort, welches zu einer Überschreitung dieser Zeichenanzahl führen würde. Es wäre wünschenswert, wenn es ein Verfahren gäbe, das unabhängig von der verwendetet Schriftart funktioniert. Insbesondere also auch für proportionale Schriftarten wie bspw. Arial.

Hat jemand Ideen, wie ich dies bewerkstelligen könnte?

Vielen Dank auf jeden Fall im Voraus!

Du meinst vermutlich so etwas wie die Einstellung von einfacheren Texteditoren, die nicht für Layoutarbeiten gedacht sind. Standard ist da ja der automatische Zeilenumbruch nach 80 Zeichen. Gibt es auch bei Mailprogrammen.

Ich kann mir das für ein Programm wie den Writer nur so vorstellen, dass die Schriftart eben nicht proportional ist und die Breite der entsprechenden Spalte die Zeichen entsprechend begrenzt.

Crossposting!

1 Like

Versuchs mal mit ⇒suchen und ersetzen:
suche: .{49,59}\b
ersetzen durch: &_
( der Unterstrich ist nur ein Platzhalter, an der Stelle musst du einen per shift+enter erzeugten Zeilenumbruch hineinkopieren )
mit der Option: regulärer Ausdruck
ersetze alle

@RobertG Genau so etwas Analoges mit 60 Zeichen für den LibreOffice Writer meine ich. Die Begrenzung der Breite ist natürlich eine naheliegende Lösung, welche jedoch leider nur bei nicht-proportionalen Schriftarten funktioniert, was für mich allerdings keine Option ist.

Für das Crossposting bitte ich um Entschuldigung. Die Gründe habe ich bereits in dem anderen Post erläutert. Ansonsten ist dieser nicht mehr weiter zu beachten.

@karolus Da ich nicht ganz verstanden habe, inwiefern ich jetzt eine Zeilenschaltung hier einfügen kann (beim Kopieren eines shift+enter aus dem Text passiert nichts), habe ich den Vorschlag jetzt einfach mal mit einem Unterstrich getestet. Bei beispielsweise dem Satz “Ein Zeilenumbruch sollte genau hier erfolgen: DieserTextStehtInDerNächstenZeile” funktioniert die Variante jedoch nicht. Das Verändern der Zahl 49 auf bspw. 1 führt hingegen natürlich bei anderen Sätzen zu Problemen. Vielleicht habe ich die Idee aber auch nur etwas missverstanden.

2 Möglichkeiten mit Mono+Font (feste ZeichenBreite):
LO-WRiTER_max 60 Mono-Zeichen pro Zeile_v0000.odt (20.6 KB)
Die SchriftArt habe ich ins Dokument eingebettet, damit die korrekte Darstellung auch dann gelingt, wenn importiert auf anderes System, dessen Bibliothek diesen Font nicht beinhaltet.

Hast du das auch nachgeprüft? Ich finde keine eingebettete Schrift im odt-Dokument.
Wenn du die odt-Datei entpackst, dann sollte der Ordner Fonts drin sein…
Das ist in diesem Fall aber nicht schlimm, weil die Schriftartenersetzung eine gleich große ähnliche Schrift verwendet, bei mir ist es statt Andale Mono die Schrift Font_Arial_Unicode_MS_1.ttf. - Ciao
.
EDIT
Im Übrigen will der TE ja bevorzugt eine Proportionalschrift und dazu noch am Ende eine Zeilenschaltung oder Absatzschaltung oder Tabulator (?).
Es wäre zumindest für mich interessant, wozu diese Schritte dienen sollen. Hier sollte der TE auch noch ein paar Worte verlieren…
.
(Mit einem kleinen Workaround wäre die Anforderung vermutlch relativ einfach zu lösen. :upside_down_face: )

@koyotak Die erstgenannte Möglichkeit war auch mein erster Ansatz. Leider funktioniert dies jedoch nur für nicht-proportionale Schriftarten. Wie @Grantler jedoch richtig geschrieben hat, würde ich mir eine funktionsfähige Version wünschen, die mit einer beliebigen Schriftart und damit insbesondere einer Proportionalschrift wie bspw. Arial zurechtkommt. Mit dem in der Frage erwähnten “automatischen Zeilenumbruch” meine ich übrigens eine Zeilenschaltung.

Um das Interesse zu stillen, wozu diese Schritte nötig sind, gibt es eigentlich gar nicht so viel zu sagen. Konkret versuche ich in LibreOffice einen Text zu verfassen, der eine bestimmte Zeichenanzahl pro Zeile nicht überschreitet, den ich allerdings mithilfe von Farben, dem Fettzeichnen oder Unterstreichen optisch ansprechend gestalten kann. Dies ist in einfacheren Texteditoren (wie ich Sie im Rahmen des Projekts verwende, an dem ich gerade arbeite) nicht möglich. Jene besitzen dafür allerdings die von mir gewünschten Funktionalitäten. Aufgrund eines häufigen Hin- und Herwechselns des gleichen Textes zwischen solchen Editoren, wäre diese Funktionalität daher wünschenswert. Das Verwenden anderer zu installierenden Editoren, welche vielleicht beides ineinander vereinen, ist hingegen keine mögliche Option.

So spontan wäre ich auch von einer relativ einfachen Lösung ausgegangen, da dies in der Programmierung eigentlich nicht schwer sein sollte. Jedoch konnte ich bei LibreOffice dazu jetzt nichts finden. @Grantler Welcher Workaround schwebt dir vor? :slight_smile:

Dicktengleiche Schrift! Dann: Export/Druck nach PDF, dort kopieren und im Writer wieder einfügen. AltSearch.oxt nutzen für Ersetzung von Absatzschaltungen mit Zeilenschaltungen.
Hinweis: Die Ergebnisse können abweichen je nach PDF-Viewer und Einfügeoptionen (z. B. als unformatierter Text oder formatiert). Muss man halt ausprobieren.
.
Vielleicht findet sich ja ein Makrospezialist, der das schneller hinbekommt, ähnlich der Lösung von @karolus, dessen an sich genialer Ansatz auch bei mir zu keinem positiven Ergebnis führte.
.
– Ciao
.

1 Like

Ich kann bei mir (linux) den Zeilenumbruch direkt per strg+shift+ua ins ersetzen-feld einfügen.
Das sieht hinterher so aus:

1 Like

Ja geht auch in drei bis vier zeilen Python:

import re
doc = XSCRIPTCONTEXT.getDocument()
for para in doc.Text:    
    para.String = re.sub(r"(.{40,59}\b)", r"\1\n", para.String)

das kannst du auch Zeile für Zeile in eine apso-console reintippen!

@Grantler Wenn ich den Workaround richtig verstehe, sollte ich also meinen Text in LibreOffice erst einmal in einer dicktengleichen Schrift vorschreiben. In dem Fall könnte ich anstelle des umständlichen Exports nach PDF aber auch gleich den Seitenrand entsprechend einstellen, dann nach jedem Zeilenende eine Absatzschaltung einfügen, danach wiederum die Schriftart in Arial zurückändern und schließlich die Absatzschaltungen durch Zeilenschaltungen ersetzen, oder? Zwar wäre das nicht wirklich die simple Lösung, welche ich mir vorgestellt habe, aber sie wäre immerhin ein Anfang.
@karolus Danke für die Erläuterung wie der Zeilenumbruch direkt ins Ersetzen-Feld eingefügt werden kann. Das klappt bei mir auch soweit. Nach wie vor werden jedoch mit dieser Variante nicht alle Fälle abgedeckt. Beispielsweise besteht der Satz “Ein Zeilenumbruch erfolgt genau hier: DieserTextStehtInDerNächstenZeile” aus 72 Zeichen, weshalb eine Zeilenschaltung nach dem Wort ‘hier’ (also Zeichen 37) sinnvoll wäre. Mit dem Intervall {49, 59} bzw. {40,59} ist dies nach meinem Kenntnisstand jedoch nicht möglich, oder? Zumindest funktioniert es bei mir nicht. Analog wird es auch für Eingaben {k, 59} mit beliebigem k genügend Beispiele geben, die der Forderung nicht entsprechen würden. Vielleicht verstehe ich hier aber auch einfach irgendetwas grundsätzlich nicht?!

Ich hab halt eine Trennung zwischen Worten eingebaut, wenn das aufgrund von »DonauDampfschifffahrtsGesellschaftVorstandsberatungsGesprächen« scheitert, musst du eben stur nach 60Zeichen trennen.
.{60}

Aus meiner Sicht die effektivste Lösung des Problems. Danke an @karolus für die verbesserte Vorgehensweise.
Für Windows-Nutzer sehe ich jetzt die von dir gegebene Möglichkeit nicht. Diese müssten auf AltSearch.oxt ausweichen. Da diese Extension (bei mir) nicht immer voll rund läuft, gelang es mir in 2 Schritten, das entsprechende Ergebnis zu erreichen.

@karolus Das führt aber ja auch nicht zum gewünschten Ergebnis, da schließlich Wörter nicht mittendrin getrennt werden sollen. Klar, bei Wörtern mit über 60 Zeichen wird dies nicht anders gehen, aber sollte ich bspw. ein Wort mit 10 Zeichen haben, gefolgt von einem Wort mit 55 Zeichen, so wäre natürlich eine Zeilenschaltung zwischen diesen beiden Wörtern sinnvoll. Aber wenn ich es richtig verstanden habe, gibt es außer dem von mir bzw. von @Grantler beschriebenen recht umständlichen Workaround, keine Option dies umsetzen.