اولین بار است که به اینجا می‌آیید؟ راهنمای سایت را بخوانید!
Close Sidebar
وب‌سایت پرسش و پاسخ پارسی‌لاتک جایی برای پرسش و پاسخ درباره سیستم حروف‌چینی لاتک و بسته زی‌پرشین است. در اینجا می‌توانید سوال‌های خود را بپرسید و به سوال‌های دیگران پاسخ دهید.

محبوب‌ترین برچسب‌ها

رفع خطا جدول مراجع xepersian ریاضی‌نویسی شکل فونت فهرست مطالب شماره‌گذاری منابع bidi پانویس بیب‌تک tikz تک‌لایو parsilatex بیمر اسلاید زی‌پرشین پاورقی bibtex سربرگ نماد رسم شکل فرمول‌نویسی قالب ارجاع‌دهی biditexmaker هدر ویرایشگر beamer واژه‌نامه اندازه فونت texstudio عنوان فصل ماتریس اعمال نشدن تغییرات در پی‌دی‌اف رسم جدول bidipresentation شماره صفحه حاشیه رنگ عنوان شکل اسلاید فارسی محیط قضیه گراف مکان شکل tikzpicture حروف‌چینی کد شماره فصل enumerate tabriz_thesis نمایه align زیرنویس شکل کادر itemize فهرست اشکال الگوریتم listings عدم اجرا نیم‌فاصله متن لاتین و فارسی بسته فاصله بین خطوط قالب پایان‌نامه فرمول نصب تک‌لایو فارسی‌تک hyperref شماره فرمول glossaries کپشن نمودار خروجی لاتک حروف‌چینی چندستونی فونت فارسی و انگلیسی ماکرونویسی biditools شماره پاورقی پیوست‌ سوال امتحانی فاصله‌گذاری فرمول چندضابطه‌ای subfigure extrafootnotefeatures header texmaker pdf tex biditufte-book longtable تصویر شمارنده texlive2015 زیرنویس خطا رسم نمودار شماره‌گذاری صفحات پایان نامه دیاگرام فهرست جداول میک‌تک texlive2016 تنظیم جدول آکولاد kashida texworks caption اندیس lollipop iust-thesis multicol فصل‌نویسی شعر سوال چهارگزینه‌ای بولد تورفتگی اعداد فارسی فاصله عمودی xindy چپ‌چینی اوبونتو میکروسافت ورد قاب geometry texlive fancyhdr وسط‌چینی تک لایو 2015 عنوان بخش شماره گذاری به‌روزرسانی بسته aimc46 صفر توخالی فرمول طولانی بیرون‌زدگی xelatex کاما tcolorbox پوستر فاصله سطرها نوشتافت شکست خط tex-programming فونت اعداد pgfplots قرآن tabriz-thesis ایتالیک winedt جستجوی معکوس فلش جایابی تصویر قالب کتاب پاراگراف‌بندی بازیابی اطلاعات هایپرلینک فهرست نمادها شمارنده فصل font محیط ریاضی رسم کادر جداکننده جدول طولانی فهرست تصاویر شماره‌گذاری فرمول algorithm2e فونت بولد proof equation bidipoem eps جدول افقی عکس به‌روزرسانی پانویس چندستونی کمک مالی فاصله خطوط حروف‌چینی شعر زیرشکل minipage قلم پانویس پاراگرافی ltrfootnote پیوست computeautoilg متن فارسی و انگلیسی فرمول چندخطی neveshtuft غلط‌گیری املایی تک‌پارسی پیکان لاتکس tabular baselineskip شماره قسمت قسمت عنوان جدول
9 نفر آنلاین
0 عضو و 9 مهمان در سایت حاضرند
بازدید امروز: 8621
بازدید دیروز: 27333
بازدید کل: 25316108

نمودار متلب در لاتک

+1 رای
2,154 بازدید

فرض کنید برای مسئله‌ای مانند فروشنده دوره‌گرد، راه‌حلی در متلب نوشته‌ایم و مایلیم گراف خروجی را در سند خود داشته باشیم. چه راهکاری داریم؟
راه‌کار اولیه‌ای که به ذهن می‌رسد آن است که خروجی متلب را در قالب یک تصویر ذخیره و آنرا در داخل سند خود درج نمود. اما آیا راهکار بهتری نیست؟

سوال شده آبان 17, 1393 توسط محمود امین‌طوسی (3,818 امتیاز)
ویرایش شده آبان 17, 1393 توسط محمود امین‌طوسی
لطفاً سوال خود را در قسمت سوال و پاسخش را در قسمت پاسخ قرار دهید.
قصد داشتم همین کار را بکنم و اگر دقت فرمایید پاراگراف اول متن پرسش بود، ولی به دلیل اینکه در پاسخ باید فایل متلب هم ضمیمه می‌شد و در جواب دادن امکان پیوست فایل وجود ندارد، همه را یکجا نوشتم. به نظرتان در چنین مواردی چکار باید کرد؟
خوب محتویات فایل رو می‌تونید در محیط کد قرار بدهید. نمی‌تونید؟
چرا می‌شود ولی طولانی خواهد شد. حدود ۹۰ خط فایل لاتک است و حدود ۵۰ خط برنامه متلب.
نظرتان چیست که پاسخ را در بخش جواب بنویسم و در آنجا اشاره کنم که فایلها در بخش پرسش پیوست شده‌اند؟
یک راهکار مناسب خیلی ضروری است، اگر بتوانیم به تدریج برخی پرسش و پاسخهای مهم تالار را هم به اینجا منتقل کنیم، چنین وضعیتی را داریم. پرسشی مطرح می‌شود که پاسخش به همراه راه حل را داریم. البته گاهی پاسخ یک تکه کد کوتاه است که مطابق فرمایش شما می‌توان کد را در بخش پاسخ نگاشت اما گاهی نیاز به فایلهای اضافه‌ای هست که بهتر است پیوست شوند.
طولانی شدن کد فکر نمی‌کنم مشکلی داشته باشد. در کل فکر می‌کنم امکان پیوست کردن فایل به پاسخ هم لازم باشد ولی اینکه فایل پاسخ را در قسمت سوال گذاشت، کمی گیج‌کننده است.
در پاسخی که نوشتم کدها را هم قرار دادم. لطفا ملاحظه فرمایید و اگر به نظرتان مناسب است تا پرسش و پاسخها را ویرایش کنم. یک نکته جالب اینکه همه سطرهای کدهای طولانی نمایش داده نمی‌شوند بلکه ظاهرا یک کادر با حداکثر ارتفاع مشخص برای کد درنظر گرفته می‌شود.
بله، این بهتر است.
تغییراتی دادم ، البته فایلهای پیوست در پرسش را نگه داشتم. برای پرسشهای بعد می‌توان در اولین نظر ذیل پرسش یا در انتهای پرسش یادداشتی نوشت که فایلها مربوط به پاسخ هستند. به احتمال زیاد تا فردا فرصت مراجعه و بررسی نظرات را نخواهم داشت.
من هم با یکی بودن پرسش و پاسخ موافق نیستم.
در سایت tex.se در چنین موقعیت‌هایی، برای حل مشکل پیوست کردن فایل، به این صورت عمل می‌کنند:
------------------------------------
توضیحات لازم
tourGen.m:
کد داخل فایل tourGen.m
TSPPaper.tex:
کد داخل فایل TSPPaper.tex
------------------------------------
اون‌وقت خود کاربر می‌تونه کدها رو با اسم موردنظر توی کامپیوتر خودش ذخیره و اجرا کنه. اگر هم لازم بود، می‌تونیم یه توضیح بدیم که این کدها رو با اسم و پسوند گفته‌شده، توی کامپیوترتون ذخیره کنید.
سعی کردم مطابق پیشنهادات دوستان پرسش و پاسخ را اصلاح کنم.
لطفا در صورتی که نیاز به حفظ نظرات نیست آنها را پنهان فرمایید.
الان خیلی بهتر شد. ممنون. کمترین مزیت این روش اینه که حالا می‌تونید پاسخ خودتون رو به عنوان بهترین پاسخ انتخاب کنید. با این کار، این پرسش از فهرست پرسش‌های بدون پاسخ، خارج می‌شه.
در مورد پنهان کردن نظرات: اگر هم پنهان نکنیم، مهم نیست؛ چون اصولاً توی نظرات، نکات مهم بحث نمی‌شه که کاربر مجبور باشه همه رو بخونه. علاوه بر این، در صورت بالاتر رفتن تعداد نظرات زیر هر پرسش یا پاسخ از ۷ تا، به طور خودکار، نظرات جمع می‌شن و فقط سه تای آخر نمایش داده می‌شه و برای دیدن بقیه، کافیه روی «نمایش x نظر قبلی» کلیک کنید.

