مقایسه توزیعهای فارسی از تک

پارامترهای مقایسه

تک پارسی

فارسی تک

ARABI Package

PDFeTeX یا PDFLaTeX

-

PDFeTeX

PDFLaTeX

نسخه لاتک

LaTeX2e

LaTeX2.09

LaTeX2e

زبان دستورات

فارسی

انگلیسی

انگلیسی

یونیکد یا مبدل یونیکد

مبدل یونیکد (Beta)

مبدل یونیکد (روی وب)

یونیکد

چگونگی فارسی‌سازی

ماکرو + موتور تک

ماکرو

ماکرو

نحوه چسباندن حروف

موتور تک

برنامه ftx2tex

TFM

امکان اضافه کردن قلم

بله

بله

بله

لینوکس

wine
(احتمالا مستقیم)

مستقیم
(ویرایشگر با wine)

مستقیم

راهنما به زبان فارسی

بسیار خوب

نامناسب

نامناسب

پشتیبانی

-

تا اندازه‌ای
(از طریق یک وبلاگ)

-

تعداد کاربران

(نمی‌دانم)

زیاد

(نمی‌دانم)

حجم برنامه

۸۰ مگابایت کامل

۲۰ مگابایت
(+ یک نسخه از تک)

۷ مگابایت
(+ یک نسخه از تک)

قابلیت جستجو در PDF

-

-

بله

درجه اطمینان (reliable)

زیاد

متوسط

کمتر از متوسط

در مورد ArabTeX اغلب پارامترها مشابه ARABI package می‌باشد، اما: امکان اضافه کردن قلم بسیار سخت می‌باشد و نحوه چسباندن حروف از طریق ماکرونویسی پیچیده در تک انجام شده است. XeTeX هم مشابه ArabTeX است، اما: اضافه کردن قلم بسیار کار آسانی است و چسباندن حروف از روی اطلاعات موجود در قلمها صورت میگیرد به شرطی که قلم با یونیکد سازگار باشد.

دریافت (download) تک پارسی (TeX-e-Parsi)

دریافت (download) نسخه کامل تک پارسی (TeX-e-Parsi) در حدود ۸۱ مگابایت

دریافت (download) نسخه متنی (source) تک پارسی (TeX-e-Parsi) در حدود ۱۱۰ مگابایت

PerlTeX

با PerlTeX می‌توان یک فایل ورودی تهیه کرد که محتوی دستورات Perl و تک باشد. یعنی می‌توان داخل فایل لاتک به زبان Perl برنامه‌نویسی کرد. جالب است، نه؟! به مثال زیر توجه کنید:

\documentclass{article}
\usepackage{perltex}
\perlnewcommand{\reversewords}[1]{join " ", reverse split " ", $_[0]}
\begin{document}
\reversewords{Try doing this without Perl!}
\end{document}

دستورات فوق را در یک فایل sample.tex قرار دهید و سپس دستورات "perl perltex.pl sample.tex" را در یک کنسول اجرا کنید. perltex.pl نام اسکریپتی است که همراه PerlTeX نصب می‌شود. فایل DVI حاوی متن زیر خواهد بود:

Perl! without this doing Try

برای تعویض مترجم لاتک به PDFLaTeX می‌توانید از دستورات زیر استفاده کنید:

perl perltex.pl -latex=pdflatex sample.tex

باقی مطالب را از راهنمای PerlTeX بخوانید.

پایتون (Python) + تک (TeX) می‌دهد PyTeX

تک زبان ماکرونویسی مناسبی ندارد و امکانات برنامه‌نویسی آن بسیار بد و ضعیف است. در واقع تک یک سیستم حروف‌چینی (بسیار) عالی است، نه یک زبان برنامه‌نویسی! این مقاله در مورد PyTeX حرف دل من (و شما) را زده است. ایده اصلی این است که ‌PyTeX به صورت frontend عمل کند و تک به صورت backend ... امیدوارم توانایی‌های این سیستم روز به روز افزون شود!

قلمهای فارسی-تک برای استفاده در تک پارسی (نسخه ۰.۳)

