Indesign: Как Разбить Историю Из Текстового Фрейма На Две Части? Есть Скрипты?

  • Автор темы Tvm46
  • Обновлено
  • 23, Oct 2024
  • #1

Есть ли способ разбить историю, выделив текстовый фрейм и разделив его на две части?

Есть два скрипта, которые они вызывают и делают так:

BreakFrame (поставляется приложением и находится в образце):

Задача этого скрипта состоит в том, чтобы разбить и расчленить выбранный текстовый фрейм из серии связанных фреймов (которые имеют одну историю). SplitStory (поставляется приложением и находится в образце): Задача этого сценария заключается в разделении серии связанных текстовых фреймов на отдельные фреймы. Также есть очень полезный плагин под названием ТекстСтич который бесплатен, но его нужно запускать под другим плагином, который называется!

APID ToolAssistant

InDesign: Как разбить историю из текстового фрейма на две части? Есть скрипты?

и его

Tvm46


Рег
24 May, 2006

Тем
61

Постов
188

Баллов
513
  • 26, Oct 2024
  • #2

Благодаря пользователю «SZCZERZO KŁY» представил сценарий «Дэйв Сондерс», он выглядит нормально, но для тех, кто думает, что сценарий больше не работает, у меня он продолжает отлично работать вплоть до CC 2015, если поместить его в «Скрипты версии 4.0». " (с учетом регистра, но без кавычек) в папке панели сценариев.

 //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 ++++++++++++++++++++++++++
 
 

Pyatenkaart88


Рег
07 Apr, 2020

Тем
72

Постов
195

Баллов
615
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно