[GastForen Programme Print/Bildbearbeitung Adobe InDesign Einzelne Wörter in Zeile

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Einzelne Wörter in Zeile

tolgi
Beiträge gesamt:

25. Jun 2007, 20:42
Beitrag # 1 von 15
Bewertung:
(48114 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
ich suche eine Methode einzelne Worte in Zeilen zu vermeiden.
Geht wahrscheinlich nicht oder?
X

Einzelne Wörter in Zeile

Ralf Hobirk
Beiträge gesamt: 5961

25. Jun 2007, 21:29
Beitrag # 2 von 15
Beitrag ID: #298806
Bewertung:
(48039 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielleicht die Silbentrennung einschalten? Oder den Textrahmen verbreitern?

Oder verstehe ich deine Frage nicht? Spezifiziere dein Problem doch etwas genauer...


als Antwort auf: [#298800]

Einzelne Wörter in Zeile

Christoph Steffens
  
Beiträge gesamt: 4906

25. Jun 2007, 21:33
Beitrag # 3 von 15
Beitrag ID: #298808
Bewertung:
(48037 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Klar geht das: Schreib noch n paar rein...


als Antwort auf: [#298800]

Einzelne Wörter in Zeile

Jochen Uebel
Beiträge gesamt: 3200

25. Jun 2007, 22:14
Beitrag # 4 von 15
Beitrag ID: #298814
Bewertung:
(48020 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ tolgi ] eine Methode einzelne Worte in Zeilen zu vermeiden.

In was für Zeilen? Flattersatz? Blocksatz? Letzte Zeilen eines Absatzes?


als Antwort auf: [#298800]

Einzelne Wörter in Zeile

Martin Fischer
  
Beiträge gesamt: 12783

25. Jun 2007, 22:18
Beitrag # 5 von 15
Beitrag ID: #298817
Bewertung:
(48016 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich vermute, es geht tolgi darum, daß die letzte Zeile eines Absatzes mit mehr als einem Wort gefüllt ist. Und das ist eine durchaus ernstzunehmende Anfrage.

Eine globale Einstellung gibt es dafür nicht.

Manuell könnte man dies so lösen, indem man dem Leerzeichen vor dem letzten (alleinstehenden) Wort das Attribut "Kein Umbruch" zuweist.

Automatisch könnte das etwa mit einem Skript wie folgt gehen:

Code
// noSingleWordInLastLine.jsx 

if (app.selection.length == 0)
exit();
var myStory = app.selection[0].parentStory;
for (i = 0; i< myStory.paragraphs.length; i++)
{
if (myStory.paragraphs[i].lines.length > 1 && myStory.paragraphs[i].lines[-1].words.length == 1)
{
var myIndex = myStory.paragraphs[i].lines[-1].words[0].characters[0].index;
myStory.characters[myIndex-1].noBreak = true;
}
}


Das Skript setzt voraus, daß entweder ein Textrahmen oder Text markiert ist (der Cursor sich innerhalb von Text befindet). Es prüft jeweils Zahl der Wörter in der letzten Zeile jedes Absatzes. Steht ein Wort allein da, wird es über das Attribut "Kein Umbruch" an das vorangehende Wort gekettet.


als Antwort auf: [#298808]

Einzelne Wörter in Zeile

Peter Kahrel
Beiträge gesamt: 182

25. Jun 2007, 22:48
Beitrag # 6 von 15
Beitrag ID: #298823
Bewertung:
(48007 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
In CS3 könnte man das mit GREP erreichen:

Suchen: \s(?=[\w[:punct:]]+$)
Ersetzen mit: ~S

Dieser GREP ersetzt das Leerzeichen vor dem letzten Wort in jedem Absatz mit einem 'variable-width non-breaking space'. Martins methode ist vielleicht schöner, denn es affektiert nur die Absatzen die ein einzelnes Wort auf dem letzten Linie haben -- aber das Skript muss wiederhohlt werden wenn etwas geändert wird.

Peter


als Antwort auf: [#298817]

Einzelne Wörter in Zeile

Martin Fischer
  
Beiträge gesamt: 12783

27. Jun 2007, 22:07
Beitrag # 7 von 15
Beitrag ID: #299434
Bewertung:
(47895 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Peter,

danke für Deine GREP-Lösung, die funktioniert (sie ersetzt alle Leerzeichen vor dem letzten Wort eines Absatzes durch ein geschütztes Leerzeichen mit variabler Breite) und die zu verstehen ich mich gerade bemühte.

> Suchen: \s(?=[\w[:punct:]]+$)

\s - ein Leerzeichen
(?= - positive lookahead (prüft, was nach dem Zeichen kommt)
[\w[:punct:]] - beliebiges Zeichen oder [:punct:]
+ - Quantifizierer (eins oder mehrere)
$ - Zeilenende

Auf deutsch: ein Leerzeichen, nach dem eins oder merhere beliebige Zeichen oder ein/mehrere Punkte stehen, auf die das Zeilenende folgt.

Was ist "[:punct:]"?
Vermutlich ein Punkt.
Aber wie ist die Notation zu verstehen?


als Antwort auf: [#298823]

Einzelne Wörter in Zeile

Peter Kahrel
Beiträge gesamt: 182

27. Jun 2007, 22:27
Beitrag # 8 von 15
Beitrag ID: #299437
Bewertung:
(47887 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

[[:punct:]] ist nicht 'punkt', sondern alle Satzzeichen (punkt, komma, alle Arten strichen, etc.), es ist ein sogenannter Posix, und also aine art Wildcard. Es muss immer wie ein 'character class' geschrieben werden, also wenn mann alle Satzzeichen finden woll, muss man [[:punct:]] benutzen.

Gruss,

Peter


als Antwort auf: [#299434]

Einzelne Wörter in Zeile

Martin Fischer
  
Beiträge gesamt: 12783

27. Jun 2007, 22:35
Beitrag # 9 von 15
Beitrag ID: #299439
Bewertung:
(47883 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ah, das ging aber schnell.

Danke für die erschöpfende Aufklärung.


als Antwort auf: [#299437]

Einzelne Wörter in Zeile

dima4ka
Beiträge gesamt: 51

18. Jun 2009, 20:24
Beitrag # 10 von 15
Beitrag ID: #399599
Bewertung:
(44095 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Martin Fischer ] Ich vermute, es geht tolgi darum, daß die letzte Zeile eines Absatzes mit mehr als einem Wort gefüllt ist. Und das ist eine durchaus ernstzunehmende Anfrage.

Eine globale Einstellung gibt es dafür nicht.

Manuell könnte man dies so lösen, indem man dem Leerzeichen vor dem letzten (alleinstehenden) Wort das Attribut "Kein Umbruch" zuweist.

Automatisch könnte das etwa mit einem Skript wie folgt gehen:

Code
// noSingleWordInLastLine.jsx 

if (app.selection.length == 0)
exit();
var myStory = app.selection[0].parentStory;
for (i = 0; i< myStory.paragraphs.length; i++)
{
if (myStory.paragraphs[i].lines.length > 1 && myStory.paragraphs[i].lines[-1].words.length == 1)
{
var myIndex = myStory.paragraphs[i].lines[-1].words[0].characters[0].index;
myStory.characters[myIndex-1].noBreak = true;
}
}


Das Skript setzt voraus, daß entweder ein Textrahmen oder Text markiert ist (der Cursor sich innerhalb von Text befindet). Es prüft jeweils Zahl der Wörter in der letzten Zeile jedes Absatzes. Steht ein Wort allein da, wird es über das Attribut "Kein Umbruch" an das vorangehende Wort gekettet.

es wäre super wenn noch die Funktion aktiv wäre, dass das letzte Wort nicht getrennt wird. also silbentrennung deaktivieren.


als Antwort auf: [#298817]

Einzelne Wörter in Zeile

dima4ka
Beiträge gesamt: 51

18. Jun 2009, 21:07
Beitrag # 11 von 15
Beitrag ID: #399603
Bewertung:
(44082 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
habe das so gelöst,
weiß aber nicht ob es korrekt ist, habe auch noch nie java gescriptet :)
aber scheint zu passen

Code
// noSingleWordInLastLine.jsx  

if (app.selection.length == 0)
exit();
var myStory = app.selection[0].parentStory;
for (i = 0; i< myStory.paragraphs.length; i++)
{
if (myStory.paragraphs[i].lines.length > 1 && myStory.paragraphs[i].lines[-1].words.length == 1)
{
var myIndex = myStory.paragraphs[i].lines[-1].words[0].characters[0].index;
myStory.characters[myIndex-1].noBreak = true;
}
{
var myIndex = myStory.paragraphs[i].lines[-1].words[0].characters[0].index;
myStory.characters[myIndex-0].hyphenation = false;
}
}



nach mehrmaligem testen, habe ich festgestellt, dass er den ganzen text ohne silbentrennung setzt.


was natürlich die Krönung dieses Scriptes wäre:
dass ich die letzten x-Zeichen (z.B. 10) als noBreak setzten könnte.
das wäre super


als Antwort auf: [#399599]
(Dieser Beitrag wurde von Martin Fischer am 19. Jun 2009, 10:42 geändert)

Einzelne Wörter in Zeile

Marco Morgenthaler
Beiträge gesamt: 2474

19. Jun 2009, 10:41
Beitrag # 12 von 15
Beitrag ID: #399659
Bewertung:
(44038 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Dima

Peter Kahrels GREP lässt sich leicht anpassen, sodass das letzte Wort nicht getrennt wird (keine Silbentrennung), siehe Anhang.

Gruss, Marco


als Antwort auf: [#399603]
(Dieser Beitrag wurde von Marco Morgenthaler am 19. Jun 2009, 10:41 geändert)

Anhang:
Bild 2.png (51.5 KB)

Einzelne Wörter in Zeile

dima4ka
Beiträge gesamt: 51

19. Jun 2009, 11:20
Beitrag # 13 von 15
Beitrag ID: #399668
Bewertung:
(44014 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Marco Morgenthaler ] Hallo Dima

Peter Kahrels GREP lässt sich leicht anpassen, sodass das letzte Wort nicht getrennt wird (keine Silbentrennung), siehe Anhang.

Gruss, Marco

da ich noch cs3 habe und die Grep nicht in die Absatzformate einbinden kann, wäre mir die scriptlösung besser. aber danke trotzdem!


als Antwort auf: [#399659]

Einzelne Wörter in Zeile

Marco Morgenthaler
Beiträge gesamt: 2474

19. Jun 2009, 11:43
Beitrag # 14 von 15
Beitrag ID: #399674
Bewertung:
(44002 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lässt sich ein Skript in ein Absatzformat einbinden? Oder mach doch aus dem GREP ein Skript =;o)

[Edit]: Folgender GREP verhindert die Silbentrennung der letzten 10 Zeichen in einem Absatz (egal ob am Absatzende noch Leerzeichen stehen):

.{10}\s*$

Format ersetzen: Kein Umbruch


als Antwort auf: [#399668]
(Dieser Beitrag wurde von Marco Morgenthaler am 19. Jun 2009, 11:55 geändert)

Einzelne Wörter in Zeile

dima4ka
Beiträge gesamt: 51

19. Jun 2009, 13:09
Beitrag # 15 von 15
Beitrag ID: #399698
Bewertung:
(43959 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Marco Morgenthaler ] Lässt sich ein Skript in ein Absatzformat einbinden? Oder mach doch aus dem GREP ein Skript =;o)

[Edit]: Folgender GREP verhindert die Silbentrennung der letzten 10 Zeichen in einem Absatz (egal ob am Absatzende noch Leerzeichen stehen):

.{10}\s*$

Format ersetzen: Kein Umbruch

wow danke, das funktioniert ja einwandfrei.


als Antwort auf: [#399674]
X