قلمهای فارسی-تک برای استفاده در تک پارسی: یک باگ مربوط به «غین» چسبیده از چپ برطرف شده است. کارهای آینده:

  1. قلم‌ها هنوز مشکل اعراب دارند (که باید ماکرو نویسی کرد).
  2. «الف» چسبیده از راست در قلم‌ها تعریف نشده است (که باید خود قلم‌ها را ویرایش کرد).

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

  1. تهیه نسخه پست اسکریپت باقی قلم‌های تک پارسی
  2. دستور تعویض قلم‌های فارسی-تک بازبینی شود (گویا با همدیگر کار نمی‌کند)
  3. تهیه لیست دستورات لازم برای تعویض قلم ریاضی پیش فرض در تک پارسی

قلمهای فارسی-تک برای استفاده در تک پارسی (نسخه ۰.۲)

قلمهای فارسی-تک برای استفاده در تک پارسی: شامل TFMها و فایل MAP و فایل‌های رمزینه (مشکلات بعضی از حروف رفع شده است مانند گاف). فایل‌های FD را مطابق نمونه قلم لوتوس می‌توان درست کرد. در صورتی که شخص دیگری این کار را انجام ندهد و خودم وقت کردم آن را نیز خود درست می‌کنم!

از لاتک چه خبر؟!

کاتالوگ تک و لاتک: اگر می‌خواهید ببنید چه بسته‌هایی برای استفاده در تک و لاتک وجود دارند و نیز برای دریافت آنها به این سایت رجوع کنید.

What is CTAN? The Comprehensive TeX Archive Network (CTAN) is the authoritative collection of materials related to the TeX typesetting system.

آرشیو اعلانات CTAN: هر وقت بسته‌ای (package) به روز می‌شود یا بسته جدیدی اضافه می‌شود، در اینجا اعلان می‌شود.

مترجم برخط فرمول لاتک

مطالب زیر برگرفته از این وبلاگ است.

آیا تا کنون خواسته‌اید که فرمولی ریاضی را بر صفحه وب خود قرار دهید؟ یک راه حل استفاده از نرم‌افزارهایی است که فرمول را به تصویر تبدیل می‌کنند و سپس ذخیره کردن تصویر بر روی یک سرور و در نهایت قرار دادن آدرس تصویر در صفحه وب است.

راه حل آسانتر، استفاده از مترجم برخط (online) لاتک با نام mimetex است. به مثال زیر توجه کنید:

یک فرمول 

در این مثال فرمول لاتک را به سروری به صورت برخط فرستاده‌ام و آن سرور تصویر حاصل را به صورت برخط درست می‌کند و برای خواننده صفحه وب (یعنی شما) نشان می‌دهد. در نتیجه من فقط فرمول لاتک را در صفحه خود قرار داده‌ام ولی خواننده تصویر فرمول را خواهد دید. برای فرمول فوق در آدرس تصویر عبارت زیر را قرار داده‌ام:

http://www.forkosh.dreamhost.com/mimetex.cgi?c=\sqrt{a^2+b^2+\frac{\cal{A}}{\cal{B}}}

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

این سایت از mimetex برای نشان دادن تصویر به صورت لحظه‌ای استفاده می‌کند و در پایان LaTeXRender را برای تولید تصویر نهایی با کیفیت بهتر به کار می‌برد.

اگر خواستید فرمول لاتک را به صورت برخط و دیداری (visual) وارد کنید این آدرس را ببینید. این سایت نیز از LaTeXRender برای نمایش تصویر فرمول استفاده می‌کند.

چهارچوب مبدل یونیکد به فارسی لاتک

از لحاظ چهارچوبی ساختار فایل ورودی می‌تواند دو دستور زیر را برای راحتی کار مبدل فراهم کند:

  1. زبان پیش-فرض: صرفا به یک دستور نیاز دارد.
  2. قطعه‌ای که در آن زبان صریحا مشخص شده است: این قطعه با دو زیر-دستور شروع قطعه و پایان قطعه مشخص می‌گردد.

در دستور اول می‌توان زبان دیگری به کار برد و مبدل تا جای ممکن به صورت هوشمند عمل می‌کند (البته قواعد این هوشمندی باید مشخص باشد). در پستهای بعدی این قواعد بیشتر بحث می‌شوند و از خوانندگان تقاضا دارم در این زمینه کمک کنند.

در درون قطعه‌ای که با دستور دوم مشخص می‌شود، مبدل نباید هیچگونه هوشمندی به کار ببرد.

با فرض اینکه نیازی به تبدیل یونیکد به تک پارسی و سپس مجددا از تک پارسی به یونیکد نیست، لذا نیازی به خاصیت زیر نیست.

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

