Scripting Indesign: чередование стилей абзаца

Как мне это сделать:

У меня есть документ с двумя чередующимися стилями абзаца, s1 и s2. За s1 следует s2 и наоборот. Это прекрасно работает с пользовательским интерфейсом. Но как это работает со скриптами?

В следующем примере кода весь текст форматируется как стиль абзаца s1 вместо чередования стилей. При добавлении абзацев с помощью пользовательского интерфейса формат абзаца изменяется по желанию.

var myDocument = app.documents.add(true);
var s1 = myDocument.paragraphStyles.add({name:'one'});
var s2 = myDocument.paragraphStyles.add({name:'two'});
with (s1) {nextStyle = s2;}
with (s2) {nextStyle = s1;}

var myTextFrame =  myDocument.spreads.lastItem().pages.lastItem().textFrames.add();
myTextFrame.geometricBounds = ["20mm","20mm","100mm","100mm"];
myTextFrame.parentStory.insertionPoints.item(0).appliedParagraphStyle = s1;
myTextFrame.contents = "abc\rdef\rghi\rklm\r";

person Alex Monthy    schedule 05.10.2013    source источник
comment
Не похоже, что это будет работать таким образом со сценариями, если вы не используете цикл for для итеративного применения чередующихся стилей к каждому абзацу. По крайней мере... Я не смог найти предполагаемую функцию ApplyNextStyle в справочнике по Javascript.   -  person Josh Voigts    schedule 07.10.2013
comment
Возможно, ты прав. Но при моей первой наивной попытке это сработало (по крайней мере, я так думаю)! Но только один раз. И я не могу воссоздать это поведение, несмотря ни на что. Я бы подумал, что стиль следующего абзаца задается Indesign, если для текущего абзаца установлено какое-либо значение, но, похоже, это не так. -- Ну, в конце концов, я сделал, как вы предложили, и задал стили символов явно в цикле.   -  person Alex Monthy    schedule 14.10.2013


Ответы (1)


Вы можете достичь цели, применив objectStyle в конце (ключевое свойство ==> applyNextParagraphStyle: true)

что-то типа:

var 
	myDocument = app.documents.add(true),
	s1 = myDocument.paragraphStyles.add({name:'one'}),
	s2 = myDocument.paragraphStyles.add({name:'two'}),
	objSt = myDocument.objectStyles.add({
			name: 'AlternateParas',
			enableParagraphStyle: true,
			appliedParagraphStyle: s1,
			applyNextParagraphStyle: true
			}),
	myTextFrame =  myDocument.pages.lastItem().textFrames.add({
		contents: 'abc\rdef\rghi\rklm\r',
		});
with (s1) {nextStyle = s2;}
with (s2) {nextStyle = s1;}
myTextFrame.appliedObjectStyle = objSt;

person Cashmirek    schedule 16.12.2015