2012-05-24 5 views
1

Я пытаюсь сделать эквивалент выбора текста и нажав кнопку Small Caps. Вот несколько попыток:Как программно установить текст в «Малые Caps» в InDesign с помощью ExtendScript?

app.activeDocument.textFrames[0].texts.appliedCharacterStyle.capitalization = Capitalization.SMALL_CAPS; 

Не работает: «Неверный запрос на корневой стиль»

var myCharacterStyle = new CharacterStyle(); 
myCharacterStyle.capitalization = Capitalization.SMALL_CAPS; 
app.activeDocument.textFrames[0].texts[0].applyCharacterStyle(myCharacterStyle); 

не работает: «Недопустимое значение параметра„с помощью“метода«applyCharacterStyle «Ожидаемый символ», но ничего не получил ».

Как я должен это делать?

ответ

2

Вы должны начать с создания нового стиля символа, если вы хотите изменить значение по умолчанию «[None]»

//First create a new character style 
var newCharacterStyle = document.characterStyles.add(text.appliedCharacterStyle); 
if(text.appliedCharacterStyle!=null){ 
    newCharacterStyle.basedOn = text.appliedCharacterStyle; 
} 
text.appliedCharacterStyle = newCharacterStyle; 

//then apply capitalization 
newCharacterStyle.capitalization = Capitalization.SMALL_CAPS; 
+0

работает хорошо, вы просто забыли одно утверждение: 'text.appliedCharacterStyle = newCharacterStyle;'. Я попытался применить это ко всем текстам документа: он работает, но какой-то текст не преобразуется. Чтобы преобразовать его, я просто запускаю сценарий во второй раз ... Любая подсказка, почему он работает второй раз, а не первый? (Нет разницы между текстами, которые работают сразу, а те, которые этого не делают. Например, он перестанет работать в середине предложения и снова начнет работать в следующем абзаце.) – Shawn

0

Я нашел багги способ установить Капители по тексту:

app.activeDocument.textFrames[0].texts[0].appliedParagraphStyle.capitalization = Capitalization.SMALL_CAPS; 

Я говорю багги, потому что вместо того, чтобы Капители только на разыскиваемого текста, весь абзац стиле. Это так, потому что я использую appliedParagraphStyle вместо appliedCharacterStyle. Но когда я использую appliedCharacterStyle, я получаю «Неверный запрос в корневом стиле». потому что текущий CharacterStyle - это специальный, который называется «[Нет]». «[Нет]» CharacterStyle не позволяет записывать свой атрибут applyCharacterStyle и не допускает дублирования (с duplicate()).