[GastForen Programme Print/Bildbearbeitung Adobe InDesign (beschränkter) vertikaler Keil

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

(beschränkter) vertikaler Keil

Martin Fischer
  
Beiträge gesamt: 12311

20. Okt 2005, 09:12
Beitrag # 1 von 5
Bewertung:
(10581 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Anlaß meiner Anfrage bzgl. 10-tel Schritte in Paletten (http://www.hilfdirselbst.ch/...i?post=191410#191410) war die Suche nach einer Möglichkeit, Absätze in kleineren als 1mm-Schritten auszutreiben, so daß Seiten, auf welchen der Text nicht ganz bis zur Satzspiegelunterkante reicht, manuell "aufgefüllt" werden können.

In dem genannten Thread wurden auch Tastaturlösungen vorgestellt und dokumentiert.

Allerdings stellte mich diese manuelle Lösung nicht restlos zufrieden, so daß ich den Versuch unternahm, die proportionale Verteilung des übrigen Raums auf Absätze mit Abständen oben und/oder unten per Skript zu lösen: Der Abstand sollte nicht gleichmäßig / linear zwischen den Absätzen verteilt werden, sondern relativ zu der ursprünglichen Größe der Abstände. Dort, wo kein Abstand oben oder unten ist, sollte nicht ausgetrieben werden.

Der InDesign-eigene "vertikale Keil" aus den Textrahmenoptionen taugt für meine Zwecke nicht, da er auch zwischen Absätzen, die keinen Abstand oben/unten aufweisen, austreibt und im schlimmsten Fall auch noch den Durchschuß (Zeilenabstand) erhöht.

Hier das Ergebnis meiner Versuche, einen beschränkten vertikalen Keil nachzubilden:

Code
// vertikalerKeil.js 
//
// ... treibt die Abstände der Absätze proportional zu den ursrpünglichen Werten aus,
// um den ausgewählten Textrahmen vertikal zu füllen.
//
// Vor dem Start des Skripts muß ein Textrahmen ausgewählt sein (sonst läuft nix)
//
// ein Objekt ausgewält?
if (app.selection.length > 0) {
// Schleife für mehrere Objekte
for (myObject = 0; myObject < app.selection.length; myObject++){
// ist das Objekt ein Textrahmen
if (app.selection[0].constructor.name == "TextFrame"){
var mySpace = 0;
var myFrame = app.selection[myObject];
var myPs = myFrame.paragraphs;
// untere Textrahmenkante
var myBottom = myFrame.geometricBounds[2];
// Grundlinie letzte Zeile
var myBaseline = myFrame.lines[-1].characters[-1].baseline;
var myDiff = myBottom - myBaseline;

// Addition der Abstände VOR den Absätzen
// der Abstand des ersten Absatzes wird nicht berücksichtigt
for (oneP = 1; oneP < myPs.length; oneP++){
mySpace += myPs[oneP].spaceBefore
}

// Addition der Abstände NACH den Absätzen
// der Abstand des letzten Absatzes wird nicht berücksichtigt
for (oneP = 0; oneP < myPs.length-1; oneP++){
mySpace += myPs[oneP].spaceAfter
}

// Berechnung des Zuschlagfaktors
var myFactor = myDiff/mySpace

// Proportionale Verteilung des zu verteilenden Raums auf die Abstände VOR den Absätzen
// erweitert wird nur dort, wo bereits Abstand drin ist
// der Abstand des ersten Absatzes wird nicht berücksichtigt
for (oneP = 1; oneP < myPs.length; oneP++){
if (myPs[oneP].spaceBefore > 0){
myPs[oneP].spaceBefore += myPs[oneP].spaceBefore*myFactor
}
}
// Proportionale Verteilung des zu verteilenden Raums auf die Abstände NACH den Absätzen
// erweitert wird nur dort, wo bereits Abstand drin ist
// der Abstand des letzten Absatzes wird nicht berücksichtigt
for (oneP = 0; oneP < myPs.length-1; oneP++){
if (myPs[oneP].spaceAfter > 0){
myPs[oneP].spaceAfter += myPs[oneP].spaceAfter*myFactor
}
}
}
else {
alert("Fehler \nKeinen Textrahmen erwischt, \nsondern (in english) \"" + app.selection[0].constructor.name + "\"!")
}
}
}
else {
alert("Welcher Textrahmen darf's denn sein?")
}

//alert(mySpace)

Das Skript orientiert sich nicht an der Satzspiegelunterkante (unterer Rand) eines Dokuments, sondern an der unteren Kante eines Textrahmens.

Vor dem Start muß mindestens ein Textrahmen ausgewählt werden.

Die Ausführungsgeschwindigkeit läßt noch zu wünschen übrig.
Möglicherweise läßt sich da noch etwas beschleunigen.
Aber ansonsten scheint das Skript seinen Job zu erledigen.
Ich bin offen für Kritik und Änderungsvorschläge.

Viele Grüße
Martin


X

(beschränkter) vertikaler Keil

Martin Fischer
  
Beiträge gesamt: 12311

31. Jan 2006, 01:04
Beitrag # 2 von 5
Beitrag ID: #208066
Bewertung:
(10388 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Auf der Suche nach einer passenden Bezeichnung für einen vertikalen Keil, der die Zeilen nicht austreibt, sondern einbringt, bin ich in der "Detailtypographie" von Forssman/de Jong auf folgende Feststellung gestoßen:

Zitat "Der vertikale Textkeil bringt mehr Probleme als er löst.
Ein so unschöner und störender Eingriff in die Seite ist viel schwerer zu ertragen als ein Hurenkind - und als ein Schusterjunge sowieso."


Manchmal aber ist der Wunsch des Auftraggebers gewichtiger als die Ästhetik.

Aus aktuellem Anlaß suchte ich nach einer Lösung, nicht Zeilen auszutreiben, sondern auch einzubringen. Den Arbeitstitel "vertikalesVakuum.jsx" habe ich nach der Konsultation von Forssman/de Jong zugunsten eines erweiterten "vertikalerKeil.jsx", also "vertikalerKeil_xl.jsx" verworfen.

Austreiben
Das folgende Skript vertikalerKeil_xl.js treibt dann Absätze proportional aus, wenn die Unterkante des/der ausgewählten Textrahmen(s) oberhalb oder auf dem unteren Seitenrand steht.
Anders: Die untere Textrahmenkante ist die Bezugslinie.

Einbringen
Das Skript bringt dann Zeilen proportional ein, wenn die Unterkante des/der ausgewählten Textrahmen(s) unterhalb des unteren Seitenrands steht.
Das Skript versucht, die Grundlinie der letzten Textzeile auf den unteren Satzspiegelrand zu bringen. Wenn nicht genügend Raum zum Einbringen vorliegt, dann erscheint eine Fehlermeldung.
Anders: Der untere Seitenrand ist die Bezugslinie.

Bin gespannt auf Eure Erfahrungen und Kritik.
Das Skript hat meine Tests bestanden. Aber vielleicht habe ich etwas übersehen.

Code
// vertikalerKeil_xl.jsx 
//DESCRIPTION: bringt die Abstände der Absätze proportional zu den ursrpünglichen Werten ein oder treibt sie aus, um den ausgewählten Textrahmen vertikal zu füllen.
// Vor dem Start des Skripts muß ein Textrahmen ausgewählt sein (sonst läuft nix)
//
// ein Objekt ausgewählt?
if (app.selection.length > 0) {
// Schleife für mehrere Objekte
for (myObject = 0; myObject < app.selection.length; myObject++){
// ist das Objekt ein Textrahmen
if (app.selection[0].constructor.name == "TextFrame"){
var mySpace = 0;
var myFrame = app.selection[myObject];
var myPs = myFrame.paragraphs;

// untere Textrahmenkante
myPage = app.activeWindow.activePage;
myDoc = app.documents[0];
// Wenn die untere Textrahmenkante über dem unteren Seitenrand liegt, dann ist diese die Bezugslinie zum Austreiben
if ((myFrame.geometricBounds[2] < myDoc.documentPreferences.pageHeight - myPage.marginPreferences.bottom) )
{
var myBottom = myFrame.geometricBounds[2];
}
// Wenn die untere Textrahmenkante auf dem unteren Seitenrand oder darunter liegt,
// dann ist der untere Seitenrand die Bezugslinie zum Austreiben
else
{
var myBottom = myDoc.documentPreferences.pageHeight - myPage.marginPreferences.bottom;
}

// Grundlinie letzte Zeile
var myBaseline = myFrame.lines[-1].characters[-1].baseline;
var myDiff = myBottom - myBaseline;

// Addition der Abstände VOR den Absätzen
// der Abstand des ersten Absatzes wird nicht berücksichtigt
for (oneP = 1; oneP < myPs.length; oneP++){
mySpace += myPs[oneP].spaceBefore
}

// Addition der Abstände NACH den Absätzen
// der Abstand des letzten Absatzes wird nicht berücksichtigt
for (oneP = 0; oneP < myPs.length-1; oneP++){
mySpace += myPs[oneP].spaceAfter
}

if (myDiff*-1 > mySpace)
{
alert("Sorry!\rZu wenig Raum, um den Text einzubringen.");
exit();
}
// Berechnung des Zuschlagfaktors
var myFactor = myDiff/mySpace

// Proportionale Verteilung des zu verteilenden Raums auf die Abstände VOR den Absätzen
// erweitert wird nur dort, wo bereits Abstand drin ist
// der Abstand des ersten Absatzes wird nicht berücksichtigt
for (oneP = 1; oneP < myPs.length; oneP++){
if (myPs[oneP].spaceBefore > 0){
myPs[oneP].spaceBefore += myPs[oneP].spaceBefore*myFactor
}
}
// Proportionale Verteilung des zu verteilenden Raums auf die Abstände NACH den Absätzen
// erweitert wird nur dort, wo bereits Abstand drin ist
// der Abstand des letzten Absatzes wird nicht berücksichtigt
for (oneP = 0; oneP < myPs.length-1; oneP++){
if (myPs[oneP].spaceAfter > 0){
myPs[oneP].spaceAfter += myPs[oneP].spaceAfter*myFactor
}
}
}
else {
alert("Fehler \nKeinen Textrahmen erwischt, \nsondern (in english) \"" + app.selection[0].constructor.name + "\"!")
}
}
}
else {
alert("Welcher Textrahmen darf's denn sein?")
}


Viele Grüße
Martin




als Antwort auf: [#191814]
(Dieser Beitrag wurde von Martin Fischer am 31. Jan 2006, 01:08 geändert)

(beschränkter) vertikaler Keil

r_how
Beiträge gesamt: 2

7. Aug 2020, 11:42
Beitrag # 3 von 5
Beitrag ID: #576397
Bewertung:
(3963 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin
Erstmal vielen Dank für dein Script, das du vor langer Zeit geteilt hast. Für mich seeehr praktisch! Erspart mir viel Gebastel!

Ich habe eine Frage dazu: Könnte man es eventuell auch abändern, so dass es nur in folgendem Fall den "Abstand danach" erweitert:

--> Nur bei zwei aufeinanderfolgenden Absätzen und dabei nur beim zweiten Absatz.

Dann wäre es für meinen Anwendungszweck perfekt :-)

Liebe Grüsse
Renato


als Antwort auf: [#191814]

(beschränkter) vertikaler Keil

Martin Fischer
  
Beiträge gesamt: 12311

7. Aug 2020, 12:02
Beitrag # 4 von 5
Beitrag ID: #576398
Bewertung:
(3951 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Renato,

Zitat --> Nur bei zwei aufeinanderfolgenden Absätzen und dabei nur beim zweiten Absatz.


Das verstehe ich nicht.
Fehlt da was?
Etwa: Zwei aufeinanderfolgende Absätze mit demselben Absatzformat?

Aus meiner Erfahrung kann ich spontan keine Situation erinnern, wo diese Anforderung Sinn machen würde.

Hast Du ein Beispiel, in dem die Situation erkenn- und nachvollziehbar wird?

Viele Grüße
Martin




als Antwort auf: [#576397]

(beschränkter) vertikaler Keil

r_how
Beiträge gesamt: 2

7. Aug 2020, 15:31
Beitrag # 5 von 5
Beitrag ID: #576408
Bewertung:
(3891 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin

Danke für die schnelle Antwort.

Zu deiner Frage: Nein es wäre nicht 2x das selbe Absatzformat.

Lass mich mein Fall kurz anhand eines Beispiels erklären:

[Absatzformat Lauftext] Non plaut re ressi tescimil modi volumque el min poria quae eos adi. [Absatz]
[Absatzformat Titel 1] [Absatz]
[Absatzformat Titel 1] Titel [Absatz]
[Absatzformat Lauftext] Non plaut re ressi tescimil modi volumque el min poria quae eos adi...

Bei der 2. Zeile im Beispiel handelt es sich lediglich um einen Platzhalter vor dem entsprechenden Titel. Dieser hat standardmässig das Absatzformat des nachfolgenden Titels, darf aber beim "Abstand danach" varieren und wird daher bei der Verteilung des Rest-Zwischenraums vorzugsweise verändert.

Zusammengefasst: Das Script sollte nur dann eingreifen, wenn 2 Absätze (egal welche) aufeinander folgen. Falls es diesen Fall nicht gibt, kann es wie von dir programmiert ablaufen.

Zitat und dabei nur beim zweiten Absatz.

... ist bei genauerer Betrachtung nicht nötig, da das Lauftext-Format sowieso 0mm "Abstand danach" hat.


Meine Frage ist nun, ob es für diesen spezifischen Fall eine nicht allzu aufwendige Lösung gäbe.


Liebe Grüsse
Renato


als Antwort auf: [#576398]
X

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
04.09.2020 - 05.03.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 04. Sept. 2020, 13.00 Uhr - Freitag, 05. März 2021, 12.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte. Mit dem Abschluss «Publisher Professional – Profil «Multimedia» verliehen durch die Digicomp Academy AG, bestätigen Sie Ihre Praxiserfahrungen und Qualifizierung in den genannten Themengebieten gegenüber Ihrem Arbeitgeber sowie Ihren Kunden.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/weiterbildung/software-anwendungs-trainings/adobe-trainings/publishing-lehrgaenge/lehrgang-publisher-professional-profil-multimedia

Veranstaltungen
02.10.2020 - 11.12.2020

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 02. Okt. 2020, 13.00 Uhr - Freitag, 11. Dez. 2020, 15.00 Uhr

Lehrgang

Steigen Sie in die Welt des Publishings ein und erlangen Sie die Zertifizierung von publishingNETWORK. Lernen Sie in diesem Lehrgang Druckmedien professionell zu erarbeiten, druckfertige PDFs zu erstellen und CI/CD-Vorgaben umzusetzen. Mit dem Abschluss «Publisher Basic» verliehen durch die Digicomp Academy AG, bestätigen Sie Ihre Praxiserfahrungen und Qualifizierung in den genannten Themengebieten gegenüber Ihrem Arbeitgeber sowie Ihren Kunden.

Preis: CHF 6'300.-
Dauer: 18 Tage (ca. 126 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt.

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/weiterbildung/software-anwendungs-trainings/adobe-trainings/publishing-lehrgaenge/lehrgang-publisher-basic

Neuste Foreneinträge


Aufzählung mit hängendem Einzug in QX20?

wie langen Text auf viele Seiten einfügen - erledigt

Colormanagement bei Ausgabe von platzierten und profilierten cmyk-PDFs in 2020

Indesign Textrahmen mit frei definiertem Rahmen, Abstand zum Rahmen und vertikalem Keil erstellen

Pfad aus Zwischenablage für neues Bild ( rahmen )

Dropdown Farbmenu

Ja ich finde Adobe Anwendungen spitze, aber ...

Indesign Fußnoten/Endnoten bei Buchfunktion

Problem mit der Verknüpfung von InDesign mit Excel

Automatische Farbmengenberechnung
medienjobs