כל מי שניסה להעתיק טקסט מ-PDF, בטח נתקל בתופעה של הסוגריים המתהפכים:
אפשר לראות בתמונה שבקובץ ה-PDF הטקסט מוצג כמו שצריך, אך כשהועתק לפנקס רשימות, הסוגריים הימניים הפכו לסוגריים שמאליים, והסוגריים השמאליים הפכו לסוגריים ימניים.
להוצאת ספרים מסויימת זה הפריע מאד. הם מפיקים גם ספרים מודפסים, וגם מעלים את הקבצים למאגר ממוחשב שבו הקוראים יכולים לבצע חיפושים, אך כשהמשתמש מזין בשורת החיפוש טקסט המכיל סוגריים, הוא לא מוצא מה שחיפש, אלא אם כן יקליד את הסוגריים הפוך.
הם שאלו אותי אם יש פתרון, אבל קודם הסברתי להם למה זה קורה:
לסוגריים ימניים אנחנו מתייחסים כאל הסימן הפותח את הסוגריים ולסוגריים שמאליים כסימן הסוגר אותם, אך באנגלית זה הפוך: הסוגריים השמאליים הם הפותחים והסוגריים הימניים הם הסוגרים. מכיון שתקן הקידוד יוניקוד (וכן ASCII) נקבע לפי השפה האנגלית לצערנו, כשאנחנו מקלידים פתיחת סוגריים בעברית, משתמשים בתו שבד"כ מתייחס לסגירת סוגריים. ההחלטה איזו סוגריים להציג, נקבעת לפי כיוון התוים. כאשר כיוון הכתיבה הוא מימין לשמאל, כמו בעברית, הסוגריים שיופיעו יהיו התו שנקרא RIGHT PARENTHESIS כלומר סוגריים ימניים, וכשכיוון הכתיבה הוא משמאל לימין, התו שיופיע בפתיחת הסוגריים יהיה התו LEFT PARENTHESIS. כשאנו מייצאים את הקובץ ל-PDF, הטקסט לא עובר כטקסט חי כפי שהוא בתוכנה בה נוצר, אלא הוא מצטייר מחדש בהתאם *לנראות* שלו. לדוגמה, אם לפי העיצוב שלנו יצא שמילה מסויימת תהיה בסוף השורה, כשנעתיק את הטקסט לתוכנה אחרת, נראה שאותה מילה תהיה בסוף השורה, ואחריה יופיע מעבר פסקה (אנטר), וכן שאר השורות – נשברו בדיוק כפי שהן הסתיימו ב-PDF, למרות שבתוכנה שבה הדבקנו יש יותר מקום לטקסט
דבר דומה קורה כשאנו מעתיקים טקסט עם סוגריים מקובץ PDF. מבחינה לוגית, מדובר כאן בפתיחת סוגריים, מבחינה ויזואלית – מופיע כאן התו של סגירת סוגריים (כי אין התייחסות לטקסט שמסביב, אלא לסימן עצמו). בהעתקה מועתק הערך הלוגי של הסימן ולא דוקא הניראות של הסימן עצמו, ולכן מופיע התו ההפוך.
הפתרון שהצעתי להם הוא להפוך את הסוגריים מבחינה לוגית כדי שהתו LEFT PARENTHESIS – ) יהיה התו שפותח את הסוגריים, והתו RIGHT PARENTHESIS יהיה התו שסוגר. כדי שהנראות לא תשתבש, יש לשנות את הכיווניות של התוים וכך הם יחזרו למראה המקורי שלהם.
דרך הפעולה היא כזו:
- קודם כל, ליצור סגנון תו חדש, (אני קראתי לו בשם LTR) שההגדרות היחידות שלו הם כיוון התוים משמאל לימין (Character Direction:Left-to-Right) ושפה אנגלית (Language: English USA). אני לא חושב שהשפה זה הכרחי, אבל שיהיה, ליתר ביטחון.
השפה נקבעת בלשונית Advanced Character Formats:
כיוון התו נקבע בלשונית Middle East Character Formats
2. לאחר מכן, יש לבצע חיפוש והחלפה לסוגריים ולהחליף אותם בסוגריים ההפוכים.
הקוד לחיפוש ב-GREP הוא: (\()(.+?)(\))
והקוד להחלפה הוא: $3$2$1
[ההסבר לקוד:
חילקתי את מחרוזת החיפוש לשלשה ביטויי משנה באמצעות סוגריים.
[][)(}{]
תגובה אחת
ר' אברהם, יישר כח על ההסבר הברור ועל הפתרונות!