درباره افشین

متولد ۲۴ دی ۱۳۵۶ و ساکن مشهد.

بهبود پشتیبانی از فارسی در لیبره‌آفیس ۲۶.۸

نسخهٔ ۲۶.۸ لیبره‌آفیس که در ۲۶ اوت ۲۰۲۶ (۴ شهریور ۱۴۰۵) منتشر شد، علاوه بر مجموعه‌ای از قابلیت‌ها و بهبودهای عمومی، چند تغییر مهم در پشتیبانی از زبان‌های راست به چپ و متن‌های دوجهته به همراه دارد؛ تغییراتی که برای کاربران زبان‌هایی مانند فارسی و عربی اهمیت ویژه‌ای دارند.

یکی از مهم‌ترین این تغییرات، تشخیص خودکار جهت پاراگراف است. از این پس هنگام باز کردن سند یا متن ساده، یا هنگام چسباندن متن در لیبره‌آفیس، جهت نوشتار پاراگراف می‌تواند به‌طور خودکار تشخیص داده شود. بنابراین در بسیاری از موارد، کاربر برای متن راست به چپ نیازی به تعیین دستی جهت پاراگراف نخواهد داشت.

نحوهٔ قرارگیری فاصله‌های انتهای پاراگراف نیز با جهت نوشتار آن هماهنگ شده است. این اصلاح باعث می‌شود فاصله‌هایی که در پایان پاراگراف‌های راست به چپ وجود دارند، مانند پاراگراف‌های چپ به راست، در جای درست خود قرار بگیرند.

یکی دیگر از بهبودهای مهم، امکان نمایش نویسه‌های کنترلی دوجهته در کنار سایر علائم قالب‌بندی است. این نویسه‌ها در متن‌های دوجهته برای تعیین یا تغییر جهت نمایش بخش‌هایی از متن به کار می‌روند و گاهی منشأ مشکلاتی می‌شوند که تشخیص علتشان دشوار است. نمایش آن‌ها در حالت نمایش علائم قالب‌بندی، ابزار مفیدی برای ویراستاران و کاربرانی است که با متن‌های فارسی، عربی و انگلیسی در یک سند سر و کار دارند.

لیبره‌آفیس ۲۶.۸ همچنین دستگیره‌های تغییر اندازهٔ اشیاء را در اسناد راست به چپ اصلاح کرده است. این تغییر باعث می‌شود رفتار این دستگیره‌ها با جهت نوشتار سند سازگارتر باشد.

بهبودهای یادشده به واژه‌پرداز لیبره‌آفیس محدود نمی‌شوند. در صفحه‌گستردهٔ لیبره‌آفیس نیز اگر کاربر در یک سلول خالی شروع به وارد کردن متنی راست به چپ کند، جهت آن سلول به‌طور خودکار به راست به چپ تغییر می‌کند. این قابلیت به‌ویژه هنگام ساخت جدول‌هایی که در آن‌ها متن فارسی یا عربی وارد می‌شود، می‌تواند نیاز به تنظیم دستی جهت سلول‌ها را کاهش دهد.

و در پایان، شاید از نظر مفهومی مهم‌ترین تغییر این مجموعه، تغییر تراز پیش‌فرض در اسناد جدید باشد. در نسخهٔ ۲۶.۸ تراز پیش‌فرض دیگر چپ نیست، بلکه «آغاز» است. تفاوت این دو در اسناد دوجهته مهم است. تراز «چپ» همیشه متن را نسبت به لبهٔ چپ صفحه تنظیم می‌کند، درحالی‌که تراز «آغاز» متن را نسبت به ابتدای خط، متناسب با جهت نوشتار تنظیم می‌کند. بنابراین اگر متن چپ به راست (مثلاُ انگلیسی) باشد، «آغاز» همان سمت چپ قرار می‌گیرد؛ اما اگر متن راست به چپ باشد (مثلاُ فارسی یا عربی)، «آغاز» در سمت راست قرار می‌گیرد. به این ترتیب یک گزینهٔ واحد می‌تواند برای هر دو گروه از زبان‌ها رفتار درست و طبیعی داشته باشد و دیگر لازم نیست «چپ‌چین» را به‌عنوان حالت پیش‌فرض در نظر گرفت؛ حالتی که برای متن‌های راست‌به‌چپ مناسب نیست.

