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

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

کشیدن فلوچارت با استفاده از محیط PSMATRIX

نویسنده negin1990, دسامبر 06, 2011, 10:01:00 قبل از ظهر

« قبلی - بعدی »

negin1990

من برای کشیدن فلوچارت از بسته‌ی 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رو یاد بگیرم ؟‌
من از تکلایو ۲۰۱۱ استفاده می‌کنم .
نمونه فایل‌های هردو با شکل فلوچارتی که سعی کردم بکشم رو هم تو پیوست‌ها به صورت جداگانه قرار دادم . البته به خاطر اینکه با بسته زیپرشین ارور می‌داد همه چیز رو انگلیسی نوشتم .
البته سوالات دیگری رو هم که در این زمینه پرسیده شده بود رو بررسی کردم اما چون تکلایوم رو آپدیت کردم نمی‌دونم مشکل از کجاست دقیقا !
ممنونم

هادی صفی‌اقدم

#1
من در این زمینه اطلاعاتم صفر هست ولی فایل‌های ضمیمه شده الان با زی‌پرشین مشکلی نداره.
سایت زیر نمونه‌های خوبی داره: www.texample.net/tikz/


negin1990

خیلی عجیبه ! نمی‌دونم شاید سیستم من ایرادی داشته چون دیشب هرکاری می‌کردم تا وقتی زیپرشین رو فراخوانی می‌کنم فلوچارت رو هم بکشم می‌گفت که در لود کردن .xdvipdfmx مشکل داره و نوشته‌های فارسی رو نمی‌شناخت اما چند ساعت پیش که دوباره این کارو کردم همون طور که گفتیم بی هیچ اروری این کار رو انجام داد

negin1990

اما هنوز این مشکل که در فایل HW42 هست برطرف نشده و اون هم این هستش که با اینکه متوازی‌الاضلاع تعریف شده و هیچ اروری هم نمی‌ده هنوز متوازیالاضلاع رو به صورت مستطیل نشون می‌ده و وقتی شما هم پی دی افش رو گرفتین همین مشکل بوده !

هادی صفی‌اقدم

در فایل دوم متوازی‌الاضلاع تعریف نشده است.
با یک نگاه ساده می‌تونستید ببینید که چه جوری تعریف شده و در دومی هم بیاریدش.

negin1990

نقل قول از: هادی صفی‌اقدم در دسامبر 06, 2011, 09:58:36 بعد از ظهر
در فایل دوم متوازی‌الاضلاع تعریف نشده است.
با یک نگاه ساده می‌تونستید ببینید که چه جوری تعریف شده و در دومی هم بیاریدش.
در فایل دوم تعریف شده است . این‌ها دو تعریف هستند جداگانه که اولی کار می‌کند و دومی نه .
توی اینجا به من این دو جواب رو دادن
http://tex.stackexchange.com/questions/37152/drawing-parallelogram-in-a-flowchart-with-the-psmatrix-enviroment/37165#37165
, و فکر نمی‌کنم جوابش غلط باشه اما دوس دارم بدونم که واقعا این طبق گفته‌ی هربرت ووس یه باگ هست یا نه .

حسن ذاکری

#6
نقل قول از: negin1990 در دسامبر 07, 2011, 12:03:48 قبل از ظهر
در فایل دوم تعریف شده است . این‌ها دو تعریف هستند جداگانه که اولی کار می‌کند و دومی نه .
توی اینجا به من این دو جواب رو دادن
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 صاحبنظر هستند و جزو توسعه دهندگان بسته.
لطفاً صفحه قوانین تالار را مطالعه فرمایید، بخصوص اگر اولین ارسال‌هایتان را انجام می‌دهید.
به سوالی که مطابق با قوانین پرسیده نشود، جوابی داده نخواهد شد.

در صورتی که به تازگی عضو تالار شده‌اید، در صفحه معرفی اعضای جدید برای شما ایجاد شده است.

negin1990

مشکل دقیقا اینجا پیدال میشه که وقتی من از پکیج زیپرشین استفاده می‌کنم و می‌خوام بیرون فلوچارت شکل بکشم با ارور مواجه می‌شم و الان هم دوباره همین ارور هست ! مشکل از کجاست که ای ارور رو می‌ده یعنی داخل فلوچارت میشه فارسی نوشت اما خارجش نه !

هادی صفی‌اقدم

نقل قول از: negin1990 در دسامبر 09, 2011, 01:20:24 بعد از ظهر
مشکل دقیقا اینجا پیدال میشه که وقتی من از پکیج زیپرشین استفاده می‌کنم و می‌خوام بیرون فلوچارت شکل بکشم با ارور مواجه می‌شم و الان هم دوباره همین ارور هست ! مشکل از کجاست که ای ارور رو می‌ده یعنی داخل فلوچارت میشه فارسی نوشت اما خارجش نه !
فایل نمونه حاوی مشکل!

negin1990

 . این ارور‌ها رو توی فایل‌هایی که من گذاشتم می‌ده اما تو فایل‌هایی که شما دوباره گذاشتین نمی‌ده . وقتی بررسیشون کردم دیدم تفاوت فایل‌های من با فایل‌های شما این هست که شما از
\begin{latin}
\end{latin}
استفاده کردید . این باعث چه تغییری میشه که تمام این ارور ها رو از بین می‌بره ؟‌
اروری که میگیرم این هست :
xdvipdfmx.exe has stopped working

هادی صفی‌اقدم

وقتی فایل‌های من خطا نمیده خب از همون‌ها استفاده کنید.