InDesign: Wie brechen Sie eine Geschichte aus einem Textrahmen in zwei Teile? Irgendwelche Skripte?

Gibt es eine Möglichkeit, eine Geschichte zu unterbrechen, indem man einen Textrahmen auswählt und ihn in zwei Teile teilt? Es gibt zwei Skripte, die sie aufgerufen haben und wie folgt vorgehen:

BreakFrame (wird von der Anwendung geliefert und ist im Beispiel enthalten): Diese Skriptaufgabe besteht darin, einen ausgewählten Textrahmen aus einer Reihe von verketteten Rahmen (die eine Geschichte haben) aufzubrechen und zu zerlegen.

SplitStory (wird von der Anwendung mitgeliefert und ist im Beispiel enthalten): Diese Skriptaufgabe besteht darin, eine Reihe von verketteten Textrahmen in einzelne Rahmen aufzuteilen.

Es gibt auch ein sehr nützliches Plugin namens TextStitch , das kostenlos ist, aber es muss unter einem anderen Plugin ausgeführt werden, das APID ToolAssistant heißt , und es ist nicht kostenlos !

Gibt es ein kostenloses Skript, oder kann jemand ein neues schreiben (mit Optionen für eine Unterbrechung davor oder danach könnte es noch größer sein), um dieses Bild ähnlich zu machen?

Geben Sie hier die Bildbeschreibung ein

Woher weiß das Skript, wo es brechen soll? Was sind die Kriterien?
@JanusBahsJacquet weiß nicht, es scheint mir, dass die Kriterien auf dem Bild ziemlich einfach sind. Töten Sie den Textlink und lassen Sie die Kästchen gleich umherirren. Ich kann auch verstehen, warum es nicht kostenlos ist ... Weil es eindeutig einen Mehrwert hat.
@joojaa Ja, aber zwischen welchen Textfeldern? Jeder dritte? Wenn das folgende Feld weiter links ist als das aktuelle? Wann gibt es einen manuell eingefügten Frame Break? Ein anderes Kriterium? Es scheint mir überhaupt nicht klar zu sein.
@JanusBahsJacquet Ich stelle mir vor, dass der Benutzer letztendlich möchte, dass dies geschieht, wenn er auf die Textthread-Zeile klickt.
@joojaa Ein weiteres absolut wahrscheinliches Szenario (an das ich noch nicht einmal gedacht hatte - ich hatte angenommen, dass das Ziel darin bestand, dass das Skript ein gesamtes Dokument durchläuft und dies automatisch tut). Der Fragesteller sollte klären, nach welcher der vielen möglichen Möglichkeiten er fragt.
Sehen Sie, ich habe eine lange Geschichte mit 100 Frames. Ich möchte es von Bild 51 bis 100 aufteilen, um es zu einer neuen Geschichte zu machen, ohne Threads zu Bild 1 bis 50, und dies könnte durch Auswählen von Bild 51 und Ausführen des Skripts erfolgen, um es von der Hauptgeschichte abzutrennen.
Suchen Sie nach einem solchen Skript? jsid.blogspot.com/2005/08/…
Außerdem habe ich SplitStory als Story Splitter von Avi Ravid missverstanden. Seine Skript-Break-Geschichte unter selected frame forums.adobe.com/thread/1344908
Das Adobe-Forum funktioniert nicht ... aber mit einer Problemumgehung, die von "dave saunders" bei "javascripting indesign" funktioniert, funktioniert es gut ... der schlechte Punkt ist, dass es keine Ein-Schritt-Rückgängig-Ebene hat und während es ist in Version vier, ich habe nicht genug Fähigkeiten, um das zu tun, aber ich weiß es wirklich zu schätzen, dass Sie diese guten vorstellen! ;)

Antworten (1)

Dank des vom Benutzer "SZCZERZO KŁY" eingeführten "Dave saunders"-Skripts sieht es gut aus, aber für diejenigen, die glauben, dass das Skript nicht mehr funktioniert, läuft es für mich bis CC 2015 weiterhin perfekt, indem es in eine "Version 4.0 Scripts " (Groß-/Kleinschreibung beachten, aber ohne Anführungszeichen) Unterordner des Ordners "Scripts Panel".

//DESCRIPTION: Splits story at the selected text frame.

// The selected frame becomes the first of the new story. 
// Note that the behavior when an overset last frame is selected 
// is different from that of the break-out text frame script. 
// This script moves the overset text to the second story while 
// breaking out the last frame leaves the overset text attached to the first story.

if ((app.documents.length != 0) && (app.selection.length != 0)) {
 var myFrame = app.selection[0];
 if (myFrame.constructor.name != "TextFrame") {
  errorExit('Please select a text frame');
 }
 var myStory = myFrame.parentStory;
 var mySplit = myFrame.textFrameIndex;
 var myTot = myStory.textFrames.length;

 // Because of the possibility of tables, we must always work from the back
 var myStart = myTot - 1;
 var myEnd = mySplit;

 // Nothing to do if user has selected first frame.
 if (myEnd != 0) {
  if (myStart > myEnd) {
   var myPrevFrame = splitMe(myStory.textFrames[myStart]);
   myStart--;
   for (var i = myStart; i> myEnd; i--) {
    var myNewFrame = splitMe(myStory.textFrames[i]);
    myPrevFrame.previousTextFrame = myNewFrame;
    myPrevFrame = myNewFrame;
   }
  }
  // Now we deal with the last frame
  myFrame = myStory.textFrames[myEnd]
  try {
   myIndex = myFrame.characters[0].index;
   stEnd = myStory.length - 1;
   myText = myStory.texts[0].characters.itemByRange(myIndex,stEnd);
  } catch (e) { } // Ignore; happens if last character is a table or frames are empty.
  myNewFrame = myFrame.duplicate();
  try{myText.remove();}catch(e){} //ignore empty frame
  myFrame.remove();
  try{myPrevFrame.previousTextFrame = myNewFrame;}catch(e){} //fails if one frame only
  //Finally, if, and only if, the split is mid-table, myStory is now overset
  if (myStory.textFrames[-1].overflows) {
   myTable = myStory.characters[-1].tables[0];
   myNewTable = myNewFrame.parentStory.characters[0].tables[0];
   myRowCount = myNewTable.rows.length;
   myTable.rows.itemByRange(0 - myRowCount,-1).remove();
  }
 }
} else {
 errorExit();
}

// +++++++ Functions Start Here +++++++++++++++++++++++

function splitMe(myFrame) {
 myDupeFrame = myFrame.duplicate();
 while(myDupeFrame.contents.length > 0) {
  myDupeFrame.texts[0].remove();
 }
 myFrame.remove();
 return myDupeFrame;
}

function errorExit(message) {
 if (arguments.length > 0) {
  if (app.version != 3) { beep() } // CS2 includes beep() function.
  alert(message);
 }
 exit(); // CS exits with a beep; CS2 exits silently.
}
// +++++++ Script Ends Here ++++++++++++++++++++++++++