InDesign – Text an Grundlinienraster angepasst. Neuer Zeilenabstand anzeigen lassen

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:

Neue Beiträge

Zurück