تالار گفتگوی پارسی‌لاتک

زی‌پرشین XePersian => زی‌تک => نويسنده: مجتبی برخورداری در ژانویه 11, 2010, 07:13:04 pm

عنوان: بسته psfrag
رسال شده توسط: مجتبی برخورداری در ژانویه 11, 2010, 07:13:04 pm
آیا بسته psfrag با زی‌پرشین سازگار است و آیا میشه با این بسته به شکل‌های eps متن فارسی اضافه کرد؟
عنوان: پاسخ : بسته psfrag
رسال شده توسط: vafa در ژانویه 11, 2010, 07:29:49 pm
فکر کنم این بسته اصلا با xelatex کار نکنه. چون من امتحان کردم ولی ارور داد.
عنوان: پاسخ : بسته psfrag
رسال شده توسط: محمود امین‌طوسی در ژانویه 12, 2010, 12:58:05 am
جناب برخورداری سلام.

من هم با فارسی کردن فایلهای eps چه مستقیم و چه با psfrag مشکل دارم. ولی راه حلهای زیر را به شما پیشنهاد می‌کنم:

۱- اگر فقط فایل eps را دارید:  با استفاده از Eps2pgf که مثال و لینک دانلود آن در اینجــــــــــا (http://www.texample.net/tikz/examples/eps2pgf/) هست، فایلهای eps خود را به pgf تبدیل نمایید و سپس در فایل تولید شده:
الف - آنرا به یونیکد تبدیل نمایید.
ب- عبارات لاتین خود را با معادل فارسی آنها جایگزین نمایید.
ج- pgfpicture، را با tikzpicture عوض کنید.
د- دستورات \textsf را حذف نموده و یا به textbf تغییر دهید.
پس از آن فایل pgf را با input داخل محیط figure قرار دهید.
برچسب های شما فارسی خواهند بود.

۲- اگر MATLAB مولد eps شما بوده و می‌توانید دوباره اجرا کنید،‌ از matlab2tikz برای تولید خروجی tikz به جای eps استفاده کنید. البته برچسب‌ها را باید خودتان فارسی کنید و نیاز به تغییر فایل matlab2tikz  هم هست که من با اجازه صاحبش برای خودم تغییر داده‌ام که با نسخه‌های جدید قدیم MATLAB کار کند.

۳- اگر با MATLAB یا برنامه دیگری eps را تولید کرده‌اید و قادر به اجرای مجدد هستید، به نحوی برنامه خود را تغییر دهید که مستقیماً کد tikz برای رسم نمودارها را تولید نماید و سپس از نمودارها در لاتک استفاده کنید. اگر برنامه شما توان تولید خروجی فارسی را داشته باشد که فبها وگرنه باید مثل بالا به صورت دستی عبارات لاتین را با معادل فارسی آنها جایگزین نمایید.
عنوان: پاسخ : بسته psfrag
رسال شده توسط: مجتبی برخورداری در ژانویه 13, 2010, 06:29:51 pm
متشکر از راهنمایی‌هاتون
من روش ۲ را با استفاده از matlab2tikz 0.0.5 و Matlab R2008a انجام دادم و موفق بود. ولی با Matlab R2006b خطا می‌داد.

روش ۱ را نیز برای فایل‌های  eps که قبلا ساخته بودم با eps2pgf-0.7.0 امتحان کردم ولی خطا می‌داد:
Could not find the main class: net.sf.eps2pgf.Main

همچنین من تفاوت روش ۳ با روش ۲ را متوجه نشدم.
عنوان: پاسخ : بسته psfrag
رسال شده توسط: محمود امین‌طوسی در ژانویه 13, 2010, 07:21:44 pm
سلام.

من روش ۲ را با استفاده از matlab2tikz 0.0.5 و Matlab R2008a انجام دادم و موفق بود. ولی با Matlab R2006b خطا می‌داد.

بله حق با شماست برنامهٔ matlab2tikz با Matlab R2008a مشکلی ندارد و با Matlab R2006b مشکل داشت که پست قبلی خودم را اصلاح خواهم کرد.

روش ۱ را نیز برای فایل‌های  eps که قبلا ساخته بودم با eps2pgf-0.7.0 امتحان کردم ولی خطا می‌داد:
Could not find the main class: net.sf.eps2pgf.Main

من با Java 1.5 امتحان کرده بودم مشکلی نداشتم. فایل eps خودتان را در شاخه eps2pgf قرار دهید و در همان شاخه Java را اجرا کنید.

همچنین من تفاوت روش ۳ با روش ۲ را متوجه نشدم.

در روش دوم شما از برنامهٔ matlab2tikz برای تبدیل یک نمودار کشیده شده به دستورات tikz استفاده می‌کنید. این برنامه که نمی‌داند داده‌های شما بر اساس چه تابعی ایجاد شده‌اند. فرض بفرمایید شما یک شکل سینوسی را رسم کرده‌اید. برنامه فوق کلی مختصات نقاط به همراه دستورات tikz مربوطه را برای شما تولید خواهد کرد. در حالیکه می‌توان همان شکل را به چند دستور ساده tikz نوشت (روش سوم). پس در روش سوم خودمان مسئول تولید دستورات موردنیاز tikz خواهیم بود که شرط آن یاد داشتن دستورات آن است. ولی در نهایت کد tikz بهتری خواهیم داشت. کد زیر قسمتی از یک برنامه MATLAB من است که برای تولید یک فایل حاوی دستورات tikz موردنیاز برای رسم نمودار موردنظرم نوشته‌ام:

    fprintf(fid_tex,'\\pgfplotstableread{%s}{\\table}\n',dataFileName);
    fprintf(fid_tex,'\\begin{tikzpicture}\n');
    . . .
     fprintf(fid_tex,' ylabel=%s, xlabel=%s]\n',options.yLabel,options.xLabel);
   
    for i=1:mNo
        fprintf(fid_tex,'\\addplot+[smooth] table[x=dbNo,y=m%d] from \\table;\n',i);
    end
    fprintf(fid_tex,'\\legend{%s}\n',legendStr);
        fprintf(fid_tex,'\\end{tikzpicture}\n');

همانگونه که برای رسم نمودارهایمان در MATLAB به راحتی از متغیرهای خودمان استفاده می‌کنیم در اینجا هم به راحتی می‌توان از متغیرها استفاده کرد.

با توجه به اینکه به نظر می‌رسد شما تصاویر eps زیادی از قبل دارید من همان راه حل اول را برای شما مناسب‌تر می‌دانم.
ضمن اینکه در بارگزاری یک فایل eps  لاتک پردازش خاصی انجام نمی‌دهد ولی در هنگام تولید یک نمودار tikz باید زمانی صرف پردازش این دستورات شود و اگر تعدا آنها زیاد باشد  پردازش سندتان زمان بیشتری نیاز خواهد داشت.
عنوان: پاسخ : بسته psfrag
رسال شده توسط: keiva68 در ژوئیه 31, 2014, 07:55:56 pm
جناب برخورداری سلام.

من هم با فارسی کردن فایلهای eps چه مستقیم و چه با psfrag مشکل دارم. ولی راه حلهای زیر را به شما پیشنهاد می‌کنم:

۱- اگر فقط فایل eps را دارید:  با استفاده از Eps2pgf که مثال و لینک دانلود آن در اینجــــــــــا (http://www.texample.net/tikz/examples/eps2pgf/) هست، فایلهای eps خود را به pgf تبدیل نمایید و سپس در فایل تولید شده:
الف - آنرا به یونیکد تبدیل نمایید.
ب- عبارات لاتین خود را با معادل فارسی آنها جایگزین نمایید.
ج- pgfpicture، را با tikzpicture عوض کنید.
د- دستورات \textsf را حذف نموده و یا به textbf تغییر دهید.
پس از آن فایل pgf را با input داخل محیط figure قرار دهید.
برچسب های شما فارسی خواهند بود.

۲- اگر MATLAB مولد eps شما بوده و می‌توانید دوباره اجرا کنید،‌ از matlab2tikz برای تولید خروجی tikz به جای eps استفاده کنید. البته برچسب‌ها را باید خودتان فارسی کنید و نیاز به تغییر فایل matlab2tikz  هم هست که من با اجازه صاحبش برای خودم تغییر داده‌ام که با نسخه‌های جدید قدیم MATLAB کار کند.

۳- اگر با MATLAB یا برنامه دیگری eps را تولید کرده‌اید و قادر به اجرای مجدد هستید، به نحوی برنامه خود را تغییر دهید که مستقیماً کد tikz برای رسم نمودارها را تولید نماید و سپس از نمودارها در لاتک استفاده کنید. اگر برنامه شما توان تولید خروجی فارسی را داشته باشد که فبها وگرنه باید مثل بالا به صورت دستی عبارات لاتین را با معادل فارسی آنها جایگزین نمایید.

سلام جناب امین طوسی
اگر امکان داره فایل برنامه matlab2tikz که آن را تغییر داده و با زی پرشین هماهنگ کرده اید برای دانلود قرار دهید

با تشکر