אנקי בעברית: למה הטקסט מתהפך ואיך מתקנים
אנקי מרנדר כל כרטיסייה כ-HTML, והתבנית שמגיעה כברירת-מחדל לא מגדירה כיוון טקסט. בלי הגדרה הרינדור מניח שמאל-לימין, ולכן נקודה בסוף משפט עברי נוחתת בצד הנגדי, וקטע באנגלית באמצע משפט עברי מקבל מקום הפוך בשורה. התיקון יושב בשורה אחת במקטע Styling של סוג-הפתק: direction: rtl.
למה הטקסט מתהפך רק כשמערבבים אנגלית, מספרים או פיסוק?
כי האותיות העבריות עצמן אף פעם לא מתהפכות. האלגוריתם הדו-כיווני של יוניקוד יודע שאות עברית היא ימין-לשמאל, ומסדר אותה נכון בכל מצב. מה שהוא לא יכול להסיק לבד זה איפה למקם תווים ניטרליים: רווח, נקודה, פסיק, סוגריים.
לתו ניטרלי יש שני מצבים. אם משני צדדיו יושב טקסט חזק באותו כיוון, הוא מקבל את הכיוון הזה. אחרת הוא נופל לכיוון של הפסקה. נקודה שסוגרת משפט עברי יושבת בקצה, בלי טקסט חזק אחריה, אז היא נופלת לכיוון הפסקה. הפסקה הוגדרה שמאל-לימין, ולכן הנקודה נוחתת בצד הימני, כלומר בתחילת המשפט. סוגריים מתחלפים באותה דרך: הפותח נראה כסוגר.
וכשמשפט עברי מכיל מונח באנגלית, סדר הקטעים עצמם נקבע לפי כיוון הפסקה. שני חלקים עבריים משני צדי המונח מחליפים מקום. זה מה שנראה כמו "הטקסט קפץ", וזו בדיוק ההתנהגות התקינה של פסקה שהוגדרה שמאל-לימין.
מה מוסיפים ל-Styling כדי לתקן את כל הכרטיסייה?
מוסיפים שורה אחת: direction: rtl. הדרך לשם: בוחרים את סוג-הפתק, לוחצים Cards, ועוברים למקטע Styling (קיצור: Ctrl+3). שם יושב הבלוק שאנקי נותן כברירת-מחדל, בערך כך:
.card { font-family: arial; font-size: 20px; text-align: center; color: black; background-color: white; }
אין שם שורת direction. המדריך הרשמי של אנקי נותן בדיוק את התוספת הזו לשפות ימין-לשמאל. מוסיפים אותה, ואם רוצים גם יישור לימין מחליפים את text-align:
.card { font-family: arial; font-size: 20px; direction: rtl; text-align: right; color: black; background-color: white; }
שתי השורות עושות דברים שונים. direction קובע את כיוון הפסקה, והוא זה שמסדר את הפיסוק ואת הקטעים המעורבבים. text-align רק מזיז את הטקסט לקצה. אנקי מגיע עם center, ולכן direction לבדו ישאיר טקסט ממורכז ותקין לגמרי. היישור הוא טעם, לא נכונות.
איפה בתבנית עוטפים שדה בודד?
כשרק חלק מהכרטיסייה עברי, עדיף לעטוף את השדה בתבנית עצמה ולא לגעת בגיליון הסגנון. המדריך של אנקי נותן את הצורה הזו:
בתבנית ברירת-המחדל הצד הקדמי הוא {{Front}}, והצד האחורי בנוי מ-{{FrontSide}}, קו מפריד עם המזהה answer, ואז {{Back}}. עוטפים כל שדה שמכיל עברית, ומשאירים את השאר כמו שהוא.
יש כאן יתרון שקל לפספס, והוא לא הבידוד. תכונת dir היא הצהרה שיושבת ישירות על השדה, ולכן היא גוברת על כיוון שמגיע אליו בירושה מ-.card. היא גם נוגעת בשדה אחד ומשאירה את השאר בשקט. לגבי בידוד: תקן ה-HTML נותן unicode-bidi: isolate לכל אלמנט עם dir, אבל אותו כלל נותן אותו גם ל-div בלי dir, אז כאן לא הרווחת ממנו כלום. הבידוד נהיה קריטי בתוך שורה, כשעוטפים מונח לועזי.
סימנתי Reverse text direction בחלון Fields ושום דבר לא השתנה. למה?
כי ההגדרה הזו לא נוגעת בכרטיסייה. המדריך של אנקי אומר את זה מפורשות: ההגדרה שולטת כרגע רק בעריכה, וכדי שהטקסט יוצג נכון בזמן חזרה צריך לשנות את התבנית.
הבלבול הגיוני לגמרי. השדה נראה מושלם בחלון העריכה, ואז אותו טקסט בדיוק יוצא שבור בתרגול. אלה שני משטחים נפרדים. חלון העריכה מציית להגדרות השדה, והתרגול מציית ל-CSS של סוג-הפתק.
אותו כלל חל על כל חלון Fields. המדריך אומר שזה לא המקום שקובע איך הכרטיסייה נראית בחזרה, וחוזר על זה לגבי Editing Font. כל מה שקשור לתצוגה בתרגול עובר דרך התבנית.
מה עושים עם נוסחאות ומונחים באנגלית באמצע משפט עברי?
מונח לועזי בתוך משפט עברי גורר איתו את הפיסוק והספרות שנצמדים אליו, ואלה נוחתים בצד הלא-נכון. עוטפים אותו כך:
gain margin
span לא מקבל בידוד מהתקן מעצמו, ולכן דווקא כאן תכונת dir עושה את העבודה. אפשר גם bdi, שנוצר בדיוק למטרה הזו ומקבל בידוד מהתקן.
נוסחאות זה סיפור אחר. אנקי תומך ב-MathJax עם המפרידים \( ו-\) לנוסחה בשורה, ו-\[ ו-\] לנוסחה בבלוק. הוא רגיש למה שקורה בתוכה, עד כדי כך שירידת-שורה רגילה שוברת אותו. לפני שאתה עוטף נוסחה בתגית, בדוק אותה בתצוגה המקדימה של חלון Cards, שמראה איך היא תיראה בחזרה.
LaTeX מלא דורש התקנה חיצונית: MiKTeX בווינדוס, MacTeX במק, וגם dvipng.
איפה התיקון מפסיק להספיק?
התיקון פותר את הרינדור, וזה כל מה שהוא פותר. ארבעה גבולות שכדאי להכיר מראש:
השורה התחתונה: אנקי מציג נכון את מה שהקלדת, ברגע שאמרת לו את הכיוון. את הניסוח ואת הפיצול לשאלות אתה עדיין עושה בעצמך. אפשר להקליד כרטיסייה אחרי כרטיסייה, ואפשר לייבא קובץ טקסט או להתקין חפיסה מוכנה.
zeekaron ניגש לבעיה מהצד הזה. הכרטיסיות נכתבות בצ׳אט שכבר לומד איתך ונשמרות דרך קונקטור MCP, כלומר צריך צ׳אט שתומך בקונקטורים חיצוניים, כמו Claude. האפליקציה עצמה היא משטח תרגול בעברית וב-RTL כברירת-מחדל, בלי תבניות ובלי גיליון סגנון לערוך. זו לא בהכרח החלפה טובה יותר לאנקי. אם כבר בנית שם אוסף שאתה מרוצה ממנו, השורה למעלה פותרת בדיוק את מה שהגעת לפתור.
- התיקון חל על סוג-פתק אחד. המדריך אומר שהסגנון משותף לכל הכרטיסיות של אותו סוג-פתק. שלושה סוגי-פתק, שלוש עריכות.
- חפיסה משותפת שהורדת מביאה איתה את סוגי-הפתק של מי שבנה אותה, ואת הסגנון שלהם. אותו תיקון, בסוג-הפתק שלה.
- תוכן שהודבק מ-Word או מדפדפן נושא לפעמים dir או style משלו. כלל שיושב על .card מגיע לתוכן הפנימי רק בירושה, וירושה מפסידה לכל הגדרה שנוגעת ישירות באלמנט.
- ממשק האפליקציה, שמות החפיסות ועמודות הדפדפן הם לא כרטיסייה, וה-CSS של סוג-הפתק לא נוגע בהם. לעמודות שאלה ותשובה יש ידית נפרדת: האפשרות Browser Appearance מגדירה להן תבנית משלהן.
שאלות
התיקון עובר לאנדרואיד ולאייפון?
הסגנון יושב בסוג-הפתק ולא במכשיר, והוא נוסע איתו בסנכרון. מה שתיקנת בדסקטופ אמור להיראות אותו דבר גם בטלפון. המדריך מזהיר שכל לקוח מממש את תצוגת הכרטיסייה קצת אחרת, ואפילו נותן מחלקות CSS נפרדות לכל פלטפורמה, אז שווה לפתוח כרטיסייה אחת בטלפון אחרי הסנכרון. שים לב שסימון Reverse text direction בחלון Fields אינו חלק מזה, כי הוא נוגע רק לעריכה.
direction: rtl יהפוך גם מספרים ותאריכים?
לא. האלגוריתם הדו-כיווני מטפל בספרות כרצף משלהן, ומספר נשאר קריא בשני כיווני הפסקה. מה שכן משתנה זה המיקום של המספר ביחס לטקסט שסביבו, וזו ההתנהגות הנכונה בעברית.
צריך תוסף כדי לתקן RTL באנקי?
לא בשביל התצוגה בתרגול. שורה אחת במקטע Styling מספיקה, והיא מתועדת במדריך הרשמי. עריכת הטקסט היא שאלה נפרדת, ושם ההגדרה כבר מחכה לך בחלון Fields.
ערכתי את ה-Styling ושום דבר לא השתנה. מה לבדוק?
קודם כל שערכת את סוג-הפתק הנכון. חלון Cards שייך לסוג-פתק אחד, זה שממנו פתחת אותו, והבורר שבתוכו עובר בין סוגי-הכרטיסייה שלו ולא בין סוגי-פתק. קל לפתוח אותו על Basic בזמן שהכרטיסייה שלך שייכת לסוג אחר. הבדיקה יושבת בדפדפן: העמודה Note מציגה את שם סוג-הפתק. אחר-כך בדוק את התוכן עצמו בעורך ה-HTML של השדה, כי טקסט שנושא dir או style משלו גובר על מה שכתבת ב-.card.