بهبودهای این نسخه نشان می‌دهند که پشتیبانی از زبان‌های راست به چپ فقط به امکان تایپ فارسی یا عربی محدود نیست؛ بلکه رفتار پاراگراف، تراز متن، سلول‌های صفحه‌گسترده، علائم قالب‌بندی و حتی عناصر گرافیکی نیز باید با جهت نوشتار سازگار باشند. برای کاربران فارسی‌زبان، شاید همهٔ این تغییرات در استفادهٔ روزمره به چشم نیاید، اما مجموعهٔ آن‌ها گامی در جهت رفتار طبیعی‌تر و استانداردتر لیبره‌آفیس با متن‌های فارسی و عربی است.

جامعهٔ پویا و نرم‌افزارِ آزاد

یکی از دستاوردهای مهم نرم‌افزار آزاد، شکل‌گیری جامعه‌ای پویا از کاربران است؛ جامعه‌ای که در آن پرسش و پاسخ، انتقال تجربه و حل مسئله به‌صورت جمعی انجام می‌شود.

لیبره‌آفیس نمونه‌ای روشن از همین فرهنگ مشارکتی است؛ جایی که تجربهٔ یک کاربر می‌تواند راه‌گشای مشکل کاربران دیگر باشد.
برای مثال این یادداشت آموزشی در اصل از یک پرسش ساده شروع شد. مسئله‌ای که یکی از کاربران لیبره‌آفیس مطرح کرد و من گمان می‌کردم راه‌حلی برایش وجود ندارد، اما داشت و در در دل گفت‌وگوها با پی‌گیری همان کاربر پیدا شد.
از شما چه‌پنهان بسیاری دیگر از نوشته‌های این وبلاگ از همین جنس‌اند و از دل پرسش‌ها، تجربه‌ها و گفت‌وگوهایی که در مسیر استفاده از لیبره‌آفیس پیش آمده‌اند به یادداشت‌های آموزشی تبدیل شده‌اند.

ممکن است گفته شود که چنین پرسش‌وپاسخ‌هایی دربارهٔ نرم‌افزارهای انحصاری (مانند مایکروسافت‌آفیس) هم وجود دارد و انجمن‌ها و وب‌سایت‌های متعددی برای طرح سؤال دربارهٔ آن‌ها فعال هستند.
ظاهراً درست به نظر می‌رسد، اما تفاوت اصلی در «ماهیت» و «پایداری» این تبادل دانش نهفته است.

در نرم‌افزارهای آزاد، پرسش و پاسخ صرفاً راهکاری موقت برای استفادهٔ بهتر از یک محصول نیست، بلکه بخشی از فرآیند جمعیِ بهبود نرم‌افزار محسوب می‌شود. پاسخ‌ها محدود به چارچوب‌های بستهٔ شرکت سازنده نیستند و دانش تولیدشده می‌تواند مستقیماً به مستندات رسمی، راهنماها و حتی به خودِ کد منبع منتقل شود.

چالش شمارش کلمات در لیبره‌آفیس

در نگارش مقالات علمی، پایان‌نامه‌ها یا متونی که دارای محدودیت تعداد کلمات هستند، نویسندگان اغلب با یک چالش رایج مواجه می‌شوند: آیا محتوای پانویس‌ها، پی‌نوشت‌ها و کادرهای متنی باید در شمارش کلمات لحاظ شوند یا خیر؟

