Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
-
30. září 2024
-
4. října 2024
-
14. listopadu 2024
-
11. prosince 2024
Software
Skriptujeme InDesign (14): Text potřetí
Adobe InDesign sazba
22. května 2006, 00.00 | V dalším díle našeho výkladu o práci s textem se zaměříme na formátování. Jak zde
funguje skriptování na bázi znaků a odstavců či textových stylů? A jak lze skriptování
použít k automatizovanému zformátování celé publikace?
Po předchozích dílech našeho seriálu věnovaných hierarchii textových objektů a vkládání textu se dostáváme k prostředkům pro formátování. Věnovat se takto budeme nejprve obecnému nastavení textových charakteristik, poté bude naše pozornost patřit použití odstavcových a znakových stylů.
Nastavení textových formátovacích charakteristik
Textový obsah (story, odstavce, slova, sloupce, text v tabulkách aj.) lze s pomocí skriptů formátovat přinejmenším stejně rozmanitě jako ve vizuálním prostředí InDesignu. Vyčerpávající popis formátovacích charakteristik není tedy na tomto místě dost dobře možný (k tomu je zde referenční příručka skriptování, viz např. popis objektu Text na s. 1103-1115 a dále objektu Paragraph na s. 940-952), podívejme se nicméně alespoň na některé z nejzajímavějších vlastností a metod relevantních v daném případě.
Začít lze zejména u charakteristik písma: aplikovat je možno například typ písma (appliedFont), písmový řez (fontStyle: Regular, Bold, Italic, Bold Italic), velikost písma (pointSize), proklad (leading), prostrkání (tracking), horizontální/vertikální zvětšení (horizontalScale, verticalScale), posun účaří (baselineShift), podtržení (underline, u něj se dá vyladit třeba underlineColor, underlineOffset aj.) či přeškrtnutí (strikeThru, obdobně bohatá nastavení jako u underline). Kontrolovat lze také barvu písma (fillColor, fillTint, overprintFill aj.). Aplikace některých z daných charakteristik na textový úsek může vypadat třeba takhle:
//V proměnné myText je například textový výběr
//V českém InDesignu se barvy vzorníku (swatch) jmenují "Černá" a "Papír".
myText.properties={appliedFont: "Times New Roman", fontStyle: "Bold", pointSize: "18pt",
leading: "22 pt", tracking: 20, horizontalScale: 80, baselineShift: "2pt", underline: true,
strokeColor: app.activeDocument.swatches.item("Black"), fillColor: app.activeDocument.swatches.item("Paper")};
Řada charakteristik je pak aplikovatelná pouze v případě celých odstavců. Konkrétně to mohou být zarovnání (justification: Justification.leftAlign, Justification.rightAlign atp.), odsazení odstavce (leftIndent, rightIndent) a dále prvního (firstLineLeftIndent) či posledního (lastLineRightIndent) řádku, mezera před a za odstavcem (spaceBefore, spaceAfter), nastavení iniciály (dropCapLines, dropCapCharacters aj.), dělení slov (hyphenation, hyphenateAfterFirst, hyphenateBeforeLast aj.), zarovnání na mřížku účaří (alignToBaseline), ošetření vdov a sirotků (keepWithNext, keepLastLines aj.) aj. Opět malý příklad (nic samozřejmě nebrání kombinovat uvedené charakteristiky s těmi, které jsme uvedli výše):
//V proměnné myText je například textový výběr
myText.properties={justification: Justification.fullyJustified, leftIndent: "2cm",
rightIndent: "2cm", firstLineIndent: "4cm", spaceBefore: "12pt", spaceAfter: "12pt",
hyphenation: true, hyphenateAfterFirst: 2, hyphenateBeforeLast: 3,
alignToBaseline: true, keepWithNext: 5};
Kromě lokálního formátování, prováděného výše naznačeným způsobem, je možné formátovat text i s pomocí stylů, a to postupy, které popíšeme dále. Výchozí nastavení formátování textu se pak určují odpovídajícími preferencemi pro aplikaci (app.textDefaults) a pro dokument (např. app.activeDocument.textDefaults). Podrobnější popis odpovídajících postupů by byl na tomto místě samoúčelný, když vše je zevrubně popsáno v uživatelské příručce skriptování InDesignu CS2 (s. 123-126).
Odstavcové a znakové styly
K efektivnímu opakovanému aplikování skupiny formátovacích charakteristik slouží odstavcové a znakové styly. Styly daného typu spojené s dokumentem jsou uloženy v odpovídajících polích (kolekcích), jejich výpis je možno zajistit například takto (všimněte si metody everyItem, dovolující naráz adresovat všechny prvky dané kolekce):
var myPStyles=app.activeDocument.paragraphStyles;
var myCStyles=app.activeDocument.characterStyles;
alert(myPStyles.everyItem().name);
alert(myCStyles.everyItem().name);
Adresovat styl lze jeho indexem v dané kolekci nebo (doporučená metoda) jeho názvem. V druhém případě vypadá reference následovně:
//Odkazuje na styl označený jako "Basic text"
myDocument.paragraphStyles.item("Basic text");
Přidat styly do dokumentu lze nejrůznějšími způsoby. Základní je ta forma, kdy přidáme styl pod daným názvem do kolekce, přičemž stanovíme některé nebo všechny jeho vlastnosti (nespecifikované vlastnosti se přebírají z výchozích vlastností textu v dokumentu). Nastavení vlastností je obdobné nastavování vlastností textu, navíc jsou zde nastavení specifická pro styly, především vlastnosti basedOn (odstavcový styl, na němž je daný odstavec založen) či nextStyle (styl následného odstavce). Příslušné informace lze dohledat v referenční příručce InDesignu (paragraphStyle: s. 953-960, characterStyle s. 637-640). Při vytváření stylu daným způsobem je pak třeba ošetřit zejména případ, kdy daný styl již existuje:
//Zde je možné i jiné přiřazení dle potřeby
var myDocument=app.activeDocument;
//Zkusíme vytvořit odstavcový styl "My Head 1" s různými parametry,
//předpokládáme existenci stylů "Head" a "Text",
//try-catch ošetří situaci kdy daný styl již existuje
try{myDocument.paragraphStyles.add({name: "My Head 1", basedOn:
myDocument.paragraphStyles.item("Head"), nextStyle:
myDocument.paragraphStyles.item("Text"),
appliedFont: "Arial", fontStyle: "Bold", pointSize: 18, aligment:
"Center"})}
catch(e){alert("Styl daného názvu již existuje.")};
Styl je také možno vytvořit převzetím formátovacích charakteristik z aktuálně vybraného textu. Pěkným příkladem takové tvorby nám může být skript CreateCharacterStyle.jsx dodávaný s InDesignem. Na tomto místě si odcitujme jenom krátký úsek kódu (funkci pro samotné "snímání" formátovacích charakteristik) relevantní pro náš výklad, více zvídavý čtenář zjistí studiem daného skriptu.
function myDefineCharacterStyle(myCharacterStyleName){
var myCharacterStyle;
var myDocument = app.activeDocument;
//Opět použití try-catch pro tvorbu
nového stylu
myCharacterStyle =
myDocument.characterStyles.item(myCharacterStyleName);
try{
myCharacterStyle.name;
}
catch (myError){
myCharacterStyle =
myDocument.characterStyles.add({name:myCharacterStyleName});
}
//Textové charakteristiky se přebírají z
aktuální pozice textového kurzoru
var myCharacter =
app.selection[0].insertionPoints.item(0);
//Nastavení charakteristik
myCharacterStyle.appliedFont =
myCharacter.appliedFont;
myCharacterStyle.fontStyle =
myCharacter.fontStyle;
myCharacterStyle.pointSize =
myCharacter.pointSize;
myCharacterStyle.leading =
myCharacter.leading;
myCharacterStyle.appliedLanguage =
myCharacter.appliedLanguage;
//atd. atd. - viz daný skript
}
Možná je rovněž migrace stylů z jiného dokumentu - velmi zajímavý prostředek při tvorbě nového dokumentu bez použití šablony: Hlavním nástrojem zde je metoda importStyles objektu dokument. Obecně má tvar:
importStyles(typstylu,soubor,strategie)
kde typstylu stanovuje, jaké styly se mají z dokumentu, určeného názvem soubor načíst. V případě určení typu stylu lze načíst jen styly odstavcové či znakové nebo oba typy stylů současně, dále lze načítat i styly obsahu, objektové styly a styly tahů. Volitelný parametr strategie pak určuje, jakým stylem bude řešen případný konflikt při načítání stylů. Podrobnější popis viz s. 686 referenční příručky InDesignu CS2, na tomto místě jen několik příkladů:
//Načte odstavcové i znakové styly z daného dokumentu
//případný konflikt stylů řeší přejmenováním
app.activeDocument.importStyles(ImportFormat.textStylesFormat,File("/c/pokus/Adobe History.indd"),GlobalClashResolutionStrategy.loadAllWithRename);
//Načte z daného dokumentu objektové styly
//případný konflikt řeší přepsáním
app.activeDocument.importStyles(ImportFormat.objectStylesFormat,File("/c/pokus/Adobe History.indd"),GlobalClashResolutionStrategy.loadAllWithOverwrite);
Zjistit, jaký odstavcový či znakový styl je aplikován na daný text, umožňují vlastnosti textových objektů appliedParagraphStyle a appliedCharacterStyle. Jedná se o vlastnosti, které lze přiřazením měnit, a tedy tak i měnit dané charakteristiky, zajímavější je zde ovšem použití metod applyStyle, jež jako volitelnou logickou volbu nabízí možnost zachovat/odstranit veškeré lokální formátování.
//Obsah textové proměnné myText zformátuje znakovým stylem "Jméno"
myText.appliedCharacterStyle=app.activeDocument.characterStyles.item("Jméno");
//Na text odkazovaný proměnnou myText aplikuje odstavcový styl Text
//přičemž zachová všechno lokální formátování
myText.applyStyle(app.activeDocument.paragraphStyles.item("Text"),false);
Typické využití aplikace formátovacích charakteristik lze nalézt v případě hromadného formátování obsahu story (například u novinových článků, ale také třeba vizitek, vstupenek aj.). Možná aplikace může vypadat třeba takhle:
//Skript pro hromadné formátování dokumentu
//Předpokládáme, že daný dokument obsahuje odstavcové styly Head,
Perex, Text a Author
//(formátujeme články v časopise, začínající nadpisem, pokračující
perexem a končící jménem autora)
//Mechanismus ošetření story s málo odstavci je značně primitivní,
zasluhuje dopracování
var myDocument=app.activeDocument;
var myAlert=alert("V dokumentu je story, která má málo odstavců");
for (i=0;i<myDocument.stories.length;i++)
{
//Nejprve nastavíme odstavcový styl
veškerého textu na "Text"
myDocument.stories[i].texts[0].applyStyle(myDocument.paragraphStyles.item("Text"));
//Styl prvního odstavce v každé story
bude "Head", try-catch ošetřuje výskyt story s méně jak dvěma odstavci
try{myDocument.stories[i].texts[0].paragraphs[0].applyStyle(myDocument.paragraphStyles.item("Head"));}
catch(e){myAlert};
//Styl druhého odstavce v každé story
bude "Perex"
try{myDocument.stories[i].texts[0].paragraphs[1].applyStyle(myDocument.paragraphStyles.item("Perex"));}
catch(e){myAlert};
//Styl posledního odstavce story bude
"Author"
try{myDocument.stories[i].texts[0].paragraphs[-1].applyStyle(myDocument.paragraphStyles.item("Author"));}
catch(e){myAlert};
}
Vnořené styly
Jak bylo naznačeno v předchozím (značně jednoduchém příkladu), s pomocí skriptů lze styly aplikovat značně sofistikovaně v rámci celého dokumentu. Značně zajímavé každopádně i pak zůstává použití vnořených stylů (nested styles). Ty umožňují naráz hromadně aplikovat znakové styly v daném odstavci na základě odpovídající definice (viz náš dřívější článek na dané téma). Podrobnější rozbor daného prvku z hlediska jeho použití v rámci skriptování lze najít především v článku Dave Saunderse.
Závěrem
Tolik zatím k formátování textu. V příštím díle našeho seriálu se k němu ještě vrátíme, když se budeme zabývat jednou z nejdůležitějších a nejužitečnějších skriptovacích metod: hromadným hledáním a zaměňováním textu a textových charakteristik.
Obsah seriálu (více o seriálu):
- Skriptujeme InDesign (1): Úvod
- Skriptujeme InDesign (2): První kroky
- Skriptujeme InDesign (3): Základy JavaScriptu poprvé
- Skriptujeme InDesign (4): Základy JavaScriptu podruhé
- Skriptujeme InDesign (5): Dokumenty poprvé
- Skriptujeme InDesign (6): Dokumenty podruhé
- Skriptujeme InDesign (7): Výstup
- Skriptujeme InDesign (8): Stránky
- Skriptujeme InDesign (9): Stránkové objekty poprvé
- Skriptujeme InDesign (10): Stránkové objekty podruhé
- Skriptujeme InDesign (11): Dialogy
- Skriptujeme InDesign (12): Text poprvé
- Skriptujeme InDesign (13): Text podruhé
- Skriptujeme InDesign (14): Text potřetí
- Skriptujeme InDesign (15): Hledání a záměny poprvé
- Skriptujeme InDesign (16): Hledání a záměny podruhé
- Skriptujeme InDesign (17): Regulární výrazy
- Skriptujeme InDesign (18): Tabulky poprvé
- Skriptujeme InDesign (19): Tabulky podruhé
- Skriptujeme InDesign (20): Obrázky poprvé
- Skriptujeme InDesign (21): Obrázky podruhé
- Skriptujeme InDesign (22): Obrázky potřetí
- Skriptujeme InDesign (23): ESTK aneb jak na editaci a ladění skriptů
- Skriptujeme InDesign (24): Vrstvy
- Skriptujeme InDesign (25): Barvy poprvé
- Skriptujeme InDesign (26): Barvy podruhé
- Skriptujeme InDesign (27): Barvy potřetí
- Skriptujeme InDesign (29): Metadata podruhé
- Skriptujeme InDesign (30): Návěští
- Skriptujeme InDesign (31): Okna
- Skriptujeme InDesign (32): Reakce na události
- Skriptujeme InDesign (33): Novinky v CS3 verzi
Tématické zařazení:
» Rubriky » Polygrafie
-
14. května 2014
Jak vkládat snímky do galerií a soutěží? Stručný obrazový průvodce
-
23. dubna 2014
Konica Minolta přenesla výhody velkých zařízení do kompaktních modelů
-
12. června 2012
-
9. dubna 2014
-
5. ledna 2017
-
6. září 2004
OKI snižuje ceny barevných laserových tiskáren C3100 a C5200n
-
13. května 2004
-
19. ledna 2004
QuarkXPress Passport 6: předvedení nové verze na konferenci Apple Forum 27.1.2004
-
6. února 2001
-
30. listopadu 2014
Nový fotoaparát α7 II: první plnoformát s pětiosou optickou stabilizací obrazu na světě
-
14. října 2024
-
10. prosince 2024