قلم لوتوس برای تک پارسی

فایل‌های مورد نیاز برای استفاده از قلم لوتوس در تک پارسی به همراه یک مثال. فکر کنم به کار بردن اعراب با این قلم خالی از مشکل نباشد...

از این به بعد به جای پارسی-تک کلمه تک پارسی را به کار خواهم برد.

رمزینه مورد نیاز جهت استفاده از قلمهای فارسی-تک در پارسی-تک

رمزینه مورد نیاز جهت استفاده از قلمهای فارسی-تک در پارسی-تک را می‌توانید از اینجا دریافت کنید. به صورت نظری می‌توان از تمام قلم‌های فارسی-تک در پارسی-تک استفاده کرد. در عمل باید کسی فایل‌های مورد نیاز از قبیل fd-ها، map و TFM-ها را درست کند.

قلم‌های فارسی-تک نویسه‌هایی دارند که در قلم‌های پارسی-تک وجود ندارند، مانند لیگاتورهای تشکیل شده از دو اعراب (مثل تشدید+کسره). باید تعدادی ماکرو نوشت ...

ابزارهای مشکل-دار قلم

بعضی از ابزارهای مربوط به قلم مانند ttf2pt1 (در ویندوز و شاید حتی در لینوکس!) مشکل (یعنی باگ) دارند! مثلا ttf2pt1 باعث می‌شود که قلم پست-اسکریپت حاصل (از قلم نازلی) یک زایده در حرف «گاف» داشته باشد. در حالیکه برنامه fontforge (در لینوکس) این مشکل را به وجود نمی‌آورد.

کارهایی برای انجام دادن روی پارسی-تک

  1. اضافه کردن قلمهای فارسی-تک (پارسی و علمی) به پارسی-تک که مستلزم تهیه یک فایل رمزینه (encoding) است.
  2. برطرف کردن بعضی از مشکلات قلمهای پست-اسکریپت فارسی-وب:
    1. اضافه کردن بعضی از نویسه‌ها مانند پرانتز،
    2. درست کردن فایل رمزینه (encoding) چرا که نویسه «کاف» در حال حاضر به صورت عربی نشان داده می‌شود،
    3. درست کردن شکل نویسه‌ها مانند زایده نویسه «گاف» (در صورت امکان)،
    4. (به نظر من) ارقام قلم نازلی زیبا نیستند!
  3. ارتقای مبدل یونیکد به پارسی-تک از لحاظ هوشمندی (به گونه‌ای که تا جای ممکن نیازی به استفاده از دستورات صریح تعیین زبان وجود نداشته باشد)،
  4. تهیه مبدل پارسی-تک به یونیکد (در آینده دور!)

همه کسانی که به این وبلاگ سر می‌زنند و شاید از آن استفاده می‌کنند سه نفر می‌باشند (وحید، امیر و خودم) ... !

قابلیت جستجو در PDF

می‌توان با لاتک و ARABI خروجی PDF-ای تهیه کرد که متن درون آن به صوریت یونیکدی قابل جستجو و نیز Copy and Past باشد. ولی چرا Google این فایل را درست نمایه‌گذاری نمی‌کند؟ یا چرا وقتی این فایل را به فایل متنی Export یا Save As می‌کنیم فایل متنی حاصل یونیکد نیست؟

PDFLaTeX و پارسی-تک

تغییرات اعمال شده در موتور اصلی تک (به زبان WEB) که منجر به موتور پارسی-تک شده است را باید بر موتور تک PDFTeX اعمال کرد تا نسخه‌ای از پارسی-تک به دست آید که مستقیما خروجی PDF تولید کند ...

تغییرات اعمال شده در موتور اصلی تک بر دو دسته‌اند:

  1. دستورات بدوی حروفچینی
  2. ترجمه دستورات و پیامها به زبان فارسی

فقط دسته اول تغییرات مهم هستند. به عبارت دیگر باید به دنبال حداقل تغییرات بود.

قابليت حمل مستند: XML و LaTeX

چرا باید از XML برای نوشتن لاتک یا تک استفاده کنیم؟ [حدس] اگر زمانی بخواهیم که از یک مستند چندین نوع خروجی تهیه کنیم، مثلا خروجی MSWord و LaTeX و ConTeXt و HTML و غیره، داشتن نوعی از مستند (مانند XML) که قابلیت تبدیل به این انواع را داشته باشد (یا حداقل کار تبدیل را آسان کند) ضروری است.

