سلام.
احتمالا در مورد تبدیل فایل ورودی فارسی تک به یونیکد، چیزایی شنیدید. چند تا مبدل نوشته شده، ولی از اینی که الان می خوام معرفی کنم، تعریف زیاد شنیدم.
این مبدل رو آقای مصطفی واحدی نوشتند. دستشون درد نکنه.
برای راحتی کار، فرض می کنیم از فارسی تکی که برای MiKTeX 2.7 معرفی کردم استفاده می کنید.
نصب مبدل فارسی تک به یونیکد در ویندوز
۱) ابتدا از اینجا یک نسخه ی کم حجم Python را دانلود کنید. بعد از دانلود، آن را به یک دایرکتوری دلخواه unzip کنید(مثلا C:\python). از این به بعد فرض می کنیم که Python را در این دایرکتوری نصب کردید.
۲) روی آیکون My Computer کلیک راست کنید و گزینه ی Properties را برگزینید. به قسمت Advanced بروید و روی دکمه ی Environment Variables کلیک کنید. در قسمت System Variables و در زیر عنوان Variable ، گزینه ی Path را پیدا کرده و روی آن دوبار کلیک کنید. در پنجره ای که باز می شود و در قسمت Variable Value، عبارت C:\python\python; (یعنی دایرکتوری فایل python.exe) را به ته سطر اضافه کنید و روی OK کلیک کنید.
۳) حال مبدل فارسی تک به یونیکد را از اینجا دانلود کنید.
۴) به دایرکتوری MiKTeX 2.7\miktex\bin رفته و فایل ftx2unicode.bat را پیدا کنید. روی آن کلیک راست کرده و گزینه ی Edit را برگزینید. محتویات این فایل را با خطوط زیر عوض کنید:
@echo off
%3
cd %1
python ftun-0.1.py %2.ftx %2.txt
چگونگی استفاده از مبدل
برای استفاده از این مبدل، باید هر بار، فایل ftun-0.1.py (مبدل فارسی تک به یونیکد) را در دایرکتوری فایل فارسی تکی که می خواهید آن را به یونیکد تبدیل کنید قرار دهید. سپس فایل فارسی تک خود را باز کنید و از منوی Run، گزینه ی Convert FTX to Unicode را انتخاب کنید(یا ترکیب کلید Ctrl+F5 را بزنید.). خروجی شما، باید یک فایل با پسوند txt در همان دایرکتوری فایل فارسی تک باشد.
زت زیاد...![]()
در ادامه معرفی دستورات فارسیتک نسخه جدید لازم دیدم چند دستور کاربردی را معرفی کنم.
گرچه این دستورها از قبل به شیوهای دیگر در فارسیتک موجود بودهاند اما یک دستور جدید نیز به آنها اضافه شده است که کاربر را انجام کارهای اضافی بینیاز میکند.
سه دستور \automathdigits و \persianmathdigits و \europeanmathdigits برای این هستند که تعیین کنند در محیط ریاضی، چه ارقامی به کار روند.
در فارسیتک ارقام محیط ریاضی دارای دو حالت هستند. ارقام فارسی، ارقام انگلیسی.
دستور \automathdigits :
این دستور به فارسیتک میگوید که انتخاب نوع رقم در محیط ریاضی، بر عهده موتور فارسیتک است و فارسیتک خود بر اساس زبان بند، نوع رقم را تعیین میکند.
دستور \persianmathdigits :
این دستور فارسیتک را مجبور میکند که در تمام محیطهای ریاضی که پس از به کار بردن این دستور، استفاده شدهاند، ارقام را به صورت ارقام فارسی چاپ کند. یعنی هیچ فرقی نمیکند که بند فعلی، بند فارسی باشد یا انگلیسی. در هر صورت ارقام محیط ریاضی آن، ارقام فارسی خواهند بود.
دستور \europeanmathdigits :
این دستور فارسیتک را مجبور میکند که تمامی ارقام موجود در محیطهای ریاضی پس از خود را به صورت رقم انگلیسی (اروپایی) چاپ کند.
توجه: فارسیتک به طور پیشفرض دستور \automathdigits را اجرا میکند. پس بدون هیچ نگرانی میتوانید به تایپ بپردازید چون فارسیتک در این زمینه نیز هوشمندی خود را به رخ میکشاند!!!
برای آشنایی بیشتر با این سه دستور، این لینک را دانلود و بررسی نمایید.
از دوستانی که پاسخ سوالاتشون دیر داده شد، واقعاً عذرخواهی میکنم. چون این چند روزه مشغول انتخاب رشته بودم و ... .
برخی دوستان سوال میپرسند اما ایمیلی در اختیار ما نمیگذارند. اگر میتونید به نحوی ایمیل خود را به اطلاع من برسونید. چون امکانات قسمت نظرات بسیار کم هست و نمیشه تمام موارد را در اون قسمت مطرح کرد. اگر ایمیل خود را در اختیار من قرار بدید، میتونم علاوه بر دادن جواب شما در قسمت نظرات، به ایمیلتون هم ارسال کنم.
امیدوارم که مطالبی که تاکنون در اختیارتون قرار دادم، مفید واقع شده باشه.
فعلاً علاوه بر آموزش فارسیتک، کارهای دیگری هم در زمینه فارسیتک دارم انجام میدم. اگر دوستان اطلاعات مفیدی در هر یک از این زمینهها دارند، حتماً در اختیار بنده بزارند.
1- ساخت مبدل فارسیتک به یونیکد (نوشته شده ولی در حال انجام آزمایش برای انتشار هستم)
2- ساخت مبدل یونیکد به فارسیتک ( درصد پیشرفت 0 درصد هست!)
3- ساخت ویرایشگر تحت ویندوز برای فارسیتک عیناً مشابه ویرایشگر موجود (درصد پیشرفت 0 درصد - علت عدم پیشرفت : نیافتن کنترلی در #C که توانایی نگهداری متنهایی با چند چیدمان را داشته باشد.)
4- ساخت ویرایشگر تحت ویندوز برای فارسیتک که بر مبنای یونیکد کار میکند. (درصد پیشرفت 0 درصد - نیاز به تکمیل پروژههای پیشین دارد.)
5- ارائه فارسیتک تحت وب (درصد پیشرفت 5 درصد - عدم آشنایی مورد نیاز با امکانات وب)
6- ارائه نصبکننده خودکار برای FarsiTeX 1.0 Pre 1 (درصد پیشرفت 90٪ - در حال آزمایش بر روی ویستا و پیشرفته ساختن نصبکننده که کاربر را از انجام بسیاری از کارها بی نیاز کند)
در FarsiTeX 1.0 Pre 1 سعی بر آن شده است که دسترسی به موارد انگلیسی و فارسی راحت و مقدور گردد. در واقع هدف از فارسیتک، یک سیستم حروفچینی دو زبانه بود. اما در نسخه پیشین، فارسیتک بیستر به سیستم حروفچینی منحصراً فارسی میماند تا یک سیستم حروفچینی دو زبانه. بدین منظور در این نسخه تغییرات لازم اعمال گردیده تا این مهم انجام گردد.
یکی از مواردی که میتواند در اسناد مفید باشد، درج تاریخ است.
فارسیتک هم میتواند تاریخ میلادی درج کند و هم تاریخ خورشیدی (تاریخ ایرانی، تاریخ هجری شمسی). تاریخ درج گشته بر مبنای هر یک از این دو تاریخ میتواند با حروف و علائم فارسی باشد و یا با حروف و علائم انگلیسی.
مثلا برای امروز یعنی 19 مرداد سال 1387، فارسیتک میتواند یکی از چهار خروجی زیر را تولید کند:
۱- 19 مرداد 1387
۲- e 19 Mordad 1387
3- August 9 , 2008
4- 9 اوت ۲۰۰۸
فارسیتک در انتخاب کدامیک از موارد بالا برای درج تاریخ بسیار هوشمند است اما برای سهولت کار، دستورهایی نیز قرار گرفتهاند.
چگونه تاریخ درج کنم؟
برای درج تاریخ در هرجای سند کافی است از دستور \today استفاده کرد. برای استفاده از این دستور، نیاز نیست هیچ فایل دیگر را فراخوانی کنید چون فایل مربوط به این دستور به طور پیشفرض توسط فارسیتک فراخوانی میشود.
دستور \autocalendar :
در کل ۳ دستور وجود دارند که میتوانند نحوه درج تاریخ را تغییر دهند. \autocalendar یکی از همین دستورها است.
این دستور نحوه درج تاریخ را به گونهای تغییر میدهد که نحوه درج آن توسط موتور فارسیتک تشخیص داده شود. این بدان معنی است که پس از کاربرد این دستور و استفاده از \today برای درج تاریخ، با توجه به اینکه محیط فارسی است یا انگلیسی به ترتیب تاریخ خورشیدی با کاراکترهای فارسی و تاریخ میلادی با کاراکترهای انگلیسی (موارد ۱ و ۳ در مثال بالا) درج میشود.
از بین ۳ دستور تغییر دهنده نحوه درج تاریخ، این دستور به طور پیشفرض توسط موتور فارسیتک فراخوانی میشود.
دستور \iraniancalendar :
این دستور، نحوه درج تاریخ را بر روی درج تاریخ بر مبنای تقویم خورشیدی قرار میدهد. یعنی در محیط فارسی، تاریخ خورشیدی با کاراکترهای فارسی (مورد ۱ در مثال بالا) و در محیط انگلیسی، تاریخ خورشیدی با کاراکترهای انگلیسی درج میشود (مورد ۲ در مثال بالا)
دستور \gregoriancalendar :
این دستور، نحوه درج تاریخ را بر روی درج تاریخ بر مبنای تقویم میلادی قرار میدهد. یعنی در محیط فارسی، تاریخ میلادی با کاراکترهای فارسی (مورد ۴ در مثال بالا) و در محیط انگلیسی، تاریخ میلادی با کاراکترهای انگلیسی درج میشود (مورد ۳ در مثال بالا)
برای آشنایی بیشتر این فایل را دانلود و بررسی نمایید.
دستور obeylines\
گاهی لازم میشود که وقتی یک خط در ویرایشگر فارسیتک تمام میشود، در خروجی (فایل PDF یا DVI یا PS و یا هر خروجی دیگر فارسیتک) نیز آن خط تمام شود. یعنی به جای اینکه از \\ برای شروع سطر جدید در خروجی استفاده کنیم، از سطرها را در ویرایشگر به همانگونهای بچینیم که در خروجی انتظار آنرا داریم. مثلاً در شعر نو به دلیل ماهیتی که دارد، دائماً باید از \\ برای پایان دادن به یک به اصطلاح مصراع استفاده کرد. استفاده از \\ در این موارد تایپیست را کلافه میکند.
دستور obeylines\ هیچ آرگومانی ندارد و به صورت زیر فراخوانی میشود:
>\obeylines
این دستور در هرجا به کار رود، بر ادامه سند تاثیر میگذارد. این چیزی نیست که مطلوب ما است. برای جلوگیری از تاثیر کلی این دستور، میتوان این دستور را در یک بلاک قرار داد. قبلاً گفته شد که یک بلاک با کاراکتر { آغاز شده و با کاراکتر } پایان مییابد.
برای روشن شدن این مطلب به دو مثال زیر توجه کنید:
مثال 1:
دستورهای زیر را در ویرایشگر فارسیتک وارد کنید:
>\documentstyle[persian]{oldreport}
>\pdfoutput=0
>\begin{document}
>\english
>\obeylines
>text 1
>text 2
>text 3
>text 4
>\end{document}
خروجی مثال به صورت زیر خواهد بود:
text 1
text 2
text 3
text 4
مشاهده میکنید که در ششم، هفتم، هشتم و نهم کدهای این مثال از \\ برای خط جدید استفاده نشده است ولی در خروجی پس از تولید text 1 ، خط جدید شده است. این به خاطر استفاده از دستور obeylines\ در خط پنجم کدهای بالاست.
مثال 2:
دستورهای زیر را در ویرایشگر فارسیتک وارد کنید:
>\documentstyle[persian]{oldreport}
>\pdfoutput=0
>\begin{document}
>\english
>{
>\obeylines
>text 1
>text 2
>}
>text 3
>text 4
>\end{document}
خروجی به صورت زیر است:
text 1
text 2
text 3 text 4
همانطور که مشاهده میکنید، دستور obeylines\ را در بلاک قرار دادیم. پس اثرات این دستور تنها در چیزهایی که در آن بلاک قرار دارد، اعمال میشود. پس text 1 و text 2 هر کدام در یک خط جداگانه قرار میگیرند و text 3 و text 4 هر دو در یک خط قرار میگیرند (زیرا این دو عبارت در بلاکی که دستور obeylines\ قرار دارد، جای نگرفتهاند.)
توجه1: با فراخوانی دستور obeylines\، اتمام خط در ویرایشگر فارسیتک، مساوی است با استفاده از دستور par\ نه دستور newline\ (و همچنین نه مساوی با دستور \\ )
توجه 2: با فراخوانی دستور obeylines\، دستورهایی چون \\ ، par\ و ... به قوت خود باقی هستند و همان کارهای قبلی را انجام میدهند.
توجه 3: اگر میخواهید از تورفتگی که در اثر جدید شدن خط ایجاد میشود جلوگیری کنید، میتوانید درون بلاک، مقدار متغیر بُعد parindent\ را صفر کنید. (میدانیم که این مقدار صفر تنها در بلاکی که در آن مقدار متغیر بُعد parindent\ را صفر کردهایم، معتبر است و بر بقیه قسمتهای سند تاثیری ندارد.)