ابزار شمارش کلمات لیبره‌آفیس متأسفانه انعطاف‌پذیری لازم را ندارد و تمامی متون موجود در سند را محاسبه می‌کند، از جمله:

  • توضیحات اضافی در پانویس‌ها
  • ارجاعات در پی‌نوشت‌ها یا یادداشت‌های پایان
  • ینوشته‌های داخل کادرهای متنی (که ممکن است نمودار یا توضیح تصویر باشند)

این مسئله برای نویسنده‌ای که با محدودیت کلمات مواجه است، دشوار و آزاردهنده بوده و او را مجبور به محاسبهٔ دستی یا روش‌های زمان‌بر دیگر می‌کند.

چه باید کرد؟ 🤔

یک راه‌حل ساده و کاربردی برای این مشکل وجود دارد که قبلاً در واژه‌پرداز مایکروسافت ورد پیاده‌سازی شده است.

واژه‌شمار در وُردهمان‌طور که در تصویر مشخص است، یک چک‌باکس ساده در پایین پنجره وجود دارد با عنوان: شامل کردن کادرهای متنی، پانویس‌ها و یادداشت‌های پایانی.

اگر کاربر بخواهد تعداد کلمات بدون احتساب پانویس‌ها، پی‌نوشت‌ها و کادرها را بداند، کافی است تیک این گزینه را بردارد. بلافاصله آمارهای نمایش‌داده‌شده (تعداد کلمات، نویسه‌ها و…) به‌روزرسانی شده و اعداد جدید نشان داده می‌شود. در مایکروسافت ورد، این تنظیم حتی بر شمارش کلماتی که در نوار وضعیت (در پایین صفحه) نمایش داده می‌شود نیز تأثیر می‌گذارد. به این معنا که با برداشتن تیک این گزینه در پنجرهٔ گفتگو، عدد داخل نوار وضعیت نیز به‌طور خودکار تغییر کرده و تعداد کلمات بدون احتساب پانویس‌ها را نشان می‌دهد. این یکپارچگی، کار با برنامه را آسان‌تر می‌سازد.

اضافه شدن چنین قابیتی قبلاً از لیبره‌آفیس هم درخواست شده (اینجا) اما متأسفانه با اینکه ده سال هم از آن گذشته، هنوز پیاده‌سازی نشده است!
افزودن این چک‌باکس نه تنها یک نیاز واقعی کاربران را برآورده می‌کند، بلکه با الگوبرداری از یک راه‌حل موفق و ساده در نرم‌افزاری انحصاری، می‌تواند قابلیت‌های یک نرم‌افزار آزاد (لیبره‌آفیس) را برای طیف گسترده‌تری از کاربران، از جمله نویسندگان حرفه‌ای و دانشگاهیان، بهبود بخشد.

تکرار سربرگ‌ها در زمان چاپ

در صفحه‌گسترده‌ها، سطرهای ابتدایی یک جدول نقش «سربرگ» را دارند و معمولاً در آن‌ها عنوان ستون‌ها یا توضیحات اصلی داده‌ها قرار می‌گیرد. زمانی که از داده‌های جدول چاپ (پرینت) می‌گیرید، اگر جدولی که باید چاپ شود بیش از یک صفحه باشد ، نبودِن این سربرگ‌ها در صفحات بعدی، خواندن و درک اطلاعات را دشوار می‌کند.

برنامهٔ صفحه‌گستردهٔ لیبره‌آفیس در تنظیمات چاپ (پرینت)، امکان تکرار خودکار یک یا چند سطر را در تمام صفحات فراهم کرده است. با این قابلیت، سربرگ جدول در هر صفحه دوباره پرینت گرفته می‌شود.
برای این کار به مسیر زیر بروید:

Format→Print Range→Edit

تنظیمات چاپ سربرگ‌ها

در پنجرهٔ بازشده و در قسمت Rows to repeat اگر می‌خواهید فقط سطر اول در هر صفحه تکرار شود، مقدار زیر را وارد کنید:

$1

و اگر می‌خواهید چند سطر ابتدایی (برای مثال دو سطر اول) تکرار شوند، از این قالب استفاده کنید:

