در لینکهایی که در انتهای این پست قرار دادهام، مبدل فایل متنی یونیکد (UTF8) به فارسیتک، سورس آن، و راهنمای آن در قالب یک نمونه قرار داده شده است. توضیحات اضافه را آنجا دادهام. هدف من از قرار دادن سورس مبدل، فقط ادای دین به جنبش متن باز است... و الا من هیچ ادعایی ندارم!
نسخهی ۰٫۵ دریافت
نسخهی ۰٫۶۳ دریافت
سلام.
جواب این سوالها رو خود من هم نمیدونم. اما بستهی color رو دوباره دستکاری کردم تا ۱) قابلیت انطباق بیشتری در fcolor وجود داشته باشد، و ۲) با خروجی PDF (منظورم موتور PDFe-TeXه) سازگار باشد؛ و ۳) برای کسی که میخواهد روش کار را ببیند قابل لمس باشد.
اگر قبلاً fcolor رو نصب کردید، با این یکی جایگزینش کنید (و قبلی رو فراموش کنید). این نسخه، به هنگام استفاده از موتور e-TeX، و یا با خروجی DVI از درایور DVIPS، و هنگام استفاده از موتور PDFe-TeX، از امکانات داخلی PDFTeX استفاده میکند. برای نصب هم کافیست fcolor.zip رو به دایرکتوری نصب فارسیتک، unzip کرده و Refresh کنید. بعد اون رو مثل سایر استایلها در پیشدرآمد سند بین []ها بیارید.
فقط (به علتی که خودم نمیدانم چیست)، هنگام استفاده از PDFe-TeX، دستور pagecolor\ خطا میگیرد.
خوب این تا اینجا. اما برای استفاده از دستورات رنگ هم یک نمونه در اینجا قرار دادهام.
http://www.parsupload.ir/uploads/9edf0fd6e5.zip
و دیگری در اینجا
http://www.parsupload.ir/uploads/db9a3a4d77.zip
برای محیط فارسی باید دستورات رنگ را بین عبارتهای \beginL و \endL محدود کنید و متن فارسی را بین \InF{} و \EnF{} قرار بدهید.
در ضمن دستوری مشابه textcolor\ تعریف کردم که در محیط فارسی کار کند و نیازی به کارهای بالا برای آن نباشد. این دستور بهصورت \Ftextcolor هست.
fcolor را میتوانید از اینجا دریافت کنید:
http://www.parsupload.ir/uploads/ee69d2bf91.zip
an other link (DVIPS compatible): http://persiandrive.net/883144
اگر شما هم این را با خودتان میگفتید (؟) کارهای زیر را انجام بدهید:
۱. به شاخهی زیر بروید (منظور از $$، پوشهی نصب فارسیتک است).
۲. تغییرات را ذخیره کنید (البته همیشه یک نسخه از فایل مبدا را نگهداری کنید).
۳. در قسمت start، به Run بروید و MO را اجرا کنید. بعد به قسمت TeX Formats رفته و روی فرمت FarsiTeX کلیک کنید و کلید Build را فشار دهید.
با این کار تغییرات دلخواه در فرمت فارسیتک اعمال میشود.
شاید این مطلب برای بعضیها که فارسی را روی miktex 2.5 و بالاتر نصب کردهاند، بهدرد بخور نباشد؛ اما شاید
برای آنها که miktex 2.4 را دارند، باشد!
وقتی که برای اولین بار farsitex 1.0 روی miktex 2.4 ارایه شد، خیلیها (منجمله خودم) فکر کردیم که فارسیتک، در ویندوز نقص دارد. اما مشکل آن بهخاطر کامپایلرش (etex) بود. در نشانی زیر، فایل زیپی را قرار دادهام که حاوی کامپایلر etex مربوط به miktex 2.0 است. این فایل را در دایرکتوریای که فارسیتک را در آن نصب کردهاید، unzip کنید. اگر هم دایرکتوری نصب فارسیتک، با miktex یکی است، در موقع unzip باید فایلها replace بشوند.
با این کار، مشکل فارسیتک در miktex 2.4 حل میشود (هر چند فکر میکنم هیچ کس حالا از 2.4 استفاده نکند!).
به همبن خاطر، وبلاگی جدید را به بلاگفا معرفی کردم تا مکانی باشد برای جمعآوری و انتقال این مطالب.
حیطهی کاری این وبلاگ، بیشتر حول ترجمهی مستندات استاندارد توزیعهای تک است و همچنین هر چیز دیگری که به نوعی مربوط به آنها است.
شمارهی کاربری برای آقا وحید و جناب SuB بهعنوان یک کاربر مدیر فرستاده شده و هر کس دیگری هم که علاقه دارد در وبلاگ مطلب بنویسد به من (Simorgh43@Gmail.com) اطلاع بدهد تا برایش حساب باز کنم.
نشانی این وبلاگ:
اول از همه فكر ميكنم خوب باشد كه وبلاگي را براي ابزارهاي جانبي حروفچيني مثل ابزارهاي گرافيكي اختصاص بدهيم. در اينصورت جناب SuB هم ميتوانند يك دورهي آموزش متاپست را هم بگذارند (خود من خيلي ضعيف هستم در اين مورد). اين وبلاگ ميتواند بهعنوان زيرمجموعهي وبلاگ فارسيتك باشد.
دوم، يك راهنماي برچسبگذاري در متاپست را به اين پست ضميمه كردهام. اين راهنما يك ترجمهي جزيي است
از Introduction to MetaPost كه نوشتهي خود John Hobby است.
با سلام به آقا وحيد و SuB و بقيهي بچهها.
من تازه به جمع بروبچههاي وبلاگ اضافه شدم و اميدوارم مزاحمتم بيشتر از منفعتم نباشد.
حيطهي كار حقير هم اصلا ماكرو نويسي و كارهايي كه جناب SuB و آقا وحيد بلدند نيست.
اما آيا تا بهحال برايتان اتفاق افتاده است كه خواسته باشيد برنامهاي را كه در يك ويرايشگر برنامه نوشتهايد،
به همان شكل در يك سند لاتك وارد كنيد؟
CCoder اين كار را در مورد برنامههاي C برايتان انجام ميدهد (يك كم تبليغي شد!).
توضيحات اضافه را در اينجا دادهام:
دستور \fancypage :
این دستور برای تعیین پسزمینه تمام صفحات یک سند به کار میرود. و شکل کلی آن به صورت زیر است:
>\fancypage{TEXT1}{TEXT2}
TEXT1 همان عبارت مورد نظر است. این عبارت میتواند عکس، متن یا ترکیبی از این دو باشد.
توجه: این دستور در فایل fancybox.sty تعریف شده است پس برای استفاده از این دستور ابتدا باید فایل یاد شده را فراخوانی کنید.
با توجه به اینکه دستور \fancypage از دستورات پیشفرض LaTeX 2.09 نیست و همچنین در فایل fancybox.sty هیچ توضیحی در مورد نحوه استفاده از این دستور داده نشده است، کاربرد آرگومان دوم این دستور را بنده حقیر نمیدانم و فکر نمیکنم نیازی به دانستن آن باشد.
دستور \thisfancypage :
این دستور نیز مشابه دستور \fancypage است و تنها تفاوت آنها در این است که \fancypage پسزمینه تمام صفحات سند را تعیین میکند ولی \thisfancypage پسزمینه صفحه فعلی سند را تعیین میکند.
مثال 1:
در این مثال نحوه استفاده از دستور \fancypage را میآموزید. کدهای زیر را در ویرایشگر فارسیتک تایپ نمایید:
>\documentstyle[persian,fancybox]{oldreport}
>\fancypage{\Huge\IE{SuB}}{}
>\begin{document}
>\english
>The first page
>\newpage
>The second page
>\newpage
>The third page
>\end{document}
خروجی آنرا مشاهده کنید. در خروجی 3 صفحه داریم که در هر صفحه در گوشه سمت چپ و پایین محدوده تایپ صفحه عبارت مورد نظر یعنی SuB چاپ شده است.
با مشاهده این مثال میفهمید که مبدا قرار گیری عبارت مورد نظر گوشه سمت چپ و پایین محدوده تایپ است. (محدوده تایپ کوچکتر از اندازه برگه است و به متغیرهای بُعد مختلفی از جمله \textwidth و \textheight و ... بستگی دارد.)
معمولاً این قرارگیری پیشفرض دستور \fancypage برای ما خوشآیند نیست و جای دیگری برای آن در نظر داریم. تنها کافی است با قرار دادن متن مورد نظر در عبارت دستور \put و تعیین مکان آن، مکان پسزمینه را تعیین کنید. برای آشنایی با نحوه این کار مثال زیر را مشاهده کنید.
مثال 2:
>\documentstyle[persian,fancybox]{oldreport}
>\fancypage{\put(200,200){\Huge\IE{SuB}}}{}
>\begin{document}
>\english
>The first page
>\newpage
>The second page
>\newpage
>The third page
>\end{document}
مشاهده میکنیم که مکان قرارگیری پسزمینه تغییر کرد.
ممکن است بخواهید که پسزمینه دقیقاً در وسط محدوده تایپ قرار گیرد در این صورت نیاز به تعریف دستور دیگری داریم که این دستور به صورت زیر تعریف میشود:
>\makeatletter
>\newsavebox\pagebackgroundbox
>\newdimen\backgroundwd
>\newdimen\backgroundht
>\def\preparebackground#1{
> \long\def\put(##1,##2)##3{\@killglue\raise##2\hbox to\z@{\kern##1 ##3\hss}\ignorespaces}
> \savebox{\pagebackgroundbox}{#1}
> \backgroundwd=.5\textwidth
> \addtolength{\backgroundwd}{-.5\wd\pagebackgroundbox}
> \backgroundht=.5\textheight
> \addtolength{\backgroundht}{-.5\ht\pagebackgroundbox}
> \put(\backgroundwd,\backgroundht){#1}
>}
>\makeatother
دستور تعریف شده دستور \preparebackground است با یک آرگومان که عبارت مورد نظر را گرفته و با محاسبه وسط محدوده تایپ، عبارت مورد نظر را در وسط محدوده تایپ قرار میدهد. نحوه استفاده از این دستور در مثال زیر آورده شده است:
مثال 3:
کدهای زیر را تایپ و خروجی آنرا مشاهده نمایید:
>\documentstyle[persian,fancybox]{oldreport}
>\makeatletter
>\newsavebox\pagebackgroundbox
>\newdimen\backgroundwd
>\newdimen\backgroundht
>\def\preparebackground#1{
> \long\def\put(##1,##2)##3{\@killglue\raise##2\hbox to\z@{\kern##1 ##3\hss}\ignorespaces}
> \savebox{\pagebackgroundbox}{#1}
> \backgroundwd=.5\textwidth
> \addtolength{\backgroundwd}{-.5\wd\pagebackgroundbox}
> \backgroundht=.5\textheight
> \addtolength{\backgroundht}{-.5\ht\pagebackgroundbox}
> \put(\backgroundwd,\backgroundht){#1}
>}
>\makeatother
>\fancypage{\preparebackground{\Huge\IE{SuB}}}{}
>\begin{document}
>\english
>The first page
>\newpage
>The second page
>\newpage
>The third page
>\end{document}
برای امر بالا، باید یک هاست قوی با قابلیت پشتیبانی از ویرایش 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 در پستهای بعدی بحث خواهم کرد.
