سلام.
جواب این سوالها رو خود من هم نمیدونم. اما بستهی 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}
