برای امر بالا، باید یک هاست قوی با قابلیت پشتیبانی از ویرایش htaccess و CGI, Perl, PHP & Java داشته باشیم که مسلمه باید سر کیسه رو شل کنید.
درضمن اگه مثل من کاربر مبتدی هستید، بهتره هاستتون هم رو ویندوز باشه نه لینوکس. چون نصب فارسی تک رو لینوکس رو نمی دونید. بعدش هم باید از مدیر هاستتون بخواهید که مثلا MiKTeX به همراه farsitex1.0pre1 رو واستون نصب کنه، اگه هم می تونید خودتون نصبش کنید.
بعد تازه باید آستینهاتون رو بالا بزنین و شروع به اسکریپت نویسی کاری که قراره انجام بشه، بکنید که من اصلا ازش چیزی نمی دونم.
تنها کمکی که می تونم بکنم، ارایه دو batch فایله که از فارسی تک، عکس به فرمت png و svg می سازه. مرورگر FireFox می تواند فایل svg را مانند یک عکس معمولی نشان دهد.
برای کار کردنشون باید ImageMagic+Potrace و GhostScript داشته باشید. مسلمه که باید فارسی تک، طبق دستورالعمل ۲ ماه پیش هم نصب باشه.
در ضمن برای نصب ImageMagic و Potrace، فایلی که دانلود کردید رو به یه جای دلخواه unzip کنید و اون دایرکتوری رو به PATH اضافه کنید.
۱) ftex2png
دستورات زیر رو درون یه batch فایل قرار بدید:
farsitex %1
dvips -E %1.dvi -o %1.ps
convert -density 120 -trim -transparent "#FFFFFF" %1.ps %1.png
del %1.aux
del %1.dvi
del %1.ps
۱) ftex2svg
دستورات زیر رو درون یه batch فایل قرار بدید:
farsitex %1
dvipng -q -T tight -D 1000 %1.dvi
ren %11.png %1.png
convert -density 120 %1.png %1.pbm
potrace -s %1.pbm
del %1.pbm %1.png %1.dvi %1.log %1.aux
یک نکته) هنگامی که می خواهید از ftex2svg استفاده کنید، اگر احیانا قبلش با ftex2png ، فایل png درست کردید، اون فایل png رو پاک کنید، بعد از ftex2svg استفاده کنید.
چگونگی استفاده
یه فایل دلخواه با پسوند tex درست کنید با محتویات زیر و اون فایل رو در دایرکتوری batch فایل قرار بدید:
\documentstyle[persian]{oldarticle}
\pagestyle{empty}
\pdfoutput=0
\begin{document}
$$\sum^{+\infty}_{k=1} \frac{1}{k^n}= \omega(k)$$ ٪ یا هر فرمول دیگری
\end{document}
بعد در Command Line Prompt به دایرکتوری batch فایلها بروید و دستورات زیر رو اجرا کنید:
ftex2svg yourfile
ftex2png yourfile
دیگه اوستا، شمایین!!![]()
زت زیاد... ![]()
برای اینکه یک متن یا عکس را در هرکجای سند قرار دهیم از دستور \put استفاده میکنیم.
شکل کلی این دستور به صورت زیر است:
>\put(X,Y){OBJ}
X و Y مختصات را بیان میکنند. این دو باید عدد وارد شوند اما در تعریف دستور در \unitlength ضرب میشوند که \unitlength نیز یک متغیر بُعد و برابر 1pt است. در ادامه بیشتر در مورد آن صحبت میکنم.
OBJ همان متن، عکس یا هر چیز دیگر است که میخواهید محل آنرا تعیین کنید.
نحوه کار دستور \put :
این دستور در هر کجا قرار گیرد، آرگومان سوم خود را به اندازه X pt چپتر از وسط خط فعلی و به اندازه Y pt بالاتر از وسط خط فعلی قرار میدهد. در واقع X و Y وارد شده، مختصات درج آرگومان سوم نسبت به وسط خط جاری در خروجی و کمی جلوتر از آخرین کاراکتر در آن خط است.
توضیح بالا گنگ است ولی این تنها برای کسانی است که تاکنون با دستور \put کار نکرده باشند. برای فهمیدن بهتر مثال زیر را مشاهده کنید:
مثال:
کدهای زیر را در نظر بگیرید:
>\documentstyle[persian]{oldbook}
>\begin{document}
>\english
>This is the first line
>\put(0,0){.}
>\end{document}
خروجی آنرا نیز مشاهده کنید.خروجی به صورت زیر خواهد بود:
This is the first line.
همانطور که مشاهده میشود، نقطه توسط دستور \put جایگذاری شده است. با صفر قرار دادن آرگومانهای اول ودوم به فارسیتک میگوییم که نقطه را دقیقاً در مبدا این جایگذاری قرار بده. پس به مکان نقطه را خوب نگاه کنید. این مکان همان مبدا سنجش دستور \put است (البته با کمی اختلاف)
این دستور فعلاً کاربرد آنچنانی نخواهد داشت ولی برای تولید BackGround برای صفحات سند بسیار مفید است. در مورد ساخت BackGround در پستهای بعدی بحث خواهم کرد.
با توجه به اینکه این وبلاگ یک وبلاگ تخصصی هست، نیاز به یک فهرست مطالب داشت. اما من هنوز نتونستم فهرست مطالب رو به بالای تمام پستها اضافه کنم. (مشکل از بلاگفاست که از تک iframe پشتیبانی نمیکنه!!!)
فعلاً دو نوع فهرست در اختیار هست. یکی فهرست عناوین وبلاگ که توسط خود بلاگفا تولید میشود و در مراحل آزمایشی است که میتونید در اینجا ببینیدش.
فهرست دیگری که خودم درست کردم و بسیار بهتر از فهرست بلاگفاست. به این فهرست میتونید اینجا درسترسی داشته باشید.
عبارت "فهرست مطالب" در منوی وبلاگ نیز شما را به فهرست خودم راهنمایی میکند.
ان شاء الله در آینده امکانات بیشتری به وبلاگ اضافه خواهد شد.
قبلاً دستور \stackrel را برای قرار دادن یک متن در بالای علائم ریاضی مانند مساوی، فلش و ... معرفی کردم اما بنا بر نیاز یکی از دوستان این پست به عکس این مطلب میپردازد یعنی قرار دادن یک متن در زیر علامت ریاضی.
ابتدا \undertext را به صورت زیر تعریف کنید:
>\def\undertext#1#2{\mathrel{\mathop{#2}\limits_{#1}}}
سپس در محیطهای ریاضی برای قرار دادن یک متن در زیر یک علامت به شکل زیر از این دستور استفاده کنید:
>\undertext{Text}{Symbol}
Text همان متن مورد نظر است.
Symbol همان علامت مورد نظر است. مانند = ، \to و ...
توجه: این دستور با تغییر تنها یک کاراکتر در تعریف دستور \stackrel بدست آمده است پس تمام خصوصیاتش مانند دستور \stackrel است. پس متن مورد نظر کوچکتر از علامت ریاضی است. اگر تاکید دارید که متن و علامت هم اندازه باشند، دستور را به صورت زیر تغییر دهید:
>\def\undertext#1#2{\mathrel{\mathop{#2}\limits_{\mbox{#1}}}}
البته اگر از FarsiTeX 1.0 Pre 1 استفاده نمیکنید، باید به جای mbox\ از farmbox\ استفاده کنید.
حتماً نظراتتون رو در قسمت نظرات بگید.
در پست قبلی با برخی دستورهای فایل ffancyhe.sty که برای تولید پاصفحه و سرصفحه استفاده میشود، آشنا شدیم. اما متاسفانه سبک صفحه fancy به طور پیشفرض درست نیست. چون حتی در سبک oldbook نیز شماره صفحه در تمام صفحهها، در پایین برگه چاپ میشود در حالیکه رسم بر آن است که شماره نیز در بالای صفحه باشد.
برای این دسته از دوستان کمی تغییرات انجام دادم تا شماره صفحات نیز به بالای صفحه منتقل شود. با استفاده از کدهای زیر در مقدمه سند میتوانید تغییرات لازم را اعمال کنید:
>\makeatletter
>\rhead{\ifodd\c@page\rm\thepage\else\sl\leftmark\fi}
>\lhead{\ifodd\c@page\sl\leftmark\else\rm\thepage\fi}
>\cfoot{}
>\makeatother
توجه: این تغییرات را تنها برای سبکهایی مثل oldbook به کار ببرید که twoside هستند و برای oldreport و oldarticle که twoside نیستند به کار نبرید! اگر میخواهید در oldreport نیز شماره صفحه به بالای صفحه منتقل شود، در قسمت نظرات بگویید که کدهای را در اختیارتان قرار دهم.
یکی از قابلیتهای فارسیتک که آنرا برتر از Microsoft Word میکند، قابلیت Header و Footer است که میتوان آنرا بسیار هوشمند ساخت.
در کتابها اکثراً از سرصفحه استفاده میشود. فرم معمول اینگونه است که در صفحات فرد به شکل زیر است:
|
شماره صفحه |
(انتشارات) |
نام فصل |
و در صفحات زوج به صورت زیر است:
|
نام فصل |
(انتشارات) |
شماره صفحه |
در فارسیتک به طور پیشفرض این قابلیت قرار داده شده است. این کار با دستور زیر انجام میگیرد:
>\pagestyle{headings}
دستور بالا را باید در مقدمه سند خود قرار دهید تا سرصفحه به تمام صفحات اضافه شود.
اما ممکن است بخواهید سرصفحه به صورت دلخواه شما باشد. در این صورت تعریف یک سرصفحه کمی مشکل است و ممکن است گیج کننده باشد.
اما نویسندگان LaTeX و در نتیجه فارسیتک به فکر شما بودهاند و این مشکل را با استفاده از فایل ffancyhe.sty حل کنید. این فایل حاوی یک Page Style به نام fancy و همچنین دستورهایی است که کار شما را در تولید سرصفحه و پاصفحه آسان میکنند.
چگونه از Fancy برای تولید سرصفحه و پاصفحه دلخواه استفاده کنیم؟
ابتدا باید فایل ffancyhe.sty را در سند خود فراخوانی کنید. کافی است در دستور \documentstyle عبارت ffancyhe را به قسمت آرگومان اختیاری اضافه کنید)
سپس Page Style را fancy قرار دهید. برای این کار دستور زیر را در مقدمه سند خود وارد کنید:
>\pagestyle{fancy}
اکنون سند شما بسته به سبک سند دارای سرصفحه و پاصفحه است. اما میتوانید سرصفحه و پاصفحه را به میل خود تغییر دهید که با دستورات زیر انجام میگیرند:
|
دستور |
توضیح آرگومان (متنی که به جای TEXT قرار میگیرد) |
| \rhead{TEXT} | متن سمت چپ سرصفحه |
| \lhead{TEXT} | متن سمت راست سرصفحه |
| \chead{TEXT} | متن وسط سرصفحه |
| \rfoot{TEXT} | متن سمت چپ پاصفحه |
| \lfoot{TEXT} | متن سمت راست پاصفحه |
| \cfoot{TEXT} | متن وسط پاصفحه |
همچنین دو متغیر بُعد برای کنترل ضخامت خط سرصفحه و پاصفحه تعریف شدهاند. که عبارتند از:
| \headrulewidth | ضخامت خط سرصفحه |
| \footrulewidth | ضخامت خط پاصفحه |
این مثال را دریافت و نتیجه آنرا مشاهده کنید.
در طی چند هفته گذشته، چندین نفری به فالرسیتک 1.0 کوچ کردهاند! اما سوالی که اغلب برای این کوچکنندگان پیش میآید، این است که چگونه میتواند از فارسیتک 1.0 خروجی DVI گرفت.
اگرچه خروجی PDF از خروجیهای PS و DVI به مراتب بهتر است اما در برخی موارد حتی خود بنده هم ترحیج میدهم از خروجی DVI استفاده کنم.
اما برای اینکه در فارسیتک 1.0 خروجی DVI داشته باشید، کافی است در مقدمه سند خود دستور زیر را وارد کنید:
>\pdfoutput=0
مقدمه سند کجاست؟
به تمام فاصله و دستورهای بین دو دستور ... documentstyle\ و {begin{document\ مقدمه سند گفته میشود.
در اینجاست که نیاز به معرفی دستور \hfill احساس میشود. این دستور بین دو متن فاصله لازم را ایجاد میکنند تا دو متن مورد نظر در دورترین فاصله قرار گیرند.
توجه: دستوری که اکنون معرفی میشود، دستور \hfill است آنرا با دستور \hfil (با یک L ) اشتباه نگیرید!
دستور \hfill :
همانطور که گفته شد از این دستور برای ایجاد بیشترین فاصله بین دو متن استفاده میشود. این دستور به ظاهر هیچ آرگومانی ندارد و طرز استفاده آن به صورت زیر است:
>First Text \hfill Second Text
First Text و Second Text همان متنهای مورد نظر هستند.
اینکه کدام متن در سمت راست قرار گیرد و کدام متن در سمت چپ، بستگی به پاراگراف دارد.
یک مزیت این دستور این است که در محیطهای ریاضی نیز کار میکند و با آن مشکلی نخواهید داشت.
برای آشنایی بیشتر با این دستور مثال را دانلود و بررسی نمایید.
در نظر دارم مبدل یونیکد به فارسیتک رو بنویسم. در این راه تقریباً الگوریتم این کار نوشته شده اما یک مورد هست که باید چارهای براش در نظر گرفت.
در طراحی مبدل یونیکد به فارسیتک نیاز هست که فایل خروجی در قالب فایلهای ویرایشگر فارسیتک یعنی فرمت ftx باشه. اما در ftx بین کاراکترهای فارسی و انگلیسی تفاوت هست. خوب پس مبدل باید یه جوری تشخیص بده که وقتی مثلاً به کاراکتر \ میرسه، در خروجی چه کاراکتری رو بزنه. کاراکتر \ فارسی یا کاراکتر \ انگلیسی. 2 راه به نظر من میرسه:
1- تعداد کاراکترهای فارسی و تعداد کاراکترهای انگلیسی یک خط رو محاسبه کنه و هر کدوم بیشتر بود، بر اساس اون انتخاب کنه که کاراکتر فارسی قرار بگیره یا کاراکتر انگلیسی.
2- از کاراکترهای > و < در ابتدای خط استفاده بشه. یکی از اونها به این معنی باشه که خط فارسی هست و دیگری بدین معنی باشه که خط انگلیسی هست (این همون روشی هست که ویرایشگر فارسیتک برای تمایز خطهای فارسی و انگلیسی ازش استفاده میکنه)
هر کدوم از این روشها معایبی هم دارند.
مثلاً روش اول این عیب رو داره که ممکنه یک خط فارسی باشه ولی تعداد کاراکترهای انگلیسی اون خط بیشتر باشه!
یا روش دوم این عیب رو داره که در صورت استفاده از این روش مجبور هستیم یک ویرایشگر یونیکد نیز برای فارسی تک تهیه کنیم!
هر یک از دوستان اگر پیشنهادی در این مورد دارند، در قسمت نظرات بگویند.
با تشکر
