Connect failed: Connection timed out

[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Zahl der textStyleRanges eines insertionPoints

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

Zahl der textStyleRanges eines insertionPoints

Martin Fischer
  
Beiträge gesamt: 12779

5. Mai 2011, 15:17
Beitrag # 1 von 13
Bewertung:
(4483 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Bislang hatte ich angenommen, dass ein insertionPoint nur genau einen textStyleRange zählen kann.

Heute machte ich die Entdeckung, dass ein insertionPoint zwischen zwei Zeichen in InDesign CS5 durchaus mehrere textStyleRanges zählen kann. Mein Maximum waren 17(!) textStyleRanges eines einzigen insertionPoints. Die Zahl ist nicht zwingend abhängig von der Zahl der zugewiesenen Zeichenattribute.

Ein insertionPoint in Text mit derselben Formatierung weist in InDesign CS4 nur einen textStyleRange auf. Das klingt für mich auch plausibel.

Wähle ich in InDesign CS5 ein benachbartes Zeichen dieses wunderbaren insertionPoints aus, dann hat dieses erwartungsgemäß wie auch in InDesign CS4 und früher nur einen textStyleRange.

Bei meinen Experimenten stellte ich aber auch fest, dass es insertionPoints mit 0 textStyleRanges gibt: diejenigen, die am Ende eines Textabschnitts (auch am Ende einer Tabellenzelle) stehen. Beim Adressieren eines textStyleRanges einer Auswahl schaut InDesign wohl ab dem ersten Einfügepunkt nur nach vorne und nicht zurück: app.selection[0].textStyleRanges.firstItem().select();

Hier ein kleines Skriptbeispiel, mit dem man die Auswahl auf den aktuellen textStyleRange vom Anfang bis zum Ende ausdehnen kann (hilft mit öfters bei der Markierung etwa von kursiv oder mit Kapitälchen ausgezeichnetem Text oder Text mit einer bestimmten Sprache:
Code
// extendSelection2TextStyleRange.jsx  
//DESCRIPTION:Erweitert die Auswahl auf den Anfang und das Ende des ausgewählten Textstilbereichs.

if (app.selection.length > 0 &&
app.selection[0].hasOwnProperty('baseline') &&
app.selection[0].textStyleRanges.length <= 1)
{
selectTextStyleRange (app.selection[0].insertionPoints[-1]);
}

function selectTextStyleRange(p) {
var myIndex = ( p.index != 0 )
? p.index
: p.index + 1;
var myRange = p.parent.insertionPoints.itemByRange(0, myIndex);
var myTextStyleRange = p.parent.textStyleRanges[myRange.textStyleRanges.length-1];
myTextStyleRange.select();
}


Mit diesem Skriptle bin ich in InDesign CS5 gescheitert, solange ich nur einen Einfügepunkt ausgewählt hatte, denn die Bedingung app.selection[0].textStyleRanges.length <= 1; wird dann – nach meinen bisherigen Erfahrungen – nicht erfüllt, da ein Einfügepunkt in InDesign CS5 entweder keinen oder mehrere textStyleRanges zählt. ;-)
Freilich ist es möglich, bei den Bedingungen zu prüfen, ob die Auswahl von der Klasse insertionPoints ist und diesen aufgrund der Besonderheiten in InDesign CS5 ein besonderes Augenmerk zu schenken.

Code
// extendSelection2TextStyleRange_CS5.jsx  
//DESCRIPTION:Erweitert die Auswahl auf den Anfang und das Ende des ausgewählten Textstilbereichs.

if ( app.selection.length > 0
&& ( (app.selection[0].hasOwnProperty('baseline') && app.selection[0].textStyleRanges.length <= 1)
|| app.selection[0].constructor == InsertionPoint) )
{
selectTextStyleRange (app.selection[0].insertionPoints[-1]);
}

function selectTextStyleRange(p) {
var myIndex = ( p.index != 0 )
? p.index
: p.index + 1;
var myRange = p.parent.insertionPoints.itemByRange(0, myIndex);
var myTextStyleRange = p.parent.textStyleRanges[myRange.textStyleRanges.length-1];
myTextStyleRange.select();
}



Hat jemand eine Idee, wie ein insertionPoint in InDesign CS5 anders als in den früheren InDesign-Versionen in den Genuss von mehreren textStyleRanges kommt?

(Dieser Beitrag wurde von Martin Fischer am 5. Mai 2011, 22:23 geändert)
X

Zahl der textStyleRanges eines insertionPoints

Dirk Becker
Beiträge gesamt: 193

9. Mai 2011, 21:12
Beitrag # 2 von 13
Beitrag ID: #471008
Bewertung:
(4421 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ist eventuell die Änderungsverfolgung aktiviert, also Story.trackChanges?
Oder eine eingebettete Note?
Wenn man von den umgebenden zwei Zeichen ein Snippet macht, wie sieht es denn da aus?

Dirk


als Antwort auf: [#470739]

Zahl der textStyleRanges eines insertionPoints

Dirk Becker
Beiträge gesamt: 193

9. Mai 2011, 21:17
Beitrag # 3 von 13
Beitrag ID: #471009
Bewertung:
(4418 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Noch eine Möglichkeit: ich habe bereits unter CS4 Probleme mit zu vielen TextStyleRanges gehabt, wo mal eben die folgenden Verankerungs-Zeichen für die XML End-Tags mitgezählt wurden, obwohl die gar nicht zum abgefragten Inhalt des innersten Tags zählen dürften...

Dirk


als Antwort auf: [#470739]

Zahl der textStyleRanges eines insertionPoints

Martin Fischer
  
Beiträge gesamt: 12779

9. Mai 2011, 21:37
Beitrag # 4 von 13
Beitrag ID: #471010
Bewertung:
(4417 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Story.trackChanges ist false.
Keine Notiz.
Keine Abweichungen (Text formatiert mit Absatz- und Zeichenformat).

Beim angehängten Snippet zählen alle characters und auch alle benachbarten characters (Zeichenpaare) je 1 textStyleRange (Ausnahme: das letzte Zeichenpaar zählt 2 textStyleRanges).
Die insertionPoints zählen mit Ausnahme der letzten beiden je 2 textStyleRanges.
Der vorletzte zählt 1 textStyleRange, der letzte 0.

Das Snippet ist ein Ausschnitt aus einem größeren Textblock.
Im Original-Textblock zählen die korrespondierenden insertionPoints je 4 textStyleRanges.

Der Original-Textblock wurde dupliziert und Text davor und danach gelöscht.
So entstand der Text des angehängten Snippets.


Ein Skriptschnipsel zur Ermittlung der textStyleRanges der insertionPoints einer Auswahl:
Code
var insp = app.selection[0].insertionPoints; 
for (var i = 0; i < insp.length; i++)
$.writeln( insp[i].textStyleRanges.length);



als Antwort auf: [#471008]
(Dieser Beitrag wurde von Martin Fischer am 9. Mai 2011, 22:01 geändert)

Anhang:
Snippet.idms (24.8 KB)

Zahl der textStyleRanges eines insertionPoints

Martin Fischer
  
Beiträge gesamt: 12779

9. Mai 2011, 21:43
Beitrag # 5 von 13
Beitrag ID: #471011
Bewertung:
(4413 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ah! XML-Tags könnten eine Rolle spielen.
Die hatte ich außer Acht gelassen (ausgeblendet und ignoriert).

...

Auch nach Entfernen des Tags für den Text bleibt die Zahl der textStyleRanges der insertionPoints dieselbe (4 bzw. 2).

Dasselbe Ergebnis nach Entfernen aller Tags.


als Antwort auf: [#471009]
(Dieser Beitrag wurde von Martin Fischer am 9. Mai 2011, 21:46 geändert)

Zahl der textStyleRanges eines insertionPoints

Dirk Becker
Beiträge gesamt: 193

10. Mai 2011, 08:43
Beitrag # 6 von 13
Beitrag ID: #471025
Bewertung:
(4353 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Besteht die Möglichkeit, irgendwo ein (reduziertes) Beispieldokument hochzuladen? Auch gerne per direkter Nachricht an mich. Ich würde mir gern mit meinen Analyse-Plugins die Problemstelle im Detail ansehen.

Dirk


als Antwort auf: [#471011]

Zahl der textStyleRanges eines insertionPoints

flobuc
Beiträge gesamt: 246

10. Mai 2011, 13:04
Beitrag # 7 von 13
Beitrag ID: #471053
Bewertung:
(4320 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

ich hab zwar noch keine praktische Anwendung dafür, wenn ein InsertionPoint mehr wie einen TextStyleRange hat, aber ich kann dir sagen was das bedeutet:

Die Zahl gibt an wieviel verschiedene TextStyles vom aktuellen InsertionPoint bis zum Absatzende noch kommen. Wobei gleiche Formatierungen doppelt gezählt werden.

Wenn du den Cursor von folgendem Text ganz an den Anfang stellst ist TextStyleRange=7:

TextTextTextTextTextTextText

Wenn du den Cursor ins Rote stellst ist TextStyleRange=6
Im Grünen ist TextStyleRange=4 und im Blauen ist TextStyleRange=2.
Am Ende des Absatzes ist TextStyleRange=0, da kommt ja dann auch nichts mehr.

Ich hab wie gesagt noch keine praktische Anwendung dafür, ist vielleicht aber ganz gut um unterschiedliche Formatierungen zu finden oder von Formatierung zu Formatierung zu springen.

Gruss

Flo


als Antwort auf: [#471011]

Zahl der textStyleRanges eines insertionPoints

Uwe Laubender
Beiträge gesamt: 5316

10. Mai 2011, 13:13
Beitrag # 8 von 13
Beitrag ID: #471056
Bewertung:
(4318 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ flobuc ] Die Zahl gibt an wieviel verschiedene TextStyles vom aktuellen InsertionPoint bis zum Absatzende noch kommen.Flo


Hallo, Flo!
Nicht bis zum Absatzende, sondern bis zum Ende der Story.

MacBook Pro 2.4GHz | OS X 10.5.8 | Adobe CS3/CS4/CS5/CS5.5 Design Premium


als Antwort auf: [#471053]

Zahl der textStyleRanges eines insertionPoints

Martin Fischer
  
Beiträge gesamt: 12779

10. Mai 2011, 13:23
Beitrag # 9 von 13
Beitrag ID: #471057
Bewertung:
(4316 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Florian,

prima!
Wie bist Du denn da drauf gekommen?

Bis InDesign CS4 wurde bei einem insertionPoint stets 1 textStyleRange gemeldet (solange er nicht am Ende eines Textabschnitts bzw. am Ende einer Tabellenzelle lag).

In CS5 ist es so, als hätte man den Text vom Einfügepunkt aus bis zum Ende des Textabschnitts ausgewählt.

TextTextTextTextTextText
TextTextTextTextTextText
TextTextTextTextTextText
TextTextTextTextTextText

Interessant.
Allerdings fehlt mir eine Idee, wofür das nützlich sein könnte.
Wenn man das gewünschte Ergebnis (textStyleRanges bis zum Ende der story) auch wie bisher ermitteln kann.
Aber sei's drum.
Mit dieser Erklärung kann ich leben. ;-)


Leider wird auch in InDesign CS5 mit
Code
app.selection[0].textStyleRanges.firstItem().select(); 

nur der textStyleRange ab dem Einfügepunkt und nicht der gesamte textStyleRange, in dem der Einfügepunkt enthalten ist, ausgewählt.


als Antwort auf: [#471053]
(Dieser Beitrag wurde von Martin Fischer am 10. Mai 2011, 13:26 geändert)

Zahl der textStyleRanges eines insertionPoints

Uwe Laubender
Beiträge gesamt: 5316

10. Mai 2011, 13:38
Beitrag # 10 von 13
Beitrag ID: #471058
Bewertung:
(4306 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Martin!
Das könnte man umgehen:

Code
var n = app.selection[0].textStyleRanges.length; 
var x = app.selection[0].parentStory.textStyleRanges.length;

app.selection[0].parentStory.textStyleRanges[x-n].select();


Dann wird der textStyleRange des insertionPoint ausgewählt.


als Antwort auf: [#471057]

Zahl der textStyleRanges eines insertionPoints

Martin Fischer
  
Beiträge gesamt: 12779

10. Mai 2011, 13:43
Beitrag # 11 von 13
Beitrag ID: #471060
Bewertung:
(4305 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

gute Idee!

Aber nur, wenn ein insertionPoint ausgewählt ist. ;-)

Andernfalls braucht's
Code
var n = app.selection[0].insertionPoints.firstItem().textStyleRanges.length;  
var x = app.selection[0].parentStory.textStyleRanges.length;

app.selection[0].parentStory.textStyleRanges[x-n].select();

(solange der ausgewählte Text nicht in einer Fußnote oder Tabellenzelle enthalten)


als Antwort auf: [#471058]
(Dieser Beitrag wurde von Martin Fischer am 10. Mai 2011, 13:50 geändert)

Zahl der textStyleRanges eines insertionPoints

Uwe Laubender
Beiträge gesamt: 5316

10. Mai 2011, 13:57
Beitrag # 12 von 13
Beitrag ID: #471065
Bewertung:
(4293 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Martin!
Klar. Da muss natürlich eine Prüfung der Auswahl vorangehen:
Code
var n = app.selection[0].textStyleRanges.length; 
var x = app.selection[0].parentStory.textStyleRanges.length;

if(app.selection[0].insertionPoints.length==1){
app.selection[0].parentStory.textStyleRanges[x-n].select();
};


Aber natürlich bleibt die Frage offen, weshalb die Adobe-Programmierer sich gezwungen sahen diese Änderung im DOM vorzunehmen.

MacBook Pro 2.4GHz | OS X 10.5.8 | Adobe CS3/CS4/CS5/CS5.5 Design Premium


als Antwort auf: [#471060]

Zahl der textStyleRanges eines insertionPoints

Martin Fischer
  
Beiträge gesamt: 12779

10. Mai 2011, 14:07
Beitrag # 13 von 13
Beitrag ID: #471067
Bewertung:
(4284 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Dank an alle Beteiligten für's Mitdenken.


als Antwort auf: [#471065]
X