Anzeige

InDesign – Text an Grundlinienraster angepasst. Neuer Zeilenabstand anzeigen lassen


#1
Hallo,
wenn ich in Indesign einen Text an einem Grundlinienraster ausrichte wird ja der Zeilenabstand so angepasst das dieser auf das Grundlinienraster passt. Gibt es eine Möglichkeit sich irgendwie den neuen Zeilenabstand des Textes anzeigen zu lassen?

Grüße
 
#2
Ich würde mal sagen, dass der "neue" Zeilenabstand ziemlich exakt deiner Grundlinienraster-Einteilung gleicht. Und diese kannst du unter "Voreinstellungen - Raster - Grundlinienraster Einteilung alle " ablesen.
 
#3
Hi,
nicht wenn ich einen größeren zZeilenabstand als den im Grundlineinraster eingestellten habe. Dann bleibt mir im Grunde nur die Grundlinienrasterzeilen zu zählen und mal dem Wert zu nehmen. ist doch etwas umständlich, vor allem wenn man nicht mehr weiß welchen Wert man eingestellt hat. Dann muss ich erstmal die Voreinstellungen aufrufen.

Grüß
 
#4
Verstehe ich nicht ganz:
Wenn dein Zeilenabstand größer als dein Grundlinienraster eingestellt ist, dann ist der tatsächliche Zeilenabstand doppelt so groß wie dein Grundlinienraster. Der ursprünglich eingestellte Zeilenabstand steht ja oben im Bedienfeld drin... (glaube ich jedenfalls)
 
#5
Hi,
da der ursprünglich eingestellte Zeilenabstand steht noch bei der Schrift drinnen.
Aber doppelt muss er nicht sein. Das hängt ja vom Grundlinienraster ab. Wenn ich da eins einstelle welches nicht direkt teilbar ist wird es schwierig den direkten Zeilenabstand zu errechnen ohne nachzuschauen wie der Eingestellte zeilenabstand ist.

Aber um es kurz zu machen, wie es scheint sieht man den neuen Zeilenabstand nicht. Den muss ich mir selbst errechnen. Das ist aber etwas ungünstig da ich dann mir eben immer merken muss, oder jedes mal die Einstellungen aufrufen muss um das auszurechenen.

Der Aufwand ist natürlich kein Weltuntergang aber nervt.

Grüße
 
#6
Könntest es höchstens mal per Script versuchen. Habe mal versucht, was zusammenzuschustern:

Code:
#target indesign
//DESCRIPTION:Zeigt den aktuellen Zeilenabstand
if (app.selection.length == 1) {
	var auswahl = app.selection[0];
	var otyp = auswahl.constructor.name;

	if ( otyp == "Text" ||  otyp == "InsertionPoint" ||  otyp == "Paragraph" ||  otyp == "Line" ) {
		var Meldung = "Zeilenabstand: " + auswahl.leading + "\r";
		var gr = Math.round(app.activeDocument.gridPreferences.baselineDivision/0.3527777777777);
		Meldung += "Grundlinienraster: " + gr + "\r";
		
		//Berechnung  tatsächlicher Zeilenabstand
		var a = auswahl.leading;
		var b = gr;
		
		var x = Math.ceil(a/b) * b;
		Meldung += "Tatsächlicher Zeilenabstand: " + x;
		alert (Meldung);
	}
}
Das Skript liest den verwendeten Zeilenabstand aus dem markierten Bereich aus (solltest natürlich nicht mehrere Absätze mit unterschiedlichen Zeilenabständen markieren) und schaut, was im Grundlinienraster eingestellt ist und errechnet daraus den tatsächlichen Zeilenabstand. Dieser wird in einer Meldungsbox ausgegeben. Ich hoffe es passt alles soweit. Möglicherweise funktioniert das Skript nur, wenn Punkt die Standardeinheit des Programms ist, so tief habe ich das nicht berücksichtigt.
Kannst es ja mal probieren und schreiben, ob das in etwa deiner Vorstellung gleich kommt...

Grüße...
 
#9
Hi, habe es mit CS5 geschrieben und getestet...
Aber ich sehe grad, ich habe keine Meldung reingebaut, falls was falsches markiert ist. Wenn du mit dem Cursor zwischen zwei Zeichen klickst, müsste es gehen...
 
Zuletzt bearbeitet:
#10
Hi,
okay, ich hab nur den Textrahmen markiert gehabt.
Ich habe einen Text mit einem Dokumentengrundlinienraster. Da wird alles richtig ausgegeben.
Nun habe ich ein Textfeld mit eigenem Grundlinienraster mit den Folgenden Einstellung:

