Как программно установить для текста маленькие заглавные буквы в InDesign с помощью ExtendScript?

Я пытаюсь сделать то же самое, что выделить текст и нажать кнопку Small Caps. Вот несколько попыток:

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". Ожидается CharacterStyle, но ничего не получено".

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


person Shawn    schedule 24.05.2012    source источник


Ответы (2)


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

//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;
person martinrohart    schedule 25.05.2012
comment
Работает хорошо, вы просто забыли одно утверждение: text.appliedCharacterStyle = newCharacterStyle;. Я попытался применить это ко всем текстам в документе: это работает, но некоторый текст не трансформируется. Чтобы преобразовать его, я просто запускаю скрипт во второй раз... Любая подсказка, почему он работает во второй раз, а не в первый? (Нет разницы между текстами, которые работают сразу, и теми, которые нет. Например, он перестанет работать в середине предложения и снова начнет работать в следующем абзаце.) - person Shawn; 25.05.2012

Я нашел глючный способ установить маленькие заглавные в тексте:

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

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

person Shawn    schedule 24.05.2012