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

لاتک LATEX => گرافیک، جدول و شکل => نويسنده: negin1990 در دسامبر 06, 2011, 10:01:00 am

عنوان: کشیدن فلوچارت با استفاده از محیط PSMATRIX
رسال شده توسط: negin1990 در دسامبر 06, 2011, 10:01:00 am
من برای کشیدن فلوچارت از بسته‌ی PSTRICKS و محیط PSMATRIX استفاده می‌کنم .
اما استاد ما از ما خواسته که ورودی و خروجی‌هامون توی متوازیالاضلاع باشه .
وقتی این سوال رو مطرح کردم دو تا جواب برای کشیدن متوازی‌الاضلاع گرفتم که اولیش این بود:‌
\documentclass{article}
\usepackage{pstricks}
\usepackage{pst-node,pst-3d}
\usepackage{pst-blur}
\definecolor{Pink}{rgb}{1.,0.75,0.8}

\makeatletter
\newsavebox\TBox
\newcommand\psParaBox[2][]{{
  \psset{framesep=5pt,gangle=60,#1}%
  \sbox\TBox{\psTilt{\psk@gangle}{\psframebox{\phantom{ #2}}}}%
  \usebox\TBox% 
  \rput(-0.5\wd\TBox,\dimexpr 0.5\ht\TBox-0.5ex\relax){ #2}}}
\makeatother

\pagestyle{empty}
\begin{document}

  \psset{shadowcolor=black!70,blur}
  \begin{psmatrix}[rowsep=0.4,colsep=0.5]
    \psovalbox{Begin} \\
    \psParaBox[fillstyle=solid,fillcolor=red!40]{Initialisations} \\
    \psdiabox{Special} &
       \psframebox[shadow=true]{Call to SP1} & \psframebox[shadow=true]{Call to SP2} \\
    \psframebox{Action 1} \\
    ~\\
    \psframebox{Action 2} \\
    \psovalbox{End}
    % Links
    \ncline{->}{1,1}{2,1}
    \ncline{->}{2,1}{3,1}
    \ncline{->}{3,1}{4,1}<{\textcolor{red}{No}}
    \ncline{->}{4,1}{6,1}
    \ncline{->}{6,1}{7,1}
    \ncline{->}{3,1}{3,2}^{\textcolor{red}{Yes}}
    \ncline{->}{3,2}{3,3}
    \ncbar[angleA=-90,armB=0,nodesepB=0.25]{->}{3,3}{4,1}
  \end{psmatrix}
\end{document}
که وقتی از این کد استفاده می‌کنم دوتا مشکل دارم :
۱- اگر بسته‌ی زیپرشین را فراخوانی کنم ارور می‌گیرم و خروجی پی‌دی اف رو هم به من نشون نمیده
۲- حتی اگر این بسته رو هم فراخوانی نکنم شکل متوازی‌الاضلاع رو نخواهم گرفت .

کد دومی که برای کشیدن متوازی‌الاضلاع هست کد زیره:
% ================================
% Source: http://tug.org/pipermail/pstricks/2009/006766.html

\makeatletter
\newdimen\psparallelogramsep
\def\psset@parallelogramsep#1{\pssetlength\psparallelogramsep{#1}}
\psset@parallelogramsep{3mm}
\def\psparallelogrambox{\pst@object{psparallelogrambox}}
\def\psparallelogrambox@i{\pst@makebox\psparallelogrambox@ii}
\def\psparallelogrambox@ii{%
    \begingroup
    \pst@useboxpar
    \pst@dima=\pslinewidth
    \advance\pst@dima by \psframesep
    \pst@dimc=\wd\pst@hbox\advance\pst@dimc by \pst@dima
    \pst@dimb=\dp\pst@hbox\advance\pst@dimb by \pst@dima
    \pst@dimd=\ht\pst@hbox\advance\pst@dimd by \pst@dima
    \setbox\pst@hbox=\hbox{%
        \ifpsboxsep\kern\pst@dima\fi
        \begin@ClosedObj
        \addto@pscode{%
            \psk@cornersize
            \pst@number\pst@dima neg
            \pst@number\pst@dimb neg
            \pst@number\pst@dimc
            \pst@number\pst@dimd .5
            \pst@number\psparallelogramsep
            \tx@Parallelogram}%
            \def\pst@linetype{2}%
            \showpointsfalse
        \end@ClosedObj
        \box\pst@hbox
        \ifpsboxsep\kern\pst@dima\fi%
    }%
    \ifpsboxsep\dp\pst@hbox=\pst@dimb\ht\pst@hbox=\pst@dimd\fi
    \leavevmode\box\pst@hbox
    \endgroup%
}

% From the Frame and Rect PostScript macros
\pst@def{Parallelogram}<{%
/ParallelogramA {
x1 pgs sub y1 moveto
x1 y2 lineto
x2 pgs add y2 lineto
x2 y1 lineto
x1 pgs sub y1 lineto
closepath} def
%
/pgs ED
CLW mul
/a ED
3 -1 roll
2 copy gt { exch } if
a sub
/y2 ED
a add
/y1 ED
2 copy gt { exch } if
a sub
/x2 ED
a add
/x1 ED
1 index 0 eq {pop pop ParallelogramA } { OvalFrame } ifelse}>
\makeatother

\def\pspbox[#1]#2{\makebox[#1]{\psparallelogrambox{#2}}}

% ================================


\pagestyle{empty}
با استفاده از این کد فقط تا زمانی که زیپرشین را فراخوانی نکردم می‌توانم فلوچارت بکشم و بعدش ارور می‌ده .

سوال من این هست که :
۱- چرا فقط با دومی می‌توانم متوازی‌الاضلاع بکشم
۲- آیا می‌شه از این محیط برای کشیدن فلوچارت استفاده کرد یا باید چیز دیگه‌ای مثل TIKZرو یاد بگیرم ؟‌
من از تکلایو ۲۰۱۱ استفاده می‌کنم .
نمونه فایل‌های هردو با شکل فلوچارتی که سعی کردم بکشم رو هم تو پیوست‌ها به صورت جداگانه قرار دادم . البته به خاطر اینکه با بسته زیپرشین ارور می‌داد همه چیز رو انگلیسی نوشتم .
البته سوالات دیگری رو هم که در این زمینه پرسیده شده بود رو بررسی کردم اما چون تکلایوم رو آپدیت کردم نمی‌دونم مشکل از کجاست دقیقا !
ممنونم
عنوان: پاسخ : کشیدن فلوچارت با استفاده از محیط PSMATRIX
رسال شده توسط: هادی صفی‌اقدم در دسامبر 06, 2011, 01:39:18 pm
من در این زمینه اطلاعاتم صفر هست ولی فایل‌های ضمیمه شده الان با زی‌پرشین مشکلی نداره.
سایت زیر نمونه‌های خوبی داره: www.texample.net/tikz/ (http://www.texample.net/tikz/)

عنوان: پاسخ : کشیدن فلوچارت با استفاده از محیط PSMATRIX
رسال شده توسط: negin1990 در دسامبر 06, 2011, 05:43:33 pm
خیلی عجیبه ! نمی‌دونم شاید سیستم من ایرادی داشته چون دیشب هرکاری می‌کردم تا وقتی زیپرشین رو فراخوانی می‌کنم فلوچارت رو هم بکشم می‌گفت که در لود کردن .xdvipdfmx مشکل داره و نوشته‌های فارسی رو نمی‌شناخت اما چند ساعت پیش که دوباره این کارو کردم همون طور که گفتیم بی هیچ اروری این کار رو انجام داد
عنوان: پاسخ : کشیدن فلوچارت با استفاده از محیط PSMATRIX
رسال شده توسط: negin1990 در دسامبر 06, 2011, 05:46:30 pm
اما هنوز این مشکل که در فایل HW42 هست برطرف نشده و اون هم این هستش که با اینکه متوازی‌الاضلاع تعریف شده و هیچ اروری هم نمی‌ده هنوز متوازیالاضلاع رو به صورت مستطیل نشون می‌ده و وقتی شما هم پی دی افش رو گرفتین همین مشکل بوده !
عنوان: پاسخ : کشیدن فلوچارت با استفاده از محیط PSMATRIX
رسال شده توسط: هادی صفی‌اقدم در دسامبر 06, 2011, 09:58:36 pm
در فایل دوم متوازی‌الاضلاع تعریف نشده است.
با یک نگاه ساده می‌تونستید ببینید که چه جوری تعریف شده و در دومی هم بیاریدش.
عنوان: پاسخ : کشیدن فلوچارت با استفاده از محیط PSMATRIX
رسال شده توسط: negin1990 در دسامبر 07, 2011, 12:03:48 am
در فایل دوم متوازی‌الاضلاع تعریف نشده است.
با یک نگاه ساده می‌تونستید ببینید که چه جوری تعریف شده و در دومی هم بیاریدش.
در فایل دوم تعریف شده است . این‌ها دو تعریف هستند جداگانه که اولی کار می‌کند و دومی نه .
توی اینجا به من این دو جواب رو دادن
http://tex.stackexchange.com/questions/37152/drawing-parallelogram-in-a-flowchart-with-the-psmatrix-enviroment/37165#37165 (http://tex.stackexchange.com/questions/37152/drawing-parallelogram-in-a-flowchart-with-the-psmatrix-enviroment/37165#37165)
, و فکر نمی‌کنم جوابش غلط باشه اما دوس دارم بدونم که واقعا این طبق گفته‌ی هربرت ووس یه باگ هست یا نه .
عنوان: پاسخ : کشیدن فلوچارت با استفاده از محیط PSMATRIX
رسال شده توسط: حسن ذاکری در دسامبر 07, 2011, 01:41:26 am
در فایل دوم تعریف شده است . این‌ها دو تعریف هستند جداگانه که اولی کار می‌کند و دومی نه .
توی اینجا به من این دو جواب رو دادن
http://tex.stackexchange.com/questions/37152/drawing-parallelogram-in-a-flowchart-with-the-psmatrix-enviroment/37165#37165 (http://tex.stackexchange.com/questions/37152/drawing-parallelogram-in-a-flowchart-with-the-psmatrix-enviroment/37165#37165)
, و فکر نمی‌کنم جوابش غلط باشه اما دوس دارم بدونم که واقعا این طبق گفته‌ی هربرت ووس یه باگ هست یا نه .

سلام.
بله باگ هست، ولی نه باگ pstricks. با اجرای چندتا مثال ساده pstricks می‌تونید متوجه شید که دستوراتی که شما لازم دارید درست کار می‌کنند. مثلاً این کد
\psTilt{-60}{%
2 \begin{pspicture}(2,2)
3 \psaxes{<->}(2,2)
4 \end{pspicture}}
دقیقاً مشابه مثال شماست و کاملاً صحیح کار می‌کند. در این مورد Pstricks‌ هیچ باگی ندارد.
اما اون چیزی که برای شما مشکل ایجاد کرده، driver dependant بودن بعضی دستورات pstricks است. در حقیقت باگی که مشاهده کردید یک باگ xelatex‌ است (یا بهتره بگم عدم سازگاری بین این دو).
برای اینکه مطمئن شید همه چیز سرجاشه و درست کار می‌کنه، سه دستور زیر رو روی فایا HW42‌ که تو پست اول گذاشتین اجرا کنید
latex hw42
dvips hw42
ps2pdf hw42.ps
خروجی pdf رو ملاحظه کنید (ضمیمه کردم). البته حرفهای آقای ووث رو هم بایست مدنظر داشته باشید. ایشون در pstricks صاحبنظر هستند و جزو توسعه دهندگان بسته.
عنوان: پاسخ : کشیدن فلوچارت با استفاده از محیط PSMATRIX
رسال شده توسط: negin1990 در دسامبر 09, 2011, 01:20:24 pm
مشکل دقیقا اینجا پیدال میشه که وقتی من از پکیج زیپرشین استفاده می‌کنم و می‌خوام بیرون فلوچارت شکل بکشم با ارور مواجه می‌شم و الان هم دوباره همین ارور هست ! مشکل از کجاست که ای ارور رو می‌ده یعنی داخل فلوچارت میشه فارسی نوشت اما خارجش نه !
عنوان: پاسخ : کشیدن فلوچارت با استفاده از محیط PSMATRIX
رسال شده توسط: هادی صفی‌اقدم در دسامبر 09, 2011, 01:26:31 pm
مشکل دقیقا اینجا پیدال میشه که وقتی من از پکیج زیپرشین استفاده می‌کنم و می‌خوام بیرون فلوچارت شکل بکشم با ارور مواجه می‌شم و الان هم دوباره همین ارور هست ! مشکل از کجاست که ای ارور رو می‌ده یعنی داخل فلوچارت میشه فارسی نوشت اما خارجش نه !
فایل نمونه حاوی مشکل!
عنوان: پاسخ : کشیدن فلوچارت با استفاده از محیط PSMATRIX
رسال شده توسط: negin1990 در دسامبر 09, 2011, 01:49:07 pm
 . این ارور‌ها رو توی فایل‌هایی که من گذاشتم می‌ده اما تو فایل‌هایی که شما دوباره گذاشتین نمی‌ده . وقتی بررسیشون کردم دیدم تفاوت فایل‌های من با فایل‌های شما این هست که شما از
\begin{latin}
\end{latin}
استفاده کردید . این باعث چه تغییری میشه که تمام این ارور ها رو از بین می‌بره ؟‌
اروری که میگیرم این هست :
xdvipdfmx.exe has stopped working
عنوان: پاسخ : کشیدن فلوچارت با استفاده از محیط PSMATRIX
رسال شده توسط: هادی صفی‌اقدم در دسامبر 09, 2011, 01:58:44 pm
وقتی فایل‌های من خطا نمیده خب از همون‌ها استفاده کنید.