Grundlinienraster Einteilung alle: 3,5 Pt
Schriftgröße: 6,5pt
Zeilenabstand: 7,8pt (Automatisch)

Wenn ich nun das Script ausführe, bekomme ich die Meldung mit diesen Werten:

Zeilenabstand: 1635019116
Grundlinienraster: 20
Tatsächlicher Zeilenabstand: 1635019120

Der Tasächliche Zeilenabstand müsste bei 10,5pt liegen.


Grüße
 
#11
okay... der komische Wert kam daher, weil du einen automatischen Zeilenabstand eingestellt hattest. Nichtsdestotrotz waren noch falsche Fehler im Skript. Mit dieser Version sollte es jetzt korrekt funktionieren.


Code:
#target indesign
//DESCRIPTION:Zeigt den aktuellen Zeilenabstand
if (app.selection.length == 1) {
	var auswahl = app.selection[0];
	var otyp = auswahl.constructor.name;
	var zab;

	if (otyp == "Text" ||  otyp == "InsertionPoint" ||  otyp == "Paragraph" ||  otyp == "Line" ) {
		
		
		if (auswahl.leading == 1635019116) { //Enumerator für Automatisch
			//Berechnung bei autom. Zeilenabstand
			var zugabe = auswahl.autoLeading;
			zab = auswahl.pointSize * zugabe / 100;
		} else {
			zab = auswahl.leading;
		}
		
		var Meldung = "Auswahl: " + otyp + "\rZeilenabstand: " + zab + " pt\r";
		
		//Einheiten auf pt umstellen
		var aktiveEinheit = app.activeDocument.viewPreferences.verticalMeasurementUnits;
		app.activeDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.POINTS;
		
		//Grundlinienraster-Einteilung auslesen
		var gr = app.activeDocument.gridPreferences.baselineDivision;
		Meldung += "Grundlinienraster: " + gr + " pt\r";
		
		//Berechnung verw. tatsächlicher Zeilenabstand
		var a = zab;
		var b = gr;
		
		var x = Math.ceil(a/b) * b;
		Meldung += "Tatsächlicher Zeilenabstand: " + x + " pt";
		alert (Meldung);
		
		//Einheiten Zurückstellen
		app.activeDocument.viewPreferences.verticalMeasurementUnits = aktiveEinheit;
	}
	else {
		alert ("Falsche Auswahl!\rSie haben gewählt: " + otyp + ".\rWählen Sie bitte Text, InsertionPoint, Paragraph oder Line aus...");
	}
}

Um es noch ein bisschen zu erklären, falls es jemand interessiert:

  • Zeile 3: prüfen, ob die Auswahl nicht mehr oder weniger als 1 Objekt enthält. Falls das doch der Fall ist, einfach nix machen ;-)
  • Zeile 8: Skript nur ausführen, falls die Auswahl vom Typ Text (mehrere Zeichen markiert), InsertionPoint (Cursor im Textrahmen blinkend), Paragraph (ganzer Absatz) oder Line (ganze Zeile) ist (sonst geht es nämlich nicht). Ansonsten wird eine Fehlermeldung ausgegeben (Zeile 41)
  • Zeile 11: prüfen, ob als Zeilenabstand automatisch eingestellt ist (dann gibt das Skript nämlich den Wert 1635019116 zurück.
  • Zeile 14: den Zeilenabstand bei automatischer Einstellung berechnen Schriftgröße mal Prozentwert durch 100.
  • Zeile 16: ansonsten den Zeilenabstand einfach nur auslesen
  • Zeile 19: Meldungstext befüllen
  • Zeile 22: Einheit für vertikale Werte merken
  • Zeile 23: Einheit für vertikale Werte auf pt umstellen
  • Zeile 26: Wert für Grundlinienrassterabstand in pt auslesen (ohne umstellung der Einheit liest das Skritp den Wert in mm aus, bzw. in der Einheit, die in den Voreinstellungen für vertikale Einheiten eingestellt ist, also meist mm)
  • Zeile 30/31: Variablen umbenannt, muss nicht unbedingt sein
  • Zeile 33: Berechnung tatsächlicher Zeilenabstand: Zeilenabstand durch Grundlinienraster, diesen Wert aufrunden und durch das Grundlinienraster teilen
  • Zeile 35: komplette Meldung ausgeben
  • Zeile 38: Einheit für vertikale Werte wieder auf das umstellen, was vorher drin war

Viel Spaß damit... ;-)
 
Zuletzt bearbeitet:
Anzeige

Neue Beiträge

Anzeige