$1:$2

در صورت نیاز، می‌توانید به همین روش و از بخش Columns to repeat، سربرگ ستون‌ها را هم برای تکرار شدن مشخص کنید.

پس از اعمال این تنظیم، سطرهای انتخاب‌شده در همهٔ صفحات چاپ‌شده نمایش داده می‌شوند و خروجی نهایی، ظاهری منظم‌تر و خواناتر خواهد داشت؛ بدون اینکه لازم باشد سربرگ‌ها در هر صفحه به‌صورت دستی تکرار شوند.

شکل تزئینی و خوش‌نویسانهٔ حروف فارسی

در بسیاری از قلم‌های (فونت‌های) فارسی، حروف فقط یک شکل ندارند. گاهی طراح چند نسخهٔ جایگزین برای یک حرف می‌سازد؛ مثلاً «ک کلاسیک»، «ک مدرن»، «ک خوش‌نویسانه». این شکل‌های متفاوت در قالب بسته‌هایی به نام Stylistic Set (که معمولاً با ss01، ss02 و … مشخص می‌شوند) ارائه می‌شوند.فعال‌کردن هر Stylistic Set باعث می‌شود مجموعه‌ای از شکل‌های جایگزین به‌طور هماهنگ در متن ظاهر شوند. این کار فقط ظاهر را تغییر می‌دهد و محتوای متن دست‌نخورده باقی می‌ماند.
برای مثال در شکل‌های زیر حرف «ی»، حرف «ک» و حرف «گ» و همچنین نویسهٔ «ریال» و «تومان» به‌شکلی متفاوت از شکل رسمی و کلاسیکشان نمایش داده شدند.شکل تزئینی و خوشنویسانهٔ حروف در فونت آرادشکل تزئینی و خوشنویسانهٔ فونت آراداما چطور باید در لیبره‌آفیس از این قابلیت استفاده کرد؟

برای دسترسی به این بخش در واژه‌پرداز لیبره‌آفیس کافی است مسیر زیر را دنبال کنید:

Format→Character→Complex→Font Features

پنجرهٔ ویژگی‌های پیشرفتهٔ فونت

گزینه‌های این پنجره:

پنجرهٔ تنظیمات ویژگی‌های پیشرفتهٔ فونت

Swash:
حالت‌های تزئینی و خوش‌نویسانهٔ حروف را فعال می‌کند. اگر طراح فونت شکل‌های آراسته‌ای برای برخی حروف ساخته باشد، با فعال شدن این گزینه آن شکل‌ها جایگزین حالت معمولی می‌شوند.

Tabular Numbers:
شکل عددها را «جدولی» می‌کند. در این حالت همهٔ رقم‌ها پهنای یکسان دارند تا ستون‌های عددی در جدول‌ها کاملاً زیر هم قرار بگیرند.

Horizontal Kerning:
فاصلهٔ بین حروف را به‌صورت هوشمند تنظیم می‌کند. اگر فونت کرنینگ داشته باشد، فعال بودنِ این گزینه باعث منسجم‌تر دیده شدن متن می‌شود.

Digit Substitution: Arabic and English to Persian:
نمایش عددهای عربی-هندی و لاتین را به صورت «اعداد فارسی» درمی‌آورد. متن تغییری نمی‌کند و فقط شکل نمایش عوض می‌شود.

Swash Kaf and Gaf:
اگر فونت نسخهٔ تزئینی ویژه‌ای از حرف‌های «ک» و «گ» داشته باشد، این گزینه آن نسخه‌ها را فعال می‌کند.

Reversed Yeh:
در صورتی که فونت گلیف مخصوص «ی وارونه» داشته باشد، این گزینه آن را فعال می‌کند. اگر فونت چنین شکلی نداشته باشد، انتخابِ این گزینه تأثیری ندارد.

