1735545762603.png

יש משהו בלוחמי הדור שלנו שהם כמו דוד המלך. הם רוצים להיות עדינו העצני, והם רוצים לנגן בנבל במקביל לעשייתם הצבאית. לכן, כשאנחנו שולחים להם מהרבנות הצבאית חיזוק רוחני, הם רוצים גם... שירים! עם אקורדים.
איך עושים אקורדים באינדיזיין? אם אתה עושה את האקורדים לעצמך, אתה כבר תתאים אותם שורה מעל שורה עם המוווון רווחים. הבעיה העיקרית היא, מה קורה אם מחליפים פונט פתאום? הכל זז.

מטעמי זכויות יוצרים (הזכויות שמורות למחברים ולאקו"ם, ואני לא הולך לשלם להם בשביל המאמר הזה...), לא אוכל להעלות תמונות מהקובץ המקורי שנשלח לחיילים, אבל נניח שהתוצאה הרצויה היא זו:
1734903426006.png

הפונט הדוגמן: טאלנט של שוקי דיין | הטקסט: לורם איפסום. עמכם הסליחה.


איך מגיעים לזה?
אז (גם) לזה נועדו סקריפטים באינדיזיין.

מה זה סקריפט?
סקריפט באינדיזיין הוא קובץ עם הסיומת jsx. הטקסט שכותבים בקובץ כזה הוא קוד בשפת ג'אווה-סקריפט ב"ניב" של אינדיזיין. קוד הוא דרך לתאר סדרה של הוראות שאנחנו מבקשים מהתוכנה לבצע (סקריפט=תסריט), ובהרצה של הקוד המחשב מבצע את הפעולות אחת אחרי השנייה. במקום שהמעצב ילחץ על המקלדת והעכבר ויבצע פעולות בתוכנה, הקוד יכול לעשות אותן במקומו.

איך מריצים סקריפט?
את החלון עם רשימת הסקריפטים מציגים עם: window -> utilities -> scripts. תחת הלשונית "Scripts" מופיעים הסקריפטים שלנו. לחיצה כפולה על אחד מהם פשוט מריצה אותו.

1734903495218.png


סקריפטים שאנחנו מוסיפים בעצמנו, נשמור תחת תיקיית "User". לחיצה ימנית על User, תפתח את תצוגת התיקיות במיקום שרצוי לנו. את הקובץ שלנו – זה עם סיומת jsx – נשים בתוך התיקייה Scripts panel.

1734903555559.png


איך מגיעים לתיקיית הסקריפטים? לחצן ימני על התיקייה:
1734903580738.png



כדי שהאקורד ישב בדיוק מעל המילה שהוא מתנגן בה, הכנסנו אותו לתוך מסגרת טקסט באובייקט מעוגן. אבל למי יש כח להעביר המון אקורדים לתוך מסגרות? והנה, העצלנות הובילה אותנו להתאמץ קצת עכשיו, בשביל לחסוך לנו הרבה מאמץ בהמשך. ככה נכתב הסקריפט move_text_into_object.


מה move_text_into_object עושה?
הוא מחפש בטקסט קטעים בסגנון תו מסוים, ומכניס במקומם מסגרת שמכילה את אותו הטקסט.
בתוך הסקריפט המעצב צריך לקבוע שני דברים: סגנון האובייקט של המסגרות שיווצרו (בדוגמה שכאן: side note), וסגנון התו שמסמן את הקטעים שנרצה לשלוף מתוך הטקסט (במקרה הזה: marked).

אפשר ליצור בקובץ אינדיזיין סגנונות עם שמות מתאימים, אבל כמובן אפשר לשנות את השמות שרשומים בקובץ ג'אווה-סקריפט. כאן:

JavaScript:
// Set your values here.
var objectStyleName = 'side note';
var characterStyleName = 'marked';

זאת ההתערבות שנדרשת מאיתנו בתוך הקוד. בפסקאות הבאות נסביר מה עושה הסקריפט שלב אחר שלב. מי שתכנות בכלל לא מדבר אליו, מוזמן לדלג לשימושים שמצאנו לסקריפט הזה.

על שולחן המנתחים

מה קורה שם בפנים?
ובכן, זה הזמן לנתח את הקוד!
// הערה: השורות שמתחילות ב "//" הן הערה, ולא מבצעות פעולה.

את השמות שבחרנו מקשרים ל"משתנה" (var, קיצור של variable). מכאן והלאה בסקריפט, לא נתייחס לשמות של הסגנונות שבחרנו, אלא למשתנה שמייצג אותם. הנה, דוגמה בשורות הבאות:

JavaScript:
var doc = app.activeDocument;
var objectStyle = doc.objectStyles.item (objectStyleName);
var noneCharacterStyle = doc.characterStyles.item ("[None]");

בשורה השנייה, אנחנו משתמשים ב "objectStyleName", שזו הדרך של שפת התכנות לדבר על הסגנון "side note", שהקלדנו קודם.
הגדרנו מה שהיינו צריכים, ועכשיו הגיע הזמן שהקוד יבצע פעולות באינדיזיין:

JavaScript:
// Find all the texts with the given character style in reverse order
app.findTextPreferences = NothingEnum.nothing;
app.findTextPreferences.appliedCharacterStyle = characterStyleName;

אחרי שהשורות האלה מתבצעות, אם תיכנסו לחלונית החיפוש טקסט באינדיזיין, תראו שמסומן חיפוש לפי סגנון התו שלנו. עכשיו מבצעים חיפוש:

JavaScript:
var finds = doc.findText(true);

את תוצאות החיפוש נשמור בתוך משתנה חדש בשם "finds". הוא מחזיק רשימה של כל הטקסטים שמתאימים לחיפוש שלנו. מה שנמצא בתוך הסוגריים מורה לאינדיזיין לעבור על התוצאות מהסוף להתחלה. (באמת למה לא מההתחלה לסוף?)
נצטרך לעבור על התוצאות אחת אחרי השניה, ולבצע את ה"העברה" על כל אחת מהן.

JavaScript:
// Loop over the results and insert text frames
for (var i = 0; i < finds.length; i++ {
    …
}

הפעולה שהסקריפט מורה לאינדיזיין לבצע על כל אחת מתוצאות החיפוש, כתובה בין הסוגריים המסולסלים. הסתרנו אותה בשלוש נקודות. הנה מה שנמצא שם:

JavaScript:
var textFrame = finds[i].insertionPoints[0].textFrames.add();
finds[i].appliedCharacterStyle = noneCharacterStyle;
finds[i].move(LocationOptions.AT_BEGINNING , textFrame);
textFrame.applyObjectStyle(objectStyle);


יש שם ארבע פעולות:
1. יצירת מסגרת טקסט חדשה, במיקום הראשון של הסמן בתוצאת החיפוש.
2. ניקוי סגנון תו מתוצאת החיפוש.
3. העברת הטקסט אל תוך המסגרת שיצרנו.
4. החלת סגנון אובייקט על המסגרת.
זהו. אחרי שהקוד יבצע את הפעולות האלו על כל אחת מתוצאות החיפוש, נקבל בתוך מסגרות את כל מה שסימנו בסגנון תו.

הצעות שימושיות באינדיזיין (סוף סוף)


1734903785823.png

הפונט משמאל: רמון, של סטודיו 'פסים'
הערות צד

השלב הראשון הוא עוד לפני שמתחילים לעצב. צריך לוודא שאנחנו מקבלים קובץ טקסט שיהיה לנו נוח לעבוד איתו. הקטעים שאמורים לעבור להערות הצד צריכים להיות משולבים בגוף הטקסט, אבל מסומנים בסגנון תו ייחודי. כדאי לוודא עם העורך שהוא מסמן את הקטעים באופן כזה, שבחיפוש גרפ פשוט נוכל להחיל על כולם סגנון תו.
בדף אב ניתן שוליים רחבים יותר בצד הקרוב לשוליים, כדי להשאיר מקום להערות צד.
1734903899835.png

לחיצה כפולה על סגנון האוביקט תביא לנו את המסך הזה, עם כל ההגדרות שצריך



בסגנון אובייקט של ההערות צד נגדיר כמה דברים:

רוחב התיבה – בתכונה Size and Position Options נבחר רוחב קבוע.
גובה התיבה – הגובה צריך להתאים את עצמו לכמות הטקסט. בשביל זה ניכנס לText Frame Auto Size Options, ונבחר התאמה של הגובה בלבד, עם החץ כלפי מטה. האפשרות הזו שימושית גם באופן כללי, במקום להקיש לחיצה כפולה בכל פעם שהתיבה קצרה מדי.
סגנון פסקה – Paragraph Styles, הסגנון של הטקסט של ההערות צד.
אובייקט מעוגן – Anchored Object Options. (הבחירות כאן משמעותיות, אבל צילום מסך שווה אלף מילים)

1734904045828.png

ככה נגדיר את זה.


1734904101831.png

מכאן, בהגדרות ה- Offset תוכלו להגדיר כמה רחוקות בגובה יהיו ההערות שוליים מגובה השורה. שמיש מאוד.


אקורדים

הטקסט הראשי צריך להיות עם גובה שורה שישאיר מקום לאקורדים. גם כאן צריך לבקש ממי שמכין לנו את הטקסט, שיסמן את האקורדים, נניח בצבע שונה מהטקסט הראשי. הם יכולים להופיע גם באמצע מילה, אין שום בעיה. נבקש ממנו, שכל אקורד יופיע לפני האות שהוא צריך להופיע מעליה.

כאן בסגנון אובייקט נגדיר תכונות קצת שונות:
Text Frame Auto Size Options – הגודל יכול להתרחב למעלה ושמאלה.
Anchored Object Options – נקודת הייחוס מימין לאובייקט המעוגן. כדי שהאקורד יופיע מעל המקום שהקצנו לו, המיקום בציר הX יהיה בסימון העיגון (בתצוגה של תווים מוסתרים, אפשר לראות כמו האות Y. זה מיקום הסמן מעליו יופיע האובייקט). בציר הY המיקום יהיה יחסי לגובה האות (Cap Height), ועם התאמות קלות של הoffset אפשר להגביה או להנמיך לפי הצורך.


1734904223350.png

באקורדים: למעלה ושמאלה. בהגדרות האחרות תשחקו לבד, אתם מספיק טובים בזה.


הסקריפט מצורף
ממש כאן. תהנו!

הסקריפט נכתב על ידי יואב גרוס, וכך גם המאמר. תודה לו.