1 پاسخ

+5 رای
 
بهترین پاسخ

راهکار مناسب آن است که دستورات موردنیاز برای تولید گراف مربوطه در لاتک را تولید کنیم، این دستورات را داخل فایلی متنی قرار داده و سپس به صورت مناسب فراخوانی نماییم. با مطالعه کد متلب و لاتکی که در ادامه آمده است، چگونگی انجام کار را متوجه خواهید شد.
مزیت این روش آن است که:
۱- خروجی کیفیت بهتری دارد.
۲- با تغییر برنامه متلب،‌ خروجی به صورت خودکار در سند ما قرار می‌گیرد.

کدهای متلب و لاتک زیر نحوه‌ی کار را نشان می‌دهند:

کد متلب (tourGen.m):

 % Producing graphs and random tours for TSP problem and using them in XePersian
% Mahmood Amintoosi, HSU, 2014
%% Producing N points on a circle as graph vertices
% locations is the coordinates of these points
clear
N = 5;
locations = zeros(N,2);
r = 10;
for i = 1:N
    teta = 2*pi/N * (i-1);
    locations(i,1) = r*cos(teta);
    locations(i,2) = r*sin(teta);
end

%% Given the list of city locations, we can calculate the distance matrix for all the cities.
distances = zeros(N);
for count1=1:N,
    for count2=1:count1,
        x1 = locations(count1,1);
        y1 = locations(count1,2);
        x2 = locations(count2,1);
        y2 = locations(count2,2);
        distances(count1,count2)=round(sqrt((x1-x2)^2+(y1-y2)^2));
        distances(count2,count1)=distances(count1,count2);
    end;
end;

%% Tour Generation
% suppose that each random permutations of 1..N is a random tour
x = randperm(N);

% Show the result with MARLAB
figure(1); 
tour = x;
tour(end+1) = tour(1); % For displaying with plot
plot(locations(tour,1),locations(tour,2),'bo-');
title('A Random Tour'); drawnow
% Saving the result as a picture
print(gcf,'-dpng','tour.png')

% Saving The result as a txt file containing TikZ Commands
fid = fopen('tour.txt','w');
fprintf(fid,'\\def\\n{%d}',numel(x));
fprintf(fid,'\n\\def\\tour{{');
fprintf(fid,'%d,',x);
fprintf(fid,'%d}}',x(1));
fprintf(fid,'\n\\def\\distances{{');
for i=1:numel(x)-1
    fprintf(fid,'%d,',distances(x(i),x(i+1)));
end
fprintf(fid,'%d}}',distances(x(end),x(1)));
fclose(fid);

% Run xelatex on your paper
system('xelatex -interaction=batchmode TSPpaper');

سند لاتک (TSPPaper.tex):

% !TEX TS-program = XeLaTeX 
% TSP Tour with MATLAB and TikZ
% Author : M.Amintoosi

% نکات:
% ۱- دقت داشته باشید که در اجرای این سند خطا خواهید گرفت، مگر اینکه حداقل یک بار برنامه tourGen.m را در متلب اجرا کرده باشید.
% ۲- برای تولید شماره‌ی ارجاعات به شکلها حداقل دو بار باید این سند پردازش شود.