Rial, Toman and Derham symbols:
این گزینه استفاده از علائم پولیِ ریال، تومان و درهم را فعال می‌کند. اگر فونت نمادهای ویژه‌ای برای آن‌ها داشته باشد، فعال‌سازی این گزینه آن نمادها را جایگزین حالت معمولی می‌کند.

UI Numbers and Symbols:
بعضی فونت‌ها مجموعهٔ خاصی از عددها و نمادها را برای استفاده در رابط‌های کاربری طراحی می‌کنند. این گزینه مجموعهٔ سفارشی‌شدهٔ مخصوص رابط کاربری را فعال می‌کند.

 

جدول جایگزینی قلم (فونت)

لیبره‌آفیس سال‌هاست قابلیت مفیدی به نام Font Replacement Table (جدول جایگزینی فونت) دارد.
با این قابلیت می‌توان مشخص کرد که اگر فلان قلم در سیستم وجود نداشت، به‌جایش از قلم دیگری استفاده شود. برای مثال می‌توان تعیین کرد اگر در سندی از قلم غیرآزاد ایران‌سنس استفاده شده بود و این قلم روی سیستم نصب نبود، لیبره‌آفیس به‌جایش از یک قلم آزاد به‌عنوان جایگزین استفاده کند، قلمی که از نظر اندازه و شکل شبیه به همان قلم باشد.
اما این جدول به‌طور پیش‌فرض خالی است و باید خودِ کاربر آن را پر کند، یعنی کاربر باید خودش بداند چه فونتی شبیه کدام است و آن را دستی تنظیم کند.

حالا از طریق این افزونه (که به‌زودی با فهرستی جدید از قلم‌های آزاد به‌روزتر هم خواهد شد) می‌شود جدول پیش‌فرض و آماده‌ای (شامل بیشتر قلم‌های پرکاربردِ مایکروسافت با مجوز محدود) درست کرد که این جایگزینی‌ها را خودش انجام دهد. یعنی نیازی نیست کاربر چیزی بداند یا تنظیمی انجام دهد.

متأسفانه لیبره‌آفیس در ایران جامعهٔ فعالی ندارد، وگرنه می‌شد ما هم فهرستی از قلم‌های آزاد فارسی را در اختیار توسعه‌دهندهٔ این افزونه بگذاریم تا قلم‌های آزاد ما هم در این جدول گنجانده شود.

پاک‌نویس و گیت‌هاب

اولین نسخهٔ ماکروی پاک‌نویس را روی گیت‌هاب منتشر کردم.
در این مدت، برخی اشکالات کد قبلی را برطرف کردم و قابلیت مهم گزینش اصلاحات را هم اضافه کردم.

پنجرهٔ گزینش اصلاح‌ها

امیدوارم انتشار ماکرو بر بستر گیت‌هاب باعث جلب مشاکت علاقه‌مندان شود و در آینده‌ای نزدیک این ماکرو در نهایت به یک افزونهٔ قابل نصب تبدیل شود.

چطور از این ماکرو استفاده کنیم؟

جدیدترین نسخهٔ ماکرو را که فایلی با پسوند deb است، از اینجا دریافت کنید و نصبش کنید. پس از نصب، ۳ فایل در شاخهٔ کاربر خانگی و در مسیری مانند مسیر زیر کپی می‌شوند.

/home/afshin/.config/libreoffice/4/user/Scripts/python/

این ۳ فایل چی هستند؟
یکی فایلی با نام PAKNEVIS.py که ماکروی پاک‌نویس است و تقریباً همه‌کار با اوست.
فایل بعدی فایلی با نام DocumentList.json است و بانک لغاتی است که ماکرو از آن برای تصحیح غلط‌های املایی استفاده می‌کند و آخرین فایل هم فایلی است با نام TextFixer.conf که تنظیمات پنجرهٔ «گزینش اصلاح‌ها» را در خودش ذخیره می‌کند.

حالا به مسیر زیر بروید و ماکرو را مطابق شکل زیر اجرا کنید:

Tools → Macros… → Run Macro

پنجرهٔ انتخاب ماکرو