• Welcome to پارسی‌لاتک.
 
از تاریخ ۱۳۹۳/۸/۱۴ به دلیل ارائه خدمات بهتر به سایت جدید پرسش و پاسخ مهاجرت کرده‌ایم؛ از این رو امکان عضویت و ارسال پست در تالار غیرفعال شده است. لطفاً برای پرسیدن سوال‌های خود به سایت جدید مراجعه کنید.

ورود به سایت جدید

Main Menu

بسته psfrag

نویسنده مجتبی برخورداری, ژانویه 11, 2010, 07:13:04 بعد از ظهر

« قبلی - بعدی »

مجتبی برخورداری

آیا بسته psfrag با زی‌پرشین سازگار است و آیا میشه با این بسته به شکل‌های eps متن فارسی اضافه کرد؟

vafa

فکر کنم این بسته اصلا با xelatex کار نکنه. چون من امتحان کردم ولی ارور داد.

محمود امین‌طوسی

#2
جناب برخورداری سلام.

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

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

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

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

مجتبی برخورداری

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

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

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

محمود امین‌طوسی

سلام.
نقل قول از: مجتبی برخورداری در ژانویه 13, 2010, 06:29:51 بعد از ظهر
من روش ۲ را با استفاده از matlab2tikz 0.0.5 و Matlab R2008a انجام دادم و موفق بود. ولی با Matlab R2006b خطا می‌داد.

بله حق با شماست برنامهٔ matlab2tikz با Matlab R2008a مشکلی ندارد و با Matlab R2006b مشکل داشت که پست قبلی خودم را اصلاح خواهم کرد.
نقل قول از: مجتبی برخورداری در ژانویه 13, 2010, 06:29:51 بعد از ظهر
روش ۱ را نیز برای فایل‌های  eps که قبلا ساخته بودم با eps2pgf-0.7.0 امتحان کردم ولی خطا می‌داد:
Could not find the main class: net.sf.eps2pgf.Main

من با Java 1.5 امتحان کرده بودم مشکلی نداشتم. فایل eps خودتان را در شاخه eps2pgf قرار دهید و در همان شاخه Java را اجرا کنید.
نقل قول از: مجتبی برخورداری در ژانویه 13, 2010, 06:29:51 بعد از ظهر
همچنین من تفاوت روش ۳ با روش ۲ را متوجه نشدم.

در روش دوم شما از برنامهٔ 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 باید زمانی صرف پردازش این دستورات شود و اگر تعدا آنها زیاد باشد  پردازش سندتان زمان بیشتری نیاز خواهد داشت.
حضرت علی (علیه السلام):دوستی و محبت را از دل بپرسید، چرا که دلها گواهانی رشوه ناپذیرند.
‎کمک مالی به پارسی‌لاتک‎

keiva68

نقل قول از: محمود امین‌طوسی در ژانویه 12, 2010, 12:58:05 قبل از ظهر
جناب برخورداری سلام.

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

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

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

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

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

با تشکر