آیا ابزاری وجود دارد که کار نوشتن لاتک به زبان XML را راحت کند؟ [حدس] فکر نکنم.

  1. TeXML: زبان XML برای LaTeX و وبلاگ TeXML
  2. تبدیل XML به LaTeX (مورد اول پروژه جدیدتری است!)
  3. LyX فایل تولیدی خود را با قالب XML نگهداری می‌کند.

راهنمای کامل پارسی-تک به زبان فارسی

پارسی-تک راهنمای بسیار مناسبی دارد: راهنمای کامل پارسی-تک به زبان فارسی.

ممکن است بعضی از کاربران بگویند که زمان یادگیری دستورات پارسی-تک را ندارند و ترجیح بدهند کار خود را با فارسی-تک ادامه دهند یا آغاز کنند. دو نکته لازم به ذکر است: 

  1. در این صورت زمان بیشتری را برای رفع مشکلات فارسی-تک یا کنار آمدن با محدودیت‌های آن صرف خواهند کرد.
  2. بسیاری (نه همه!) از دستورات پارسی-تک صرفا معادل (و ترجمه) دستورات متداول لاتک می‌باشند. مثلا محیط لیست و شماره‌گذاری معادل list و enumerate می‌باشند و به صورت یکسان کار می‌کنند. در نتیجه به عنوان یک راه حل ساده (برای English Lovers) دستورات معادل را پیدا کنید و کنترل کنید که با دستور فارسی آن به صورت یکسان کار می‌کند.

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

تعویض قلم پیش-فرض در پارسی-تک

در لاتک ۲.ای از دو دستور زیر (در قسمت preamble) برای تعویض قلم پیش-فرض استفاده می‌شود:

\renewcommand{\familydefault}{default_font_family_name}
\renewcommand{\encodingdefault}{default_font_encoding_name}

در پارسی-تک برای تغییر قلم انگلیسی پیش-فرض از همان دو دستور مذکور استفاده می‌کنیم ولی برای تغییر قلم فارسی پیش-فرض (به مثلا نازلی که رمزینه (encoding) آن DK1 است)، از دو دستور زیر استفاده می‌کنیم:

\تعیین‌فامیل‌عادی{نازلی}

\renewcommand{\semiencodingdefault}{DK1}

معادل فارسی (منظورم با کلمات فارسی است!) دستور دوم را نمی‌دانم. ولی معادل انگلیسی دستور اول را در زیر می‌توانید ببینید:

\renewcommand{\semifamilydefault}{نازلی}

مبدل یونیکد به پارسی-تک نسخه 0.2

این نسخه ۰.۲ از مبدل یونیکد به پارسی-تک است. تغییرات داده شده به نسخه قبلی از این قرار است:

  1. امکان پشتیبانی از اعداد اضافه شده است.
  2. تعدادی باگ برطرف شده است که مربوط به گاف و کاف می‌شود.
  3. به صورت خودکار حروف انگلیسی و اعداد انگلیسی را پشتیبانی می‌کند و نیازی به استفاده از دستورات تعیین زبان متن ندارد. ولی دستورات تعیین صریح زبان همچنان کار می‌کنند.

نمونه ورودی یونیکد (فایل متنی لاتک) و خروجی (پست اسکریپت) را نیز می‌توانید ملاحظه کنید.

مبدل یونیکد به پارسی-تک نسخه 0.1

این یک مبدل ابتدایی یونیکد به پارسی-تک به زبان پایتون است و برای همین نسخه اش 0.1 است. در این نسخه کاراکترهای یونیکد به معادلشان نگاشت میشوند و در نتیجه (متاسفانه فعلا!) عددها به صورت برعکس نگاشت میشوند. متون فارسی و انگلیسی باید به صورت صریح در متن یونیکد مشخص شوند و برای این کار شروع متن فارسی با \$f_  و شروع متن انگلیسی با \$e_ مشخص میشود. به صورت پیش فرض متن فارسی است. اگر پیشنهاد بهتری دارید حتما ذکر کنید. این برنامه احتمالا باگ زیاد دارد!

به زودی (یعنی چند ماه!!) مبدل پارسی-تک به یونیکد هم تهیه خواهد شد!

این یک نسخه کوچک از پایتون است که مجموعا ۱.۵ مگابایت حجم دارد.