\documentclass{article}
\usepackage{tikz}
\usepackage{tkz-graph}
\usepackage[margin=20mm]{geometry}
\usepackage{subcaption}
\usepackage{xepersian}
\begin{document}

\title{نمودار متلب در لاتک}
\author{محمود امین‌طوسی}
\maketitle
\begin{abstract}
در این نوشتار قدرت لاتک،‌ در ترکیب با نرم‌افزاری مانند 
\lr{MATLAB}
را ملاحظه می‌فرمایید.
\end{abstract}

\section{مقدمه}
فرض کنید برای مسئله‌ای مانند فروشنده دوره‌گرد، راه‌حلی در متلب نوشته‌اید و مایلید گراف خروجی را در سند خود ( مثلا یک مقاله) داشته باشید. چه راهکاری دارید؟
راه‌کار اولیه‌ای که به ذهن می‌رسد آن است که خروجی متلب را در قالب یک تصویر ذخیره نمایید و آنرا در داخل سند خود درج نمایید. 
این کار به راحتی توسط دستور 
\lr{print}
در متلب قابل انجام است. در فایل 
\lr{tourGen.m}
یک گراف با پنج رأس تولید  شده،‌ یک تور تصادفی آن رسم و خروجی در فایل
\lr{tour.png}
ذخیره شده است. برای نمایش آن در این سند کافیست از محیط 
\lr{figure}
استفاده کنیم. شکل 
\ref{fig:TSP:MATLAB}
خروجی را نشان می‌دهد.

اما یک راهکار بهتر آن است که دستورات موردنیاز برای تولید گراف مربوطه در لاتک را تولید کنیم، این دستورات را داخل فایلی متنی قرار داده و سپس به صورت مناسب فراخوانی نماییم.
با مطالعه برنامه متلب و سورس این سند متوجه روش خواهید شد. 
شکل 
\ref{fig:TSP:tikz}
خروجی حاصل از این شیوه را نشان می‌دهد.

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

می‌توانید تعداد رئوس گراف را در برنامه عوض کنید و برنامه را اجرا کنید،‌ مقاله خود را با تصاویر جدید خواهید داشت.

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

\begin{figure}[h]
\centering
\begin{subfigure}[b]{0.5\textwidth}
    \centering
    \includegraphics[width=0.95\textwidth]{tour.png}
    \caption{خروجی ذخیره شده متلب}
    \label{fig:TSP:MATLAB}
\end{subfigure}%
\hfill 
\begin{subfigure}[b]{0.5\textwidth}
    \centering
    \begin{tikzpicture}

        \input{tour.txt}

        \def \radius {3cm}
        \def \margin {8} % margin in angles, depends on the radius

        \foreach \s in {1,...,\n}
        {
            \node[draw, circle] (\s) at ({360/\n * (\s - 1)}:\radius) {$\s$};
        }

        \foreach \i in {1,...,\n}
        {
            \pgfmathtruncatemacro{\s}{\tour[\i-1]}
            \pgfmathtruncatemacro{\t}{\tour[\i]}
            \pgfmathtruncatemacro{\len}{\distances[\i-1]}
            \Edge[label=\len](\s)(\t)
        }
    \end{tikzpicture}
    \caption{خروجی با دستورات \lr{TikZ}}
    \label{fig:TSP:tikz}
\end{subfigure}
\caption{یک تور تصادفی مسئله فروشنده‌ی دوره‌گرد}
\label{fig:TSP}
\end{figure}

\end{document}

اگر مطابق این کدها،‌ پردازش لازم صورت گیرد خروجی به صورت مناسب تولید خواهد شد. بخشی از یک نمونه خروجی در ادامه آمده است، کیفیت بسیار بهتر تصویر گراف سمت چپ - که حاصل دستورات TikZ بوده است - نسبت به تصویر سمت راست - که عکس خروجی متلب است - کاملا مشهود است.
enter image description here

پاسخ داده شده آبان 17, 1393 توسط محمود امین‌طوسی (3,818 امتیاز)
انتخاب شده آبان 10, 1395 توسط محمود امین‌طوسی
...